@sachin9822/reports-lib 0.0.138 → 0.0.140

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.
@@ -1 +1 @@
1
- {"version":3,"file":"sachin9822-reports-lib.mjs","sources":["../../../projects/reports-lib/src/lib/reports-lib.service.ts","../../../projects/reports-lib/src/lib/services/config.service.ts","../../../projects/reports-lib/src/lib/services/report.service.ts","../../../projects/reports-lib/src/lib/shared/export.service.ts","../../../projects/reports-lib/src/lib/shared/loader/loader.component.ts","../../../projects/reports-lib/src/lib/shared/loader/loader.component.html","../../../projects/reports-lib/src/lib/reports-lib.component.ts","../../../projects/reports-lib/src/lib/shared/page-size-selector/page-size-selector.component.ts","../../../projects/reports-lib/src/lib/shared/page-size-selector/page-size-selector.component.html","../../../projects/reports-lib/src/lib/models/transaction-enquiry-report/transaction-enquiry.model.ts","../../../projects/reports-lib/src/lib/shared/search-filter/search-filter.component.ts","../../../projects/reports-lib/src/lib/shared/search-filter/search-filter.component.html","../../../projects/reports-lib/src/lib/components/acc-gl-details-enquiry-report/acc-gl-details-enquiry-report.component.ts","../../../projects/reports-lib/src/lib/components/acc-gl-details-enquiry-report/acc-gl-details-enquiry-report.component.html","../../../projects/reports-lib/src/lib/components/transaction-enquiry-report/transaction-enquiry-report.component.ts","../../../projects/reports-lib/src/lib/components/transaction-enquiry-report/transaction-enquiry-report.component.html","../../../projects/reports-lib/src/lib/reports-lib-routing.module.ts","../../../projects/reports-lib/src/lib/models/branch-activity-report/branch-activity-send-report-request-domain-model.ts","../../../projects/reports-lib/src/lib/models/component-loading-states.ts","../../../projects/reports-lib/src/lib/components/branch-activity-send-report/branch-activity-send-report.component.ts","../../../projects/reports-lib/src/lib/components/branch-activity-send-report/branch-activity-send-report.component.html","../../../projects/reports-lib/src/lib/shared/shared.module.ts","../../../projects/reports-lib/src/lib/reports-lib.module.ts","../../../projects/reports-lib/src/lib/models/branch-activity-report/branch-activity-send-report.ts","../../../projects/reports-lib/src/public-api.ts","../../../projects/reports-lib/src/sachin9822-reports-lib.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ReportsLibService {\r\n\r\n constructor() { }\r\n}\r\n","\r\nimport {tap} from 'rxjs/operators';\r\nimport { IAppConfig } from '../models/app-config.model';\r\nimport { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';\r\nimport { Observable , BehaviorSubject } from 'rxjs';\r\nimport * as _ from 'lodash';\r\n\r\n@Injectable()\r\nexport class ConfigService {\r\n private config: IAppConfig;\r\n\r\n onConfigChanged: BehaviorSubject<any>;\r\n\r\n constructor(private http: HttpClient) {}\r\n\r\n load(url: string): Observable<any> {\r\n return this.http.get(url).pipe(tap((json: any) => {\r\n // Set the config\r\n this.config = json;\r\n\r\n // Create the behavior subject\r\n this.onConfigChanged = new BehaviorSubject(this.config);\r\n }));\r\n }\r\n\r\n get get(): IAppConfig {\r\n return this.config;\r\n }\r\n\r\n /**\r\n * Set the new config from given object\r\n *\r\n * @param config\r\n */\r\n setConfig(config: IAppConfig): void {\r\n // Merge the config\r\n this.config = _.merge({}, this.config, config);\r\n\r\n // Trigger the event\r\n this.onConfigChanged.next(this.config);\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { AccGlDetailsEnquiryReportModel } from '../models/acc-gl-details-enquiry-report/accgl-details-enquiry-reportmodel';\r\nimport { Observable } from 'rxjs';\r\nimport { map, retry } from 'rxjs/operators';\r\nimport { BranchActivitySendReportRequestDomainModel } from '../models/branch-activity-report/branch-activity-send-report-request-domain-model';\r\nimport { BranchActivityReport } from '../models/branch-activity-report/branch-activity-send-report';\r\nimport { Product, User, Branch, TransactionData, PageLoadDataResponse, SearchCriteria } from '../models/transaction-enquiry-report/transaction-enquiry.model';\r\nimport { ConfigService } from './config.service';\r\n\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ReportService {\r\n\r\n private reportServiceUrl: string;\r\n // private reportUrl = '/api/v1/Report';\r\n // private systemReportUrl = '/api/v1/CompanyConfiguration/SystemReports';\r\n\r\n constructor(private http: HttpClient, private config: ConfigService) {\r\n if (!this.config.get) {\r\n throw new Error('ConfigService is not initialized. Ensure APP_INITIALIZER ran before using ReportService.');\r\n }\r\n this.reportServiceUrl = this.config.get.reportServiceUrl;\r\n }\r\n\r\n public getAccGLDetailsReport(formattedDate: string | undefined, dateType: string): Observable<AccGlDetailsEnquiryReportModel> {\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/AccGlDetailsEnquiryReport/GetAccGLDetailsEnquiryReport/${formattedDate}/${dateType}`;\r\n return this.http.get<AccGlDetailsEnquiryReportModel>(apiPath);\r\n }\r\n\r\n getCompanyConfig(): Observable<any[]> {\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/GetCompanyReportConfiguration`;\r\n return this.http.get(apiPath).pipe(map(response => {\r\n return <any[]>response;\r\n }));\r\n }\r\n\r\n getPayInAgents(sysUserId: string): Observable<any[]> {\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/GetAllPayInAgents/${sysUserId}`;\r\n return this.http.get(apiPath).pipe(map(response => {\r\n return <any[]>response;\r\n }));\r\n }\r\n\r\n getBranchByAgent(sysUserId: string, code: string): Observable<any[]> {\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/GetBranchByAgent/${code}/${sysUserId}/BH`;\r\n return this.http.get(apiPath).pipe(map(response => {\r\n retry(2),\r\n map(response => response)\r\n return <any[]>response;\r\n }));\r\n }\r\n\r\n getParams(): Observable<any[]> {\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/GetBranchActivitySendReportParams`;\r\n return this.http.get(apiPath).pipe(map(response => {\r\n retry(2),\r\n map(response => response)\r\n return <any[]>response;\r\n }));\r\n }\r\n\r\n getBranchActivityReport(data: BranchActivitySendReportRequestDomainModel | any): Observable<Record<string, BranchActivityReport[]>> {\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/GetBranchActivitySendReport`;\r\n return this.http.post(apiPath, data).pipe(map(response => {\r\n return <Record<string, BranchActivityReport[]>>response;\r\n }));\r\n }\r\n\r\n public getUserNameFromSessionStorage(): string {\r\n let fossilUserName = sessionStorage.getItem('fossilusername');\r\n let ezremitusername = sessionStorage.getItem('ezremitusername');\r\n if (fossilUserName) {\r\n return fossilUserName.replace(/^\"(.*)\"$/, '$1');\r\n } else {\r\n return ezremitusername.replace(/^\"(.*)\"$/, '$1');\r\n }\r\n }\r\n\r\n //Trasaction Enquiry Report Apis\r\n // API 1: Get initial page load data\r\n getPageLoadData(sysUserID: string): Observable<PageLoadDataResponse> {\r\n const url = `${this.reportServiceUrl}/api/v1/Report/TransactionEnquiry/pageLoadData/${sysUserID}`;\r\n return this.http.get(url).pipe(\r\n map(response => <PageLoadDataResponse>response)\r\n );\r\n }\r\n\r\n // API 2: Get branches by agent\r\n getBranchesByAgent(agentCode: string, sysUserID: string): Observable<Branch[]> {\r\n const url = `${this.reportServiceUrl}/api/v1/Report/TransactionEnquiry/branches/${agentCode}/${sysUserID}`;\r\n return this.http.get(url).pipe(\r\n map(response => <Branch[]>response)\r\n );\r\n }\r\n\r\n // API 3: Get products by agent\r\n getProductsByAgent(agentCode: string): Observable<Product[]> {\r\n const url = `${this.reportServiceUrl}/api/v1/Report/TransactionEnquiry/products/${agentCode}`;\r\n return this.http.get(url).pipe(\r\n map(response => <Product[]>response)\r\n );\r\n }\r\n\r\n // API 4: Get users by branch\r\n getUsersByBranch(businessPartnerCode: string, branchCode: string): Observable<User[]> {\r\n const url = `${this.reportServiceUrl}/api/v1/Report/TransactionEnquiry/users/${businessPartnerCode}/${branchCode}`;\r\n return this.http.get(url).pipe(\r\n map(response => <User[]>response)\r\n );\r\n }\r\n\r\n // API 5: Search transactions\r\n searchTransactions(request: SearchCriteria): Observable<TransactionData[]> {\r\n const url = `${this.reportServiceUrl}/api/v1/Report/TransactionEnquiry/search-transactions`;\r\n return this.http.post(url, request).pipe(\r\n map(response => <TransactionData[]>response)\r\n );\r\n }\r\n\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport jsPDF from 'jspdf';\r\nimport 'jspdf-autotable';\r\nimport * as ExcelJS from 'exceljs';\r\nimport * as FileSaver from 'file-saver';\r\n\r\ndeclare module 'jspdf' {\r\n interface jsPDF {\r\n autoTable: (options: any) => jsPDF;\r\n }\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ExportService {\r\n\r\n private readonly pdfFontSize = 10;\r\n private readonly pdfLineHeight = 7;\r\n private readonly pdfLeftMargin = 15;\r\n private logoBase64: string | undefined;\r\n \r\n constructor() {\r\n this.loadImageAsBase64('assets/reports-lib/assets/images/XMLogo.png').then(base64 => {\r\n this.logoBase64 = base64;\r\n });\r\n }\r\n \r\n // ------------------------ Utility ------------------------\r\n private loadImageAsBase64(imagePath: string): Promise<string> {\r\n return new Promise((resolve, reject) => {\r\n const img = new Image();\r\n img.crossOrigin = 'anonymous';\r\n img.src = imagePath;\r\n \r\n img.onload = () => {\r\n const scale = 6;\r\n const canvas = document.createElement('canvas');\r\n canvas.width = img.width * scale;\r\n canvas.height = img.height * scale;\r\n \r\n const ctx = canvas.getContext('2d');\r\n if (ctx) {\r\n ctx.scale(scale, scale);\r\n ctx.drawImage(img, 0, 0);\r\n const base64 = canvas.toDataURL('image/png', 1.0); // 1.0 = highest quality\r\n resolve(base64);\r\n } else {\r\n reject('Failed to get canvas context.');\r\n }\r\n };\r\n \r\n img.onerror = () => reject('Failed to load image: ' + imagePath);\r\n });\r\n}\r\n \r\n formatDate(value: any): string {\r\n const date = new Date(value);\r\n return isNaN(date.getTime()) ? '' :\r\n `${date.getDate().toString().padStart(2, '0')}/${(date.getMonth() + 1).toString().padStart(2, '0')}/${date.getFullYear()}`;\r\n }\r\n \r\n formatDateTime(date: Date): string {\r\n const day = date.getDate().toString().padStart(2, '0');\r\n const month = (date.getMonth() + 1).toString().padStart(2, '0');\r\n const year = date.getFullYear();\r\n\r\n // 12-hour format\r\n let hours = date.getHours();\r\n const minutes = date.getMinutes().toString().padStart(2, '0');\r\n const ampm = hours >= 12 ? 'PM' : 'AM';\r\n hours = hours % 12;\r\n hours = hours ? hours : 12; // the hour '0' should be '12'\r\n const hoursStr = hours.toString().padStart(2, '0');\r\n\r\n return `${day}/${month}/${year} ${hoursStr}:${minutes} ${ampm}`;\r\n}\r\n \r\n generateReportMetadata(metadata: [string, string][]): [string, string][] {\r\n return metadata.filter(([_, value]) => value !== undefined && value !== null);\r\n }\r\n \r\n prepareExportTable(data: any[], columnDefs: any[], options: {\r\n excludeFields?: string[],\r\n currencyFields?: string[]\r\n } = {}): { headers: string[], rows: any[][] } {\r\n const { excludeFields = ['srno', 'serial', 'action'], currencyFields = [] } = options;\r\n \r\n const filteredColumns = columnDefs.filter(col =>\r\n col.field &&\r\n !excludeFields.some(ex => col.field.toLowerCase().includes(ex)) &&\r\n !excludeFields.some(ex => col.headerName?.toLowerCase().includes(ex))\r\n );\r\n \r\n const headers = ['Sr No', ...filteredColumns.map(col => col.headerName || col.field)];\r\n \r\n const rows = data.map((row, index) => {\r\n const rowData = filteredColumns.map(col => {\r\n let value = row[col.field];\r\n const fieldName = col.field?.toLowerCase() || '';\r\n \r\n // Handle various date field names\r\n if (\r\n (fieldName.includes('date') ||\r\n fieldName.includes('businessdate')) &&\r\n value\r\n ) {\r\n value = this.formatDate(value);\r\n }\r\n \r\n // Format currency fields\r\n if (currencyFields.includes(col.field) && value != null) {\r\n value = parseFloat(value).toFixed(3);\r\n }\r\n return value ?? '';\r\n });\r\n return [index + 1, ...rowData];\r\n });\r\n return { headers, rows };\r\n }\r\n \r\n // ------------------------ PDF Universal ------------------------\r\n async exportToPdfUniversal(title: string, metadata: [string, string][], headers: string[], rows: any[][], fileName: string): Promise<void> {\r\n const doc = new jsPDF({ orientation: 'landscape', unit: 'mm', format: [400, 210] });\r\n \r\n const logoWidth = 38.4, logoHeight = 17.5, logoX = 15, logoY = 10;\r\n const pageWidth = doc.internal.pageSize.width;\r\n const titleY = 18;\r\n \r\n if (this.logoBase64) {\r\n doc.addImage(this.logoBase64, 'PNG', logoX, logoY, logoWidth, logoHeight);\r\n }\r\n \r\n doc.setFontSize(15);\r\n doc.setFont('helvetica', 'bold');\r\n doc.text(title, pageWidth / 2, titleY, { align: 'center' });\r\n \r\n let currentY = titleY + 14;\r\n doc.setFontSize(this.pdfFontSize);\r\n metadata.forEach(([label, value], i) => {\r\n const y = currentY + i * this.pdfLineHeight;\r\n doc.setFont('helvetica', 'bold');\r\n doc.text(label, this.pdfLeftMargin, y);\r\n const labelWidth = doc.getTextWidth(label + ' ');\r\n doc.setFont('helvetica', 'normal');\r\n doc.text(value, this.pdfLeftMargin + labelWidth, y);\r\n });\r\n currentY += metadata.length * this.pdfLineHeight + 5;\r\n \r\n const columnStyles: { [key: number]: any } = {};\r\n headers.forEach((_, i) => columnStyles[i] = { cellWidth: 'auto' });\r\n \r\n doc.autoTable({\r\n head: [headers],\r\n body: rows,\r\n startY: currentY,\r\n theme: 'grid',\r\n headStyles: {\r\n fillColor: [220, 220, 220], textColor: 0,\r\n fontStyle: 'bold', fontSize: 9, halign: 'center',\r\n },\r\n bodyStyles: { fontSize: 8, fillColor: [255, 255, 255], textColor: [0, 0, 0] },\r\n styles: { cellPadding: 2, overflow: 'linebreak', minCellHeight: 6 },\r\n columnStyles\r\n });\r\n \r\n doc.save(fileName);\r\n }\r\n \r\n // ------------------------ Excel Universal ------------------------\r\n exportToExcelUniversal(title: string, metadata: [string, string][], headers: string[], rows: any[][], fileName: string): void {\r\n const workbook = new ExcelJS.Workbook();\r\n const worksheet = workbook.addWorksheet(title);\r\n \r\n let currentRow = 1;\r\n \r\n // Add image if available\r\n if (this.logoBase64) {\r\n const base64Data = this.logoBase64.replace(/^data:image\\/\\w+;base64,/, '');\r\n const imageId = workbook.addImage({\r\n base64: base64Data,\r\n extension: 'png',\r\n });\r\n \r\n // Place image at top-left (e.g., A1:C4)\r\n worksheet.addImage(imageId, {\r\n tl: { col: 0, row: 0 },\r\n ext: { width: 145, height: 66 },\r\n editAs: 'oneCell'\r\n });\r\n }\r\n \r\n // Add title aligned in middle horizontally (merged across all columns)\r\n const titleRow = worksheet.getRow(currentRow);\r\n titleRow.getCell(4).value = title;\r\n titleRow.getCell(4).font = { bold: true, size: 16 };\r\n titleRow.getCell(4).alignment = { vertical: 'middle', horizontal: 'left' };\r\n \r\n const titleMergeEnd = String.fromCharCode(64 + headers.length);\r\n worksheet.mergeCells(`D${currentRow}:${titleMergeEnd}${currentRow}`);\r\n currentRow += 3; // Move past image space\r\n \r\n // Add metadata\r\n metadata.forEach(([label, value]) => {\r\n const row = worksheet.getRow(currentRow++);\r\n const cell = row.getCell(1);\r\n cell.value = {\r\n richText: [\r\n { text: `${label}: `, font: { bold: true } },\r\n { text: value ?? '', font: { bold: false } }\r\n ]\r\n };\r\n worksheet.mergeCells(`A${row.number}:${String.fromCharCode(64 + headers.length)}${row.number}`);\r\n });\r\n \r\n worksheet.addRow([]);\r\n currentRow++;\r\n \r\n // Add table header row\r\n const headerRow = worksheet.getRow(currentRow++);\r\n headers.forEach((header, i) => {\r\n const cell = headerRow.getCell(i + 1);\r\n cell.value = header;\r\n cell.font = { bold: true };\r\n cell.fill = { type: 'pattern', pattern: 'solid', fgColor: { argb: 'D9D9D9' } };\r\n cell.alignment = { vertical: 'middle', horizontal: 'center' };\r\n cell.border = {\r\n top: { style: 'thin' },\r\n bottom: { style: 'thin' },\r\n left: { style: 'thin' },\r\n right: { style: 'thin' }\r\n };\r\n });\r\n \r\n const dataStartRow = currentRow;\r\n rows.forEach(rowData => {\r\n const row = worksheet.getRow(currentRow++);\r\n rowData.forEach((value, i) => {\r\n const cell = row.getCell(i + 1);\r\n cell.value = value;\r\n cell.border = {\r\n top: { style: 'thin' },\r\n bottom: { style: 'thin' },\r\n left: { style: 'thin' },\r\n right: { style: 'thin' }\r\n };\r\n });\r\n });\r\n \r\n // Auto column widths\r\n for (let i = 1; i <= headers.length; i++) {\r\n let maxLength = headers[i - 1].length;\r\n for (let rowNum = dataStartRow; rowNum <= worksheet.lastRow!.number; rowNum++) {\r\n const val = worksheet.getRow(rowNum).getCell(i).value?.toString() || '';\r\n maxLength = Math.max(maxLength, val.length);\r\n }\r\n worksheet.getColumn(i).width = maxLength + 2;\r\n }\r\n \r\n workbook.xlsx.writeBuffer().then(buffer => {\r\n const blob = new Blob([buffer], {\r\n type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'\r\n });\r\n FileSaver.saveAs(blob, fileName);\r\n });\r\n}\r\n \r\n \r\n // ------------------------ CSV Universal ------------------------\r\n exportToCsvUniversal(title: string, metadata: [string, string][], headers: string[], rows: any[][], fileName: string): void {\r\n const metaRows = metadata.map(([k, v]) => [`${k}: ${v}`]);\r\n const csvContent = [\r\n [title],\r\n ...metaRows,\r\n [],\r\n headers,\r\n ...rows.map(row => row.map(value => `\"${value}\"`))\r\n ].map(e => e.join(',')).join('\\n');\r\n \r\n this.downloadFile(csvContent, fileName, 'text/csv');\r\n }\r\n \r\n private downloadFile(data: string, filename: string, type: string): void {\r\n const blob = new Blob([data], { type });\r\n const link = document.createElement('a');\r\n link.href = URL.createObjectURL(blob);\r\n link.setAttribute('download', filename);\r\n document.body.appendChild(link);\r\n link.click();\r\n document.body.removeChild(link);\r\n }\r\n\r\n}\r\n\r\n","import { Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-loader',\r\n templateUrl: './loader.component.html',\r\n styleUrls: ['./loader.component.scss']\r\n})\r\n\r\nexport class LoaderComponent {\r\n}\r\n","<div class=\"loaderContainer\">\r\n <div class=\"loading\">\r\n <div class=\"loading-bar\"></div>\r\n <div class=\"loading-bar\"></div>\r\n <div class=\"loading-bar\"></div>\r\n <div class=\"loading-bar\"></div>\r\n </div>\r\n</div>","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'lib-reports-lib',\r\n template: `\r\n <p>\r\n reports-lib works!\r\n </p>\r\n `,\r\n styles: [\r\n ]\r\n})\r\nexport class ReportsLibComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n}\r\n","import { Component, Input, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'lib-page-size-selector',\r\n templateUrl: './page-size-selector.component.html',\r\n styleUrls: ['./page-size-selector.component.scss']\r\n})\r\nexport class PageSizeSelectorComponent implements OnInit {\r\n\r\n @Input() pageSizeArray: (number | string)[] = [10, 15, 20, 30, 50, 100, 200, 'All'];\r\n @Input() defaultSize: string = '15';\r\n @Input() totalEntries: number = 0;\r\n @Input() gridApi: any;\r\n\r\n selectedPageSizeOption: string = '15';\r\n\r\n ngOnInit(): void {\r\n this.selectedPageSizeOption = this.defaultSize;\r\n this.applyPageSize(this.defaultSize);\r\n }\r\n\r\n onPageSizeChanged(value: string) {\r\n this.selectedPageSizeOption = value;\r\n this.applyPageSize(value);\r\n }\r\n\r\n private applyPageSize(value: string) {\r\n const size = value === 'All' ? this.totalEntries : Number(value);\r\n if (this.gridApi) {\r\n this.gridApi.paginationSetPageSize(size);\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.gridApi = undefined;\r\n }\r\n\r\n}\r\n","<div class=\"d-flex align-items-center gap-2 entries-selecter-div\">\r\n <select class=\"form-select custom-height w-auto\" id=\"pageSize\" [(ngModel)]=\"selectedPageSizeOption\"\r\n (ngModelChange)=\"onPageSizeChanged($event)\">\r\n <option *ngFor=\"let size of pageSizeArray\" [value]=\"size\">{{ size }}</option>\r\n </select>\r\n <label class=\"entry-label\" for=\"pageSize\">Entries Per Page</label>\r\n</div>","// transaction-enquiry.model.ts\r\n\r\nexport interface Client {\r\n businessPartnerCode: string;\r\n businessPartnerName: string;\r\n displayOrder: number;\r\n}\r\n\r\nexport interface Branch {\r\n businessPartnerBranch: string;\r\n businessPartnerBranch_CorrelationId: string;\r\n branchCode: string;\r\n bank: string;\r\n number: number;\r\n}\r\n\r\nexport interface User {\r\n userName: string;\r\n userId: number;\r\n number: number;\r\n}\r\n\r\nexport interface Currency {\r\n currencyCode: string;\r\n currency: string;\r\n number: string;\r\n od: number;\r\n}\r\n\r\nexport interface Product {\r\n productCode: string;\r\n productName: string;\r\n number: number;\r\n serviceTypeCode: string;\r\n}\r\n\r\nexport interface TransactionStatus {\r\n transactionStatus: string;\r\n number: number;\r\n}\r\n\r\nexport interface IdentityType {\r\n identityType: string;\r\n identityDescription: string;\r\n number: number;\r\n}\r\n\r\nexport interface UserReportDefaults {\r\n PrincipleUserName: string;\r\n ADPrincipleUserName: string;\r\n UserName: string;\r\n UserId: number;\r\n BranchCode: string;\r\n BranchName: string;\r\n BusinessDate: string;\r\n TillCode: string;\r\n LocalCurrency: string;\r\n TimeZone: string;\r\n ExecutionTime: string;\r\n StockEnquiryAll: number;\r\n StockEnquiryBranch: number;\r\n StockEnquiryExceptOwn: number;\r\n StockEnquiryExcludeLocalAmount: number;\r\n}\r\n\r\nexport interface CompanyReportConfig {\r\n Company: string;\r\n CompanyName: string;\r\n ReportLanguage: string;\r\n}\r\n\r\nexport interface TransactionData {\r\n product: string;\r\n id: string;\r\n transactionNumber: string;\r\n transactionReferenceNumber: string;\r\n businessDate: string;\r\n sendAgent: string;\r\n sendAgtBranch: string;\r\n recvAgent: string;\r\n rcvAgtBranch: string;\r\n sendName: string;\r\n sendIdType: string;\r\n sendIdNumber: string;\r\n benName: string;\r\n payOutCurrency: string;\r\n payOutAmount: number;\r\n commission: number;\r\n payInCurrency: string;\r\n payInAmount: number;\r\n transactionStatus: string;\r\n transactionUserId: number;\r\n payoutUserId: number;\r\n receiveAgentId: number;\r\n receiveBranchBusinessPartnerId: number;\r\n sendAgentCode: string;\r\n receiveAgentCode: string;\r\n sendBranchCode: string;\r\n receiveBranchCode: string;\r\n username: string;\r\n firstNames: string;\r\n amlStatus: string;\r\n transactionNote: string;\r\n cancellationBusinessDate: string;\r\n receiveAgentCountry: string;\r\n loyaltyCardNumber: string;\r\n personContacts: string;\r\n organizationContacts: string;\r\n sendAgentCountry: string;\r\n sendAgentId: number;\r\n chequeNumber: string;\r\n paidDate: string;\r\n forexAmount: number;\r\n payoutAgentName: string;\r\n authoriseDate: string;\r\n rejectedDate: string;\r\n note: string;\r\n stopPaymentDate: string;\r\n rejectedUser: string;\r\n}\r\n\r\nexport interface SearchCriteria {\r\n fromDate: string;\r\n toDate: string;\r\n client: string;\r\n branch: string;\r\n user: string;\r\n currency: string;\r\n product: string;\r\n transactionStatus: string;\r\n transactionNo: string;\r\n cardNo: string;\r\n idType: string;\r\n idNo: string;\r\n senderName: string;\r\n beneficiaryName: string;\r\n telNo: string;\r\n receiveAmount: number;\r\n branchName: string;\r\n country: string;\r\n}\r\n\r\nexport interface PageLoadDataResponse {\r\n clients: Client[];\r\n currencies: Currency[];\r\n transactionStatuses: TransactionStatus[];\r\n}\r\n\r\nexport enum ComponentLoadingState {\r\n Error = -1,\r\n Loading = 0,\r\n Complete = 1,\r\n}","import { Component, EventEmitter, HostListener, Input, OnInit, OnDestroy, Output } from '@angular/core';\r\nimport { AbstractControl, FormArray, FormBuilder, FormGroup, ValidatorFn, Validators } from '@angular/forms';\r\nimport { UserReportDefaults, CompanyReportConfig, ComponentLoadingState, Client, Branch, Currency, Product, TransactionStatus, User } from '../../models/transaction-enquiry-report/transaction-enquiry.model';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { ReportService } from '../../services/report.service';\r\nimport { ConfigService } from '../../services/config.service';\r\n\r\n\r\n@Component({\r\n selector: 'lib-search-filter',\r\n templateUrl: './search-filter.component.html',\r\n styleUrls: ['./search-filter.component.scss']\r\n})\r\n\r\nexport class SearchFilterComponent implements OnInit, OnDestroy {\r\n @Input() ReportName!: string;\r\n @Output() searchClicked = new EventEmitter<any>();\r\n\r\n searchForm!: FormGroup;\r\n formValidationError: boolean = false;\r\n private destroy$ = new Subject<void>();\r\n\r\n loadingState: ComponentLoadingState = ComponentLoadingState.Complete;\r\n ComponentLoadingState = ComponentLoadingState;\r\n hasSearched: boolean = false;\r\n private _errorMessage: string = '';\r\n\r\n currentUser: string = '';\r\n usernameMissing: boolean = false;\r\n token = sessionStorage.getItem('access_token');\r\n applicationType = 'ezremit';\r\n companyCode = 'BH';\r\n serviceUrl: string;\r\n userReportDefaults: UserReportDefaults | null = null;\r\n companyReportConfig: CompanyReportConfig | null = null;\r\n\r\n clients1: Client[] = [];\r\n branches: Branch[] = [];\r\n users: User[] = [];\r\n currencies: Currency[] = [];\r\n products: Product[] = [];\r\n transactionStatuses: TransactionStatus[] = [];\r\n selectedStatuses: string[] = [];\r\n showStatusDropdown: boolean = false;\r\n visibleFieldKeys: string[] = [];\r\n dateType: any = 1;\r\n date: any;\r\n\r\n // Field visibility map, 'fromDate', 'toDate','product','userId','currency','transactionStatus','transactionNo'\r\n visibleFieldsMap: { [report: string]: string[] } = {\r\n 'Transaction Enquiry': ['client', 'fromDate', 'toDate', 'branch', 'product', 'currency', 'userId', 'transactionStatus', 'transactionNo'],\r\n 'FC Ledger': ['client', 'fromDate', 'toDate', 'currency', 'product'],\r\n 'Branch Activity': ['branch', 'userId', 'fromDate', 'toDate'],\r\n 'ACC GL Details Enquiry': ['dateType', 'date'],\r\n // Add more report types here\r\n };\r\n\r\n get visibleFields(): string[] {\r\n return this.visibleFieldsMap[this.ReportName] || [];\r\n }\r\n\r\n isFieldVisible(field: string): boolean {\r\n return this.visibleFields.includes(field);\r\n }\r\n\r\n constructor(\r\n private reportService: ReportService,\r\n private fb: FormBuilder,\r\n private config: ConfigService\r\n ) {\r\n this.serviceUrl = this.config.get.serviceUrl;\r\n let fossilUser = sessionStorage.getItem('fossilusername');\r\n let ezremitUser = sessionStorage.getItem('ezremitusername');\r\n\r\n if (fossilUser) this.currentUser = fossilUser;\r\n else if (ezremitUser) this.currentUser = ezremitUser;\r\n else {\r\n this.currentUser = 'vipul.katale@xpressmoney.tech';\r\n this.usernameMissing = true;\r\n }\r\n }\r\n\r\n ngOnInit(): void {\r\n this.checkReport();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n\r\n private checkReport() {\r\n if (this.ReportName == \"Transaction Enquiry\") {\r\n this.currentUser = this.currentUser.replace(/\"/g, '');\r\n\r\n this.initializeForm();\r\n this.subscribeToDateChanges();\r\n this.loadInitialData();\r\n }\r\n\r\n if (this.ReportName == \"ACC GL Details Enquiry\") {\r\n this.initializeForm();\r\n }\r\n }\r\n\r\n loadInitialData() {\r\n if (this.ReportName == 'Transaction Enquiry') {\r\n this.loadInitialDatafortxnEnquiry();\r\n }\r\n\r\n\r\n }\r\n\r\n private initializeForm(): void {\r\n if (this.ReportName == \"Transaction Enquiry\") {\r\n\r\n this.searchForm = this.fb.group(\r\n {\r\n client: ['', Validators.required],\r\n fromDate: [new Date().toISOString().split(\"T\")[0], Validators.required],\r\n toDate: [new Date().toISOString().split(\"T\")[0], Validators.required],\r\n branch: ['', Validators.required],\r\n userId: ['-1'],\r\n currency: ['All'],\r\n product: ['All', Validators.required],\r\n transactionStatus: [['All'], Validators.required],\r\n transactionNo: [''],\r\n cardNo: [''],\r\n idType: [''],\r\n idNo: [''],\r\n senderName: [''],\r\n beneficiaryName: [''],\r\n telNo: [''],\r\n receiveAmount: [''],\r\n branchName: [''],\r\n country: [''],\r\n },\r\n );\r\n\r\n this.selectedStatuses = ['All'];\r\n }\r\n\r\n if (this.ReportName == \"ACC GL Details Enquiry\") {\r\n this.searchForm = this.fb.group(\r\n {\r\n date: [new Date().toISOString().split(\"T\")[0], Validators.required],\r\n dateType: [1, Validators.required]\r\n });\r\n }\r\n }\r\n\r\n private async loadInitialDatafortxnEnquiry(): Promise<void> {\r\n this.loadingState = ComponentLoadingState.Loading;\r\n this.errorMessage = '';\r\n try {\r\n const data = await this.reportService\r\n .getPageLoadData(this.currentUser)\r\n .pipe(takeUntil(this.destroy$))\r\n .toPromise();\r\n\r\n if (data) {\r\n this.clients1 = data.clients || [];\r\n this.currencies = data.currencies || [];\r\n this.transactionStatuses = (data.transactionStatuses || []).filter(\r\n ts => ts.transactionStatus !== ''\r\n );\r\n\r\n if (\r\n !this.transactionStatuses.some(\r\n s => s.transactionStatus === 'All'\r\n )\r\n ) {\r\n this.transactionStatuses.unshift({\r\n transactionStatus: 'All',\r\n } as TransactionStatus);\r\n }\r\n\r\n this.setDefaultFormValues();\r\n\r\n if (this.clients1.length === 1) {\r\n this.searchForm.patchValue({\r\n client: this.clients1[0].businessPartnerCode,\r\n });\r\n await this.onClientChange();\r\n }\r\n }\r\n\r\n this.loadingState = ComponentLoadingState.Complete;\r\n } catch (error) {\r\n this.errorMessage = 'Failed to load initial data';\r\n this.loadingState = ComponentLoadingState.Error;\r\n }\r\n }\r\n\r\n\r\n private subscribeToDateChanges(): void {\r\n this.searchForm.get('fromDate')?.valueChanges.subscribe(fromDateStr => {\r\n const toDateControl = this.searchForm.get('toDate');\r\n const toDateStr = toDateControl?.value;\r\n if (!fromDateStr || !toDateStr) return;\r\n const fromDate = new Date(fromDateStr);\r\n const toDate = new Date(toDateStr);\r\n\r\n const maxToDate = new Date(fromDate);\r\n maxToDate?.setDate(fromDate.getDate() + 31);\r\n if (toDate > maxToDate) {\r\n toDateControl?.patchValue(maxToDate.toISOString().split(\"T\")[0]);\r\n }\r\n });\r\n\r\n this.searchForm.get('toDate')?.valueChanges.subscribe(toDateStr => {\r\n const fromDateControl = this.searchForm.get('fromDate');\r\n const fromDateStr = fromDateControl?.value;\r\n if (!toDateStr || !fromDateStr) return;\r\n const toDate = new Date(toDateStr);\r\n const fromDate = new Date(fromDateStr);\r\n\r\n const minFromDate = new Date(toDate);\r\n minFromDate?.setDate(toDate.getDate() - 31);\r\n if (fromDate < minFromDate) {\r\n fromDateControl?.patchValue(minFromDate.toISOString().split(\"T\")[0]);\r\n }\r\n });\r\n }\r\n\r\n\r\n private setDefaultFormValues(): void {\r\n if (this.userReportDefaults) {\r\n this.searchForm.patchValue({\r\n currency: this.userReportDefaults.LocalCurrency || 'All',\r\n });\r\n }\r\n }\r\n\r\n\r\n async onClientChange(): Promise<void> {\r\n this.loadingState = ComponentLoadingState.Loading;\r\n if (this.ReportName == \"Transaction Enquiry\") {\r\n const selectedClient = this.searchForm.get('client')?.value;\r\n if (!selectedClient) return;\r\n\r\n this.searchForm.patchValue({ branch: '', userId: '' });\r\n this.branches = [];\r\n this.products = [];\r\n this.users = [];\r\n\r\n try {\r\n await Promise.all([\r\n this.loadBranchesByAgent(selectedClient),\r\n this.loadProductsByAgent(selectedClient),\r\n ]);\r\n this.loadingState = ComponentLoadingState.Complete;\r\n } catch (err) {\r\n this.errorMessage = 'Failed to load branch/product';\r\n this.loadingState = ComponentLoadingState.Complete;\r\n }\r\n }\r\n }\r\n\r\n private async loadBranchesByAgent(agentCode: string): Promise<void> {\r\n const branches = await this.reportService\r\n .getBranchesByAgent(agentCode, this.currentUser)\r\n .pipe(takeUntil(this.destroy$))\r\n .toPromise();\r\n this.branches = branches || [];\r\n\r\n if (this.branches.length === 1) {\r\n this.searchForm.patchValue({ branch: this.branches[0].branchCode });\r\n await this.loadUsersByBranch(agentCode, this.branches[0].branchCode);\r\n } else if (this.branches.some(b => b.branchCode === 'All')) {\r\n this.searchForm.patchValue({ branch: 'All' });\r\n await this.loadUsersByBranch(agentCode, 'All');\r\n } else {\r\n this.searchForm.patchValue({ branch: '' });\r\n this.users = [];\r\n }\r\n }\r\n\r\n private async loadProductsByAgent(agentCode: string): Promise<void> {\r\n const products = await this.reportService\r\n .getProductsByAgent(agentCode)\r\n .pipe(takeUntil(this.destroy$))\r\n .toPromise();\r\n this.products = products || [];\r\n }\r\n\r\n async onBranchChange(): Promise<void> {\r\n this.loadingState = ComponentLoadingState.Loading;\r\n if (this.ReportName == \"Transaction Enquiry\") {\r\n const client = this.searchForm.get('client')?.value;\r\n const branch = this.searchForm.get('branch')?.value;\r\n if (client && branch) {\r\n await this.loadUsersByBranch(client, branch);\r\n this.loadingState = ComponentLoadingState.Complete;\r\n } else {\r\n this.users = [];\r\n this.loadingState = ComponentLoadingState.Complete;\r\n }\r\n }\r\n }\r\n\r\n private async loadUsersByBranch(agentCode: string, branchCode: string): Promise<void> {\r\n return new Promise<void>((resolve, reject) => {\r\n this.reportService\r\n .getUsersByBranch(agentCode, branchCode)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe({\r\n next: (users) => {\r\n this.users = users || [];\r\n\r\n // Try to find a user indicating \"All\"\r\n const allUser = this.users.find(\r\n u => u.userName === 'All' || u.userId === -1\r\n );\r\n\r\n if (allUser) {\r\n // If \"All\" is present, select it\r\n this.searchForm.patchValue({ userId: allUser.userId });\r\n } else if (this.users.length === 1) {\r\n // If only one user, select that user\r\n this.searchForm.patchValue({ userId: this.users[0].userId });\r\n } else {\r\n // Otherwise, clear user selection\r\n this.searchForm.patchValue({ userId: '' });\r\n }\r\n\r\n resolve();\r\n },\r\n error: (err) => reject(err),\r\n });\r\n });\r\n }\r\n\r\n onSearch(): void {\r\n if (this.ReportName == \"Transaction Enquiry\") {\r\n this.hasSearched = true;\r\n if (this.searchForm.invalid) {\r\n this.formValidationError = true;\r\n this.markFormGroupTouched(this.searchForm);\r\n return;\r\n }\r\n this.formValidationError = false;\r\n this.searchClicked.emit(this.buildSearchCriteria());\r\n }\r\n\r\n if (this.ReportName == \"ACC GL Details Enquiry\") {\r\n const modal = {\r\n selectedDateType: this.searchForm.controls[\"dateType\"]?.value,\r\n selectedDate: this.searchForm.controls[\"date\"]?.value\r\n }\r\n this.searchClicked.emit(modal);\r\n }\r\n }\r\n\r\n private markFormGroupTouched(formGroup: FormGroup | FormArray): void {\r\n Object.values(formGroup.controls).forEach(control => {\r\n if (control instanceof FormGroup || control instanceof FormArray) {\r\n this.markFormGroupTouched(control);\r\n } else {\r\n control.markAsTouched();\r\n }\r\n });\r\n }\r\n\r\n private buildSearchCriteria(): any {\r\n if (this.ReportName == \"Transaction Enquiry\") {\r\n const formValue = this.searchForm.value;\r\n return {\r\n bank: formValue.client,\r\n fromDate: this.toIsoFormat(formValue.fromDate),\r\n toDate: this.toIsoFormat(formValue.toDate),\r\n branch: formValue.branch,\r\n user: formValue.userId || '-1',\r\n currency: formValue.currency,\r\n product: formValue.product,\r\n status: this.selectedStatuses.includes('All') ? [''] : this.selectedStatuses,\r\n transactionNo: (formValue.transactionNo || '').trim(),\r\n cardNo: formValue.cardNo || '',\r\n idType: formValue.idType || '',\r\n idNo: formValue.idNo || '',\r\n senderName: formValue.senderName || '',\r\n beneficiaryName: formValue.beneficiaryName || '',\r\n telNo: formValue.telNo || '',\r\n payoutAmount: formValue.receiveAmount || '',\r\n branchName: formValue.branchName || '',\r\n company: this.companyCode || '',\r\n country: formValue.country || '',\r\n sysUserID: this.currentUser,\r\n };\r\n }\r\n }\r\n\r\n toIsoFormat(dateInput: any): string | undefined {\r\n if (!dateInput) return undefined;\r\n\r\n // Handle { year, month, day }\r\n if (\r\n typeof dateInput === 'object' &&\r\n dateInput.year &&\r\n dateInput.month &&\r\n dateInput.day\r\n ) {\r\n const year = dateInput.year;\r\n const month = String(dateInput.month).padStart(2, '0');\r\n const day = String(dateInput.day).padStart(2, '0');\r\n return `${year}-${month}-${day}`;\r\n }\r\n\r\n // Handle JS Date object\r\n if (dateInput instanceof Date) {\r\n if (isNaN(dateInput.getTime())) return undefined;\r\n const year = dateInput.getFullYear();\r\n const month = String(dateInput.getMonth() + 1).padStart(2, '0');\r\n const day = String(dateInput.getDate()).padStart(2, '0');\r\n return `${year}-${month}-${day}`;\r\n }\r\n\r\n // Handle dd/MM/yyyy string\r\n if (typeof dateInput === 'string' && dateInput.includes('/')) {\r\n const parts = dateInput.split('/');\r\n if (parts.length === 3) {\r\n const [day, month, year] = parts;\r\n return `${year}-${month.padStart(2, '0')}-${day.padStart(2, '0')}`;\r\n }\r\n }\r\n\r\n // Handle ISO string (yyyy-MM-dd or yyyy-MM-ddTHH:mm:ss.sssZ)\r\n if (typeof dateInput === 'string' && /^\\d{4}-\\d{2}-\\d{2}/.test(dateInput)) {\r\n // Use only date part if full ISO string\r\n return dateInput.substring(0, 10);\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n\r\n get errorMessage(): string {\r\n return this._errorMessage;\r\n }\r\n\r\n set errorMessage(value: string) {\r\n this._errorMessage = value;\r\n }\r\n\r\n get isLoading(): boolean {\r\n return this.loadingState === ComponentLoadingState.Loading;\r\n }\r\n\r\n get isError(): boolean {\r\n return this.loadingState === ComponentLoadingState.Error;\r\n }\r\n}\r\n","<div style=\"display: flex; flex-direction: column;\" >\r\n\r\n<h6 class=\"Breadcrumb\">\r\n <a class=\"BreadCrumbLink\" [routerLink]=\"['/reports']\">\r\n <h1>Reports</h1>\r\n </a>\r\n <a href=\"BreadCrumbLink\"></a>\r\n <span class=\"BreadCrumbArrow\"></span>\r\n <a class=\"BreadCrumbLink\">\r\n <h2>{{ ReportName }}</h2>\r\n </a>\r\n</h6>\r\n\r\n<app-loader *ngIf=\"loadingState === ComponentLoadingState.Loading\"></app-loader>\r\n\r\n<section class=\"filter-section\">\r\n <form [formGroup]=\"searchForm\" (ngSubmit)=\"onSearch()\" class=\"report-filter-form\">\r\n <div class=\"row\">\r\n <div class=\"col-custom-10-5\">\r\n <div class=\"grid-container\">\r\n <div class=\"filter-grid\">\r\n\r\n <!-- Dynamically render filters in order -->\r\n <ng-container *ngFor=\"let field of visibleFields\">\r\n <ng-container [ngSwitch]=\"field\">\r\n\r\n <!-- Client -->\r\n <div class=\"form-field\" *ngSwitchCase=\"'client'\">\r\n <div class=\"row align-items-center\">\r\n <div class=\"col-2\">\r\n <label class=\"form-label label-data\">Client<span class=\"text-danger\">*</span></label>\r\n </div>\r\n <div class=\"col-10\">\r\n <ng-select [items]=\"clients1\" bindLabel=\"businessPartnerName\" bindValue=\"businessPartnerCode\"\r\n placeholder=\"Select Client\" [clearable]=\"false\" formControlName=\"client\" required\r\n (change)=\"onClientChange()\">\r\n </ng-select>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Branch -->\r\n <div class=\"form-field\" *ngSwitchCase=\"'branch'\">\r\n <div class=\"row align-items-center\">\r\n <div class=\"col-2\">\r\n <label class=\"form-label label-data\">Branch<span class=\"text-danger\">*</span></label>\r\n </div>\r\n <div class=\"col-10\">\r\n <ng-select [items]=\"branches\" bindLabel=\"businessPartnerBranch\" bindValue=\"branchCode\"\r\n placeholder=\"Select Branch\" [clearable]=\"false\" formControlName=\"branch\" required\r\n (change)=\"onBranchChange()\">\r\n </ng-select>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- From Date -->\r\n <div class=\"form-field\" *ngSwitchCase=\"'fromDate'\">\r\n <div class=\"row align-items-center\">\r\n <div class=\"col-2\">\r\n <label class=\"form-label label-data\">From Date<span class=\"text-danger\">*</span></label>\r\n </div>\r\n <div class=\"col-10\">\r\n <div class=\"input-group date-group\">\r\n <input class=\"form-control dpicker\" placeholder=\"dd/mm/yyyy\" ngbDatepicker\r\n #fromDateInput=\"ngbDatepicker\" formControlName=\"fromDate\" autocomplete=\"off\" />\r\n <button class=\"input-group-button cal\" (click)=\"fromDateInput.toggle()\" type=\"button\">\r\n <i class=\"fa fa-calendar\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- To Date -->\r\n <div class=\"form-field\" *ngSwitchCase=\"'toDate'\">\r\n <div class=\"row align-items-center\">\r\n <div class=\"col-2\">\r\n <label class=\"form-label label-data\">To Date<span class=\"text-danger\">*</span></label>\r\n </div>\r\n <div class=\"col-10\">\r\n <div class=\"input-group date-group\">\r\n <input class=\"form-control dpicker\" placeholder=\"dd/mm/yyyy\" ngbDatepicker\r\n #toDateInput=\"ngbDatepicker\" formControlName=\"toDate\" autocomplete=\"off\" />\r\n <button class=\"input-group-button cal\" (click)=\"toDateInput.toggle()\" type=\"button\">\r\n <i class=\"fa fa-calendar\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Product -->\r\n <div class=\"form-field\" *ngSwitchCase=\"'product'\">\r\n <div class=\"row align-items-center\">\r\n <div class=\"col-2\">\r\n <label class=\"form-label label-data\">Product</label>\r\n </div>\r\n <div class=\"col-10\">\r\n <ng-select [items]=\"products\" bindLabel=\"productName\" bindValue=\"productCode\"\r\n placeholder=\"Select Product\" [clearable]=\"false\" formControlName=\"product\">\r\n </ng-select>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- User -->\r\n <div class=\"form-field\" *ngSwitchCase=\"'userId'\">\r\n <div class=\"row align-items-center\">\r\n <div class=\"col-2\">\r\n <label class=\"form-label label-data\">User<span class=\"text-danger\">*</span></label>\r\n </div>\r\n <div class=\"col-10\">\r\n <ng-select [items]=\"users\" bindLabel=\"userName\" bindValue=\"userId\" placeholder=\"Select User\"\r\n [clearable]=\"false\" formControlName=\"userId\" required>\r\n </ng-select>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Currency -->\r\n <div class=\"form-field\" *ngSwitchCase=\"'currency'\">\r\n <div class=\"row align-items-center\">\r\n <div class=\"col-2\">\r\n <label class=\"form-label label-data\">Currency</label>\r\n </div>\r\n <div class=\"col-10\">\r\n <ng-select [items]=\"currencies\" bindLabel=\"currencyCode\" bindValue=\"currencyCode\"\r\n placeholder=\"Select Currency\" [clearable]=\"false\" formControlName=\"currency\">\r\n </ng-select>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Transaction Status (Multi-select) -->\r\n <div class=\"form-field\" *ngSwitchCase=\"'transactionStatus'\">\r\n <div class=\"row align-items-center\">\r\n <div class=\"col-2\">\r\n <label class=\"form-label label-data\">Trans. Status<span class=\"text-danger\">*</span></label>\r\n </div>\r\n <div class=\"col-10\">\r\n <ng-select class=\"transaction-status-select\" [items]=\"transactionStatuses\"\r\n bindLabel=\"transactionStatus\" bindValue=\"transactionStatus\" [multiple]=\"true\"\r\n placeholder=\"Select Transaction Status\" formControlName=\"transactionStatus\"\r\n [closeOnSelect]=\"false\" [clearable]=\"false\" [searchable]=\"false\" required>\r\n <ng-template ng-option-tmp let-item=\"item\" let-item$=\"item$\">\r\n <input type=\"checkbox\" [checked]=\"item$.selected\" /> {{ item.transactionStatus }}\r\n </ng-template>\r\n </ng-select>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Transaction No -->\r\n <div class=\"form-field\" *ngSwitchCase=\"'transactionNo'\">\r\n <div class=\"row align-items-center\">\r\n <div class=\"col-2\">\r\n <label class=\"form-label label-data\">Trans. Number</label>\r\n </div>\r\n <div class=\"col-10\">\r\n <input class=\"form-control dpicker\" formControlName=\"transactionNo\"\r\n placeholder=\"Enter transaction number\" />\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Value Date -->\r\n <div class=\"form-field\" *ngSwitchCase=\"'valueDate'\">\r\n <div class=\"row align-items-center\">\r\n <div class=\"col-3\">\r\n <label class=\"form-label label-data\">Value Date<span class=\"text-danger\">*</span></label>\r\n </div>\r\n <div class=\"col-9\">\r\n <div class=\"input-group\">\r\n <input class=\"form-control dpicker\" placeholder=\"dd/mm/yyyy\" ngbDatepicker\r\n #toDateInput=\"ngbDatepicker\" formControlName=\"toDate\" autocomplete=\"off\" />\r\n <button class=\"btn btn-outline-secondary\" type=\"button\" (click)=\"toDateInput.toggle()\">\r\n <i class=\"fa fa-calendar\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Date Type -->\r\n <div class=\"form-field\" *ngSwitchCase=\"'dateType'\">\r\n <div class=\"row align-items-center\">\r\n <div class=\"col-2\">\r\n <label class=\"form-label label-data\">Date Type</label>\r\n </div>\r\n <div class=\"col-10\">\r\n <ng-select placeholder=\"- Please select -\" formControlName=\"dateType\" [clearable]=\"false\"\r\n required>\r\n <ng-option [value]=\"1\">\r\n Value Date\r\n </ng-option>\r\n <ng-option [value]=\"2\">\r\n Posting Date\r\n </ng-option>\r\n </ng-select>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Date -->\r\n <div class=\"form-field\" *ngSwitchCase=\"'date'\">\r\n <div class=\"row align-items-center\">\r\n <div class=\"col-2\">\r\n <label class=\"form-label label-data\">Date</label>\r\n </div>\r\n <div class=\"col-10\">\r\n <div class=\"input-group date-group\">\r\n <input class=\"form-control dpicker\" placeholder=\"dd/mm/yyyy\" ngbDatepicker\r\n #toDateInput=\"ngbDatepicker\" formControlName=\"date\" autocomplete=\"off\" />\r\n <button class=\"input-group-button cal\" (click)=\"toDateInput.toggle()\" type=\"button\">\r\n <i class=\"fa fa-calendar\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </ng-container>\r\n </ng-container>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-custom-1-5\">\r\n <!-- View Report Button (Always at Top-Right) -->\r\n <div class=\"form-field view-report-btn\">\r\n <button type=\"submit\" class=\"btn btn-report\">View</button>\r\n </div>\r\n </div>\r\n </div>\r\n </form>\r\n</section>\r\n<hr>\r\n<!-- Error Messages -->\r\n<div class=\"alert alert-danger mt-3\" *ngIf=\"formValidationError && hasSearched\">\r\n Please fill all required fields before submitting the form.\r\n</div>\r\n\r\n<div class=\"alert alert-danger mt-3\" *ngIf=\"errorMessage && loadingState === ComponentLoadingState.Error\">\r\n {{ errorMessage }}\r\n <button type=\"button\" class=\"btn-close\" (click)=\"errorMessage = ''\"></button>\r\n</div>\r\n</div>","import { Component, OnInit } from '@angular/core';\r\nimport { ReportService } from '../../services/report.service';\r\nimport { AccGlDetailsEnquiryReportModel } from '../../models/acc-gl-details-enquiry-report/accgl-details-enquiry-reportmodel';\r\nimport { ColDef, ColumnApi, GridApi, GridReadyEvent } from 'ag-grid-community';\r\nimport { formatDate } from '@angular/common';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport 'jspdf-autotable';\r\nimport { ExportService } from '../../shared/export.service';\r\n\r\ndeclare module 'jspdf' {\r\n interface jsPDF {\r\n autoTable: (options: any) => jsPDF;\r\n }\r\n}\r\n\r\n@Component({\r\n selector: 'lib-acc-gl-details-enquiry-report',\r\n templateUrl: './acc-gl-details-enquiry-report.component.html',\r\n styleUrls: ['./acc-gl-details-enquiry-report.component.scss'],\r\n\r\n})\r\nexport class AccGlDetailsEnquiryReportComponent implements OnInit {\r\n\r\n\r\n searchText: string = '';\r\n gridApi: GridApi<any>;\r\n gridColumnApi!: ColumnApi;\r\n selectedExportOption: string = 'excel';\r\n svgLoader: SafeHtml = '';\r\n loading: boolean = false;\r\n dataReady: boolean = false;\r\n dateTypeFilter: number = 1;\r\n dateType: any;\r\n sysCompanyCode: any;\r\n sysUserId: any;\r\n companyName: any;\r\n reportUser: any;\r\n reportTime: any;\r\n currentReportValueOrPostDate: any\r\n accGlDetailsEnquiryReportModel: AccGlDetailsEnquiryReportModel;\r\n rowData = [];\r\n date: string;\r\n pageSize: number = 15;\r\n ReportName = 'ACC GL Details Enquiry';\r\n exportFormats = [{ formatName: \"Excel\", code: 'excel' }, { formatName: \"PDF\", code: 'pdf' }, { formatName: \"CSV\", code: 'csv' }]\r\n\r\n\r\n defaultColDef: ColDef = {\r\n resizable: true,\r\n sortable: false,\r\n minWidth: 40,\r\n suppressSizeToFit: false\r\n };\r\n\r\n columnDefs: ColDef[] = [\r\n { headerName: 'Journal ID', field: 'journalID', flex: 1.8, cellClass: 'ag-left-cols-cell compact-cell', minWidth: 91, tooltipField: 'journalID' },\r\n { headerName: 'Trans No', field: 'transactionNo', flex: 1.8, cellClass: 'ag-left-cols-cell compact-cell-transaction', minWidth: 71, tooltipField: 'transactionNo' },\r\n { headerName: 'Trans Code', field: 'transactionCode', flex: 1.2, cellClass: 'ag-left-cols-cell compact-cell', minWidth: 61, tooltipField: 'transactionCode' },\r\n { headerName: 'Journal Type', field: 'journalType', flex: 1.2, cellClass: 'ag-left-cols-cell compact-cell', minWidth: 74, tooltipField: 'journalType' },\r\n { headerName: 'Posting Date', field: 'postingDate', flex: 1.2, valueFormatter: this.formatDate, cellClass: 'ag-left-cols-cell compact-cell', minWidth: 69, tooltipValueGetter: (params) => this.formatDate(params) },\r\n { headerName: 'Value Date', field: 'valueDate', flex: 1.2, valueFormatter: this.formatDate, cellClass: 'ag-left-cols-cell compact-cell', minWidth: 68, tooltipValueGetter: (params) => this.formatDate(params), },\r\n { headerName: 'Description', field: 'description', flex: 4.8, cellClass: 'description-cell', minWidth: 119, wrapText: true, autoHeight: true, cellStyle: { 'line-height': '1.2' }, tooltipField: 'description' },\r\n { headerName: 'Account Code', field: 'accountCode', flex: 1.2, cellClass: 'ag-left-cols-cell compact-cell', minWidth: 73, tooltipField: 'accountCode' },\r\n { headerName: 'Ccy', field: 'currency', flex: 0.8, cellClass: 'ag-left-cols-cell', minWidth: 35, tooltipField: 'currency' },\r\n { headerName: 'Rate', field: 'rate', flex: 1.3, valueFormatter: this.formatNumber, cellClass: 'ag-right-aligned-cell compact-cell', minWidth: 68, tooltipValueGetter: (params) => this.formatNumber(params), },\r\n { headerName: 'FxDebit', field: 'forexDebit', flex: 1, valueFormatter: this.formatNumber, cellClass: 'ag-right-aligned-cell compact-cell', minWidth: 59, tooltipValueGetter: (params) => this.formatNumber(params), },\r\n { headerName: 'Local Debit', field: 'localDebit', flex: 1, valueFormatter: this.formatNumber, cellClass: 'ag-right-aligned-cell compact-cell', minWidth: 63, tooltipValueGetter: (params) => this.formatNumber(params), },\r\n { headerName: 'FxCredit', field: 'forexCredit', flex: 1, valueFormatter: this.formatNumber, cellClass: 'ag-right-aligned-cell compact-cell', minWidth: 59, tooltipValueGetter: (params) => this.formatNumber(params), },\r\n { headerName: 'Local Credit', field: 'localCredit', flex: 1, valueFormatter: this.formatNumber, cellClass: 'ag-right-aligned-cell compact-cell', minWidth: 63, tooltipValueGetter: (params) => this.formatNumber(params), },\r\n ];\r\n\r\n constructor(private exportService: ExportService, private reportService: ReportService, private http: HttpClient, private sanitizer: DomSanitizer) { }\r\n\r\n ngOnInit(): void {\r\n this.http.get('assets/reports-lib/assets/svg-loaders/blue-tail-spin.svg', { responseType: 'text' }).subscribe(svg => {\r\n this.svgLoader = this.sanitizer.bypassSecurityTrustHtml(svg);\r\n })\r\n this.date = new Date().toISOString().split('T')[0];\r\n }\r\n\r\n public getAccGLDetailsReport() {\r\n this.accGlDetailsEnquiryReportModel = undefined;\r\n this.loading = true;\r\n this.dataReady = false;\r\n this.selectedExportOption = 'excel';\r\n this.sysCompanyCode = 'BH';\r\n this.sysUserId = this.reportService.getUserNameFromSessionStorage();\r\n this.companyName = \"Xpress Money\";\r\n this.searchText = '';\r\n\r\n if (this.dateTypeFilter == 1) {\r\n this.dateType = 'VD';\r\n } else {\r\n this.dateType = 'PD';\r\n }\r\n\r\n this.reportService.getAccGLDetailsReport(this.date.split('T')[0], this.dateType)\r\n .subscribe(data => {\r\n this.accGlDetailsEnquiryReportModel = data;\r\n if (this.accGlDetailsEnquiryReportModel) {\r\n\r\n this.rowData = this.accGlDetailsEnquiryReportModel.journalVoucherEntries;\r\n this.companyName = this.accGlDetailsEnquiryReportModel.companyName;\r\n const userName = this.accGlDetailsEnquiryReportModel.reportUser;\r\n this.reportUser = userName.toLowerCase();\r\n this.reportTime = formatDate(new Date(), 'dd/MM/yyyy hh:mm a', 'en-US');\r\n this.currentReportValueOrPostDate = formatDate(this.accGlDetailsEnquiryReportModel.date, 'dd/MM/yyyy', 'en-US');\r\n this.loading = false;\r\n this.dataReady = true;\r\n\r\n }\r\n }, error => {\r\n this.loading = false;\r\n });\r\n }\r\n\r\n public formatDate(params: any): string {\r\n return formatDate(new Date(params.value), 'dd/MM/yyyy', 'en-US');\r\n }\r\n\r\n // onEnterhandleReport(event: Event) {\r\n // const keyboardEvent = event as KeyboardEvent;\r\n // if (keyboardEvent.key === 'Enter') {\r\n // keyboardEvent.preventDefault();\r\n // event.preventDefault();\r\n // this.getAccGLDetailsReport();\r\n // }\r\n // }\r\n\r\n // onEnterhandleExport(event: Event) {\r\n // const keyboardEvent = event as KeyboardEvent;\r\n // if (keyboardEvent.key === 'Enter') {\r\n // keyboardEvent.preventDefault();\r\n // event.preventDefault();\r\n // this.handleExport();\r\n // }\r\n // }\r\n\r\n onGridReady(params: GridReadyEvent) {\r\n this.gridApi = params.api;\r\n this.gridColumnApi = params.columnApi;\r\n }\r\n\r\n getRowHeight(params: any): number {\r\n const description = params.data?.description || '';\r\n if (description.length > 50) {\r\n return 40;\r\n }\r\n return 20;\r\n }\r\n\r\n formatNumber(params: any): string {\r\n if (params.value == null) return '';\r\n\r\n const field = params.colDef.field;\r\n\r\n if (field === 'rate') {\r\n return Number(params.value).toFixed(8);\r\n }\r\n\r\n return Number(params.value).toFixed(3);\r\n }\r\n\r\n onSearch(): void {\r\n const normalize = (str: any): string =>\r\n str?.toString()\r\n .toLowerCase()\r\n .replace(/,/g, '')\r\n .replace(/\\s+/g, ' ')\r\n .replace(/[\\u200B-\\u200D\\uFEFF]/g, '')\r\n .trim();\r\n\r\n const search = normalize(this.searchText);\r\n\r\n if (search) {\r\n this.rowData = this.accGlDetailsEnquiryReportModel.journalVoucherEntries.filter(item =>\r\n Object.values(item).some(value =>\r\n normalize(value).includes(search)\r\n )\r\n );\r\n } else {\r\n this.rowData = this.accGlDetailsEnquiryReportModel.journalVoucherEntries;\r\n }\r\n }\r\n\r\n handleExport(): void {\r\n switch (this.selectedExportOption) {\r\n case 'excel':\r\n this.exportToExcel();\r\n break;\r\n case 'pdf':\r\n this.exportToPdf();\r\n break;\r\n case 'csv':\r\n this.exportToCsv();\r\n break;\r\n default:\r\n alert('Please select an export format.');\r\n }\r\n }\r\n\r\n async exportToPdf(): Promise<void> {\r\n if (!this.accGlDetailsEnquiryReportModel.journalVoucherEntries?.length) return;\r\n\r\n const title = `${this.companyName} - General Ledger Account Details Enquiry`;\r\n const metadata = this.exportService.generateReportMetadata([\r\n ['Report User : ', this.reportUser],\r\n ['Report Time : ', this.reportTime],\r\n ['Search Criteria', ' - '],\r\n [`${this.dateType == 'VD' ? 'Value Date' : 'Posting Date'}:`, this.currentReportValueOrPostDate]\r\n\r\n ]);\r\n\r\n const { headers, rows } = this.exportService.prepareExportTable(this.accGlDetailsEnquiryReportModel.journalVoucherEntries, this.columnDefs, {\r\n currencyFields: ['localCredit', 'forexCredit', 'localDebit', 'forexDebit']\r\n });\r\n\r\n await this.exportService.exportToPdfUniversal(title, metadata, headers, rows, 'ACC-GL-Details-Enquiry-Report.pdf');\r\n }\r\n\r\n exportToExcel(): void {\r\n if (!this.accGlDetailsEnquiryReportModel.journalVoucherEntries?.length) return;\r\n\r\n const title = `${this.companyName} - General Ledger Account Details Enquiry`;\r\n const metadata = this.exportService.generateReportMetadata([\r\n ['Report User', this.reportUser],\r\n ['Report Time', this.reportTime],\r\n ['Search Criteria', ' - '],\r\n [`${this.dateType == 'VD' ? 'Value Date' : 'Posting Date'}`, this.currentReportValueOrPostDate]\r\n\r\n ]);\r\n\r\n const { headers, rows } = this.exportService.prepareExportTable(this.accGlDetailsEnquiryReportModel.journalVoucherEntries, this.columnDefs, {\r\n currencyFields: ['localCredit', 'forexCredit', 'localDebit', 'forexDebit']\r\n });\r\n\r\n this.exportService.exportToExcelUniversal(title, metadata, headers, rows, 'ACC-GL-Details-Enquiry-Report.xlsx');\r\n }\r\n\r\n exportToCsv(): void {\r\n if (!this.accGlDetailsEnquiryReportModel.journalVoucherEntries?.length) return;\r\n\r\n const title = `${this.companyName} - General Ledger Account Details Enquiry`;\r\n const metadata = this.exportService.generateReportMetadata([\r\n ['Report User', this.reportUser],\r\n ['Report Time', this.reportTime],\r\n ['Search Criteria', '- '],\r\n [`${this.dateType == 'VD' ? 'Value Date' : 'Posting Date'}`, this.currentReportValueOrPostDate]\r\n\r\n ]);\r\n\r\n const { headers, rows } = this.exportService.prepareExportTable(this.accGlDetailsEnquiryReportModel.journalVoucherEntries, this.columnDefs, {\r\n currencyFields: ['localCredit', 'forexCredit', 'localDebit', 'forexDebit']\r\n });\r\n\r\n this.exportService.exportToCsvUniversal(title, metadata, headers, rows, 'ACC-GL-Details-Enquiry-Report.csv');\r\n }\r\n\r\n handleSearch(criteria: any): void {\r\n this.dateType = criteria.selectedDateType;\r\n this.date = criteria.selectedDate.split(\"T\")[0];\r\n this.getAccGLDetailsReport();\r\n }\r\n}\r\n","<!-- <h6 class=\"Breadcrumb\">\r\n <a class=\"BreadCrumbLink\" [routerLink]=\"['/reports']\">\r\n <h1>Reports</h1>\r\n </a>\r\n <a href=\"BreadCrumbLink\"></a>\r\n <span class=\"BreadCrumbArrow\"></span>\r\n <a class=\"BreadCrumbLink\">\r\n <h2 class=\"report-name\">ACC GL Details Enquiry</h2>\r\n </a>\r\n</h6> -->\r\n\r\n<div class=\"bootstrap-scope\">\r\n <div class=\"main-container\">\r\n\r\n <lib-search-filter [ReportName]=\"ReportName\" (searchClicked)=\"handleSearch($event)\">\r\n </lib-search-filter>\r\n <!-- <div class=\"form-container\">\r\n <form class=\"d-flex align-items-center gap-2\">\r\n <div class=\"d-flex align-items-center gap-2\">\r\n <label for=\"dateTypeFilter\" class=\"compact-label\">Date Type</label>\r\n <select class=\"form-select form-control w-auto compact-input\" name=\"dateTypeFilter\"\r\n [(ngModel)]=\"dateTypeFilter\" id=\"dateTypeFilter\">\r\n <option [ngValue]=\"1\">Value Date</option>\r\n <option [ngValue]=\"2\">Posting Date</option>\r\n </select>\r\n </div>\r\n <div class=\"d-flex align-items-center gap-2\" style=\"margin-left: 20px;\">\r\n <label for=\"date\" class=\"compact-label\">Date</label>\r\n <div class=\"input-group\">\r\n <input class=\"form-control date-input\" placeholder=\"dd/mm/yyyy\" ngbDatepicker #DateInput=\"ngbDatepicker\"\r\n name=\"date\" id=\"date\" [(ngModel)]=\"date\" (keydown.enter)=\"onEnterhandleReport($event)\" />\r\n <div class=\"input-group-append\">\r\n <button class=\"input-group-button\" (click)=\"DateInput.toggle()\" type=\"button\"\r\n (keydown.enter)=\"onEnterhandleReport($event)\">\r\n <i class=\"fa fa-calendar\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <div>\r\n <button class=\"btn-report\" type=\"submit\" (click)=\"getAccGLDetailsReport()\">View</button>\r\n </div>\r\n </form>\r\n </div> -->\r\n\r\n <hr />\r\n <div class=\"report-loader\" *ngIf=\"loading && svgLoader\" [innerHTML]=\"svgLoader\"></div>\r\n\r\n <div class=\"report-container\" *ngIf=\"accGlDetailsEnquiryReportModel != undefined && dataReady\">\r\n <div class=\"main-report\" *ngIf=\"accGlDetailsEnquiryReportModel != undefined && dataReady\">\r\n <h1 class=\"title\">General Ledger Account Details Enquiry</h1>\r\n <div class=\"report-content\">\r\n <div class=\"left-section\">\r\n <div class=\"labels\">\r\n <p><b>Report User</b></p>\r\n <p><b>Report Time</b></p>\r\n </div>\r\n <div class=\"values\">\r\n <p>: {{ reportUser }}</p>\r\n <p>: {{ reportTime }}</p>\r\n </div>\r\n </div>\r\n <div class=\"right-section\">\r\n <div class=\"labels\">\r\n <p><b>Company</b></p>\r\n <p><b>{{ dateType ==\r\n 'VD' ? 'Value Date' : 'Posting Date' }}</b></p>\r\n </div>\r\n <div class=\"values\">\r\n <p>: {{ companyName }}</p>\r\n <p>: {{currentReportValueOrPostDate}}</p>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"d-flex justify-content-between align-items-center mt-3 mb-3 flex-wrap\">\r\n <div class=\"d-flex align-items-center gap-2\">\r\n <div class=\"d-flex justify-content-end align-items-center\">\r\n <input type=\"text\" [(ngModel)]=\"searchText\" name=\"searchText\" (ngModelChange)=\"onSearch()\"\r\n class=\"form-control custom-search-class\" placeholder=\"Search...\" />\r\n <button type=\"button\" class=\"btn btn-sm p-0 search-button\" (click)=\"onSearch()\">\r\n <img src=\"assets/images/Search.svg\" alt=\"Search\" class=\"search-button-image\" />\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"d-flex align-items-center\">\r\n <!-- <select class=\"form-select form-control compact-input\" name=\"selectedExportOption\" id=\"selectedExportOption\"\r\n [(ngModel)]=\"selectedExportOption\" (keydown.enter)=\"onEnterhandleExport($event)\">\r\n <option value='csv'>CSV</option>\r\n <option value='excel'>Excel</option>\r\n <option value='pdf'>PDF</option>\r\n </select> -->\r\n <ng-select placeholder=\"- Please select -\" class=\"export-selector\" [(ngModel)]=\"selectedExportOption\"\r\n [clearable]=\"false\" required>\r\n <ng-option *ngFor=\"let format of exportFormats\" [value]=\"format.code\">\r\n {{ format.formatName }}\r\n </ng-option>\r\n </ng-select>\r\n <button type=\"button\" class=\"btn-report\" (click)=\"handleExport()\">Export</button>\r\n </div>\r\n </div>\r\n\r\n <div style=\"position: relative;\">\r\n <lib-page-size-selector [totalEntries]=\"accGlDetailsEnquiryReportModel?.journalVoucherEntries?.length\"\r\n [defaultSize]=\"'15'\" [gridApi]=\"gridApi\">\r\n ></lib-page-size-selector>\r\n <ag-grid-angular class=\"ag-theme-alpine compact-grid grid-size\" [rowData]=\"rowData\" [columnDefs]=\"columnDefs\"\r\n [defaultColDef]=\"defaultColDef\" [animateRows]=\"true\" [rowHeight]=\"20\" [headerHeight]=\"24\"\r\n [pagination]=\"true\" [domLayout]=\"'normal'\" [paginationPageSize]=\"pageSize\"\r\n [suppressHorizontalScroll]=\"false\" [suppressRowHoverHighlight]=\"false\"\r\n [getRowHeight]=\"getRowHeight.bind(this)\" (gridReady)=\"onGridReady($event)\"\r\n [suppressDragLeaveHidesColumns]=\"true\" [suppressMovableColumns]=\"false\">\r\n </ag-grid-angular>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>","// transaction-enquiry.component.ts\r\nimport { Component, OnInit, ViewChild, OnDestroy, ChangeDetectorRef, HostListener } from '@angular/core';\r\nimport { AgGridAngular } from 'ag-grid-angular';\r\nimport { GridOptions, ColDef, GridReadyEvent, GridApi, ColumnApi } from 'ag-grid-community';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil, finalize } from 'rxjs/operators';\r\nimport { ReportService } from '../../services/report.service';\r\nimport { Currency, CompanyReportConfig, IdentityType, TransactionStatus, Product, User, UserReportDefaults, Client, Branch, TransactionData, ComponentLoadingState } from '../../models/transaction-enquiry-report/transaction-enquiry.model';\r\nimport { ExportService } from '../../shared/export.service';\r\nimport { ConfigService } from '../../services/config.service';\r\n\r\n\r\n@Component({\r\n selector: 'app-transaction-enquiry',\r\n templateUrl: './transaction-enquiry-report.component.html',\r\n styleUrls: ['./transaction-enquiry-report.component.scss']\r\n})\r\n\r\nexport class TransactionEnquiryComponent implements OnInit {\r\n @ViewChild('agGrid') agGrid!: AgGridAngular;\r\n\r\n private destroy$ = new Subject<void>();\r\n private gridApi!: GridApi;\r\n private gridColumnApi!: ColumnApi;\r\n\r\n // Form and UI State\r\n isFilterCollapsed = false;\r\n showResults = false;\r\n searchText: string = '';\r\n paginationPageSize: number = 15;\r\n showAllRows: boolean = false;\r\n ranges: (number | 'All')[] = [15, 20, 30, 50, 100, 'All'];\r\n showRange: boolean = false;\r\n selectedExportOption: string = 'excel';\r\n showStatusDropdown: boolean = false;\r\n currentDateTime: Date = new Date();\r\n formValidationError: boolean = false;\r\n\r\n // Add these new properties after existing ones\r\n\r\n showExportDropdown: boolean = false;\r\n exportFormats = [{ formatName: \"Excel\", code: 'excel' }, { formatName: \"PDF\", code: 'pdf' }, { formatName: \"CSV\", code: 'csv' }]\r\n exportOptions = [\r\n { label: 'Excel', value: 'excel' },\r\n { label: 'PDF', value: 'pdf' },\r\n { label: 'CSV', value: 'csv' }\r\n ];\r\n\r\n productCodeMap: { [name: string]: string } = {\r\n \"DIRECT TO ACCOUNT\": \"DTA\",\r\n \"CASHPAYOUT\": \"CPO\",\r\n \"DIRECT TO WALLET\": \"DTW\",\r\n \"CASH TO CASH\": \"CTC\",\r\n \"CASH TO ACCOUNT\": \"CTA\"\r\n };\r\n\r\n // Consolidated loading state\r\n loadingState: ComponentLoadingState = ComponentLoadingState.Complete;\r\n ComponentLoadingState = ComponentLoadingState; // For template access\r\n isSearching: boolean = false;\r\n hasSearched: boolean = false;\r\n\r\n // Keep your existing errorMessage property\r\n errorMessages: string = '';\r\n _errorMessage: string = '';\r\n\r\n currentUserEmail: string = '';\r\n usernameMissing: boolean = false;\r\n token = sessionStorage.getItem('access_token');\r\n applicationType = 'ezremit';\r\n companyCode = 'BH';\r\n serviceUrl: string;\r\n apiPrefix: any;\r\n userReportDefaults: UserReportDefaults | null = null;\r\n companyReportConfig: CompanyReportConfig | null = null;\r\n\r\n // Data Arrays\r\n clients: Client[] = [];\r\n branches: Branch[] = [];\r\n users: User[] = [];\r\n currencies: Currency[] = [];\r\n products: Product[] = [];\r\n identityTypes: IdentityType[] = [];\r\n transactionData: TransactionData[] = [];\r\n transactionStatuses: TransactionStatus[] = [];\r\n selectedStatuses: string[] = [];\r\n ReportName = \"Transaction Enquiry\";\r\n\r\n\r\n // AG Grid Column Definitions\r\n columnDefs: ColDef[] = [\r\n { headerName: 'Product', field: 'product', flex: 1, minWidth: 60, cellClass: 'ag-left-aligned-cell compact-cell', tooltipField: 'product', valueFormatter: params => this.productCodeMap[params.value] || params.value },\r\n { headerName: 'User Id', field: 'id', flex: 1, minWidth: 60, cellClass: 'compact-cell', tooltipField: 'id' },\r\n {\r\n headerName: 'Transaction Number', field: 'transactionNumber', tooltipField: 'transactionNumber',\r\n cellRenderer: (params: any) => {\r\n const url = this.buildTransactionDetailsUrl(params.value);\r\n return `<a href=\"${url}\" target=\"_blank\" rel=\"noopener noreferrer\">${params.value}</a>`;\r\n },\r\n flex: 1, minWidth: 80, cellClass: 'transaction-link-cell compact-cell'\r\n },\r\n { headerName: 'Transaction Ref Number', field: 'transactionReferenceNumber', flex: 1, minWidth: 90, cellClass: 'compact-cell', tooltipField: 'transactionReferenceNumber' },\r\n { headerName: 'Trans. Date', field: 'businessDate', flex: 1, minWidth: 70, valueFormatter: this.dateFormatter.bind(this), cellClass: 'ag-left-aligned-cell compact-cell', tooltipValueGetter: (params) => this.dateFormatter(params), },\r\n { headerName: 'SendClient', field: 'sendAgent', flex: 1, minWidth: 120, cellClass: 'compact-cell', tooltipField: 'sendAgent' },\r\n { headerName: 'SendClntBranch', field: 'sendAgtBranch', flex: 1, minWidth: 150, cellClass: 'compact-cell', tooltipField: 'sendAgtBranch' },\r\n { headerName: 'RecvClient', field: 'recvAgent', flex: 1, minWidth: 120, cellClass: 'compact-cell', tooltipField: 'recvAgent' },\r\n { headerName: 'RcvClntBranch', field: 'rcvAgtBranch', flex: 1, minWidth: 120, cellClass: 'compact-cell', tooltipField: 'rcvAgtBranch' },\r\n { headerName: 'Sender Name', field: 'sendName', flex: 1, minWidth: 120, cellClass: 'compact-cell', tooltipField: 'sendName' },\r\n { headerName: 'Sender ID Type', field: 'sendIdType', flex: 1, minWidth: 90, cellClass: 'compact-cell', tooltipField: 'sendIdType' },\r\n { headerName: 'Sender ID Number', field: 'sendIdNumber', flex: 1, minWidth: 80, cellClass: 'compact-cell', tooltipField: 'sendIdNumber' },\r\n { headerName: 'Benf. Name', field: 'benName', flex: 1, minWidth: 100, cellClass: 'compact-cell', tooltipField: 'benName' },\r\n { headerName: 'Receive Curr.', field: 'payOutCurrency', flex: 1, minWidth: 70, cellClass: 'ag-center-aligned-cell compact-cell', tooltipField: 'payOutCurrency' },\r\n { headerName: 'Receive Amount', field: 'payOutAmount', flex: 1, minWidth: 100, valueFormatter: this.currencyFormatter.bind(this), cellClass: 'ag-right-aligned-cell compact-cell', tooltipValueGetter: (params) => this.currencyFormatter(params), },\r\n { headerName: 'Send Curr.', field: 'payInCurrency', flex: 1, minWidth: 55, cellClass: 'ag-center-aligned-cell compact-cell', tooltipField: 'payInCurrency' },\r\n { headerName: 'Send Amount', field: 'payInAmount', flex: 1, minWidth: 100, valueFormatter: this.currencyFormatter.bind(this), cellClass: 'ag-right-aligned-cell compact-cell', tooltipValueGetter: (params) => this.currencyFormatter(params), },\r\n { headerName: 'Service Fee', field: 'commission', flex: 1, minWidth: 70, valueFormatter: this.currencyFormatter.bind(this), cellClass: 'ag-right-aligned-cell compact-cell', tooltipValueGetter: (params) => this.currencyFormatter(params), },\r\n { headerName: 'Transaction Status', field: 'transactionStatus', flex: 1, minWidth: 90, cellClass: 'status-cell compact-cell', tooltipField: 'transactionStatus' }\r\n ];\r\n\r\n\r\n private buildTransactionDetailsUrl(transactionNumber: string): string {\r\n const baseUrl = this.serviceUrl;\r\n const token = this.token;\r\n const userName = this.currentUserEmail;\r\n const applicationType = this.applicationType;\r\n\r\n return `${baseUrl}/api/v1/RetailTransaction/GetTransactionDetailsHtmlView` +\r\n `?transactionNumber=${transactionNumber}&applicationType=${applicationType}` +\r\n `&access_token=${token}&userName=${userName}`;\r\n }\r\n\r\n // AG Grid Configuration\r\n gridOptions: GridOptions = {\r\n defaultColDef: {\r\n sortable: true,\r\n filter: true,\r\n resizable: true,\r\n cellStyle: { whiteSpace: 'normal' },\r\n autoHeight: true,\r\n wrapText: true,\r\n },\r\n //domLayout: 'autoHeight',\r\n suppressRowClickSelection: true,\r\n animateRows: true,\r\n pagination: true,\r\n paginationPageSize: 50,\r\n //onGridReady: this.onGridReady.bind(this)\r\n };\r\n\r\n constructor(\r\n private reportService: ReportService,\r\n private exportService: ExportService,\r\n private config: ConfigService\r\n ) {\r\n this.serviceUrl = this.config.get.serviceUrl;\r\n this.currentUserEmail = sessionStorage.getItem('fossilusername') || \r\n sessionStorage.getItem('ezremitusername') || \r\n 'vipul.katale@xpressmoney.tech';\r\n this.currentUserEmail = this.currentUserEmail.replace(/\"/g, '');\r\n }\r\n \r\n\r\n ngOnInit(): void {\r\n\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n}\r\n\r\n\r\n handleSearch(criteria: any): void {\r\n this.loadingState = ComponentLoadingState.Loading;\r\n this.errorMessage = '';\r\n this.transactionData = [];\r\n this.hasSearched = false;\r\n this.searchText = '';\r\n this.selectedExportOption = 'excel';\r\n console.log(criteria)\r\n\r\n this.reportService.searchTransactions(criteria)\r\n .pipe(\r\n takeUntil(this.destroy$),\r\n finalize(() => {\r\n this.loadingState = ComponentLoadingState.Complete;\r\n this.hasSearched = true;\r\n })\r\n )\r\n .subscribe({\r\n next: data => {\r\n this.transactionData = Array.isArray(data) ? data : [];\r\n if (this.gridApi) {\r\n this.gridApi.setRowData(this.transactionData);\r\n } else {\r\n console.error('Grid API is not initialized!');\r\n }\r\n },\r\n error: err => {\r\n this.errorMessage = 'Failed to fetch transaction data. Please try again.';\r\n this.loadingState = ComponentLoadingState.Error;\r\n console.error('Search error:', err);\r\n }\r\n });\r\n }\r\n\r\n\r\n toggleStatusDropdown(event: MouseEvent): void {\r\n event.stopPropagation();\r\n this.showStatusDropdown = !this.showStatusDropdown;\r\n }\r\n toggleRangeDropdown(event: MouseEvent): void {\r\n event.stopPropagation();\r\n this.showRange = !this.showRange;\r\n }\r\n\r\n filter(): void {\r\n if (this.gridApi && this.searchText != null) {\r\n this.gridApi.setQuickFilter(this.searchText.trim().toLowerCase());\r\n }\r\n }\r\n\r\n\r\n onGridReady(params: GridReadyEvent): void {\r\n this.gridApi = params.api;\r\n this.gridColumnApi = params.columnApi;\r\n\r\n if (this.transactionData) {\r\n this.gridApi.setRowData(this.transactionData);\r\n this.gridApi.sizeColumnsToFit();\r\n }\r\n }\r\n\r\n changeLimit(limit: number | 'All'): void {\r\n this.showRange = false;\r\n\r\n if (limit === 'All') {\r\n this.showAllRows = true;\r\n this.gridApi.setDomLayout('normal');\r\n this.gridApi.paginationSetPageSize(this.gridApi.getDisplayedRowCount());\r\n } else {\r\n this.showAllRows = false;\r\n this.paginationPageSize = limit;\r\n this.gridApi.paginationSetPageSize(limit);\r\n }\r\n }\r\n\r\n clearError(): void {\r\n this.errorMessage = '';\r\n this.loadingState = ComponentLoadingState.Complete;\r\n }\r\n\r\n // Utility methods for AG Grid\r\n dateFormatter(params: any): string {\r\n if (!params.value) return '';\r\n try {\r\n const date = new Date(params.value);\r\n return date.toLocaleString('en-GB', {\r\n day: '2-digit',\r\n month: '2-digit',\r\n year: 'numeric',\r\n hour: '2-digit',\r\n minute: '2-digit',\r\n hour12: true\r\n }).replace(',', '');\r\n } catch {\r\n return params.value;\r\n }\r\n }\r\n\r\n currencyFormatter(params: any): string {\r\n if (params.value == null || params.value === '') return '';\r\n const number = parseFloat(params.value);\r\n if (isNaN(number)) return params.value;\r\n return number.toLocaleString('en-US', {\r\n minimumFractionDigits: 3,\r\n maximumFractionDigits: 3\r\n });\r\n }\r\n\r\n // Get field value for table view\r\n getFieldValue(row: any, field: string): any {\r\n const keys = field.split('.');\r\n let value = row;\r\n for (const key of keys) {\r\n value = value?.[key];\r\n }\r\n return value || '';\r\n }\r\n\r\n // Getter methods for backward compatibility with template\r\n get isLoading(): boolean {\r\n return this.loadingState === ComponentLoadingState.Loading;\r\n }\r\n\r\n get isError(): boolean {\r\n return this.loadingState === ComponentLoadingState.Error;\r\n }\r\n\r\n get canShowResults(): boolean {\r\n return this.showResults && this.hasSearched;\r\n }\r\n\r\n get errorMessage(): string {\r\n return this._errorMessage;\r\n}\r\n\r\nset errorMessage(value: string) {\r\n this._errorMessage = value;\r\n}\r\n\r\n\r\n\r\n onExportChange(value: string): void {\r\n this.selectedExportOption = value;\r\n }\r\n\r\n handleExport(): void {\r\n if (this.selectedExportOption === 'pdf') {\r\n this.exportToPDF();\r\n } else if (this.selectedExportOption === 'excel') {\r\n this.exportToExcel();\r\n } else if (this.selectedExportOption === 'csv') {\r\n this.exportToCSV();\r\n } else {\r\n alert('Please select a valid export format.');\r\n }\r\n }\r\n\r\n exportToPDF(): void {\r\n if (!this.transactionData?.length) return;\r\n\r\n const title = 'Transaction Enquiry';\r\n const metadata = this.exportService.generateReportMetadata([\r\n ['Report User : ', this.currentUserEmail],\r\n ['Report Time : ', this.exportService.formatDateTime(this.currentDateTime)]\r\n ]);\r\n\r\n const { headers, rows } = this.exportService.prepareExportTable(this.transactionData, this.columnDefs, {\r\n currencyFields: ['payOutAmount', 'payInAmount', 'commission']\r\n });\r\n\r\n this.exportService.exportToPdfUniversal(title, metadata, headers, rows, 'Transaction_Enquiry.pdf')\r\n .then(() => {\r\n console.log('PDF export completed.');\r\n })\r\n .catch(err => {\r\n console.error('PDF export failed:', err);\r\n });\r\n }\r\n\r\n exportToExcel(): void {\r\n if (!this.transactionData?.length) return;\r\n\r\n const title = 'Transaction Enquiry';\r\n const metadata = this.exportService.generateReportMetadata([\r\n ['Report User : ', this.currentUserEmail],\r\n ['Report Time : ', this.exportService.formatDateTime(this.currentDateTime)]\r\n ]);\r\n\r\n const { headers, rows } = this.exportService.prepareExportTable(this.transactionData, this.columnDefs, {\r\n currencyFields: ['payOutAmount', 'payInAmount', 'commission']\r\n });\r\n\r\n this.exportService.exportToExcelUniversal(title, metadata, headers, rows, 'Transaction_Enquiry.xlsx');\r\n }\r\n\r\n exportToCSV(): void {\r\n if (!this.transactionData?.length) return;\r\n\r\n const title = 'Transaction Enquiry';\r\n const metadata = this.exportService.generateReportMetadata([\r\n ['Report User : ', this.currentUserEmail],\r\n ['Report Time : ', this.exportService.formatDateTime(this.currentDateTime)]\r\n ]);\r\n\r\n const { headers, rows } = this.exportService.prepareExportTable(this.transactionData, this.columnDefs, {\r\n currencyFields: ['payOutAmount', 'payInAmount', 'commission']\r\n });\r\n\r\n this.exportService.exportToCsvUniversal(title, metadata, headers, rows, 'Transaction_Enquiry.csv');\r\n }\r\n}","\r\n<lib-search-filter\r\n [ReportName]=\"ReportName\" \r\n (searchClicked)=\"handleSearch($event)\">\r\n</lib-search-filter>\r\n\r\n\r\n<app-loader *ngIf=\"loadingState === ComponentLoadingState.Loading\"></app-loader>\r\n\r\n<span *ngIf=\"loadingState === ComponentLoadingState.Error\">{{ errorMessage }}</span>\r\n<div class=\"alert alert-warning mt-3\"\r\n *ngIf=\"hasSearched && transactionData.length === 0 && loadingState === ComponentLoadingState.Complete\">\r\n No transactions found matching your search criteria.\r\n</div>\r\n\r\n<div class=\"row\">\r\n <div class=\"col-12\">\r\n <div *ngIf=\"transactionData && transactionData.length > 0 && loadingState === ComponentLoadingState.Complete\">\r\n <h2 class=\"title\">Transaction Enquiry</h2>\r\n\r\n <!-- RIGHT aligned Report Info -->\r\n <div class=\"mb-2 flex-container\">\r\n <tbody>\r\n <tr>\r\n <td class=\"labl meta-td\">Report User:</td>\r\n <td class=\"px-3 meta-td\"><span class=\"info\">{{currentUserEmail}}</span></td>\r\n </tr>\r\n <tr>\r\n <td class=\"labl meta-td\">Report Time:</td>\r\n <td class=\"px-3 meta-td\"><span class=\"info\">{{ currentDateTime | date:'dd/MM/yyyy hh:mm a' }}</span></td>\r\n </tr>\r\n </tbody>\r\n </div>\r\n\r\n <!-- Search and Export Toolbar -->\r\n <div class=\"search-container d-flex justify-content-between align-items-center flex-wrap\">\r\n <!-- Search (LEFT) -->\r\n <div class=\"custom-search-group mb-md-0\">\r\n <div class=\"searchBox\">\r\n <input type=\"text\" [(ngModel)]=\"searchText\" name=\"searchText\" class=\"search-input\" (ngModelChange)=\"filter()\"\r\n placeholder=\"Search...\" autocomplete=\"off\" />\r\n\r\n <button type=\"button\" class=\"btn btn-sm search-btn\" (click)=\"filter()\">\r\n <img src=\"assets/images/Search.svg\" alt=\"Search\" class=\"search-icon\" />\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <!-- Export (RIGHT) -->\r\n <div class=\"d-flex align-items-center mt-md-0 gap-0\">\r\n <!-- Custom Export Dropdown -->\r\n <div class=\"export-options\">\r\n <ng-select placeholder=\"- Please select -\" class=\"export-selector\" [(ngModel)]=\"selectedExportOption\"\r\n [clearable]=\"false\" required>\r\n <ng-option *ngFor=\"let format of exportFormats\" [value]=\"format.code\">\r\n {{ format.formatName }}\r\n </ng-option>\r\n </ng-select>\r\n </div>\r\n <!-- Export Button -->\r\n <button class=\"btn btn-report\" (click)=\"handleExport()\">Export</button>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n <!-- AG Grid Section -->\r\n <div *ngIf=\"transactionData && transactionData.length > 0 && loadingState === ComponentLoadingState.Complete\"\r\n class=\"mt-4\">\r\n <ag-grid-angular class=\"ag-theme-alpine transaction-grid\" [rowData]=\"transactionData\" [columnDefs]=\"columnDefs\"\r\n [gridOptions]=\"gridOptions\" [pagination]=\"true\" [headerHeight]=\"30\" [paginationPageSize]=\"paginationPageSize\"\r\n (gridReady)=\"onGridReady($event)\" style=\"width: 100%; height: 418px;\">\r\n </ag-grid-angular>\r\n </div>\r\n\r\n <div class=\"pgn d-flex align-items-center position-relative\"\r\n *ngIf=\"transactionData && transactionData.length > 0 && loadingState === ComponentLoadingState.Complete\">\r\n <div class=\"dropdown me-2 custom-range-dropdown\" [class.show]=\"showRange\">\r\n <button class=\"btn btn-sm dropdown-toggle pagination-number\" type=\"button\"\r\n (click)=\"toggleRangeDropdown($event)\">\r\n {{ showAllRows ? 'All' : paginationPageSize }}\r\n </button>\r\n\r\n <ul class=\"dropdown-menu dropdown-menu-up custom-range-menu\" *ngIf=\"showRange\">\r\n <li *ngFor=\"let limit of ranges\">\r\n <button class=\"dropdown-item\" (click)=\"changeLimit(limit); showRange = false;\">\r\n {{ limit === 'All' ? 'All' : limit }}\r\n </button>\r\n </li>\r\n </ul>\r\n </div>\r\n <span class=\"pagination-label\">Entries Per Page</span>\r\n </div>\r\n </div>\r\n</div>\r\n","\r\nimport { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\n\r\nimport { TransactionEnquiryComponent } from './components/transaction-enquiry-report/transaction-enquiry-report.component';\r\n\r\nconst routes: Routes = [\r\n {\r\n path: 'transaction-enquiry-report',\r\n component: TransactionEnquiryComponent\r\n }\r\n \r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\n\r\nexport class ReportsLibRoutingModule {}\r\n","export class BranchActivitySendReportRequestDomainModel {\r\n startDate: string;\r\n endDate: string;\r\n sendCountryCode: string;\r\n recvCountryCode: string;\r\n businessPartnerCode: string;\r\n transactionStatus: string;\r\n payoutCurrency: string;\r\n transactionType: string;\r\n branchCode: string;\r\n companyCode: string;\r\n\r\n constructor(values: Object = {}) {\r\n Object.assign(this, values);\r\n }\r\n}","export enum ComponentLoadingStates {\r\n Error = -1,\r\n Loading = 0,\r\n Complete = 1,\r\n}\r\n","import { Component, NgZone, OnInit, ElementRef, HostListener, ViewChild } from '@angular/core';\r\n// import { Component, ElementRef, HostListener, ViewChild } from '@angular/core';\r\nimport { FormArray, FormBuilder, FormControl, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\r\nimport { ReportService } from '../../services/report.service';\r\nimport { BranchActivityReport } from '../../models/branch-activity-report/branch-activity-send-report';\r\nimport { ColDef, GridOptions, GridReadyEvent, RowGroupingDisplayType } from 'ag-grid-community';\r\nimport * as XLSX from 'xlsx';\r\nimport { saveAs } from 'file-saver';\r\nimport * as ExcelJS from 'exceljs';\r\nimport * as FileSaver from 'file-saver';\r\nimport { themeAlpine } from '@ag-grid-community/theming';\r\n\r\nimport jsPDF from 'jspdf';\r\nimport { formatDate, DatePipe } from '@angular/common';\r\nimport { BranchActivitySendReportRequestDomainModel } from '../../models/branch-activity-report/branch-activity-send-report-request-domain-model';\r\nimport { forkJoin, of } from 'rxjs';\r\nimport { catchError } from 'rxjs/operators';\r\nimport { ComponentLoadingStates } from '../../models/component-loading-states';\r\n\r\n@Component({\r\n selector: 'lib-branch-activity-send-report',\r\n templateUrl: './branch-activity-send-report.component.html',\r\n styleUrls: ['./branch-activity-send-report.component.scss']\r\n})\r\nexport class BranchActivitySendReportComponent implements OnInit {\r\n dataMap: Record<string, BranchActivityReport[]> = {}\r\n filteredData: Record<string, BranchActivityReport[]> = {}\r\n proxyData: Record<string, BranchActivityReport[]> = {}\r\n form: FormGroup;\r\n countries: any;\r\n params: any;\r\n fromDate: any;\r\n toDate: any;\r\n clients: any = [];\r\n clientsData:any = [];\r\n clientBranches: any = [];\r\n showReport: boolean;\r\n ranges: any[] = [10, 15, 20, 30, 50, 100, 200, 'All'];\r\n paginationPageSize: number = 15;\r\n paginationArray: any[];\r\n showRange: boolean = false;\r\n isAgentSelected: boolean = false;\r\n selectedExportOption = 'excel';\r\n gridAPi;\r\n gridColumnApi;\r\n user: string = \"kaushik.kulsange@xpressmoney.tech\";\r\n reportDate: string;\r\n searchText: string;\r\n buffer: any;\r\n myStatus: FormArray = new FormArray([]);\r\n status = ['All'];\r\n errorMessage = '';\r\n sysUserId: string;\r\n private logoBase64: string | undefined;\r\n message: string = 'No Data Found';\r\n ComponentLoadingState = ComponentLoadingStates;\r\n loadingState: ComponentLoadingStates = ComponentLoadingStates.Loading;\r\n exportFormats = [{formatName:\"Excel\",code:'excel'},{formatName:\"PDF\",code:'pdf'},{formatName:\"CSV\",code:'csv'}]\r\n // flags\r\n showStatusDropdown: boolean = false;\r\n showClients: boolean = false;\r\n showCurrency: boolean = false;\r\n showProduct: boolean = false;\r\n showSendCountry: boolean = false;\r\n showReceiveCountry: boolean = false;\r\n showBranch: boolean = false;\r\n disableToDate: boolean = true;\r\n showError: boolean = false;\r\n showMessage: boolean = false;\r\n selectAll: boolean = false;\r\n noDataFound: boolean = false;\r\n clientSelected: boolean = false;\r\n activeBranch: number;\r\n\r\n columnDefs: ColDef<BranchActivityReport>[] = [\r\n { field: 'businessDateTime', headerName: 'Business Date', flex: 1, headerClass: 'ag-left-aligned-header', minWidth: 70, width: 70, tooltipField: 'businessDateTime' },\r\n { field: 'transactionDateTime', headerName: 'Transaction Date', flex: 2, wrapText: true, autoHeight: true },\r\n { field: 'transactionNumber', headerName: 'Transaction Number', flex: 1.8, width: 130, cellClass: 'ag-left-cols-cell compact-cell-transaction', tooltipField: 'transactionNumber' },\r\n { field: 'product', headerName: 'Product', flex: 0.5, minWidth: 50, width: 60, tooltipField: 'product' },\r\n { field: 'sendAgentBranchCode', headerName: 'Send BranchCode', flex: 1, width: 120, tooltipField: 'sendAgentBranchCode' },\r\n { field: 'receiveAgentCode', headerName: 'Receive ClientCode', flex: 1, minWidth: 70, width: 70, tooltipField: 'receiveAgentCode' },\r\n { field: 'payoutCCcode', headerName: 'ReceiveCcy Code', flex: 1, width: 110, tooltipField: 'payoutCCcode' },\r\n { field: 'payoutAmount', headerName: 'Receive Amount', flex: 1, maxWidth: 130, valueFormatter: this.currencyFormatter.bind(this), cellClass: 'ag-right-aligned-cell compact-cell', tooltipField: 'payoutAmount' },\r\n { field: 'payinCCcode', headerName: 'SendCcy Code', flex: 1, maxWidth: 90, tooltipField: 'payinCCcode' },\r\n { field: 'payinAmount', headerName: 'Send Amount', flex: 1, maxWidth: 120, valueFormatter: this.currencyFormatter.bind(this), cellClass: 'ag-right-aligned-cell compact-cell', tooltipField: 'payinAmount' },\r\n { field: 'transactionCommissionAmount', headerName: 'Service Fee', flex: 1, maxWidth: 120, valueFormatter: this.currencyFormatter.bind(this), cellClass: 'ag-right-aligned-cell compact-cell', tooltipField: 'transactionCommissionAmount' },\r\n { field: 'tax', headerName: 'Tax', flex: 1, width: 70, maxWidth: 100, valueFormatter: this.currencyFormatter.bind(this), cellClass: 'ag-right-aligned-cell compact-cell', tooltipField: 'tax' },\r\n { field: 'totalPayinAmount', headerName: 'Total Send Amount', flex: 1, valueFormatter: this.currencyFormatter.bind(this), cellClass: 'ag-right-aligned-cell compact-cell', tooltipField: 'totalPayinAmount' },\r\n { field: 'status', headerName: 'Transaction Status', flex: 1, tooltipField: 'status' }\r\n ];\r\n\r\n\r\n defaultColDef = {\r\n sortable: true,\r\n filter: false,\r\n resizable: true,\r\n minwidth: 40,\r\n wrapHeaderText: true,\r\n autoHeaderHeight: true,\r\n suppressSizeToFit: false,\r\n wrapText: true\r\n };\r\n rowData: BranchActivityReport[] = [];\r\n\r\n constructor(private formBuilder: FormBuilder, private reportService: ReportService, private ngZone: NgZone) { }\r\n\r\n reportTheme = themeAlpine.withParams({\r\n headerFontSize: '10px',\r\n fontFamily: ['Arial', 'sans-serif'],\r\n fontSize: '9px'\r\n });\r\n\r\n ngOnInit(): void {\r\n // Check if User is falcon user or fossilUser\r\n if (sessionStorage.getItem('fossilusername')) {\r\n this.sysUserId = sessionStorage.getItem('fossilusername')\r\n }\r\n else {\r\n this.sysUserId = sessionStorage.getItem('ezremitusername');\r\n }\r\n this.sysUserId = this.sysUserId.replace(/^[\"'](.*)[\"']$/, '$1');\r\n this.user = this.sysUserId;\r\n console.log(\"System User Id : \" + this.sysUserId);\r\n this.initForm();\r\n this.reportService.getCompanyConfig().subscribe(data => {\r\n this.params = data;\r\n console.log(this.params)\r\n })\r\n\r\n forkJoin({\r\n params: this.reportService.getParams().pipe(\r\n catchError(err => {\r\n console.error('Error loading params', err);\r\n return of(null);\r\n })\r\n ),\r\n clients: this.reportService.getPayInAgents(this.sysUserId).pipe(\r\n catchError(err => {\r\n console.error('Error loading clients', err);\r\n return of([]); \r\n })\r\n )\r\n }).subscribe(\r\n {\r\n next: ({ params, clients }) => {\r\n this.params = params;\r\n this.clients = [...clients];\r\n this.clientsData = [...clients];\r\n if (!sessionStorage.getItem('fossilusername') && this.clients?.length) {\r\n this.selectClient(this.clients[0].code);\r\n }\r\n this.loadingState = ComponentLoadingStates.Complete;\r\n },\r\n error: err => {\r\n console.error('Unexpected forkJoin error', err);\r\n this.loadingState = ComponentLoadingStates.Error;\r\n },\r\n complete: () => {\r\n this.loadingState = ComponentLoadingStates.Complete;\r\n this.onClientSelected();\r\n }\r\n }\r\n\r\n );\r\n this.subscribeToDateChanges();\r\n this.subscribeToClientChange();\r\n //Convert Logo to base64\r\n this.loadImageAsBase64('src/assets/reports-lib/images/XMCoral.png').then(base64 => {\r\n this.logoBase64 = base64;\r\n });\r\n }\r\n\r\n initForm() {\r\n this.form = this.formBuilder.group({\r\n fromDate: [new Date().toISOString().split(\"T\")[0], Validators.required],\r\n toDate: [{ value: new Date().toISOString().split(\"T\")[0], disabled: false }, Validators.required],\r\n sendCountry: ['All', Validators.required],\r\n receiveCountry: ['All', Validators.required],\r\n client: [null, Validators.required],\r\n branch: [{ value: null, disabled: this.isAgentSelected }, Validators.required],\r\n product: ['All', Validators.required],\r\n receiveCurrency: ['All', Validators.required],\r\n transactionStatus: [['All'],Validators.required],\r\n selectedStatus: ['All', Validators.required]\r\n });\r\n }\r\n\r\n onSubmit() {\r\n this.showStatusDropdown = false;\r\n this.showClients = false;\r\n this.searchText = \"\";\r\n this.showError = false;\r\n this.showReport = false;\r\n // console.log(this.form.value)\r\n this.fromDate = this.form.controls[\"fromDate\"].value;\r\n this.toDate = this.form.controls[\"toDate\"].value;\r\n // Validate Form\r\n if (!this.form.valid) {\r\n this.showError = true;\r\n this.errorMessage = `Please fill all the required fields`;\r\n return;\r\n }\r\n // Check if fromDate is greater than toDate\r\n if (new Date(this.fromDate) > new Date(this.toDate)) {\r\n this.showError = true;\r\n this.errorMessage = `From Date ${this.fromDate} can not be greater than To Date ${this.toDate}`;\r\n return;\r\n }\r\n // Calculate the difference in days \r\n const from = new Date(this.fromDate);\r\n const to = new Date(this.toDate);\r\n const differenceInDays = Math.floor((to?.getTime() - from?.getTime()) / (1000 * 60 * 60 * 24));\r\n // Check if the difference between the two dates exceeds 31 days (1 months approx)\r\n if (differenceInDays > 31) {\r\n this.showError = true;\r\n this.errorMessage = `From Date ${this.fromDate} and To Date ${this.toDate} should have difference of max 1 month`;\r\n return;\r\n }\r\n this.showError = false;\r\n const d = new Date().toISOString();\r\n this.reportDate = new Date().toISOString();\r\n this.reportDate = formatDate(this.reportDate, 'dd/MM/yyyy hh:mm a', 'en-US');\r\n const modal = this.mapFormToModel();\r\n modal.transactionStatus = this.form.controls[\"selectedStatus\"].value;\r\n console.log(modal);\r\n this.showMessage = true;\r\n this.loadingState = ComponentLoadingStates.Loading;\r\n this.reportService.getBranchActivityReport(modal).subscribe({\r\n next: (data) => {\r\n console.log(data);\r\n this.dataMap = JSON.parse(JSON.stringify(data));\r\n this.filteredData = data;\r\n this.noDataFound = Object.keys(this.filteredData).length == 0 ? true : false;\r\n this.proxyData = structuredClone(data);\r\n this.paginationArray = new Array(Object.keys(this.filteredData).length).fill(15);\r\n this.showMessage = Object.keys(this.filteredData).length == 0 ? true : false;\r\n this.showReport = true;\r\n },\r\n\r\n error: (err) => {\r\n this.loadingState = ComponentLoadingStates.Complete;\r\n },\r\n\r\n complete: () => {\r\n this.loadingState = ComponentLoadingStates.Complete;\r\n }\r\n })\r\n }\r\n\r\n\r\n onSearch() {\r\n console.log(this.searchText);\r\n if (this.searchText.trim().length === 0) {\r\n this.filteredData = structuredClone(this.dataMap);\r\n return;\r\n }\r\n this.searchText = this.searchText.toLowerCase();\r\n for (const [key, entries] of Object.entries(this.proxyData)) {\r\n const filteredData = entries.filter(entry => Object.values(entry)\r\n .some(val => {\r\n let a: string = val.toString().toLowerCase();\r\n return a.search(this.searchText) == -1 ? false : true;\r\n }))\r\n\r\n this.filteredData[key] = filteredData;\r\n }\r\n this.filteredData;\r\n }\r\n\r\n onAgentSelected(code: any) {\r\n if (this.form.controls['client'].value === null) {\r\n return;\r\n }\r\n this.form.controls['branch'].patchValue(null);\r\n this.loadingState = ComponentLoadingStates.Loading;\r\n this.reportService.getBranchByAgent(this.sysUserId, code).subscribe({\r\n next: (data) => {\r\n this.clientBranches = data;\r\n },\r\n error: (err) => {\r\n this.loadingState = ComponentLoadingStates.Complete;\r\n },\r\n complete: () => {\r\n if(sessionStorage.getItem(\"ezremitusername\")){\r\n const index=this.clientBranches.findIndex((branch)=>branch.branchCode === \"All\");\r\n if(index==-1){\r\n this.form.controls['branch'].setValue(this.clientBranches[0].branchCode)\r\n }else{\r\n this.form.controls['branch'].setValue('All');\r\n }\r\n }\r\n this.loadingState = ComponentLoadingStates.Complete;\r\n\r\n }\r\n });\r\n }\r\n\r\n mapFormToModel(): BranchActivitySendReportRequestDomainModel {\r\n const data = new BranchActivitySendReportRequestDomainModel(this.form.getRawValue());\r\n data.startDate = this.form.controls['fromDate'].value;\r\n data.endDate = this.form.controls['toDate'].value;\r\n data.sendCountryCode = this.form.controls['sendCountry'].value;\r\n data.recvCountryCode = this.form.controls['receiveCountry'].value;\r\n data.businessPartnerCode = this.form.controls['client'].value;\r\n data.transactionStatus = this.form.controls['transactionStatus'].value;\r\n data.transactionType = this.form.controls['product'].value;\r\n data.branchCode = this.form.controls['branch'].value;\r\n data.payoutCurrency = this.form.controls['receiveCurrency'].value;\r\n data.companyCode = \"BH\";\r\n return data;\r\n }\r\n\r\n onGridReady(params: GridReadyEvent) {\r\n params.api.sizeColumnsToFit();\r\n this.gridAPi = params.api;\r\n this.gridColumnApi = params.columnApi;\r\n }\r\n\r\n onGridSizeChanged(params: any) {\r\n params.api.sizeColumnsToFit();\r\n }\r\n\r\n\r\n changeLimit(limit: any, index: number, key: string) {\r\n if (limit != \"All\") {\r\n this.paginationArray[index] = limit;\r\n } else {\r\n this.paginationArray[index] = this.filteredData[key].length;\r\n }\r\n this.showRange = false;\r\n }\r\n\r\n async handleExport() {\r\n const data: any[] = [];\r\n this.gridAPi.forEachNode(node => data.push(node.data))\r\n if (Object.keys(this.filteredData).length == 0) {\r\n return;\r\n }\r\n switch (this.selectedExportOption) {\r\n case 'excel':\r\n this.exportExcel(data);\r\n break;\r\n case 'pdf':\r\n this.exportPDF(data);\r\n break;\r\n case 'csv':\r\n this.exportCSV(data);\r\n break;\r\n default:\r\n alert('Please select an export format.');\r\n }\r\n }\r\n\r\n // ------------------------ Utility ------------------------\r\n private loadImageAsBase64(imagePath: string): Promise<string> {\r\n return new Promise((resolve, reject) => {\r\n const img = new Image();\r\n img.crossOrigin = 'anonymous';\r\n img.src = imagePath;\r\n\r\n img.onload = () => {\r\n // Scale up canvas resolution (2x or more)\r\n const scale = 2;\r\n const canvas = document.createElement('canvas');\r\n canvas.width = img.width * scale;\r\n canvas.height = img.height * scale;\r\n\r\n const ctx = canvas.getContext('2d');\r\n if (ctx) {\r\n ctx.scale(scale, scale); // Draw image at higher quality\r\n ctx.drawImage(img, 0, 0);\r\n const base64 = canvas.toDataURL('image/png', 1.0); // 1.0 = highest quality\r\n resolve(base64);\r\n } else {\r\n reject('Failed to get canvas context.');\r\n }\r\n };\r\n\r\n img.onerror = () => reject('Failed to load image: ' + imagePath);\r\n });\r\n }\r\n\r\n exportPDF(data: any) {\r\n const currencyFields = ['payoutAmount', 'payinAmount', 'totalPayinAmount', 'tax', 'transactionCommissionAmount'];\r\n data = Object.values(this.dataMap)[0];\r\n const doc = new jsPDF({\r\n orientation: 'landscape',\r\n unit: 'mm',\r\n format: [400, 210]\r\n });\r\n\r\n const pageWidth = doc.internal.pageSize.width;\r\n\r\n //Title\r\n const title = `Branch Activity Send`;\r\n doc.setFontSize(15);\r\n doc.setFont('helvetica', 'bold');\r\n const textWidth = doc.getTextWidth(title);\r\n doc.text(title, doc.internal.pageSize.width / 2, 15, { align: 'center' });\r\n\r\n //Add Image\r\n if (this.logoBase64) {\r\n doc.addImage(this.logoBase64, 'PNG', 15, 5, 25, 20);\r\n }\r\n\r\n //Info block\r\n const infoY = 30;\r\n const leftMargin = 15;\r\n const lineHeight = 7;\r\n const infoLines = [\r\n ['Report User And Time:', this.user],\r\n ['Report Time', formatDate(this.reportDate, 'dd/MM/yyyy hh:mm a', 'en-US')]\r\n // ['Report Period:', `${this.fromDate} - ${this.toDate}`]\r\n ]\r\n\r\n doc.setFontSize(10);\r\n infoLines.forEach(([label, value], i) => {\r\n const y = infoY + i * lineHeight;\r\n // Draw label in bold\r\n doc.setFont('helvetica', 'bold');\r\n doc.text(label, leftMargin, y);\r\n\r\n // Draw value in normal font right after label\r\n const labelWidth = doc.getTextWidth(label + ' ');\r\n doc.setFont('helvetica', 'normal');\r\n doc.text(value, leftMargin + labelWidth, y);\r\n });\r\n\r\n const filteredColumns = this.columnDefs.filter(col =>\r\n !(col.headerName?.toLowerCase().includes('sr. no') || col.field?.toLowerCase().includes('srno') || col.field?.toLowerCase().includes('serial'))\r\n );\r\n\r\n // Prepare headers with Sr No\r\n const headers = ['Sr No', ...filteredColumns.map(col => col.headerName || col.field!)];\r\n\r\n let Rows: any[] = [];\r\n\r\n for (const [key, reports] of Object.entries(this.dataMap)) {\r\n Rows.push([{ content: key, colSpan: 15 }]);\r\n const rows = reports.map((row, index) => {\r\n const rowData = filteredColumns.map(col => {\r\n let value = row[col.field!];\r\n if (currencyFields.includes(col.field) && value != null) {\r\n value = parseFloat(value).toFixed(3);\r\n }\r\n return value ?? '';\r\n });\r\n Rows.push([index + 1, ...rowData]);\r\n return [index + 1, ...rowData];\r\n });\r\n // Rows.push(rows);\r\n }\r\n\r\n // Prepare rows with Sr No\r\n const rows = data.map((row, index) => {\r\n const rowData = filteredColumns.map(col => {\r\n let value = row[col.field!];\r\n return value ?? '';\r\n });\r\n return [index + 1, ...rowData];\r\n });\r\n\r\n // Generate dynamic column styles for auto-width\r\n const columnStyles: { [key: number]: any } = {};\r\n headers.forEach((_, i) => {\r\n columnStyles[i] = { cellWidth: 'auto' };\r\n });\r\n\r\n columnStyles[2] = { cellWidth: 40 };\r\n\r\n // Render Table\r\n doc.autoTable({\r\n head: [headers],\r\n body: Rows,\r\n startY: infoY + infoLines.length * lineHeight + 5,\r\n theme: 'grid',\r\n headStyles: {\r\n fillColor: [220, 220, 220],\r\n textColor: 0,\r\n fontStyle: 'bold',\r\n fontSize: 9,\r\n halign: 'center'\r\n },\r\n bdyStyles: {\r\n fontSize: 8,\r\n fillColor: [255, 255, 255],\r\n textColor: [0, 0, 0]\r\n },\r\n styles: {\r\n cellPadding: 2,\r\n overflow: 'linebreak',\r\n minCellHeight: 6\r\n },\r\n columnStyles: columnStyles\r\n });\r\n doc.save(\"Branch-Activity-Send-Report.pdf\")\r\n }\r\n\r\n exportExcel(data: any) {\r\n const currencyFields = ['payoutAmount', 'payinAmount', 'totalPayinAmount', 'tax', 'transactionCommissionAmount'];\r\n const workbook = new ExcelJS.Workbook();\r\n const worksheet = workbook.addWorksheet('Branch-Activity-Send-Report');\r\n const totalColumns = this.columnDefs.length;\r\n\r\n // Title Row\r\n const titleRow = worksheet.addRow([\"Branch Activity Send\"]);\r\n titleRow.font = { bold: true, size: 14 };\r\n titleRow.height = 60;\r\n worksheet.mergeCells(`A${titleRow.number}:${String.fromCharCode(64 + totalColumns)}${titleRow.number}`);\r\n //Center align the title\r\n const masterCell = worksheet.getCell(`A${titleRow.number}`);\r\n masterCell.alignment = { horizontal: 'center', vertical: 'middle' };\r\n\r\n // Add image if available\r\n if (this.logoBase64) {\r\n const base64Data = this.logoBase64.replace(/^data:image\\/\\w+;base64,/, '');\r\n const imageId = workbook.addImage({\r\n base64: base64Data,\r\n extension: 'png',\r\n });\r\n\r\n // Place image at top-left (e.g., A1:C4)\r\n worksheet.addImage(imageId, {\r\n tl: { col: 0, row: 0 },\r\n ext: { width: 150, height: 50 },\r\n });\r\n }\r\n\r\n //Meta Data\r\n const meta: [string, string][] = [\r\n ['Report User ', this.user],\r\n ['Report Time', formatDate(this.reportDate, 'dd/MM/yyyy hh:mm a', 'en-US')]\r\n // ['Report Period', `${this.fromDate} - ${this.toDate}`]\r\n ]\r\n\r\n meta.forEach(([label, value]) => {\r\n const row = worksheet.addRow([label, value]);\r\n //Bold the key column\r\n const labelCell = row.getCell(1);\r\n labelCell.font = { bold: true };\r\n })\r\n // For Empty Row\r\n worksheet.addRow([]);\r\n\r\n // Add Header Row for Data Table\r\n const headerRow = worksheet.addRow(this.columnDefs.map(col => col.headerName || col.field));\r\n headerRow.font = { bold: true };\r\n for (let i = 1; i <= this.columnDefs.length; i++) {\r\n const cell = headerRow.getCell(i);\r\n cell.fill = {\r\n type: 'pattern',\r\n pattern: 'solid',\r\n fgColor: { argb: 'D9D9D9' },\r\n };\r\n }\r\n\r\n headerRow.alignment = {\r\n wrapText: true,\r\n vertical: 'top',\r\n horizontal: 'center'\r\n };\r\n headerRow.border = {\r\n top: { style: 'thin' }, bottom: { style: 'thin' },\r\n left: { style: 'thin' }, right: { style: 'thin' }\r\n };\r\n\r\n const dataStartRow = worksheet.lastRow!.number + 1;\r\n const branchRows = [];\r\n for (const [key, reports] of Object.entries(this.dataMap)) {\r\n console.log('Key:', key);\r\n console.log('Reports:', reports);\r\n const row = worksheet.addRow([`${key}`]);\r\n worksheet.mergeCells(row.number, 1, row.number, 10);\r\n branchRows.push(row.number);\r\n // Add Data Rows\r\n reports.forEach(row => {\r\n const rowData = this.columnDefs.map(col => {\r\n let value = row[col.field!];\r\n // Format currency fields\r\n if (currencyFields.includes(col.field) && value != null) {\r\n value = parseFloat(value).toFixed(3);\r\n }\r\n if (!isNaN(value) && value !== null && value !== '') {\r\n return `\\t ${value}`;\r\n }\r\n return value ?? '';\r\n })\r\n const dataRow = worksheet.addRow(rowData);\r\n dataRow.border = {\r\n top: { style: 'thin' }, bottom: { style: 'thin' },\r\n left: { style: 'thin' }, right: { style: 'thin' }\r\n };\r\n });\r\n worksheet.addRow([]);\r\n }\r\n\r\n // Auto column width ONLY based on data rows\r\n for (let i = 1; i <= totalColumns; i++) {\r\n let maxLength = 10;\r\n for (let rowNum = dataStartRow; rowNum <= worksheet.lastRow!.number; rowNum++) {\r\n if (branchRows.indexOf(x => x === rowNum) === -1) {\r\n continue;\r\n }\r\n const cell = worksheet.getRow(rowNum).getCell(i);\r\n const val = cell.value ? cell.value.toString() : '';\r\n maxLength = Math.max(maxLength, val.length);\r\n }\r\n worksheet.getColumn(i).width = maxLength + 2;\r\n }\r\n worksheet.getColumn(2).width = 20;\r\n worksheet.getColumn(3).width = 15;\r\n // Export\r\n workbook.xlsx.writeBuffer().then(buffer => {\r\n const blob = new Blob([buffer], {\r\n type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'\r\n })\r\n FileSaver.saveAs(blob, 'Branch-Activity-Send-Report.xlsx');\r\n })\r\n }\r\n\r\n exportCSV(data: any[]) {\r\n const currencyFields = ['payoutAmount', 'payinAmount', 'totalPayinAmount', 'tax', 'transactionCommissionAmount'];\r\n const metadata = [\r\n ['Report Title', 'Branch Activity Send'],\r\n ['Report Time', formatDate(this.reportDate, 'dd/MM/yyyy hh:mm a', 'en-US')]\r\n // ['Report User', this.user]\r\n ];\r\n\r\n const filteredCols = this.columnDefs.filter(\r\n col =>\r\n !(col.headerName?.toLowerCase().includes('sr. no') ||\r\n col.field?.toLowerCase().includes('sr. no'))\r\n );\r\n\r\n const headers = ['Sr No', ...filteredCols.map(col => col.headerName || col.field!)];\r\n\r\n let Rows: any[][] = []\r\n for (const [key, reports] of Object.entries(this.dataMap)) {\r\n Rows.push([key]);\r\n reports.map((row, index) => {\r\n const rowVals = filteredCols.map(col => {\r\n let v = row[col.field!];\r\n if (currencyFields.includes(col.field) && v != null) {\r\n v = parseFloat(v).toFixed(3);\r\n }\r\n if (col.field === 'transactionNumber' || col.headerName === 'Transaction Number') {\r\n return `\\t ${v}`;\r\n }\r\n return v ?? '';\r\n });\r\n Rows.push([index + 1, ...rowVals]);\r\n return [index + 1, ...rowVals];\r\n })\r\n }\r\n\r\n const aoa: any[][] = [\r\n ...metadata,\r\n [], // blank row for separation\r\n headers,\r\n ...Rows\r\n ];\r\n\r\n // convert to worksheet & CSV\r\n const ws = XLSX.utils.aoa_to_sheet(aoa);\r\n const csv = XLSX.utils.sheet_to_csv(ws, {\r\n FS: ',', RS: '\\n', blankrows: false, forceQuotes: false\r\n } as any);\r\n\r\n // trigger download\r\n const blob = new Blob([csv], { type: 'text/csv;charset=utf-8;' });\r\n saveAs(blob, 'Branch-Activity-Send-Report.csv');\r\n }\r\n\r\n // showStatus(event: Event) {\r\n // this.ngZone.run(() => {\r\n // this.showStatusDropdown = !this.showStatusDropdown;\r\n // });\r\n // }\r\n\r\n // selectStatus(event: Event) {\r\n // const target = event.target as HTMLInputElement;\r\n // this.status = [];\r\n // // this.status = this.form.controls[\"selectedStatus\"].value.split(\",\");\r\n // this.selectAll = false;\r\n // if (target.checked) {\r\n // this.myStatus.push(new FormControl(target.value));\r\n // console.log(this.myStatus);\r\n // } else {\r\n // const index = this.myStatus.controls\r\n // .findIndex(ctrl => ctrl.value === target.value);\r\n // if (index !== -1) {\r\n // this.myStatus.removeAt(index);\r\n // }\r\n // }\r\n\r\n // for (let i = 0; i < this.myStatus.controls.length; i++) {\r\n // this.status.push(this.myStatus.controls[i].value);\r\n // }\r\n // console.log(this.myStatus);\r\n // this.form.setControl('transactionStatus', new FormArray([new FormControl(target.value)]));\r\n // this.form.controls[\"selectedStatus\"].setValue(this.status.join(\",\"));\r\n // console.log(this.form.controls[\"selectedStatus\"].value);\r\n // }\r\n\r\n // selectAllStatus(event: Event) {\r\n // const target = event.target as HTMLInputElement;\r\n // this.status = [];\r\n // this.selectAll = !this.selectAll;\r\n // if (target.checked) {\r\n // for (let s of this.params?.transactionStatusTypes) {\r\n // this.myStatus.push(new FormControl(s.transactionStatus));\r\n // this.status.push(s.transactionStatus);\r\n // }\r\n // } else {\r\n // this.myStatus.clear();\r\n // this.status = []\r\n // }\r\n // this.form.controls[\"selectedStatus\"].setValue(this.status.join(\",\"));\r\n // console.log(this.form.controls[\"selectedStatus\"].value);\r\n // }\r\n\r\n //Currency Dropdown\r\n // toggleCurrencyDropdown() {\r\n // this.showCurrency = !this.showCurrency;\r\n // }\r\n // selectCurrency(currencyCode: string) {\r\n // this.form.controls[\"receiveCurrency\"].setValue(currencyCode);\r\n // this.showCurrency = false;\r\n // }\r\n\r\n // getSelectedCurrencyDisplay(): string {\r\n // const currency = this.form.controls[\"receiveCurrency\"].value;\r\n // if (currency && this.params?.currencies) {\r\n // return this.params.currencies[this.params.currencies.findIndex(c => c.currencyCode == currency)].currency;\r\n // } else {\r\n // this.form.controls[\"receiveCurrency\"].setValue(\"All\");\r\n // return \"All\";\r\n // }\r\n // }\r\n\r\n //Product Dropdown\r\n // toggleProductDropdown() {\r\n // this.showProduct = !this.showProduct;\r\n // }\r\n // selectProduct(productCode: string) {\r\n // this.form.controls[\"product\"].setValue(productCode);\r\n // this.showProduct = false;\r\n // }\r\n\r\n // getSelectedProductDisplay(): string {\r\n // const product = this.form.controls[\"product\"].value;\r\n // if (product && this.params?.transactionProductTypes) {\r\n // return this.params.transactionProductTypes[this.params.transactionProductTypes.findIndex(p => p.productCode == product)].name;\r\n // } else {\r\n // this.form.controls[\"product\"].setValue(\"All\");\r\n // return \"All\";\r\n // }\r\n // }\r\n\r\n //SendCountry Dropdown\r\n // toggleSendCountryDropdown() {\r\n // this.showSendCountry = !this.showSendCountry;\r\n // }\r\n // selectSendCountry(countryCode: any) {\r\n // this.form.controls[\"sendCountry\"].setValue(countryCode);\r\n // this.showSendCountry = false;\r\n // }\r\n\r\n // getSelectedSendCountryDisplay(): string {\r\n // const country = this.form.controls[\"sendCountry\"].value;\r\n // if (country && this.params?.countries) {\r\n // return this.params.countries[this.params.countries.findIndex(c => c.countryCode == country)].country;\r\n // } else {\r\n // this.form.controls[\"sendCountry\"].setValue(\"All\");\r\n // return \"All\";\r\n // }\r\n // }\r\n\r\n //ReceiveCountry Dropdown\r\n // toggleReceiveCountry() {\r\n // this.showReceiveCountry = !this.showReceiveCountry;\r\n // }\r\n\r\n // selectReceiveCountry(countryCode: string) {\r\n // this.form.controls[\"receiveCountry\"].setValue(countryCode);\r\n // this.showReceiveCountry = false;\r\n // }\r\n\r\n // getSelectedReceiveCountryDisplay(): string {\r\n // const country = this.form.controls[\"receiveCountry\"].value;\r\n // if (country && this.params?.countries) {\r\n // return this.params.countries[this.params.countries.findIndex(c => c.countryCode == country)].country;\r\n // } else {\r\n // this.form.controls[\"receiveCountry\"].setValue(\"All\");\r\n // return \"All\";\r\n // }\r\n // }\r\n\r\n //Clients Dropdown\r\n // toggleClients() {\r\n // this.showClients = !this.showClients;\r\n // }\r\n\r\n selectClient(client: any) {\r\n this.form.controls[\"client\"].setValue(client);\r\n this.form.controls[\"branch\"].setValue(null);\r\n this.onAgentSelected(client);\r\n this.showClients = false;\r\n this.clientSelected = true;\r\n }\r\n\r\n // getSelectedClient(): string {\r\n // let client = this.form.controls[\"client\"].value;\r\n // // if (sessionStorage.getItem('fossilusername')) {\r\n\r\n // // } else {\r\n // // if(!client && this.clients){\r\n // // this.selectClient(this.clients[0].code);\r\n // // }\r\n // // }\r\n // if (client) {\r\n // return this.clients[this.clients.findIndex(c => c.code == client)].agent;\r\n // } else {\r\n // return \"Select Client\";\r\n // }\r\n // }\r\n\r\n //Branch Dropdown\r\n // toggleBranch() {\r\n // this.showBranch = !this.showBranch;\r\n // }\r\n\r\n // selectBranch(branchCode: any) {\r\n // this.form.controls[\"branch\"].setValue(branchCode);\r\n // this.showBranch = false;\r\n // }\r\n\r\n // getSelectedBranch(): string {\r\n // const branch = this.form.controls[\"branch\"].value;\r\n // if (branch && this.clientBranches) {\r\n // return this.clientBranches[this.clientBranches.findIndex(b => b.branchCode == branch)].businessPartnerBranch;\r\n // } else {\r\n // return \"Select Branch\";\r\n // }\r\n // }\r\n\r\n //Status Dropdown\r\n // toggleStatusDropdown() {\r\n // this.showStatusDropdown = !this.showStatusDropdown;\r\n // }\r\n\r\n // clearError() {\r\n // this.showError = false;\r\n // }\r\n // clearMessage() {\r\n // this.showMessage = false;\r\n // }\r\n\r\n // dateChange(type: string) {\r\n // if (type === \"fromDate\") {\r\n // this.disableToDate = true;\r\n // this.form.controls[\"fromDate\"].enable();\r\n // // this.form.controls[\"fromDate\"].setValue(this.formatDate(this.form.controls[\"fromDate\"].value));\r\n // }\r\n // if (type === \"toDate\") {\r\n // // this.form.controls[\"toDate\"].setValue(this.formatDate(this.form.controls[\"toDate\"].value));\r\n // }\r\n // }\r\n\r\n public formatDate(params: any): string {\r\n return formatDate(new Date(params.value), 'dd/MM/yyyy', 'en-US');\r\n }\r\n\r\n activateBranchPagination(branchIndex: number) {\r\n this.activeBranch = branchIndex;\r\n this.showRange = !this.showRange;\r\n }\r\n\r\n currencyFormatter(params: any): string {\r\n if (params.value == null || params.value === '') return '';\r\n const number = parseFloat(params.value);\r\n if (isNaN(number)) return params.value;\r\n return number.toLocaleString('en-US', {\r\n minimumFractionDigits: 3,\r\n maximumFractionDigits: 3\r\n });\r\n }\r\n\r\n //Date Picler\r\n // onDateChangeFromDate(event: Event) {\r\n // const input = event.target as HTMLInputElement;\r\n // const selectedDate = input.value;\r\n // this.form.controls[\"fromDate\"].setValue(formatDate(new Date(selectedDate), 'dd/MM/yyyy', 'en-US'));\r\n // }\r\n\r\n // onDateChangeToDate(event: Event) {\r\n // const input = event.target as HTMLInputElement;\r\n // const selectedDate = input.value;\r\n // this.form.controls[\"toDate\"].setValue(formatDate(new Date(selectedDate), 'dd/MM/yyyy', 'en-US'));\r\n // }\r\n\r\n // onEnterKey(event: Event) {\r\n // const keyboardEvent = event as KeyboardEvent;\r\n // keyboardEvent.preventDefault();\r\n\r\n // if (keyboardEvent.target instanceof HTMLElement) {\r\n // keyboardEvent.target.blur();\r\n // }\r\n // }\r\n\r\n // fromDateChange() {\r\n // const msPerDay = 1000 * 60 * 60 * 24;\r\n // const fd = this.form.controls[\"fromDate\"].value;\r\n // const td = this.form.controls[\"toDate\"].value;\r\n // const from = new Date(fd);\r\n // const to = new Date(td);\r\n // const differenceInDays = Math.floor((to?.getTime() - from?.getTime()) / (1000 * 60 * 60 * 24));\r\n // if (differenceInDays > 31) {\r\n // // Set toDate to fromDate + 31 days\r\n // const d = new Date(from.getTime() + 31 * msPerDay);\r\n // this.form.controls['toDate']?.patchValue(d);\r\n // }\r\n\r\n // }\r\n\r\n // toDateChange() {\r\n // const msPerDay = 1000 * 60 * 60 * 24;\r\n // const fd = this.form.controls[\"fromDate\"].value;\r\n // const td = this.form.controls[\"toDate\"].value;\r\n // const from = new Date(fd);\r\n // const to = new Date(td);\r\n // const differenceInDays = Math.floor((to?.getTime() - from?.getTime()) / (1000 * 60 * 60 * 24));\r\n // if (differenceInDays > 31) {\r\n // // Set toDate to fromDate + 31 days\r\n // const d = new Date(from.getTime() + 31 * msPerDay)\r\n // this.form.controls['fromDate']?.patchValue(d);\r\n // }\r\n // }\r\n\r\n private subscribeToDateChanges(): void {\r\n this.form.get('fromDate')?.valueChanges.subscribe(fromDateStr => {\r\n const toDateControl = this.form.get('toDate');\r\n const toDateStr = toDateControl?.value;\r\n if (!fromDateStr || !toDateStr) return;\r\n const fromDate = new Date(fromDateStr);\r\n const toDate = new Date(toDateStr);\r\n \r\n const maxToDate = new Date(fromDate);\r\n maxToDate?.setDate(fromDate.getDate() + 31);\r\n if (toDate > maxToDate) {\r\n toDateControl?.patchValue(maxToDate.toISOString().split(\"T\")[0]);\r\n }\r\n });\r\n \r\n this.form.get('toDate')?.valueChanges.subscribe(toDateStr => {\r\n const fromDateControl = this.form.get('fromDate');\r\n const fromDateStr = fromDateControl?.value;\r\n if (!toDateStr || !fromDateStr) return;\r\n const toDate = new Date(toDateStr);\r\n const fromDate = new Date(fromDateStr);\r\n \r\n const minFromDate = new Date(toDate);\r\n minFromDate?.setDate(toDate.getDate() - 31);\r\n if (fromDate < minFromDate) {\r\n fromDateControl?.patchValue(minFromDate.toISOString().split(\"T\")[0]);\r\n }\r\n });\r\n}\r\n\r\nprivate subscribeToClientChange(): void {\r\n this.form.get('client')?.valueChanges.subscribe(val => {\r\n if(val === null){\r\n this.form.controls['branch'].patchValue(null);\r\n }\r\n })\r\n}\r\n\r\n// searchClient(event:Event){\r\n// const target = event.target as HTMLInputElement;\r\n// let searchText = target.value.trim();\r\n// if(searchText.length==0){\r\n// this.clients = [...this.clientsData];\r\n// }\r\n// this.clients = this.clientsData.filter((client)=>{\r\n// client?.agent?.includes(searchText);\r\n// })\r\n// }\r\n\r\nonClientSelected(){\r\n this.form.get('client')?.valueChanges.subscribe((val)=>{\r\n val = this.form.get('client')?.value;\r\n this.onAgentSelected(val);\r\n })\r\n \r\n }\r\n\r\n}\r\n\r\n","<section>\r\n <div class=\"Breadcrumb\">\r\n <h1>Reports</h1>\r\n <span class=\"BreadCrumbArrow\"></span>\r\n <h2 class=\"BreadCrumbActive\">Branch Activity Send</h2>\r\n </div>\r\n</section>\r\n\r\n<section id=\"request-params\">\r\n <form [formGroup]=\"form\" (ngSubmit)=\"onSubmit()\">\r\n <table>\r\n <tbody>\r\n <tr>\r\n <td style=\"width: 36%;border-top: 0;\">\r\n <div class=\"row d-flex justify-content-center align-items-center row-cls\">\r\n <div class=\"col-2\">\r\n <label class=\"label-data\" for=\"client\">Client<span class=\"text-danger\">*</span></label>\r\n </div>\r\n <div class=\"col-10 inputbox\">\r\n <ng-container *ngIf=\"clients\">\r\n <ng-select [items]=\"clients\" bindLabel=\"agent\" bindValue=\"code\" formControlName=\"client\"\r\n placeholder=\"- Please select -\" required>\r\n <ng-template ng-option-tmp let-item=\"item\">\r\n <div title=\"{{ item.agent }}\" class=\"ng-option-text\">\r\n {{ item.agent }}\r\n </div>\r\n </ng-template>\r\n </ng-select>\r\n <!-- <ng-select placeholder=\"- Please select -\" formControlName=\"client\" required>\r\n <ng-option *ngFor=\"let client of clients\" [value]=\"client.code\">\r\n {{ client.agent }}\r\n </ng-option>\r\n </ng-select> -->\r\n </ng-container>\r\n </div>\r\n </div>\r\n </td>\r\n <td style=\"width: 28%;\">\r\n <div class=\"row d-flex justify-content-center align-items-center row-cls\">\r\n <div class=\" col-2\">\r\n <label class=\"label-data\">From<span class=\"text-danger\">*</span> Date</label>\r\n </div>\r\n <div class=\"col-10 inputbox\">\r\n <div class=\"input-group\">\r\n <input class=\"form-control dpicker\" placeholder=\"dd/mm/yyyy\" ngbDatepicker\r\n #fromDateInput=\"ngbDatepicker\" name=\"fromDate\" id=\"fromDate\" formControlName=\"fromDate\" />\r\n <div class=\"input-group-append\">\r\n <button class=\"input-group-button cal\" (click)=\"fromDateInput.toggle()\" type=\"button\">\r\n <i class=\"fa fa-calendar\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n <!-- <input id=\"fromdate\" class=\"form-control form-control-sm\" type=\"date\" formControlName=\"fromDate\"> -->\r\n </div>\r\n </div>\r\n </td>\r\n <td style=\"width: 28%;\">\r\n <div class=\"row d-flex justify-content-center align-items-center row-cls\">\r\n <div class=\"col-2\">\r\n <label class=\"label-data\">To<span class=\"text-danger\">*</span> Date</label>\r\n </div>\r\n <div class=\"col-10 inputbox\">\r\n <!-- <input id=\"todate\" class=\"form-control form-control-sm\" type=\"date\" formControlName=\"toDate\"> -->\r\n <div class=\"input-group\">\r\n <input class=\"form-control dpicker\" placeholder=\"dd/mm/yyyy\" ngbDatepicker\r\n #toDateInput=\"ngbDatepicker\" name=\"toDate\" id=\"toDate\" formControlName=\"toDate\" />\r\n <div class=\"input-group-append\">\r\n <button class=\"input-group-button cal\" (click)=\"toDateInput.toggle()\" type=\"button\">\r\n <i class=\"fa fa-calendar\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td style=\"width: 8%;\">\r\n <div class=\"d-flex justify-content-center\">\r\n <div class=\"btn-box\">\r\n <button class=\"btn btn-report\" (click)=\"onSubmit()\">View</button>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n <tr>\r\n <td>\r\n <div class=\"row d-flex justify-content-center align-items-center row-cls\">\r\n <div class=\"col-2 \">\r\n <label class=\"label-data\" for=\"branch\">Branch<span class=\"text-danger\">*</span></label>\r\n </div>\r\n <div class=\"col-10 inputbox\">\r\n <ng-container *ngIf=\"clientBranches\">\r\n <ng-select [items]=\"clientBranches\" bindLabel=\"businessPartnerBranch\" bindValue=\"branchCode\"\r\n formControlName=\"branch\" placeholder=\"- Please select -\" required>\r\n <ng-template ng-option-tmp let-item=\"item\">\r\n <div title=\"{{ item.businessPartnerBranch }}\" class=\"ng-option-text\">\r\n {{ item.businessPartnerBranch }}\r\n </div>\r\n </ng-template>\r\n </ng-select>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </td>\r\n <td>\r\n <div class=\"row d-flex justify-content-center align-items-center row-cls\">\r\n <div class=\"col-2 \">\r\n <label class=\"label-data\"> Send<span class=\"text-danger\">*</span> Country</label>\r\n </div>\r\n <div class=\"col-10 inputbox\">\r\n <ng-container *ngIf=\"params\">\r\n <ng-select [items]=\"params.countries\" bindLabel=\"country\" bindValue=\"countryCode\"\r\n formControlName=\"sendCountry\" placeholder=\"- Please select -\" required>\r\n <ng-template ng-option-tmp let-item=\"item\">\r\n <div title=\"{{ item.country }}\" class=\"ng-option-text\">\r\n {{ item.country }}\r\n </div>\r\n </ng-template>\r\n </ng-select>\r\n <!-- <ng-select placeholder=\"- Please select -\" formControlName=\"sendCountry\" required>\r\n <ng-option *ngFor=\"let country of params.countries\" [value]=\"country.countryCode\">\r\n {{ country.country }}\r\n </ng-option>\r\n </ng-select> -->\r\n </ng-container>\r\n </div>\r\n </div>\r\n </td>\r\n <td>\r\n <div class=\"row d-flex justify-content-center align-items-center row-cls\">\r\n <div class=\"col-2 \">\r\n <label class=\"label-data\" for=\"receiveCountry\"> Receive<span class=\"text-danger\">*</span>\r\n Country</label>\r\n </div>\r\n <div class=\"col-10 inputbox\">\r\n <ng-container *ngIf=\"params\">\r\n <ng-select [items]=\"params.countries\" bindLabel=\"country\" bindValue=\"countryCode\"\r\n formControlName=\"receiveCountry\" placeholder=\"- Please select -\" required>\r\n <ng-template ng-option-tmp let-item=\"item\">\r\n <div title=\"{{ item.country }}\" class=\"ng-option-text\">\r\n {{ item.country }}\r\n </div>\r\n </ng-template>\r\n </ng-select>\r\n <!-- <ng-select placeholder=\"- Please select -\" formControlName=\"receiveCountry\" required>\r\n <ng-option *ngFor=\"let country of params.countries\" [value]=\"country.countryCode\">\r\n {{ country.country }}\r\n </ng-option>\r\n </ng-select> -->\r\n </ng-container>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n <tr>\r\n <td>\r\n <div class=\"row d-flex justify-content-center align-items-center row-cls\">\r\n <div class=\"col-2 \">\r\n <label class=\"label-data\" for=\"transactionStatus\">Transaction Status <span\r\n class=\"text-danger\">*</span></label>\r\n </div>\r\n <div class=\"col-10 inputbox\">\r\n <ng-container *ngIf=\"params\">\r\n <ng-select [items]=\"params.transactionStatusTypes\" [multiple]=\"true\"\r\n formControlName=\"transactionStatus\" bindLabel=\"transactionStatus\" bindValue=\"transactionStatus\"\r\n placeholder=\"Select items\" [closeOnSelect]=\"false\">\r\n <ng-template ng-option-tmp let-item=\"item\" let-item$=\"item$\">\r\n <input type=\"checkbox\" [checked]=\"item$.selected\" /> {{ item.transactionStatus }}\r\n </ng-template>\r\n </ng-select>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </td>\r\n <td>\r\n <div class=\"row d-flex justify-content-center align-items-center row-cls\">\r\n <div class=\"col-2 \">\r\n <label class=\"label-data\" for=\"product\">Product<span class=\"text-danger\">*</span></label>\r\n </div>\r\n <div class=\"col-10 inputbox\">\r\n <div class=\"custom-dropdown-container\">\r\n <ng-container *ngIf=\"params\">\r\n <ng-select [items]=\"params.transactionProductTypes\" bindLabel=\"name\" bindValue=\"productCode\"\r\n formControlName=\"product\" placeholder=\"- Please select -\" required>\r\n <ng-template ng-option-tmp let-item=\"item\">\r\n <div title=\"{{ item.name }}\" class=\"ng-option-text\">\r\n {{ item.name }}\r\n </div>\r\n </ng-template>\r\n </ng-select>\r\n <!-- <ng-select placeholder=\"- Please select -\" formControlName=\"product\" required>\r\n <ng-option *ngFor=\"let product of params.transactionProductTypes\" [value]=\"product.productCode\">\r\n {{ product.name }}\r\n </ng-option>\r\n </ng-select> -->\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td>\r\n <div class=\"row d-flex justify-content-center align-items-center row-cls\">\r\n <div class=\"col-2 \">\r\n <label class=\"label-data\" for=\"receiveCurrency\">Receive<span class=\"text-danger\">*</span>\r\n Currency</label>\r\n </div>\r\n <div class=\"col-10 inputbox\">\r\n <ng-container *ngIf=\"params\">\r\n <ng-select [items]=\"params.currencies\" bindLabel=\"currency\" bindValue=\"currencyCode\"\r\n formControlName=\"receiveCurrency\" placeholder=\"- Please select -\" required>\r\n <ng-template ng-option-tmp let-item=\"item\">\r\n <div title=\"{{ item.currency }}\" class=\"ng-option-text\">\r\n {{ item.currency }}\r\n </div>\r\n </ng-template>\r\n </ng-select>\r\n <!-- <ng-select placeholder=\"- Please select -\" formControlName=\"receiveCurrency\" required>\r\n <ng-option *ngFor=\"let currency of params.currencies\" [value]=\"currency.currencyCode\">\r\n {{ currency.currency }}\r\n </ng-option>\r\n </ng-select> -->\r\n </ng-container>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </form>\r\n</section>\r\n\r\n\r\n\r\n<app-loader class=\"\" *ngIf=\"loadingState == ComponentLoadingState.Loading\"></app-loader>\r\n\r\n<div class=\"alert alert-danger mt-3 d-flex justify-content-between align-items-center\" *ngIf=\"showError\">\r\n <span>{{ errorMessage }}</span>\r\n</div>\r\n\r\n<section *ngIf=\"showReport\" class=\"my-2\">\r\n <div class=\"title mb-3\">\r\n Branch Activity Send\r\n </div>\r\n <div class=\"mb-2 flex-container\">\r\n <tbody>\r\n <tr>\r\n <td class=\"labl meta-td\">Report User:</td>\r\n <td class=\"px-3 meta-td\"><span class=\"info\">{{user}}</span></td>\r\n </tr>\r\n <tr>\r\n <td class=\"labl meta-td\">Report Time:</td>\r\n <td class=\"px-3 meta-td\"><span class=\"info\">{{ reportDate }}</span></td>\r\n </tr>\r\n </tbody>\r\n </div>\r\n\r\n <!-- Info Message -->\r\n <!-- <div class=\"alert alert-danger mt-3 d-flex justify-content-between align-items-center\"\r\n *ngIf=\"showMessage\">\r\n <span><strong>Message:</strong> {{ message }}</span>\r\n <button type=\"button\" class=\"btn-close\" (click)=\"clearMessage()\"></button>\r\n</div> -->\r\n\r\n <div class=\"added-functions\">\r\n <div class=\"searchBox\">\r\n <input type=\"text\" [(ngModel)]=\"searchText\" name=\"searchText\" class=\"search-input\" (ngModelChange)=\"onSearch()\"\r\n placeholder=\"Search...\" autocomplete=\"off\" />\r\n\r\n <button type=\"button\" class=\"btn btn-sm search-btn\" (click)=\"onSearch()\">\r\n <img src=\"assets/images/Search.svg\" alt=\"Search\" class=\"search-icon\" />\r\n </button>\r\n\r\n </div>\r\n <div class=\"export-options\">\r\n <ng-select placeholder=\"- Please select -\" class=\"export-selector\" [(ngModel)]=\"selectedExportOption\"\r\n [clearable]=\"false\" required>\r\n <ng-option *ngFor=\"let format of exportFormats\" [value]=\"format.code\">\r\n {{ format.formatName }}\r\n </ng-option>\r\n </ng-select>\r\n <!-- <select class=\"opt-cls\" [(ngModel)]=\"selectedExportOption\">\r\n <option value=\"excel\" selected>Excel</option>\r\n <option value=\"pdf\">PDF</option>\r\n <option value=\"csv\">CSV</option>\r\n </select> -->\r\n </div>\r\n <div>\r\n <button class=\"btn btn-report\" (click)=\"handleExport()\">Export</button>\r\n <!-- <div class=\"btn-box\">\r\n </div> -->\r\n </div>\r\n </div>\r\n\r\n <ngb-accordion #acc=\"ngbAccordion\" [closeOthers]=\"false\" [activeIds]=\"'panel-0'\">\r\n <ng-container *ngFor=\"let item of filteredData | keyvalue; let i = index\">\r\n <ngb-panel *ngIf=\"item.value.length > 0\" [id]=\"'panel-' + i\">\r\n\r\n <ng-template ngbPanelTitle style=\"height: 10%;\">\r\n <label\r\n style=\"font-weight: bold; font-size: 13px; line-height: 1.2; margin: 0; padding: 2px 0;color: #0c63e4;\">{{\r\n item.key\r\n }}</label>\r\n </ng-template>\r\n\r\n <ng-template ngbPanelContent>\r\n <ag-grid-angular class=\"ag-theme-alpine compact-grid myGrid\" style=\"width: 100%;height: 370px;\"\r\n [columnDefs]=\"columnDefs\" [defaultColDef]=\"defaultColDef\" [rowData]=\"item.value\" [rowHeight]=\"20\"\r\n [headerHeight]=\"22\" [gridOptions]=\"{\r\n suppressHorizontalScroll: true,\r\n scrollbarWidth: 0\r\n }\" [pagination]=\"true\" [paginationPageSize]=\"paginationArray[i]\" (gridReady)=\"onGridReady($event)\"\r\n (gridSizeChanged)=\"onGridSizeChanged($event)\">\r\n </ag-grid-angular>\r\n\r\n\r\n <div class=\"pgn\">\r\n <div style=\"position: absolute;\">\r\n <div class=\"pagination-mobile mb-2\">\r\n <div class=\"ngx-dropdown ngx-range-dropdown\" [class.ngx-active]=\"showRange && activeBranch == i\">\r\n <div class=\"ngx-btn-group\">\r\n <span *ngIf=\"ranges.indexOf(paginationArray[i]) != -1; else showAll\"\r\n class=\"ngx-btn ngx-range-dropdown-button\" (click)=\"activateBranchPagination(i)\">\r\n {{ paginationArray[i] }} &nbsp; &nbsp;<i class=\"ngx-icon ngx-icon-arrow-down\"></i>\r\n </span>\r\n <ng-template #showAll>\r\n <span class=\"ngx-btn ngx-range-dropdown-button\" (click)=\"activateBranchPagination(i)\">\r\n All &nbsp; &nbsp;<i class=\"ngx-icon ngx-icon-arrow-down\"></i>\r\n </span>\r\n </ng-template>\r\n <span class=\"pagination-label\">Entries per page</span>\r\n <ul class=\"ngx-menu\" *ngIf=\"showRange\">\r\n <li class=\"ngx-c-hand ngx-range-dropdown-button\" *ngFor=\"let limit of ranges\"\r\n (click)=\"changeLimit(limit,i,item.key)\">\r\n <span>{{ limit }}</span>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n\r\n </ngb-panel>\r\n </ng-container>\r\n </ngb-accordion>\r\n <div class=\"alert alert-warning mt-3\" *ngIf=\"noDataFound\">\r\n No Data Found\r\n </div>\r\n</section>","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { PageSizeSelectorComponent } from './page-size-selector/page-size-selector.component';\r\n\r\n@NgModule({\r\n declarations: [PageSizeSelectorComponent],\r\n imports: [CommonModule, FormsModule],\r\n exports: [PageSizeSelectorComponent]\r\n})\r\nexport class SharedModule { }\r\n","import { APP_INITIALIZER, NgModule } from '@angular/core';\r\nimport { AccGlDetailsEnquiryReportComponent } from './components/acc-gl-details-enquiry-report/acc-gl-details-enquiry-report.component';\r\nimport { AgGridModule } from 'ag-grid-angular';\r\nimport { ReportsLibRoutingModule } from './reports-lib-routing.module';\r\n\r\nimport { BrowserModule } from '@angular/platform-browser';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { BranchActivitySendReportComponent } from './components/branch-activity-send-report/branch-activity-send-report.component';\r\nimport { NgbModule } from '@ng-bootstrap/ng-bootstrap';\r\nimport { NgSelectModule } from '@ng-select/ng-select';\r\nimport { LoaderComponent } from './shared/loader/loader.component'\r\nimport { CommonModule } from '@angular/common';\r\nimport { RouterModule } from '@angular/router';\r\nimport { ConfigService } from '../lib/services/config.service';\r\nimport {NgbDatepickerModule } from '@ng-bootstrap/ng-bootstrap';\r\nimport { SharedModule } from './shared/shared.module';\r\nimport { TransactionEnquiryComponent } from './components/transaction-enquiry-report/transaction-enquiry-report.component';\r\nimport { SearchFilterComponent } from './shared/search-filter/search-filter.component';\r\nimport { ReportsLibComponent } from './reports-lib.component';\r\nexport function initializeApp(config: ConfigService) {\r\n const configFile ='/assets/config/app-config.json';\r\n\r\n return () => config.load(configFile).toPromise();\r\n}\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n ReportsLibComponent,\r\n AccGlDetailsEnquiryReportComponent,\r\n BranchActivitySendReportComponent,\r\n LoaderComponent,\r\n TransactionEnquiryComponent,\r\n LoaderComponent,\r\n SearchFilterComponent\r\n ],\r\n imports: [\r\n AgGridModule,\r\n ReportsLibRoutingModule,\r\n CommonModule,\r\n FormsModule,\r\n RouterModule,\r\n NgbDatepickerModule,\r\n SharedModule,\r\n BrowserModule,\r\n AgGridModule,\r\n ReportsLibRoutingModule,\r\n FormsModule,\r\n AgGridModule,\r\n NgbModule,\r\n ReactiveFormsModule,\r\n NgSelectModule,\r\n ReactiveFormsModule,\r\n NgbModule,\r\n NgSelectModule\r\n ],\r\n providers: [\r\n ConfigService,\r\n {\r\n provide: APP_INITIALIZER,\r\n useFactory: initializeApp,\r\n deps: [ConfigService],\r\n multi: true\r\n }\r\n ],\r\n exports: [\r\n ReportsLibComponent,\r\n AccGlDetailsEnquiryReportComponent,\r\n BranchActivitySendReportComponent,\r\n TransactionEnquiryComponent\r\n ]\r\n})\r\nexport class ReportsLibModule { }\r\n","export interface BranchActivityReportDictionay{\r\n \r\n}\r\n\r\nexport class BranchActivityReport {\r\n SendAgentBranchNameAndCode: string;\r\n BusinessDateTime: string;\r\n TransactionDateTime: string;\r\n TransactionNumber: string;\r\n Product: string;\r\n SendAgentBranchCode: string;\r\n SendPrincipalAgentCode: string;\r\n ReceiveAgentCode: string;\r\n PayoutCCcode: string;\r\n PayoutAmount?: number;\r\n PayinCCcode: string;\r\n PayinAmount?: number;\r\n TransactionCommissionAmount?: number;\r\n Tax?: number;\r\n TotalPayinAmount?: number;\r\n Status: string;\r\n}\r\n","/*\r\n * Public API Surface of reports-lib\r\n */\r\n\r\n// Services\r\nexport * from './lib/reports-lib.service';\r\nexport * from './lib/services/report.service';\r\nexport * from './lib/services/config.service'\r\nexport * from './lib/shared/export.service';\r\nexport * from './lib/shared/loader/loader.component'\r\n\r\n// Components\r\nexport * from './lib/reports-lib.component';\r\nexport * from './lib/reports-lib.module';\r\nexport * from './lib/services/config.service'\r\nexport * from './lib/components/acc-gl-details-enquiry-report/acc-gl-details-enquiry-report.component';\r\nexport * from './lib/components/transaction-enquiry-report/transaction-enquiry-report.component';\r\n\r\n// Models\r\nexport * from './lib/models/transaction-enquiry-report/transaction-enquiry.model';\r\nexport * from './lib/models/app-config.model';\r\n \r\nexport * from './lib/components/acc-gl-details-enquiry-report/acc-gl-details-enquiry-report.component';\r\nexport * from './lib/components/branch-activity-send-report/branch-activity-send-report.component';\r\n\r\n//Models\r\nexport * from './lib/models/branch-activity-report/branch-activity-send-report';\r\nexport * from './lib/models/branch-activity-report/branch-activity-send-report-request-domain-model';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2.ConfigService","i1","i1.ReportService","i3.ConfigService","i6","i8.LoaderComponent","i1.ExportService","i2.ReportService","i3","i4","i5","i7","i8.PageSizeSelectorComponent","i9","i10.SearchFilterComponent","i2.ExportService","i9.SearchFilterComponent","i7.LoaderComponent"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;MAKa,iBAAiB,CAAA;AAE5B,IAAA,WAAA,GAAA,GAAiB;;8GAFN,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAjB,iBAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,cAFhB,MAAM,EAAA,CAAA,CAAA;2FAEP,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAH7B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;MCKY,aAAa,CAAA;AAKtB,IAAA,WAAA,CAAoB,IAAgB,EAAA;QAAhB,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAY;KAAI;AAExC,IAAA,IAAI,CAAC,GAAW,EAAA;AACZ,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAS,KAAI;;AAE7C,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;;YAGnB,IAAI,CAAC,eAAe,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SAC3D,CAAC,CAAC,CAAC;KACP;AAED,IAAA,IAAI,GAAG,GAAA;QACH,OAAO,IAAI,CAAC,MAAM,CAAC;KACtB;AAED;;;;AAIG;AACH,IAAA,SAAS,CAAC,MAAkB,EAAA;;AAExB,QAAA,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;;QAG/C,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KAC1C;;0GAhCQ,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;8GAAb,aAAa,EAAA,CAAA,CAAA;2FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBADzB,UAAU;;;MCOE,aAAa,CAAA;;;IAMxB,WAAoB,CAAA,IAAgB,EAAU,MAAqB,EAAA;QAA/C,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAY;QAAU,IAAM,CAAA,MAAA,GAAN,MAAM,CAAe;AACjE,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE;AACpB,YAAA,MAAM,IAAI,KAAK,CAAC,0FAA0F,CAAC,CAAC;AAC7G,SAAA;QACD,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC;KAC1D;IAEM,qBAAqB,CAAC,aAAiC,EAAE,QAAgB,EAAA;QAC9E,MAAM,OAAO,GAAG,CAAA,EAAG,IAAI,CAAC,gBAAgB,CAAA,sEAAA,EAAyE,aAAa,CAAA,CAAA,EAAI,QAAQ,CAAA,CAAE,CAAC;QAC7I,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAiC,OAAO,CAAC,CAAC;KAC/D;IAED,gBAAgB,GAAA;AACd,QAAA,MAAM,OAAO,GAAG,CAAA,EAAG,IAAI,CAAC,gBAAgB,8CAA8C,CAAC;AACvF,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,IAAG;AAChD,YAAA,OAAc,QAAQ,CAAC;SACxB,CAAC,CAAC,CAAC;KACL;AAED,IAAA,cAAc,CAAC,SAAiB,EAAA;QAC9B,MAAM,OAAO,GAAG,CAAG,EAAA,IAAI,CAAC,gBAAgB,CAAA,iCAAA,EAAoC,SAAS,CAAA,CAAE,CAAC;AACxF,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,IAAG;AAChD,YAAA,OAAc,QAAQ,CAAC;SACxB,CAAC,CAAC,CAAC;KACL;IAED,gBAAgB,CAAC,SAAiB,EAAE,IAAY,EAAA;QAC9C,MAAM,OAAO,GAAG,CAAA,EAAG,IAAI,CAAC,gBAAgB,CAAA,gCAAA,EAAmC,IAAI,CAAA,CAAA,EAAI,SAAS,CAAA,GAAA,CAAK,CAAC;AAClG,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,IAAG;YAChD,KAAK,CAAC,CAAC,CAAC;AACN,gBAAA,GAAG,CAAC,QAAQ,IAAI,QAAQ,CAAC,CAAA;AAC3B,YAAA,OAAc,QAAQ,CAAC;SACxB,CAAC,CAAC,CAAC;KACL;IAED,SAAS,GAAA;AACP,QAAA,MAAM,OAAO,GAAG,CAAA,EAAG,IAAI,CAAC,gBAAgB,kDAAkD,CAAC;AAC3F,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,IAAG;YAChD,KAAK,CAAC,CAAC,CAAC;AACN,gBAAA,GAAG,CAAC,QAAQ,IAAI,QAAQ,CAAC,CAAA;AAC3B,YAAA,OAAc,QAAQ,CAAC;SACxB,CAAC,CAAC,CAAC;KACL;AAED,IAAA,uBAAuB,CAAC,IAAsD,EAAA;AAC5E,QAAA,MAAM,OAAO,GAAG,CAAA,EAAG,IAAI,CAAC,gBAAgB,4CAA4C,CAAC;AACrF,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,IAAG;AACvD,YAAA,OAA+C,QAAQ,CAAC;SACzD,CAAC,CAAC,CAAC;KACL;IAEM,6BAA6B,GAAA;QAClC,IAAI,cAAc,GAAG,cAAc,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;QAC9D,IAAI,eAAe,GAAG,cAAc,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAChE,QAAA,IAAI,cAAc,EAAE;YAClB,OAAO,cAAc,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;AACjD,SAAA;AAAM,aAAA;YACL,OAAO,eAAe,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;AAClD,SAAA;KACF;;;AAID,IAAA,eAAe,CAAC,SAAiB,EAAA;QAC/B,MAAM,GAAG,GAAG,CAAG,EAAA,IAAI,CAAC,gBAAgB,CAAA,+CAAA,EAAkD,SAAS,CAAA,CAAE,CAAC;QAClG,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAC5B,GAAG,CAAC,QAAQ,IAA0B,QAAQ,CAAC,CAChD,CAAC;KACH;;IAGD,kBAAkB,CAAC,SAAiB,EAAE,SAAiB,EAAA;QACrD,MAAM,GAAG,GAAG,CAAA,EAAG,IAAI,CAAC,gBAAgB,CAAA,2CAAA,EAA8C,SAAS,CAAA,CAAA,EAAI,SAAS,CAAA,CAAE,CAAC;QAC3G,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAC5B,GAAG,CAAC,QAAQ,IAAc,QAAQ,CAAC,CACpC,CAAC;KACH;;AAGD,IAAA,kBAAkB,CAAC,SAAiB,EAAA;QAClC,MAAM,GAAG,GAAG,CAAG,EAAA,IAAI,CAAC,gBAAgB,CAAA,2CAAA,EAA8C,SAAS,CAAA,CAAE,CAAC;QAC9F,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAC5B,GAAG,CAAC,QAAQ,IAAe,QAAQ,CAAC,CACrC,CAAC;KACH;;IAGD,gBAAgB,CAAC,mBAA2B,EAAE,UAAkB,EAAA;QAC9D,MAAM,GAAG,GAAG,CAAA,EAAG,IAAI,CAAC,gBAAgB,CAAA,wCAAA,EAA2C,mBAAmB,CAAA,CAAA,EAAI,UAAU,CAAA,CAAE,CAAC;QACnH,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAC5B,GAAG,CAAC,QAAQ,IAAY,QAAQ,CAAC,CAClC,CAAC;KACH;;AAGD,IAAA,kBAAkB,CAAC,OAAuB,EAAA;AACxC,QAAA,MAAM,GAAG,GAAG,CAAA,EAAG,IAAI,CAAC,gBAAgB,uDAAuD,CAAC;QAC5F,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,IAAI,CACtC,GAAG,CAAC,QAAQ,IAAuB,QAAQ,CAAC,CAC7C,CAAC;KACH;;0GA1GU,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAb,aAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,cAFZ,MAAM,EAAA,CAAA,CAAA;2FAEP,aAAa,EAAA,UAAA,EAAA,CAAA;kBAHzB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;MCCY,aAAa,CAAA;AAOxB,IAAA,WAAA,GAAA;QALgB,IAAW,CAAA,WAAA,GAAG,EAAE,CAAC;QAChB,IAAa,CAAA,aAAA,GAAG,CAAC,CAAC;QAClB,IAAa,CAAA,aAAA,GAAG,EAAE,CAAC;QAIlC,IAAI,CAAC,iBAAiB,CAAC,6CAA6C,CAAC,CAAC,IAAI,CAAC,MAAM,IAAG;AAClF,YAAA,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC;AAC3B,SAAC,CAAC,CAAC;KACJ;;AAGO,IAAA,iBAAiB,CAAC,SAAiB,EAAA;QAC3C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;AACrC,YAAA,MAAM,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC;AACxB,YAAA,GAAG,CAAC,WAAW,GAAG,WAAW,CAAC;AAC9B,YAAA,GAAG,CAAC,GAAG,GAAG,SAAS,CAAC;AAEpB,YAAA,GAAG,CAAC,MAAM,GAAG,MAAK;gBAChB,MAAM,KAAK,GAAG,CAAC,CAAC;gBAChB,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;gBAChD,MAAM,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC;gBACjC,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC;gBAEnC,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AACpC,gBAAA,IAAI,GAAG,EAAE;AACP,oBAAA,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;oBACxB,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACzB,oBAAA,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;oBAClD,OAAO,CAAC,MAAM,CAAC,CAAC;AACjB,iBAAA;AAAM,qBAAA;oBACL,MAAM,CAAC,+BAA+B,CAAC,CAAC;AACzC,iBAAA;AACH,aAAC,CAAC;AAEF,YAAA,GAAG,CAAC,OAAO,GAAG,MAAM,MAAM,CAAC,wBAAwB,GAAG,SAAS,CAAC,CAAC;AACnE,SAAC,CAAC,CAAC;KACJ;AAEC,IAAA,UAAU,CAAC,KAAU,EAAA;AACnB,QAAA,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;AAC7B,QAAA,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE;AAC/B,YAAA,CAAA,EAAG,IAAI,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAI,CAAA,EAAA,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAI,CAAA,EAAA,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;KAC9H;AAED,IAAA,cAAc,CAAC,IAAU,EAAA;AACzB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACvD,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAChE,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;;AAGhC,QAAA,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;AAC5B,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAC9D,QAAA,MAAM,IAAI,GAAG,KAAK,IAAI,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;AACvC,QAAA,KAAK,GAAG,KAAK,GAAG,EAAE,CAAC;AACnB,QAAA,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,EAAE,CAAC;AAC3B,QAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAEnD,QAAA,OAAO,CAAG,EAAA,GAAG,CAAI,CAAA,EAAA,KAAK,CAAI,CAAA,EAAA,IAAI,CAAI,CAAA,EAAA,QAAQ,CAAI,CAAA,EAAA,OAAO,CAAI,CAAA,EAAA,IAAI,EAAE,CAAC;KACjE;AAEC,IAAA,sBAAsB,CAAC,QAA4B,EAAA;QACnD,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC,CAAC;KAC7E;AAED,IAAA,kBAAkB,CAAC,IAAW,EAAE,UAAiB,EAAE,UAG/C,EAAE,EAAA;AACJ,QAAA,MAAM,EAAE,aAAa,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,cAAc,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC;AAEtF,QAAA,MAAM,eAAe,GAAG,UAAU,CAAC,MAAM,CAAC,GAAG,IAC3C,GAAG,CAAC,KAAK;AACT,YAAA,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,IAAI,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YAC/D,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,IAAI,GAAG,CAAC,UAAU,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CACtE,CAAC;QAEF,MAAM,OAAO,GAAG,CAAC,OAAO,EAAE,GAAG,eAAe,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;QAEtF,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,KAAI;YACnC,MAAM,OAAO,GAAG,eAAe,CAAC,GAAG,CAAC,GAAG,IAAG;gBACxC,IAAI,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBAC3B,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;;AAGjD,gBAAA,IACE,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC;AACzB,oBAAA,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC;AACpC,oBAAA,KAAK,EACL;AACA,oBAAA,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAChC,iBAAA;;AAGD,gBAAA,IAAI,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,IAAI,EAAE;oBACvD,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACtC,iBAAA;gBACD,OAAO,KAAK,IAAI,EAAE,CAAC;AACrB,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,KAAK,GAAG,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC;AACjC,SAAC,CAAC,CAAC;AACH,QAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;KAC1B;;IAGD,MAAM,oBAAoB,CAAC,KAAa,EAAE,QAA4B,EAAE,OAAiB,EAAE,IAAa,EAAE,QAAgB,EAAA;QACxH,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,EAAE,WAAW,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;AAEpF,QAAA,MAAM,SAAS,GAAG,IAAI,EAAE,UAAU,GAAG,IAAI,EAAE,KAAK,GAAG,EAAE,EAAE,KAAK,GAAG,EAAE,CAAC;QAClE,MAAM,SAAS,GAAG,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC;QAC9C,MAAM,MAAM,GAAG,EAAE,CAAC;QAElB,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,YAAA,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;AAC3E,SAAA;AAED,QAAA,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;AACpB,QAAA,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;AACjC,QAAA,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,GAAG,CAAC,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;AAE5D,QAAA,IAAI,QAAQ,GAAG,MAAM,GAAG,EAAE,CAAC;AAC3B,QAAA,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAClC,QAAA,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,KAAI;YACrC,MAAM,CAAC,GAAG,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC;AAC5C,YAAA,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;YACjC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;YACvC,MAAM,UAAU,GAAG,GAAG,CAAC,YAAY,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC;AACjD,YAAA,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;AACnC,YAAA,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,aAAa,GAAG,UAAU,EAAE,CAAC,CAAC,CAAC;AACtD,SAAC,CAAC,CAAC;QACH,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;QAErD,MAAM,YAAY,GAA2B,EAAE,CAAC;QAChD,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,YAAY,CAAC,CAAC,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC;QAEnE,GAAG,CAAC,SAAS,CAAC;YACZ,IAAI,EAAE,CAAC,OAAO,CAAC;AACf,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,MAAM,EAAE,QAAQ;AAChB,YAAA,KAAK,EAAE,MAAM;AACb,YAAA,UAAU,EAAE;gBACV,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,SAAS,EAAE,CAAC;gBACxC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,QAAQ;AACjD,aAAA;YACD,UAAU,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE;AAC7E,YAAA,MAAM,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,aAAa,EAAE,CAAC,EAAE;YACnE,YAAY;AACb,SAAA,CAAC,CAAC;AAEH,QAAA,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KACpB;;IAGD,sBAAsB,CAAC,KAAa,EAAE,QAA4B,EAAE,OAAiB,EAAE,IAAa,EAAE,QAAgB,EAAA;AACtH,QAAA,MAAM,QAAQ,GAAG,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACxC,MAAM,SAAS,GAAG,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAE/C,IAAI,UAAU,GAAG,CAAC,CAAC;;QAGnB,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,0BAA0B,EAAE,EAAE,CAAC,CAAC;AAC3E,YAAA,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC;AAChC,gBAAA,MAAM,EAAE,UAAU;AAClB,gBAAA,SAAS,EAAE,KAAK;AACjB,aAAA,CAAC,CAAC;;AAGH,YAAA,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE;gBAC1B,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE;gBACtB,GAAG,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE;AAC/B,gBAAA,MAAM,EAAE,SAAS;AAClB,aAAA,CAAC,CAAC;AACJ,SAAA;;QAGD,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAC9C,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC;AAClC,QAAA,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;AACpD,QAAA,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;AAE3E,QAAA,MAAM,aAAa,GAAG,MAAM,CAAC,YAAY,CAAC,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;QAC/D,SAAS,CAAC,UAAU,CAAC,CAAI,CAAA,EAAA,UAAU,CAAI,CAAA,EAAA,aAAa,CAAG,EAAA,UAAU,CAAE,CAAA,CAAC,CAAC;AACrE,QAAA,UAAU,IAAI,CAAC,CAAC;;QAGhB,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,KAAI;YAClC,MAAM,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;YAC3C,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAC5B,IAAI,CAAC,KAAK,GAAG;AACX,gBAAA,QAAQ,EAAE;AACR,oBAAA,EAAE,IAAI,EAAE,CAAG,EAAA,KAAK,CAAI,EAAA,CAAA,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;AAC5C,oBAAA,EAAE,IAAI,EAAE,KAAK,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;AAC7C,iBAAA;aACF,CAAC;YACF,SAAS,CAAC,UAAU,CAAC,CAAI,CAAA,EAAA,GAAG,CAAC,MAAM,CAAA,CAAA,EAAI,MAAM,CAAC,YAAY,CAAC,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA,EAAG,GAAG,CAAC,MAAM,CAAE,CAAA,CAAC,CAAC;AAClG,SAAC,CAAC,CAAC;AAEH,QAAA,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AACrB,QAAA,UAAU,EAAE,CAAC;;QAGb,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;QACjD,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC,KAAI;YAC5B,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACtC,YAAA,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC;YACpB,IAAI,CAAC,IAAI,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;YAC3B,IAAI,CAAC,IAAI,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC;AAC/E,YAAA,IAAI,CAAC,SAAS,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC;YAC9D,IAAI,CAAC,MAAM,GAAG;AACZ,gBAAA,GAAG,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;AACtB,gBAAA,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;AACzB,gBAAA,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;AACvB,gBAAA,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;aACzB,CAAC;AACJ,SAAC,CAAC,CAAC;QAEH,MAAM,YAAY,GAAG,UAAU,CAAC;AAChC,QAAA,IAAI,CAAC,OAAO,CAAC,OAAO,IAAG;YACrB,MAAM,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;YAC3C,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,KAAI;gBAC3B,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAChC,gBAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;gBACnB,IAAI,CAAC,MAAM,GAAG;AACZ,oBAAA,GAAG,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;AACtB,oBAAA,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;AACzB,oBAAA,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;AACvB,oBAAA,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;iBACzB,CAAC;AACJ,aAAC,CAAC,CAAC;AACL,SAAC,CAAC,CAAC;;AAGH,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACxC,IAAI,SAAS,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;AACtC,YAAA,KAAK,IAAI,MAAM,GAAG,YAAY,EAAE,MAAM,IAAI,SAAS,CAAC,OAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE;gBAC7E,MAAM,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;gBACxE,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;AAC7C,aAAA;YACD,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,SAAS,GAAG,CAAC,CAAC;AAC9C,SAAA;QAED,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,MAAM,IAAG;YACxC,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE;AAC9B,gBAAA,IAAI,EAAE,mEAAmE;AAC1E,aAAA,CAAC,CAAC;AACH,YAAA,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACnC,SAAC,CAAC,CAAC;KACJ;;IAIC,oBAAoB,CAAC,KAAa,EAAE,QAA4B,EAAE,OAAiB,EAAE,IAAa,EAAE,QAAgB,EAAA;QAClH,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAG,EAAA,CAAC,KAAK,CAAC,CAAA,CAAE,CAAC,CAAC,CAAC;AAC1D,QAAA,MAAM,UAAU,GAAG;AACjB,YAAA,CAAC,KAAK,CAAC;AACP,YAAA,GAAG,QAAQ;YACX,EAAE;YACF,OAAO;YACP,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,IAAI,KAAK,CAAA,CAAA,CAAG,CAAC,CAAC;AACnD,SAAA,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEnC,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;KACrD;AAEO,IAAA,YAAY,CAAC,IAAY,EAAE,QAAgB,EAAE,IAAY,EAAA;AAC/D,QAAA,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QACxC,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QACzC,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AACtC,QAAA,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;AACxC,QAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAChC,IAAI,CAAC,KAAK,EAAE,CAAC;AACb,QAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;KACjC;;0GAnRU,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAb,aAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,cAFZ,MAAM,EAAA,CAAA,CAAA;2FAEP,aAAa,EAAA,UAAA,EAAA,CAAA;kBAHzB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;MCNY,eAAe,CAAA;;4GAAf,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAf,eAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,kDCR5B,4QAOM,EAAA,MAAA,EAAA,CAAA,0zBAAA,CAAA,EAAA,CAAA,CAAA;2FDCO,eAAe,EAAA,UAAA,EAAA,CAAA;kBAN3B,SAAS;+BACI,YAAY,EAAA,QAAA,EAAA,4QAAA,EAAA,MAAA,EAAA,CAAA,0zBAAA,CAAA,EAAA,CAAA;;;MESb,mBAAmB,CAAA;AAE9B,IAAA,WAAA,GAAA,GAAiB;IAEjB,QAAQ,GAAA;KACP;;gHALU,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,mBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,EARpB,QAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;AAIT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;2FAIU,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAV/B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,EACjB,QAAA,EAAA,CAAA;;;;AAIT,EAAA,CAAA,EAAA,CAAA;;;MCDU,yBAAyB,CAAA;AALtC,IAAA,WAAA,GAAA;AAOW,QAAA,IAAA,CAAA,aAAa,GAAwB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;QAC3E,IAAW,CAAA,WAAA,GAAW,IAAI,CAAC;QAC3B,IAAY,CAAA,YAAA,GAAW,CAAC,CAAC;QAGlC,IAAsB,CAAA,sBAAA,GAAW,IAAI,CAAC;AAuBvC,KAAA;IArBC,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,WAAW,CAAC;AAC/C,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;KACtC;AAED,IAAA,iBAAiB,CAAC,KAAa,EAAA;AAC7B,QAAA,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC;AACpC,QAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;KAC3B;AAEO,IAAA,aAAa,CAAC,KAAa,EAAA;AACjC,QAAA,MAAM,IAAI,GAAG,KAAK,KAAK,KAAK,GAAG,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QACjE,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;AAC1C,SAAA;KACF;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;KAC1B;;sHA5BU,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAzB,yBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yBAAyB,wLCPtC,ubAMM,EAAA,MAAA,EAAA,CAAA,iy7NAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,0BAAA,EAAA,QAAA,EAAA,6GAAA,EAAA,MAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FDCO,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBALrC,SAAS;+BACE,wBAAwB,EAAA,QAAA,EAAA,ubAAA,EAAA,MAAA,EAAA,CAAA,iy7NAAA,CAAA,EAAA,CAAA;8BAMzB,aAAa,EAAA,CAAA;sBAArB,KAAK;gBACG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBACG,YAAY,EAAA,CAAA;sBAApB,KAAK;gBACG,OAAO,EAAA,CAAA;sBAAf,KAAK;;;AEZR;IAoJY,sBAIX;AAJD,CAAA,UAAY,qBAAqB,EAAA;AAC7B,IAAA,qBAAA,CAAA,qBAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,CAAA,GAAA,OAAU,CAAA;AACV,IAAA,qBAAA,CAAA,qBAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAW,CAAA;AACX,IAAA,qBAAA,CAAA,qBAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAY,CAAA;AAChB,CAAC,EAJW,qBAAqB,KAArB,qBAAqB,GAIhC,EAAA,CAAA,CAAA;;MCzIY,qBAAqB,CAAA;AAmDhC,IAAA,WAAA,CACU,aAA4B,EAC5B,EAAe,EACf,MAAqB,EAAA;QAFrB,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;QAC5B,IAAE,CAAA,EAAA,GAAF,EAAE,CAAa;QACf,IAAM,CAAA,MAAA,GAAN,MAAM,CAAe;AApDrB,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAO,CAAC;QAGlD,IAAmB,CAAA,mBAAA,GAAY,KAAK,CAAC;AAC7B,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,OAAO,EAAQ,CAAC;AAEvC,QAAA,IAAA,CAAA,YAAY,GAA0B,qBAAqB,CAAC,QAAQ,CAAC;QACrE,IAAqB,CAAA,qBAAA,GAAG,qBAAqB,CAAC;QAC9C,IAAW,CAAA,WAAA,GAAY,KAAK,CAAC;QACrB,IAAa,CAAA,aAAA,GAAW,EAAE,CAAC;QAEnC,IAAW,CAAA,WAAA,GAAW,EAAE,CAAC;QACzB,IAAe,CAAA,eAAA,GAAY,KAAK,CAAC;AACjC,QAAA,IAAA,CAAA,KAAK,GAAG,cAAc,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QAC/C,IAAe,CAAA,eAAA,GAAG,SAAS,CAAC;QAC5B,IAAW,CAAA,WAAA,GAAG,IAAI,CAAC;QAEnB,IAAkB,CAAA,kBAAA,GAA8B,IAAI,CAAC;QACrD,IAAmB,CAAA,mBAAA,GAA+B,IAAI,CAAC;QAEvD,IAAQ,CAAA,QAAA,GAAa,EAAE,CAAC;QACxB,IAAQ,CAAA,QAAA,GAAa,EAAE,CAAC;QACxB,IAAK,CAAA,KAAA,GAAW,EAAE,CAAC;QACnB,IAAU,CAAA,UAAA,GAAe,EAAE,CAAC;QAC5B,IAAQ,CAAA,QAAA,GAAc,EAAE,CAAC;QACzB,IAAmB,CAAA,mBAAA,GAAwB,EAAE,CAAC;QAC9C,IAAgB,CAAA,gBAAA,GAAa,EAAE,CAAC;QAChC,IAAkB,CAAA,kBAAA,GAAY,KAAK,CAAC;QACpC,IAAgB,CAAA,gBAAA,GAAa,EAAE,CAAC;QAChC,IAAQ,CAAA,QAAA,GAAQ,CAAC,CAAC;;AAIlB,QAAA,IAAA,CAAA,gBAAgB,GAAmC;AACjD,YAAA,qBAAqB,EAAE,CAAC,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,mBAAmB,EAAE,eAAe,CAAC;YACxI,WAAW,EAAE,CAAC,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,CAAC;YACpE,iBAAiB,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,CAAC;AAC7D,YAAA,wBAAwB,EAAE,CAAC,UAAU,EAAE,MAAM,CAAC;;SAE/C,CAAC;QAeA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC;QAC7C,IAAI,UAAU,GAAG,cAAc,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;QAC1D,IAAI,WAAW,GAAG,cAAc,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAE5D,QAAA,IAAI,UAAU;AAAE,YAAA,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;AACzC,aAAA,IAAI,WAAW;AAAE,YAAA,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;AAChD,aAAA;AACH,YAAA,IAAI,CAAC,WAAW,GAAG,+BAA+B,CAAC;AACnD,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;AAC7B,SAAA;KACF;AAvBD,IAAA,IAAI,aAAa,GAAA;QACf,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;KACrD;AAED,IAAA,cAAc,CAAC,KAAa,EAAA;QAC1B,OAAO,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;KAC3C;IAmBD,QAAQ,GAAA;QACN,IAAI,CAAC,WAAW,EAAE,CAAC;KACpB;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;AACrB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;KAC1B;IAEO,WAAW,GAAA;AACjB,QAAA,IAAI,IAAI,CAAC,UAAU,IAAI,qBAAqB,EAAE;AAC5C,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAEtD,IAAI,CAAC,cAAc,EAAE,CAAC;YACtB,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAC9B,IAAI,CAAC,eAAe,EAAE,CAAC;AACxB,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,UAAU,IAAI,wBAAwB,EAAE;YAC/C,IAAI,CAAC,cAAc,EAAE,CAAC;AACvB,SAAA;KACF;IAED,eAAe,GAAA;AACb,QAAA,IAAI,IAAI,CAAC,UAAU,IAAI,qBAAqB,EAAE;YAC5C,IAAI,CAAC,4BAA4B,EAAE,CAAC;AACrC,SAAA;KAGF;IAEO,cAAc,GAAA;AACpB,QAAA,IAAI,IAAI,CAAC,UAAU,IAAI,qBAAqB,EAAE;YAE5C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAC7B;AACE,gBAAA,MAAM,EAAE,CAAC,EAAE,EAAE,UAAU,CAAC,QAAQ,CAAC;gBACjC,QAAQ,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,QAAQ,CAAC;gBACvE,MAAM,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,QAAQ,CAAC;AACrE,gBAAA,MAAM,EAAE,CAAC,EAAE,EAAE,UAAU,CAAC,QAAQ,CAAC;gBACjC,MAAM,EAAE,CAAC,IAAI,CAAC;gBACd,QAAQ,EAAE,CAAC,KAAK,CAAC;AACjB,gBAAA,OAAO,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,QAAQ,CAAC;gBACrC,iBAAiB,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC,QAAQ,CAAC;gBACjD,aAAa,EAAE,CAAC,EAAE,CAAC;gBACnB,MAAM,EAAE,CAAC,EAAE,CAAC;gBACZ,MAAM,EAAE,CAAC,EAAE,CAAC;gBACZ,IAAI,EAAE,CAAC,EAAE,CAAC;gBACV,UAAU,EAAE,CAAC,EAAE,CAAC;gBAChB,eAAe,EAAE,CAAC,EAAE,CAAC;gBACrB,KAAK,EAAE,CAAC,EAAE,CAAC;gBACX,aAAa,EAAE,CAAC,EAAE,CAAC;gBACnB,UAAU,EAAE,CAAC,EAAE,CAAC;gBAChB,OAAO,EAAE,CAAC,EAAE,CAAC;AACd,aAAA,CACF,CAAC;AAEF,YAAA,IAAI,CAAC,gBAAgB,GAAG,CAAC,KAAK,CAAC,CAAC;AACjC,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,UAAU,IAAI,wBAAwB,EAAE;YAC/C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAC7B;gBACE,IAAI,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,QAAQ,CAAC;AACnE,gBAAA,QAAQ,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,QAAQ,CAAC;AACnC,aAAA,CAAC,CAAC;AACN,SAAA;KACF;AAEO,IAAA,MAAM,4BAA4B,GAAA;AACxC,QAAA,IAAI,CAAC,YAAY,GAAG,qBAAqB,CAAC,OAAO,CAAC;AAClD,QAAA,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;QACvB,IAAI;AACF,YAAA,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,aAAa;AAClC,iBAAA,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC;AACjC,iBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC9B,iBAAA,SAAS,EAAE,CAAC;AAEf,YAAA,IAAI,IAAI,EAAE;gBACR,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;gBACnC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC;gBACxC,IAAI,CAAC,mBAAmB,GAAG,CAAC,IAAI,CAAC,mBAAmB,IAAI,EAAE,EAAE,MAAM,CAChE,EAAE,IAAI,EAAE,CAAC,iBAAiB,KAAK,EAAE,CAClC,CAAC;AAEF,gBAAA,IACE,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAC5B,CAAC,IAAI,CAAC,CAAC,iBAAiB,KAAK,KAAK,CACnC,EACD;AACA,oBAAA,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC;AAC/B,wBAAA,iBAAiB,EAAE,KAAK;AACJ,qBAAA,CAAC,CAAC;AACzB,iBAAA;gBAED,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAE5B,gBAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;AAC9B,oBAAA,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;wBACzB,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,mBAAmB;AAC7C,qBAAA,CAAC,CAAC;AACH,oBAAA,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;AAC7B,iBAAA;AACF,aAAA;AAED,YAAA,IAAI,CAAC,YAAY,GAAG,qBAAqB,CAAC,QAAQ,CAAC;AACpD,SAAA;AAAC,QAAA,OAAO,KAAK,EAAE;AACd,YAAA,IAAI,CAAC,YAAY,GAAG,6BAA6B,CAAC;AAClD,YAAA,IAAI,CAAC,YAAY,GAAG,qBAAqB,CAAC,KAAK,CAAC;AACjD,SAAA;KACF;IAGO,sBAAsB,GAAA;AAC5B,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,YAAY,CAAC,SAAS,CAAC,WAAW,IAAG;YACpE,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AACpD,YAAA,MAAM,SAAS,GAAG,aAAa,EAAE,KAAK,CAAC;AACvC,YAAA,IAAI,CAAC,WAAW,IAAI,CAAC,SAAS;gBAAE,OAAO;AACvC,YAAA,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC;AACvC,YAAA,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC;AAEnC,YAAA,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC;YACrC,SAAS,EAAE,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;YAC5C,IAAI,MAAM,GAAG,SAAS,EAAE;AACtB,gBAAA,aAAa,EAAE,UAAU,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAClE,aAAA;AACH,SAAC,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,YAAY,CAAC,SAAS,CAAC,SAAS,IAAG;YAChE,MAAM,eAAe,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AACxD,YAAA,MAAM,WAAW,GAAG,eAAe,EAAE,KAAK,CAAC;AAC3C,YAAA,IAAI,CAAC,SAAS,IAAI,CAAC,WAAW;gBAAE,OAAO;AACvC,YAAA,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC;AACnC,YAAA,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC;AAEvC,YAAA,MAAM,WAAW,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC;YACrC,WAAW,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;YAC5C,IAAI,QAAQ,GAAG,WAAW,EAAE;AAC1B,gBAAA,eAAe,EAAE,UAAU,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtE,aAAA;AACH,SAAC,CAAC,CAAC;KACJ;IAGO,oBAAoB,GAAA;QAC1B,IAAI,IAAI,CAAC,kBAAkB,EAAE;AAC3B,YAAA,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;AACzB,gBAAA,QAAQ,EAAE,IAAI,CAAC,kBAAkB,CAAC,aAAa,IAAI,KAAK;AACzD,aAAA,CAAC,CAAC;AACJ,SAAA;KACF;AAGD,IAAA,MAAM,cAAc,GAAA;AAClB,QAAA,IAAI,CAAC,YAAY,GAAG,qBAAqB,CAAC,OAAO,CAAC;AAClD,QAAA,IAAI,IAAI,CAAC,UAAU,IAAI,qBAAqB,EAAE;AAC5C,YAAA,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC;AAC5D,YAAA,IAAI,CAAC,cAAc;gBAAE,OAAO;AAE5B,YAAA,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;AACvD,YAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;AACnB,YAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;AACnB,YAAA,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;YAEhB,IAAI;gBACF,MAAM,OAAO,CAAC,GAAG,CAAC;AAChB,oBAAA,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC;AACxC,oBAAA,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC;AACzC,iBAAA,CAAC,CAAC;AACH,gBAAA,IAAI,CAAC,YAAY,GAAG,qBAAqB,CAAC,QAAQ,CAAC;AACpD,aAAA;AAAC,YAAA,OAAO,GAAG,EAAE;AACZ,gBAAA,IAAI,CAAC,YAAY,GAAG,+BAA+B,CAAC;AACpD,gBAAA,IAAI,CAAC,YAAY,GAAG,qBAAqB,CAAC,QAAQ,CAAC;AACpD,aAAA;AACF,SAAA;KACF;IAEO,MAAM,mBAAmB,CAAC,SAAiB,EAAA;AACjD,QAAA,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa;AACtC,aAAA,kBAAkB,CAAC,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC;AAC/C,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC9B,aAAA,SAAS,EAAE,CAAC;AACf,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,IAAI,EAAE,CAAC;AAE/B,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;AAC9B,YAAA,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC;AACpE,YAAA,MAAM,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;AACtE,SAAA;AAAM,aAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,KAAK,KAAK,CAAC,EAAE;YAC1D,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;YAC9C,MAAM,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;AAChD,SAAA;AAAM,aAAA;YACL,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;AAC3C,YAAA,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;AACjB,SAAA;KACF;IAEO,MAAM,mBAAmB,CAAC,SAAiB,EAAA;AACjD,QAAA,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa;aACtC,kBAAkB,CAAC,SAAS,CAAC;AAC7B,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC9B,aAAA,SAAS,EAAE,CAAC;AACf,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,IAAI,EAAE,CAAC;KAChC;AAED,IAAA,MAAM,cAAc,GAAA;AAClB,QAAA,IAAI,CAAC,YAAY,GAAG,qBAAqB,CAAC,OAAO,CAAC;AAClD,QAAA,IAAI,IAAI,CAAC,UAAU,IAAI,qBAAqB,EAAE;AAC5C,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC;AACpD,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC;YACpD,IAAI,MAAM,IAAI,MAAM,EAAE;gBACpB,MAAM,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAC7C,gBAAA,IAAI,CAAC,YAAY,GAAG,qBAAqB,CAAC,QAAQ,CAAC;AACpD,aAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;AAChB,gBAAA,IAAI,CAAC,YAAY,GAAG,qBAAqB,CAAC,QAAQ,CAAC;AACpD,aAAA;AACF,SAAA;KACF;AAEO,IAAA,MAAM,iBAAiB,CAAC,SAAiB,EAAE,UAAkB,EAAA;QACnE,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,KAAI;AAC3C,YAAA,IAAI,CAAC,aAAa;AACf,iBAAA,gBAAgB,CAAC,SAAS,EAAE,UAAU,CAAC;AACvC,iBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC9B,iBAAA,SAAS,CAAC;AACT,gBAAA,IAAI,EAAE,CAAC,KAAK,KAAI;AACd,oBAAA,IAAI,CAAC,KAAK,GAAG,KAAK,IAAI,EAAE,CAAC;;oBAGzB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAC7B,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAK,KAAK,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAC7C,CAAC;AAEF,oBAAA,IAAI,OAAO,EAAE;;AAEX,wBAAA,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;AACxD,qBAAA;AAAM,yBAAA,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;;AAElC,wBAAA,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;AAC9D,qBAAA;AAAM,yBAAA;;wBAEL,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;AAC5C,qBAAA;AAED,oBAAA,OAAO,EAAE,CAAC;iBACX;gBACD,KAAK,EAAE,CAAC,GAAG,KAAK,MAAM,CAAC,GAAG,CAAC;AAC5B,aAAA,CAAC,CAAC;AACP,SAAC,CAAC,CAAC;KACJ;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,UAAU,IAAI,qBAAqB,EAAE;AAC5C,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACxB,YAAA,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE;AAC3B,gBAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;AAChC,gBAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAC3C,OAAO;AACR,aAAA;AACD,YAAA,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;YACjC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC;AACrD,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,UAAU,IAAI,wBAAwB,EAAE;AAC/C,YAAA,MAAM,KAAK,GAAG;gBACZ,gBAAgB,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,KAAK;gBAC7D,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,KAAK;aACtD,CAAA;AACD,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAChC,SAAA;KACF;AAEO,IAAA,oBAAoB,CAAC,SAAgC,EAAA;AAC3D,QAAA,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,OAAO,IAAG;AAClD,YAAA,IAAI,OAAO,YAAY,SAAS,IAAI,OAAO,YAAY,SAAS,EAAE;AAChE,gBAAA,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;AACpC,aAAA;AAAM,iBAAA;gBACL,OAAO,CAAC,aAAa,EAAE,CAAC;AACzB,aAAA;AACH,SAAC,CAAC,CAAC;KACJ;IAEO,mBAAmB,GAAA;AACzB,QAAA,IAAI,IAAI,CAAC,UAAU,IAAI,qBAAqB,EAAE;AAC5C,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;YACxC,OAAO;gBACL,IAAI,EAAE,SAAS,CAAC,MAAM;gBACtB,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,QAAQ,CAAC;gBAC9C,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM,CAAC;gBAC1C,MAAM,EAAE,SAAS,CAAC,MAAM;AACxB,gBAAA,IAAI,EAAE,SAAS,CAAC,MAAM,IAAI,IAAI;gBAC9B,QAAQ,EAAE,SAAS,CAAC,QAAQ;gBAC5B,OAAO,EAAE,SAAS,CAAC,OAAO;gBAC1B,MAAM,EAAE,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,gBAAgB;gBAC5E,aAAa,EAAE,CAAC,SAAS,CAAC,aAAa,IAAI,EAAE,EAAE,IAAI,EAAE;AACrD,gBAAA,MAAM,EAAE,SAAS,CAAC,MAAM,IAAI,EAAE;AAC9B,gBAAA,MAAM,EAAE,SAAS,CAAC,MAAM,IAAI,EAAE;AAC9B,gBAAA,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI,EAAE;AAC1B,gBAAA,UAAU,EAAE,SAAS,CAAC,UAAU,IAAI,EAAE;AACtC,gBAAA,eAAe,EAAE,SAAS,CAAC,eAAe,IAAI,EAAE;AAChD,gBAAA,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,EAAE;AAC5B,gBAAA,YAAY,EAAE,SAAS,CAAC,aAAa,IAAI,EAAE;AAC3C,gBAAA,UAAU,EAAE,SAAS,CAAC,UAAU,IAAI,EAAE;AACtC,gBAAA,OAAO,EAAE,IAAI,CAAC,WAAW,IAAI,EAAE;AAC/B,gBAAA,OAAO,EAAE,SAAS,CAAC,OAAO,IAAI,EAAE;gBAChC,SAAS,EAAE,IAAI,CAAC,WAAW;aAC5B,CAAC;AACH,SAAA;KACF;AAED,IAAA,WAAW,CAAC,SAAc,EAAA;AACxB,QAAA,IAAI,CAAC,SAAS;AAAE,YAAA,OAAO,SAAS,CAAC;;QAGjC,IACE,OAAO,SAAS,KAAK,QAAQ;AAC7B,YAAA,SAAS,CAAC,IAAI;AACd,YAAA,SAAS,CAAC,KAAK;YACf,SAAS,CAAC,GAAG,EACb;AACA,YAAA,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC;AAC5B,YAAA,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AACvD,YAAA,MAAM,GAAG,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AACnD,YAAA,OAAO,GAAG,IAAI,CAAA,CAAA,EAAI,KAAK,CAAI,CAAA,EAAA,GAAG,EAAE,CAAC;AAClC,SAAA;;QAGD,IAAI,SAAS,YAAY,IAAI,EAAE;AAC7B,YAAA,IAAI,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;AAAE,gBAAA,OAAO,SAAS,CAAC;AACjD,YAAA,MAAM,IAAI,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC;AACrC,YAAA,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAChE,YAAA,MAAM,GAAG,GAAG,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AACzD,YAAA,OAAO,GAAG,IAAI,CAAA,CAAA,EAAI,KAAK,CAAI,CAAA,EAAA,GAAG,EAAE,CAAC;AAClC,SAAA;;QAGD,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YAC5D,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACnC,YAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;gBACtB,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC;gBACjC,OAAO,CAAA,EAAG,IAAI,CAAI,CAAA,EAAA,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAI,CAAA,EAAA,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA,CAAE,CAAC;AACpE,aAAA;AACF,SAAA;;QAGD,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;;YAEzE,OAAO,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACnC,SAAA;AAED,QAAA,OAAO,SAAS,CAAC;KAClB;AAGD,IAAA,IAAI,YAAY,GAAA;QACd,OAAO,IAAI,CAAC,aAAa,CAAC;KAC3B;IAED,IAAI,YAAY,CAAC,KAAa,EAAA;AAC5B,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;KAC5B;AAED,IAAA,IAAI,SAAS,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,YAAY,KAAK,qBAAqB,CAAC,OAAO,CAAC;KAC5D;AAED,IAAA,IAAI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,YAAY,KAAK,qBAAqB,CAAC,KAAK,CAAC;KAC1D;;kHApbU,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,aAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,qBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,4ICflC,myYAuPM,EAAA,MAAA,EAAA,CAAA,+4EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,gCAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wIAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,SAAA,EAAA,SAAA,EAAA,YAAA,EAAA,aAAA,EAAA,WAAA,EAAA,eAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,UAAA,EAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,EAAA,WAAA,EAAA,aAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,aAAA,EAAA,cAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,SAAA,EAAA,eAAA,EAAA,cAAA,EAAA,aAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,SAAA,EAAA,YAAA,EAAA,cAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,wBAAA,EAAA,UAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,YAAA,EAAA,UAAA,EAAA,UAAA,EAAA,sBAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,WAAA,EAAA,UAAA,EAAA,QAAA,EAAA,YAAA,EAAA,WAAA,EAAA,QAAA,EAAA,OAAA,EAAA,aAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,QAAA,EAAA,MAAA,EAAA,OAAA,EAAA,QAAA,EAAA,OAAA,EAAA,KAAA,EAAA,QAAA,EAAA,QAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,eAAA,EAAA,QAAA,EAAA,YAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FDxOO,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBANjC,SAAS;+BACE,mBAAmB,EAAA,QAAA,EAAA,myYAAA,EAAA,MAAA,EAAA,CAAA,+4EAAA,CAAA,EAAA,CAAA;oJAMpB,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBACI,aAAa,EAAA,CAAA;sBAAtB,MAAM;;;MEKI,kCAAkC,CAAA;AAkD7C,IAAA,WAAA,CAAoB,aAA4B,EAAU,aAA4B,EAAU,IAAgB,EAAU,SAAuB,EAAA;QAA7H,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;QAAU,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;QAAU,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAY;QAAU,IAAS,CAAA,SAAA,GAAT,SAAS,CAAc;QA/CjJ,IAAU,CAAA,UAAA,GAAW,EAAE,CAAC;QAGxB,IAAoB,CAAA,oBAAA,GAAW,OAAO,CAAC;QACvC,IAAS,CAAA,SAAA,GAAa,EAAE,CAAC;QACzB,IAAO,CAAA,OAAA,GAAY,KAAK,CAAC;QACzB,IAAS,CAAA,SAAA,GAAY,KAAK,CAAC;QAC3B,IAAc,CAAA,cAAA,GAAW,CAAC,CAAC;QAS3B,IAAO,CAAA,OAAA,GAAG,EAAE,CAAC;QAEb,IAAQ,CAAA,QAAA,GAAW,EAAE,CAAC;QACtB,IAAU,CAAA,UAAA,GAAG,wBAAwB,CAAC;AACtC,QAAA,IAAA,CAAA,aAAa,GAAG,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAA;AAGhI,QAAA,IAAA,CAAA,aAAa,GAAW;AACtB,YAAA,SAAS,EAAE,IAAI;AACf,YAAA,QAAQ,EAAE,KAAK;AACf,YAAA,QAAQ,EAAE,EAAE;AACZ,YAAA,iBAAiB,EAAE,KAAK;SACzB,CAAC;AAEF,QAAA,IAAA,CAAA,UAAU,GAAa;YACrB,EAAE,UAAU,EAAE,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,gCAAgC,EAAE,QAAQ,EAAE,EAAE,EAAE,YAAY,EAAE,WAAW,EAAE;YACjJ,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,4CAA4C,EAAE,QAAQ,EAAE,EAAE,EAAE,YAAY,EAAE,eAAe,EAAE;YACnK,EAAE,UAAU,EAAE,YAAY,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,gCAAgC,EAAE,QAAQ,EAAE,EAAE,EAAE,YAAY,EAAE,iBAAiB,EAAE;YAC7J,EAAE,UAAU,EAAE,cAAc,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,gCAAgC,EAAE,QAAQ,EAAE,EAAE,EAAE,YAAY,EAAE,aAAa,EAAE;AACvJ,YAAA,EAAE,UAAU,EAAE,cAAc,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,GAAG,EAAE,cAAc,EAAE,IAAI,CAAC,UAAU,EAAE,SAAS,EAAE,gCAAgC,EAAE,QAAQ,EAAE,EAAE,EAAE,kBAAkB,EAAE,CAAC,MAAM,KAAK,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;AACpN,YAAA,EAAE,UAAU,EAAE,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,EAAE,cAAc,EAAE,IAAI,CAAC,UAAU,EAAE,SAAS,EAAE,gCAAgC,EAAE,QAAQ,EAAE,EAAE,EAAE,kBAAkB,EAAE,CAAC,MAAM,KAAK,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG;AACjN,YAAA,EAAE,UAAU,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,kBAAkB,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,EAAE,YAAY,EAAE,aAAa,EAAE;YAChN,EAAE,UAAU,EAAE,cAAc,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,gCAAgC,EAAE,QAAQ,EAAE,EAAE,EAAE,YAAY,EAAE,aAAa,EAAE;YACvJ,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,mBAAmB,EAAE,QAAQ,EAAE,EAAE,EAAE,YAAY,EAAE,UAAU,EAAE;AAC3H,YAAA,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,cAAc,EAAE,IAAI,CAAC,YAAY,EAAE,SAAS,EAAE,oCAAoC,EAAE,QAAQ,EAAE,EAAE,EAAE,kBAAkB,EAAE,CAAC,MAAM,KAAK,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG;AAC9M,YAAA,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,EAAE,cAAc,EAAE,IAAI,CAAC,YAAY,EAAE,SAAS,EAAE,oCAAoC,EAAE,QAAQ,EAAE,EAAE,EAAE,kBAAkB,EAAE,CAAC,MAAM,KAAK,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG;AACrN,YAAA,EAAE,UAAU,EAAE,aAAa,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,EAAE,cAAc,EAAE,IAAI,CAAC,YAAY,EAAE,SAAS,EAAE,oCAAoC,EAAE,QAAQ,EAAE,EAAE,EAAE,kBAAkB,EAAE,CAAC,MAAM,KAAK,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG;AACzN,YAAA,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE,cAAc,EAAE,IAAI,CAAC,YAAY,EAAE,SAAS,EAAE,oCAAoC,EAAE,QAAQ,EAAE,EAAE,EAAE,kBAAkB,EAAE,CAAC,MAAM,KAAK,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG;AACvN,YAAA,EAAE,UAAU,EAAE,cAAc,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE,cAAc,EAAE,IAAI,CAAC,YAAY,EAAE,SAAS,EAAE,oCAAoC,EAAE,QAAQ,EAAE,EAAE,EAAE,kBAAkB,EAAE,CAAC,MAAM,KAAK,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG;SAC5N,CAAC;KAEoJ;IAEtJ,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,0DAA0D,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,IAAG;YAClH,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC;AAC/D,SAAC,CAAC,CAAA;AACF,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;KACpD;IAEM,qBAAqB,GAAA;AAC1B,QAAA,IAAI,CAAC,8BAA8B,GAAG,SAAS,CAAC;AAChD,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACpB,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AACvB,QAAA,IAAI,CAAC,oBAAoB,GAAG,OAAO,CAAC;AACpC,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC3B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,6BAA6B,EAAE,CAAC;AACpE,QAAA,IAAI,CAAC,WAAW,GAAG,cAAc,CAAC;AAClC,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;AAErB,QAAA,IAAI,IAAI,CAAC,cAAc,IAAI,CAAC,EAAE;AAC5B,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AACtB,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AACtB,SAAA;QAED,IAAI,CAAC,aAAa,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC;aAC7E,SAAS,CAAC,IAAI,IAAG;AAChB,YAAA,IAAI,CAAC,8BAA8B,GAAG,IAAI,CAAC;YAC3C,IAAI,IAAI,CAAC,8BAA8B,EAAE;gBAEvC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,8BAA8B,CAAC,qBAAqB,CAAC;gBACzE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,8BAA8B,CAAC,WAAW,CAAC;AACnE,gBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,8BAA8B,CAAC,UAAU,CAAC;AAChE,gBAAA,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;AACzC,gBAAA,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,IAAI,IAAI,EAAE,EAAE,oBAAoB,EAAE,OAAO,CAAC,CAAC;AACxE,gBAAA,IAAI,CAAC,4BAA4B,GAAG,UAAU,CAAC,IAAI,CAAC,8BAA8B,CAAC,IAAI,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;AAChH,gBAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AACrB,gBAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AAEvB,aAAA;SACF,EAAE,KAAK,IAAG;AACT,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AACvB,SAAC,CAAC,CAAC;KACN;AAEM,IAAA,UAAU,CAAC,MAAW,EAAA;AAC3B,QAAA,OAAO,UAAU,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;KAClE;;;;;;;;;;;;;;;;;AAoBD,IAAA,WAAW,CAAC,MAAsB,EAAA;AAChC,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC;AAC1B,QAAA,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,SAAS,CAAC;KACvC;AAED,IAAA,YAAY,CAAC,MAAW,EAAA;QACtB,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,EAAE,WAAW,IAAI,EAAE,CAAC;AACnD,QAAA,IAAI,WAAW,CAAC,MAAM,GAAG,EAAE,EAAE;AAC3B,YAAA,OAAO,EAAE,CAAC;AACX,SAAA;AACD,QAAA,OAAO,EAAE,CAAC;KACX;AAED,IAAA,YAAY,CAAC,MAAW,EAAA;AACtB,QAAA,IAAI,MAAM,CAAC,KAAK,IAAI,IAAI;AAAE,YAAA,OAAO,EAAE,CAAC;AAEpC,QAAA,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;QAElC,IAAI,KAAK,KAAK,MAAM,EAAE;YACpB,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACxC,SAAA;QAED,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;KACxC;IAED,QAAQ,GAAA;QACN,MAAM,SAAS,GAAG,CAAC,GAAQ,KACzB,GAAG,EAAE,QAAQ,EAAE;AACZ,aAAA,WAAW,EAAE;AACb,aAAA,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;AACjB,aAAA,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;AACpB,aAAA,OAAO,CAAC,wBAAwB,EAAE,EAAE,CAAC;AACrC,aAAA,IAAI,EAAE,CAAC;QAEZ,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAE1C,QAAA,IAAI,MAAM,EAAE;AACV,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,8BAA8B,CAAC,qBAAqB,CAAC,MAAM,CAAC,IAAI,IAClF,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,IAC5B,SAAS,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAClC,CACF,CAAC;AACH,SAAA;AAAM,aAAA;YACL,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,8BAA8B,CAAC,qBAAqB,CAAC;AAC1E,SAAA;KACF;IAED,YAAY,GAAA;QACV,QAAQ,IAAI,CAAC,oBAAoB;AAC/B,YAAA,KAAK,OAAO;gBACV,IAAI,CAAC,aAAa,EAAE,CAAC;gBACrB,MAAM;AACR,YAAA,KAAK,KAAK;gBACR,IAAI,CAAC,WAAW,EAAE,CAAC;gBACnB,MAAM;AACR,YAAA,KAAK,KAAK;gBACR,IAAI,CAAC,WAAW,EAAE,CAAC;gBACnB,MAAM;AACR,YAAA;gBACE,KAAK,CAAC,iCAAiC,CAAC,CAAC;AAC5C,SAAA;KACF;AAED,IAAA,MAAM,WAAW,GAAA;AACf,QAAA,IAAI,CAAC,IAAI,CAAC,8BAA8B,CAAC,qBAAqB,EAAE,MAAM;YAAE,OAAO;AAE/E,QAAA,MAAM,KAAK,GAAG,CAAA,EAAG,IAAI,CAAC,WAAW,2CAA2C,CAAC;AAC7E,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,sBAAsB,CAAC;AACzD,YAAA,CAAC,gBAAgB,EAAE,IAAI,CAAC,UAAU,CAAC;AACnC,YAAA,CAAC,gBAAgB,EAAE,IAAI,CAAC,UAAU,CAAC;YACnC,CAAC,iBAAiB,EAAE,KAAK,CAAC;AAC1B,YAAA,CAAC,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,GAAG,YAAY,GAAG,cAAc,CAAA,CAAA,CAAG,EAAE,IAAI,CAAC,4BAA4B,CAAC;AAEjG,SAAA,CAAC,CAAC;QAEH,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,8BAA8B,CAAC,qBAAqB,EAAE,IAAI,CAAC,UAAU,EAAE;YAC1I,cAAc,EAAE,CAAC,aAAa,EAAE,aAAa,EAAE,YAAY,EAAE,YAAY,CAAC;AAC3E,SAAA,CAAC,CAAC;AAEH,QAAA,MAAM,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,mCAAmC,CAAC,CAAC;KACpH;IAED,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,IAAI,CAAC,8BAA8B,CAAC,qBAAqB,EAAE,MAAM;YAAE,OAAO;AAE/E,QAAA,MAAM,KAAK,GAAG,CAAA,EAAG,IAAI,CAAC,WAAW,2CAA2C,CAAC;AAC7E,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,sBAAsB,CAAC;AACzD,YAAA,CAAC,aAAa,EAAE,IAAI,CAAC,UAAU,CAAC;AAChC,YAAA,CAAC,aAAa,EAAE,IAAI,CAAC,UAAU,CAAC;YAChC,CAAC,iBAAiB,EAAE,KAAK,CAAC;AAC1B,YAAA,CAAC,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,GAAG,YAAY,GAAG,cAAc,CAAA,CAAE,EAAE,IAAI,CAAC,4BAA4B,CAAC;AAEhG,SAAA,CAAC,CAAC;QAEH,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,8BAA8B,CAAC,qBAAqB,EAAE,IAAI,CAAC,UAAU,EAAE;YAC1I,cAAc,EAAE,CAAC,aAAa,EAAE,aAAa,EAAE,YAAY,EAAE,YAAY,CAAC;AAC3E,SAAA,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,aAAa,CAAC,sBAAsB,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,oCAAoC,CAAC,CAAC;KACjH;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,IAAI,CAAC,8BAA8B,CAAC,qBAAqB,EAAE,MAAM;YAAE,OAAO;AAE/E,QAAA,MAAM,KAAK,GAAG,CAAA,EAAG,IAAI,CAAC,WAAW,2CAA2C,CAAC;AAC7E,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,sBAAsB,CAAC;AACzD,YAAA,CAAC,aAAa,EAAE,IAAI,CAAC,UAAU,CAAC;AAChC,YAAA,CAAC,aAAa,EAAE,IAAI,CAAC,UAAU,CAAC;YAChC,CAAC,iBAAiB,EAAE,IAAI,CAAC;AACzB,YAAA,CAAC,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,GAAG,YAAY,GAAG,cAAc,CAAA,CAAE,EAAE,IAAI,CAAC,4BAA4B,CAAC;AAEhG,SAAA,CAAC,CAAC;QAEH,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,8BAA8B,CAAC,qBAAqB,EAAE,IAAI,CAAC,UAAU,EAAE;YAC1I,cAAc,EAAE,CAAC,aAAa,EAAE,aAAa,EAAE,YAAY,EAAE,YAAY,CAAC;AAC3E,SAAA,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,mCAAmC,CAAC,CAAC;KAC9G;AAED,IAAA,YAAY,CAAC,QAAa,EAAA;AACxB,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,gBAAgB,CAAC;AAC1C,QAAA,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAChD,IAAI,CAAC,qBAAqB,EAAE,CAAC;KAC9B;;+HAjPU,kCAAkC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,aAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,aAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlC,kCAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kCAAkC,yECtB/C,06LAsHM,EAAA,MAAA,EAAA,CAAA,qm1RAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,SAAA,EAAA,WAAA,EAAA,SAAA,EAAA,qBAAA,EAAA,6BAAA,EAAA,gCAAA,EAAA,kBAAA,EAAA,uBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,aAAA,EAAA,wBAAA,EAAA,6BAAA,EAAA,oBAAA,EAAA,6BAAA,EAAA,8BAAA,EAAA,8BAAA,EAAA,wBAAA,EAAA,sBAAA,EAAA,YAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,qBAAA,EAAA,0BAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,kBAAA,EAAA,8BAAA,EAAA,2BAAA,EAAA,UAAA,EAAA,aAAA,EAAA,aAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,uBAAA,EAAA,mBAAA,EAAA,wBAAA,EAAA,+BAAA,EAAA,wBAAA,EAAA,6BAAA,EAAA,+BAAA,EAAA,8BAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,+BAAA,EAAA,gBAAA,EAAA,yBAAA,EAAA,8BAAA,EAAA,qBAAA,EAAA,0BAAA,EAAA,+BAAA,EAAA,wBAAA,EAAA,mBAAA,EAAA,0BAAA,EAAA,qBAAA,EAAA,aAAA,EAAA,qBAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,sCAAA,EAAA,cAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,6BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,8BAAA,EAAA,2BAAA,EAAA,6BAAA,EAAA,YAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,qBAAA,EAAA,oBAAA,EAAA,6BAAA,EAAA,0BAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,SAAA,EAAA,cAAA,EAAA,UAAA,EAAA,WAAA,EAAA,YAAA,EAAA,wBAAA,EAAA,uBAAA,EAAA,2BAAA,EAAA,eAAA,EAAA,2BAAA,EAAA,qBAAA,EAAA,+BAAA,EAAA,4BAAA,EAAA,yBAAA,EAAA,OAAA,EAAA,wBAAA,EAAA,yBAAA,EAAA,kCAAA,EAAA,+BAAA,EAAA,wBAAA,EAAA,uBAAA,EAAA,wBAAA,EAAA,iCAAA,EAAA,8BAAA,EAAA,uBAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,wBAAA,EAAA,mBAAA,EAAA,yBAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,wBAAA,EAAA,gBAAA,EAAA,yBAAA,EAAA,+BAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,yBAAA,EAAA,wBAAA,EAAA,6BAAA,EAAA,yBAAA,EAAA,2CAAA,EAAA,aAAA,EAAA,uBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,4BAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,8BAAA,EAAA,mCAAA,EAAA,2BAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,6BAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,uBAAA,EAAA,gCAAA,EAAA,6BAAA,EAAA,oBAAA,EAAA,8BAAA,EAAA,kBAAA,EAAA,sBAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,yBAAA,EAAA,0BAAA,EAAA,sBAAA,EAAA,iBAAA,EAAA,2BAAA,EAAA,iCAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,2BAAA,EAAA,wBAAA,EAAA,uCAAA,EAAA,UAAA,EAAA,2BAAA,EAAA,iBAAA,EAAA,uBAAA,EAAA,gCAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,yBAAA,EAAA,+BAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,cAAA,EAAA,SAAA,EAAA,eAAA,EAAA,4BAAA,EAAA,2CAAA,EAAA,kBAAA,EAAA,uBAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,yBAAA,EAAA,2BAAA,EAAA,qBAAA,EAAA,0BAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,iCAAA,EAAA,yBAAA,EAAA,qBAAA,EAAA,sBAAA,EAAA,yBAAA,EAAA,2BAAA,EAAA,wBAAA,EAAA,0BAAA,EAAA,+BAAA,EAAA,iCAAA,EAAA,qCAAA,EAAA,oBAAA,EAAA,0BAAA,EAAA,4BAAA,EAAA,4BAAA,EAAA,0BAAA,EAAA,2BAAA,EAAA,0BAAA,EAAA,yBAAA,EAAA,iCAAA,EAAA,wBAAA,EAAA,4BAAA,EAAA,oCAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,yBAAA,EAAA,wBAAA,EAAA,2BAAA,EAAA,uBAAA,EAAA,mBAAA,EAAA,6BAAA,EAAA,yBAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,8BAAA,EAAA,cAAA,EAAA,cAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,+BAAA,EAAA,OAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,eAAA,EAAA,2BAAA,EAAA,sBAAA,EAAA,sBAAA,EAAA,WAAA,EAAA,qBAAA,EAAA,oBAAA,EAAA,uBAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,yBAAA,EAAA,2BAAA,EAAA,gCAAA,EAAA,0BAAA,EAAA,iBAAA,EAAA,0BAAA,EAAA,yBAAA,EAAA,wBAAA,EAAA,sBAAA,EAAA,sBAAA,EAAA,sBAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,aAAA,EAAA,2BAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,sBAAA,EAAA,6BAAA,EAAA,6BAAA,EAAA,wBAAA,EAAA,6BAAA,EAAA,0BAAA,EAAA,+BAAA,EAAA,aAAA,EAAA,4BAAA,EAAA,eAAA,EAAA,+BAAA,EAAA,0BAAA,EAAA,gCAAA,EAAA,8BAAA,EAAA,mBAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,sBAAA,EAAA,sBAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,UAAA,EAAA,cAAA,EAAA,aAAA,EAAA,aAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,yBAAA,EAAA,sBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,eAAA,EAAA,cAAA,EAAA,eAAA,EAAA,aAAA,EAAA,oBAAA,EAAA,wBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,yBAAA,EAAA,uBAAA,EAAA,yBAAA,EAAA,uBAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,4BAAA,EAAA,qBAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,cAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,eAAA,EAAA,aAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,aAAA,EAAA,cAAA,EAAA,YAAA,EAAA,uBAAA,EAAA,gBAAA,EAAA,qBAAA,EAAA,sBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,0BAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,cAAA,EAAA,eAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,uBAAA,EAAA,aAAA,EAAA,6BAAA,EAAA,0BAAA,EAAA,0BAAA,EAAA,4BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAN,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAO,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wIAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,yBAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,aAAA,EAAA,cAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,EAAA,WAAA,EAAA,aAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,aAAA,EAAA,cAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,SAAA,EAAA,eAAA,EAAA,cAAA,EAAA,aAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,SAAA,EAAA,YAAA,EAAA,cAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,wBAAA,EAAA,UAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,YAAA,EAAA,UAAA,EAAA,UAAA,EAAA,sBAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,WAAA,EAAA,UAAA,EAAA,QAAA,EAAA,YAAA,EAAA,WAAA,EAAA,QAAA,EAAA,OAAA,EAAA,aAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,QAAA,EAAA,MAAA,EAAA,OAAA,EAAA,QAAA,EAAA,OAAA,EAAA,KAAA,EAAA,QAAA,EAAA,QAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FDhGO,kCAAkC,EAAA,UAAA,EAAA,CAAA;kBAN9C,SAAS;+BACE,mCAAmC,EAAA,QAAA,EAAA,06LAAA,EAAA,MAAA,EAAA,CAAA,qm1RAAA,CAAA,EAAA,CAAA;;;AEjB/C;MAkBa,2BAA2B,CAAA;AAmItC,IAAA,WAAA,CACU,aAA4B,EAC5B,aAA4B,EAC5B,MAAqB,EAAA;QAFrB,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;QAC5B,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;QAC5B,IAAM,CAAA,MAAA,GAAN,MAAM,CAAe;AAnIvB,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,OAAO,EAAQ,CAAC;;QAKvC,IAAiB,CAAA,iBAAA,GAAG,KAAK,CAAC;QAC1B,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;QACpB,IAAU,CAAA,UAAA,GAAW,EAAE,CAAC;QACxB,IAAkB,CAAA,kBAAA,GAAW,EAAE,CAAC;QAChC,IAAW,CAAA,WAAA,GAAY,KAAK,CAAC;AAC7B,QAAA,IAAA,CAAA,MAAM,GAAuB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;QAC1D,IAAS,CAAA,SAAA,GAAY,KAAK,CAAC;QAC3B,IAAoB,CAAA,oBAAA,GAAW,OAAO,CAAC;QACvC,IAAkB,CAAA,kBAAA,GAAY,KAAK,CAAC;AACpC,QAAA,IAAA,CAAA,eAAe,GAAS,IAAI,IAAI,EAAE,CAAC;QACnC,IAAmB,CAAA,mBAAA,GAAY,KAAK,CAAC;;QAIrC,IAAkB,CAAA,kBAAA,GAAY,KAAK,CAAC;AACpC,QAAA,IAAA,CAAA,aAAa,GAAG,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAA;AAChI,QAAA,IAAA,CAAA,aAAa,GAAG;AACd,YAAA,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;AAClC,YAAA,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE;AAC9B,YAAA,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE;SAC/B,CAAC;AAEF,QAAA,IAAA,CAAA,cAAc,GAA+B;AAC3C,YAAA,mBAAmB,EAAE,KAAK;AAC1B,YAAA,YAAY,EAAE,KAAK;AACnB,YAAA,kBAAkB,EAAE,KAAK;AACzB,YAAA,cAAc,EAAE,KAAK;AACrB,YAAA,iBAAiB,EAAE,KAAK;SACzB,CAAC;;AAGF,QAAA,IAAA,CAAA,YAAY,GAA0B,qBAAqB,CAAC,QAAQ,CAAC;AACrE,QAAA,IAAA,CAAA,qBAAqB,GAAG,qBAAqB,CAAC;QAC9C,IAAW,CAAA,WAAA,GAAY,KAAK,CAAC;QAC7B,IAAW,CAAA,WAAA,GAAY,KAAK,CAAC;;QAG7B,IAAa,CAAA,aAAA,GAAW,EAAE,CAAC;QAC3B,IAAa,CAAA,aAAA,GAAW,EAAE,CAAC;QAE3B,IAAgB,CAAA,gBAAA,GAAW,EAAE,CAAC;QAC9B,IAAe,CAAA,eAAA,GAAY,KAAK,CAAC;AACjC,QAAA,IAAA,CAAA,KAAK,GAAG,cAAc,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QAC/C,IAAe,CAAA,eAAA,GAAG,SAAS,CAAC;QAC5B,IAAW,CAAA,WAAA,GAAG,IAAI,CAAC;QAGnB,IAAkB,CAAA,kBAAA,GAA8B,IAAI,CAAC;QACrD,IAAmB,CAAA,mBAAA,GAA+B,IAAI,CAAC;;QAGvD,IAAO,CAAA,OAAA,GAAa,EAAE,CAAC;QACvB,IAAQ,CAAA,QAAA,GAAa,EAAE,CAAC;QACxB,IAAK,CAAA,KAAA,GAAW,EAAE,CAAC;QACnB,IAAU,CAAA,UAAA,GAAe,EAAE,CAAC;QAC5B,IAAQ,CAAA,QAAA,GAAc,EAAE,CAAC;QACzB,IAAa,CAAA,aAAA,GAAmB,EAAE,CAAC;QACnC,IAAe,CAAA,eAAA,GAAsB,EAAE,CAAC;QACxC,IAAmB,CAAA,mBAAA,GAAwB,EAAE,CAAC;QAC9C,IAAgB,CAAA,gBAAA,GAAa,EAAE,CAAC;QAChC,IAAU,CAAA,UAAA,GAAG,qBAAqB,CAAC;;AAInC,QAAA,IAAA,CAAA,UAAU,GAAa;AACrB,YAAA,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,mCAAmC,EAAE,YAAY,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,EAAE;YACxN,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,cAAc,EAAE,YAAY,EAAE,IAAI,EAAE;AAC5G,YAAA;gBACE,UAAU,EAAE,oBAAoB,EAAE,KAAK,EAAE,mBAAmB,EAAE,YAAY,EAAE,mBAAmB;AAC/F,gBAAA,YAAY,EAAE,CAAC,MAAW,KAAI;oBAC5B,MAAM,GAAG,GAAG,IAAI,CAAC,0BAA0B,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC1D,oBAAA,OAAO,YAAY,GAAG,CAAA,4CAAA,EAA+C,MAAM,CAAC,KAAK,MAAM,CAAC;iBACzF;gBACD,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,oCAAoC;AACvE,aAAA;YACD,EAAE,UAAU,EAAE,wBAAwB,EAAE,KAAK,EAAE,4BAA4B,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,cAAc,EAAE,YAAY,EAAE,4BAA4B,EAAE;YAC3K,EAAE,UAAU,EAAE,aAAa,EAAE,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,cAAc,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,mCAAmC,EAAE,kBAAkB,EAAE,CAAC,MAAM,KAAK,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG;YACvO,EAAE,UAAU,EAAE,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,SAAS,EAAE,cAAc,EAAE,YAAY,EAAE,WAAW,EAAE;YAC9H,EAAE,UAAU,EAAE,gBAAgB,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,SAAS,EAAE,cAAc,EAAE,YAAY,EAAE,eAAe,EAAE;YAC1I,EAAE,UAAU,EAAE,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,SAAS,EAAE,cAAc,EAAE,YAAY,EAAE,WAAW,EAAE;YAC9H,EAAE,UAAU,EAAE,eAAe,EAAE,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,SAAS,EAAE,cAAc,EAAE,YAAY,EAAE,cAAc,EAAE;YACvI,EAAE,UAAU,EAAE,aAAa,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,SAAS,EAAE,cAAc,EAAE,YAAY,EAAE,UAAU,EAAE;YAC7H,EAAE,UAAU,EAAE,gBAAgB,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,cAAc,EAAE,YAAY,EAAE,YAAY,EAAE;YACnI,EAAE,UAAU,EAAE,kBAAkB,EAAE,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,cAAc,EAAE,YAAY,EAAE,cAAc,EAAE;YACzI,EAAE,UAAU,EAAE,YAAY,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,SAAS,EAAE,cAAc,EAAE,YAAY,EAAE,SAAS,EAAE;YAC1H,EAAE,UAAU,EAAE,eAAe,EAAE,KAAK,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,qCAAqC,EAAE,YAAY,EAAE,gBAAgB,EAAE;YACjK,EAAE,UAAU,EAAE,gBAAgB,EAAE,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,cAAc,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,oCAAoC,EAAE,kBAAkB,EAAE,CAAC,MAAM,KAAK,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,GAAG;YACpP,EAAE,UAAU,EAAE,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,qCAAqC,EAAE,YAAY,EAAE,eAAe,EAAE;YAC5J,EAAE,UAAU,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,cAAc,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,oCAAoC,EAAE,kBAAkB,EAAE,CAAC,MAAM,KAAK,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,GAAG;YAChP,EAAE,UAAU,EAAE,aAAa,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,cAAc,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,oCAAoC,EAAE,kBAAkB,EAAE,CAAC,MAAM,KAAK,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,GAAG;YAC9O,EAAE,UAAU,EAAE,oBAAoB,EAAE,KAAK,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,0BAA0B,EAAE,YAAY,EAAE,mBAAmB,EAAE;SAClK,CAAC;;AAeF,QAAA,IAAA,CAAA,WAAW,GAAgB;AACzB,YAAA,aAAa,EAAE;AACb,gBAAA,QAAQ,EAAE,IAAI;AACd,gBAAA,MAAM,EAAE,IAAI;AACZ,gBAAA,SAAS,EAAE,IAAI;AACf,gBAAA,SAAS,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE;AACnC,gBAAA,UAAU,EAAE,IAAI;AAChB,gBAAA,QAAQ,EAAE,IAAI;AACf,aAAA;;AAED,YAAA,yBAAyB,EAAE,IAAI;AAC/B,YAAA,WAAW,EAAE,IAAI;AACjB,YAAA,UAAU,EAAE,IAAI;AAChB,YAAA,kBAAkB,EAAE,EAAE;;SAEvB,CAAC;QAOA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC;QAC7C,IAAI,CAAC,gBAAgB,GAAG,cAAc,CAAC,OAAO,CAAC,gBAAgB,CAAC;AACxC,YAAA,cAAc,CAAC,OAAO,CAAC,iBAAiB,CAAC;AACzC,YAAA,+BAA+B,CAAC;AACxD,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;KACjE;AAvCO,IAAA,0BAA0B,CAAC,iBAAyB,EAAA;AAC1D,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC;AAChC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;AACzB,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC;AACvC,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC;QAE7C,OAAO,CAAA,EAAG,OAAO,CAAyD,uDAAA,CAAA;YACxE,CAAsB,mBAAA,EAAA,iBAAiB,CAAoB,iBAAA,EAAA,eAAe,CAAE,CAAA;AAC5E,YAAA,CAAA,cAAA,EAAiB,KAAK,CAAA,UAAA,EAAa,QAAQ,CAAA,CAAE,CAAC;KACjD;IAiCD,QAAQ,GAAA;KAEP;IAED,WAAW,GAAA;AACX,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;AACrB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;KAC1B;AAGC,IAAA,YAAY,CAAC,QAAa,EAAA;AACxB,QAAA,IAAI,CAAC,YAAY,GAAG,qBAAqB,CAAC,OAAO,CAAC;AAClD,QAAA,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;AACvB,QAAA,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;AAC1B,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AACzB,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;AACrB,QAAA,IAAI,CAAC,oBAAoB,GAAG,OAAO,CAAC;AACpC,QAAA,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;AAErB,QAAA,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,QAAQ,CAAC;aAC5C,IAAI,CACH,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EACxB,QAAQ,CAAC,MAAK;AACZ,YAAA,IAAI,CAAC,YAAY,GAAG,qBAAqB,CAAC,QAAQ,CAAC;AACnD,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AAC1B,SAAC,CAAC,CACH;AACA,aAAA,SAAS,CAAC;YACT,IAAI,EAAE,IAAI,IAAG;AACX,gBAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC;gBACvD,IAAI,IAAI,CAAC,OAAO,EAAE;oBAChB,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AAC/C,iBAAA;AAAM,qBAAA;AACL,oBAAA,OAAO,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;AAC/C,iBAAA;aACF;YACD,KAAK,EAAE,GAAG,IAAG;AACX,gBAAA,IAAI,CAAC,YAAY,GAAG,qDAAqD,CAAC;AAC1E,gBAAA,IAAI,CAAC,YAAY,GAAG,qBAAqB,CAAC,KAAK,CAAC;AAChD,gBAAA,OAAO,CAAC,KAAK,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;aACrC;AACF,SAAA,CAAC,CAAC;KACN;AAGD,IAAA,oBAAoB,CAAC,KAAiB,EAAA;QACpC,KAAK,CAAC,eAAe,EAAE,CAAC;AACxB,QAAA,IAAI,CAAC,kBAAkB,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC;KACpD;AACD,IAAA,mBAAmB,CAAC,KAAiB,EAAA;QACnC,KAAK,CAAC,eAAe,EAAE,CAAC;AACxB,QAAA,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC;KAClC;IAED,MAAM,GAAA;QACJ,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,EAAE;AAC3C,YAAA,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;AACnE,SAAA;KACF;AAGD,IAAA,WAAW,CAAC,MAAsB,EAAA;AAChC,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC;AAC1B,QAAA,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,SAAS,CAAC;QAEtC,IAAI,IAAI,CAAC,eAAe,EAAE;YACxB,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AAC9C,YAAA,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC;AACjC,SAAA;KACF;AAED,IAAA,WAAW,CAAC,KAAqB,EAAA;AAC/B,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QAEvB,IAAI,KAAK,KAAK,KAAK,EAAE;AACnB,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACxB,YAAA,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;AACpC,YAAA,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAAC;AACzE,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AACzB,YAAA,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;AAChC,YAAA,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;AAC3C,SAAA;KACF;IAED,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;AACvB,QAAA,IAAI,CAAC,YAAY,GAAG,qBAAqB,CAAC,QAAQ,CAAC;KACpD;;AAGD,IAAA,aAAa,CAAC,MAAW,EAAA;QACvB,IAAI,CAAC,MAAM,CAAC,KAAK;AAAE,YAAA,OAAO,EAAE,CAAC;QAC7B,IAAI;YACF,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACpC,YAAA,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE;AAClC,gBAAA,GAAG,EAAE,SAAS;AACd,gBAAA,KAAK,EAAE,SAAS;AAChB,gBAAA,IAAI,EAAE,SAAS;AACf,gBAAA,IAAI,EAAE,SAAS;AACf,gBAAA,MAAM,EAAE,SAAS;AACjB,gBAAA,MAAM,EAAE,IAAI;AACb,aAAA,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;AACrB,SAAA;QAAC,MAAM;YACN,OAAO,MAAM,CAAC,KAAK,CAAC;AACrB,SAAA;KACF;AAED,IAAA,iBAAiB,CAAC,MAAW,EAAA;QAC3B,IAAI,MAAM,CAAC,KAAK,IAAI,IAAI,IAAI,MAAM,CAAC,KAAK,KAAK,EAAE;AAAE,YAAA,OAAO,EAAE,CAAC;QAC3D,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACxC,IAAI,KAAK,CAAC,MAAM,CAAC;YAAE,OAAO,MAAM,CAAC,KAAK,CAAC;AACvC,QAAA,OAAO,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE;AACpC,YAAA,qBAAqB,EAAE,CAAC;AACxB,YAAA,qBAAqB,EAAE,CAAC;AACzB,SAAA,CAAC,CAAC;KACJ;;IAGD,aAAa,CAAC,GAAQ,EAAE,KAAa,EAAA;QACnC,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,KAAK,GAAG,GAAG,CAAC;AAChB,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;AACtB,YAAA,KAAK,GAAG,KAAK,GAAG,GAAG,CAAC,CAAC;AACtB,SAAA;QACD,OAAO,KAAK,IAAI,EAAE,CAAC;KACpB;;AAGD,IAAA,IAAI,SAAS,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,YAAY,KAAK,qBAAqB,CAAC,OAAO,CAAC;KAC5D;AAED,IAAA,IAAI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,YAAY,KAAK,qBAAqB,CAAC,KAAK,CAAC;KAC1D;AAED,IAAA,IAAI,cAAc,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC;KAC7C;AAED,IAAA,IAAI,YAAY,GAAA;QAChB,OAAO,IAAI,CAAC,aAAa,CAAC;KAC3B;IAED,IAAI,YAAY,CAAC,KAAa,EAAA;AAC5B,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;KAC5B;AAIC,IAAA,cAAc,CAAC,KAAa,EAAA;AAC1B,QAAA,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;KACnC;IAED,YAAY,GAAA;AACV,QAAA,IAAI,IAAI,CAAC,oBAAoB,KAAK,KAAK,EAAE;YACvC,IAAI,CAAC,WAAW,EAAE,CAAC;AACpB,SAAA;AAAM,aAAA,IAAI,IAAI,CAAC,oBAAoB,KAAK,OAAO,EAAE;YAChD,IAAI,CAAC,aAAa,EAAE,CAAC;AACtB,SAAA;AAAM,aAAA,IAAI,IAAI,CAAC,oBAAoB,KAAK,KAAK,EAAE;YAC9C,IAAI,CAAC,WAAW,EAAE,CAAC;AACpB,SAAA;AAAM,aAAA;YACL,KAAK,CAAC,sCAAsC,CAAC,CAAC;AAC/C,SAAA;KACF;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,MAAM;YAAE,OAAO;QAE1C,MAAM,KAAK,GAAG,qBAAqB,CAAC;AACpC,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,sBAAsB,CAAC;AACzD,YAAA,CAAC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,CAAC;AACzC,YAAA,CAAC,gBAAgB,EAAE,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AAC5E,SAAA,CAAC,CAAC;AAEH,QAAA,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,UAAU,EAAE;AACrG,YAAA,cAAc,EAAE,CAAC,cAAc,EAAE,aAAa,EAAE,YAAY,CAAC;AAC9D,SAAA,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,yBAAyB,CAAC;aAC/F,IAAI,CAAC,MAAK;AACT,YAAA,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;AACvC,SAAC,CAAC;aACD,KAAK,CAAC,GAAG,IAAG;AACX,YAAA,OAAO,CAAC,KAAK,CAAC,oBAAoB,EAAE,GAAG,CAAC,CAAC;AAC3C,SAAC,CAAC,CAAC;KACN;IAED,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,MAAM;YAAE,OAAO;QAE1C,MAAM,KAAK,GAAG,qBAAqB,CAAC;AACpC,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,sBAAsB,CAAC;AACzD,YAAA,CAAC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,CAAC;AACzC,YAAA,CAAC,gBAAgB,EAAE,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AAC5E,SAAA,CAAC,CAAC;AAEH,QAAA,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,UAAU,EAAE;AACrG,YAAA,cAAc,EAAE,CAAC,cAAc,EAAE,aAAa,EAAE,YAAY,CAAC;AAC9D,SAAA,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,aAAa,CAAC,sBAAsB,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,0BAA0B,CAAC,CAAC;KACvG;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,MAAM;YAAE,OAAO;QAE1C,MAAM,KAAK,GAAG,qBAAqB,CAAC;AACpC,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,sBAAsB,CAAC;AACzD,YAAA,CAAC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,CAAC;AACzC,YAAA,CAAC,gBAAgB,EAAE,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AAC5E,SAAA,CAAC,CAAC;AAEH,QAAA,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,UAAU,EAAE;AACrG,YAAA,cAAc,EAAE,CAAC,cAAc,EAAE,aAAa,EAAE,YAAY,CAAC;AAC9D,SAAA,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,yBAAyB,CAAC,CAAC;KACpG;;wHA3WU,2BAA2B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAZ,aAAA,EAAA,EAAA,EAAA,KAAA,EAAAa,aAAA,EAAA,EAAA,EAAA,KAAA,EAAAZ,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA3B,2BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,2BAA2B,iKClBxC,+xIA+FA,EAAA,MAAA,EAAA,CAAA,o/uRAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,SAAA,EAAA,WAAA,EAAA,SAAA,EAAA,qBAAA,EAAA,6BAAA,EAAA,gCAAA,EAAA,kBAAA,EAAA,uBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,aAAA,EAAA,wBAAA,EAAA,6BAAA,EAAA,oBAAA,EAAA,6BAAA,EAAA,8BAAA,EAAA,8BAAA,EAAA,wBAAA,EAAA,sBAAA,EAAA,YAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,qBAAA,EAAA,0BAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,kBAAA,EAAA,8BAAA,EAAA,2BAAA,EAAA,UAAA,EAAA,aAAA,EAAA,aAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,uBAAA,EAAA,mBAAA,EAAA,wBAAA,EAAA,+BAAA,EAAA,wBAAA,EAAA,6BAAA,EAAA,+BAAA,EAAA,8BAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,+BAAA,EAAA,gBAAA,EAAA,yBAAA,EAAA,8BAAA,EAAA,qBAAA,EAAA,0BAAA,EAAA,+BAAA,EAAA,wBAAA,EAAA,mBAAA,EAAA,0BAAA,EAAA,qBAAA,EAAA,aAAA,EAAA,qBAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,sCAAA,EAAA,cAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,6BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,8BAAA,EAAA,2BAAA,EAAA,6BAAA,EAAA,YAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,qBAAA,EAAA,oBAAA,EAAA,6BAAA,EAAA,0BAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,SAAA,EAAA,cAAA,EAAA,UAAA,EAAA,WAAA,EAAA,YAAA,EAAA,wBAAA,EAAA,uBAAA,EAAA,2BAAA,EAAA,eAAA,EAAA,2BAAA,EAAA,qBAAA,EAAA,+BAAA,EAAA,4BAAA,EAAA,yBAAA,EAAA,OAAA,EAAA,wBAAA,EAAA,yBAAA,EAAA,kCAAA,EAAA,+BAAA,EAAA,wBAAA,EAAA,uBAAA,EAAA,wBAAA,EAAA,iCAAA,EAAA,8BAAA,EAAA,uBAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,wBAAA,EAAA,mBAAA,EAAA,yBAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,wBAAA,EAAA,gBAAA,EAAA,yBAAA,EAAA,+BAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,yBAAA,EAAA,wBAAA,EAAA,6BAAA,EAAA,yBAAA,EAAA,2CAAA,EAAA,aAAA,EAAA,uBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,4BAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,8BAAA,EAAA,mCAAA,EAAA,2BAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,6BAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,uBAAA,EAAA,gCAAA,EAAA,6BAAA,EAAA,oBAAA,EAAA,8BAAA,EAAA,kBAAA,EAAA,sBAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,yBAAA,EAAA,0BAAA,EAAA,sBAAA,EAAA,iBAAA,EAAA,2BAAA,EAAA,iCAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,2BAAA,EAAA,wBAAA,EAAA,uCAAA,EAAA,UAAA,EAAA,2BAAA,EAAA,iBAAA,EAAA,uBAAA,EAAA,gCAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,yBAAA,EAAA,+BAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,cAAA,EAAA,SAAA,EAAA,eAAA,EAAA,4BAAA,EAAA,2CAAA,EAAA,kBAAA,EAAA,uBAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,yBAAA,EAAA,2BAAA,EAAA,qBAAA,EAAA,0BAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,iCAAA,EAAA,yBAAA,EAAA,qBAAA,EAAA,sBAAA,EAAA,yBAAA,EAAA,2BAAA,EAAA,wBAAA,EAAA,0BAAA,EAAA,+BAAA,EAAA,iCAAA,EAAA,qCAAA,EAAA,oBAAA,EAAA,0BAAA,EAAA,4BAAA,EAAA,4BAAA,EAAA,0BAAA,EAAA,2BAAA,EAAA,0BAAA,EAAA,yBAAA,EAAA,iCAAA,EAAA,wBAAA,EAAA,4BAAA,EAAA,oCAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,yBAAA,EAAA,wBAAA,EAAA,2BAAA,EAAA,uBAAA,EAAA,mBAAA,EAAA,6BAAA,EAAA,yBAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,8BAAA,EAAA,cAAA,EAAA,cAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,+BAAA,EAAA,OAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,eAAA,EAAA,2BAAA,EAAA,sBAAA,EAAA,sBAAA,EAAA,WAAA,EAAA,qBAAA,EAAA,oBAAA,EAAA,uBAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,yBAAA,EAAA,2BAAA,EAAA,gCAAA,EAAA,0BAAA,EAAA,iBAAA,EAAA,0BAAA,EAAA,yBAAA,EAAA,wBAAA,EAAA,sBAAA,EAAA,sBAAA,EAAA,sBAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,aAAA,EAAA,2BAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,sBAAA,EAAA,6BAAA,EAAA,6BAAA,EAAA,wBAAA,EAAA,6BAAA,EAAA,0BAAA,EAAA,+BAAA,EAAA,aAAA,EAAA,4BAAA,EAAA,eAAA,EAAA,+BAAA,EAAA,0BAAA,EAAA,gCAAA,EAAA,8BAAA,EAAA,mBAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,sBAAA,EAAA,sBAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,UAAA,EAAA,cAAA,EAAA,aAAA,EAAA,aAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,yBAAA,EAAA,sBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,eAAA,EAAA,cAAA,EAAA,eAAA,EAAA,aAAA,EAAA,oBAAA,EAAA,wBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,yBAAA,EAAA,uBAAA,EAAA,yBAAA,EAAA,uBAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,4BAAA,EAAA,qBAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,cAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,eAAA,EAAA,aAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,aAAA,EAAA,cAAA,EAAA,YAAA,EAAA,uBAAA,EAAA,gBAAA,EAAA,qBAAA,EAAA,sBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,0BAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,cAAA,EAAA,eAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,uBAAA,EAAA,aAAA,EAAA,6BAAA,EAAA,0BAAA,EAAA,0BAAA,EAAA,4BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wIAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,EAAA,WAAA,EAAA,aAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,aAAA,EAAA,cAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,SAAA,EAAA,eAAA,EAAA,cAAA,EAAA,aAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,SAAA,EAAA,YAAA,EAAA,cAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,wBAAA,EAAA,UAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,YAAA,EAAA,UAAA,EAAA,UAAA,EAAA,sBAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,WAAA,EAAA,UAAA,EAAA,QAAA,EAAA,YAAA,EAAA,WAAA,EAAA,QAAA,EAAA,OAAA,EAAA,aAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,QAAA,EAAA,MAAA,EAAA,OAAA,EAAA,QAAA,EAAA,OAAA,EAAA,KAAA,EAAA,QAAA,EAAA,QAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,eAAA,EAAA,QAAA,EAAA,YAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAW,qBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FD7Ea,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBANvC,SAAS;+BACE,yBAAyB,EAAA,QAAA,EAAA,+xIAAA,EAAA,MAAA,EAAA,CAAA,o/uRAAA,CAAA,EAAA,CAAA;mJAMd,MAAM,EAAA,CAAA;sBAA1B,SAAS;uBAAC,QAAQ,CAAA;;;AEbrB,MAAM,MAAM,GAAW;AACrB,IAAA;AACE,QAAA,IAAI,EAAE,4BAA4B;AAClC,QAAA,SAAS,EAAE,2BAA2B;AACvC,KAAA;CAEF,CAAC;MAOW,uBAAuB,CAAA;;oHAAvB,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAvB,uBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,wCAHxB,YAAY,CAAA,EAAA,CAAA,CAAA;qHAGX,uBAAuB,EAAA,OAAA,EAAA,CAJxB,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,EAC7B,YAAY,CAAA,EAAA,CAAA,CAAA;2FAGX,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBALnC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;oBACxC,OAAO,EAAE,CAAC,YAAY,CAAC;AACxB,iBAAA,CAAA;;;MCjBY,0CAA0C,CAAA;AAYrD,IAAA,WAAA,CAAY,SAAiB,EAAE,EAAA;AACzB,QAAA,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;KAC/B;AACJ;;ACfD,IAAY,sBAIX,CAAA;AAJD,CAAA,UAAY,sBAAsB,EAAA;AAC9B,IAAA,sBAAA,CAAA,sBAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,CAAA,GAAA,OAAU,CAAA;AACV,IAAA,sBAAA,CAAA,sBAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAW,CAAA;AACX,IAAA,sBAAA,CAAA,sBAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAY,CAAA;AAChB,CAAC,EAJW,sBAAsB,KAAtB,sBAAsB,GAIjC,EAAA,CAAA,CAAA;;MCoBY,iCAAiC,CAAA;AAgF5C,IAAA,WAAA,CAAoB,WAAwB,EAAU,aAA4B,EAAU,MAAc,EAAA;QAAtF,IAAW,CAAA,WAAA,GAAX,WAAW,CAAa;QAAU,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;QAAU,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;QA/E1G,IAAO,CAAA,OAAA,GAA2C,EAAE,CAAA;QACpD,IAAY,CAAA,YAAA,GAA2C,EAAE,CAAA;QACzD,IAAS,CAAA,SAAA,GAA2C,EAAE,CAAA;QAMtD,IAAO,CAAA,OAAA,GAAQ,EAAE,CAAC;QAClB,IAAW,CAAA,WAAA,GAAO,EAAE,CAAC;QACrB,IAAc,CAAA,cAAA,GAAQ,EAAE,CAAC;AAEzB,QAAA,IAAA,CAAA,MAAM,GAAU,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;QACtD,IAAkB,CAAA,kBAAA,GAAW,EAAE,CAAC;QAEhC,IAAS,CAAA,SAAA,GAAY,KAAK,CAAC;QAC3B,IAAe,CAAA,eAAA,GAAY,KAAK,CAAC;QACjC,IAAoB,CAAA,oBAAA,GAAG,OAAO,CAAC;QAG/B,IAAI,CAAA,IAAA,GAAW,mCAAmC,CAAC;AAInD,QAAA,IAAA,CAAA,QAAQ,GAAc,IAAI,SAAS,CAAC,EAAE,CAAC,CAAC;AACxC,QAAA,IAAA,CAAA,MAAM,GAAG,CAAC,KAAK,CAAC,CAAC;QACjB,IAAY,CAAA,YAAA,GAAG,EAAE,CAAC;QAGlB,IAAO,CAAA,OAAA,GAAW,eAAe,CAAC;QAClC,IAAqB,CAAA,qBAAA,GAAG,sBAAsB,CAAC;AAC/C,QAAA,IAAA,CAAA,YAAY,GAA2B,sBAAsB,CAAC,OAAO,CAAC;AACtE,QAAA,IAAA,CAAA,aAAa,GAAG,CAAC,EAAC,UAAU,EAAC,OAAO,EAAC,IAAI,EAAC,OAAO,EAAC,EAAC,EAAC,UAAU,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,EAAC,EAAC,UAAU,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,CAAC,CAAA;;QAE/G,IAAkB,CAAA,kBAAA,GAAY,KAAK,CAAC;QACpC,IAAW,CAAA,WAAA,GAAY,KAAK,CAAC;QAC7B,IAAY,CAAA,YAAA,GAAY,KAAK,CAAC;QAC9B,IAAW,CAAA,WAAA,GAAY,KAAK,CAAC;QAC7B,IAAe,CAAA,eAAA,GAAY,KAAK,CAAC;QACjC,IAAkB,CAAA,kBAAA,GAAY,KAAK,CAAC;QACpC,IAAU,CAAA,UAAA,GAAY,KAAK,CAAC;QAC5B,IAAa,CAAA,aAAA,GAAY,IAAI,CAAC;QAC9B,IAAS,CAAA,SAAA,GAAY,KAAK,CAAC;QAC3B,IAAW,CAAA,WAAA,GAAY,KAAK,CAAC;QAC7B,IAAS,CAAA,SAAA,GAAY,KAAK,CAAC;QAC3B,IAAW,CAAA,WAAA,GAAY,KAAK,CAAC;QAC7B,IAAc,CAAA,cAAA,GAAY,KAAK,CAAC;AAGhC,QAAA,IAAA,CAAA,UAAU,GAAmC;YAC3C,EAAE,KAAK,EAAE,kBAAkB,EAAE,UAAU,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,EAAE,WAAW,EAAE,wBAAwB,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,YAAY,EAAE,kBAAkB,EAAE;AACrK,YAAA,EAAE,KAAK,EAAE,qBAAqB,EAAE,UAAU,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE;YAC3G,EAAE,KAAK,EAAE,mBAAmB,EAAE,UAAU,EAAE,oBAAoB,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,4CAA4C,EAAE,YAAY,EAAE,mBAAmB,EAAE;YACnL,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,YAAY,EAAE,SAAS,EAAE;AACxG,YAAA,EAAE,KAAK,EAAE,qBAAqB,EAAE,UAAU,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,YAAY,EAAE,qBAAqB,EAAE;YACzH,EAAE,KAAK,EAAE,kBAAkB,EAAE,UAAU,EAAE,oBAAoB,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,YAAY,EAAE,kBAAkB,EAAE;AACnI,YAAA,EAAE,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,YAAY,EAAE,cAAc,EAAE;AAC3G,YAAA,EAAE,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,cAAc,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,oCAAoC,EAAE,YAAY,EAAE,cAAc,EAAE;AACjN,YAAA,EAAE,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,YAAY,EAAE,aAAa,EAAE;AACxG,YAAA,EAAE,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,cAAc,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,oCAAoC,EAAE,YAAY,EAAE,aAAa,EAAE;AAC5M,YAAA,EAAE,KAAK,EAAE,6BAA6B,EAAE,UAAU,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,cAAc,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,oCAAoC,EAAE,YAAY,EAAE,6BAA6B,EAAE;AAC5O,YAAA,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,cAAc,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,oCAAoC,EAAE,YAAY,EAAE,KAAK,EAAE;AAC/L,YAAA,EAAE,KAAK,EAAE,kBAAkB,EAAE,UAAU,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAAC,EAAE,cAAc,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,oCAAoC,EAAE,YAAY,EAAE,kBAAkB,EAAE;AAC7M,YAAA,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,oBAAoB,EAAE,IAAI,EAAE,CAAC,EAAE,YAAY,EAAE,QAAQ,EAAE;SACvF,CAAC;AAGF,QAAA,IAAA,CAAA,aAAa,GAAG;AACd,YAAA,QAAQ,EAAE,IAAI;AACd,YAAA,MAAM,EAAE,KAAK;AACb,YAAA,SAAS,EAAE,IAAI;AACf,YAAA,QAAQ,EAAE,EAAE;AACZ,YAAA,cAAc,EAAE,IAAI;AACpB,YAAA,gBAAgB,EAAE,IAAI;AACtB,YAAA,iBAAiB,EAAE,KAAK;AACxB,YAAA,QAAQ,EAAE,IAAI;SACf,CAAC;QACF,IAAO,CAAA,OAAA,GAA2B,EAAE,CAAC;AAIrC,QAAA,IAAA,CAAA,WAAW,GAAG,WAAW,CAAC,UAAU,CAAC;AACnC,YAAA,cAAc,EAAE,MAAM;AACtB,YAAA,UAAU,EAAE,CAAC,OAAO,EAAE,YAAY,CAAC;AACnC,YAAA,QAAQ,EAAE,KAAK;AAChB,SAAA,CAAC,CAAC;KAN4G;IAQ/G,QAAQ,GAAA;;AAEN,QAAA,IAAI,cAAc,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE;YAC5C,IAAI,CAAC,SAAS,GAAG,cAAc,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAA;AAC1D,SAAA;AACI,aAAA;YACH,IAAI,CAAC,SAAS,GAAG,cAAc,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAC5D,SAAA;AACD,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;AAChE,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,mBAAmB,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;QAClD,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChB,IAAI,CAAC,aAAa,CAAC,gBAAgB,EAAE,CAAC,SAAS,CAAC,IAAI,IAAG;AACrD,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;AACnB,YAAA,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;AAC1B,SAAC,CAAC,CAAA;AAEF,QAAA,QAAQ,CAAC;AACP,YAAA,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC,IAAI,CACzC,UAAU,CAAC,GAAG,IAAG;AACf,gBAAA,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,GAAG,CAAC,CAAC;AAC3C,gBAAA,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;AAClB,aAAC,CAAC,CACH;AACD,YAAA,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAC7D,UAAU,CAAC,GAAG,IAAG;AACf,gBAAA,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,GAAG,CAAC,CAAC;AAC5C,gBAAA,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;AAChB,aAAC,CAAC,CACH;SACF,CAAC,CAAC,SAAS,CACV;YACE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,KAAI;AAC5B,gBAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACrB,gBAAA,IAAI,CAAC,OAAO,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;AAC5B,gBAAA,IAAI,CAAC,WAAW,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;AAChC,gBAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE;AACrE,oBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACzC,iBAAA;AACD,gBAAA,IAAI,CAAC,YAAY,GAAG,sBAAsB,CAAC,QAAQ,CAAC;aACrD;YACD,KAAK,EAAE,GAAG,IAAG;AACX,gBAAA,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,GAAG,CAAC,CAAC;AAChD,gBAAA,IAAI,CAAC,YAAY,GAAG,sBAAsB,CAAC,KAAK,CAAC;aAClD;YACD,QAAQ,EAAE,MAAK;AACb,gBAAA,IAAI,CAAC,YAAY,GAAG,sBAAsB,CAAC,QAAQ,CAAC;gBACpD,IAAI,CAAC,gBAAgB,EAAE,CAAC;aACzB;AACF,SAAA,CAEF,CAAC;QACF,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC9B,IAAI,CAAC,uBAAuB,EAAE,CAAC;;QAE/B,IAAI,CAAC,iBAAiB,CAAC,2CAA2C,CAAC,CAAC,IAAI,CAAC,MAAM,IAAG;AAChF,YAAA,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC;AAC3B,SAAC,CAAC,CAAC;KACJ;IAED,QAAQ,GAAA;QACN,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;YACjC,QAAQ,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,QAAQ,CAAC;AACvE,YAAA,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,UAAU,CAAC,QAAQ,CAAC;AACjG,YAAA,WAAW,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,QAAQ,CAAC;AACzC,YAAA,cAAc,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,QAAQ,CAAC;AAC5C,YAAA,MAAM,EAAE,CAAC,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC;AACnC,YAAA,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,eAAe,EAAE,EAAE,UAAU,CAAC,QAAQ,CAAC;AAC9E,YAAA,OAAO,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,QAAQ,CAAC;AACrC,YAAA,eAAe,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,QAAQ,CAAC;YAC7C,iBAAiB,EAAE,CAAC,CAAC,KAAK,CAAC,EAAC,UAAU,CAAC,QAAQ,CAAC;AAChD,YAAA,cAAc,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,QAAQ,CAAC;AAC7C,SAAA,CAAC,CAAC;KACJ;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;AAChC,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AACzB,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;AACrB,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AACvB,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;;AAExB,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC;AACrD,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC;;AAEjD,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACpB,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AACtB,YAAA,IAAI,CAAC,YAAY,GAAG,CAAA,mCAAA,CAAqC,CAAC;YAC1D,OAAO;AACR,SAAA;;AAED,QAAA,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;AACnD,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AACtB,YAAA,IAAI,CAAC,YAAY,GAAG,CAAA,UAAA,EAAa,IAAI,CAAC,QAAQ,CAAA,iCAAA,EAAoC,IAAI,CAAC,MAAM,CAAA,CAAE,CAAC;YAChG,OAAO;AACR,SAAA;;QAED,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACrC,MAAM,EAAE,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACjC,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;;QAE/F,IAAI,gBAAgB,GAAG,EAAE,EAAE;AACzB,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AACtB,YAAA,IAAI,CAAC,YAAY,GAAG,CAAA,UAAA,EAAa,IAAI,CAAC,QAAQ,CAAA,aAAA,EAAgB,IAAI,CAAC,MAAM,CAAA,sCAAA,CAAwC,CAAC;YAClH,OAAO;AACR,SAAA;AACD,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,MAAM,CAAC,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACnC,IAAI,CAAC,UAAU,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;AAC3C,QAAA,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,oBAAoB,EAAE,OAAO,CAAC,CAAC;AAC7E,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;AACpC,QAAA,KAAK,CAAC,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,KAAK,CAAC;AACrE,QAAA,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACnB,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACxB,QAAA,IAAI,CAAC,YAAY,GAAG,sBAAsB,CAAC,OAAO,CAAC;QACnD,IAAI,CAAC,aAAa,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC;AAC1D,YAAA,IAAI,EAAE,CAAC,IAAI,KAAI;AACb,gBAAA,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAClB,gBAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;AAChD,gBAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;gBACzB,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC;AAC7E,gBAAA,IAAI,CAAC,SAAS,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;gBACvC,IAAI,CAAC,eAAe,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACjF,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC;AAC7E,gBAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;aACxB;AAED,YAAA,KAAK,EAAE,CAAC,GAAG,KAAI;AACb,gBAAA,IAAI,CAAC,YAAY,GAAG,sBAAsB,CAAC,QAAQ,CAAC;aACrD;YAED,QAAQ,EAAE,MAAK;AACb,gBAAA,IAAI,CAAC,YAAY,GAAG,sBAAsB,CAAC,QAAQ,CAAC;aACrD;AACF,SAAA,CAAC,CAAA;KACH;IAGD,QAAQ,GAAA;AACN,QAAA,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC7B,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE;YACvC,IAAI,CAAC,YAAY,GAAG,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAClD,OAAO;AACR,SAAA;QACD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;AAChD,QAAA,KAAK,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;AAC3D,YAAA,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;iBAC9D,IAAI,CAAC,GAAG,IAAG;gBACV,IAAI,CAAC,GAAW,GAAG,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE,CAAC;AAC7C,gBAAA,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC;aACvD,CAAC,CAAC,CAAA;AAEL,YAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC;AACvC,SAAA;QACD,IAAI,CAAC,YAAY,CAAC;KACnB;AAED,IAAA,eAAe,CAAC,IAAS,EAAA;AACvB,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,KAAK,KAAK,IAAI,EAAE;YAC/C,OAAO;AACR,SAAA;AACD,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AAC9C,QAAA,IAAI,CAAC,YAAY,GAAG,sBAAsB,CAAC,OAAO,CAAC;AACnD,QAAA,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC;AAClE,YAAA,IAAI,EAAE,CAAC,IAAI,KAAI;AACb,gBAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;aAC5B;AACD,YAAA,KAAK,EAAE,CAAC,GAAG,KAAI;AACb,gBAAA,IAAI,CAAC,YAAY,GAAG,sBAAsB,CAAC,QAAQ,CAAC;aACrD;YACD,QAAQ,EAAE,MAAK;AACb,gBAAA,IAAG,cAAc,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAC;AAC3C,oBAAA,MAAM,KAAK,GAAC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,MAAM,KAAG,MAAM,CAAC,UAAU,KAAK,KAAK,CAAC,CAAC;AACjF,oBAAA,IAAG,KAAK,IAAE,CAAC,CAAC,EAAC;AACX,wBAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAA;AACzE,qBAAA;AAAI,yBAAA;AACH,wBAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC9C,qBAAA;AACF,iBAAA;AACD,gBAAA,IAAI,CAAC,YAAY,GAAG,sBAAsB,CAAC,QAAQ,CAAC;aAErD;AACF,SAAA,CAAC,CAAC;KACJ;IAED,cAAc,GAAA;AACZ,QAAA,MAAM,IAAI,GAAG,IAAI,0CAA0C,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;AACrF,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC;AACtD,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC;AAClD,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC;AAC/D,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,KAAK,CAAC;AAClE,QAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC;AAC9D,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC,KAAK,CAAC;AACvE,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC;AAC3D,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC;AACrD,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,KAAK,CAAC;AAClE,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACxB,QAAA,OAAO,IAAI,CAAC;KACb;AAED,IAAA,WAAW,CAAC,MAAsB,EAAA;AAChC,QAAA,MAAM,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;AAC9B,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC;AAC1B,QAAA,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,SAAS,CAAC;KACvC;AAED,IAAA,iBAAiB,CAAC,MAAW,EAAA;AAC3B,QAAA,MAAM,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;KAC/B;AAGD,IAAA,WAAW,CAAC,KAAU,EAAE,KAAa,EAAE,GAAW,EAAA;QAChD,IAAI,KAAK,IAAI,KAAK,EAAE;AAClB,YAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;AACrC,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;AAC7D,SAAA;AACD,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;KACxB;AAED,IAAA,MAAM,YAAY,GAAA;QAChB,MAAM,IAAI,GAAU,EAAE,CAAC;AACvB,QAAA,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;AACtD,QAAA,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,IAAI,CAAC,EAAE;YAC9C,OAAO;AACR,SAAA;QACD,QAAQ,IAAI,CAAC,oBAAoB;AAC/B,YAAA,KAAK,OAAO;AACV,gBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;gBACvB,MAAM;AACR,YAAA,KAAK,KAAK;AACR,gBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;gBACrB,MAAM;AACR,YAAA,KAAK,KAAK;AACR,gBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;gBACrB,MAAM;AACR,YAAA;gBACE,KAAK,CAAC,iCAAiC,CAAC,CAAC;AAC5C,SAAA;KACF;;AAGO,IAAA,iBAAiB,CAAC,SAAiB,EAAA;QACzC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;AACrC,YAAA,MAAM,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC;AACxB,YAAA,GAAG,CAAC,WAAW,GAAG,WAAW,CAAC;AAC9B,YAAA,GAAG,CAAC,GAAG,GAAG,SAAS,CAAC;AAEpB,YAAA,GAAG,CAAC,MAAM,GAAG,MAAK;;gBAEhB,MAAM,KAAK,GAAG,CAAC,CAAC;gBAChB,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;gBAChD,MAAM,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC;gBACjC,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC;gBAEnC,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AACpC,gBAAA,IAAI,GAAG,EAAE;oBACP,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;oBACxB,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACzB,oBAAA,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;oBAClD,OAAO,CAAC,MAAM,CAAC,CAAC;AACjB,iBAAA;AAAM,qBAAA;oBACL,MAAM,CAAC,+BAA+B,CAAC,CAAC;AACzC,iBAAA;AACH,aAAC,CAAC;AAEF,YAAA,GAAG,CAAC,OAAO,GAAG,MAAM,MAAM,CAAC,wBAAwB,GAAG,SAAS,CAAC,CAAC;AACnE,SAAC,CAAC,CAAC;KACJ;AAED,IAAA,SAAS,CAAC,IAAS,EAAA;AACjB,QAAA,MAAM,cAAc,GAAG,CAAC,cAAc,EAAE,aAAa,EAAE,kBAAkB,EAAE,KAAK,EAAE,6BAA6B,CAAC,CAAC;AACjH,QAAA,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AACtC,QAAA,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC;AACpB,YAAA,WAAW,EAAE,WAAW;AACxB,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC;AACnB,SAAA,CAAC,CAAC;QAEH,MAAM,SAAS,GAAG,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC;;QAG9C,MAAM,KAAK,GAAG,CAAA,oBAAA,CAAsB,CAAC;AACrC,QAAA,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;AACpB,QAAA,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QACjC,MAAM,SAAS,GAAG,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAC1C,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;;QAG1E,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,YAAA,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AACrD,SAAA;;QAGD,MAAM,KAAK,GAAG,EAAE,CAAC;QACjB,MAAM,UAAU,GAAG,EAAE,CAAC;QACtB,MAAM,UAAU,GAAG,CAAC,CAAC;AACrB,QAAA,MAAM,SAAS,GAAG;AAChB,YAAA,CAAC,uBAAuB,EAAE,IAAI,CAAC,IAAI,CAAC;AACpC,YAAA,CAAC,aAAa,EAAE,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,oBAAoB,EAAE,OAAO,CAAC,CAAC;;SAE5E,CAAA;AAED,QAAA,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;AACpB,QAAA,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,KAAI;AACtC,YAAA,MAAM,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,UAAU,CAAC;;AAEjC,YAAA,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;YACjC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;;YAG/B,MAAM,UAAU,GAAG,GAAG,CAAC,YAAY,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC;AACjD,YAAA,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;YACnC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU,EAAE,CAAC,CAAC,CAAC;AAC9C,SAAC,CAAC,CAAC;QAEH,MAAM,eAAe,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,IAChD,EAAE,GAAG,CAAC,UAAU,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,KAAK,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,KAAK,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAChJ,CAAC;;QAGF,MAAM,OAAO,GAAG,CAAC,OAAO,EAAE,GAAG,eAAe,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,KAAM,CAAC,CAAC,CAAC;QAEvF,IAAI,IAAI,GAAU,EAAE,CAAC;AAErB,QAAA,KAAK,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;AACzD,YAAA,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;YAC3C,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,KAAI;gBACtC,MAAM,OAAO,GAAG,eAAe,CAAC,GAAG,CAAC,GAAG,IAAG;oBACxC,IAAI,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,KAAM,CAAC,CAAC;AAC5B,oBAAA,IAAI,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,IAAI,EAAE;wBACvD,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACtC,qBAAA;oBACD,OAAO,KAAK,IAAI,EAAE,CAAC;AACrB,iBAAC,CAAC,CAAC;AACH,gBAAA,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC;gBACnC,OAAO,CAAC,KAAK,GAAG,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC;AACjC,aAAC,CAAC,CAAC;;AAEJ,SAAA;;QAGD,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,KAAI;YACnC,MAAM,OAAO,GAAG,eAAe,CAAC,GAAG,CAAC,GAAG,IAAG;gBACxC,IAAI,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,KAAM,CAAC,CAAC;gBAC5B,OAAO,KAAK,IAAI,EAAE,CAAC;AACrB,aAAC,CAAC,CAAC;YACH,OAAO,CAAC,KAAK,GAAG,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC;AACjC,SAAC,CAAC,CAAC;;QAGH,MAAM,YAAY,GAA2B,EAAE,CAAC;QAChD,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;YACvB,YAAY,CAAC,CAAC,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;AAC1C,SAAC,CAAC,CAAC;QAEH,YAAY,CAAC,CAAC,CAAC,GAAG,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;;QAGpC,GAAG,CAAC,SAAS,CAAC;YACZ,IAAI,EAAE,CAAC,OAAO,CAAC;AACf,YAAA,IAAI,EAAE,IAAI;YACV,MAAM,EAAE,KAAK,GAAG,SAAS,CAAC,MAAM,GAAG,UAAU,GAAG,CAAC;AACjD,YAAA,KAAK,EAAE,MAAM;AACb,YAAA,UAAU,EAAE;AACV,gBAAA,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AAC1B,gBAAA,SAAS,EAAE,CAAC;AACZ,gBAAA,SAAS,EAAE,MAAM;AACjB,gBAAA,QAAQ,EAAE,CAAC;AACX,gBAAA,MAAM,EAAE,QAAQ;AACjB,aAAA;AACD,YAAA,SAAS,EAAE;AACT,gBAAA,QAAQ,EAAE,CAAC;AACX,gBAAA,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AAC1B,gBAAA,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACrB,aAAA;AACD,YAAA,MAAM,EAAE;AACN,gBAAA,WAAW,EAAE,CAAC;AACd,gBAAA,QAAQ,EAAE,WAAW;AACrB,gBAAA,aAAa,EAAE,CAAC;AACjB,aAAA;AACD,YAAA,YAAY,EAAE,YAAY;AAC3B,SAAA,CAAC,CAAC;AACH,QAAA,GAAG,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAA;KAC5C;AAED,IAAA,WAAW,CAAC,IAAS,EAAA;AACnB,QAAA,MAAM,cAAc,GAAG,CAAC,cAAc,EAAE,aAAa,EAAE,kBAAkB,EAAE,KAAK,EAAE,6BAA6B,CAAC,CAAC;AACjH,QAAA,MAAM,QAAQ,GAAG,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACxC,MAAM,SAAS,GAAG,QAAQ,CAAC,YAAY,CAAC,6BAA6B,CAAC,CAAC;AACvE,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;;QAG5C,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC;AAC5D,QAAA,QAAQ,CAAC,IAAI,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;AACzC,QAAA,QAAQ,CAAC,MAAM,GAAG,EAAE,CAAC;QACrB,SAAS,CAAC,UAAU,CAAC,CAAA,CAAA,EAAI,QAAQ,CAAC,MAAM,CAAI,CAAA,EAAA,MAAM,CAAC,YAAY,CAAC,EAAE,GAAG,YAAY,CAAC,CAAA,EAAG,QAAQ,CAAC,MAAM,CAAE,CAAA,CAAC,CAAC;;AAExG,QAAA,MAAM,UAAU,GAAG,SAAS,CAAC,OAAO,CAAC,CAAI,CAAA,EAAA,QAAQ,CAAC,MAAM,CAAE,CAAA,CAAC,CAAC;AAC5D,QAAA,UAAU,CAAC,SAAS,GAAG,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;;QAGpE,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,0BAA0B,EAAE,EAAE,CAAC,CAAC;AAC3E,YAAA,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC;AAChC,gBAAA,MAAM,EAAE,UAAU;AAClB,gBAAA,SAAS,EAAE,KAAK;AACjB,aAAA,CAAC,CAAC;;AAGH,YAAA,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE;gBAC1B,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE;gBACtB,GAAG,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE;AAChC,aAAA,CAAC,CAAC;AACJ,SAAA;;AAGD,QAAA,MAAM,IAAI,GAAuB;AAC/B,YAAA,CAAC,cAAc,EAAE,IAAI,CAAC,IAAI,CAAC;AAC3B,YAAA,CAAC,aAAa,EAAE,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,oBAAoB,EAAE,OAAO,CAAC,CAAC;;SAE5E,CAAA;QAED,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,KAAI;AAC9B,YAAA,MAAM,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;;YAE7C,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YACjC,SAAS,CAAC,IAAI,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAClC,SAAC,CAAC,CAAA;;AAEF,QAAA,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;;QAGrB,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;QAC5F,SAAS,CAAC,IAAI,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAChC,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAChD,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAClC,IAAI,CAAC,IAAI,GAAG;AACV,gBAAA,IAAI,EAAE,SAAS;AACf,gBAAA,OAAO,EAAE,OAAO;AAChB,gBAAA,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;aAC5B,CAAC;AACH,SAAA;QAED,SAAS,CAAC,SAAS,GAAG;AACpB,YAAA,QAAQ,EAAE,IAAI;AACd,YAAA,QAAQ,EAAE,KAAK;AACf,YAAA,UAAU,EAAE,QAAQ;SACrB,CAAC;QACF,SAAS,CAAC,MAAM,GAAG;AACjB,YAAA,GAAG,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;AACjD,YAAA,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;SAClD,CAAC;QAEF,MAAM,YAAY,GAAG,SAAS,CAAC,OAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;QACnD,MAAM,UAAU,GAAG,EAAE,CAAC;AACtB,QAAA,KAAK,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;AACzD,YAAA,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AACzB,YAAA,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;AACjC,YAAA,MAAM,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAA,EAAG,GAAG,CAAA,CAAE,CAAC,CAAC,CAAC;AACzC,YAAA,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AACpD,YAAA,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;;AAE5B,YAAA,OAAO,CAAC,OAAO,CAAC,GAAG,IAAG;gBACpB,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,IAAG;oBACxC,IAAI,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,KAAM,CAAC,CAAC;;AAE5B,oBAAA,IAAI,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,IAAI,EAAE;wBACvD,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACtC,qBAAA;AACD,oBAAA,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,EAAE,EAAE;wBACnD,OAAO,CAAA,GAAA,EAAM,KAAK,CAAA,CAAE,CAAC;AACtB,qBAAA;oBACD,OAAO,KAAK,IAAI,EAAE,CAAC;AACrB,iBAAC,CAAC,CAAA;gBACF,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBAC1C,OAAO,CAAC,MAAM,GAAG;AACf,oBAAA,GAAG,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;AACjD,oBAAA,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;iBAClD,CAAC;AACJ,aAAC,CAAC,CAAC;AACH,YAAA,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AACtB,SAAA;;QAGD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,YAAY,EAAE,CAAC,EAAE,EAAE;YACtC,IAAI,SAAS,GAAG,EAAE,CAAC;AACnB,YAAA,KAAK,IAAI,MAAM,GAAG,YAAY,EAAE,MAAM,IAAI,SAAS,CAAC,OAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE;AAC7E,gBAAA,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE;oBAChD,SAAS;AACV,iBAAA;AACD,gBAAA,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACjD,gBAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC;gBACpD,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;AAC7C,aAAA;YACD,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,SAAS,GAAG,CAAC,CAAC;AAC9C,SAAA;QACD,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;QAClC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;;QAElC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,MAAM,IAAG;YACxC,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE;AAC9B,gBAAA,IAAI,EAAE,mEAAmE;AAC1E,aAAA,CAAC,CAAA;AACF,YAAA,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,kCAAkC,CAAC,CAAC;AAC7D,SAAC,CAAC,CAAA;KACH;AAED,IAAA,SAAS,CAAC,IAAW,EAAA;AACnB,QAAA,MAAM,cAAc,GAAG,CAAC,cAAc,EAAE,aAAa,EAAE,kBAAkB,EAAE,KAAK,EAAE,6BAA6B,CAAC,CAAC;AACjH,QAAA,MAAM,QAAQ,GAAG;YACf,CAAC,cAAc,EAAE,sBAAsB,CAAC;AACxC,YAAA,CAAC,aAAa,EAAE,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,oBAAoB,EAAE,OAAO,CAAC,CAAC;;SAE5E,CAAC;QAEF,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CACzC,GAAG,IACD,EAAE,GAAG,CAAC,UAAU,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC;AAChD,YAAA,GAAG,CAAC,KAAK,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CACjD,CAAC;QAEF,MAAM,OAAO,GAAG,CAAC,OAAO,EAAE,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,KAAM,CAAC,CAAC,CAAC;QAEpF,IAAI,IAAI,GAAY,EAAE,CAAA;AACtB,QAAA,KAAK,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;AACzD,YAAA,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,KAAI;gBACzB,MAAM,OAAO,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,IAAG;oBACrC,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,KAAM,CAAC,CAAC;AACxB,oBAAA,IAAI,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE;wBACnD,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAC9B,qBAAA;oBACD,IAAI,GAAG,CAAC,KAAK,KAAK,mBAAmB,IAAI,GAAG,CAAC,UAAU,KAAK,oBAAoB,EAAE;wBAChF,OAAO,CAAA,GAAA,EAAM,CAAC,CAAA,CAAE,CAAC;AAClB,qBAAA;oBACD,OAAO,CAAC,IAAI,EAAE,CAAC;AACjB,iBAAC,CAAC,CAAC;AACH,gBAAA,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC;gBACnC,OAAO,CAAC,KAAK,GAAG,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC;AACjC,aAAC,CAAC,CAAA;AACH,SAAA;AAED,QAAA,MAAM,GAAG,GAAY;AACnB,YAAA,GAAG,QAAQ;YACX,EAAE;YACF,OAAO;AACP,YAAA,GAAG,IAAI;SACR,CAAC;;QAGF,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QACxC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,EAAE;AACtC,YAAA,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK;AACjD,SAAA,CAAC,CAAC;;AAGV,QAAA,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,yBAAyB,EAAE,CAAC,CAAC;AAClE,QAAA,MAAM,CAAC,IAAI,EAAE,iCAAiC,CAAC,CAAC;KACjD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoID,IAAA,YAAY,CAAC,MAAW,EAAA;AACtB,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAC9C,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC5C,QAAA,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;AAC7B,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AACzB,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;KAC5B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4DM,IAAA,UAAU,CAAC,MAAW,EAAA;AAC3B,QAAA,OAAO,UAAU,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;KAClE;AAED,IAAA,wBAAwB,CAAC,WAAmB,EAAA;AAC1C,QAAA,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;AAChC,QAAA,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC;KAClC;AAED,IAAA,iBAAiB,CAAC,MAAW,EAAA;QAC3B,IAAI,MAAM,CAAC,KAAK,IAAI,IAAI,IAAI,MAAM,CAAC,KAAK,KAAK,EAAE;AAAE,YAAA,OAAO,EAAE,CAAC;QAC3D,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACxC,IAAI,KAAK,CAAC,MAAM,CAAC;YAAE,OAAO,MAAM,CAAC,KAAK,CAAC;AACvC,QAAA,OAAO,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE;AACpC,YAAA,qBAAqB,EAAE,CAAC;AACxB,YAAA,qBAAqB,EAAE,CAAC;AACzB,SAAA,CAAC,CAAC;KACJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAqDO,sBAAsB,GAAA;AAC9B,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,YAAY,CAAC,SAAS,CAAC,WAAW,IAAG;YAC9D,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC9C,YAAA,MAAM,SAAS,GAAG,aAAa,EAAE,KAAK,CAAC;AACvC,YAAA,IAAI,CAAC,WAAW,IAAI,CAAC,SAAS;gBAAE,OAAO;AACvC,YAAA,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC;AACvC,YAAA,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC;AAEnC,YAAA,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC;YACrC,SAAS,EAAE,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;YAC5C,IAAI,MAAM,GAAG,SAAS,EAAE;AACtB,gBAAA,aAAa,EAAE,UAAU,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAClE,aAAA;AACH,SAAC,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,YAAY,CAAC,SAAS,CAAC,SAAS,IAAG;YAC1D,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AAClD,YAAA,MAAM,WAAW,GAAG,eAAe,EAAE,KAAK,CAAC;AAC3C,YAAA,IAAI,CAAC,SAAS,IAAI,CAAC,WAAW;gBAAE,OAAO;AACvC,YAAA,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC;AACnC,YAAA,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC;AAEvC,YAAA,MAAM,WAAW,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC;YACrC,WAAW,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;YAC5C,IAAI,QAAQ,GAAG,WAAW,EAAE;AAC1B,gBAAA,eAAe,EAAE,UAAU,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtE,aAAA;AACH,SAAC,CAAC,CAAC;KACJ;IAEO,uBAAuB,GAAA;AAC7B,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,YAAY,CAAC,SAAS,CAAC,GAAG,IAAG;YACpD,IAAG,GAAG,KAAK,IAAI,EAAC;AACd,gBAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AAC/C,aAAA;AACH,SAAC,CAAC,CAAA;KACH;;;;;;;;;;;IAaD,gBAAgB,GAAA;AACZ,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC,GAAG,KAAG;YACrD,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC;AACrC,YAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;AAC5B,SAAC,CAAC,CAAA;KAEH;;8HA18BU,iCAAiC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAf,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAM,aAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjC,iCAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iCAAiC,uECxB9C,6miBA4VU,EAAA,MAAA,EAAA,CAAA,0+SAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,SAAA,EAAA,WAAA,EAAA,SAAA,EAAA,qBAAA,EAAA,6BAAA,EAAA,gCAAA,EAAA,kBAAA,EAAA,uBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,aAAA,EAAA,wBAAA,EAAA,6BAAA,EAAA,oBAAA,EAAA,6BAAA,EAAA,8BAAA,EAAA,8BAAA,EAAA,wBAAA,EAAA,sBAAA,EAAA,YAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,qBAAA,EAAA,0BAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,kBAAA,EAAA,8BAAA,EAAA,2BAAA,EAAA,UAAA,EAAA,aAAA,EAAA,aAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,uBAAA,EAAA,mBAAA,EAAA,wBAAA,EAAA,+BAAA,EAAA,wBAAA,EAAA,6BAAA,EAAA,+BAAA,EAAA,8BAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,+BAAA,EAAA,gBAAA,EAAA,yBAAA,EAAA,8BAAA,EAAA,qBAAA,EAAA,0BAAA,EAAA,+BAAA,EAAA,wBAAA,EAAA,mBAAA,EAAA,0BAAA,EAAA,qBAAA,EAAA,aAAA,EAAA,qBAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,sCAAA,EAAA,cAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,6BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,8BAAA,EAAA,2BAAA,EAAA,6BAAA,EAAA,YAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,qBAAA,EAAA,oBAAA,EAAA,6BAAA,EAAA,0BAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,SAAA,EAAA,cAAA,EAAA,UAAA,EAAA,WAAA,EAAA,YAAA,EAAA,wBAAA,EAAA,uBAAA,EAAA,2BAAA,EAAA,eAAA,EAAA,2BAAA,EAAA,qBAAA,EAAA,+BAAA,EAAA,4BAAA,EAAA,yBAAA,EAAA,OAAA,EAAA,wBAAA,EAAA,yBAAA,EAAA,kCAAA,EAAA,+BAAA,EAAA,wBAAA,EAAA,uBAAA,EAAA,wBAAA,EAAA,iCAAA,EAAA,8BAAA,EAAA,uBAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,wBAAA,EAAA,mBAAA,EAAA,yBAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,wBAAA,EAAA,gBAAA,EAAA,yBAAA,EAAA,+BAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,yBAAA,EAAA,wBAAA,EAAA,6BAAA,EAAA,yBAAA,EAAA,2CAAA,EAAA,aAAA,EAAA,uBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,4BAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,8BAAA,EAAA,mCAAA,EAAA,2BAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,6BAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,uBAAA,EAAA,gCAAA,EAAA,6BAAA,EAAA,oBAAA,EAAA,8BAAA,EAAA,kBAAA,EAAA,sBAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,yBAAA,EAAA,0BAAA,EAAA,sBAAA,EAAA,iBAAA,EAAA,2BAAA,EAAA,iCAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,2BAAA,EAAA,wBAAA,EAAA,uCAAA,EAAA,UAAA,EAAA,2BAAA,EAAA,iBAAA,EAAA,uBAAA,EAAA,gCAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,yBAAA,EAAA,+BAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,cAAA,EAAA,SAAA,EAAA,eAAA,EAAA,4BAAA,EAAA,2CAAA,EAAA,kBAAA,EAAA,uBAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,yBAAA,EAAA,2BAAA,EAAA,qBAAA,EAAA,0BAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,iCAAA,EAAA,yBAAA,EAAA,qBAAA,EAAA,sBAAA,EAAA,yBAAA,EAAA,2BAAA,EAAA,wBAAA,EAAA,0BAAA,EAAA,+BAAA,EAAA,iCAAA,EAAA,qCAAA,EAAA,oBAAA,EAAA,0BAAA,EAAA,4BAAA,EAAA,4BAAA,EAAA,0BAAA,EAAA,2BAAA,EAAA,0BAAA,EAAA,yBAAA,EAAA,iCAAA,EAAA,wBAAA,EAAA,4BAAA,EAAA,oCAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,yBAAA,EAAA,wBAAA,EAAA,2BAAA,EAAA,uBAAA,EAAA,mBAAA,EAAA,6BAAA,EAAA,yBAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,8BAAA,EAAA,cAAA,EAAA,cAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,+BAAA,EAAA,OAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,eAAA,EAAA,2BAAA,EAAA,sBAAA,EAAA,sBAAA,EAAA,WAAA,EAAA,qBAAA,EAAA,oBAAA,EAAA,uBAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,yBAAA,EAAA,2BAAA,EAAA,gCAAA,EAAA,0BAAA,EAAA,iBAAA,EAAA,0BAAA,EAAA,yBAAA,EAAA,wBAAA,EAAA,sBAAA,EAAA,sBAAA,EAAA,sBAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,aAAA,EAAA,2BAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,sBAAA,EAAA,6BAAA,EAAA,6BAAA,EAAA,wBAAA,EAAA,6BAAA,EAAA,0BAAA,EAAA,+BAAA,EAAA,aAAA,EAAA,4BAAA,EAAA,eAAA,EAAA,+BAAA,EAAA,0BAAA,EAAA,gCAAA,EAAA,8BAAA,EAAA,mBAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,sBAAA,EAAA,sBAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,UAAA,EAAA,cAAA,EAAA,aAAA,EAAA,aAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,yBAAA,EAAA,sBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,eAAA,EAAA,cAAA,EAAA,eAAA,EAAA,aAAA,EAAA,oBAAA,EAAA,wBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,yBAAA,EAAA,uBAAA,EAAA,yBAAA,EAAA,uBAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,4BAAA,EAAA,qBAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,cAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,eAAA,EAAA,aAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,aAAA,EAAA,cAAA,EAAA,YAAA,EAAA,uBAAA,EAAA,gBAAA,EAAA,qBAAA,EAAA,sBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,0BAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,cAAA,EAAA,eAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,uBAAA,EAAA,aAAA,EAAA,6BAAA,EAAA,0BAAA,EAAA,0BAAA,EAAA,4BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAR,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wIAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAS,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,SAAA,EAAA,SAAA,EAAA,YAAA,EAAA,aAAA,EAAA,WAAA,EAAA,eAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,UAAA,EAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,EAAA,aAAA,EAAA,eAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,OAAA,EAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,OAAA,EAAA,MAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,OAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAT,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,EAAA,WAAA,EAAA,aAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,aAAA,EAAA,cAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,SAAA,EAAA,eAAA,EAAA,cAAA,EAAA,aAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,SAAA,EAAA,YAAA,EAAA,cAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,wBAAA,EAAA,UAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,YAAA,EAAA,UAAA,EAAA,UAAA,EAAA,sBAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,WAAA,EAAA,UAAA,EAAA,QAAA,EAAA,YAAA,EAAA,WAAA,EAAA,QAAA,EAAA,OAAA,EAAA,aAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,QAAA,EAAA,MAAA,EAAA,OAAA,EAAA,QAAA,EAAA,OAAA,EAAA,KAAA,EAAA,QAAA,EAAA,QAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAa,eAAA,EAAA,QAAA,EAAA,YAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAR,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FDpUG,iCAAiC,EAAA,UAAA,EAAA,CAAA;kBAL7C,SAAS;+BACE,iCAAiC,EAAA,QAAA,EAAA,6miBAAA,EAAA,MAAA,EAAA,CAAA,0+SAAA,CAAA,EAAA,CAAA;;;MEVhC,YAAY,CAAA;;yGAAZ,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAZ,YAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,iBAJN,yBAAyB,CAAA,EAAA,OAAA,EAAA,CAC9B,YAAY,EAAE,WAAW,aACzB,yBAAyB,CAAA,EAAA,CAAA,CAAA;0GAE1B,YAAY,EAAA,OAAA,EAAA,CAHX,YAAY,EAAE,WAAW,CAAA,EAAA,CAAA,CAAA;2FAG1B,YAAY,EAAA,UAAA,EAAA,CAAA;kBALxB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACN,YAAY,EAAE,CAAC,yBAAyB,CAAC;AACzC,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,WAAW,CAAC;oBACpC,OAAO,EAAE,CAAC,yBAAyB,CAAC;AACvC,iBAAA,CAAA;;;ACUK,SAAU,aAAa,CAAC,MAAqB,EAAA;IACjD,MAAM,UAAU,GAAE,gCAAgC,CAAC;AAEnD,IAAA,OAAO,MAAM,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,SAAS,EAAE,CAAC;AACnD,CAAC;MAiDY,gBAAgB,CAAA;;6GAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAhB,gBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,iBA5CzB,mBAAmB;QACnB,kCAAkC;QAClC,iCAAiC;QACjC,eAAe;QACf,2BAA2B;QAC3B,eAAe;AACf,QAAA,qBAAqB,aAGrB,YAAY;QACZ,uBAAuB;QACvB,YAAY;QACZ,WAAW;QACX,YAAY;QACZ,mBAAmB;QACnB,YAAY;QACR,aAAa;QACb,YAAY;QACZ,uBAAuB;QACvB,WAAW;QACX,YAAY;QACZ,SAAS;QACT,mBAAmB;QACnB,cAAc;QAClB,mBAAmB;QACnB,SAAS;AACT,QAAA,cAAc,aAYd,mBAAmB;QACnB,kCAAkC;QAClC,iCAAiC;QACjC,2BAA2B,CAAA,EAAA,CAAA,CAAA;AAGlB,gBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,EAhBhB,SAAA,EAAA;QACT,aAAa;AACb,QAAA;AACE,YAAA,OAAO,EAAE,eAAe;AACxB,YAAA,UAAU,EAAE,aAAa;YACzB,IAAI,EAAE,CAAC,aAAa,CAAC;AACrB,YAAA,KAAK,EAAE,IAAI;AACZ,SAAA;AACF,KAAA,EAAA,OAAA,EAAA,CA3BC,YAAY;QACZ,uBAAuB;QACvB,YAAY;QACZ,WAAW;QACX,YAAY;QACZ,mBAAmB;QACnB,YAAY;QACR,aAAa;QACb,YAAY;QACZ,uBAAuB;QACvB,WAAW;QACX,YAAY;QACZ,SAAS;QACT,mBAAmB;QACnB,cAAc;QAClB,mBAAmB;QACnB,SAAS;QACT,cAAc,CAAA,EAAA,CAAA,CAAA;2FAkBL,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBA9C5B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,mBAAmB;wBACnB,kCAAkC;wBAClC,iCAAiC;wBACjC,eAAe;wBACf,2BAA2B;wBAC3B,eAAe;wBACf,qBAAqB;AACtB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,uBAAuB;wBACvB,YAAY;wBACZ,WAAW;wBACX,YAAY;wBACZ,mBAAmB;wBACnB,YAAY;wBACR,aAAa;wBACb,YAAY;wBACZ,uBAAuB;wBACvB,WAAW;wBACX,YAAY;wBACZ,SAAS;wBACT,mBAAmB;wBACnB,cAAc;wBAClB,mBAAmB;wBACnB,SAAS;wBACT,cAAc;AACf,qBAAA;AACD,oBAAA,SAAS,EAAE;wBACT,aAAa;AACb,wBAAA;AACE,4BAAA,OAAO,EAAE,eAAe;AACxB,4BAAA,UAAU,EAAE,aAAa;4BACzB,IAAI,EAAE,CAAC,aAAa,CAAC;AACrB,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACF,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,mBAAmB;wBACnB,kCAAkC;wBAClC,iCAAiC;wBACjC,2BAA2B;AAC5B,qBAAA;AACF,iBAAA,CAAA;;;MCnEY,oBAAoB,CAAA;AAiBhC;;ACrBD;;AAEG;;ACFH;;AAEG;;;;"}
1
+ {"version":3,"file":"sachin9822-reports-lib.mjs","sources":["../../../projects/reports-lib/src/lib/reports-lib.service.ts","../../../projects/reports-lib/src/lib/services/config.service.ts","../../../projects/reports-lib/src/lib/services/report.service.ts","../../../projects/reports-lib/src/lib/shared/export.service.ts","../../../projects/reports-lib/src/lib/shared/loader/loader.component.ts","../../../projects/reports-lib/src/lib/shared/loader/loader.component.html","../../../projects/reports-lib/src/lib/reports-lib.component.ts","../../../projects/reports-lib/src/lib/shared/page-size-selector/page-size-selector.component.ts","../../../projects/reports-lib/src/lib/shared/page-size-selector/page-size-selector.component.html","../../../projects/reports-lib/src/lib/models/transaction-enquiry-report/transaction-enquiry.model.ts","../../../projects/reports-lib/src/lib/shared/search-filter/search-filter.component.ts","../../../projects/reports-lib/src/lib/shared/search-filter/search-filter.component.html","../../../projects/reports-lib/src/lib/components/acc-gl-details-enquiry-report/acc-gl-details-enquiry-report.component.ts","../../../projects/reports-lib/src/lib/components/acc-gl-details-enquiry-report/acc-gl-details-enquiry-report.component.html","../../../projects/reports-lib/src/lib/components/transaction-enquiry-report/transaction-enquiry-report.component.ts","../../../projects/reports-lib/src/lib/components/transaction-enquiry-report/transaction-enquiry-report.component.html","../../../projects/reports-lib/src/lib/reports-lib-routing.module.ts","../../../projects/reports-lib/src/lib/models/branch-activity-report/branch-activity-send-report-request-domain-model.ts","../../../projects/reports-lib/src/lib/models/component-loading-states.ts","../../../projects/reports-lib/src/lib/components/branch-activity-send-report/branch-activity-send-report.component.ts","../../../projects/reports-lib/src/lib/components/branch-activity-send-report/branch-activity-send-report.component.html","../../../projects/reports-lib/src/lib/shared/shared.module.ts","../../../projects/reports-lib/src/lib/reports-lib.module.ts","../../../projects/reports-lib/src/lib/models/branch-activity-report/branch-activity-send-report.ts","../../../projects/reports-lib/src/public-api.ts","../../../projects/reports-lib/src/sachin9822-reports-lib.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ReportsLibService {\r\n\r\n constructor() { }\r\n}\r\n","\r\nimport {tap} from 'rxjs/operators';\r\nimport { IAppConfig } from '../models/app-config.model';\r\nimport { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';\r\nimport { Observable , BehaviorSubject } from 'rxjs';\r\nimport * as _ from 'lodash';\r\n\r\n@Injectable()\r\nexport class ConfigService {\r\n private config: IAppConfig;\r\n\r\n onConfigChanged: BehaviorSubject<any>;\r\n\r\n constructor(private http: HttpClient) {}\r\n\r\n load(url: string): Observable<any> {\r\n return this.http.get(url).pipe(tap((json: any) => {\r\n // Set the config\r\n this.config = json;\r\n\r\n // Create the behavior subject\r\n this.onConfigChanged = new BehaviorSubject(this.config);\r\n }));\r\n }\r\n\r\n get get(): IAppConfig {\r\n return this.config;\r\n }\r\n\r\n /**\r\n * Set the new config from given object\r\n *\r\n * @param config\r\n */\r\n setConfig(config: IAppConfig): void {\r\n // Merge the config\r\n this.config = _.merge({}, this.config, config);\r\n\r\n // Trigger the event\r\n this.onConfigChanged.next(this.config);\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { AccGlDetailsEnquiryReportModel } from '../models/acc-gl-details-enquiry-report/accgl-details-enquiry-reportmodel';\r\nimport { Observable } from 'rxjs';\r\nimport { map, retry } from 'rxjs/operators';\r\nimport { BranchActivitySendReportRequestDomainModel } from '../models/branch-activity-report/branch-activity-send-report-request-domain-model';\r\nimport { BranchActivityReport } from '../models/branch-activity-report/branch-activity-send-report';\r\nimport { Product, User, Branch, TransactionData, PageLoadDataResponse, SearchCriteria } from '../models/transaction-enquiry-report/transaction-enquiry.model';\r\nimport { ConfigService } from './config.service';\r\n\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ReportService {\r\n\r\n private reportServiceUrl: string;\r\n // private reportUrl = '/api/v1/Report';\r\n // private systemReportUrl = '/api/v1/CompanyConfiguration/SystemReports';\r\n\r\n constructor(private http: HttpClient, private config: ConfigService) {\r\n if (!this.config.get) {\r\n throw new Error('ConfigService is not initialized. Ensure APP_INITIALIZER ran before using ReportService.');\r\n }\r\n this.reportServiceUrl = this.config.get.reportServiceUrl;\r\n }\r\n\r\n public getAccGLDetailsReport(formattedDate: string | undefined, dateType: string): Observable<AccGlDetailsEnquiryReportModel> {\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/AccGlDetailsEnquiryReport/GetAccGLDetailsEnquiryReport/${formattedDate}/${dateType}`;\r\n return this.http.get<AccGlDetailsEnquiryReportModel>(apiPath);\r\n }\r\n\r\n getCompanyConfig(): Observable<any[]> {\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/GetCompanyReportConfiguration`;\r\n return this.http.get(apiPath).pipe(map(response => {\r\n return <any[]>response;\r\n }));\r\n }\r\n\r\n getPayInAgents(sysUserId: string): Observable<any[]> {\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/GetAllPayInAgents/${sysUserId}`;\r\n return this.http.get(apiPath).pipe(map(response => {\r\n return <any[]>response;\r\n }));\r\n }\r\n\r\n getBranchByAgent(sysUserId: string, code: string): Observable<any[]> {\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/GetBranchByAgent/${code}/${sysUserId}/BH`;\r\n return this.http.get(apiPath).pipe(map(response => {\r\n retry(2),\r\n map(response => response)\r\n return <any[]>response;\r\n }));\r\n }\r\n\r\n getParams(): Observable<any[]> {\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/GetBranchActivitySendReportParams`;\r\n return this.http.get(apiPath).pipe(map(response => {\r\n retry(2),\r\n map(response => response)\r\n return <any[]>response;\r\n }));\r\n }\r\n\r\n getBranchActivityReport(data: BranchActivitySendReportRequestDomainModel | any): Observable<Record<string, BranchActivityReport[]>> {\r\n const apiPath = `${this.reportServiceUrl}/api/v1/Report/GetBranchActivitySendReport`;\r\n return this.http.post(apiPath, data).pipe(map(response => {\r\n return <Record<string, BranchActivityReport[]>>response;\r\n }));\r\n }\r\n\r\n public getUserNameFromSessionStorage(): string {\r\n let fossilUserName = sessionStorage.getItem('fossilusername');\r\n let ezremitusername = sessionStorage.getItem('ezremitusername');\r\n if (fossilUserName) {\r\n return fossilUserName.replace(/^\"(.*)\"$/, '$1');\r\n } else {\r\n return ezremitusername.replace(/^\"(.*)\"$/, '$1');\r\n }\r\n }\r\n\r\n //Trasaction Enquiry Report Apis\r\n // API 1: Get initial page load data\r\n getPageLoadData(sysUserID: string): Observable<PageLoadDataResponse> {\r\n const url = `${this.reportServiceUrl}/api/v1/Report/TransactionEnquiry/pageLoadData/${sysUserID}`;\r\n return this.http.get(url).pipe(\r\n map(response => <PageLoadDataResponse>response)\r\n );\r\n }\r\n\r\n // API 2: Get branches by agent\r\n getBranchesByAgent(agentCode: string, sysUserID: string): Observable<Branch[]> {\r\n const url = `${this.reportServiceUrl}/api/v1/Report/TransactionEnquiry/branches/${agentCode}/${sysUserID}`;\r\n return this.http.get(url).pipe(\r\n map(response => <Branch[]>response)\r\n );\r\n }\r\n\r\n // API 3: Get products by agent\r\n getProductsByAgent(agentCode: string): Observable<Product[]> {\r\n const url = `${this.reportServiceUrl}/api/v1/Report/TransactionEnquiry/products/${agentCode}`;\r\n return this.http.get(url).pipe(\r\n map(response => <Product[]>response)\r\n );\r\n }\r\n\r\n // API 4: Get users by branch\r\n getUsersByBranch(businessPartnerCode: string, branchCode: string): Observable<User[]> {\r\n const url = `${this.reportServiceUrl}/api/v1/Report/TransactionEnquiry/users/${businessPartnerCode}/${branchCode}`;\r\n return this.http.get(url).pipe(\r\n map(response => <User[]>response)\r\n );\r\n }\r\n\r\n // API 5: Search transactions\r\n searchTransactions(request: SearchCriteria): Observable<TransactionData[]> {\r\n const url = `${this.reportServiceUrl}/api/v1/Report/TransactionEnquiry/search-transactions`;\r\n return this.http.post(url, request).pipe(\r\n map(response => <TransactionData[]>response)\r\n );\r\n }\r\n\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport jsPDF from 'jspdf';\r\nimport 'jspdf-autotable';\r\nimport * as ExcelJS from 'exceljs';\r\nimport * as FileSaver from 'file-saver';\r\n\r\ndeclare module 'jspdf' {\r\n interface jsPDF {\r\n autoTable: (options: any) => jsPDF;\r\n }\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ExportService {\r\n\r\n private readonly pdfFontSize = 10;\r\n private readonly pdfLineHeight = 7;\r\n private readonly pdfLeftMargin = 15;\r\n private logoBase64: string | undefined;\r\n \r\n constructor() {\r\n this.loadImageAsBase64('assets/reports-lib/assets/images/XMLogo.png').then(base64 => {\r\n this.logoBase64 = base64;\r\n });\r\n }\r\n \r\n // ------------------------ Utility ------------------------\r\n private loadImageAsBase64(imagePath: string): Promise<string> {\r\n return new Promise((resolve, reject) => {\r\n const img = new Image();\r\n img.crossOrigin = 'anonymous';\r\n img.src = imagePath;\r\n \r\n img.onload = () => {\r\n const scale = 6;\r\n const canvas = document.createElement('canvas');\r\n canvas.width = img.width * scale;\r\n canvas.height = img.height * scale;\r\n \r\n const ctx = canvas.getContext('2d');\r\n if (ctx) {\r\n ctx.scale(scale, scale);\r\n ctx.drawImage(img, 0, 0);\r\n const base64 = canvas.toDataURL('image/png', 1.0); // 1.0 = highest quality\r\n resolve(base64);\r\n } else {\r\n reject('Failed to get canvas context.');\r\n }\r\n };\r\n \r\n img.onerror = () => reject('Failed to load image: ' + imagePath);\r\n });\r\n}\r\n \r\n formatDate(value: any): string {\r\n const date = new Date(value);\r\n return isNaN(date.getTime()) ? '' :\r\n `${date.getDate().toString().padStart(2, '0')}/${(date.getMonth() + 1).toString().padStart(2, '0')}/${date.getFullYear()}`;\r\n }\r\n \r\n formatDateTime(date: Date): string {\r\n const day = date.getDate().toString().padStart(2, '0');\r\n const month = (date.getMonth() + 1).toString().padStart(2, '0');\r\n const year = date.getFullYear();\r\n\r\n // 12-hour format\r\n let hours = date.getHours();\r\n const minutes = date.getMinutes().toString().padStart(2, '0');\r\n const ampm = hours >= 12 ? 'PM' : 'AM';\r\n hours = hours % 12;\r\n hours = hours ? hours : 12; // the hour '0' should be '12'\r\n const hoursStr = hours.toString().padStart(2, '0');\r\n\r\n return `${day}/${month}/${year} ${hoursStr}:${minutes} ${ampm}`;\r\n}\r\n \r\n generateReportMetadata(metadata: [string, string][]): [string, string][] {\r\n return metadata.filter(([_, value]) => value !== undefined && value !== null);\r\n }\r\n \r\n prepareExportTable(data: any[], columnDefs: any[], options: {\r\n excludeFields?: string[],\r\n currencyFields?: string[]\r\n } = {}): { headers: string[], rows: any[][] } {\r\n const { excludeFields = ['srno', 'serial', 'action'], currencyFields = [] } = options;\r\n \r\n const filteredColumns = columnDefs.filter(col =>\r\n col.field &&\r\n !excludeFields.some(ex => col.field.toLowerCase().includes(ex)) &&\r\n !excludeFields.some(ex => col.headerName?.toLowerCase().includes(ex))\r\n );\r\n \r\n const headers = ['Sr No', ...filteredColumns.map(col => col.headerName || col.field)];\r\n \r\n const rows = data.map((row, index) => {\r\n const rowData = filteredColumns.map(col => {\r\n let value = row[col.field];\r\n const fieldName = col.field?.toLowerCase() || '';\r\n \r\n // Handle various date field names\r\n if (\r\n (fieldName.includes('date') ||\r\n fieldName.includes('businessdate')) &&\r\n value\r\n ) {\r\n value = this.formatDate(value);\r\n }\r\n \r\n // Format currency fields\r\n if (currencyFields.includes(col.field) && value != null) {\r\n value = parseFloat(value).toFixed(3);\r\n }\r\n return value ?? '';\r\n });\r\n return [index + 1, ...rowData];\r\n });\r\n return { headers, rows };\r\n }\r\n \r\n // ------------------------ PDF Universal ------------------------\r\n async exportToPdfUniversal(title: string, metadata: [string, string][], headers: string[], rows: any[][], fileName: string): Promise<void> {\r\n const doc = new jsPDF({ orientation: 'landscape', unit: 'mm', format: [400, 210] });\r\n \r\n const logoWidth = 38.4, logoHeight = 17.5, logoX = 15, logoY = 10;\r\n const pageWidth = doc.internal.pageSize.width;\r\n const titleY = 18;\r\n \r\n if (this.logoBase64) {\r\n doc.addImage(this.logoBase64, 'PNG', logoX, logoY, logoWidth, logoHeight);\r\n }\r\n \r\n doc.setFontSize(15);\r\n doc.setFont('helvetica', 'bold');\r\n doc.text(title, pageWidth / 2, titleY, { align: 'center' });\r\n \r\n let currentY = titleY + 14;\r\n doc.setFontSize(this.pdfFontSize);\r\n metadata.forEach(([label, value], i) => {\r\n const y = currentY + i * this.pdfLineHeight;\r\n doc.setFont('helvetica', 'bold');\r\n doc.text(label, this.pdfLeftMargin, y);\r\n const labelWidth = doc.getTextWidth(label + ' ');\r\n doc.setFont('helvetica', 'normal');\r\n doc.text(value, this.pdfLeftMargin + labelWidth, y);\r\n });\r\n currentY += metadata.length * this.pdfLineHeight + 5;\r\n \r\n const columnStyles: { [key: number]: any } = {};\r\n headers.forEach((_, i) => columnStyles[i] = { cellWidth: 'auto' });\r\n \r\n doc.autoTable({\r\n head: [headers],\r\n body: rows,\r\n startY: currentY,\r\n theme: 'grid',\r\n headStyles: {\r\n fillColor: [220, 220, 220], textColor: 0,\r\n fontStyle: 'bold', fontSize: 9, halign: 'center',\r\n },\r\n bodyStyles: { fontSize: 8, fillColor: [255, 255, 255], textColor: [0, 0, 0] },\r\n styles: { cellPadding: 2, overflow: 'linebreak', minCellHeight: 6 },\r\n columnStyles\r\n });\r\n \r\n doc.save(fileName);\r\n }\r\n \r\n // ------------------------ Excel Universal ------------------------\r\n exportToExcelUniversal(title: string, metadata: [string, string][], headers: string[], rows: any[][], fileName: string): void {\r\n const workbook = new ExcelJS.Workbook();\r\n const worksheet = workbook.addWorksheet(title);\r\n \r\n let currentRow = 1;\r\n \r\n // Add image if available\r\n if (this.logoBase64) {\r\n const base64Data = this.logoBase64.replace(/^data:image\\/\\w+;base64,/, '');\r\n const imageId = workbook.addImage({\r\n base64: base64Data,\r\n extension: 'png',\r\n });\r\n \r\n // Place image at top-left (e.g., A1:C4)\r\n worksheet.addImage(imageId, {\r\n tl: { col: 0, row: 0 },\r\n ext: { width: 145, height: 66 },\r\n editAs: 'oneCell'\r\n });\r\n }\r\n \r\n // Add title aligned in middle horizontally (merged across all columns)\r\n const titleRow = worksheet.getRow(currentRow);\r\n titleRow.getCell(4).value = title;\r\n titleRow.getCell(4).font = { bold: true, size: 16 };\r\n titleRow.getCell(4).alignment = { vertical: 'middle', horizontal: 'left' };\r\n \r\n const titleMergeEnd = String.fromCharCode(64 + headers.length);\r\n worksheet.mergeCells(`D${currentRow}:${titleMergeEnd}${currentRow}`);\r\n currentRow += 3; // Move past image space\r\n \r\n // Add metadata\r\n metadata.forEach(([label, value]) => {\r\n const row = worksheet.getRow(currentRow++);\r\n const cell = row.getCell(1);\r\n cell.value = {\r\n richText: [\r\n { text: `${label}: `, font: { bold: true } },\r\n { text: value ?? '', font: { bold: false } }\r\n ]\r\n };\r\n worksheet.mergeCells(`A${row.number}:${String.fromCharCode(64 + headers.length)}${row.number}`);\r\n });\r\n \r\n worksheet.addRow([]);\r\n currentRow++;\r\n \r\n // Add table header row\r\n const headerRow = worksheet.getRow(currentRow++);\r\n headers.forEach((header, i) => {\r\n const cell = headerRow.getCell(i + 1);\r\n cell.value = header;\r\n cell.font = { bold: true };\r\n cell.fill = { type: 'pattern', pattern: 'solid', fgColor: { argb: 'D9D9D9' } };\r\n cell.alignment = { vertical: 'middle', horizontal: 'center' };\r\n cell.border = {\r\n top: { style: 'thin' },\r\n bottom: { style: 'thin' },\r\n left: { style: 'thin' },\r\n right: { style: 'thin' }\r\n };\r\n });\r\n \r\n const dataStartRow = currentRow;\r\n rows.forEach(rowData => {\r\n const row = worksheet.getRow(currentRow++);\r\n rowData.forEach((value, i) => {\r\n const cell = row.getCell(i + 1);\r\n cell.value = value;\r\n cell.border = {\r\n top: { style: 'thin' },\r\n bottom: { style: 'thin' },\r\n left: { style: 'thin' },\r\n right: { style: 'thin' }\r\n };\r\n });\r\n });\r\n \r\n // Auto column widths\r\n for (let i = 1; i <= headers.length; i++) {\r\n let maxLength = headers[i - 1].length;\r\n for (let rowNum = dataStartRow; rowNum <= worksheet.lastRow!.number; rowNum++) {\r\n const val = worksheet.getRow(rowNum).getCell(i).value?.toString() || '';\r\n maxLength = Math.max(maxLength, val.length);\r\n }\r\n worksheet.getColumn(i).width = maxLength + 2;\r\n }\r\n \r\n workbook.xlsx.writeBuffer().then(buffer => {\r\n const blob = new Blob([buffer], {\r\n type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'\r\n });\r\n FileSaver.saveAs(blob, fileName);\r\n });\r\n}\r\n \r\n \r\n // ------------------------ CSV Universal ------------------------\r\n exportToCsvUniversal(title: string, metadata: [string, string][], headers: string[], rows: any[][], fileName: string): void {\r\n const metaRows = metadata.map(([k, v]) => [`${k}: ${v}`]);\r\n const csvContent = [\r\n [title],\r\n ...metaRows,\r\n [],\r\n headers,\r\n ...rows.map(row => row.map(value => `\"${value}\"`))\r\n ].map(e => e.join(',')).join('\\n');\r\n \r\n this.downloadFile(csvContent, fileName, 'text/csv');\r\n }\r\n \r\n private downloadFile(data: string, filename: string, type: string): void {\r\n const blob = new Blob([data], { type });\r\n const link = document.createElement('a');\r\n link.href = URL.createObjectURL(blob);\r\n link.setAttribute('download', filename);\r\n document.body.appendChild(link);\r\n link.click();\r\n document.body.removeChild(link);\r\n }\r\n\r\n}\r\n\r\n","import { Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-loader',\r\n templateUrl: './loader.component.html',\r\n styleUrls: ['./loader.component.scss']\r\n})\r\n\r\nexport class LoaderComponent {\r\n}\r\n","<div class=\"loaderContainer\">\r\n <div class=\"loading\">\r\n <div class=\"loading-bar\"></div>\r\n <div class=\"loading-bar\"></div>\r\n <div class=\"loading-bar\"></div>\r\n <div class=\"loading-bar\"></div>\r\n </div>\r\n</div>","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'lib-reports-lib',\r\n template: `\r\n <p>\r\n reports-lib works!\r\n </p>\r\n `,\r\n styles: [\r\n ]\r\n})\r\nexport class ReportsLibComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n}\r\n","import { Component, Input, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'lib-page-size-selector',\r\n templateUrl: './page-size-selector.component.html',\r\n styleUrls: ['./page-size-selector.component.scss']\r\n})\r\nexport class PageSizeSelectorComponent implements OnInit {\r\n\r\n @Input() pageSizeArray: (number | string)[] = [10, 15, 20, 30, 50, 100, 200, 'All'];\r\n @Input() defaultSize: string = '15';\r\n @Input() totalEntries: number = 0;\r\n @Input() gridApi: any;\r\n\r\n selectedPageSizeOption: string = '15';\r\n\r\n ngOnInit(): void {\r\n this.selectedPageSizeOption = this.defaultSize;\r\n this.applyPageSize(this.defaultSize);\r\n }\r\n\r\n onPageSizeChanged(value: string) {\r\n this.selectedPageSizeOption = value;\r\n this.applyPageSize(value);\r\n }\r\n\r\n private applyPageSize(value: string) {\r\n const size = value === 'All' ? this.totalEntries : Number(value);\r\n if (this.gridApi) {\r\n this.gridApi.paginationSetPageSize(size);\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.gridApi = undefined;\r\n }\r\n\r\n}\r\n","<div class=\"d-flex align-items-center gap-2 entries-selecter-div\">\r\n <select class=\"form-select custom-height w-auto\" id=\"pageSize\" [(ngModel)]=\"selectedPageSizeOption\"\r\n (ngModelChange)=\"onPageSizeChanged($event)\">\r\n <option *ngFor=\"let size of pageSizeArray\" [value]=\"size\">{{ size }}</option>\r\n </select>\r\n <label class=\"entry-label\" for=\"pageSize\">Entries Per Page</label>\r\n</div>","// transaction-enquiry.model.ts\r\n\r\nexport interface Client {\r\n businessPartnerCode: string;\r\n businessPartnerName: string;\r\n displayOrder: number;\r\n}\r\n\r\nexport interface Branch {\r\n businessPartnerBranch: string;\r\n businessPartnerBranch_CorrelationId: string;\r\n branchCode: string;\r\n bank: string;\r\n number: number;\r\n}\r\n\r\nexport interface User {\r\n userName: string;\r\n userId: number;\r\n number: number;\r\n}\r\n\r\nexport interface Currency {\r\n currencyCode: string;\r\n currency: string;\r\n number: string;\r\n od: number;\r\n}\r\n\r\nexport interface Product {\r\n productCode: string;\r\n productName: string;\r\n number: number;\r\n serviceTypeCode: string;\r\n}\r\n\r\nexport interface TransactionStatus {\r\n transactionStatus: string;\r\n number: number;\r\n}\r\n\r\nexport interface IdentityType {\r\n identityType: string;\r\n identityDescription: string;\r\n number: number;\r\n}\r\n\r\nexport interface UserReportDefaults {\r\n PrincipleUserName: string;\r\n ADPrincipleUserName: string;\r\n UserName: string;\r\n UserId: number;\r\n BranchCode: string;\r\n BranchName: string;\r\n BusinessDate: string;\r\n TillCode: string;\r\n LocalCurrency: string;\r\n TimeZone: string;\r\n ExecutionTime: string;\r\n StockEnquiryAll: number;\r\n StockEnquiryBranch: number;\r\n StockEnquiryExceptOwn: number;\r\n StockEnquiryExcludeLocalAmount: number;\r\n}\r\n\r\nexport interface CompanyReportConfig {\r\n Company: string;\r\n CompanyName: string;\r\n ReportLanguage: string;\r\n}\r\n\r\nexport interface TransactionData {\r\n product: string;\r\n id: string;\r\n transactionNumber: string;\r\n transactionReferenceNumber: string;\r\n businessDate: string;\r\n sendAgent: string;\r\n sendAgtBranch: string;\r\n recvAgent: string;\r\n rcvAgtBranch: string;\r\n sendName: string;\r\n sendIdType: string;\r\n sendIdNumber: string;\r\n benName: string;\r\n payOutCurrency: string;\r\n payOutAmount: number;\r\n commission: number;\r\n payInCurrency: string;\r\n payInAmount: number;\r\n transactionStatus: string;\r\n transactionUserId: number;\r\n payoutUserId: number;\r\n receiveAgentId: number;\r\n receiveBranchBusinessPartnerId: number;\r\n sendAgentCode: string;\r\n receiveAgentCode: string;\r\n sendBranchCode: string;\r\n receiveBranchCode: string;\r\n username: string;\r\n firstNames: string;\r\n amlStatus: string;\r\n transactionNote: string;\r\n cancellationBusinessDate: string;\r\n receiveAgentCountry: string;\r\n loyaltyCardNumber: string;\r\n personContacts: string;\r\n organizationContacts: string;\r\n sendAgentCountry: string;\r\n sendAgentId: number;\r\n chequeNumber: string;\r\n paidDate: string;\r\n forexAmount: number;\r\n payoutAgentName: string;\r\n authoriseDate: string;\r\n rejectedDate: string;\r\n note: string;\r\n stopPaymentDate: string;\r\n rejectedUser: string;\r\n}\r\n\r\nexport interface SearchCriteria {\r\n fromDate: string;\r\n toDate: string;\r\n client: string;\r\n branch: string;\r\n user: string;\r\n currency: string;\r\n product: string;\r\n transactionStatus: string;\r\n transactionNo: string;\r\n cardNo: string;\r\n idType: string;\r\n idNo: string;\r\n senderName: string;\r\n beneficiaryName: string;\r\n telNo: string;\r\n receiveAmount: number;\r\n branchName: string;\r\n country: string;\r\n}\r\n\r\nexport interface PageLoadDataResponse {\r\n clients: Client[];\r\n currencies: Currency[];\r\n transactionStatuses: TransactionStatus[];\r\n}\r\n\r\nexport enum ComponentLoadingState {\r\n Error = -1,\r\n Loading = 0,\r\n Complete = 1,\r\n}","import { Component, EventEmitter, HostListener, Input, OnInit, OnDestroy, Output } from '@angular/core';\r\nimport { AbstractControl, FormArray, FormBuilder, FormGroup, ValidatorFn, Validators } from '@angular/forms';\r\nimport { UserReportDefaults, CompanyReportConfig, ComponentLoadingState, Client, Branch, Currency, Product, TransactionStatus, User } from '../../models/transaction-enquiry-report/transaction-enquiry.model';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { ReportService } from '../../services/report.service';\r\nimport { ConfigService } from '../../services/config.service';\r\n\r\n\r\n@Component({\r\n selector: 'lib-search-filter',\r\n templateUrl: './search-filter.component.html',\r\n styleUrls: ['./search-filter.component.scss']\r\n})\r\n\r\nexport class SearchFilterComponent implements OnInit, OnDestroy {\r\n @Input() ReportName!: string;\r\n @Output() searchClicked = new EventEmitter<any>();\r\n\r\n searchForm!: FormGroup;\r\n formValidationError: boolean = false;\r\n private destroy$ = new Subject<void>();\r\n\r\n loadingState: ComponentLoadingState = ComponentLoadingState.Complete;\r\n ComponentLoadingState = ComponentLoadingState;\r\n hasSearched: boolean = false;\r\n private _errorMessage: string = '';\r\n\r\n currentUser: string = '';\r\n usernameMissing: boolean = false;\r\n token = sessionStorage.getItem('access_token');\r\n applicationType = 'ezremit';\r\n companyCode = 'BH';\r\n serviceUrl: string;\r\n userReportDefaults: UserReportDefaults | null = null;\r\n companyReportConfig: CompanyReportConfig | null = null;\r\n\r\n clients1: Client[] = [];\r\n branches: Branch[] = [];\r\n users: User[] = [];\r\n currencies: Currency[] = [];\r\n products: Product[] = [];\r\n transactionStatuses: TransactionStatus[] = [];\r\n selectedStatuses: string[] = [];\r\n showStatusDropdown: boolean = false;\r\n visibleFieldKeys: string[] = [];\r\n dateType: any = 1;\r\n date: any;\r\n\r\n // Field visibility map, 'fromDate', 'toDate','product','userId','currency','transactionStatus','transactionNo'\r\n visibleFieldsMap: { [report: string]: string[] } = {\r\n 'Transaction Enquiry': ['client', 'fromDate', 'toDate', 'branch', 'product', 'currency', 'userId', 'transactionStatus', 'transactionNo'],\r\n 'FC Ledger': ['client', 'fromDate', 'toDate', 'currency', 'product'],\r\n 'Branch Activity': ['branch', 'userId', 'fromDate', 'toDate'],\r\n 'ACC GL Details Enquiry': ['dateType', 'date'],\r\n // Add more report types here\r\n };\r\n\r\n get visibleFields(): string[] {\r\n return this.visibleFieldsMap[this.ReportName] || [];\r\n }\r\n\r\n isFieldVisible(field: string): boolean {\r\n return this.visibleFields.includes(field);\r\n }\r\n\r\n constructor(\r\n private reportService: ReportService,\r\n private fb: FormBuilder,\r\n private config: ConfigService\r\n ) {\r\n this.serviceUrl = this.config.get.serviceUrl;\r\n let fossilUser = sessionStorage.getItem('fossilusername');\r\n let ezremitUser = sessionStorage.getItem('ezremitusername');\r\n\r\n if (fossilUser) this.currentUser = fossilUser;\r\n else if (ezremitUser) this.currentUser = ezremitUser;\r\n else {\r\n this.currentUser = 'vipul.katale@xpressmoney.tech';\r\n this.usernameMissing = true;\r\n }\r\n }\r\n\r\n ngOnInit(): void {\r\n this.checkReport();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n\r\n private checkReport() {\r\n if (this.ReportName == \"Transaction Enquiry\") {\r\n this.currentUser = this.currentUser.replace(/\"/g, '');\r\n\r\n this.initializeForm();\r\n this.subscribeToDateChanges();\r\n this.loadInitialData();\r\n }\r\n\r\n if (this.ReportName == \"ACC GL Details Enquiry\") {\r\n this.initializeForm();\r\n }\r\n }\r\n\r\n loadInitialData() {\r\n if (this.ReportName == 'Transaction Enquiry') {\r\n this.loadInitialDatafortxnEnquiry();\r\n }\r\n\r\n\r\n }\r\n\r\n private initializeForm(): void {\r\n if (this.ReportName == \"Transaction Enquiry\") {\r\n\r\n this.searchForm = this.fb.group(\r\n {\r\n client: ['', Validators.required],\r\n fromDate: [new Date().toISOString().split(\"T\")[0], Validators.required],\r\n toDate: [new Date().toISOString().split(\"T\")[0], Validators.required],\r\n branch: ['', Validators.required],\r\n userId: ['-1'],\r\n currency: ['All'],\r\n product: ['All', Validators.required],\r\n transactionStatus: [['All'], Validators.required],\r\n transactionNo: [''],\r\n cardNo: [''],\r\n idType: [''],\r\n idNo: [''],\r\n senderName: [''],\r\n beneficiaryName: [''],\r\n telNo: [''],\r\n receiveAmount: [''],\r\n branchName: [''],\r\n country: [''],\r\n },\r\n );\r\n\r\n this.selectedStatuses = ['All'];\r\n }\r\n\r\n if (this.ReportName == \"ACC GL Details Enquiry\") {\r\n this.searchForm = this.fb.group(\r\n {\r\n date: [new Date().toISOString().split(\"T\")[0], Validators.required],\r\n dateType: [1, Validators.required]\r\n });\r\n }\r\n }\r\n\r\n private async loadInitialDatafortxnEnquiry(): Promise<void> {\r\n this.loadingState = ComponentLoadingState.Loading;\r\n this.errorMessage = '';\r\n try {\r\n const data = await this.reportService\r\n .getPageLoadData(this.currentUser)\r\n .pipe(takeUntil(this.destroy$))\r\n .toPromise();\r\n\r\n if (data) {\r\n this.clients1 = data.clients || [];\r\n this.currencies = data.currencies || [];\r\n this.transactionStatuses = (data.transactionStatuses || []).filter(\r\n ts => ts.transactionStatus !== ''\r\n );\r\n\r\n if (\r\n !this.transactionStatuses.some(\r\n s => s.transactionStatus === 'All'\r\n )\r\n ) {\r\n this.transactionStatuses.unshift({\r\n transactionStatus: 'All',\r\n } as TransactionStatus);\r\n }\r\n\r\n this.setDefaultFormValues();\r\n\r\n if (this.clients1.length === 1) {\r\n this.searchForm.patchValue({\r\n client: this.clients1[0].businessPartnerCode,\r\n });\r\n await this.onClientChange();\r\n }\r\n }\r\n\r\n this.loadingState = ComponentLoadingState.Complete;\r\n } catch (error) {\r\n this.errorMessage = 'Failed to load initial data';\r\n this.loadingState = ComponentLoadingState.Error;\r\n }\r\n }\r\n\r\n\r\n private subscribeToDateChanges(): void {\r\n this.searchForm.get('fromDate')?.valueChanges.subscribe(fromDateStr => {\r\n const toDateControl = this.searchForm.get('toDate');\r\n const toDateStr = toDateControl?.value;\r\n if (!fromDateStr || !toDateStr) return;\r\n const fromDate = new Date(fromDateStr);\r\n const toDate = new Date(toDateStr);\r\n\r\n const maxToDate = new Date(fromDate);\r\n maxToDate?.setDate(fromDate.getDate() + 31);\r\n if (toDate > maxToDate) {\r\n toDateControl?.patchValue(maxToDate.toISOString().split(\"T\")[0]);\r\n }\r\n });\r\n\r\n this.searchForm.get('toDate')?.valueChanges.subscribe(toDateStr => {\r\n const fromDateControl = this.searchForm.get('fromDate');\r\n const fromDateStr = fromDateControl?.value;\r\n if (!toDateStr || !fromDateStr) return;\r\n const toDate = new Date(toDateStr);\r\n const fromDate = new Date(fromDateStr);\r\n\r\n const minFromDate = new Date(toDate);\r\n minFromDate?.setDate(toDate.getDate() - 31);\r\n if (fromDate < minFromDate) {\r\n fromDateControl?.patchValue(minFromDate.toISOString().split(\"T\")[0]);\r\n }\r\n });\r\n }\r\n\r\n\r\n private setDefaultFormValues(): void {\r\n if (this.userReportDefaults) {\r\n this.searchForm.patchValue({\r\n currency: this.userReportDefaults.LocalCurrency || 'All',\r\n });\r\n }\r\n }\r\n\r\n\r\n async onClientChange(): Promise<void> {\r\n this.loadingState = ComponentLoadingState.Loading;\r\n if (this.ReportName == \"Transaction Enquiry\") {\r\n const selectedClient = this.searchForm.get('client')?.value;\r\n if (!selectedClient) return;\r\n\r\n this.searchForm.patchValue({ branch: '', userId: '' });\r\n this.branches = [];\r\n this.products = [];\r\n this.users = [];\r\n\r\n try {\r\n await Promise.all([\r\n this.loadBranchesByAgent(selectedClient),\r\n this.loadProductsByAgent(selectedClient),\r\n ]);\r\n this.loadingState = ComponentLoadingState.Complete;\r\n } catch (err) {\r\n this.errorMessage = 'Failed to load branch/product';\r\n this.loadingState = ComponentLoadingState.Complete;\r\n }\r\n }\r\n }\r\n\r\n private async loadBranchesByAgent(agentCode: string): Promise<void> {\r\n const branches = await this.reportService\r\n .getBranchesByAgent(agentCode, this.currentUser)\r\n .pipe(takeUntil(this.destroy$))\r\n .toPromise();\r\n this.branches = branches || [];\r\n\r\n if (this.branches.length === 1) {\r\n this.searchForm.patchValue({ branch: this.branches[0].branchCode });\r\n await this.loadUsersByBranch(agentCode, this.branches[0].branchCode);\r\n } else if (this.branches.some(b => b.branchCode === 'All')) {\r\n this.searchForm.patchValue({ branch: 'All' });\r\n await this.loadUsersByBranch(agentCode, 'All');\r\n } else {\r\n this.searchForm.patchValue({ branch: '' });\r\n this.users = [];\r\n }\r\n }\r\n\r\n private async loadProductsByAgent(agentCode: string): Promise<void> {\r\n const products = await this.reportService\r\n .getProductsByAgent(agentCode)\r\n .pipe(takeUntil(this.destroy$))\r\n .toPromise();\r\n this.products = products || [];\r\n }\r\n\r\n async onBranchChange(): Promise<void> {\r\n this.loadingState = ComponentLoadingState.Loading;\r\n if (this.ReportName == \"Transaction Enquiry\") {\r\n const client = this.searchForm.get('client')?.value;\r\n const branch = this.searchForm.get('branch')?.value;\r\n if (client && branch) {\r\n await this.loadUsersByBranch(client, branch);\r\n this.loadingState = ComponentLoadingState.Complete;\r\n } else {\r\n this.users = [];\r\n this.loadingState = ComponentLoadingState.Complete;\r\n }\r\n }\r\n }\r\n\r\n private async loadUsersByBranch(agentCode: string, branchCode: string): Promise<void> {\r\n return new Promise<void>((resolve, reject) => {\r\n this.reportService\r\n .getUsersByBranch(agentCode, branchCode)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe({\r\n next: (users) => {\r\n this.users = users || [];\r\n\r\n // Try to find a user indicating \"All\"\r\n const allUser = this.users.find(\r\n u => u.userName === 'All' || u.userId === -1\r\n );\r\n\r\n if (allUser) {\r\n // If \"All\" is present, select it\r\n this.searchForm.patchValue({ userId: allUser.userId });\r\n } else if (this.users.length === 1) {\r\n // If only one user, select that user\r\n this.searchForm.patchValue({ userId: this.users[0].userId });\r\n } else {\r\n // Otherwise, clear user selection\r\n this.searchForm.patchValue({ userId: '' });\r\n }\r\n\r\n resolve();\r\n },\r\n error: (err) => reject(err),\r\n });\r\n });\r\n }\r\n\r\n onSearch(): void {\r\n if (this.ReportName == \"Transaction Enquiry\") {\r\n this.hasSearched = true;\r\n if (this.searchForm.invalid) {\r\n this.formValidationError = true;\r\n this.markFormGroupTouched(this.searchForm);\r\n return;\r\n }\r\n this.formValidationError = false;\r\n this.searchClicked.emit(this.buildSearchCriteria());\r\n }\r\n\r\n if (this.ReportName == \"ACC GL Details Enquiry\") {\r\n const modal = {\r\n selectedDateType: this.searchForm.controls[\"dateType\"]?.value,\r\n selectedDate: this.searchForm.controls[\"date\"]?.value\r\n }\r\n this.searchClicked.emit(modal);\r\n }\r\n }\r\n\r\n private markFormGroupTouched(formGroup: FormGroup | FormArray): void {\r\n Object.values(formGroup.controls).forEach(control => {\r\n if (control instanceof FormGroup || control instanceof FormArray) {\r\n this.markFormGroupTouched(control);\r\n } else {\r\n control.markAsTouched();\r\n }\r\n });\r\n }\r\n\r\n private buildSearchCriteria(): any {\r\n if (this.ReportName == \"Transaction Enquiry\") {\r\n const formValue = this.searchForm.value;\r\n return {\r\n bank: formValue.client,\r\n fromDate: this.toIsoFormat(formValue.fromDate),\r\n toDate: this.toIsoFormat(formValue.toDate),\r\n branch: formValue.branch,\r\n user: formValue.userId || '-1',\r\n currency: formValue.currency,\r\n product: formValue.product,\r\n status: this.selectedStatuses.includes('All') ? [''] : this.selectedStatuses,\r\n transactionNo: (formValue.transactionNo || '').trim(),\r\n cardNo: formValue.cardNo || '',\r\n idType: formValue.idType || '',\r\n idNo: formValue.idNo || '',\r\n senderName: formValue.senderName || '',\r\n beneficiaryName: formValue.beneficiaryName || '',\r\n telNo: formValue.telNo || '',\r\n payoutAmount: formValue.receiveAmount || '',\r\n branchName: formValue.branchName || '',\r\n company: this.companyCode || '',\r\n country: formValue.country || '',\r\n sysUserID: this.currentUser,\r\n };\r\n }\r\n }\r\n\r\n toIsoFormat(dateInput: any): string | undefined {\r\n if (!dateInput) return undefined;\r\n\r\n // Handle { year, month, day }\r\n if (\r\n typeof dateInput === 'object' &&\r\n dateInput.year &&\r\n dateInput.month &&\r\n dateInput.day\r\n ) {\r\n const year = dateInput.year;\r\n const month = String(dateInput.month).padStart(2, '0');\r\n const day = String(dateInput.day).padStart(2, '0');\r\n return `${year}-${month}-${day}`;\r\n }\r\n\r\n // Handle JS Date object\r\n if (dateInput instanceof Date) {\r\n if (isNaN(dateInput.getTime())) return undefined;\r\n const year = dateInput.getFullYear();\r\n const month = String(dateInput.getMonth() + 1).padStart(2, '0');\r\n const day = String(dateInput.getDate()).padStart(2, '0');\r\n return `${year}-${month}-${day}`;\r\n }\r\n\r\n // Handle dd/MM/yyyy string\r\n if (typeof dateInput === 'string' && dateInput.includes('/')) {\r\n const parts = dateInput.split('/');\r\n if (parts.length === 3) {\r\n const [day, month, year] = parts;\r\n return `${year}-${month.padStart(2, '0')}-${day.padStart(2, '0')}`;\r\n }\r\n }\r\n\r\n // Handle ISO string (yyyy-MM-dd or yyyy-MM-ddTHH:mm:ss.sssZ)\r\n if (typeof dateInput === 'string' && /^\\d{4}-\\d{2}-\\d{2}/.test(dateInput)) {\r\n // Use only date part if full ISO string\r\n return dateInput.substring(0, 10);\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n\r\n get errorMessage(): string {\r\n return this._errorMessage;\r\n }\r\n\r\n set errorMessage(value: string) {\r\n this._errorMessage = value;\r\n }\r\n\r\n get isLoading(): boolean {\r\n return this.loadingState === ComponentLoadingState.Loading;\r\n }\r\n\r\n get isError(): boolean {\r\n return this.loadingState === ComponentLoadingState.Error;\r\n }\r\n}\r\n","<h6 class=\"Breadcrumb\">\r\n <a class=\"BreadCrumbLink\" [routerLink]=\"['/reports']\">\r\n <h1>Reports</h1>\r\n </a>\r\n <a href=\"BreadCrumbLink\"></a>\r\n <span class=\"BreadCrumbArrow\"></span>\r\n <a class=\"BreadCrumbLink\">\r\n <h2>{{ ReportName }}</h2>\r\n </a>\r\n</h6>\r\n\r\n<app-loader *ngIf=\"loadingState === ComponentLoadingState.Loading\"></app-loader>\r\n\r\n<section class=\"filter-section\">\r\n <form [formGroup]=\"searchForm\" (ngSubmit)=\"onSearch()\" class=\"report-filter-form\">\r\n <div class=\"row\">\r\n <div class=\"col-custom-10-5\">\r\n <div class=\"grid-container\">\r\n <div class=\"filter-grid\">\r\n\r\n <!-- Dynamically render filters in order -->\r\n <ng-container *ngFor=\"let field of visibleFields\">\r\n <ng-container [ngSwitch]=\"field\">\r\n\r\n <!-- Client -->\r\n <div class=\"form-field\" *ngSwitchCase=\"'client'\">\r\n <div class=\"row align-items-center\">\r\n <div class=\"col-2\">\r\n <label class=\"form-label label-data\">Client<span class=\"text-danger\">*</span></label>\r\n </div>\r\n <div class=\"col-10\">\r\n <ng-select [items]=\"clients1\" bindLabel=\"businessPartnerName\" bindValue=\"businessPartnerCode\"\r\n placeholder=\"Select Client\" [clearable]=\"false\" formControlName=\"client\" required\r\n (change)=\"onClientChange()\">\r\n </ng-select>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Branch -->\r\n <div class=\"form-field\" *ngSwitchCase=\"'branch'\">\r\n <div class=\"row align-items-center\">\r\n <div class=\"col-2\">\r\n <label class=\"form-label label-data\">Branch<span class=\"text-danger\">*</span></label>\r\n </div>\r\n <div class=\"col-10\">\r\n <ng-select [items]=\"branches\" bindLabel=\"businessPartnerBranch\" bindValue=\"branchCode\"\r\n placeholder=\"Select Branch\" [clearable]=\"false\" formControlName=\"branch\" required\r\n (change)=\"onBranchChange()\">\r\n </ng-select>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- From Date -->\r\n <div class=\"form-field\" *ngSwitchCase=\"'fromDate'\">\r\n <div class=\"row align-items-center\">\r\n <div class=\"col-2\">\r\n <label class=\"form-label label-data\">From Date<span class=\"text-danger\">*</span></label>\r\n </div>\r\n <div class=\"col-10\">\r\n <div class=\"input-group date-group\">\r\n <input class=\"form-control dpicker\" placeholder=\"dd/mm/yyyy\" ngbDatepicker\r\n #fromDateInput=\"ngbDatepicker\" formControlName=\"fromDate\" autocomplete=\"off\" />\r\n <button class=\"input-group-button cal\" (click)=\"fromDateInput.toggle()\" type=\"button\">\r\n <i class=\"fa fa-calendar\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- To Date -->\r\n <div class=\"form-field\" *ngSwitchCase=\"'toDate'\">\r\n <div class=\"row align-items-center\">\r\n <div class=\"col-2\">\r\n <label class=\"form-label label-data\">To Date<span class=\"text-danger\">*</span></label>\r\n </div>\r\n <div class=\"col-10\">\r\n <div class=\"input-group date-group\">\r\n <input class=\"form-control dpicker\" placeholder=\"dd/mm/yyyy\" ngbDatepicker\r\n #toDateInput=\"ngbDatepicker\" formControlName=\"toDate\" autocomplete=\"off\" />\r\n <button class=\"input-group-button cal\" (click)=\"toDateInput.toggle()\" type=\"button\">\r\n <i class=\"fa fa-calendar\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Product -->\r\n <div class=\"form-field\" *ngSwitchCase=\"'product'\">\r\n <div class=\"row align-items-center\">\r\n <div class=\"col-2\">\r\n <label class=\"form-label label-data\">Product</label>\r\n </div>\r\n <div class=\"col-10\">\r\n <ng-select [items]=\"products\" bindLabel=\"productName\" bindValue=\"productCode\"\r\n placeholder=\"Select Product\" [clearable]=\"false\" formControlName=\"product\">\r\n </ng-select>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- User -->\r\n <div class=\"form-field\" *ngSwitchCase=\"'userId'\">\r\n <div class=\"row align-items-center\">\r\n <div class=\"col-2\">\r\n <label class=\"form-label label-data\">User<span class=\"text-danger\">*</span></label>\r\n </div>\r\n <div class=\"col-10\">\r\n <ng-select [items]=\"users\" bindLabel=\"userName\" bindValue=\"userId\" placeholder=\"Select User\"\r\n [clearable]=\"false\" formControlName=\"userId\" required>\r\n </ng-select>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Currency -->\r\n <div class=\"form-field\" *ngSwitchCase=\"'currency'\">\r\n <div class=\"row align-items-center\">\r\n <div class=\"col-2\">\r\n <label class=\"form-label label-data\">Currency</label>\r\n </div>\r\n <div class=\"col-10\">\r\n <ng-select [items]=\"currencies\" bindLabel=\"currencyCode\" bindValue=\"currencyCode\"\r\n placeholder=\"Select Currency\" [clearable]=\"false\" formControlName=\"currency\">\r\n </ng-select>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Transaction Status (Multi-select) -->\r\n <div class=\"form-field\" *ngSwitchCase=\"'transactionStatus'\">\r\n <div class=\"row align-items-center\">\r\n <div class=\"col-2\">\r\n <label class=\"form-label label-data\">Trans. Status<span class=\"text-danger\">*</span></label>\r\n </div>\r\n <div class=\"col-10\">\r\n <ng-select class=\"transaction-status-select\" [items]=\"transactionStatuses\"\r\n bindLabel=\"transactionStatus\" bindValue=\"transactionStatus\" [multiple]=\"true\"\r\n placeholder=\"Select Transaction Status\" formControlName=\"transactionStatus\"\r\n [closeOnSelect]=\"false\" [clearable]=\"false\" [searchable]=\"false\" required>\r\n <ng-template ng-option-tmp let-item=\"item\" let-item$=\"item$\">\r\n <input type=\"checkbox\" [checked]=\"item$.selected\" /> {{ item.transactionStatus }}\r\n </ng-template>\r\n </ng-select>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Transaction No -->\r\n <div class=\"form-field\" *ngSwitchCase=\"'transactionNo'\">\r\n <div class=\"row align-items-center\">\r\n <div class=\"col-2\">\r\n <label class=\"form-label label-data\">Trans. Number</label>\r\n </div>\r\n <div class=\"col-10\">\r\n <input class=\"form-control dpicker\" formControlName=\"transactionNo\"\r\n placeholder=\"Enter transaction number\" />\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Value Date -->\r\n <div class=\"form-field\" *ngSwitchCase=\"'valueDate'\">\r\n <div class=\"row align-items-center\">\r\n <div class=\"col-3\">\r\n <label class=\"form-label label-data\">Value Date<span class=\"text-danger\">*</span></label>\r\n </div>\r\n <div class=\"col-9\">\r\n <div class=\"input-group\">\r\n <input class=\"form-control dpicker\" placeholder=\"dd/mm/yyyy\" ngbDatepicker\r\n #toDateInput=\"ngbDatepicker\" formControlName=\"toDate\" autocomplete=\"off\" />\r\n <button class=\"btn btn-outline-secondary\" type=\"button\" (click)=\"toDateInput.toggle()\">\r\n <i class=\"fa fa-calendar\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Date Type -->\r\n <div class=\"form-field\" *ngSwitchCase=\"'dateType'\">\r\n <div class=\"row align-items-center\">\r\n <div class=\"col-2\">\r\n <label class=\"form-label label-data\">Date Type</label>\r\n </div>\r\n <div class=\"col-10\">\r\n <ng-select placeholder=\"- Please select -\" formControlName=\"dateType\" [clearable]=\"false\"\r\n required>\r\n <ng-option [value]=\"1\">\r\n Value Date\r\n </ng-option>\r\n <ng-option [value]=\"2\">\r\n Posting Date\r\n </ng-option>\r\n </ng-select>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Date -->\r\n <div class=\"form-field\" *ngSwitchCase=\"'date'\">\r\n <div class=\"row align-items-center\">\r\n <div class=\"col-2\">\r\n <label class=\"form-label label-data\">Date</label>\r\n </div>\r\n <div class=\"col-10\">\r\n <div class=\"input-group date-group\">\r\n <input class=\"form-control dpicker\" placeholder=\"dd/mm/yyyy\" ngbDatepicker\r\n #toDateInput=\"ngbDatepicker\" formControlName=\"date\" autocomplete=\"off\" />\r\n <button class=\"input-group-button cal\" (click)=\"toDateInput.toggle()\" type=\"button\">\r\n <i class=\"fa fa-calendar\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </ng-container>\r\n </ng-container>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-custom-1-5\">\r\n <!-- View Report Button (Always at Top-Right) -->\r\n <div class=\"form-field view-report-btn\">\r\n <button type=\"submit\" class=\"btn btn-report\">View</button>\r\n </div>\r\n </div>\r\n </div>\r\n </form>\r\n</section>\r\n<hr>\r\n<!-- Error Messages -->\r\n<div class=\"alert alert-danger mt-3\" *ngIf=\"formValidationError && hasSearched\">\r\n Please fill all required fields before submitting the form.\r\n</div>\r\n\r\n<div class=\"alert alert-danger mt-3\" *ngIf=\"errorMessage && loadingState === ComponentLoadingState.Error\">\r\n {{ errorMessage }}\r\n <button type=\"button\" class=\"btn-close\" (click)=\"errorMessage = ''\"></button>\r\n</div>","import { Component, OnInit } from '@angular/core';\r\nimport { ReportService } from '../../services/report.service';\r\nimport { AccGlDetailsEnquiryReportModel } from '../../models/acc-gl-details-enquiry-report/accgl-details-enquiry-reportmodel';\r\nimport { ColDef, ColumnApi, GridApi, GridReadyEvent } from 'ag-grid-community';\r\nimport { formatDate } from '@angular/common';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport 'jspdf-autotable';\r\nimport { ExportService } from '../../shared/export.service';\r\n\r\ndeclare module 'jspdf' {\r\n interface jsPDF {\r\n autoTable: (options: any) => jsPDF;\r\n }\r\n}\r\n\r\n@Component({\r\n selector: 'lib-acc-gl-details-enquiry-report',\r\n templateUrl: './acc-gl-details-enquiry-report.component.html',\r\n styleUrls: ['./acc-gl-details-enquiry-report.component.scss'],\r\n\r\n})\r\nexport class AccGlDetailsEnquiryReportComponent implements OnInit {\r\n\r\n\r\n searchText: string = '';\r\n gridApi: GridApi<any>;\r\n gridColumnApi!: ColumnApi;\r\n selectedExportOption: string = 'excel';\r\n svgLoader: SafeHtml = '';\r\n loading: boolean = false;\r\n dataReady: boolean = false;\r\n dateTypeFilter: number = 1;\r\n dateType: any;\r\n sysCompanyCode: any;\r\n sysUserId: any;\r\n companyName: any;\r\n reportUser: any;\r\n reportTime: any;\r\n currentReportValueOrPostDate: any\r\n accGlDetailsEnquiryReportModel: AccGlDetailsEnquiryReportModel;\r\n rowData = [];\r\n date: string;\r\n pageSize: number = 15;\r\n ReportName = 'ACC GL Details Enquiry';\r\n exportFormats = [{ formatName: \"Excel\", code: 'excel' }, { formatName: \"PDF\", code: 'pdf' }, { formatName: \"CSV\", code: 'csv' }]\r\n\r\n\r\n defaultColDef: ColDef = {\r\n resizable: true,\r\n sortable: false,\r\n minWidth: 40,\r\n suppressSizeToFit: false\r\n };\r\n\r\n columnDefs: ColDef[] = [\r\n { headerName: 'Journal ID', field: 'journalID', flex: 1.8, cellClass: 'ag-left-cols-cell compact-cell', minWidth: 91, tooltipField: 'journalID' },\r\n { headerName: 'Trans No', field: 'transactionNo', flex: 1.8, cellClass: 'ag-left-cols-cell compact-cell-transaction', minWidth: 71, tooltipField: 'transactionNo' },\r\n { headerName: 'Trans Code', field: 'transactionCode', flex: 1.2, cellClass: 'ag-left-cols-cell compact-cell', minWidth: 61, tooltipField: 'transactionCode' },\r\n { headerName: 'Journal Type', field: 'journalType', flex: 1.2, cellClass: 'ag-left-cols-cell compact-cell', minWidth: 74, tooltipField: 'journalType' },\r\n { headerName: 'Posting Date', field: 'postingDate', flex: 1.2, valueFormatter: this.formatDate, cellClass: 'ag-left-cols-cell compact-cell', minWidth: 69, tooltipValueGetter: (params) => this.formatDate(params) },\r\n { headerName: 'Value Date', field: 'valueDate', flex: 1.2, valueFormatter: this.formatDate, cellClass: 'ag-left-cols-cell compact-cell', minWidth: 68, tooltipValueGetter: (params) => this.formatDate(params), },\r\n { headerName: 'Description', field: 'description', flex: 4.8, cellClass: 'description-cell', minWidth: 119, wrapText: true, autoHeight: true, cellStyle: { 'line-height': '1.2' }, tooltipField: 'description' },\r\n { headerName: 'Account Code', field: 'accountCode', flex: 1.2, cellClass: 'ag-left-cols-cell compact-cell', minWidth: 73, tooltipField: 'accountCode' },\r\n { headerName: 'Ccy', field: 'currency', flex: 0.8, cellClass: 'ag-left-cols-cell', minWidth: 35, tooltipField: 'currency' },\r\n { headerName: 'Rate', field: 'rate', flex: 1.3, valueFormatter: this.formatNumber, cellClass: 'ag-right-aligned-cell compact-cell', minWidth: 68, tooltipValueGetter: (params) => this.formatNumber(params), },\r\n { headerName: 'FxDebit', field: 'forexDebit', flex: 1, valueFormatter: this.formatNumber, cellClass: 'ag-right-aligned-cell compact-cell', minWidth: 59, tooltipValueGetter: (params) => this.formatNumber(params), },\r\n { headerName: 'Local Debit', field: 'localDebit', flex: 1, valueFormatter: this.formatNumber, cellClass: 'ag-right-aligned-cell compact-cell', minWidth: 63, tooltipValueGetter: (params) => this.formatNumber(params), },\r\n { headerName: 'FxCredit', field: 'forexCredit', flex: 1, valueFormatter: this.formatNumber, cellClass: 'ag-right-aligned-cell compact-cell', minWidth: 59, tooltipValueGetter: (params) => this.formatNumber(params), },\r\n { headerName: 'Local Credit', field: 'localCredit', flex: 1, valueFormatter: this.formatNumber, cellClass: 'ag-right-aligned-cell compact-cell', minWidth: 63, tooltipValueGetter: (params) => this.formatNumber(params), },\r\n ];\r\n\r\n constructor(private exportService: ExportService, private reportService: ReportService, private http: HttpClient, private sanitizer: DomSanitizer) { }\r\n\r\n ngOnInit(): void {\r\n this.http.get('assets/reports-lib/assets/svg-loaders/blue-tail-spin.svg', { responseType: 'text' }).subscribe(svg => {\r\n this.svgLoader = this.sanitizer.bypassSecurityTrustHtml(svg);\r\n })\r\n this.date = new Date().toISOString().split('T')[0];\r\n }\r\n\r\n public getAccGLDetailsReport() {\r\n this.accGlDetailsEnquiryReportModel = undefined;\r\n this.loading = true;\r\n this.dataReady = false;\r\n this.selectedExportOption = 'excel';\r\n this.sysCompanyCode = 'BH';\r\n this.sysUserId = this.reportService.getUserNameFromSessionStorage();\r\n this.companyName = \"Xpress Money\";\r\n this.searchText = '';\r\n\r\n if (this.dateTypeFilter == 1) {\r\n this.dateType = 'VD';\r\n } else {\r\n this.dateType = 'PD';\r\n }\r\n\r\n this.reportService.getAccGLDetailsReport(this.date.split('T')[0], this.dateType)\r\n .subscribe(data => {\r\n this.accGlDetailsEnquiryReportModel = data;\r\n if (this.accGlDetailsEnquiryReportModel) {\r\n\r\n this.rowData = this.accGlDetailsEnquiryReportModel.journalVoucherEntries;\r\n this.companyName = this.accGlDetailsEnquiryReportModel.companyName;\r\n const userName = this.accGlDetailsEnquiryReportModel.reportUser;\r\n this.reportUser = userName.toLowerCase();\r\n this.reportTime = formatDate(new Date(), 'dd/MM/yyyy hh:mm a', 'en-US');\r\n this.currentReportValueOrPostDate = formatDate(this.accGlDetailsEnquiryReportModel.date, 'dd/MM/yyyy', 'en-US');\r\n this.loading = false;\r\n this.dataReady = true;\r\n\r\n }\r\n }, error => {\r\n this.loading = false;\r\n });\r\n }\r\n\r\n public formatDate(params: any): string {\r\n return formatDate(new Date(params.value), 'dd/MM/yyyy', 'en-US');\r\n }\r\n\r\n // onEnterhandleReport(event: Event) {\r\n // const keyboardEvent = event as KeyboardEvent;\r\n // if (keyboardEvent.key === 'Enter') {\r\n // keyboardEvent.preventDefault();\r\n // event.preventDefault();\r\n // this.getAccGLDetailsReport();\r\n // }\r\n // }\r\n\r\n // onEnterhandleExport(event: Event) {\r\n // const keyboardEvent = event as KeyboardEvent;\r\n // if (keyboardEvent.key === 'Enter') {\r\n // keyboardEvent.preventDefault();\r\n // event.preventDefault();\r\n // this.handleExport();\r\n // }\r\n // }\r\n\r\n onGridReady(params: GridReadyEvent) {\r\n this.gridApi = params.api;\r\n this.gridColumnApi = params.columnApi;\r\n }\r\n\r\n getRowHeight(params: any): number {\r\n const description = params.data?.description || '';\r\n if (description.length > 50) {\r\n return 40;\r\n }\r\n return 20;\r\n }\r\n\r\n formatNumber(params: any): string {\r\n if (params.value == null) return '';\r\n\r\n const field = params.colDef.field;\r\n\r\n if (field === 'rate') {\r\n return Number(params.value).toFixed(8);\r\n }\r\n\r\n return Number(params.value).toFixed(3);\r\n }\r\n\r\n onSearch(): void {\r\n const normalize = (str: any): string =>\r\n str?.toString()\r\n .toLowerCase()\r\n .replace(/,/g, '')\r\n .replace(/\\s+/g, ' ')\r\n .replace(/[\\u200B-\\u200D\\uFEFF]/g, '')\r\n .trim();\r\n\r\n const search = normalize(this.searchText);\r\n\r\n if (search) {\r\n this.rowData = this.accGlDetailsEnquiryReportModel.journalVoucherEntries.filter(item =>\r\n Object.values(item).some(value =>\r\n normalize(value).includes(search)\r\n )\r\n );\r\n } else {\r\n this.rowData = this.accGlDetailsEnquiryReportModel.journalVoucherEntries;\r\n }\r\n }\r\n\r\n handleExport(): void {\r\n switch (this.selectedExportOption) {\r\n case 'excel':\r\n this.exportToExcel();\r\n break;\r\n case 'pdf':\r\n this.exportToPdf();\r\n break;\r\n case 'csv':\r\n this.exportToCsv();\r\n break;\r\n default:\r\n alert('Please select an export format.');\r\n }\r\n }\r\n\r\n async exportToPdf(): Promise<void> {\r\n if (!this.accGlDetailsEnquiryReportModel.journalVoucherEntries?.length) return;\r\n\r\n const title = `${this.companyName} - General Ledger Account Details Enquiry`;\r\n const metadata = this.exportService.generateReportMetadata([\r\n ['Report User : ', this.reportUser],\r\n ['Report Time : ', this.reportTime],\r\n ['Search Criteria', ' - '],\r\n [`${this.dateType == 'VD' ? 'Value Date' : 'Posting Date'}:`, this.currentReportValueOrPostDate]\r\n\r\n ]);\r\n\r\n const { headers, rows } = this.exportService.prepareExportTable(this.accGlDetailsEnquiryReportModel.journalVoucherEntries, this.columnDefs, {\r\n currencyFields: ['localCredit', 'forexCredit', 'localDebit', 'forexDebit']\r\n });\r\n\r\n await this.exportService.exportToPdfUniversal(title, metadata, headers, rows, 'ACC-GL-Details-Enquiry-Report.pdf');\r\n }\r\n\r\n exportToExcel(): void {\r\n if (!this.accGlDetailsEnquiryReportModel.journalVoucherEntries?.length) return;\r\n\r\n const title = `${this.companyName} - General Ledger Account Details Enquiry`;\r\n const metadata = this.exportService.generateReportMetadata([\r\n ['Report User', this.reportUser],\r\n ['Report Time', this.reportTime],\r\n ['Search Criteria', ' - '],\r\n [`${this.dateType == 'VD' ? 'Value Date' : 'Posting Date'}`, this.currentReportValueOrPostDate]\r\n\r\n ]);\r\n\r\n const { headers, rows } = this.exportService.prepareExportTable(this.accGlDetailsEnquiryReportModel.journalVoucherEntries, this.columnDefs, {\r\n currencyFields: ['localCredit', 'forexCredit', 'localDebit', 'forexDebit']\r\n });\r\n\r\n this.exportService.exportToExcelUniversal(title, metadata, headers, rows, 'ACC-GL-Details-Enquiry-Report.xlsx');\r\n }\r\n\r\n exportToCsv(): void {\r\n if (!this.accGlDetailsEnquiryReportModel.journalVoucherEntries?.length) return;\r\n\r\n const title = `${this.companyName} - General Ledger Account Details Enquiry`;\r\n const metadata = this.exportService.generateReportMetadata([\r\n ['Report User', this.reportUser],\r\n ['Report Time', this.reportTime],\r\n ['Search Criteria', '- '],\r\n [`${this.dateType == 'VD' ? 'Value Date' : 'Posting Date'}`, this.currentReportValueOrPostDate]\r\n\r\n ]);\r\n\r\n const { headers, rows } = this.exportService.prepareExportTable(this.accGlDetailsEnquiryReportModel.journalVoucherEntries, this.columnDefs, {\r\n currencyFields: ['localCredit', 'forexCredit', 'localDebit', 'forexDebit']\r\n });\r\n\r\n this.exportService.exportToCsvUniversal(title, metadata, headers, rows, 'ACC-GL-Details-Enquiry-Report.csv');\r\n }\r\n\r\n handleSearch(criteria: any): void {\r\n this.dateTypeFilter = criteria.selectedDateType;\r\n this.date = criteria.selectedDate.split(\"T\")[0];\r\n this.getAccGLDetailsReport();\r\n }\r\n}\r\n","<!-- <h6 class=\"Breadcrumb\">\r\n <a class=\"BreadCrumbLink\" [routerLink]=\"['/reports']\">\r\n <h1>Reports</h1>\r\n </a>\r\n <a href=\"BreadCrumbLink\"></a>\r\n <span class=\"BreadCrumbArrow\"></span>\r\n <a class=\"BreadCrumbLink\">\r\n <h2 class=\"report-name\">ACC GL Details Enquiry</h2>\r\n </a>\r\n</h6> -->\r\n\r\n<div class=\"bootstrap-scope\">\r\n <div class=\"main-container\">\r\n\r\n <lib-search-filter [ReportName]=\"ReportName\" (searchClicked)=\"handleSearch($event)\">\r\n </lib-search-filter>\r\n <!-- <div class=\"form-container\">\r\n <form class=\"d-flex align-items-center gap-2\">\r\n <div class=\"d-flex align-items-center gap-2\">\r\n <label for=\"dateTypeFilter\" class=\"compact-label\">Date Type</label>\r\n <select class=\"form-select form-control w-auto compact-input\" name=\"dateTypeFilter\"\r\n [(ngModel)]=\"dateTypeFilter\" id=\"dateTypeFilter\">\r\n <option [ngValue]=\"1\">Value Date</option>\r\n <option [ngValue]=\"2\">Posting Date</option>\r\n </select>\r\n </div>\r\n <div class=\"d-flex align-items-center gap-2\" style=\"margin-left: 20px;\">\r\n <label for=\"date\" class=\"compact-label\">Date</label>\r\n <div class=\"input-group\">\r\n <input class=\"form-control date-input\" placeholder=\"dd/mm/yyyy\" ngbDatepicker #DateInput=\"ngbDatepicker\"\r\n name=\"date\" id=\"date\" [(ngModel)]=\"date\" (keydown.enter)=\"onEnterhandleReport($event)\" />\r\n <div class=\"input-group-append\">\r\n <button class=\"input-group-button\" (click)=\"DateInput.toggle()\" type=\"button\"\r\n (keydown.enter)=\"onEnterhandleReport($event)\">\r\n <i class=\"fa fa-calendar\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <div>\r\n <button class=\"btn-report\" type=\"submit\" (click)=\"getAccGLDetailsReport()\">View</button>\r\n </div>\r\n </form>\r\n </div> -->\r\n\r\n <hr />\r\n <div class=\"report-loader\" *ngIf=\"loading && svgLoader\" [innerHTML]=\"svgLoader\"></div>\r\n\r\n <div class=\"report-container\" *ngIf=\"accGlDetailsEnquiryReportModel != undefined && dataReady\">\r\n <div class=\"main-report\" *ngIf=\"accGlDetailsEnquiryReportModel != undefined && dataReady\">\r\n <h1 class=\"title\">General Ledger Account Details Enquiry</h1>\r\n <div class=\"report-content\">\r\n <div class=\"left-section\">\r\n <div class=\"labels\">\r\n <p><b>Report User</b></p>\r\n <p><b>Report Time</b></p>\r\n </div>\r\n <div class=\"values\">\r\n <p>: {{ reportUser }}</p>\r\n <p>: {{ reportTime }}</p>\r\n </div>\r\n </div>\r\n <div class=\"right-section\">\r\n <div class=\"labels\">\r\n <p><b>Company</b></p>\r\n <p><b>{{ dateType ==\r\n 'VD' ? 'Value Date' : 'Posting Date' }}</b></p>\r\n </div>\r\n <div class=\"values\">\r\n <p>: {{ companyName }}</p>\r\n <p>: {{currentReportValueOrPostDate}}</p>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"d-flex justify-content-between align-items-center mt-3 mb-3 flex-wrap\">\r\n <div class=\"d-flex align-items-center gap-2\">\r\n <div class=\"d-flex justify-content-end align-items-center\">\r\n <input type=\"text\" [(ngModel)]=\"searchText\" name=\"searchText\" (ngModelChange)=\"onSearch()\"\r\n class=\"form-control custom-search-class\" placeholder=\"Search...\" />\r\n <button type=\"button\" class=\"btn btn-sm p-0 search-button\" (click)=\"onSearch()\">\r\n <img src=\"assets/images/Search.svg\" alt=\"Search\" class=\"search-button-image\" />\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"d-flex align-items-center\">\r\n <!-- <select class=\"form-select form-control compact-input\" name=\"selectedExportOption\" id=\"selectedExportOption\"\r\n [(ngModel)]=\"selectedExportOption\" (keydown.enter)=\"onEnterhandleExport($event)\">\r\n <option value='csv'>CSV</option>\r\n <option value='excel'>Excel</option>\r\n <option value='pdf'>PDF</option>\r\n </select> -->\r\n <ng-select placeholder=\"- Please select -\" class=\"export-selector\" [(ngModel)]=\"selectedExportOption\"\r\n [clearable]=\"false\" required>\r\n <ng-option *ngFor=\"let format of exportFormats\" [value]=\"format.code\">\r\n {{ format.formatName }}\r\n </ng-option>\r\n </ng-select>\r\n <button type=\"button\" class=\"btn-report\" (click)=\"handleExport()\">Export</button>\r\n </div>\r\n </div>\r\n\r\n <div style=\"position: relative;\">\r\n <lib-page-size-selector [totalEntries]=\"accGlDetailsEnquiryReportModel?.journalVoucherEntries?.length\"\r\n [defaultSize]=\"'15'\" [gridApi]=\"gridApi\">\r\n ></lib-page-size-selector>\r\n <ag-grid-angular class=\"ag-theme-alpine compact-grid grid-size\" [rowData]=\"rowData\" [columnDefs]=\"columnDefs\"\r\n [defaultColDef]=\"defaultColDef\" [animateRows]=\"true\" [rowHeight]=\"20\" [headerHeight]=\"24\"\r\n [pagination]=\"true\" [domLayout]=\"'normal'\" [paginationPageSize]=\"pageSize\"\r\n [suppressHorizontalScroll]=\"false\" [suppressRowHoverHighlight]=\"false\"\r\n [getRowHeight]=\"getRowHeight.bind(this)\" (gridReady)=\"onGridReady($event)\"\r\n [suppressDragLeaveHidesColumns]=\"true\" [suppressMovableColumns]=\"false\">\r\n </ag-grid-angular>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>","// transaction-enquiry.component.ts\r\nimport { Component, OnInit, ViewChild, OnDestroy, ChangeDetectorRef, HostListener } from '@angular/core';\r\nimport { AgGridAngular } from 'ag-grid-angular';\r\nimport { GridOptions, ColDef, GridReadyEvent, GridApi, ColumnApi } from 'ag-grid-community';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil, finalize } from 'rxjs/operators';\r\nimport { ReportService } from '../../services/report.service';\r\nimport { Currency, CompanyReportConfig, IdentityType, TransactionStatus, Product, User, UserReportDefaults, Client, Branch, TransactionData, ComponentLoadingState } from '../../models/transaction-enquiry-report/transaction-enquiry.model';\r\nimport { ExportService } from '../../shared/export.service';\r\nimport { ConfigService } from '../../services/config.service';\r\n\r\n\r\n@Component({\r\n selector: 'app-transaction-enquiry',\r\n templateUrl: './transaction-enquiry-report.component.html',\r\n styleUrls: ['./transaction-enquiry-report.component.scss']\r\n})\r\n\r\nexport class TransactionEnquiryComponent implements OnInit {\r\n @ViewChild('agGrid') agGrid!: AgGridAngular;\r\n\r\n private destroy$ = new Subject<void>();\r\n private gridApi!: GridApi;\r\n private gridColumnApi!: ColumnApi;\r\n\r\n // Form and UI State\r\n isFilterCollapsed = false;\r\n showResults = false;\r\n searchText: string = '';\r\n paginationPageSize: number = 15;\r\n showAllRows: boolean = false;\r\n ranges: (number | 'All')[] = [15, 20, 30, 50, 100, 'All'];\r\n showRange: boolean = false;\r\n selectedExportOption: string = 'excel';\r\n showStatusDropdown: boolean = false;\r\n currentDateTime: Date = new Date();\r\n formValidationError: boolean = false;\r\n\r\n // Add these new properties after existing ones\r\n\r\n showExportDropdown: boolean = false;\r\n exportFormats = [{ formatName: \"Excel\", code: 'excel' }, { formatName: \"PDF\", code: 'pdf' }, { formatName: \"CSV\", code: 'csv' }]\r\n exportOptions = [\r\n { label: 'Excel', value: 'excel' },\r\n { label: 'PDF', value: 'pdf' },\r\n { label: 'CSV', value: 'csv' }\r\n ];\r\n\r\n productCodeMap: { [name: string]: string } = {\r\n \"DIRECT TO ACCOUNT\": \"DTA\",\r\n \"CASHPAYOUT\": \"CPO\",\r\n \"DIRECT TO WALLET\": \"DTW\",\r\n \"CASH TO CASH\": \"CTC\",\r\n \"CASH TO ACCOUNT\": \"CTA\"\r\n };\r\n\r\n // Consolidated loading state\r\n loadingState: ComponentLoadingState = ComponentLoadingState.Complete;\r\n ComponentLoadingState = ComponentLoadingState; // For template access\r\n isSearching: boolean = false;\r\n hasSearched: boolean = false;\r\n\r\n // Keep your existing errorMessage property\r\n errorMessages: string = '';\r\n _errorMessage: string = '';\r\n\r\n currentUserEmail: string = '';\r\n usernameMissing: boolean = false;\r\n token = sessionStorage.getItem('access_token');\r\n applicationType = 'ezremit';\r\n companyCode = 'BH';\r\n serviceUrl: string;\r\n apiPrefix: any;\r\n userReportDefaults: UserReportDefaults | null = null;\r\n companyReportConfig: CompanyReportConfig | null = null;\r\n\r\n // Data Arrays\r\n clients: Client[] = [];\r\n branches: Branch[] = [];\r\n users: User[] = [];\r\n currencies: Currency[] = [];\r\n products: Product[] = [];\r\n identityTypes: IdentityType[] = [];\r\n transactionData: TransactionData[] = [];\r\n transactionStatuses: TransactionStatus[] = [];\r\n selectedStatuses: string[] = [];\r\n ReportName = \"Transaction Enquiry\";\r\n\r\n\r\n // AG Grid Column Definitions\r\n columnDefs: ColDef[] = [\r\n { headerName: 'Product', field: 'product', flex: 1, minWidth: 60, cellClass: 'ag-left-aligned-cell compact-cell', tooltipField: 'product', valueFormatter: params => this.productCodeMap[params.value] || params.value },\r\n { headerName: 'User Id', field: 'id', flex: 1, minWidth: 60, cellClass: 'compact-cell', tooltipField: 'id' },\r\n {\r\n headerName: 'Transaction Number', field: 'transactionNumber', tooltipField: 'transactionNumber',\r\n cellRenderer: (params: any) => {\r\n const url = this.buildTransactionDetailsUrl(params.value);\r\n return `<a href=\"${url}\" target=\"_blank\" rel=\"noopener noreferrer\">${params.value}</a>`;\r\n },\r\n flex: 1, minWidth: 80, cellClass: 'transaction-link-cell compact-cell'\r\n },\r\n { headerName: 'Transaction Ref Number', field: 'transactionReferenceNumber', flex: 1, minWidth: 90, cellClass: 'compact-cell', tooltipField: 'transactionReferenceNumber' },\r\n { headerName: 'Trans. Date', field: 'businessDate', flex: 1, minWidth: 70, valueFormatter: this.dateFormatter.bind(this), cellClass: 'ag-left-aligned-cell compact-cell', tooltipValueGetter: (params) => this.dateFormatter(params), },\r\n { headerName: 'SendClient', field: 'sendAgent', flex: 1, minWidth: 120, cellClass: 'compact-cell', tooltipField: 'sendAgent' },\r\n { headerName: 'SendClntBranch', field: 'sendAgtBranch', flex: 1, minWidth: 150, cellClass: 'compact-cell', tooltipField: 'sendAgtBranch' },\r\n { headerName: 'RecvClient', field: 'recvAgent', flex: 1, minWidth: 120, cellClass: 'compact-cell', tooltipField: 'recvAgent' },\r\n { headerName: 'RcvClntBranch', field: 'rcvAgtBranch', flex: 1, minWidth: 120, cellClass: 'compact-cell', tooltipField: 'rcvAgtBranch' },\r\n { headerName: 'Sender Name', field: 'sendName', flex: 1, minWidth: 120, cellClass: 'compact-cell', tooltipField: 'sendName' },\r\n { headerName: 'Sender ID Type', field: 'sendIdType', flex: 1, minWidth: 90, cellClass: 'compact-cell', tooltipField: 'sendIdType' },\r\n { headerName: 'Sender ID Number', field: 'sendIdNumber', flex: 1, minWidth: 80, cellClass: 'compact-cell', tooltipField: 'sendIdNumber' },\r\n { headerName: 'Benf. Name', field: 'benName', flex: 1, minWidth: 100, cellClass: 'compact-cell', tooltipField: 'benName' },\r\n { headerName: 'Receive Curr.', field: 'payOutCurrency', flex: 1, minWidth: 70, cellClass: 'ag-center-aligned-cell compact-cell', tooltipField: 'payOutCurrency' },\r\n { headerName: 'Receive Amount', field: 'payOutAmount', flex: 1, minWidth: 100, valueFormatter: this.currencyFormatter.bind(this), cellClass: 'ag-right-aligned-cell compact-cell', tooltipValueGetter: (params) => this.currencyFormatter(params), },\r\n { headerName: 'Send Curr.', field: 'payInCurrency', flex: 1, minWidth: 55, cellClass: 'ag-center-aligned-cell compact-cell', tooltipField: 'payInCurrency' },\r\n { headerName: 'Send Amount', field: 'payInAmount', flex: 1, minWidth: 100, valueFormatter: this.currencyFormatter.bind(this), cellClass: 'ag-right-aligned-cell compact-cell', tooltipValueGetter: (params) => this.currencyFormatter(params), },\r\n { headerName: 'Service Fee', field: 'commission', flex: 1, minWidth: 70, valueFormatter: this.currencyFormatter.bind(this), cellClass: 'ag-right-aligned-cell compact-cell', tooltipValueGetter: (params) => this.currencyFormatter(params), },\r\n { headerName: 'Transaction Status', field: 'transactionStatus', flex: 1, minWidth: 90, cellClass: 'status-cell compact-cell', tooltipField: 'transactionStatus' }\r\n ];\r\n\r\n\r\n private buildTransactionDetailsUrl(transactionNumber: string): string {\r\n const baseUrl = this.serviceUrl;\r\n const token = this.token;\r\n const userName = this.currentUserEmail;\r\n const applicationType = this.applicationType;\r\n\r\n return `${baseUrl}/api/v1/RetailTransaction/GetTransactionDetailsHtmlView` +\r\n `?transactionNumber=${transactionNumber}&applicationType=${applicationType}` +\r\n `&access_token=${token}&userName=${userName}`;\r\n }\r\n\r\n // AG Grid Configuration\r\n gridOptions: GridOptions = {\r\n defaultColDef: {\r\n sortable: true,\r\n filter: true,\r\n resizable: true,\r\n cellStyle: { whiteSpace: 'normal' },\r\n autoHeight: true,\r\n wrapText: true,\r\n },\r\n //domLayout: 'autoHeight',\r\n suppressRowClickSelection: true,\r\n animateRows: true,\r\n pagination: true,\r\n paginationPageSize: 50,\r\n //onGridReady: this.onGridReady.bind(this)\r\n };\r\n\r\n constructor(\r\n private reportService: ReportService,\r\n private exportService: ExportService,\r\n private config: ConfigService\r\n ) {\r\n this.serviceUrl = this.config.get.serviceUrl;\r\n this.currentUserEmail = sessionStorage.getItem('fossilusername') || \r\n sessionStorage.getItem('ezremitusername') || \r\n 'vipul.katale@xpressmoney.tech';\r\n this.currentUserEmail = this.currentUserEmail.replace(/\"/g, '');\r\n }\r\n \r\n\r\n ngOnInit(): void {\r\n\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n}\r\n\r\n\r\n handleSearch(criteria: any): void {\r\n this.loadingState = ComponentLoadingState.Loading;\r\n this.errorMessage = '';\r\n this.transactionData = [];\r\n this.hasSearched = false;\r\n this.searchText = '';\r\n this.selectedExportOption = 'excel';\r\n console.log(criteria)\r\n\r\n this.reportService.searchTransactions(criteria)\r\n .pipe(\r\n takeUntil(this.destroy$),\r\n finalize(() => {\r\n this.loadingState = ComponentLoadingState.Complete;\r\n this.hasSearched = true;\r\n })\r\n )\r\n .subscribe({\r\n next: data => {\r\n this.transactionData = Array.isArray(data) ? data : [];\r\n if (this.gridApi) {\r\n this.gridApi.setRowData(this.transactionData);\r\n } else {\r\n console.error('Grid API is not initialized!');\r\n }\r\n },\r\n error: err => {\r\n this.errorMessage = 'Failed to fetch transaction data. Please try again.';\r\n this.loadingState = ComponentLoadingState.Error;\r\n console.error('Search error:', err);\r\n }\r\n });\r\n }\r\n\r\n\r\n toggleStatusDropdown(event: MouseEvent): void {\r\n event.stopPropagation();\r\n this.showStatusDropdown = !this.showStatusDropdown;\r\n }\r\n toggleRangeDropdown(event: MouseEvent): void {\r\n event.stopPropagation();\r\n this.showRange = !this.showRange;\r\n }\r\n\r\n filter(): void {\r\n if (this.gridApi && this.searchText != null) {\r\n this.gridApi.setQuickFilter(this.searchText.trim().toLowerCase());\r\n }\r\n }\r\n\r\n\r\n onGridReady(params: GridReadyEvent): void {\r\n this.gridApi = params.api;\r\n this.gridColumnApi = params.columnApi;\r\n\r\n if (this.transactionData) {\r\n this.gridApi.setRowData(this.transactionData);\r\n this.gridApi.sizeColumnsToFit();\r\n }\r\n }\r\n\r\n changeLimit(limit: number | 'All'): void {\r\n this.showRange = false;\r\n\r\n if (limit === 'All') {\r\n this.showAllRows = true;\r\n this.gridApi.setDomLayout('normal');\r\n this.gridApi.paginationSetPageSize(this.gridApi.getDisplayedRowCount());\r\n } else {\r\n this.showAllRows = false;\r\n this.paginationPageSize = limit;\r\n this.gridApi.paginationSetPageSize(limit);\r\n }\r\n }\r\n\r\n clearError(): void {\r\n this.errorMessage = '';\r\n this.loadingState = ComponentLoadingState.Complete;\r\n }\r\n\r\n // Utility methods for AG Grid\r\n dateFormatter(params: any): string {\r\n if (!params.value) return '';\r\n try {\r\n const date = new Date(params.value);\r\n return date.toLocaleString('en-GB', {\r\n day: '2-digit',\r\n month: '2-digit',\r\n year: 'numeric',\r\n hour: '2-digit',\r\n minute: '2-digit',\r\n hour12: true\r\n }).replace(',', '');\r\n } catch {\r\n return params.value;\r\n }\r\n }\r\n\r\n currencyFormatter(params: any): string {\r\n if (params.value == null || params.value === '') return '';\r\n const number = parseFloat(params.value);\r\n if (isNaN(number)) return params.value;\r\n return number.toLocaleString('en-US', {\r\n minimumFractionDigits: 3,\r\n maximumFractionDigits: 3\r\n });\r\n }\r\n\r\n // Get field value for table view\r\n getFieldValue(row: any, field: string): any {\r\n const keys = field.split('.');\r\n let value = row;\r\n for (const key of keys) {\r\n value = value?.[key];\r\n }\r\n return value || '';\r\n }\r\n\r\n // Getter methods for backward compatibility with template\r\n get isLoading(): boolean {\r\n return this.loadingState === ComponentLoadingState.Loading;\r\n }\r\n\r\n get isError(): boolean {\r\n return this.loadingState === ComponentLoadingState.Error;\r\n }\r\n\r\n get canShowResults(): boolean {\r\n return this.showResults && this.hasSearched;\r\n }\r\n\r\n get errorMessage(): string {\r\n return this._errorMessage;\r\n}\r\n\r\nset errorMessage(value: string) {\r\n this._errorMessage = value;\r\n}\r\n\r\n\r\n\r\n onExportChange(value: string): void {\r\n this.selectedExportOption = value;\r\n }\r\n\r\n handleExport(): void {\r\n if (this.selectedExportOption === 'pdf') {\r\n this.exportToPDF();\r\n } else if (this.selectedExportOption === 'excel') {\r\n this.exportToExcel();\r\n } else if (this.selectedExportOption === 'csv') {\r\n this.exportToCSV();\r\n } else {\r\n alert('Please select a valid export format.');\r\n }\r\n }\r\n\r\n exportToPDF(): void {\r\n if (!this.transactionData?.length) return;\r\n\r\n const title = 'Transaction Enquiry';\r\n const metadata = this.exportService.generateReportMetadata([\r\n ['Report User : ', this.currentUserEmail],\r\n ['Report Time : ', this.exportService.formatDateTime(this.currentDateTime)]\r\n ]);\r\n\r\n const { headers, rows } = this.exportService.prepareExportTable(this.transactionData, this.columnDefs, {\r\n currencyFields: ['payOutAmount', 'payInAmount', 'commission']\r\n });\r\n\r\n this.exportService.exportToPdfUniversal(title, metadata, headers, rows, 'Transaction_Enquiry.pdf')\r\n .then(() => {\r\n console.log('PDF export completed.');\r\n })\r\n .catch(err => {\r\n console.error('PDF export failed:', err);\r\n });\r\n }\r\n\r\n exportToExcel(): void {\r\n if (!this.transactionData?.length) return;\r\n\r\n const title = 'Transaction Enquiry';\r\n const metadata = this.exportService.generateReportMetadata([\r\n ['Report User : ', this.currentUserEmail],\r\n ['Report Time : ', this.exportService.formatDateTime(this.currentDateTime)]\r\n ]);\r\n\r\n const { headers, rows } = this.exportService.prepareExportTable(this.transactionData, this.columnDefs, {\r\n currencyFields: ['payOutAmount', 'payInAmount', 'commission']\r\n });\r\n\r\n this.exportService.exportToExcelUniversal(title, metadata, headers, rows, 'Transaction_Enquiry.xlsx');\r\n }\r\n\r\n exportToCSV(): void {\r\n if (!this.transactionData?.length) return;\r\n\r\n const title = 'Transaction Enquiry';\r\n const metadata = this.exportService.generateReportMetadata([\r\n ['Report User : ', this.currentUserEmail],\r\n ['Report Time : ', this.exportService.formatDateTime(this.currentDateTime)]\r\n ]);\r\n\r\n const { headers, rows } = this.exportService.prepareExportTable(this.transactionData, this.columnDefs, {\r\n currencyFields: ['payOutAmount', 'payInAmount', 'commission']\r\n });\r\n\r\n this.exportService.exportToCsvUniversal(title, metadata, headers, rows, 'Transaction_Enquiry.csv');\r\n }\r\n}","\r\n<lib-search-filter\r\n [ReportName]=\"ReportName\" \r\n (searchClicked)=\"handleSearch($event)\">\r\n</lib-search-filter>\r\n\r\n\r\n<app-loader *ngIf=\"loadingState === ComponentLoadingState.Loading\"></app-loader>\r\n\r\n<span *ngIf=\"loadingState === ComponentLoadingState.Error\">{{ errorMessage }}</span>\r\n<div class=\"alert alert-warning mt-3\"\r\n *ngIf=\"hasSearched && transactionData.length === 0 && loadingState === ComponentLoadingState.Complete\">\r\n No transactions found matching your search criteria.\r\n</div>\r\n\r\n<div class=\"row\">\r\n <div class=\"col-12\">\r\n <div *ngIf=\"transactionData && transactionData.length > 0 && loadingState === ComponentLoadingState.Complete\">\r\n <h2 class=\"title\">Transaction Enquiry</h2>\r\n\r\n <!-- RIGHT aligned Report Info -->\r\n <div class=\"mb-2 flex-container\">\r\n <tbody>\r\n <tr>\r\n <td class=\"labl meta-td\">Report User:</td>\r\n <td class=\"px-3 meta-td\"><span class=\"info\">{{currentUserEmail}}</span></td>\r\n </tr>\r\n <tr>\r\n <td class=\"labl meta-td\">Report Time:</td>\r\n <td class=\"px-3 meta-td\"><span class=\"info\">{{ currentDateTime | date:'dd/MM/yyyy hh:mm a' }}</span></td>\r\n </tr>\r\n </tbody>\r\n </div>\r\n\r\n <!-- Search and Export Toolbar -->\r\n <div class=\"search-container d-flex justify-content-between align-items-center flex-wrap\">\r\n <!-- Search (LEFT) -->\r\n <div class=\"custom-search-group mb-md-0\">\r\n <div class=\"searchBox\">\r\n <input type=\"text\" [(ngModel)]=\"searchText\" name=\"searchText\" class=\"search-input\" (ngModelChange)=\"filter()\"\r\n placeholder=\"Search...\" autocomplete=\"off\" />\r\n\r\n <button type=\"button\" class=\"btn btn-sm search-btn\" (click)=\"filter()\">\r\n <img src=\"assets/images/Search.svg\" alt=\"Search\" class=\"search-icon\" />\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <!-- Export (RIGHT) -->\r\n <div class=\"d-flex align-items-center mt-md-0 gap-0\">\r\n <!-- Custom Export Dropdown -->\r\n <div class=\"export-options\">\r\n <ng-select placeholder=\"- Please select -\" class=\"export-selector\" [(ngModel)]=\"selectedExportOption\"\r\n [clearable]=\"false\" required>\r\n <ng-option *ngFor=\"let format of exportFormats\" [value]=\"format.code\">\r\n {{ format.formatName }}\r\n </ng-option>\r\n </ng-select>\r\n </div>\r\n <!-- Export Button -->\r\n <button class=\"btn btn-report\" (click)=\"handleExport()\">Export</button>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n <!-- AG Grid Section -->\r\n <div *ngIf=\"transactionData && transactionData.length > 0 && loadingState === ComponentLoadingState.Complete\"\r\n class=\"mt-4\">\r\n <ag-grid-angular class=\"ag-theme-alpine transaction-grid\" [rowData]=\"transactionData\" [columnDefs]=\"columnDefs\"\r\n [gridOptions]=\"gridOptions\" [pagination]=\"true\" [headerHeight]=\"30\" [paginationPageSize]=\"paginationPageSize\"\r\n (gridReady)=\"onGridReady($event)\" style=\"width: 100%; height: 418px;\">\r\n </ag-grid-angular>\r\n </div>\r\n\r\n <div class=\"pgn d-flex align-items-center position-relative\"\r\n *ngIf=\"transactionData && transactionData.length > 0 && loadingState === ComponentLoadingState.Complete\">\r\n <div class=\"dropdown me-2 custom-range-dropdown\" [class.show]=\"showRange\">\r\n <button class=\"btn btn-sm dropdown-toggle pagination-number\" type=\"button\"\r\n (click)=\"toggleRangeDropdown($event)\">\r\n {{ showAllRows ? 'All' : paginationPageSize }}\r\n </button>\r\n\r\n <ul class=\"dropdown-menu dropdown-menu-up custom-range-menu\" *ngIf=\"showRange\">\r\n <li *ngFor=\"let limit of ranges\">\r\n <button class=\"dropdown-item\" (click)=\"changeLimit(limit); showRange = false;\">\r\n {{ limit === 'All' ? 'All' : limit }}\r\n </button>\r\n </li>\r\n </ul>\r\n </div>\r\n <span class=\"pagination-label\">Entries Per Page</span>\r\n </div>\r\n </div>\r\n</div>\r\n","\r\nimport { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\n\r\nimport { TransactionEnquiryComponent } from './components/transaction-enquiry-report/transaction-enquiry-report.component';\r\n\r\nconst routes: Routes = [\r\n {\r\n path: 'transaction-enquiry-report',\r\n component: TransactionEnquiryComponent\r\n }\r\n \r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\n\r\nexport class ReportsLibRoutingModule {}\r\n","export class BranchActivitySendReportRequestDomainModel {\r\n startDate: string;\r\n endDate: string;\r\n sendCountryCode: string;\r\n recvCountryCode: string;\r\n businessPartnerCode: string;\r\n transactionStatus: string;\r\n payoutCurrency: string;\r\n transactionType: string;\r\n branchCode: string;\r\n companyCode: string;\r\n\r\n constructor(values: Object = {}) {\r\n Object.assign(this, values);\r\n }\r\n}","export enum ComponentLoadingStates {\r\n Error = -1,\r\n Loading = 0,\r\n Complete = 1,\r\n}\r\n","import { Component, NgZone, OnInit, ElementRef, HostListener, ViewChild } from '@angular/core';\r\n// import { Component, ElementRef, HostListener, ViewChild } from '@angular/core';\r\nimport { FormArray, FormBuilder, FormControl, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\r\nimport { ReportService } from '../../services/report.service';\r\nimport { BranchActivityReport } from '../../models/branch-activity-report/branch-activity-send-report';\r\nimport { ColDef, GridOptions, GridReadyEvent, RowGroupingDisplayType } from 'ag-grid-community';\r\nimport * as XLSX from 'xlsx';\r\nimport { saveAs } from 'file-saver';\r\nimport * as ExcelJS from 'exceljs';\r\nimport * as FileSaver from 'file-saver';\r\nimport { themeAlpine } from '@ag-grid-community/theming';\r\n\r\nimport jsPDF from 'jspdf';\r\nimport { formatDate, DatePipe } from '@angular/common';\r\nimport { BranchActivitySendReportRequestDomainModel } from '../../models/branch-activity-report/branch-activity-send-report-request-domain-model';\r\nimport { forkJoin, of } from 'rxjs';\r\nimport { catchError } from 'rxjs/operators';\r\nimport { ComponentLoadingStates } from '../../models/component-loading-states';\r\n\r\n@Component({\r\n selector: 'lib-branch-activity-send-report',\r\n templateUrl: './branch-activity-send-report.component.html',\r\n styleUrls: ['./branch-activity-send-report.component.scss']\r\n})\r\nexport class BranchActivitySendReportComponent implements OnInit {\r\n dataMap: Record<string, BranchActivityReport[]> = {}\r\n filteredData: Record<string, BranchActivityReport[]> = {}\r\n proxyData: Record<string, BranchActivityReport[]> = {}\r\n form: FormGroup;\r\n countries: any;\r\n params: any;\r\n fromDate: any;\r\n toDate: any;\r\n clients: any = [];\r\n clientsData:any = [];\r\n clientBranches: any = [];\r\n showReport: boolean;\r\n ranges: any[] = [10, 15, 20, 30, 50, 100, 200, 'All'];\r\n paginationPageSize: number = 15;\r\n paginationArray: any[];\r\n showRange: boolean = false;\r\n isAgentSelected: boolean = false;\r\n selectedExportOption = 'excel';\r\n gridAPi;\r\n gridColumnApi;\r\n user: string = \"kaushik.kulsange@xpressmoney.tech\";\r\n reportDate: string;\r\n searchText: string;\r\n buffer: any;\r\n myStatus: FormArray = new FormArray([]);\r\n status = ['All'];\r\n errorMessage = '';\r\n sysUserId: string;\r\n private logoBase64: string | undefined;\r\n message: string = 'No Data Found';\r\n ComponentLoadingState = ComponentLoadingStates;\r\n loadingState: ComponentLoadingStates = ComponentLoadingStates.Loading;\r\n exportFormats = [{formatName:\"Excel\",code:'excel'},{formatName:\"PDF\",code:'pdf'},{formatName:\"CSV\",code:'csv'}]\r\n // flags\r\n showStatusDropdown: boolean = false;\r\n showClients: boolean = false;\r\n showCurrency: boolean = false;\r\n showProduct: boolean = false;\r\n showSendCountry: boolean = false;\r\n showReceiveCountry: boolean = false;\r\n showBranch: boolean = false;\r\n disableToDate: boolean = true;\r\n showError: boolean = false;\r\n showMessage: boolean = false;\r\n selectAll: boolean = false;\r\n noDataFound: boolean = false;\r\n clientSelected: boolean = false;\r\n activeBranch: number;\r\n\r\n columnDefs: ColDef<BranchActivityReport>[] = [\r\n { field: 'businessDateTime', headerName: 'Business Date', flex: 1, headerClass: 'ag-left-aligned-header', minWidth: 70, width: 70, tooltipField: 'businessDateTime' },\r\n { field: 'transactionDateTime', headerName: 'Transaction Date', flex: 2, wrapText: true, autoHeight: true },\r\n { field: 'transactionNumber', headerName: 'Transaction Number', flex: 1.8, width: 130, cellClass: 'ag-left-cols-cell compact-cell-transaction', tooltipField: 'transactionNumber' },\r\n { field: 'product', headerName: 'Product', flex: 0.5, minWidth: 50, width: 60, tooltipField: 'product' },\r\n { field: 'sendAgentBranchCode', headerName: 'Send BranchCode', flex: 1, width: 120, tooltipField: 'sendAgentBranchCode' },\r\n { field: 'receiveAgentCode', headerName: 'Receive ClientCode', flex: 1, minWidth: 70, width: 70, tooltipField: 'receiveAgentCode' },\r\n { field: 'payoutCCcode', headerName: 'ReceiveCcy Code', flex: 1, width: 110, tooltipField: 'payoutCCcode' },\r\n { field: 'payoutAmount', headerName: 'Receive Amount', flex: 1, maxWidth: 130, valueFormatter: this.currencyFormatter.bind(this), cellClass: 'ag-right-aligned-cell compact-cell', tooltipField: 'payoutAmount' },\r\n { field: 'payinCCcode', headerName: 'SendCcy Code', flex: 1, maxWidth: 90, tooltipField: 'payinCCcode' },\r\n { field: 'payinAmount', headerName: 'Send Amount', flex: 1, maxWidth: 120, valueFormatter: this.currencyFormatter.bind(this), cellClass: 'ag-right-aligned-cell compact-cell', tooltipField: 'payinAmount' },\r\n { field: 'transactionCommissionAmount', headerName: 'Service Fee', flex: 1, maxWidth: 120, valueFormatter: this.currencyFormatter.bind(this), cellClass: 'ag-right-aligned-cell compact-cell', tooltipField: 'transactionCommissionAmount' },\r\n { field: 'tax', headerName: 'Tax', flex: 1, width: 70, maxWidth: 100, valueFormatter: this.currencyFormatter.bind(this), cellClass: 'ag-right-aligned-cell compact-cell', tooltipField: 'tax' },\r\n { field: 'totalPayinAmount', headerName: 'Total Send Amount', flex: 1, valueFormatter: this.currencyFormatter.bind(this), cellClass: 'ag-right-aligned-cell compact-cell', tooltipField: 'totalPayinAmount' },\r\n { field: 'status', headerName: 'Transaction Status', flex: 1, tooltipField: 'status' }\r\n ];\r\n\r\n\r\n defaultColDef = {\r\n sortable: true,\r\n filter: false,\r\n resizable: true,\r\n minwidth: 40,\r\n wrapHeaderText: true,\r\n autoHeaderHeight: true,\r\n suppressSizeToFit: false,\r\n wrapText: true\r\n };\r\n rowData: BranchActivityReport[] = [];\r\n\r\n constructor(private formBuilder: FormBuilder, private reportService: ReportService, private ngZone: NgZone) { }\r\n\r\n reportTheme = themeAlpine.withParams({\r\n headerFontSize: '10px',\r\n fontFamily: ['Arial', 'sans-serif'],\r\n fontSize: '9px'\r\n });\r\n\r\n ngOnInit(): void {\r\n // Check if User is falcon user or fossilUser\r\n if (sessionStorage.getItem('fossilusername')) {\r\n this.sysUserId = sessionStorage.getItem('fossilusername')\r\n }\r\n else {\r\n this.sysUserId = sessionStorage.getItem('ezremitusername');\r\n }\r\n this.sysUserId = this.sysUserId.replace(/^[\"'](.*)[\"']$/, '$1');\r\n this.user = this.sysUserId;\r\n console.log(\"System User Id : \" + this.sysUserId);\r\n this.initForm();\r\n this.reportService.getCompanyConfig().subscribe(data => {\r\n this.params = data;\r\n console.log(this.params)\r\n })\r\n\r\n forkJoin({\r\n params: this.reportService.getParams().pipe(\r\n catchError(err => {\r\n console.error('Error loading params', err);\r\n return of(null);\r\n })\r\n ),\r\n clients: this.reportService.getPayInAgents(this.sysUserId).pipe(\r\n catchError(err => {\r\n console.error('Error loading clients', err);\r\n return of([]); \r\n })\r\n )\r\n }).subscribe(\r\n {\r\n next: ({ params, clients }) => {\r\n this.params = params;\r\n this.clients = [...clients];\r\n this.clientsData = [...clients];\r\n if (!sessionStorage.getItem('fossilusername') && this.clients?.length) {\r\n this.selectClient(this.clients[0].code);\r\n }\r\n this.loadingState = ComponentLoadingStates.Complete;\r\n },\r\n error: err => {\r\n console.error('Unexpected forkJoin error', err);\r\n this.loadingState = ComponentLoadingStates.Error;\r\n },\r\n complete: () => {\r\n this.loadingState = ComponentLoadingStates.Complete;\r\n this.onClientSelected();\r\n }\r\n }\r\n\r\n );\r\n this.subscribeToDateChanges();\r\n this.subscribeToClientChange();\r\n //Convert Logo to base64\r\n this.loadImageAsBase64('src/assets/reports-lib/images/XMCoral.png').then(base64 => {\r\n this.logoBase64 = base64;\r\n });\r\n }\r\n\r\n initForm() {\r\n this.form = this.formBuilder.group({\r\n fromDate: [new Date().toISOString().split(\"T\")[0], Validators.required],\r\n toDate: [{ value: new Date().toISOString().split(\"T\")[0], disabled: false }, Validators.required],\r\n sendCountry: ['All', Validators.required],\r\n receiveCountry: ['All', Validators.required],\r\n client: [null, Validators.required],\r\n branch: [{ value: null, disabled: this.isAgentSelected }, Validators.required],\r\n product: ['All', Validators.required],\r\n receiveCurrency: ['All', Validators.required],\r\n transactionStatus: [['All'],Validators.required],\r\n selectedStatus: ['All', Validators.required]\r\n });\r\n }\r\n\r\n onSubmit() {\r\n this.showStatusDropdown = false;\r\n this.showClients = false;\r\n this.searchText = \"\";\r\n this.showError = false;\r\n this.showReport = false;\r\n // console.log(this.form.value)\r\n this.fromDate = this.form.controls[\"fromDate\"].value;\r\n this.toDate = this.form.controls[\"toDate\"].value;\r\n // Validate Form\r\n if (!this.form.valid) {\r\n this.showError = true;\r\n this.errorMessage = `Please fill all the required fields`;\r\n return;\r\n }\r\n // Check if fromDate is greater than toDate\r\n if (new Date(this.fromDate) > new Date(this.toDate)) {\r\n this.showError = true;\r\n this.errorMessage = `From Date ${this.fromDate} can not be greater than To Date ${this.toDate}`;\r\n return;\r\n }\r\n // Calculate the difference in days \r\n const from = new Date(this.fromDate);\r\n const to = new Date(this.toDate);\r\n const differenceInDays = Math.floor((to?.getTime() - from?.getTime()) / (1000 * 60 * 60 * 24));\r\n // Check if the difference between the two dates exceeds 31 days (1 months approx)\r\n if (differenceInDays > 31) {\r\n this.showError = true;\r\n this.errorMessage = `From Date ${this.fromDate} and To Date ${this.toDate} should have difference of max 1 month`;\r\n return;\r\n }\r\n this.showError = false;\r\n const d = new Date().toISOString();\r\n this.reportDate = new Date().toISOString();\r\n this.reportDate = formatDate(this.reportDate, 'dd/MM/yyyy hh:mm a', 'en-US');\r\n const modal = this.mapFormToModel();\r\n modal.transactionStatus = this.form.controls[\"selectedStatus\"].value;\r\n console.log(modal);\r\n this.showMessage = true;\r\n this.loadingState = ComponentLoadingStates.Loading;\r\n this.reportService.getBranchActivityReport(modal).subscribe({\r\n next: (data) => {\r\n console.log(data);\r\n this.dataMap = JSON.parse(JSON.stringify(data));\r\n this.filteredData = data;\r\n this.noDataFound = Object.keys(this.filteredData).length == 0 ? true : false;\r\n this.proxyData = structuredClone(data);\r\n this.paginationArray = new Array(Object.keys(this.filteredData).length).fill(15);\r\n this.showMessage = Object.keys(this.filteredData).length == 0 ? true : false;\r\n this.showReport = true;\r\n },\r\n\r\n error: (err) => {\r\n this.loadingState = ComponentLoadingStates.Complete;\r\n },\r\n\r\n complete: () => {\r\n this.loadingState = ComponentLoadingStates.Complete;\r\n }\r\n })\r\n }\r\n\r\n\r\n onSearch() {\r\n console.log(this.searchText);\r\n if (this.searchText.trim().length === 0) {\r\n this.filteredData = structuredClone(this.dataMap);\r\n return;\r\n }\r\n this.searchText = this.searchText.toLowerCase();\r\n for (const [key, entries] of Object.entries(this.proxyData)) {\r\n const filteredData = entries.filter(entry => Object.values(entry)\r\n .some(val => {\r\n let a: string = val.toString().toLowerCase();\r\n return a.search(this.searchText) == -1 ? false : true;\r\n }))\r\n\r\n this.filteredData[key] = filteredData;\r\n }\r\n this.filteredData;\r\n }\r\n\r\n onAgentSelected(code: any) {\r\n if (this.form.controls['client'].value === null) {\r\n return;\r\n }\r\n this.form.controls['branch'].patchValue(null);\r\n this.loadingState = ComponentLoadingStates.Loading;\r\n this.reportService.getBranchByAgent(this.sysUserId, code).subscribe({\r\n next: (data) => {\r\n this.clientBranches = data;\r\n },\r\n error: (err) => {\r\n this.loadingState = ComponentLoadingStates.Complete;\r\n },\r\n complete: () => {\r\n if(sessionStorage.getItem(\"ezremitusername\")){\r\n const index=this.clientBranches.findIndex((branch)=>branch.branchCode === \"All\");\r\n if(index==-1){\r\n this.form.controls['branch'].setValue(this.clientBranches[0].branchCode)\r\n }else{\r\n this.form.controls['branch'].setValue('All');\r\n }\r\n }\r\n this.loadingState = ComponentLoadingStates.Complete;\r\n\r\n }\r\n });\r\n }\r\n\r\n mapFormToModel(): BranchActivitySendReportRequestDomainModel {\r\n const data = new BranchActivitySendReportRequestDomainModel(this.form.getRawValue());\r\n data.startDate = this.form.controls['fromDate'].value;\r\n data.endDate = this.form.controls['toDate'].value;\r\n data.sendCountryCode = this.form.controls['sendCountry'].value;\r\n data.recvCountryCode = this.form.controls['receiveCountry'].value;\r\n data.businessPartnerCode = this.form.controls['client'].value;\r\n data.transactionStatus = this.form.controls['transactionStatus'].value;\r\n data.transactionType = this.form.controls['product'].value;\r\n data.branchCode = this.form.controls['branch'].value;\r\n data.payoutCurrency = this.form.controls['receiveCurrency'].value;\r\n data.companyCode = \"BH\";\r\n return data;\r\n }\r\n\r\n onGridReady(params: GridReadyEvent) {\r\n params.api.sizeColumnsToFit();\r\n this.gridAPi = params.api;\r\n this.gridColumnApi = params.columnApi;\r\n }\r\n\r\n onGridSizeChanged(params: any) {\r\n params.api.sizeColumnsToFit();\r\n }\r\n\r\n\r\n changeLimit(limit: any, index: number, key: string) {\r\n if (limit != \"All\") {\r\n this.paginationArray[index] = limit;\r\n } else {\r\n this.paginationArray[index] = this.filteredData[key].length;\r\n }\r\n this.showRange = false;\r\n }\r\n\r\n async handleExport() {\r\n const data: any[] = [];\r\n this.gridAPi.forEachNode(node => data.push(node.data))\r\n if (Object.keys(this.filteredData).length == 0) {\r\n return;\r\n }\r\n switch (this.selectedExportOption) {\r\n case 'excel':\r\n this.exportExcel(data);\r\n break;\r\n case 'pdf':\r\n this.exportPDF(data);\r\n break;\r\n case 'csv':\r\n this.exportCSV(data);\r\n break;\r\n default:\r\n alert('Please select an export format.');\r\n }\r\n }\r\n\r\n // ------------------------ Utility ------------------------\r\n private loadImageAsBase64(imagePath: string): Promise<string> {\r\n return new Promise((resolve, reject) => {\r\n const img = new Image();\r\n img.crossOrigin = 'anonymous';\r\n img.src = imagePath;\r\n\r\n img.onload = () => {\r\n // Scale up canvas resolution (2x or more)\r\n const scale = 2;\r\n const canvas = document.createElement('canvas');\r\n canvas.width = img.width * scale;\r\n canvas.height = img.height * scale;\r\n\r\n const ctx = canvas.getContext('2d');\r\n if (ctx) {\r\n ctx.scale(scale, scale); // Draw image at higher quality\r\n ctx.drawImage(img, 0, 0);\r\n const base64 = canvas.toDataURL('image/png', 1.0); // 1.0 = highest quality\r\n resolve(base64);\r\n } else {\r\n reject('Failed to get canvas context.');\r\n }\r\n };\r\n\r\n img.onerror = () => reject('Failed to load image: ' + imagePath);\r\n });\r\n }\r\n\r\n exportPDF(data: any) {\r\n const currencyFields = ['payoutAmount', 'payinAmount', 'totalPayinAmount', 'tax', 'transactionCommissionAmount'];\r\n data = Object.values(this.dataMap)[0];\r\n const doc = new jsPDF({\r\n orientation: 'landscape',\r\n unit: 'mm',\r\n format: [400, 210]\r\n });\r\n\r\n const pageWidth = doc.internal.pageSize.width;\r\n\r\n //Title\r\n const title = `Branch Activity Send`;\r\n doc.setFontSize(15);\r\n doc.setFont('helvetica', 'bold');\r\n const textWidth = doc.getTextWidth(title);\r\n doc.text(title, doc.internal.pageSize.width / 2, 15, { align: 'center' });\r\n\r\n //Add Image\r\n if (this.logoBase64) {\r\n doc.addImage(this.logoBase64, 'PNG', 15, 5, 25, 20);\r\n }\r\n\r\n //Info block\r\n const infoY = 30;\r\n const leftMargin = 15;\r\n const lineHeight = 7;\r\n const infoLines = [\r\n ['Report User And Time:', this.user],\r\n ['Report Time', formatDate(this.reportDate, 'dd/MM/yyyy hh:mm a', 'en-US')]\r\n // ['Report Period:', `${this.fromDate} - ${this.toDate}`]\r\n ]\r\n\r\n doc.setFontSize(10);\r\n infoLines.forEach(([label, value], i) => {\r\n const y = infoY + i * lineHeight;\r\n // Draw label in bold\r\n doc.setFont('helvetica', 'bold');\r\n doc.text(label, leftMargin, y);\r\n\r\n // Draw value in normal font right after label\r\n const labelWidth = doc.getTextWidth(label + ' ');\r\n doc.setFont('helvetica', 'normal');\r\n doc.text(value, leftMargin + labelWidth, y);\r\n });\r\n\r\n const filteredColumns = this.columnDefs.filter(col =>\r\n !(col.headerName?.toLowerCase().includes('sr. no') || col.field?.toLowerCase().includes('srno') || col.field?.toLowerCase().includes('serial'))\r\n );\r\n\r\n // Prepare headers with Sr No\r\n const headers = ['Sr No', ...filteredColumns.map(col => col.headerName || col.field!)];\r\n\r\n let Rows: any[] = [];\r\n\r\n for (const [key, reports] of Object.entries(this.dataMap)) {\r\n Rows.push([{ content: key, colSpan: 15 }]);\r\n const rows = reports.map((row, index) => {\r\n const rowData = filteredColumns.map(col => {\r\n let value = row[col.field!];\r\n if (currencyFields.includes(col.field) && value != null) {\r\n value = parseFloat(value).toFixed(3);\r\n }\r\n return value ?? '';\r\n });\r\n Rows.push([index + 1, ...rowData]);\r\n return [index + 1, ...rowData];\r\n });\r\n // Rows.push(rows);\r\n }\r\n\r\n // Prepare rows with Sr No\r\n const rows = data.map((row, index) => {\r\n const rowData = filteredColumns.map(col => {\r\n let value = row[col.field!];\r\n return value ?? '';\r\n });\r\n return [index + 1, ...rowData];\r\n });\r\n\r\n // Generate dynamic column styles for auto-width\r\n const columnStyles: { [key: number]: any } = {};\r\n headers.forEach((_, i) => {\r\n columnStyles[i] = { cellWidth: 'auto' };\r\n });\r\n\r\n columnStyles[2] = { cellWidth: 40 };\r\n\r\n // Render Table\r\n doc.autoTable({\r\n head: [headers],\r\n body: Rows,\r\n startY: infoY + infoLines.length * lineHeight + 5,\r\n theme: 'grid',\r\n headStyles: {\r\n fillColor: [220, 220, 220],\r\n textColor: 0,\r\n fontStyle: 'bold',\r\n fontSize: 9,\r\n halign: 'center'\r\n },\r\n bdyStyles: {\r\n fontSize: 8,\r\n fillColor: [255, 255, 255],\r\n textColor: [0, 0, 0]\r\n },\r\n styles: {\r\n cellPadding: 2,\r\n overflow: 'linebreak',\r\n minCellHeight: 6\r\n },\r\n columnStyles: columnStyles\r\n });\r\n doc.save(\"Branch-Activity-Send-Report.pdf\")\r\n }\r\n\r\n exportExcel(data: any) {\r\n const currencyFields = ['payoutAmount', 'payinAmount', 'totalPayinAmount', 'tax', 'transactionCommissionAmount'];\r\n const workbook = new ExcelJS.Workbook();\r\n const worksheet = workbook.addWorksheet('Branch-Activity-Send-Report');\r\n const totalColumns = this.columnDefs.length;\r\n\r\n // Title Row\r\n const titleRow = worksheet.addRow([\"Branch Activity Send\"]);\r\n titleRow.font = { bold: true, size: 14 };\r\n titleRow.height = 60;\r\n worksheet.mergeCells(`A${titleRow.number}:${String.fromCharCode(64 + totalColumns)}${titleRow.number}`);\r\n //Center align the title\r\n const masterCell = worksheet.getCell(`A${titleRow.number}`);\r\n masterCell.alignment = { horizontal: 'center', vertical: 'middle' };\r\n\r\n // Add image if available\r\n if (this.logoBase64) {\r\n const base64Data = this.logoBase64.replace(/^data:image\\/\\w+;base64,/, '');\r\n const imageId = workbook.addImage({\r\n base64: base64Data,\r\n extension: 'png',\r\n });\r\n\r\n // Place image at top-left (e.g., A1:C4)\r\n worksheet.addImage(imageId, {\r\n tl: { col: 0, row: 0 },\r\n ext: { width: 150, height: 50 },\r\n });\r\n }\r\n\r\n //Meta Data\r\n const meta: [string, string][] = [\r\n ['Report User ', this.user],\r\n ['Report Time', formatDate(this.reportDate, 'dd/MM/yyyy hh:mm a', 'en-US')]\r\n // ['Report Period', `${this.fromDate} - ${this.toDate}`]\r\n ]\r\n\r\n meta.forEach(([label, value]) => {\r\n const row = worksheet.addRow([label, value]);\r\n //Bold the key column\r\n const labelCell = row.getCell(1);\r\n labelCell.font = { bold: true };\r\n })\r\n // For Empty Row\r\n worksheet.addRow([]);\r\n\r\n // Add Header Row for Data Table\r\n const headerRow = worksheet.addRow(this.columnDefs.map(col => col.headerName || col.field));\r\n headerRow.font = { bold: true };\r\n for (let i = 1; i <= this.columnDefs.length; i++) {\r\n const cell = headerRow.getCell(i);\r\n cell.fill = {\r\n type: 'pattern',\r\n pattern: 'solid',\r\n fgColor: { argb: 'D9D9D9' },\r\n };\r\n }\r\n\r\n headerRow.alignment = {\r\n wrapText: true,\r\n vertical: 'top',\r\n horizontal: 'center'\r\n };\r\n headerRow.border = {\r\n top: { style: 'thin' }, bottom: { style: 'thin' },\r\n left: { style: 'thin' }, right: { style: 'thin' }\r\n };\r\n\r\n const dataStartRow = worksheet.lastRow!.number + 1;\r\n const branchRows = [];\r\n for (const [key, reports] of Object.entries(this.dataMap)) {\r\n console.log('Key:', key);\r\n console.log('Reports:', reports);\r\n const row = worksheet.addRow([`${key}`]);\r\n worksheet.mergeCells(row.number, 1, row.number, 10);\r\n branchRows.push(row.number);\r\n // Add Data Rows\r\n reports.forEach(row => {\r\n const rowData = this.columnDefs.map(col => {\r\n let value = row[col.field!];\r\n // Format currency fields\r\n if (currencyFields.includes(col.field) && value != null) {\r\n value = parseFloat(value).toFixed(3);\r\n }\r\n if (!isNaN(value) && value !== null && value !== '') {\r\n return `\\t ${value}`;\r\n }\r\n return value ?? '';\r\n })\r\n const dataRow = worksheet.addRow(rowData);\r\n dataRow.border = {\r\n top: { style: 'thin' }, bottom: { style: 'thin' },\r\n left: { style: 'thin' }, right: { style: 'thin' }\r\n };\r\n });\r\n worksheet.addRow([]);\r\n }\r\n\r\n // Auto column width ONLY based on data rows\r\n for (let i = 1; i <= totalColumns; i++) {\r\n let maxLength = 10;\r\n for (let rowNum = dataStartRow; rowNum <= worksheet.lastRow!.number; rowNum++) {\r\n if (branchRows.indexOf(x => x === rowNum) === -1) {\r\n continue;\r\n }\r\n const cell = worksheet.getRow(rowNum).getCell(i);\r\n const val = cell.value ? cell.value.toString() : '';\r\n maxLength = Math.max(maxLength, val.length);\r\n }\r\n worksheet.getColumn(i).width = maxLength + 2;\r\n }\r\n worksheet.getColumn(2).width = 20;\r\n worksheet.getColumn(3).width = 15;\r\n // Export\r\n workbook.xlsx.writeBuffer().then(buffer => {\r\n const blob = new Blob([buffer], {\r\n type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'\r\n })\r\n FileSaver.saveAs(blob, 'Branch-Activity-Send-Report.xlsx');\r\n })\r\n }\r\n\r\n exportCSV(data: any[]) {\r\n const currencyFields = ['payoutAmount', 'payinAmount', 'totalPayinAmount', 'tax', 'transactionCommissionAmount'];\r\n const metadata = [\r\n ['Report Title', 'Branch Activity Send'],\r\n ['Report Time', formatDate(this.reportDate, 'dd/MM/yyyy hh:mm a', 'en-US')]\r\n // ['Report User', this.user]\r\n ];\r\n\r\n const filteredCols = this.columnDefs.filter(\r\n col =>\r\n !(col.headerName?.toLowerCase().includes('sr. no') ||\r\n col.field?.toLowerCase().includes('sr. no'))\r\n );\r\n\r\n const headers = ['Sr No', ...filteredCols.map(col => col.headerName || col.field!)];\r\n\r\n let Rows: any[][] = []\r\n for (const [key, reports] of Object.entries(this.dataMap)) {\r\n Rows.push([key]);\r\n reports.map((row, index) => {\r\n const rowVals = filteredCols.map(col => {\r\n let v = row[col.field!];\r\n if (currencyFields.includes(col.field) && v != null) {\r\n v = parseFloat(v).toFixed(3);\r\n }\r\n if (col.field === 'transactionNumber' || col.headerName === 'Transaction Number') {\r\n return `\\t ${v}`;\r\n }\r\n return v ?? '';\r\n });\r\n Rows.push([index + 1, ...rowVals]);\r\n return [index + 1, ...rowVals];\r\n })\r\n }\r\n\r\n const aoa: any[][] = [\r\n ...metadata,\r\n [], // blank row for separation\r\n headers,\r\n ...Rows\r\n ];\r\n\r\n // convert to worksheet & CSV\r\n const ws = XLSX.utils.aoa_to_sheet(aoa);\r\n const csv = XLSX.utils.sheet_to_csv(ws, {\r\n FS: ',', RS: '\\n', blankrows: false, forceQuotes: false\r\n } as any);\r\n\r\n // trigger download\r\n const blob = new Blob([csv], { type: 'text/csv;charset=utf-8;' });\r\n saveAs(blob, 'Branch-Activity-Send-Report.csv');\r\n }\r\n\r\n // showStatus(event: Event) {\r\n // this.ngZone.run(() => {\r\n // this.showStatusDropdown = !this.showStatusDropdown;\r\n // });\r\n // }\r\n\r\n // selectStatus(event: Event) {\r\n // const target = event.target as HTMLInputElement;\r\n // this.status = [];\r\n // // this.status = this.form.controls[\"selectedStatus\"].value.split(\",\");\r\n // this.selectAll = false;\r\n // if (target.checked) {\r\n // this.myStatus.push(new FormControl(target.value));\r\n // console.log(this.myStatus);\r\n // } else {\r\n // const index = this.myStatus.controls\r\n // .findIndex(ctrl => ctrl.value === target.value);\r\n // if (index !== -1) {\r\n // this.myStatus.removeAt(index);\r\n // }\r\n // }\r\n\r\n // for (let i = 0; i < this.myStatus.controls.length; i++) {\r\n // this.status.push(this.myStatus.controls[i].value);\r\n // }\r\n // console.log(this.myStatus);\r\n // this.form.setControl('transactionStatus', new FormArray([new FormControl(target.value)]));\r\n // this.form.controls[\"selectedStatus\"].setValue(this.status.join(\",\"));\r\n // console.log(this.form.controls[\"selectedStatus\"].value);\r\n // }\r\n\r\n // selectAllStatus(event: Event) {\r\n // const target = event.target as HTMLInputElement;\r\n // this.status = [];\r\n // this.selectAll = !this.selectAll;\r\n // if (target.checked) {\r\n // for (let s of this.params?.transactionStatusTypes) {\r\n // this.myStatus.push(new FormControl(s.transactionStatus));\r\n // this.status.push(s.transactionStatus);\r\n // }\r\n // } else {\r\n // this.myStatus.clear();\r\n // this.status = []\r\n // }\r\n // this.form.controls[\"selectedStatus\"].setValue(this.status.join(\",\"));\r\n // console.log(this.form.controls[\"selectedStatus\"].value);\r\n // }\r\n\r\n //Currency Dropdown\r\n // toggleCurrencyDropdown() {\r\n // this.showCurrency = !this.showCurrency;\r\n // }\r\n // selectCurrency(currencyCode: string) {\r\n // this.form.controls[\"receiveCurrency\"].setValue(currencyCode);\r\n // this.showCurrency = false;\r\n // }\r\n\r\n // getSelectedCurrencyDisplay(): string {\r\n // const currency = this.form.controls[\"receiveCurrency\"].value;\r\n // if (currency && this.params?.currencies) {\r\n // return this.params.currencies[this.params.currencies.findIndex(c => c.currencyCode == currency)].currency;\r\n // } else {\r\n // this.form.controls[\"receiveCurrency\"].setValue(\"All\");\r\n // return \"All\";\r\n // }\r\n // }\r\n\r\n //Product Dropdown\r\n // toggleProductDropdown() {\r\n // this.showProduct = !this.showProduct;\r\n // }\r\n // selectProduct(productCode: string) {\r\n // this.form.controls[\"product\"].setValue(productCode);\r\n // this.showProduct = false;\r\n // }\r\n\r\n // getSelectedProductDisplay(): string {\r\n // const product = this.form.controls[\"product\"].value;\r\n // if (product && this.params?.transactionProductTypes) {\r\n // return this.params.transactionProductTypes[this.params.transactionProductTypes.findIndex(p => p.productCode == product)].name;\r\n // } else {\r\n // this.form.controls[\"product\"].setValue(\"All\");\r\n // return \"All\";\r\n // }\r\n // }\r\n\r\n //SendCountry Dropdown\r\n // toggleSendCountryDropdown() {\r\n // this.showSendCountry = !this.showSendCountry;\r\n // }\r\n // selectSendCountry(countryCode: any) {\r\n // this.form.controls[\"sendCountry\"].setValue(countryCode);\r\n // this.showSendCountry = false;\r\n // }\r\n\r\n // getSelectedSendCountryDisplay(): string {\r\n // const country = this.form.controls[\"sendCountry\"].value;\r\n // if (country && this.params?.countries) {\r\n // return this.params.countries[this.params.countries.findIndex(c => c.countryCode == country)].country;\r\n // } else {\r\n // this.form.controls[\"sendCountry\"].setValue(\"All\");\r\n // return \"All\";\r\n // }\r\n // }\r\n\r\n //ReceiveCountry Dropdown\r\n // toggleReceiveCountry() {\r\n // this.showReceiveCountry = !this.showReceiveCountry;\r\n // }\r\n\r\n // selectReceiveCountry(countryCode: string) {\r\n // this.form.controls[\"receiveCountry\"].setValue(countryCode);\r\n // this.showReceiveCountry = false;\r\n // }\r\n\r\n // getSelectedReceiveCountryDisplay(): string {\r\n // const country = this.form.controls[\"receiveCountry\"].value;\r\n // if (country && this.params?.countries) {\r\n // return this.params.countries[this.params.countries.findIndex(c => c.countryCode == country)].country;\r\n // } else {\r\n // this.form.controls[\"receiveCountry\"].setValue(\"All\");\r\n // return \"All\";\r\n // }\r\n // }\r\n\r\n //Clients Dropdown\r\n // toggleClients() {\r\n // this.showClients = !this.showClients;\r\n // }\r\n\r\n selectClient(client: any) {\r\n this.form.controls[\"client\"].setValue(client);\r\n this.form.controls[\"branch\"].setValue(null);\r\n this.onAgentSelected(client);\r\n this.showClients = false;\r\n this.clientSelected = true;\r\n }\r\n\r\n // getSelectedClient(): string {\r\n // let client = this.form.controls[\"client\"].value;\r\n // // if (sessionStorage.getItem('fossilusername')) {\r\n\r\n // // } else {\r\n // // if(!client && this.clients){\r\n // // this.selectClient(this.clients[0].code);\r\n // // }\r\n // // }\r\n // if (client) {\r\n // return this.clients[this.clients.findIndex(c => c.code == client)].agent;\r\n // } else {\r\n // return \"Select Client\";\r\n // }\r\n // }\r\n\r\n //Branch Dropdown\r\n // toggleBranch() {\r\n // this.showBranch = !this.showBranch;\r\n // }\r\n\r\n // selectBranch(branchCode: any) {\r\n // this.form.controls[\"branch\"].setValue(branchCode);\r\n // this.showBranch = false;\r\n // }\r\n\r\n // getSelectedBranch(): string {\r\n // const branch = this.form.controls[\"branch\"].value;\r\n // if (branch && this.clientBranches) {\r\n // return this.clientBranches[this.clientBranches.findIndex(b => b.branchCode == branch)].businessPartnerBranch;\r\n // } else {\r\n // return \"Select Branch\";\r\n // }\r\n // }\r\n\r\n //Status Dropdown\r\n // toggleStatusDropdown() {\r\n // this.showStatusDropdown = !this.showStatusDropdown;\r\n // }\r\n\r\n // clearError() {\r\n // this.showError = false;\r\n // }\r\n // clearMessage() {\r\n // this.showMessage = false;\r\n // }\r\n\r\n // dateChange(type: string) {\r\n // if (type === \"fromDate\") {\r\n // this.disableToDate = true;\r\n // this.form.controls[\"fromDate\"].enable();\r\n // // this.form.controls[\"fromDate\"].setValue(this.formatDate(this.form.controls[\"fromDate\"].value));\r\n // }\r\n // if (type === \"toDate\") {\r\n // // this.form.controls[\"toDate\"].setValue(this.formatDate(this.form.controls[\"toDate\"].value));\r\n // }\r\n // }\r\n\r\n public formatDate(params: any): string {\r\n return formatDate(new Date(params.value), 'dd/MM/yyyy', 'en-US');\r\n }\r\n\r\n activateBranchPagination(branchIndex: number) {\r\n this.activeBranch = branchIndex;\r\n this.showRange = !this.showRange;\r\n }\r\n\r\n currencyFormatter(params: any): string {\r\n if (params.value == null || params.value === '') return '';\r\n const number = parseFloat(params.value);\r\n if (isNaN(number)) return params.value;\r\n return number.toLocaleString('en-US', {\r\n minimumFractionDigits: 3,\r\n maximumFractionDigits: 3\r\n });\r\n }\r\n\r\n //Date Picler\r\n // onDateChangeFromDate(event: Event) {\r\n // const input = event.target as HTMLInputElement;\r\n // const selectedDate = input.value;\r\n // this.form.controls[\"fromDate\"].setValue(formatDate(new Date(selectedDate), 'dd/MM/yyyy', 'en-US'));\r\n // }\r\n\r\n // onDateChangeToDate(event: Event) {\r\n // const input = event.target as HTMLInputElement;\r\n // const selectedDate = input.value;\r\n // this.form.controls[\"toDate\"].setValue(formatDate(new Date(selectedDate), 'dd/MM/yyyy', 'en-US'));\r\n // }\r\n\r\n // onEnterKey(event: Event) {\r\n // const keyboardEvent = event as KeyboardEvent;\r\n // keyboardEvent.preventDefault();\r\n\r\n // if (keyboardEvent.target instanceof HTMLElement) {\r\n // keyboardEvent.target.blur();\r\n // }\r\n // }\r\n\r\n // fromDateChange() {\r\n // const msPerDay = 1000 * 60 * 60 * 24;\r\n // const fd = this.form.controls[\"fromDate\"].value;\r\n // const td = this.form.controls[\"toDate\"].value;\r\n // const from = new Date(fd);\r\n // const to = new Date(td);\r\n // const differenceInDays = Math.floor((to?.getTime() - from?.getTime()) / (1000 * 60 * 60 * 24));\r\n // if (differenceInDays > 31) {\r\n // // Set toDate to fromDate + 31 days\r\n // const d = new Date(from.getTime() + 31 * msPerDay);\r\n // this.form.controls['toDate']?.patchValue(d);\r\n // }\r\n\r\n // }\r\n\r\n // toDateChange() {\r\n // const msPerDay = 1000 * 60 * 60 * 24;\r\n // const fd = this.form.controls[\"fromDate\"].value;\r\n // const td = this.form.controls[\"toDate\"].value;\r\n // const from = new Date(fd);\r\n // const to = new Date(td);\r\n // const differenceInDays = Math.floor((to?.getTime() - from?.getTime()) / (1000 * 60 * 60 * 24));\r\n // if (differenceInDays > 31) {\r\n // // Set toDate to fromDate + 31 days\r\n // const d = new Date(from.getTime() + 31 * msPerDay)\r\n // this.form.controls['fromDate']?.patchValue(d);\r\n // }\r\n // }\r\n\r\n private subscribeToDateChanges(): void {\r\n this.form.get('fromDate')?.valueChanges.subscribe(fromDateStr => {\r\n const toDateControl = this.form.get('toDate');\r\n const toDateStr = toDateControl?.value;\r\n if (!fromDateStr || !toDateStr) return;\r\n const fromDate = new Date(fromDateStr);\r\n const toDate = new Date(toDateStr);\r\n \r\n const maxToDate = new Date(fromDate);\r\n maxToDate?.setDate(fromDate.getDate() + 31);\r\n if (toDate > maxToDate) {\r\n toDateControl?.patchValue(maxToDate.toISOString().split(\"T\")[0]);\r\n }\r\n });\r\n \r\n this.form.get('toDate')?.valueChanges.subscribe(toDateStr => {\r\n const fromDateControl = this.form.get('fromDate');\r\n const fromDateStr = fromDateControl?.value;\r\n if (!toDateStr || !fromDateStr) return;\r\n const toDate = new Date(toDateStr);\r\n const fromDate = new Date(fromDateStr);\r\n \r\n const minFromDate = new Date(toDate);\r\n minFromDate?.setDate(toDate.getDate() - 31);\r\n if (fromDate < minFromDate) {\r\n fromDateControl?.patchValue(minFromDate.toISOString().split(\"T\")[0]);\r\n }\r\n });\r\n}\r\n\r\nprivate subscribeToClientChange(): void {\r\n this.form.get('client')?.valueChanges.subscribe(val => {\r\n if(val === null){\r\n this.form.controls['branch'].patchValue(null);\r\n }\r\n })\r\n}\r\n\r\n// searchClient(event:Event){\r\n// const target = event.target as HTMLInputElement;\r\n// let searchText = target.value.trim();\r\n// if(searchText.length==0){\r\n// this.clients = [...this.clientsData];\r\n// }\r\n// this.clients = this.clientsData.filter((client)=>{\r\n// client?.agent?.includes(searchText);\r\n// })\r\n// }\r\n\r\nonClientSelected(){\r\n this.form.get('client')?.valueChanges.subscribe((val)=>{\r\n val = this.form.get('client')?.value;\r\n this.onAgentSelected(val);\r\n })\r\n \r\n }\r\n\r\n}\r\n\r\n","<section>\r\n <div class=\"Breadcrumb\">\r\n <h1>Reports</h1>\r\n <span class=\"BreadCrumbArrow\"></span>\r\n <h2 class=\"BreadCrumbActive\">Branch Activity Send</h2>\r\n </div>\r\n</section>\r\n\r\n<section id=\"request-params\">\r\n <form [formGroup]=\"form\" (ngSubmit)=\"onSubmit()\">\r\n <table>\r\n <tbody>\r\n <tr>\r\n <td style=\"width: 36%;border-top: 0;\">\r\n <div class=\"row d-flex justify-content-center align-items-center row-cls\">\r\n <div class=\"col-2\">\r\n <label class=\"label-data\" for=\"client\">Client<span class=\"text-danger\">*</span></label>\r\n </div>\r\n <div class=\"col-10 inputbox\">\r\n <ng-container *ngIf=\"clients\">\r\n <ng-select [items]=\"clients\" bindLabel=\"agent\" bindValue=\"code\" formControlName=\"client\"\r\n placeholder=\"- Please select -\" required>\r\n <ng-template ng-option-tmp let-item=\"item\">\r\n <div title=\"{{ item.agent }}\" class=\"ng-option-text\">\r\n {{ item.agent }}\r\n </div>\r\n </ng-template>\r\n </ng-select>\r\n <!-- <ng-select placeholder=\"- Please select -\" formControlName=\"client\" required>\r\n <ng-option *ngFor=\"let client of clients\" [value]=\"client.code\">\r\n {{ client.agent }}\r\n </ng-option>\r\n </ng-select> -->\r\n </ng-container>\r\n </div>\r\n </div>\r\n </td>\r\n <td style=\"width: 28%;\">\r\n <div class=\"row d-flex justify-content-center align-items-center row-cls\">\r\n <div class=\" col-2\">\r\n <label class=\"label-data\">From<span class=\"text-danger\">*</span> Date</label>\r\n </div>\r\n <div class=\"col-10 inputbox\">\r\n <div class=\"input-group\">\r\n <input class=\"form-control dpicker\" placeholder=\"dd/mm/yyyy\" ngbDatepicker\r\n #fromDateInput=\"ngbDatepicker\" name=\"fromDate\" id=\"fromDate\" formControlName=\"fromDate\" />\r\n <div class=\"input-group-append\">\r\n <button class=\"input-group-button cal\" (click)=\"fromDateInput.toggle()\" type=\"button\">\r\n <i class=\"fa fa-calendar\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n <!-- <input id=\"fromdate\" class=\"form-control form-control-sm\" type=\"date\" formControlName=\"fromDate\"> -->\r\n </div>\r\n </div>\r\n </td>\r\n <td style=\"width: 28%;\">\r\n <div class=\"row d-flex justify-content-center align-items-center row-cls\">\r\n <div class=\"col-2\">\r\n <label class=\"label-data\">To<span class=\"text-danger\">*</span> Date</label>\r\n </div>\r\n <div class=\"col-10 inputbox\">\r\n <!-- <input id=\"todate\" class=\"form-control form-control-sm\" type=\"date\" formControlName=\"toDate\"> -->\r\n <div class=\"input-group\">\r\n <input class=\"form-control dpicker\" placeholder=\"dd/mm/yyyy\" ngbDatepicker\r\n #toDateInput=\"ngbDatepicker\" name=\"toDate\" id=\"toDate\" formControlName=\"toDate\" />\r\n <div class=\"input-group-append\">\r\n <button class=\"input-group-button cal\" (click)=\"toDateInput.toggle()\" type=\"button\">\r\n <i class=\"fa fa-calendar\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td style=\"width: 8%;\">\r\n <div class=\"d-flex justify-content-center\">\r\n <div class=\"btn-box\">\r\n <button class=\"btn btn-report\" (click)=\"onSubmit()\">View</button>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n <tr>\r\n <td>\r\n <div class=\"row d-flex justify-content-center align-items-center row-cls\">\r\n <div class=\"col-2 \">\r\n <label class=\"label-data\" for=\"branch\">Branch<span class=\"text-danger\">*</span></label>\r\n </div>\r\n <div class=\"col-10 inputbox\">\r\n <ng-container *ngIf=\"clientBranches\">\r\n <ng-select [items]=\"clientBranches\" bindLabel=\"businessPartnerBranch\" bindValue=\"branchCode\"\r\n formControlName=\"branch\" placeholder=\"- Please select -\" required>\r\n <ng-template ng-option-tmp let-item=\"item\">\r\n <div title=\"{{ item.businessPartnerBranch }}\" class=\"ng-option-text\">\r\n {{ item.businessPartnerBranch }}\r\n </div>\r\n </ng-template>\r\n </ng-select>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </td>\r\n <td>\r\n <div class=\"row d-flex justify-content-center align-items-center row-cls\">\r\n <div class=\"col-2 \">\r\n <label class=\"label-data\"> Send<span class=\"text-danger\">*</span> Country</label>\r\n </div>\r\n <div class=\"col-10 inputbox\">\r\n <ng-container *ngIf=\"params\">\r\n <ng-select [items]=\"params.countries\" bindLabel=\"country\" bindValue=\"countryCode\"\r\n formControlName=\"sendCountry\" placeholder=\"- Please select -\" required>\r\n <ng-template ng-option-tmp let-item=\"item\">\r\n <div title=\"{{ item.country }}\" class=\"ng-option-text\">\r\n {{ item.country }}\r\n </div>\r\n </ng-template>\r\n </ng-select>\r\n <!-- <ng-select placeholder=\"- Please select -\" formControlName=\"sendCountry\" required>\r\n <ng-option *ngFor=\"let country of params.countries\" [value]=\"country.countryCode\">\r\n {{ country.country }}\r\n </ng-option>\r\n </ng-select> -->\r\n </ng-container>\r\n </div>\r\n </div>\r\n </td>\r\n <td>\r\n <div class=\"row d-flex justify-content-center align-items-center row-cls\">\r\n <div class=\"col-2 \">\r\n <label class=\"label-data\" for=\"receiveCountry\"> Receive<span class=\"text-danger\">*</span>\r\n Country</label>\r\n </div>\r\n <div class=\"col-10 inputbox\">\r\n <ng-container *ngIf=\"params\">\r\n <ng-select [items]=\"params.countries\" bindLabel=\"country\" bindValue=\"countryCode\"\r\n formControlName=\"receiveCountry\" placeholder=\"- Please select -\" required>\r\n <ng-template ng-option-tmp let-item=\"item\">\r\n <div title=\"{{ item.country }}\" class=\"ng-option-text\">\r\n {{ item.country }}\r\n </div>\r\n </ng-template>\r\n </ng-select>\r\n <!-- <ng-select placeholder=\"- Please select -\" formControlName=\"receiveCountry\" required>\r\n <ng-option *ngFor=\"let country of params.countries\" [value]=\"country.countryCode\">\r\n {{ country.country }}\r\n </ng-option>\r\n </ng-select> -->\r\n </ng-container>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n <tr>\r\n <td>\r\n <div class=\"row d-flex justify-content-center align-items-center row-cls\">\r\n <div class=\"col-2 \">\r\n <label class=\"label-data\" for=\"transactionStatus\">Transaction Status <span\r\n class=\"text-danger\">*</span></label>\r\n </div>\r\n <div class=\"col-10 inputbox\">\r\n <ng-container *ngIf=\"params\">\r\n <ng-select [items]=\"params.transactionStatusTypes\" [multiple]=\"true\"\r\n formControlName=\"transactionStatus\" bindLabel=\"transactionStatus\" bindValue=\"transactionStatus\"\r\n placeholder=\"Select items\" [closeOnSelect]=\"false\">\r\n <ng-template ng-option-tmp let-item=\"item\" let-item$=\"item$\">\r\n <input type=\"checkbox\" [checked]=\"item$.selected\" /> {{ item.transactionStatus }}\r\n </ng-template>\r\n </ng-select>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </td>\r\n <td>\r\n <div class=\"row d-flex justify-content-center align-items-center row-cls\">\r\n <div class=\"col-2 \">\r\n <label class=\"label-data\" for=\"product\">Product<span class=\"text-danger\">*</span></label>\r\n </div>\r\n <div class=\"col-10 inputbox\">\r\n <div class=\"custom-dropdown-container\">\r\n <ng-container *ngIf=\"params\">\r\n <ng-select [items]=\"params.transactionProductTypes\" bindLabel=\"name\" bindValue=\"productCode\"\r\n formControlName=\"product\" placeholder=\"- Please select -\" required>\r\n <ng-template ng-option-tmp let-item=\"item\">\r\n <div title=\"{{ item.name }}\" class=\"ng-option-text\">\r\n {{ item.name }}\r\n </div>\r\n </ng-template>\r\n </ng-select>\r\n <!-- <ng-select placeholder=\"- Please select -\" formControlName=\"product\" required>\r\n <ng-option *ngFor=\"let product of params.transactionProductTypes\" [value]=\"product.productCode\">\r\n {{ product.name }}\r\n </ng-option>\r\n </ng-select> -->\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td>\r\n <div class=\"row d-flex justify-content-center align-items-center row-cls\">\r\n <div class=\"col-2 \">\r\n <label class=\"label-data\" for=\"receiveCurrency\">Receive<span class=\"text-danger\">*</span>\r\n Currency</label>\r\n </div>\r\n <div class=\"col-10 inputbox\">\r\n <ng-container *ngIf=\"params\">\r\n <ng-select [items]=\"params.currencies\" bindLabel=\"currency\" bindValue=\"currencyCode\"\r\n formControlName=\"receiveCurrency\" placeholder=\"- Please select -\" required>\r\n <ng-template ng-option-tmp let-item=\"item\">\r\n <div title=\"{{ item.currency }}\" class=\"ng-option-text\">\r\n {{ item.currency }}\r\n </div>\r\n </ng-template>\r\n </ng-select>\r\n <!-- <ng-select placeholder=\"- Please select -\" formControlName=\"receiveCurrency\" required>\r\n <ng-option *ngFor=\"let currency of params.currencies\" [value]=\"currency.currencyCode\">\r\n {{ currency.currency }}\r\n </ng-option>\r\n </ng-select> -->\r\n </ng-container>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </form>\r\n</section>\r\n\r\n\r\n\r\n<app-loader class=\"\" *ngIf=\"loadingState == ComponentLoadingState.Loading\"></app-loader>\r\n\r\n<div class=\"alert alert-danger mt-3 d-flex justify-content-between align-items-center\" *ngIf=\"showError\">\r\n <span>{{ errorMessage }}</span>\r\n</div>\r\n\r\n<section *ngIf=\"showReport\" class=\"my-2\">\r\n <div class=\"title mb-3\">\r\n Branch Activity Send\r\n </div>\r\n <div class=\"mb-2 flex-container\">\r\n <tbody>\r\n <tr>\r\n <td class=\"labl meta-td\">Report User:</td>\r\n <td class=\"px-3 meta-td\"><span class=\"info\">{{user}}</span></td>\r\n </tr>\r\n <tr>\r\n <td class=\"labl meta-td\">Report Time:</td>\r\n <td class=\"px-3 meta-td\"><span class=\"info\">{{ reportDate }}</span></td>\r\n </tr>\r\n </tbody>\r\n </div>\r\n\r\n <!-- Info Message -->\r\n <!-- <div class=\"alert alert-danger mt-3 d-flex justify-content-between align-items-center\"\r\n *ngIf=\"showMessage\">\r\n <span><strong>Message:</strong> {{ message }}</span>\r\n <button type=\"button\" class=\"btn-close\" (click)=\"clearMessage()\"></button>\r\n</div> -->\r\n\r\n <div class=\"added-functions\">\r\n <div class=\"searchBox\">\r\n <input type=\"text\" [(ngModel)]=\"searchText\" name=\"searchText\" class=\"search-input\" (ngModelChange)=\"onSearch()\"\r\n placeholder=\"Search...\" autocomplete=\"off\" />\r\n\r\n <button type=\"button\" class=\"btn btn-sm search-btn\" (click)=\"onSearch()\">\r\n <img src=\"assets/images/Search.svg\" alt=\"Search\" class=\"search-icon\" />\r\n </button>\r\n\r\n </div>\r\n <div class=\"export-options\">\r\n <ng-select placeholder=\"- Please select -\" class=\"export-selector\" [(ngModel)]=\"selectedExportOption\"\r\n [clearable]=\"false\" required>\r\n <ng-option *ngFor=\"let format of exportFormats\" [value]=\"format.code\">\r\n {{ format.formatName }}\r\n </ng-option>\r\n </ng-select>\r\n <!-- <select class=\"opt-cls\" [(ngModel)]=\"selectedExportOption\">\r\n <option value=\"excel\" selected>Excel</option>\r\n <option value=\"pdf\">PDF</option>\r\n <option value=\"csv\">CSV</option>\r\n </select> -->\r\n </div>\r\n <div>\r\n <button class=\"btn btn-report\" (click)=\"handleExport()\">Export</button>\r\n <!-- <div class=\"btn-box\">\r\n </div> -->\r\n </div>\r\n </div>\r\n\r\n <ngb-accordion #acc=\"ngbAccordion\" [closeOthers]=\"false\" [activeIds]=\"'panel-0'\">\r\n <ng-container *ngFor=\"let item of filteredData | keyvalue; let i = index\">\r\n <ngb-panel *ngIf=\"item.value.length > 0\" [id]=\"'panel-' + i\">\r\n\r\n <ng-template ngbPanelTitle style=\"height: 10%;\">\r\n <label\r\n style=\"font-weight: bold; font-size: 13px; line-height: 1.2; margin: 0; padding: 2px 0;color: #0c63e4;\">{{\r\n item.key\r\n }}</label>\r\n </ng-template>\r\n\r\n <ng-template ngbPanelContent>\r\n <ag-grid-angular class=\"ag-theme-alpine compact-grid myGrid\" style=\"width: 100%;height: 370px;\"\r\n [columnDefs]=\"columnDefs\" [defaultColDef]=\"defaultColDef\" [rowData]=\"item.value\" [rowHeight]=\"20\"\r\n [headerHeight]=\"22\" [gridOptions]=\"{\r\n suppressHorizontalScroll: true,\r\n scrollbarWidth: 0\r\n }\" [pagination]=\"true\" [paginationPageSize]=\"paginationArray[i]\" (gridReady)=\"onGridReady($event)\"\r\n (gridSizeChanged)=\"onGridSizeChanged($event)\">\r\n </ag-grid-angular>\r\n\r\n\r\n <div class=\"pgn\">\r\n <div style=\"position: absolute;\">\r\n <div class=\"pagination-mobile mb-2\">\r\n <div class=\"ngx-dropdown ngx-range-dropdown\" [class.ngx-active]=\"showRange && activeBranch == i\">\r\n <div class=\"ngx-btn-group\">\r\n <span *ngIf=\"ranges.indexOf(paginationArray[i]) != -1; else showAll\"\r\n class=\"ngx-btn ngx-range-dropdown-button\" (click)=\"activateBranchPagination(i)\">\r\n {{ paginationArray[i] }} &nbsp; &nbsp;<i class=\"ngx-icon ngx-icon-arrow-down\"></i>\r\n </span>\r\n <ng-template #showAll>\r\n <span class=\"ngx-btn ngx-range-dropdown-button\" (click)=\"activateBranchPagination(i)\">\r\n All &nbsp; &nbsp;<i class=\"ngx-icon ngx-icon-arrow-down\"></i>\r\n </span>\r\n </ng-template>\r\n <span class=\"pagination-label\">Entries per page</span>\r\n <ul class=\"ngx-menu\" *ngIf=\"showRange\">\r\n <li class=\"ngx-c-hand ngx-range-dropdown-button\" *ngFor=\"let limit of ranges\"\r\n (click)=\"changeLimit(limit,i,item.key)\">\r\n <span>{{ limit }}</span>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n\r\n </ngb-panel>\r\n </ng-container>\r\n </ngb-accordion>\r\n <div class=\"alert alert-warning mt-3\" *ngIf=\"noDataFound\">\r\n No Data Found\r\n </div>\r\n</section>","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { PageSizeSelectorComponent } from './page-size-selector/page-size-selector.component';\r\n\r\n@NgModule({\r\n declarations: [PageSizeSelectorComponent],\r\n imports: [CommonModule, FormsModule],\r\n exports: [PageSizeSelectorComponent]\r\n})\r\nexport class SharedModule { }\r\n","import { APP_INITIALIZER, NgModule } from '@angular/core';\r\nimport { AccGlDetailsEnquiryReportComponent } from './components/acc-gl-details-enquiry-report/acc-gl-details-enquiry-report.component';\r\nimport { AgGridModule } from 'ag-grid-angular';\r\nimport { ReportsLibRoutingModule } from './reports-lib-routing.module';\r\n\r\nimport { BrowserModule } from '@angular/platform-browser';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { BranchActivitySendReportComponent } from './components/branch-activity-send-report/branch-activity-send-report.component';\r\nimport { NgbModule } from '@ng-bootstrap/ng-bootstrap';\r\nimport { NgSelectModule } from '@ng-select/ng-select';\r\nimport { LoaderComponent } from './shared/loader/loader.component'\r\nimport { CommonModule } from '@angular/common';\r\nimport { RouterModule } from '@angular/router';\r\nimport { ConfigService } from '../lib/services/config.service';\r\nimport {NgbDatepickerModule } from '@ng-bootstrap/ng-bootstrap';\r\nimport { SharedModule } from './shared/shared.module';\r\nimport { TransactionEnquiryComponent } from './components/transaction-enquiry-report/transaction-enquiry-report.component';\r\nimport { SearchFilterComponent } from './shared/search-filter/search-filter.component';\r\nimport { ReportsLibComponent } from './reports-lib.component';\r\nexport function initializeApp(config: ConfigService) {\r\n const configFile ='/assets/config/app-config.json';\r\n\r\n return () => config.load(configFile).toPromise();\r\n}\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n ReportsLibComponent,\r\n AccGlDetailsEnquiryReportComponent,\r\n BranchActivitySendReportComponent,\r\n LoaderComponent,\r\n TransactionEnquiryComponent,\r\n LoaderComponent,\r\n SearchFilterComponent\r\n ],\r\n imports: [\r\n AgGridModule,\r\n ReportsLibRoutingModule,\r\n CommonModule,\r\n FormsModule,\r\n RouterModule,\r\n NgbDatepickerModule,\r\n SharedModule,\r\n BrowserModule,\r\n AgGridModule,\r\n ReportsLibRoutingModule,\r\n FormsModule,\r\n AgGridModule,\r\n NgbModule,\r\n ReactiveFormsModule,\r\n NgSelectModule,\r\n ReactiveFormsModule,\r\n NgbModule,\r\n NgSelectModule\r\n ],\r\n providers: [\r\n ConfigService,\r\n {\r\n provide: APP_INITIALIZER,\r\n useFactory: initializeApp,\r\n deps: [ConfigService],\r\n multi: true\r\n }\r\n ],\r\n exports: [\r\n ReportsLibComponent,\r\n AccGlDetailsEnquiryReportComponent,\r\n BranchActivitySendReportComponent,\r\n TransactionEnquiryComponent\r\n ]\r\n})\r\nexport class ReportsLibModule { }\r\n","export interface BranchActivityReportDictionay{\r\n \r\n}\r\n\r\nexport class BranchActivityReport {\r\n SendAgentBranchNameAndCode: string;\r\n BusinessDateTime: string;\r\n TransactionDateTime: string;\r\n TransactionNumber: string;\r\n Product: string;\r\n SendAgentBranchCode: string;\r\n SendPrincipalAgentCode: string;\r\n ReceiveAgentCode: string;\r\n PayoutCCcode: string;\r\n PayoutAmount?: number;\r\n PayinCCcode: string;\r\n PayinAmount?: number;\r\n TransactionCommissionAmount?: number;\r\n Tax?: number;\r\n TotalPayinAmount?: number;\r\n Status: string;\r\n}\r\n","/*\r\n * Public API Surface of reports-lib\r\n */\r\n\r\n// Services\r\nexport * from './lib/reports-lib.service';\r\nexport * from './lib/services/report.service';\r\nexport * from './lib/services/config.service'\r\nexport * from './lib/shared/export.service';\r\nexport * from './lib/shared/loader/loader.component'\r\n\r\n// Components\r\nexport * from './lib/reports-lib.component';\r\nexport * from './lib/reports-lib.module';\r\nexport * from './lib/services/config.service'\r\nexport * from './lib/components/acc-gl-details-enquiry-report/acc-gl-details-enquiry-report.component';\r\nexport * from './lib/components/transaction-enquiry-report/transaction-enquiry-report.component';\r\n\r\n// Models\r\nexport * from './lib/models/transaction-enquiry-report/transaction-enquiry.model';\r\nexport * from './lib/models/app-config.model';\r\n \r\nexport * from './lib/components/acc-gl-details-enquiry-report/acc-gl-details-enquiry-report.component';\r\nexport * from './lib/components/branch-activity-send-report/branch-activity-send-report.component';\r\n\r\n//Models\r\nexport * from './lib/models/branch-activity-report/branch-activity-send-report';\r\nexport * from './lib/models/branch-activity-report/branch-activity-send-report-request-domain-model';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2.ConfigService","i1","i1.ReportService","i3.ConfigService","i6","i8.LoaderComponent","i1.ExportService","i2.ReportService","i3","i4","i5","i7","i8.PageSizeSelectorComponent","i9","i10.SearchFilterComponent","i2.ExportService","i9.SearchFilterComponent","i7.LoaderComponent"],"mappings":"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"}