visualvault-api 2.0.0 → 2.1.0-beta.1

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,"sources":["../node_modules/tsup/assets/cjs_shims.js","../lib/http/sessionToken.js","../lib/http/authorize.js","../lib/VVRestApi.js","../lib/DocApi.js","../lib/common.js","../lib/http/httpHelper.js","../lib/docApi/documentManager.js","../lib/FormsApi.js","../lib/formsApi/formInstanceManager.js","../lib/ObjectsApi.js","../lib/objectsApi/modelManager.js","../lib/objectsApi/objectManager.js","../lib/StudioApi.js","../lib/studioApi/workflowManager.js","../lib/studioApi/rolesAndPermissionsManager.js","../lib/NotificationsApi.js","../lib/notificationsApi/userNotificationsManager.js","../lib/vvRestApi/constants.js","../lib/vvRestApi/configurationManager.js","../lib/vvRestApi/emailManager.js","../lib/vvRestApi/formsManager.js","../lib/vvRestApi/groupsManager.js","../lib/vvRestApi/libraryManager.js","../lib/vvRestApi/sitesManager.js","../lib/vvRestApi/usersManager.js","../lib/vvRestApi/currentUserManager.js","../lib/vvRestApi/scheduledProcessManager.js","../lib/vvRestApi/customQueryManager.js","../lib/vvRestApi/customerManager.js","../lib/vvRestApi/customerDatabaseManager.js","../lib/vvRestApi/filesManager.js","../lib/vvRestApi/scriptsManager.js","../lib/vvRestApi/documentsManager.js","../lib/vvRestApi/projectsManager.js","../lib/vvRestApi/indexFieldsManager.js","../lib/vvRestApi/outsideProcessesManager.js","../lib/vvRestApi/securityMembersManager.js","../lib/vvRestApi/layoutsManager.js","../lib/vvRestApi/reportsManager.js","../lib/vvRestApi/languageResourcesManager.js","../lib/vvRestApi/dropdownListsManager.js"],"sourcesContent":["// Shim globals in cjs bundle\n// There's a weird bug that esbuild will always inject importMetaUrl\n// if we export it as `const importMetaUrl = ... __filename ...`\n// But using a function will not cause this issue\n\nconst getImportMetaUrl = () => \n typeof document === \"undefined\" \n ? new URL(`file:${__filename}`).href \n : (document.currentScript && document.currentScript.tagName.toUpperCase() === 'SCRIPT') \n ? document.currentScript.src \n : new URL(\"main.js\", document.baseURI).href;\n\nexport const importMetaUrl = /* @__PURE__ */ getImportMetaUrl()\n","export class SessionToken {\n constructor() {\n this.isAuthenticated = false;\n this.apiUrl = null;\n this.baseUrl = null;\n this.authenticationUrl = null;\n this.customerAlias = null;\n this.databaseAlias = null;\n this.expirationDate = null;\n this.accessToken = null;\n this.tokenType = null;\n this.refreshToken = null;\n this.expiresIn = 0;\n this.clientId = null;\n this.clientSecret = null;\n this.userId = null;\n this.password = null;\n this.audience = null;\n }\n\n createCopy() {\n const newSession = new SessionToken();\n newSession.isAuthenticated = this.isAuthenticated;\n newSession.apiUrl = this.apiUrl;\n newSession.baseUrl = this.baseUrl;\n newSession.authenticationUrl = this.authenticationUrl;\n newSession.customerAlias = this.customerAlias;\n newSession.databaseAlias = this.databaseAlias;\n newSession.expirationDate = this.expirationDate;\n newSession.accessToken = this.accessToken;\n newSession.tokenType = this.tokenType;\n newSession.refreshToken = this.refreshToken;\n newSession.expiresIn = this.expiresIn;\n newSession.clientId = this.clientId;\n newSession.clientSecret = this.clientSecret;\n newSession.userId = this.userId;\n newSession.password = this.password;\n newSession.audience = this.audience;\n return newSession;\n }\n\n convertToJwt(jwt) {\n this.tokenType = 'jwt';\n this.accessToken = jwt[\"token\"];\n this.expirationDate = new Date(jwt[\"expires\"]);\n this.expiresIn = 0;\n }\n}\n\nexport default SessionToken;\n","import { SessionToken } from './sessionToken.js';\nimport createDebug from 'debug';\nimport yaml from 'js-yaml';\nimport fs from 'fs';\n\nconst debug = createDebug('visualvault:auth');\n\nexport class Authorize {\n constructor() {\n this.jsyaml = yaml;\n this.fs = fs;\n }\n\n async acquireSecurityToken(clientId, clientSecret, userId, password, audience, baseUrl, apiUrl, customerAlias, databaseAlias, authenticationUrl) {\n debug('acquireSecurityToken called for user: %s', userId);\n\n try {\n const sessionToken = await this.__getToken(\n clientId,\n clientSecret,\n userId,\n password,\n audience,\n baseUrl,\n customerAlias,\n databaseAlias,\n authenticationUrl,\n true\n );\n\n debug('acquireSecurityToken success');\n\n if (typeof (sessionToken) != 'undefined' && sessionToken != null) {\n sessionToken.baseUrl = baseUrl;\n sessionToken.apiUrl = apiUrl;\n sessionToken.authenticationUrl = authenticationUrl;\n sessionToken.customerAlias = customerAlias;\n sessionToken.databaseAlias = databaseAlias;\n sessionToken.clientId = clientId;\n sessionToken.clientSecret = clientSecret;\n sessionToken.userId = userId;\n sessionToken.password = password;\n sessionToken.audience = audience;\n sessionToken.isAuthenticated = true;\n }\n\n return sessionToken;\n } catch (error) {\n debug('acquireSecurityToken failed: %s', error.message);\n throw error;\n }\n }\n\n async acquireJwt(jwt, baseUrl, apiUrl, authenticationUrl, customerAlias, databaseAlias) {\n debug('acquireJwt called');\n\n try {\n const sessionToken = await this.__getJwt(\n jwt,\n baseUrl,\n customerAlias,\n databaseAlias,\n authenticationUrl,\n true\n );\n\n debug('acquireJwt success');\n\n if (typeof (sessionToken) != 'undefined' && sessionToken != null) {\n sessionToken.baseUrl = baseUrl;\n sessionToken.apiUrl = apiUrl;\n sessionToken.authenticationUrl = authenticationUrl;\n sessionToken.customerAlias = customerAlias;\n sessionToken.databaseAlias = databaseAlias;\n sessionToken.isAuthenticated = true;\n sessionToken.isJwt = true;\n }\n\n return sessionToken;\n } catch (error) {\n debug('acquireJwt failed: %s', error.message);\n throw error;\n }\n }\n\n async reacquireSecurityToken(sessionToken) {\n debug('reacquireSecurityToken called (isJwt: %s)', sessionToken.isJwt);\n\n try {\n if (sessionToken.isJwt) {\n const newToken = await this.__getJwt(\n sessionToken.accessToken,\n sessionToken.baseUrl,\n sessionToken.customerAlias,\n sessionToken.databaseAlias,\n sessionToken.authenticationUrl,\n true\n );\n\n debug('reacquireSecurityToken success (JWT)');\n return newToken;\n } else {\n const newToken = await this.__getToken(\n sessionToken.clientId,\n sessionToken.clientSecret,\n sessionToken.userId,\n sessionToken.password,\n sessionToken.audience,\n sessionToken.baseUrl,\n sessionToken.customerAlias,\n sessionToken.databaseAlias,\n sessionToken.authenticationUrl,\n true\n );\n\n debug('reacquireSecurityToken success (password grant)');\n return newToken;\n }\n } catch (error) {\n debug('reacquireSecurityToken failed: %s', error.message);\n throw error;\n }\n }\n\n async acquireRefreshToken(sessionToken) {\n if (sessionToken.isJwt) {\n return await this.reacquireSecurityToken(sessionToken);\n }\n\n const claim = {\n grant_type: 'refresh_token',\n refresh_token: sessionToken.refreshToken,\n client_id: sessionToken.clientId,\n client_secret: sessionToken.clientSecret\n };\n\n if (sessionToken['audience']) {\n claim['audience'] = sessionToken['audience'];\n }\n\n const urlSecurity = sessionToken.baseUrl + sessionToken.authenticationUrl;\n debug('acquireRefreshToken - URL: %s', urlSecurity);\n\n try {\n const response = await fetch(urlSecurity, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded'\n },\n body: new URLSearchParams(claim)\n });\n\n const body = await response.text();\n\n if (response.status === 200) {\n debug('acquireRefreshToken success');\n\n const responseObject = JSON.parse(body);\n sessionToken.accessToken = responseObject.access_token;\n sessionToken.expiresIn = responseObject.expires_in;\n sessionToken.refreshToken = responseObject.refresh_token;\n sessionToken.tokenType = responseObject.token_type;\n\n const expireDate = new Date();\n expireDate.setSeconds(expireDate.getSeconds() + sessionToken.expiresIn);\n\n sessionToken.expirationDate = expireDate;\n sessionToken.isAuthenticated = true;\n\n return sessionToken;\n } else if (response.status === 401 || response.status === 403 || response.status === 400) {\n sessionToken.isAuthenticated = false;\n throw new Error(`Authorization has been refused for current credentials (HTTP ${response.status}): ${body.substring(0, 200)}`);\n } else {\n sessionToken.isAuthenticated = false;\n throw new Error(`Unknown response for access token: HTTP ${response.status}`);\n }\n } catch (error) {\n sessionToken.isAuthenticated = false;\n debug('acquireRefreshToken error: %s', error.message);\n throw error;\n }\n }\n\n async __getToken(clientId, clientSecret, userId, password, audience, baseUrl, customerAlias, databaseAlias, authenticationUrl) {\n const sessionToken = new SessionToken();\n\n const claim = {\n grant_type: 'password',\n client_id: clientId,\n client_secret: clientSecret,\n username: userId,\n password: password,\n scope: 'vault'\n };\n\n const urlSecurity = baseUrl + authenticationUrl;\n debug('__getToken - URL: %s, user: %s, customer: %s/%s, audience: %s', urlSecurity, userId, customerAlias, databaseAlias, audience);\n\n try {\n const response = await fetch(urlSecurity, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded'\n },\n body: new URLSearchParams(claim)\n });\n\n const body = await response.text();\n\n if (response.status === 200) {\n const responseObject = JSON.parse(body);\n sessionToken.accessToken = responseObject.access_token;\n sessionToken.expiresIn = responseObject.expires_in;\n sessionToken.refreshToken = responseObject.refresh_token;\n sessionToken.tokenType = responseObject.token_type;\n\n const expireDate = new Date();\n expireDate.setSeconds(expireDate.getSeconds() + sessionToken.expiresIn);\n\n sessionToken.expirationDate = expireDate;\n sessionToken.isAuthenticated = true;\n\n debug('__getToken success');\n return sessionToken;\n } else if (response.status === 401 || response.status === 403 || response.status === 400) {\n sessionToken.isAuthenticated = false;\n throw new Error(`Authorization has been refused for current credentials (HTTP ${response.status}): ${body.substring(0, 200)}`);\n } else {\n sessionToken.isAuthenticated = false;\n throw new Error(`Unknown response for access token: HTTP ${response.status}`);\n }\n } catch (error) {\n sessionToken.isAuthenticated = false;\n debug('__getToken error: %s', error.message);\n throw error;\n }\n }\n\n async __getJwt(jwt, baseUrl, customerAlias, databaseAlias, authenticationUrl) {\n const sessionToken = new SessionToken();\n\n const headers = {\n Authorization: 'Bearer ' + jwt,\n };\n\n const urlSecurity = baseUrl + authenticationUrl;\n debug('__getJwt - URL: %s, customer: %s/%s', urlSecurity, customerAlias, databaseAlias);\n\n try {\n const response = await fetch(urlSecurity, {\n method: 'GET',\n headers\n });\n\n const body = await response.text();\n\n if (response.status === 200) {\n const responseObject = JSON.parse(body);\n\n sessionToken.accessToken = responseObject.data.token;\n sessionToken.expirationDate = new Date(responseObject.data.expires);\n sessionToken.isAuthenticated = true;\n sessionToken.isJwt = true;\n\n debug('__getJwt success');\n return sessionToken;\n } else if (response.status === 401 || response.status === 403 || response.status === 400) {\n sessionToken.isAuthenticated = false;\n throw new Error(`Authorization has been refused for current credentials (HTTP ${response.status}): ${body.substring(0, 200)}`);\n } else {\n sessionToken.isAuthenticated = false;\n throw new Error(`Unknown response for JWT: HTTP ${response.status}`);\n }\n } catch (error) {\n sessionToken.isAuthenticated = false;\n debug('__getJwt error: %s', error.message);\n throw error;\n }\n }\n\n endsWith(source, suffix) {\n return source.indexOf(suffix, source.length - suffix.length) !== -1;\n }\n}\n\nexport default Authorize;","import DocApi from './DocApi.js';\r\nimport FormsApi from './FormsApi.js';\r\nimport ObjectsApi from './ObjectsApi.js';\r\nimport StudioApi from './StudioApi.js';\r\nimport NotificationsApi from './NotificationsApi.js';\r\nimport common from './common.js';\r\nimport yaml from 'js-yaml';\r\nimport fs from 'fs';\r\nimport { fileURLToPath } from 'url';\r\nimport path from 'path';\r\nimport createDebug from 'debug';\r\n\r\nconst debug = createDebug('visualvault:api');\r\n\r\n// Import all managers from vvRestApi directory\r\nimport { Constants } from './vvRestApi/constants.js';\r\nimport { ConfigurationManager } from './vvRestApi/configurationManager.js';\r\nimport { EmailManager } from './vvRestApi/emailManager.js';\r\nimport { FormsManager, ReturnField, FormFieldCollection } from './vvRestApi/formsManager.js';\r\nimport { GroupsManager } from './vvRestApi/groupsManager.js';\r\nimport { LibraryManager } from './vvRestApi/libraryManager.js';\r\nimport { SitesManager } from './vvRestApi/sitesManager.js';\r\nimport { UsersManager } from './vvRestApi/usersManager.js';\r\nimport { CurrentUserManager } from './vvRestApi/currentUserManager.js';\r\nimport { ScheduledProcessManager } from './vvRestApi/scheduledProcessManager.js';\r\nimport { CustomQueryManager } from './vvRestApi/customQueryManager.js';\r\nimport { CustomerManager } from './vvRestApi/customerManager.js';\r\nimport { CustomerDatabaseManager } from './vvRestApi/customerDatabaseManager.js';\r\nimport { FilesManager } from './vvRestApi/filesManager.js';\r\nimport { ScriptsManager } from './vvRestApi/scriptsManager.js';\r\nimport { DocumentsManager } from './vvRestApi/documentsManager.js';\r\nimport { ProjectsManager } from './vvRestApi/projectsManager.js';\r\nimport { IndexFieldsManager } from './vvRestApi/indexFieldsManager.js';\r\nimport { OutsideProcessesManager } from './vvRestApi/outsideProcessesManager.js';\r\nimport { SecurityMembersManager } from './vvRestApi/securityMembersManager.js';\r\nimport { LayoutsManager } from './vvRestApi/layoutsManager.js';\r\nimport { ReportsManager } from './vvRestApi/reportsManager.js';\r\nimport { LanguageResourcesManager } from './vvRestApi/languageResourcesManager.js';\r\nimport { DropdownListsManager } from './vvRestApi/dropdownListsManager.js';\r\n\r\nconst __filename = fileURLToPath(import.meta.url);\r\nconst __dirname = path.dirname(__filename);\r\n\r\n/**\r\n * Main VisualVault API client providing access to all API managers.\r\n */\r\nexport class VVClient {\r\n /** @type {*} */ constants;\r\n /** @type {*} */ configuration;\r\n /** @type {*} */ customQuery;\r\n /** @type {*} */ documents;\r\n /** @type {*} */ email;\r\n /** @type {*} */ files;\r\n /** @type {*} */ forms;\r\n /** @type {*} */ groups;\r\n /** @type {*} */ library;\r\n /** @type {*} */ sites;\r\n /** @type {*} */ users;\r\n /** @type {*} */ scheduledProcess;\r\n /** @type {*} */ scripts;\r\n /** @type {*} */ projects;\r\n /** @type {*} */ customer;\r\n /** @type {*} */ customerDatabase;\r\n /** @type {*} */ indexFields;\r\n /** @type {*} */ outsideProcesses;\r\n /** @type {*} */ securityMembers;\r\n /** @type {*} */ layouts;\r\n /** @type {*} */ reports;\r\n /** @type {*} */ languageResources;\r\n /** @type {*} */ dropdownLists;\r\n\r\n /**\r\n * @param {*} sessionToken - Session token from authentication\r\n */\r\n constructor(sessionToken) {\r\n this.yamlConfig = yaml.load(fs.readFileSync(path.join(__dirname, 'config.yml'), 'utf8'));\r\n\r\n this._httpHelper = new common.httpHelper(sessionToken, this.yamlConfig);\r\n this.constants = new Constants();\r\n this.configuration = new ConfigurationManager(this._httpHelper);\r\n\r\n this.customQuery = new CustomQueryManager(this._httpHelper);\r\n this.documents = new DocumentsManager(this._httpHelper);\r\n this.email = new EmailManager(this._httpHelper);\r\n this.files = new FilesManager(this._httpHelper);\r\n this.forms = new FormsManager(this._httpHelper);\r\n this.groups = new GroupsManager(this._httpHelper);\r\n this.library = new LibraryManager(this._httpHelper);\r\n this.sites = new SitesManager(this._httpHelper);\r\n this.users = new UsersManager(this._httpHelper);\r\n this.currentUser = new CurrentUserManager(this._httpHelper);\r\n this.scheduledProcess = new ScheduledProcessManager(this._httpHelper);\r\n this.scripts = new ScriptsManager(this._httpHelper);\r\n this.projects = new ProjectsManager(this._httpHelper);\r\n this.customer = new CustomerManager(this._httpHelper);\r\n this.customerDatabase = new CustomerDatabaseManager(this._httpHelper);\r\n this.indexFields = new IndexFieldsManager(this._httpHelper);\r\n this.outsideProcesses = new OutsideProcessesManager(this._httpHelper);\r\n this.securityMembers = new SecurityMembersManager(this._httpHelper);\r\n this.layouts = new LayoutsManager(this._httpHelper);\r\n this.reports = new ReportsManager(this._httpHelper);\r\n this.languageResources = new LanguageResourcesManager(this._httpHelper, sessionToken.baseUrl);\r\n this.dropdownLists = new DropdownListsManager(this._httpHelper);\r\n\r\n // Extended API modules - null when not enabled/configured\r\n this.docApi = null;\r\n this.formsApi = null;\r\n this.objectsApi = null;\r\n this.studioApi = null;\r\n this.notificationsApi = null;\r\n }\r\n\r\n async createDocApi(sessionToken) {\r\n const docApiConfigResponse = JSON.parse(await this.configuration.getDocApiConfig());\r\n\r\n if (docApiConfigResponse && docApiConfigResponse['data']) {\r\n const docApiSession = sessionToken.createCopy();\r\n docApiSession.baseUrl = docApiConfigResponse.data['apiUrl'];\r\n docApiSession.apiUrl = this.yamlConfig.DocApiUri;\r\n if (docApiSession['tokenType'] == 'jwt') {\r\n this.docApi = new DocApi(docApiSession, docApiConfigResponse.data);\r\n } else if (this.users) {\r\n const jwtResponse = JSON.parse(await this.users.getUserJwt(docApiSession.audience));\r\n\r\n if (jwtResponse['data'] && jwtResponse['data']['token']) {\r\n docApiSession.convertToJwt(jwtResponse['data']);\r\n this.docApi = new DocApi(docApiSession, docApiConfigResponse.data);\r\n }\r\n }\r\n }\r\n }\r\n\r\n async createFormsApi(sessionToken) {\r\n const formsApiConfigResponse = JSON.parse(await this.configuration.getFormsApiConfig());\r\n\r\n if (formsApiConfigResponse && formsApiConfigResponse['data']) {\r\n const formsApiSession = sessionToken.createCopy();\r\n formsApiSession.baseUrl = formsApiConfigResponse.data['formsApiUrl'];\r\n formsApiSession.apiUrl = this.yamlConfig.FormsApiUri;\r\n if (formsApiSession['tokenType'] == 'jwt') {\r\n this.formsApi = new FormsApi(formsApiSession, formsApiConfigResponse.data);\r\n } else if (this.users) {\r\n const jwtResponse = JSON.parse(await this.users.getUserJwt(formsApiSession.audience));\r\n\r\n if (jwtResponse['data'] && jwtResponse['data']['token']) {\r\n formsApiSession.convertToJwt(jwtResponse['data']);\r\n this.formsApi = new FormsApi(formsApiSession, formsApiConfigResponse.data);\r\n }\r\n }\r\n }\r\n }\r\n\r\n async createObjectsApi(sessionToken) {\r\n const objectsApiConfigResponse = JSON.parse(await this.configuration.getObjectsApiConfig());\r\n\r\n if (objectsApiConfigResponse && objectsApiConfigResponse['data']) {\r\n const objectsApiSession = sessionToken.createCopy();\r\n objectsApiSession.baseUrl = objectsApiConfigResponse.data['apiUrl'];\r\n objectsApiSession.apiUrl = '';\r\n if (objectsApiSession['tokenType'] == 'jwt') {\r\n this.objectsApi = new ObjectsApi(objectsApiSession, objectsApiConfigResponse.data);\r\n } else if (this.users) {\r\n const jwtResponse = JSON.parse(await this.users.getUserJwt(objectsApiSession.audience));\r\n\r\n if (jwtResponse['data'] && jwtResponse['data']['token']) {\r\n objectsApiSession.convertToJwt(jwtResponse['data']);\r\n this.objectsApi = new ObjectsApi(objectsApiSession, objectsApiConfigResponse.data);\r\n }\r\n }\r\n }\r\n }\r\n\r\n async createStudioApi(sessionToken) {\r\n const studioApiConfigResponse = JSON.parse(await this.configuration.getStudioApiConfig());\r\n\r\n if (studioApiConfigResponse && studioApiConfigResponse['data']) {\r\n const studioApiSession = sessionToken.createCopy();\r\n studioApiSession.baseUrl = studioApiConfigResponse.data['studioApiUrl'];\r\n studioApiSession.apiUrl = '';\r\n if (studioApiSession['tokenType'] == 'jwt') {\r\n this.studioApi = new StudioApi(studioApiSession, studioApiConfigResponse.data);\r\n } else if (this.users) {\r\n const jwtResponse = JSON.parse(await this.users.getUserJwt(studioApiSession.audience));\r\n\r\n if (jwtResponse['data'] && jwtResponse['data']['token']) {\r\n studioApiSession.convertToJwt(jwtResponse['data']);\r\n this.studioApi = new StudioApi(studioApiSession, studioApiConfigResponse.data);\r\n }\r\n }\r\n }\r\n }\r\n\r\n async createNotificationsApi(sessionToken) {\r\n const notificationsApiConfigResponse = JSON.parse(await this.configuration.getNotificationsApiConfig());\r\n\r\n if (notificationsApiConfigResponse && notificationsApiConfigResponse['data']) {\r\n const notificationsApiSession = sessionToken.createCopy();\r\n notificationsApiSession.baseUrl = notificationsApiConfigResponse.data['apiUrl'];\r\n notificationsApiSession.apiUrl = this.yamlConfig.NotificationsApiUri;\r\n if (notificationsApiSession['tokenType'] == 'jwt') {\r\n this.notificationsApi = new NotificationsApi(notificationsApiSession, notificationsApiConfigResponse.data);\r\n } else if (this.users) {\r\n const jwtResponse = JSON.parse(await this.users.getUserJwt(notificationsApiSession.audience));\r\n\r\n if (jwtResponse['data'] && jwtResponse['data']['token']) {\r\n notificationsApiSession.convertToJwt(jwtResponse['data']);\r\n this.notificationsApi = new NotificationsApi(notificationsApiSession, notificationsApiConfigResponse.data);\r\n }\r\n }\r\n }\r\n }\r\n\r\n async _convertToJwt(sessionToken) {\r\n const jwtResponse = JSON.parse(await this.users.getUserJwt(sessionToken.audience));\r\n if (jwtResponse['data'] && jwtResponse['data']['token']) {\r\n sessionToken.convertToJwt(jwtResponse['data']);\r\n } else {\r\n throw new Error('Failed to get JWT: API response missing data.token property');\r\n }\r\n }\r\n\r\n endsWith(source, suffix) {\r\n return source.indexOf(suffix, source.length - suffix.length) !== -1;\r\n }\r\n\r\n /**\r\n * Get the current security token\r\n * @returns {string} The access token\r\n */\r\n getSecurityToken() {\r\n return this._httpHelper._sessionToken.accessToken;\r\n }\r\n\r\n /**\r\n * Check if the client is authenticated\r\n * @returns {boolean} True if authenticated\r\n */\r\n isAuthenticated() {\r\n return this._httpHelper._sessionToken.isAuthenticated;\r\n }\r\n\r\n /**\r\n * Get the base URL\r\n * @returns {string} The base URL\r\n */\r\n getBaseUrl() {\r\n return this._httpHelper._sessionToken.baseUrl;\r\n }\r\n}\r\n\r\n/**\r\n * Authentication class for obtaining VaultApi client instances.\r\n */\r\nexport class Authorize extends common.authorize {\r\n /**\r\n * Authenticate and get a VaultApi client instance\r\n * @param {string} clientId - OAuth client ID\r\n * @param {string} clientSecret - OAuth client secret\r\n * @param {string} userId - User username\r\n * @param {string} password - User password\r\n * @param {string} audience - OAuth audience\r\n * @param {string} baseVaultUrl - VisualVault base URL\r\n * @param {string} customerAlias - Customer alias\r\n * @param {string} databaseAlias - Database alias\r\n * @returns {Promise<VVClient>} Authenticated client instance\r\n */\r\n async getVaultApi(clientId, clientSecret, userId, password, audience, baseVaultUrl, customerAlias, databaseAlias) {\r\n debug('getVaultApi called for user: %s, customer: %s/%s', userId, customerAlias, databaseAlias);\r\n\r\n const config = this.jsyaml.load(this.fs.readFileSync(__dirname + '/config.yml', 'utf8'));\r\n\r\n if (this.endsWith(baseVaultUrl, '/')) {\r\n baseVaultUrl = baseVaultUrl.substring(0, baseVaultUrl.length - 1);\r\n }\r\n\r\n const apiUrl = config.ApiUri.replace('{custalias}', customerAlias).replace('{custdbalias}', databaseAlias);\r\n const authenticationUrl = config.AutheticateUri;\r\n\r\n const sessionToken = await this.acquireSecurityToken(clientId, clientSecret, userId, password, audience, baseVaultUrl, apiUrl, customerAlias, databaseAlias, authenticationUrl);\r\n const client = new VVClient(sessionToken);\r\n\r\n try {\r\n await client._convertToJwt(sessionToken);\r\n await Promise.all([\r\n client.createDocApi(sessionToken),\r\n client.createFormsApi(sessionToken),\r\n client.createObjectsApi(sessionToken),\r\n client.createStudioApi(sessionToken),\r\n client.createNotificationsApi(sessionToken),\r\n ]);\r\n return client;\r\n } catch (error) {\r\n debug('Failed to convert to JWT or create specialized APIs: %s', error.message);\r\n return client;\r\n }\r\n }\r\n\r\n /**\r\n * Get a VaultApi client from an existing JWT token\r\n * @param {string} jwt - JWT authentication token\r\n * @param {string} baseVaultUrl - VisualVault base URL\r\n * @param {string} customerAlias - Customer alias\r\n * @param {string} databaseAlias - Database alias\r\n * @param {Date} expirationDate - Token expiration date\r\n * @returns {Promise<VVClient>} Authenticated client instance\r\n */\r\n async getVaultApiFromJwt(jwt, baseVaultUrl, customerAlias, databaseAlias, expirationDate) {\r\n debug('getVaultApiFromJwt called for customer: %s/%s', customerAlias, databaseAlias);\r\n\r\n const config = this.jsyaml.load(this.fs.readFileSync(__dirname + '/config.yml', 'utf8'));\r\n\r\n if (this.endsWith(baseVaultUrl, '/')) {\r\n baseVaultUrl = baseVaultUrl.substring(0, baseVaultUrl.length - 1);\r\n }\r\n\r\n const apiUrl = config.ApiUri.replace('{custalias}', customerAlias).replace('{custdbalias}', databaseAlias);\r\n const authenticationUrl = apiUrl + config.ResourceUri.UsersGetJwt;\r\n\r\n if (expirationDate && expirationDate >= new Date(new Date().getTime() + 30 * 1000)) {\r\n const sessionToken = new common.sessionToken();\r\n\r\n sessionToken.accessToken = jwt;\r\n sessionToken.baseUrl = baseVaultUrl;\r\n sessionToken.apiUrl = apiUrl;\r\n sessionToken.authenticationUrl = authenticationUrl;\r\n sessionToken.customerAlias = customerAlias;\r\n sessionToken.databaseAlias = databaseAlias;\r\n sessionToken.expirationDate = expirationDate;\r\n sessionToken.isAuthenticated = true;\r\n sessionToken.isJwt = true;\r\n\r\n const client = new VVClient(sessionToken);\r\n\r\n return Promise.all([\r\n client.createDocApi(sessionToken),\r\n client.createFormsApi(sessionToken),\r\n client.createObjectsApi(sessionToken),\r\n client.createStudioApi(sessionToken),\r\n ])\r\n .then(() => client)\r\n .catch((error) => {\r\n debug('Failed to create specialized APIs: %s', error.message);\r\n return client;\r\n });\r\n } else {\r\n const token = await this.acquireJwt(jwt, baseVaultUrl, apiUrl, authenticationUrl, customerAlias, databaseAlias);\r\n const client = new VVClient(token);\r\n\r\n try {\r\n await Promise.all([\r\n client.createDocApi(token),\r\n client.createFormsApi(token),\r\n client.createObjectsApi(token),\r\n client.createStudioApi(token),\r\n ]);\r\n return client;\r\n } catch (error) {\r\n debug('Failed to create specialized APIs: %s', error.message);\r\n return client;\r\n }\r\n }\r\n }\r\n\r\n endsWith(source, suffix) {\r\n return source.indexOf(suffix, source.length - suffix.length) !== -1;\r\n }\r\n}\r\n\r\n// Export helper classes from formsManager for backward compatibility\r\nexport const forms = {\r\n returnField: ReturnField,\r\n formFieldCollection: FormFieldCollection\r\n};\r\n\r\nexport default {\r\n vvClient: VVClient,\r\n authorize: Authorize,\r\n forms\r\n};\r\n","// DocApi\r\nimport common from './common.js';\r\nimport { DocumentManager } from './docApi/documentManager.js';\r\nimport yaml from 'js-yaml';\r\nimport fs from 'fs';\r\nimport { fileURLToPath } from 'url';\r\nimport path from 'path';\r\n\r\nconst __filename = fileURLToPath(import.meta.url);\r\nconst __dirname = path.dirname(__filename);\r\n\r\nexport class DocApi {\r\n constructor(sessionToken, docApiConfig) {\r\n if (!sessionToken['tokenType'] && sessionToken['tokenType'] != 'jwt') {\r\n return;\r\n }\r\n\r\n const yamlConfig = yaml.load(fs.readFileSync(__dirname + '/config.yml', 'utf8'));\r\n this._httpHelper = new common.httpHelper(sessionToken, yamlConfig);\r\n\r\n this.isEnabled = docApiConfig['isEnabled'] || false;\r\n this.baseUrl = docApiConfig['apiUrl'] || null;\r\n this.roleSecurity = docApiConfig['roleSecurity'] || false;\r\n\r\n if (this.isEnabled) {\r\n this.documents = new DocumentManager(this._httpHelper);\r\n }\r\n }\r\n}\r\n\r\nexport default DocApi;\r\n","// Re-export the modernized HTTP modules\nexport { HttpHelper as httpHelper } from './http/httpHelper.js';\nexport { SessionToken as sessionToken } from './http/sessionToken.js';\nexport { Authorize as authorize } from './http/authorize.js';\n\n// Default export for backward compatibility\nimport { HttpHelper } from './http/httpHelper.js';\nimport { SessionToken } from './http/sessionToken.js';\nimport { Authorize } from './http/authorize.js';\n\nexport default {\n httpHelper: HttpHelper,\n sessionToken: SessionToken,\n authorize: Authorize\n};\n","import createDebug from 'debug';\n\nconst debug = createDebug('visualvault:http');\n\nexport class HttpHelper {\n constructor(sessionToken, yamlConfig) {\n this._sessionToken = sessionToken;\n this._config = yamlConfig;\n this._maxRetries = 3;\n }\n\n async doVvClientRequest(url, options, params, data, buffer) {\n // If the token is within 30 seconds of expiration, refresh it\n if (this._sessionToken.expirationDate < new Date(new Date().getTime() + 30 * 1000)) {\n debug('accessToken has expired, calling __acquireRefreshToken');\n\n try {\n await this.__acquireRefreshToken();\n debug('return success from __acquireRefreshToken');\n return await this.__doVvClientCallRequest(url, options, params, data, buffer);\n } catch (error) {\n debug('return fail from __acquireRefreshToken: %s', error.message);\n throw new Error('Unable to obtain Authorization, error: ' + error);\n }\n } else {\n return await this.__doVvClientCallRequest(url, options, params, data, buffer);\n }\n }\n\n async __doVvClientCallRequest(url, options, params, data, buffer, retries = 0) {\n try {\n let responseData;\n\n if (options.method === 'GET') {\n responseData = await this.httpGet(url, params);\n } else if (options.method === 'GETSTREAM') {\n responseData = await this.httpGetStream(url, params);\n } else if (options.method === 'POST') {\n responseData = await this.httpPost(url, params, data);\n } else if (options.method === 'POSTSTREAM') {\n responseData = await this.httpPostStream(url, params, data, buffer);\n } else if (options.method === 'PUT') {\n responseData = await this.httpPut(url, params, data);\n } else if (options.method === 'PUTSTREAM') {\n responseData = await this.httpPutStream(url, params, data, buffer);\n } else if (options.method === 'DELETE') {\n responseData = await this.httpDelete(url, params);\n } else {\n throw new Error('http request method name error');\n }\n\n return responseData;\n } catch (error) {\n // Handle retry logic for 429 status\n if (error.status === 429 && retries < this._maxRetries) {\n const timeout = this.__getRetryDelay(error.retryTime);\n debug('Timed Out: Retrying in %d ms. (%d retries left)', timeout, this._maxRetries - retries - 1);\n\n await new Promise(resolve => setTimeout(resolve, timeout));\n return await this.__doVvClientCallRequest(url, options, params, data, buffer, retries + 1);\n }\n\n throw error;\n }\n }\n\n async __makeRequest(url, options) {\n const headers = {\n 'Authorization': 'Bearer ' + this._sessionToken.accessToken,\n 'Content-Type': 'application/json'\n };\n\n debug('Performing request to url: %s', url);\n\n const fetchOptions = {\n method: options.method,\n headers: { ...headers, ...options.headers }\n };\n\n // Add query parameters to URL\n if (options.qs && Object.keys(options.qs).length > 0) {\n const queryString = new URLSearchParams(options.qs).toString();\n url = `${url}?${queryString}`;\n }\n\n // Add body for POST/PUT requests\n if (options.json && (options.method === 'POST' || options.method === 'PUT')) {\n fetchOptions.body = JSON.stringify(options.json);\n }\n\n const response = await fetch(url, fetchOptions);\n const responseText = await response.text();\n\n if (!response.ok) {\n let parsedData;\n try {\n parsedData = JSON.parse(responseText);\n } catch (e) {\n parsedData = { meta: responseText };\n }\n\n if (response.status === 401 || response.status === 403) {\n this._sessionToken.isAuthenticated = false;\n throw new Error(JSON.stringify(parsedData.meta));\n } else if (response.status === 429) {\n const error = new Error(JSON.stringify(parsedData.meta));\n error.status = 429;\n error.retryTime = parsedData.meta?.retryTime;\n throw error;\n } else {\n throw new Error(responseText);\n }\n }\n\n return responseText;\n }\n\n async __makePostStreamRequest(url, options, buffer) {\n debug('Performing stream request to url: %s', url);\n\n const formData = new FormData();\n\n // Add form fields\n if (options.json) {\n for (const key in options.json) {\n if (options.json.hasOwnProperty(key)) {\n formData.append(key, options.json[key]);\n }\n }\n }\n\n // Add file(s) to multipart data\n if (Buffer.isBuffer(buffer)) {\n // Single file\n const filename = options.json?.fileName || \"file\";\n const blob = new Blob([buffer]);\n formData.append('fileUpload', blob, filename);\n } else if (Array.isArray(buffer)) {\n // Multiple files\n for (let i = 0; i < buffer.length; i++) {\n const fileInfoObj = buffer[i];\n if (Buffer.isBuffer(fileInfoObj.buffer)) {\n const fileName = fileInfoObj.fileName || `file${i}`;\n const blob = new Blob([fileInfoObj.buffer]);\n formData.append('fileUpload', blob, fileName);\n } else {\n throw new Error(`Invalid 'buffer' property found on fileObj at index ${i}`);\n }\n }\n } else {\n throw new Error('Expecting Buffer');\n }\n\n const headers = {\n 'Authorization': 'Bearer ' + this._sessionToken.accessToken\n };\n\n const response = await fetch(url, {\n method: options.method,\n headers,\n body: formData\n });\n\n const responseText = await response.text();\n\n if (!response.ok) {\n throw new Error(responseText);\n }\n\n return responseText;\n }\n\n async httpGet(url, params) {\n const options = { method: 'GET', qs: params || {}, headers: {}, json: null };\n\n if (this._sessionToken.accessToken == null) {\n throw new Error('Access token is null');\n }\n\n return await this.__makeRequest(url, options);\n }\n\n async httpGetStream(url, params) {\n if (this._sessionToken.accessToken == null) {\n throw new Error('Access token is null');\n }\n\n const headers = {\n 'Authorization': 'Bearer ' + this._sessionToken.accessToken,\n 'Content-Type': 'application/json; charset=utf-8'\n };\n\n if (params && Object.keys(params).length > 0) {\n const queryString = new URLSearchParams(params).toString();\n url = `${url}?${queryString}`;\n }\n\n const response = await fetch(url, { method: 'GET', headers });\n\n if (!response.ok) {\n throw new Error(`HTTP error! status: ${response.status}`);\n }\n\n const buffer = await response.arrayBuffer();\n return Buffer.from(buffer);\n }\n\n async httpPost(url, params, data) {\n const options = { method: 'POST', qs: params || {}, json: data, headers: {} };\n\n if (this._sessionToken.accessToken == null) {\n throw new Error('Access token is null');\n }\n\n return await this.__makeRequest(url, options);\n }\n\n async httpPostStream(url, params, data, buffer) {\n const options = { method: 'POST', qs: params || {}, json: data, headers: {} };\n\n if (this._sessionToken.accessToken == null) {\n throw new Error('Access token is null');\n }\n\n return await this.__makePostStreamRequest(url, options, buffer);\n }\n\n async httpPut(url, params, data) {\n const options = { method: 'PUT', qs: params || {}, json: data, headers: {} };\n\n if (this._sessionToken.accessToken == null) {\n throw new Error('Access token is null');\n }\n\n return await this.__makeRequest(url, options);\n }\n\n async httpPutStream(url, params, data, buffer) {\n const options = { method: 'PUT', qs: params || {}, json: data, headers: {} };\n\n if (this._sessionToken.accessToken == null) {\n throw new Error('Access token is null');\n }\n\n return await this.__makePostStreamRequest(url, options, buffer);\n }\n\n async httpDelete(url, params) {\n const options = { method: 'DELETE', qs: params || {}, json: null, headers: {} };\n\n if (this._sessionToken.accessToken == null) {\n throw new Error('Access token is null');\n }\n\n return await this.__makeRequest(url, options);\n }\n\n async __acquireRefreshToken() {\n this._sessionToken.isAuthenticated = false;\n\n // Import authorize dynamically to avoid circular dependency\n const { Authorize } = await import('./authorize.js');\n const vvAuthorize = new Authorize();\n\n try {\n await vvAuthorize.acquireRefreshToken(this._sessionToken);\n } catch (error) {\n await vvAuthorize.reacquireSecurityToken(this._sessionToken);\n }\n }\n\n request(httpVerb, url, params, data) {\n const options = { method: httpVerb.toUpperCase() };\n debug('Performing %s request to url: %s', httpVerb.toUpperCase(), url);\n return this.doVvClientRequest(url, options, params, data);\n }\n\n getUrl(resourceUrl) {\n return this._sessionToken.baseUrl + this._sessionToken.apiUrl + resourceUrl;\n }\n\n __getRetryDelay(retryTime) {\n let delay = 10;\n if (retryTime && !isNaN(Date.parse(retryTime))) {\n const now = new Date();\n delay = Date.parse(retryTime) - now.getTime();\n if (delay < 0) {\n delay *= -1;\n }\n }\n return delay;\n }\n}\n\nexport default HttpHelper;\n","export class DocumentManager {\n constructor(httpHelper) {\n this._httpHelper = httpHelper;\n }\n\n async createDocument(data) {\n const resourceUri = this._httpHelper._config.ResourceUri.DocApi.CreateDocument;\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'POST' };\n\n return this._httpHelper.doVvClientRequest(url, opts, null, data);\n }\n\n async GetRevision(documentRevisionId) {\n let resourceUri = this._httpHelper._config.ResourceUri.DocApi.GetRevision;\n resourceUri = resourceUri.replace('{id}', documentRevisionId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n\n return this._httpHelper.doVvClientRequest(url, opts, null, null);\n }\n\n async getDocumentOcrStatus(documentRevisionId) {\n let resourceUri = this._httpHelper._config.ResourceUri.DocApi.OcrStatus;\n resourceUri = resourceUri.replace('{id}', documentRevisionId);\n const url = this._httpHelper.getUrl(resourceUri);\n\n const opts = { method: 'GET' };\n return this._httpHelper.doVvClientRequest(url, opts, null, null);\n }\n\n async updateDocumentOcrStatus(documentRevisionId, data) {\n let resourceUri = this._httpHelper._config.ResourceUri.DocApi.OcrStatus;\n resourceUri = resourceUri.replace('{id}', documentRevisionId);\n const url = this._httpHelper.getUrl(resourceUri);\n\n const opts = { method: 'PUT' };\n return this._httpHelper.doVvClientRequest(url, opts, null, data);\n }\n\n async updateDocument(documentId, data) {\n let resourceUri = this._httpHelper._config.ResourceUri.DocApi.UpdateDocument;\n resourceUri = resourceUri.replace('{id}', documentId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'PUT' };\n\n return this._httpHelper.doVvClientRequest(url, opts, null, data);\n }\n\n async search(criteriaList, searchFolders, excludeFolders, sortBy, sortDirection = 'desc', page = 0, take = 15, archiveType = 0, roleSecurity = false) {\n const url = this._httpHelper.getUrl(this._httpHelper._config.ResourceUri.DocApi.AdvancedSearch);\n\n const data = {\n criteriaList,\n searchFolders,\n excludeFolders,\n sortBy,\n sortDirection,\n page,\n take,\n archiveType,\n roleSecurity\n };\n\n const options = { method: 'POST'};\n return this._httpHelper.doVvClientRequest(url, options, null, data);\n }\n}\n\nexport default DocumentManager;\n","// FormsApi\r\nimport common from './common.js';\r\nimport FormInstanceManager from './formsApi/formInstanceManager.js';\r\nimport yaml from 'js-yaml';\r\nimport fs from 'fs';\r\nimport { fileURLToPath } from 'url';\r\nimport path from 'path';\r\n\r\nconst __filename = fileURLToPath(import.meta.url);\r\nconst __dirname = path.dirname(__filename);\r\n\r\nexport class FormsApi {\r\n constructor(sessionToken, formsApiConfig) {\r\n if (!sessionToken['tokenType'] && sessionToken['tokenType'] != 'jwt') {\r\n return;\r\n }\r\n\r\n const yamlConfig = yaml.load(fs.readFileSync(__dirname + '/config.yml', 'utf8'));\r\n this._httpHelper = new common.httpHelper(sessionToken, yamlConfig);\r\n\r\n this.isEnabled = formsApiConfig['isEnabled'] || false;\r\n this.baseUrl = formsApiConfig['formsApiUrl'] || null;\r\n\r\n if (this.isEnabled) {\r\n this.formInstances = new FormInstanceManager(this._httpHelper);\r\n }\r\n }\r\n}\r\n\r\nexport default FormsApi;\r\n","export class FormInstanceManager {\n constructor(httpHelper) {\n this._httpHelper = httpHelper;\n }\n\n async postForm(params, data, formTemplateRevisionId) {\n const resourceUri = this._httpHelper._config.ResourceUri.FormsApi.FormInstance;\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'POST' };\n\n data['formTemplateId'] = formTemplateRevisionId || data['formTemplateId'];\n\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n }\n\n async postFormRevision(params, data, formTemplateRevisionId, formId) {\n const resourceUri = this._httpHelper._config.ResourceUri.FormsApi.FormInstance;\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'PUT' };\n\n // only add these if provided. params could already have the value\n data['formTemplateId'] = formTemplateRevisionId || data['formTemplateId'];\n data['formId'] = formId || data['formId'];\n\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n }\n}\n\nexport default FormInstanceManager;","// Objects API\r\nimport common from './common.js';\r\nimport ModelManager from './objectsApi/modelManager.js';\r\nimport ObjectManager from './objectsApi/objectManager.js';\r\nimport yaml from 'js-yaml';\r\nimport fs from 'fs';\r\nimport { fileURLToPath } from 'url';\r\nimport path from 'path';\r\n\r\nconst __filename = fileURLToPath(import.meta.url);\r\nconst __dirname = path.dirname(__filename);\r\n\r\nexport class ObjectsApi {\r\n constructor(sessionToken, objectsApiConfig) {\r\n if(!sessionToken['tokenType'] && sessionToken['tokenType'] != 'jwt') {\r\n return;\r\n }\r\n\r\n const yamlConfig = yaml.load(fs.readFileSync(__dirname + '/config.yml', 'utf8'));\r\n this._httpHelper = new common.httpHelper(sessionToken, yamlConfig);\r\n\r\n this.isEnabled = objectsApiConfig['isEnabled'] || false;\r\n this.baseUrl = objectsApiConfig['apiUrl'] || null;\r\n\r\n if(this.isEnabled) {\r\n this.models = new ModelManager(this._httpHelper);\r\n this.objects = new ObjectManager(this._httpHelper);\r\n }\r\n }\r\n}\r\n\r\nexport default ObjectsApi;\r\n","export class ModelManager {\n constructor(httpHelper){\n this._httpHelper = httpHelper;\n }\n\n /**\n * Retrieves a list of available models\n * @param {object} params - Optional URL parameters to include in the request\n */\n async getModels(params) {\n const resourceUri = this._httpHelper._config.ResourceUri.ObjectsApi.Models;\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n\n params = params || {};\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n /**\n * Retrieves a specific model by its ID\n * @param {string} modelId - The ID (Guid) for the requested model\n * @param {object} params - Optional URL parameters to include in the request\n */\n async getModelById(modelId, params) {\n let resourceUri = this._httpHelper._config.ResourceUri.ObjectsApi.ModelById;\n resourceUri = resourceUri.replace('{id}', modelId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n\n params = params || {};\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n}\n\nexport default ModelManager;","export class ObjectManager {\n constructor(httpHelper){\n this._httpHelper = httpHelper;\n }\n\n /**\n * Retrieves a specific object by its ID\n * @param {string} objectId - The ID (Guid) for the requested object\n * @param {object} params - Optional URL parameters to include in the request\n */\n async getObject(objectId, params) {\n let resourceUri = this._httpHelper._config.ResourceUri.ObjectsApi.ObjectById;\n resourceUri = resourceUri.replace('{id}', objectId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n\n params = params || {};\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n /**\n * Retrieves a paged list of objects associated with a given model\n * @param {string} modelId - The ID (Guid) for the requested model to search\n * @param {object} data - Data to send in the request body\n * @param {object} params - Optional URL parameters to include in the request\n */\n async getObjectsByModelId(modelId, data, params) {\n let resourceUri = this._httpHelper._config.ResourceUri.ObjectsApi.ObjectSearchByModelId;\n resourceUri = resourceUri.replace('{modelId}', modelId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'POST' };\n\n data = data || {};\n params = params || {};\n\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n }\n\n /**\n * Creates a new object adhering to a given model\n * @param {string} modelId - The ID (Guid) used to create a new object for that model\n * @param {object} data - Data to send in the request body\n * @param {object} params - Optional URL parameters to include in the request\n */\n async createObject(modelId, data, params) {\n const resourceUri = this._httpHelper._config.ResourceUri.ObjectsApi.Object;\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'POST' };\n\n data = data || {};\n params = params || {};\n\n data['modelId'] = modelId || data['modelId'];\n\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n }\n\n /**\n * Updates an existing object by its ID (Guid) and revision ID (Guid)\n * @param {string} objectId - The ID (Guid) for the requested object to update\n * @param {string} objectRevisionId - The revision ID (Guid) for the requested object to update\n * @param {object} data - Data to send in the request body\n * @param {object} params - Optional URL parameters to include in the request\n */\n async updateObject(objectId, objectRevisionId, data, params) {\n let resourceUri = this._httpHelper._config.ResourceUri.ObjectsApi.ObjectById;\n resourceUri = resourceUri.replace('{id}', objectId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'PUT' };\n\n data = data || {};\n params = params || {};\n\n data['revisionId'] = objectRevisionId || data['revisionId'];\n\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n }\n\n /**\n * Deletes an existing object by its ID (Guid)\n * @param {string} objectId - The ID (Guid) for the requested object to delete\n * @param {object} params - Optional URL parameters to include in the request\n */\n async deleteObject(objectId, params) {\n let resourceUri = this._httpHelper._config.ResourceUri.ObjectsApi.ObjectById;\n resourceUri = resourceUri.replace('{id}', objectId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'DELETE' };\n\n params = params || {};\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n}\n\nexport default ObjectManager;","// Studio API\r\nimport common from './common.js';\r\nimport WorkflowManager from './studioApi/workflowManager.js';\r\nimport RolesAndPermissionsManager from './studioApi/rolesAndPermissionsManager.js';\r\nimport yaml from 'js-yaml';\r\nimport fs from 'fs';\r\nimport { fileURLToPath } from 'url';\r\nimport path from 'path';\r\n\r\nconst __filename = fileURLToPath(import.meta.url);\r\nconst __dirname = path.dirname(__filename);\r\n\r\nexport class StudioApi {\r\n constructor(sessionToken, studioApiConfig){\r\n if(!sessionToken['tokenType'] && sessionToken['tokenType'] != 'jwt'){\r\n return;\r\n }\r\n\r\n const yamlConfig = yaml.load(fs.readFileSync(__dirname + '/config.yml', 'utf8'));\r\n this._httpHelper = new common.httpHelper(sessionToken, yamlConfig);\r\n\r\n this.isEnabled = studioApiConfig['isEnabled'] || false;\r\n this.baseUrl = studioApiConfig['studioApiUrl'] || null;\r\n\r\n if(this.isEnabled){\r\n this.workflow = new WorkflowManager(this._httpHelper);\r\n this.permissions = new RolesAndPermissionsManager(this._httpHelper);\r\n }\r\n }\r\n}\r\n\r\nexport default StudioApi;\r\n","export class WorkflowManager {\n constructor(httpHelper){\n this._httpHelper = httpHelper;\n }\n\n async getWorkflow(workflowId){\n const resourceUri = this._httpHelper._config.ResourceUri.StudioApi.WorkflowLatestPublishedId.replace('{id}', workflowId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n const data = {};\n const params = {};\n\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n }\n\n async getWorkflowByName(workflowName){\n const resourceUri = this._httpHelper._config.ResourceUri.StudioApi.WorkflowLatestPublished;\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n const data = {};\n const params = { name: workflowName };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n }\n\n async getWorkflowVariables(params, workflowId){\n const resourceUri = this._httpHelper._config.ResourceUri.StudioApi.WorkflowVariables.replace('{id}', workflowId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n const data = {};\n params = params || {};\n\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n }\n\n /**\n * Triggers workflow\n * @param {string} workflowId\n * @param {number} workflowRevision\n * @param {string} objectId\n * @param {object[]} workflowVariables - workflow values to be submitted to the workflow\n * * @param {string} workflowVariables[].name = name of variable\n * * @param {*} workflowVariables[].value - value to be passed\n * * @param {number} workflowVariables[].dataType - Text: 1, Number: 2, Date: 3, Boolean: 4\n */\n async triggerWorkflow(workflowId, workflowRevision, objectId, workflowVariables){\n const resourceUri = this._httpHelper._config.ResourceUri.StudioApi.WorkflowRun.replace('{id}', workflowId).replace('{revision}', workflowRevision);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'POST' };\n const data = {\n objectId,\n reference: 'API',\n data: {\n workflowVariables,\n dataSetVariables: []\n }\n };\n const params = {};\n\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n }\n\n /**\n * Terminates the workflow instance\n * @param {string} workflowId\n * @param {string} instanceId\n * @returns\n */\n async terminateWorkflow(workflowId, instanceId){\n const resourceUri = this._httpHelper._config.ResourceUri.StudioApi.WorkflowTerminate.replace('{workflowId}', workflowId).replace('{instanceId}', instanceId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'POST' };\n const data = {};\n const params = {};\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n }\n\n /**\n * Returns workflow history for an object under the provided workflow\n * @param {string} workflowId\n * @param {string} objectId\n * @returns\n */\n async GetWorkflowHistoryForObject(objectId, workflowId){\n const resourceUri = this._httpHelper._config.ResourceUri.StudioApi.WorkflowHistoryObject.replace('{workflowId}', workflowId).replace('{objectId}', objectId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n const data = {};\n const params = {};\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n }\n\n /**\n * Returns the running workflow, if any, for an object under the provided workflow\n * @param {string} workflowId\n * @param {string} objectId\n * @returns\n */\n async GetRunningWorkflowForObject(objectId, workflowId){\n const resourceUri = this._httpHelper._config.ResourceUri.StudioApi.WorkflowHistoryRunningObject.replace('{workflowId}', workflowId).replace('{objectId}', objectId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n const data = {};\n const params = {};\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n }\n}\n\nexport default WorkflowManager;","export class RolesAndPermissionsManager {\r\n constructor(httpHelper) {\r\n this._httpHelper = httpHelper;\r\n }\r\n\r\n /**\r\n * Retrieves available features for the requesting user\r\n * @param {object} params - Optional URL parameters to include in the request\r\n */\r\n async getUserFeatures(params) {\r\n var resourceUri = this._httpHelper._config.ResourceUri.StudioApi.ResourceUserFeatures;\r\n var url = this._httpHelper.getUrl(resourceUri);\r\n var opts = { method: 'GET' };\r\n var data = {};\r\n params = params || {};\r\n\r\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\r\n }\r\n}\r\n\r\nexport default RolesAndPermissionsManager;","// Notifications API\r\nimport common from './common.js';\r\nimport UserNotificationsManager from './notificationsApi/userNotificationsManager.js';\r\nimport yaml from 'js-yaml';\r\nimport fs from 'fs';\r\nimport { fileURLToPath } from 'url';\r\nimport path from 'path';\r\n\r\nconst __filename = fileURLToPath(import.meta.url);\r\nconst __dirname = path.dirname(__filename);\r\n\r\nexport class NotificationsApi {\r\n constructor(sessionToken, notificationsApiConfig) {\r\n if(!sessionToken['tokenType'] && sessionToken['tokenType'] != 'jwt'){\r\n return;\r\n }\r\n\r\n const yamlConfig = yaml.load(fs.readFileSync(__dirname + '/config.yml', 'utf8'));\r\n this._httpHelper = new common.httpHelper(sessionToken, yamlConfig);\r\n\r\n this.isEnabled = notificationsApiConfig['isEnabled'] || false;\r\n this.baseUrl = notificationsApiConfig['apiUrl'] || null;\r\n\r\n if (this.isEnabled) {\r\n this.users = new UserNotificationsManager(this._httpHelper);\r\n }\r\n }\r\n}\r\n\r\nexport default NotificationsApi;\r\n","export class UserNotificationsManager {\n constructor (httpHelper) {\n this._httpHelper = httpHelper;\n }\n\n async forceUIRefresh(userGuid) {\n const resourceUri = this._httpHelper._config.ResourceUri.NotificationsApi.ForceUIRefresh.replace('{id}', userGuid);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'POST' };\n const params = {};\n const data = {};\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n }\n}\n\nexport default UserNotificationsManager;","export class Constants {\n constructor() {\n // Empty constructor - properties are defined as instance properties\n }\n\n alertEventIds = {\n // Folder Events\n folderSecurityModified: \"F06FD123-2C52-4F43-9122-34335A5BD8C6\", // \"CategorySecurity\"\n childFolderSecurityModified: \"30167D46-86CF-4E89-B1AE-FC00BB378F67\", // \"CategorySecurityCascade\"\n folderDocumentAdded: \"3702CFBF-555C-4032-BFB2-E25829788BAC\", // \"NewCategoryDoc\"\n childFolderDocumentAdded: \"28946E3C-AEAF-402B-BCE3-8DEAC3D19877\", // \"NewCategoryDocCascade\"\n\n // Document Events\n documentCheckedIn: \"D47804AB-AEE9-4002-BAB5-9F1AC0366076\", // \"CheckIn\"\n documentCheckedOut: \"4BBA55C1-7AF6-48FF-BFBE-EC7A58EB7F01\", // \"CheckOut\"\n documentDetailsModified: \"3B9D493F-2B45-4877-ABC1-5CA74F92723D\", // \"DocumentDetails\"\n documentSecurityModified: \"BAC187DC-78A8-4A8B-B50F-DB5D5AEE11B9\", // \"DocumentSecurity\"\n documentViewed: \"140B9E97-8D93-48D0-837B-AB4FD419B6D6\", // \"DocumentViewed\"\n\n // Project Events\n projectDocumentAddedOrRemoved: \"300DB724-5C51-4C38-B2E2-FFE19634A373\", // \"NewProjectDoc\"\n projectViewed: \"92F0C5F4-68DC-4309-9ABF-13B8E2198F79\" // \"ProjectView\"\n };\n\n securityRoles = {\n // RoleType\n Owner: \"Owner\",\n Editor: \"Editor\",\n Viewer: \"Viewer\"\n };\n\n securityMemberType = {\n // MemberType\n User: \"User\",\n Group: \"Group\"\n };\n\n relationType = {\n Parent: \"Parent\",\n Child: \"Child\",\n Peer: \"Peer\"\n };\n}\n\nexport default Constants;\n","export class ConfigurationManager {\n constructor(httpHelper) {\n this._httpHelper = httpHelper;\n }\n\n getDocApiConfig() {\n const url = this._httpHelper.getUrl(this._httpHelper._config.ResourceUri.ConfigurationDocApi);\n const opts = { method: 'GET' };\n const params = {};\n const data = {};\n\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n }\n\n getFormsApiConfig() {\n const url = this._httpHelper.getUrl(this._httpHelper._config.ResourceUri.ConfigurationFormsApi);\n const opts = { method: 'GET' };\n const params = {};\n const data = {};\n\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n }\n\n getObjectsApiConfig() {\n const url = this._httpHelper.getUrl(this._httpHelper._config.ResourceUri.ConfigurationObjectsApi);\n const opts = { method: 'GET' };\n const params = {};\n const data = {};\n\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n }\n\n getStudioApiConfig() {\n const url = this._httpHelper.getUrl(this._httpHelper._config.ResourceUri.ConfigurationStudioApi);\n const opts = { method: 'GET' };\n const params = {};\n const data = {};\n\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n }\n\n getNotificationsApiConfig() {\n const url = this._httpHelper.getUrl(this._httpHelper._config.ResourceUri.ConfigurationNotificationApi);\n const opts = { method: 'GET' };\n const params = {};\n const data = {};\n\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n }\n}\n\nexport default ConfigurationManager;\n","export class EmailManager {\n constructor(httpHelper) {\n this._httpHelper = httpHelper;\n }\n\n postEmails(params, data) {\n const url = this._httpHelper.getUrl(this._httpHelper._config.ResourceUri.Emails);\n const opts = { method: 'POST' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n }\n\n postEmailsWithAttachments(params, data, fileObjs) {\n const url = this._httpHelper.getUrl(this._httpHelper._config.ResourceUri.Emails);\n const opts = { method: 'POSTSTREAM' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, data, fileObjs);\n }\n}\n\nexport default EmailManager;\n","import createDebug from 'debug';\n\nconst debug = createDebug('visualvault:forms');\n\n/**\n * Helper class for form field return values\n */\nexport class ReturnField {\n /** @type {string} */ id;\n /** @type {string} */ name;\n /** @type {*} */ value;\n /** @type {boolean} */ isError;\n /** @type {string} */ errorMessage;\n\n /**\n * @param {string} id - Field ID\n * @param {string} name - Field name\n * @param {*} value - Field value\n * @param {boolean} isError - Whether field has an error\n * @param {string} errorMessage - Error message if any\n */\n constructor(id, name, value, isError, errorMessage) {\n this.id = id;\n this.name = name;\n this.value = value;\n this.isError = isError;\n this.errorMessage = errorMessage;\n }\n}\n\n/**\n * Helper class for managing form field collections\n */\nexport class FormFieldCollection {\n /**\n * @param {Array<*>} ffColl - Array of form fields\n */\n constructor(ffColl) {\n this._ffColl = ffColl;\n }\n\n /**\n * Get a form field by name\n * @param {string} name - Field name to search for\n * @returns {*} The field or null if not found\n */\n getFormFieldByName(name) {\n const fieldName = name.toLowerCase();\n return this._ffColl.find(field =>\n field.name.toLowerCase() === fieldName\n ) || null;\n }\n\n /**\n * Get a form field by ID\n * @param {string} id - Field ID to search for\n * @returns {*} The field or null if not found\n */\n getFormFieldById(id) {\n const fieldId = id.toLowerCase();\n return this._ffColl.find(field =>\n field.id.toLowerCase() === fieldId\n ) || null;\n }\n\n /**\n * Get the array of all form fields\n * @returns {Array<*>} Array of form fields\n */\n getFieldArray() {\n return this._ffColl;\n }\n}\n\n/**\n * Manager class for forms API operations\n */\nexport class FormsManager {\n /**\n * @param {*} httpHelper - HTTP helper instance\n */\n constructor(httpHelper) {\n this._httpHelper = httpHelper;\n }\n\n returnField(id, name, value, isError, errorMessage) {\n return new ReturnField(id, name, value, isError, errorMessage);\n }\n\n getFormTemplates(params) {\n const url = this._httpHelper.getUrl(this._httpHelper._config.ResourceUri.FormTemplates);\n const opts = { method: 'GET' };\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n /**\n * @param {string} templateName\n * @returns {Promise<{formsManager: FormsManager, templateIdGuid: string, templateRevisionIdGuid: string, error?: string}>}\n */\n async getFormTemplateIdByName(templateName) {\n const params = {\n fields: \"id, name, description, revision, revisionId\",\n q: `name eq '${templateName}'`\n };\n\n const url = this._httpHelper.getUrl(this._httpHelper._config.ResourceUri.FormTemplates);\n const opts = { method: 'GET' };\n\n try {\n const resp = await this._httpHelper.doVvClientRequest(url, opts, params, null);\n const templateResp = JSON.parse(resp);\n\n let templateId;\n let templateRevisionId;\n\n if (templateResp.data && templateResp.data.length > 0) {\n templateId = templateResp.data[0].id;\n templateRevisionId = templateResp.data[0].revisionId;\n }\n\n return {\n formsManager: this,\n templateIdGuid: templateId,\n templateRevisionIdGuid: templateRevisionId\n };\n } catch (error) {\n debug('Failed to get form template by name \"%s\": %s', templateName, error.message);\n\n return {\n formsManager: this,\n templateIdGuid: '',\n templateRevisionIdGuid: '',\n error: error.message\n };\n }\n }\n\n async getForms(params, formTemplateId) {\n // If formTemplateId is not a Guid assume it's a template name and fetch the Guid\n if (!this.isGuid(formTemplateId)) {\n const resp = await this.getFormTemplateIdByName(formTemplateId);\n const templateIdGuid = resp.templateIdGuid;\n const resourceUri = this._httpHelper._config.ResourceUri.Forms.replace('{id}', templateIdGuid);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n } else {\n const resourceUri = this._httpHelper._config.ResourceUri.Forms.replace('{id}', formTemplateId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n }\n\n setFieldImage(formId, fieldId, imageId) {\n const resourceUri = this._httpHelper._config.ResourceUri.FormInstanceImage.replace('{id}', formId);\n const url = this._httpHelper.getUrl(resourceUri);\n\n const data = { fieldId, imageId };\n const params = { fieldId, imageId };\n const opts = { method: 'PUT' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n }\n\n importFormTemplate(data, formTemplateId, buffer) {\n const resourceUri = this._httpHelper._config.ResourceUri.FormTemplatesImport.replace('{id}', formTemplateId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'PUTSTREAM' };\n\n return this._httpHelper.doVvClientRequest(url, opts, null, data, buffer);\n }\n\n async postForms(params, data, formTemplateId) {\n // If formTemplateId is not a Guid assume it's a template name and fetch the Guid\n if (!this.isGuid(formTemplateId)) {\n const resp = await this.getFormTemplateIdByName(formTemplateId);\n const templateIdGuid = resp.templateIdGuid;\n const resourceUri = this._httpHelper._config.ResourceUri.Forms.replace('{id}', templateIdGuid);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'POST' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n } else {\n const resourceUri = this._httpHelper._config.ResourceUri.Forms.replace('{id}', formTemplateId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'POST' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n }\n }\n\n async postFormRevision(params, data, formTemplateId, formId) {\n // If formTemplateId is not a Guid assume it's a template name and fetch the Guid\n if (!this.isGuid(formTemplateId)) {\n const resp = await this.getFormTemplateIdByName(formTemplateId);\n const templateIdGuid = resp.templateIdGuid;\n const resourceUri = this._httpHelper._config.ResourceUri.Forms.replace('{id}', templateIdGuid);\n const url = this._httpHelper.getUrl(resourceUri + '/' + formId);\n const opts = { method: 'POST' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n } else {\n const resourceUri = this._httpHelper._config.ResourceUri.Forms.replace('{id}', formTemplateId);\n const url = this._httpHelper.getUrl(resourceUri + '/' + formId);\n const opts = { method: 'POST' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n }\n }\n\n postFormRevisionByFormId(params, data, formId) {\n const url = this._httpHelper.getUrl(this._httpHelper._config.ResourceUri.FormsId).replace('{id}', formId);\n const opts = { method: 'POST' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n }\n\n updateFormInstanceOriginator(formInstanceId, newOriginatorUsID) {\n const resourceUri = this._httpHelper._config.ResourceUri.FormInstanceUpdateOriginator.replace('{id}', formInstanceId);\n const url = this._httpHelper.getUrl(resourceUri);\n\n const params = { userId: newOriginatorUsID };\n const data = null;\n const opts = { method: \"PUT\" };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n }\n\n relateForm(formId, relateToId) {\n const resourceUri = this._httpHelper._config.ResourceUri.FormInstance.replace('{id}', formId);\n const url = this._httpHelper.getUrl(resourceUri + '/relateForm');\n\n const params = { relateToId };\n const data = null;\n const opts = { method: 'PUT' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n }\n\n relateFormByDocId(formId, relateToDocId) {\n const resourceUri = this._httpHelper._config.ResourceUri.FormInstance.replace('{id}', formId);\n const url = this._httpHelper.getUrl(resourceUri + '/relateForm');\n\n const params = { relateToDocId };\n const data = null;\n const opts = { method: 'PUT' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n }\n\n relateDocument(formId, relateToId) {\n const resourceUri = this._httpHelper._config.ResourceUri.FormInstance.replace('{id}', formId);\n const url = this._httpHelper.getUrl(resourceUri + '/relateDocument');\n\n const params = { relateToId };\n const data = null;\n const opts = { method: 'PUT' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n }\n\n relateDocumentByDocId(formId, relateToDocId) {\n const resourceUri = this._httpHelper._config.ResourceUri.FormInstance.replace('{id}', formId);\n const url = this._httpHelper.getUrl(resourceUri + '/relateDocument');\n\n const params = { relateToDocId };\n const data = null;\n const opts = { method: 'PUT' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n }\n\n relateProject(formId, relateToId) {\n const resourceUri = this._httpHelper._config.ResourceUri.FormInstance.replace('{id}', formId);\n const url = this._httpHelper.getUrl(resourceUri + '/relateProject');\n\n const params = { relateToId };\n const data = null;\n const opts = { method: 'PUT' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n }\n\n relateProjectByName(formId, relateToProjectName) {\n const resourceUri = this._httpHelper._config.ResourceUri.FormInstance.replace('{id}', formId);\n const url = this._httpHelper.getUrl(resourceUri + '/relateProject');\n\n const params = { relateToProjectName };\n const data = null;\n const opts = { method: 'PUT' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n }\n\n unrelateForm(formId, relateToId) {\n const resourceUri = this._httpHelper._config.ResourceUri.FormInstance.replace('{id}', formId);\n const url = this._httpHelper.getUrl(resourceUri + '/unrelateForm');\n\n const params = { relateToId };\n const data = null;\n const opts = { method: 'PUT' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n }\n\n unrelateFormByDocId(formId, relateToDocId) {\n const resourceUri = this._httpHelper._config.ResourceUri.FormInstance.replace('{id}', formId);\n const url = this._httpHelper.getUrl(resourceUri + '/unrelateForm');\n\n const params = { relateToDocId };\n const data = null;\n const opts = { method: 'PUT' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n }\n\n unrelateDocument(formId, relateToId) {\n const resourceUri = this._httpHelper._config.ResourceUri.FormInstance.replace('{id}', formId);\n const url = this._httpHelper.getUrl(resourceUri + '/unrelateDocument');\n\n const params = { relateToId };\n const data = null;\n const opts = { method: 'PUT' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n }\n\n unrelateDocumentByDocId(formId, relateToDocId) {\n const resourceUri = this._httpHelper._config.ResourceUri.FormInstance.replace('{id}', formId);\n const url = this._httpHelper.getUrl(resourceUri + '/unrelateDocument');\n\n const params = { relateToDocId };\n const data = null;\n const opts = { method: 'PUT' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n }\n\n unrelateProject(formId, relateToId) {\n const resourceUri = this._httpHelper._config.ResourceUri.FormInstance.replace('{id}', formId);\n const url = this._httpHelper.getUrl(resourceUri + '/unrelateProject');\n\n const params = { relateToId };\n const data = null;\n const opts = { method: 'PUT' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n }\n\n unrelateProjectByName(formId, relateToProjectName) {\n const resourceUri = this._httpHelper._config.ResourceUri.FormInstance.replace('{id}', formId);\n const url = this._httpHelper.getUrl(resourceUri + '/unrelateProject');\n\n const params = { relateToProjectName };\n const data = null;\n const opts = { method: 'PUT' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n }\n\n getFormRelatedDocs(formId, params) {\n const resourceUri = this._httpHelper._config.ResourceUri.FormInstanceRelatedDocs.replace('{id}', formId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n\n if (params === undefined) {\n params = null;\n }\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n getFormRelatedForms(formId, params) {\n const resourceUri = this._httpHelper._config.ResourceUri.FormInstanceRelatedForms.replace('{id}', formId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n\n if (params === undefined) {\n params = null;\n }\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n isGuid(stringToTest) {\n let testString = stringToTest;\n if (testString[0] === \"{\") {\n testString = testString.substring(1, testString.length - 1);\n }\n const regexGuid = /^(\\{){0,1}[0-9a-fA-F]{8}\\-[0-9a-fA-F]{4}\\-[0-9a-fA-F]{4}\\-[0-9a-fA-F]{4}\\-[0-9a-fA-F]{12}(\\}){0,1}$/gi;\n return regexGuid.test(testString);\n }\n\n getFormInstanceById(templateId, instanceId) {\n const resourceUri = this._httpHelper._config.ResourceUri.FormId.replace('{id}', templateId).replace('{formId}', instanceId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n\n return this._httpHelper.doVvClientRequest(url, opts, null, null);\n }\n\n getFormInstancePDF(templateId, instanceId) {\n const resourceUri = this._httpHelper._config.ResourceUri.FormIdPdf.replace('{id}', templateId).replace('{formId}', instanceId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GETSTREAM' };\n\n return this._httpHelper.doVvClientRequest(url, opts, null, null);\n }\n\n getFormTemplateFields(templateId) {\n const resourceUri = this._httpHelper._config.ResourceUri.FormDesignerFormsTemplatesIdFields.replace('{id}', templateId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n\n return this._httpHelper.doVvClientRequest(url, opts, null, null);\n }\n\n deleteFormInstance(instanceId) {\n const resourceUri = this._httpHelper._config.ResourceUri.FormInstance.replace('{id}', instanceId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'DELETE' };\n\n return this._httpHelper.doVvClientRequest(url, opts, null, null);\n }\n\n releaseFormTemplate(formTemplateId) {\n const resourceUri = this._httpHelper._config.ResourceUri.FormTemplatesRelease.replace('{id}', formTemplateId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'PUT' };\n\n return this._httpHelper.doVvClientRequest(url, opts, null, null);\n }\n}\n\n// Default export for backward compatibility\nexport default FormsManager;\n","export class GroupsManager {\n constructor(httpHelper) {\n this._httpHelper = httpHelper;\n }\n\n getGroups(params) {\n const resourceUri = this._httpHelper._config.ResourceUri.GetGroups;\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n getGroupById(params, groupId) {\n const resourceUri = this._httpHelper._config.ResourceUri.GroupById.replace('{id}', groupId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n addGroup(params, formData) {\n const resourceUri = this._httpHelper._config.ResourceUri.AddGroup;\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'POST' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, formData);\n }\n\n updateGroup(params, groupId, formData) {\n const resourceUri = this._httpHelper._config.ResourceUri.UpdateGroup.replace('{id}', groupId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'PUT' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, formData);\n }\n\n deleteGroup(params, groupId) {\n const resourceUri = this._httpHelper._config.ResourceUri.DeleteGroup.replace('{id}', groupId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'DELETE' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n getGroupsUsers(params, groupId) {\n const resourceUri = this._httpHelper._config.ResourceUri.GroupsUsers.replace('{id}', groupId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n getGroupUser(params, groupId, userId) {\n const resourceUri = this._httpHelper._config.ResourceUri.GroupsAddUser.replace('{groupId}', groupId).replace('{userId}', userId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n addUserToGroup(params, groupId, userId) {\n const resourceUri = this._httpHelper._config.ResourceUri.GroupsAddUser.replace('{groupId}', groupId).replace('{userId}', userId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'PUT' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n removeUserFromGroup(params, groupId, userId) {\n const resourceUri = this._httpHelper._config.ResourceUri.GroupsAddUser.replace('{groupId}', groupId).replace('{userId}', userId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'DELETE' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n}\n\nexport default GroupsManager;\n","export class LibraryManager {\n constructor(httpHelper) {\n this._httpHelper = httpHelper;\n }\n\n getFolders(params) {\n const url = this._httpHelper.getUrl(this._httpHelper._config.ResourceUri.Folders);\n const opts = { method: 'GET' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n postFolderByPath(params, data, folderPath) {\n const url = this._httpHelper.getUrl(this._httpHelper._config.ResourceUri.Folders);\n\n data.folderpath = folderPath;\n const opts = { method: 'POST' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n }\n\n // Valid fields to be defined on the \"data\" parameter to be updated on the folder: name, description\n putFolder(params, data, folderId) {\n const url = this._httpHelper.getUrl(this._httpHelper._config.ResourceUri.FoldersId.replace('{id}', folderId));\n const opts = { method: 'PUT' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n }\n\n deleteFolder(folderId) {\n const url = this._httpHelper.getUrl(this._httpHelper._config.ResourceUri.FoldersId.replace('{id}', folderId));\n const opts = { method: 'DELETE' };\n\n return this._httpHelper.doVvClientRequest(url, opts, null, null);\n }\n\n copyFolder(params, data) {\n const url = this._httpHelper.getUrl(this._httpHelper._config.ResourceUri.FoldersCopy);\n const opts = { method: 'POST' };\n\n return this._httpHelper.doVvClientRequest(url, opts, null, data);\n }\n\n moveFolder(params, data) {\n const url = this._httpHelper.getUrl(this._httpHelper._config.ResourceUri.FoldersMove);\n const opts = { method: 'PUT' };\n\n return this._httpHelper.doVvClientRequest(url, opts, null, data);\n }\n\n getDocuments(params, folderId) {\n const resourceUri = this._httpHelper._config.ResourceUri.Documents.replace('{id}', folderId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n getFolderByPath(params, folderPath) {\n const resourceUri = this._httpHelper._config.ResourceUri.Folders + '?folderpath=' + encodeURIComponent(folderPath);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n updateFolderIndexFieldOverrideSettings(folderId, fieldId, queryId, displayField, valueField, dropDownListId, required, defaultValue) {\n const data = {\n queryId,\n queryValueField: valueField,\n queryDisplayField: displayField,\n dropDownListId,\n required,\n defaultValue\n };\n\n const resourceUri = this._httpHelper._config.ResourceUri.FoldersIdIndexFieldsId.replace('{id}', folderId).replace('{indexFieldId}', fieldId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'PUT' };\n return this._httpHelper.doVvClientRequest(url, opts, null, data);\n }\n\n getFolderIndexFields(params, folderId) {\n const resourceUri = this._httpHelper._config.ResourceUri.FolderIndexFields.replace('{id}', folderId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n postFolderAlertSubscription(folderId, eventId, userId) {\n const resourceUri = this._httpHelper._config.ResourceUri.FolderAlertsId.replace('{folderId}', folderId).replace('{eventId}', eventId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'POST' };\n\n const params = {\n usId: userId\n };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n deleteFolderAlertSubscription(folderId, eventId, userId) {\n const resourceUri = this._httpHelper._config.ResourceUri.FolderAlertsId.replace('{folderId}', folderId).replace('{eventId}', eventId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'DELETE' };\n\n const params = {\n usId: userId\n };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n getFolderSecurityMembers(params, folderId) {\n const resourceUri = this._httpHelper._config.ResourceUri.FolderSecurity.replace('{folderId}', folderId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n putFolderSecurityMember(folderId, memberId, memberType, securityRole, cascadeSecurityChanges) {\n const resourceUri = this._httpHelper._config.ResourceUri.FolderSecurityId.replace('{folderId}', folderId).replace('{memberId}', memberId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'PUT' };\n\n const data = {\n memberType,\n securityRole,\n cascadeSecurityChanges\n };\n\n return this._httpHelper.doVvClientRequest(url, opts, null, data);\n }\n\n deleteFolderSecurityMember(folderId, memberId, cascadeSecurityChanges) {\n const resourceUri = this._httpHelper._config.ResourceUri.FolderSecurityId.replace('{folderId}', folderId).replace('{memberId}', memberId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'DELETE' };\n\n const params = {\n cascadeSecurityChanges\n };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n}\n\nexport default LibraryManager;\n","export class SitesManager {\n constructor(httpHelper) {\n this._httpHelper = httpHelper;\n }\n\n getSites(params) {\n const url = this._httpHelper.getUrl(this._httpHelper._config.ResourceUri.Sites);\n const opts = { method: 'GET' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n postSites(params, data) {\n const resourceUri = this._httpHelper._config.ResourceUri.Sites;\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'POST' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n }\n\n putSites(params, data, siteId) {\n const resourceUri = this._httpHelper._config.ResourceUri.SiteById.replace('{id}', siteId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'PUT' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n }\n\n getGroups(params, siteId) {\n const resourceUri = this._httpHelper._config.ResourceUri.Groups.replace('{id}', siteId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n postGroups(params, data, siteId) {\n const resourceUri = this._httpHelper._config.ResourceUri.Groups.replace('{id}', siteId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'POST' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n }\n\n putGroups(params, data, siteId, grId) {\n const resourceUri = this._httpHelper._config.ResourceUri.SiteGroupById\n .replace('{siteId}', siteId)\n .replace('{groupId}', grId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'PUT' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n }\n\n changeUserSite(userId, newSiteId) {\n const resourceUri = this._httpHelper._config.ResourceUri.ChangeUserSite;\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'PUT' };\n\n const data = {\n UserId: userId,\n NewSiteId: newSiteId\n };\n\n return this._httpHelper.doVvClientRequest(url, opts, null, data);\n }\n\n getSiteById(params, siteId) {\n const resourceUri = this._httpHelper._config.ResourceUri.SiteById.replace('{id}', siteId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n deleteSite(params, siteId) {\n const resourceUri = this._httpHelper._config.ResourceUri.SiteById.replace('{id}', siteId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'DELETE' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n changeGroupSite(params, groupId, newSiteId) {\n const resourceUri = this._httpHelper._config.ResourceUri.ChangeGroupSite;\n const data = {\n groupId,\n newSiteId\n };\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'PUT' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n }\n}\n\nexport default SitesManager;\n","export class UsersManager {\n constructor(httpHelper) {\n this._httpHelper = httpHelper;\n }\n\n getUsers(params, siteId) {\n const resourceUri = this._httpHelper._config.ResourceUri.Users.replace('{id}', siteId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n postUsers(params, data, siteId) {\n const resourceUri = this._httpHelper._config.ResourceUri.Users.replace('{id}', siteId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'POST' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n }\n\n putUsers(params, data, siteId, usId) {\n const resourceUri = this._httpHelper._config.ResourceUri.Users.replace('{id}', siteId);\n const url = this._httpHelper.getUrl(resourceUri + '/' + usId);\n const opts = { method: 'PUT' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n }\n\n putUsersEndpoint(params, data, usId) {\n const url = this._httpHelper.getUrl(this._httpHelper._config.ResourceUri.User + '/' + usId);\n const opts = { method: 'PUT' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n }\n\n getUser(params) {\n const resourceUri = this._httpHelper._config.ResourceUri.User;\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n getUserById(params, usId) {\n const resourceUri = this._httpHelper._config.ResourceUri.UserById.replace('{id}', usId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n getUserGroups(params, usId) {\n const resourceUri = this._httpHelper._config.ResourceUri.UserGroups.replace('{id}', usId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n getUserSupervisors(params, usId) {\n const resourceUri = this._httpHelper._config.ResourceUri.UserSupervisors.replace('{id}', usId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n getUserSupervisees(params, usId) {\n const resourceUri = this._httpHelper._config.ResourceUri.UserSupervisees.replace('{id}', usId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n getUserLoginToken(usId) {\n const resourceUri = this._httpHelper._config.ResourceUri.UserWebToken.replace('{id}', usId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n const params = [];\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n getUserJwt(audience) {\n const resourceUri = this._httpHelper._config.ResourceUri.UsersGetJwt;\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n const params = {};\n if (audience) {\n params['audience'] = audience;\n }\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n getCurrentUser() {\n const resourceUri = this._httpHelper._config.ResourceUri.UsersMe;\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n const params = [];\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n resetPassword(usId, sendEmail = true) {\n const resourceUri = this._httpHelper._config.ResourceUri.UsersPassword.replace('{id}', usId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'PUT' };\n const params = [];\n\n const data = {\n resetPassword: true,\n sendEmail\n };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n }\n\n updateUserId(usId, newUserId) {\n const resourceUri = this._httpHelper._config.ResourceUri.UsersIdUserId.replace('{id}', usId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'PUT' };\n const params = [];\n\n const data = {\n userId: newUserId\n };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n }\n}\n\nexport default UsersManager;\n","export class CurrentUserManager {\n constructor(httpHelper) {\n this._httpHelper = httpHelper;\n }\n\n /**\n * Gets the currently authenticated user's information.\n * @param {Object} [params] - Optional query parameters.\n * @returns {Promise<string>} A promise that resolves with the current user's information as a JSON string.\n */\n async getCurrentUser(params) {\n var resourceUri = this._httpHelper._config.ResourceUri.UsersMe;\n var url = this._httpHelper.getUrl(resourceUri);\n var opts = { method: 'GET' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n}\n\nexport default CurrentUserManager;\n","export class ScheduledProcessManager {\n constructor(httpHelper) {\n this._httpHelper = httpHelper;\n }\n\n postCompletion(id, action, result, message) {\n const url = this._httpHelper.getUrl(this._httpHelper._config.ResourceUri.ScheduledProcess) + '/' + id;\n const opts = { method: 'POST' };\n\n const params = {\n action\n };\n\n if (result !== null && (typeof result === 'boolean' || result.length > 0)) {\n params.result = result.toString();\n }\n\n if (message && message.length > 0) {\n params.message = message;\n }\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n runAllScheduledProcesses() {\n const url = this._httpHelper.getUrl(this._httpHelper._config.ResourceUri.ScheduledProcess) + '/Run';\n const opts = { method: 'PUT' };\n\n return this._httpHelper.doVvClientRequest(url, opts, null, null);\n }\n}\n\nexport default ScheduledProcessManager;\n","export class CustomQueryManager {\n constructor(httpHelper) {\n this._httpHelper = httpHelper;\n }\n\n getCustomQueryResultsByName(queryName, params) {\n const url = this._httpHelper.getUrl(this._httpHelper._config.ResourceUri.CustomQuery);\n const opts = { method: 'GET' };\n\n if (!params) {\n params = {};\n }\n params.queryName = queryName;\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n getCustomQueryResultsById(id, params) {\n const url = this._httpHelper.getUrl(this._httpHelper._config.ResourceUri.CustomQuery + '/' + id);\n const opts = { method: 'GET' };\n\n if (!params) {\n params = {};\n }\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n}\n\nexport default CustomQueryManager;\n","export class CustomerManager {\n constructor(httpHelper) {\n this._httpHelper = httpHelper;\n }\n\n createCustomerInvite(data) {\n const baseUrl = this._httpHelper._sessionToken.baseUrl;\n let url = baseUrl + \"/api/v1/\" + this._httpHelper._config.ResourceUri.CustomerInvite;\n\n url = url.replace(/\\/api\\/\\//g, '/api/');\n url = url.replace(/\\/v1\\/\\//g, '/v1/');\n\n const opts = { method: 'POST' };\n\n return this._httpHelper.doVvClientRequest(url, opts, '', data);\n }\n\n assignUser(customerId, data) {\n const baseUrl = this._httpHelper._sessionToken.baseUrl;\n const url = baseUrl + \"/api/v1/\" + this._httpHelper._config.ResourceUri.CustomerAssignUser.replace('{customerId}', customerId);\n const opts = { method: 'PUT' };\n\n return this._httpHelper.doVvClientRequest(url, opts, '', data);\n }\n}\n\nexport default CustomerManager;\n","import createDebug from 'debug';\n\nconst debug = createDebug('visualvault:customer-db');\n\nexport class CustomerDatabaseManager {\n constructor(httpHelper) {\n this._httpHelper = httpHelper;\n }\n\n assignUser(customerId, data) {\n const baseUrl = this._httpHelper._sessionToken.baseUrl;\n const url = baseUrl + \"/api/v1/\" + this._httpHelper._config.ResourceUri.CustomerDatabaseAssignUser.replace('{databaseId}', customerId);\n const opts = { method: 'PUT' };\n\n return this._httpHelper.doVvClientRequest(url, opts, '', data);\n }\n\n removeUser(authenticationUserId, databaseId) {\n const baseUrl = this._httpHelper._sessionToken.baseUrl;\n let url = baseUrl + \"/api/v1\" + this._httpHelper._config.ResourceUri.UserDelete.replace('{databaseId}', databaseId);\n url = url.replace(\"{authenticationUserId}\", authenticationUserId);\n debug('Removing user %s from database %s: %s', authenticationUserId, databaseId, url);\n const opts = { method: 'DELETE' };\n const params = [];\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n}\n\nexport default CustomerDatabaseManager;\n","export class FilesManager {\n constructor(httpHelper) {\n this._httpHelper = httpHelper;\n }\n\n getFileBytesQuery(query) {\n const resourceUri = this._httpHelper._config.ResourceUri.FilesQuery + query;\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GETSTREAM' };\n return this._httpHelper.doVvClientRequest(url, opts, null, null);\n }\n\n getFileBytesId(id) {\n const resourceUri = this._httpHelper._config.ResourceUri.FilesId.replace('{id}', id);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GETSTREAM' };\n return this._httpHelper.doVvClientRequest(url, opts, null, null);\n }\n\n postFile(data, buffer) {\n const resourceUri = this._httpHelper._config.ResourceUri.Files;\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'POSTSTREAM' };\n\n return this._httpHelper.doVvClientRequest(url, opts, null, data, buffer);\n }\n}\n\nexport default FilesManager;\n","export class ScriptsManager {\n constructor(httpHelper) {\n this._httpHelper = httpHelper;\n }\n\n runWebService(serviceName, serviceData, usId) {\n let resourceUri = this._httpHelper._config.ResourceUri.Scripts + '?name=' + serviceName;\n if (typeof usId !== 'undefined' && usId !== null) {\n resourceUri += `&usId=${usId}`;\n }\n\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'POST' };\n return this._httpHelper.doVvClientRequest(url, opts, null, serviceData);\n }\n\n completeWorkflowWebService(executionId, workflowVariables) {\n const resourceUri = this._httpHelper._config.ResourceUri.ScriptsCompleteWf;\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'POST' };\n\n const postData = {\n executionId,\n workflowVariables\n };\n\n return this._httpHelper.doVvClientRequest(url, opts, null, postData);\n }\n}\n\nexport default ScriptsManager;\n","export class DocumentsManager {\n constructor(httpHelper) {\n this._httpHelper = httpHelper;\n }\n\n postDoc(data) {\n const resourceUri = this._httpHelper._config.ResourceUri.DocumentsPost;\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'POST' };\n return this._httpHelper.doVvClientRequest(url, opts, null, data);\n }\n\n postDocWithFile(data, fileData) {\n const resourceUri = this._httpHelper._config.ResourceUri.DocumentsPost;\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'POSTSTREAM' };\n return this._httpHelper.doVvClientRequest(url, opts, null, data, fileData);\n }\n\n copyDocument(params, data, documentId) {\n const resourceUri = this._httpHelper._config.ResourceUri.DocumentsIdCopy.replace('{id}', documentId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'POST' };\n\n return this._httpHelper.doVvClientRequest(url, opts, null, data);\n }\n\n moveDocument(params, data, documentId) {\n const resourceUri = this._httpHelper._config.ResourceUri.DocumentsIdMove.replace('{id}', documentId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'PUT' };\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n }\n\n deleteDocument(params, revisionId) {\n const resourceUri = this._httpHelper._config.ResourceUri.DocumentsId.replace('{id}', revisionId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'DELETE' };\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n getDocumentRevision(params, revisionId) {\n const resourceUri = this._httpHelper._config.ResourceUri.DocumentsId.replace('{id}', revisionId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n getDocuments(params) {\n const resourceUri = this._httpHelper._config.ResourceUri.DocumentsPost;\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n putDocumentIndexFields(data, documentId) {\n const resourceUri = this._httpHelper._config.ResourceUri.DocumentIndexFields.replace('{id}', documentId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'PUT' };\n return this._httpHelper.doVvClientRequest(url, opts, null, data);\n }\n\n postDocumentAlertSubscription(documentId, eventId, userId) {\n const resourceUri = this._httpHelper._config.ResourceUri.DocumentAlertsId.replace('{documentId}', documentId).replace('{eventId}', eventId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'POST' };\n\n const params = {\n usId: userId\n };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n deleteDocumentAlertSubscription(documentId, eventId, userId) {\n const resourceUri = this._httpHelper._config.ResourceUri.DocumentAlertsId.replace('{documentId}', documentId).replace('{eventId}', eventId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'DELETE' };\n\n const params = {\n usId: userId\n };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n getDocumentRevisionOcrProperties(params, revisionId) {\n const resourceUri = this._httpHelper._config.ResourceUri.DocumentsIdOcr.replace('{id}', revisionId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n relateDocuments(revisionId, relateToRevisionId, relateType) {\n const resourceUri = this._httpHelper._config.ResourceUri.DocumentsIdRelateDocument.replace('{id}', revisionId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'PUT' };\n\n const data = {\n relateToId: relateToRevisionId,\n relateType\n };\n\n return this._httpHelper.doVvClientRequest(url, opts, null, data);\n }\n\n updateDocumentExpiration(documentId, expirationDate) {\n const resourceUri = this._httpHelper._config.ResourceUri.DocumentsIdExpiration.replace('{id}', documentId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'PUT' };\n\n const data = {\n expirationDate\n };\n\n return this._httpHelper.doVvClientRequest(url, opts, null, data);\n }\n\n getDocumentWebDavUrl(documentId) {\n const resourceUri = this._httpHelper._config.ResourceUri.DocumentsWebDavUrl.replace('{id}', documentId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n\n return this._httpHelper.doVvClientRequest(url, opts, null, null);\n }\n\n getDocumentWopiUrl(documentId) {\n const resourceUri = this._httpHelper._config.ResourceUri.DocumentsWopiUrl.replace('{id}', documentId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n\n return this._httpHelper.doVvClientRequest(url, opts, null, null);\n }\n\n createDocumentZipFile(params, documentIds) {\n const resourceUri = this._httpHelper._config.ResourceUri.CreateDocumentZipFile;\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'POST' };\n const data = { documentDhIds: documentIds };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n }\n\n getDocumentZipFileStatus(params, downloadKey) {\n const resourceUri = this._httpHelper._config.ResourceUri.GetDocumentZipFileStatus + `?downloadKey=${encodeURIComponent(downloadKey)}`;\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n getDocumentIndexFields(params, documentId) {\n const resourceUri = this._httpHelper._config.ResourceUri.DocumentIndexFields.replace('{id}', documentId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n getDocumentTypes(params) {\n const resourceUri = this._httpHelper._config.ResourceUri.DocumentTypes;\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n createDocumentType(params, name) {\n const resourceUri = this._httpHelper._config.ResourceUri.DocumentTypes;\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'POST' };\n const data = { documentTypeName: name };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n }\n\n getSavedSearches(params) {\n const resourceUri = this._httpHelper._config.ResourceUri.SavedSearches;\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n getDocumentFields(params) {\n const resourceUri = this._httpHelper._config.ResourceUri.DocumentFields;\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n getSavedSearchIndexFields(params, savedSearchId) {\n const resourceUri = this._httpHelper._config.ResourceUri.SavedSearchIndexFields;\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n const mergedParams = { ...params, savedSearchId };\n\n return this._httpHelper.doVvClientRequest(url, opts, mergedParams, null);\n }\n\n getLastDocuments(params) {\n const resourceUri = this._httpHelper._config.ResourceUri.LastDocuments;\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n getFrequentDocuments(params) {\n const resourceUri = this._httpHelper._config.ResourceUri.FrequentDocuments;\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n getSavedSearchDocuments(params, savedSearchId) {\n const resourceUri = this._httpHelper._config.ResourceUri.SavedSearchDocuments.replace('{savedSearchId}', savedSearchId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n getDocumentDefaultLink(params, documentId) {\n const resourceUri = this._httpHelper._config.ResourceUri.DocumentDefaultAction.replace('{documentId}', documentId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n}\n\nexport default DocumentsManager;\n","export class ProjectsManager {\n constructor(httpHelper) {\n this._httpHelper = httpHelper;\n }\n\n postProjectAlertSubscription(projectId, eventId, userId) {\n const resourceUri = this._httpHelper._config.ResourceUri.ProjectAlertsId.replace('{projectId}', projectId).replace('{eventId}', eventId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'POST' };\n\n const params = {\n usId: userId\n };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n deleteProjectAlertSubscription(projectId, eventId, userId) {\n const resourceUri = this._httpHelper._config.ResourceUri.ProjectAlertsId.replace('{projectId}', projectId).replace('{eventId}', eventId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'DELETE' };\n\n const params = {\n usId: userId\n };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n}\n\nexport default ProjectsManager;\n","export class IndexFieldsManager {\n constructor(httpHelper) {\n this._httpHelper = httpHelper;\n }\n\n getIndexFields(params) {\n const resourceUri = this._httpHelper._config.ResourceUri.IndexFields;\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n getIndexField(params, id) {\n const resourceUri = this._httpHelper._config.ResourceUri.IndexFields + '/' + id;\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n /**\n * Payload for creating/updating index fields.\n * @typedef {Object} IndexFieldData\n * @property {string} fieldType\n * @property {string} label\n * @property {string} [description]\n * @property {boolean} [required]\n * @property {?string} [connectionId]\n * @property {?string} [queryId]\n * @property {?string} [queryDisplayField]\n * @property {?string} [queryValueField]\n * @property {?string} [dropDownListId]\n * @property {?string} [defaultValue]\n */\n\n /**\n * Create an index field\n * @param {Object} params - Query parameters\n * @param {IndexFieldData} data - Request body\n * @returns {Promise<string>}\n */\n createIndexField(params, data) {\n const resourceUri = this._httpHelper._config.ResourceUri.IndexFields;\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'POST' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n }\n\n /**\n * Update an index field\n * @param {Object} params - Query parameters\n * @param {string} id - Index field id\n * @param {IndexFieldData} data - Request body\n * @returns {Promise<string>}\n */\n updateIndexField(params, id, data) {\n const resourceUri = this._httpHelper._config.ResourceUri.IndexFields + '/' + id;\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'PUT' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n }\n\n deleteIndexField(params, id) {\n const resourceUri = this._httpHelper._config.ResourceUri.IndexFields + '/' + id;\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'DELETE' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n moveIndexFieldAfter(params, sourceFieldId, destinationFieldId) {\n const resourceUri = this._httpHelper._config.ResourceUri.IndexFields + '/MoveIndexFieldAfter';\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'POST' };\n const data = { sourceFieldId, destinationFieldId };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n }\n\n addIndexFieldToFolder(indexFieldId, folderId) {\n const resourceUri = this._httpHelper._config.ResourceUri.IndexFieldsFolder\n .replace('{id}', indexFieldId)\n .replace('{folderId}', folderId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'PUT' };\n\n return this._httpHelper.doVvClientRequest(url, opts, null, null);\n }\n}\n\nexport default IndexFieldsManager;\n","export class OutsideProcessesManager {\n constructor(httpHelper) {\n this._httpHelper = httpHelper;\n }\n\n getOutsideProcesses(params) {\n const resourceUri = this._httpHelper._config.ResourceUri.OutsideProcesses;\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n}\n\nexport default OutsideProcessesManager;\n","export class SecurityMembersManager {\n constructor(httpHelper) {\n this._httpHelper = httpHelper;\n }\n\n addSecurityMember(parentId, memberId, roleType, isGroup) {\n const resourceUri = this._httpHelper._config.ResourceUri.SecurityMembers;\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'POST' };\n\n const postData = {\n parentId,\n memberId,\n role: roleType,\n isGroup\n };\n\n return this._httpHelper.doVvClientRequest(url, opts, null, postData);\n }\n\n getSecurityMembersForParentId(parentId) {\n const resourceUri = this._httpHelper._config.ResourceUri.SecurityMembers;\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n\n const params = {\n parentId\n };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n removeSecurityMember(parentId, memberId) {\n const resourceUri = this._httpHelper._config.ResourceUri.SecurityMembers;\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'DELETE' };\n\n const params = {\n parentId,\n memberId\n };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n updateSecurityMember(parentId, memberId, roleType) {\n const resourceUri = this._httpHelper._config.ResourceUri.SecurityMembers;\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'PUT' };\n\n const postData = {\n parentId,\n memberId,\n role: roleType\n };\n\n return this._httpHelper.doVvClientRequest(url, opts, null, postData);\n }\n}\n\nexport default SecurityMembersManager;\n","export class LayoutsManager {\n constructor(httpHelper) {\n this._httpHelper = httpHelper;\n }\n\n getLayout() {\n const resourceUri = this._httpHelper._config.ResourceUri.Layout;\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n\n return this._httpHelper.doVvClientRequest(url, opts, {}, null);\n }\n}\n\nexport default LayoutsManager;\n","export class ReportsManager {\n constructor(httpHelper) {\n this._httpHelper = httpHelper;\n }\n\n getReports(params) {\n const resourceUri = this._httpHelper._config.ResourceUri.Reports;\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n getReportPDF(reportId, params) {\n const resourceUri = this._httpHelper._config.ResourceUri.ReportServerPDF.replace('{id}', reportId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GETSTREAM' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n}\n\nexport default ReportsManager;\n","export class LanguageResourcesManager {\n constructor(httpHelper, baseUrl) {\n this._httpHelper = httpHelper;\n this._baseUrl = baseUrl;\n this._apiUrl = httpHelper._config.BaseApiUri\n }\n\n getLanguageAreas(params) {\n const resourceUri = this._httpHelper._config.ResourceUri.LanguageAreas;\n const url = this._baseUrl + this._apiUrl + resourceUri;\n const opts = { method: 'GET' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n getLanguages(params) {\n const resourceUri = this._httpHelper._config.ResourceUri.Languages;\n const url = this._baseUrl + this._apiUrl + resourceUri;\n const opts = { method: 'GET' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n exportLanguages(params) {\n const resourceUri = this._httpHelper._config.ResourceUri.ExportLanguages;\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GETSTREAM' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n importLanguages(params, fileData, fileName) {\n const resourceUri = this._httpHelper._config.ResourceUri.ImportLanguages;\n const url = this._httpHelper.getUrl(resourceUri) + `?area=${params.area}&lang=${params.lang}`;\n const opts = { method: 'POSTSTREAM' };\n const data = { fileName };\n\n return this._httpHelper.doVvClientRequest(url, opts, null, data, fileData);\n }\n}\n\nexport default LanguageResourcesManager;\n","export class DropdownListsManager {\n constructor(httpHelper) {\n this._httpHelper = httpHelper;\n }\n\n getDropDownLists(params) {\n const resourceUri = this._httpHelper._config.ResourceUri.DropDownLists;\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n getDropDownListById(params, listId) {\n const resourceUri = this._httpHelper._config.ResourceUri.DropDownListsId.replace('{id}', listId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n getDropDownListItemsById(params, listId) {\n const resourceUri = this._httpHelper._config.ResourceUri.DropDownListsIdItems.replace('{id}', listId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n addDropDownList(params, ddName, ddDescription, ddItems) {\n const resourceUri = this._httpHelper._config.ResourceUri.DropDownLists;\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'POST' };\n const data = {\n Name: ddName,\n Description: ddDescription,\n Items: ddItems\n };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n }\n\n deleteDropDownList(params, listId) {\n const resourceUri = this._httpHelper._config.ResourceUri.DropDownListsId.replace('{id}', listId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'DELETE' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n updateDropDownList(params, listId, ddName, ddDescription, items) {\n const resourceUri = this._httpHelper._config.ResourceUri.DropDownListsId.replace('{id}', listId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'PUT' };\n const data = {\n Name: ddName,\n Description: ddDescription,\n Items: items\n };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n }\n\n deleteDropDownListItem(params, listId, itemIds) {\n const resourceUri = this._httpHelper._config.ResourceUri.DropDownListsIdItems.replace('{id}', listId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'DELETE' };\n const mergedParams = { ...params, itemIds };\n\n return this._httpHelper.doVvClientRequest(url, opts, mergedParams, null);\n }\n}\n\nexport default DropdownListsManager;\n"],"mappings":"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","names":["createDebug","yaml","fs","Authorize","import_debug","debug","createDebug","Authorize","import_js_yaml","import_fs","__filename","path","yaml","fs","import_js_yaml","import_fs","import_url","import_path","__filename","__dirname","path","yaml","fs","import_js_yaml","import_fs","import_url","import_path","__filename","__dirname","path","yaml","fs","import_js_yaml","import_fs","import_url","import_path","__filename","__dirname","path","yaml","fs","import_js_yaml","import_fs","import_url","import_path","__filename","__dirname","path","yaml","fs","import_js_yaml","import_fs","import_url","import_path","import_debug","import_debug","debug","createDebug","import_debug","debug","createDebug","debug","createDebug","__filename","__dirname","path","yaml","fs","Authorize"]}
1
+ {"version":3,"sources":["../node_modules/tsup/assets/cjs_shims.js","../lib/http/sessionToken.js","../lib/http/authorize.js","../lib/VVRestApi.js","../lib/DocApi.js","../lib/common.js","../lib/http/httpHelper.js","../lib/docApi/documentManager.js","../lib/FormsApi.js","../lib/formsApi/formInstanceManager.js","../lib/ObjectsApi.js","../lib/objectsApi/modelManager.js","../lib/objectsApi/objectManager.js","../lib/StudioApi.js","../lib/studioApi/workflowManager.js","../lib/studioApi/rolesAndPermissionsManager.js","../lib/NotificationsApi.js","../lib/notificationsApi/userNotificationsManager.js","../lib/vvRestApi/constants.js","../lib/vvRestApi/configurationManager.js","../lib/vvRestApi/emailManager.js","../lib/vvRestApi/formsManager.js","../lib/vvRestApi/groupsManager.js","../lib/vvRestApi/libraryManager.js","../lib/vvRestApi/sitesManager.js","../lib/vvRestApi/usersManager.js","../lib/vvRestApi/currentUserManager.js","../lib/vvRestApi/scheduledProcessManager.js","../lib/vvRestApi/customQueryManager.js","../lib/vvRestApi/customerManager.js","../lib/vvRestApi/customerDatabaseManager.js","../lib/vvRestApi/filesManager.js","../lib/vvRestApi/scriptsManager.js","../lib/vvRestApi/documentsManager.js","../lib/vvRestApi/projectsManager.js","../lib/vvRestApi/indexFieldsManager.js","../lib/vvRestApi/outsideProcessesManager.js","../lib/vvRestApi/securityMembersManager.js","../lib/vvRestApi/layoutsManager.js","../lib/vvRestApi/reportsManager.js","../lib/vvRestApi/languageResourcesManager.js","../lib/vvRestApi/dropdownListsManager.js"],"sourcesContent":["// Shim globals in cjs bundle\n// There's a weird bug that esbuild will always inject importMetaUrl\n// if we export it as `const importMetaUrl = ... __filename ...`\n// But using a function will not cause this issue\n\nconst getImportMetaUrl = () => \n typeof document === \"undefined\" \n ? new URL(`file:${__filename}`).href \n : (document.currentScript && document.currentScript.tagName.toUpperCase() === 'SCRIPT') \n ? document.currentScript.src \n : new URL(\"main.js\", document.baseURI).href;\n\nexport const importMetaUrl = /* @__PURE__ */ getImportMetaUrl()\n","export class SessionToken {\n constructor() {\n this.isAuthenticated = false;\n this.apiUrl = null;\n this.baseUrl = null;\n this.authenticationUrl = null;\n this.customerAlias = null;\n this.databaseAlias = null;\n this.expirationDate = null;\n this.accessToken = null;\n this.tokenType = null;\n this.refreshToken = null;\n this.expiresIn = 0;\n this.clientId = null;\n this.clientSecret = null;\n this.userId = null;\n this.password = null;\n this.audience = null;\n }\n\n createCopy() {\n const newSession = new SessionToken();\n newSession.isAuthenticated = this.isAuthenticated;\n newSession.apiUrl = this.apiUrl;\n newSession.baseUrl = this.baseUrl;\n newSession.authenticationUrl = this.authenticationUrl;\n newSession.customerAlias = this.customerAlias;\n newSession.databaseAlias = this.databaseAlias;\n newSession.expirationDate = this.expirationDate;\n newSession.accessToken = this.accessToken;\n newSession.tokenType = this.tokenType;\n newSession.refreshToken = this.refreshToken;\n newSession.expiresIn = this.expiresIn;\n newSession.clientId = this.clientId;\n newSession.clientSecret = this.clientSecret;\n newSession.userId = this.userId;\n newSession.password = this.password;\n newSession.audience = this.audience;\n return newSession;\n }\n\n convertToJwt(jwt) {\n this.tokenType = 'jwt';\n this.accessToken = jwt[\"token\"];\n this.expirationDate = new Date(jwt[\"expires\"]);\n this.expiresIn = 0;\n }\n}\n\nexport default SessionToken;\n","import { SessionToken } from './sessionToken.js';\nimport createDebug from 'debug';\nimport yaml from 'js-yaml';\nimport fs from 'fs';\n\nconst debug = createDebug('visualvault:auth');\n\nexport class Authorize {\n constructor() {\n this.jsyaml = yaml;\n this.fs = fs;\n }\n\n async acquireSecurityToken(clientId, clientSecret, userId, password, audience, baseUrl, apiUrl, customerAlias, databaseAlias, authenticationUrl) {\n debug('acquireSecurityToken called for user: %s', userId);\n\n try {\n const sessionToken = await this.__getToken(\n clientId,\n clientSecret,\n userId,\n password,\n audience,\n baseUrl,\n customerAlias,\n databaseAlias,\n authenticationUrl,\n true\n );\n\n debug('acquireSecurityToken success');\n\n if (typeof (sessionToken) != 'undefined' && sessionToken != null) {\n sessionToken.baseUrl = baseUrl;\n sessionToken.apiUrl = apiUrl;\n sessionToken.authenticationUrl = authenticationUrl;\n sessionToken.customerAlias = customerAlias;\n sessionToken.databaseAlias = databaseAlias;\n sessionToken.clientId = clientId;\n sessionToken.clientSecret = clientSecret;\n sessionToken.userId = userId;\n sessionToken.password = password;\n sessionToken.audience = audience;\n sessionToken.isAuthenticated = true;\n }\n\n return sessionToken;\n } catch (error) {\n debug('acquireSecurityToken failed: %s', error.message);\n throw error;\n }\n }\n\n async acquireJwt(jwt, baseUrl, apiUrl, authenticationUrl, customerAlias, databaseAlias) {\n debug('acquireJwt called');\n\n try {\n const sessionToken = await this.__getJwt(\n jwt,\n baseUrl,\n customerAlias,\n databaseAlias,\n authenticationUrl,\n true\n );\n\n debug('acquireJwt success');\n\n if (typeof (sessionToken) != 'undefined' && sessionToken != null) {\n sessionToken.baseUrl = baseUrl;\n sessionToken.apiUrl = apiUrl;\n sessionToken.authenticationUrl = authenticationUrl;\n sessionToken.customerAlias = customerAlias;\n sessionToken.databaseAlias = databaseAlias;\n sessionToken.isAuthenticated = true;\n sessionToken.isJwt = true;\n }\n\n return sessionToken;\n } catch (error) {\n debug('acquireJwt failed: %s', error.message);\n throw error;\n }\n }\n\n async reacquireSecurityToken(sessionToken) {\n debug('reacquireSecurityToken called (isJwt: %s)', sessionToken.isJwt);\n\n try {\n if (sessionToken.isJwt) {\n const newToken = await this.__getJwt(\n sessionToken.accessToken,\n sessionToken.baseUrl,\n sessionToken.customerAlias,\n sessionToken.databaseAlias,\n sessionToken.authenticationUrl,\n true\n );\n\n debug('reacquireSecurityToken success (JWT)');\n return newToken;\n } else {\n const newToken = await this.__getToken(\n sessionToken.clientId,\n sessionToken.clientSecret,\n sessionToken.userId,\n sessionToken.password,\n sessionToken.audience,\n sessionToken.baseUrl,\n sessionToken.customerAlias,\n sessionToken.databaseAlias,\n sessionToken.authenticationUrl,\n true\n );\n\n debug('reacquireSecurityToken success (password grant)');\n return newToken;\n }\n } catch (error) {\n debug('reacquireSecurityToken failed: %s', error.message);\n throw error;\n }\n }\n\n async acquireRefreshToken(sessionToken) {\n if (sessionToken.isJwt) {\n return await this.reacquireSecurityToken(sessionToken);\n }\n\n const claim = {\n grant_type: 'refresh_token',\n refresh_token: sessionToken.refreshToken,\n client_id: sessionToken.clientId,\n client_secret: sessionToken.clientSecret\n };\n\n if (sessionToken['audience']) {\n claim['audience'] = sessionToken['audience'];\n }\n\n const urlSecurity = sessionToken.baseUrl + sessionToken.authenticationUrl;\n debug('acquireRefreshToken - URL: %s', urlSecurity);\n\n try {\n const response = await fetch(urlSecurity, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded'\n },\n body: new URLSearchParams(claim)\n });\n\n const body = await response.text();\n\n if (response.status === 200) {\n debug('acquireRefreshToken success');\n\n const responseObject = JSON.parse(body);\n sessionToken.accessToken = responseObject.access_token;\n sessionToken.expiresIn = responseObject.expires_in;\n sessionToken.refreshToken = responseObject.refresh_token;\n sessionToken.tokenType = responseObject.token_type;\n\n const expireDate = new Date();\n expireDate.setSeconds(expireDate.getSeconds() + sessionToken.expiresIn);\n\n sessionToken.expirationDate = expireDate;\n sessionToken.isAuthenticated = true;\n\n return sessionToken;\n } else if (response.status === 401 || response.status === 403 || response.status === 400) {\n sessionToken.isAuthenticated = false;\n throw new Error(`Authorization has been refused for current credentials (HTTP ${response.status}): ${body.substring(0, 200)}`);\n } else {\n sessionToken.isAuthenticated = false;\n throw new Error(`Unknown response for access token: HTTP ${response.status}`);\n }\n } catch (error) {\n sessionToken.isAuthenticated = false;\n debug('acquireRefreshToken error: %s', error.message);\n throw error;\n }\n }\n\n async __getToken(clientId, clientSecret, userId, password, audience, baseUrl, customerAlias, databaseAlias, authenticationUrl) {\n const sessionToken = new SessionToken();\n\n const claim = {\n grant_type: 'password',\n client_id: clientId,\n client_secret: clientSecret,\n username: userId,\n password: password,\n scope: 'vault'\n };\n\n const urlSecurity = baseUrl + authenticationUrl;\n debug('__getToken - URL: %s, user: %s, customer: %s/%s, audience: %s', urlSecurity, userId, customerAlias, databaseAlias, audience);\n\n try {\n const response = await fetch(urlSecurity, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded'\n },\n body: new URLSearchParams(claim)\n });\n\n const body = await response.text();\n\n if (response.status === 200) {\n const responseObject = JSON.parse(body);\n sessionToken.accessToken = responseObject.access_token;\n sessionToken.expiresIn = responseObject.expires_in;\n sessionToken.refreshToken = responseObject.refresh_token;\n sessionToken.tokenType = responseObject.token_type;\n\n const expireDate = new Date();\n expireDate.setSeconds(expireDate.getSeconds() + sessionToken.expiresIn);\n\n sessionToken.expirationDate = expireDate;\n sessionToken.isAuthenticated = true;\n\n debug('__getToken success');\n return sessionToken;\n } else if (response.status === 401 || response.status === 403 || response.status === 400) {\n sessionToken.isAuthenticated = false;\n throw new Error(`Authorization has been refused for current credentials (HTTP ${response.status}): ${body.substring(0, 200)}`);\n } else {\n sessionToken.isAuthenticated = false;\n throw new Error(`Unknown response for access token: HTTP ${response.status}`);\n }\n } catch (error) {\n sessionToken.isAuthenticated = false;\n debug('__getToken error: %s', error.message);\n throw error;\n }\n }\n\n async __getJwt(jwt, baseUrl, customerAlias, databaseAlias, authenticationUrl) {\n const sessionToken = new SessionToken();\n\n const headers = {\n Authorization: 'Bearer ' + jwt,\n };\n\n const urlSecurity = baseUrl + authenticationUrl;\n debug('__getJwt - URL: %s, customer: %s/%s', urlSecurity, customerAlias, databaseAlias);\n\n try {\n const response = await fetch(urlSecurity, {\n method: 'GET',\n headers\n });\n\n const body = await response.text();\n\n if (response.status === 200) {\n const responseObject = JSON.parse(body);\n\n sessionToken.accessToken = responseObject.data.token;\n sessionToken.expirationDate = new Date(responseObject.data.expires);\n sessionToken.isAuthenticated = true;\n sessionToken.isJwt = true;\n\n debug('__getJwt success');\n return sessionToken;\n } else if (response.status === 401 || response.status === 403 || response.status === 400) {\n sessionToken.isAuthenticated = false;\n throw new Error(`Authorization has been refused for current credentials (HTTP ${response.status}): ${body.substring(0, 200)}`);\n } else {\n sessionToken.isAuthenticated = false;\n throw new Error(`Unknown response for JWT: HTTP ${response.status}`);\n }\n } catch (error) {\n sessionToken.isAuthenticated = false;\n debug('__getJwt error: %s', error.message);\n throw error;\n }\n }\n\n endsWith(source, suffix) {\n return source.indexOf(suffix, source.length - suffix.length) !== -1;\n }\n}\n\nexport default Authorize;","import DocApi from './DocApi.js';\r\nimport FormsApi from './FormsApi.js';\r\nimport ObjectsApi from './ObjectsApi.js';\r\nimport StudioApi from './StudioApi.js';\r\nimport NotificationsApi from './NotificationsApi.js';\r\nimport common from './common.js';\r\nimport yaml from 'js-yaml';\r\nimport fs from 'fs';\r\nimport { fileURLToPath } from 'url';\r\nimport path from 'path';\r\nimport createDebug from 'debug';\r\n\r\nconst debug = createDebug('visualvault:api');\r\n\r\n// Import all managers from vvRestApi directory\r\nimport { Constants } from './vvRestApi/constants.js';\r\nimport { ConfigurationManager } from './vvRestApi/configurationManager.js';\r\nimport { EmailManager } from './vvRestApi/emailManager.js';\r\nimport { FormsManager, ReturnField, FormFieldCollection } from './vvRestApi/formsManager.js';\r\nimport { GroupsManager } from './vvRestApi/groupsManager.js';\r\nimport { LibraryManager } from './vvRestApi/libraryManager.js';\r\nimport { SitesManager } from './vvRestApi/sitesManager.js';\r\nimport { UsersManager } from './vvRestApi/usersManager.js';\r\nimport { CurrentUserManager } from './vvRestApi/currentUserManager.js';\r\nimport { ScheduledProcessManager } from './vvRestApi/scheduledProcessManager.js';\r\nimport { CustomQueryManager } from './vvRestApi/customQueryManager.js';\r\nimport { CustomerManager } from './vvRestApi/customerManager.js';\r\nimport { CustomerDatabaseManager } from './vvRestApi/customerDatabaseManager.js';\r\nimport { FilesManager } from './vvRestApi/filesManager.js';\r\nimport { ScriptsManager } from './vvRestApi/scriptsManager.js';\r\nimport { DocumentsManager } from './vvRestApi/documentsManager.js';\r\nimport { ProjectsManager } from './vvRestApi/projectsManager.js';\r\nimport { IndexFieldsManager } from './vvRestApi/indexFieldsManager.js';\r\nimport { OutsideProcessesManager } from './vvRestApi/outsideProcessesManager.js';\r\nimport { SecurityMembersManager } from './vvRestApi/securityMembersManager.js';\r\nimport { LayoutsManager } from './vvRestApi/layoutsManager.js';\r\nimport { ReportsManager } from './vvRestApi/reportsManager.js';\r\nimport { LanguageResourcesManager } from './vvRestApi/languageResourcesManager.js';\r\nimport { DropdownListsManager } from './vvRestApi/dropdownListsManager.js';\r\n\r\nconst __filename = fileURLToPath(import.meta.url);\r\nconst __dirname = path.dirname(__filename);\r\n\r\n/**\r\n * Main VisualVault API client providing access to all API managers.\r\n */\r\nexport class VVClient {\r\n /** @type {Constants} */ constants;\r\n /** @type {ConfigurationManager} */ configuration;\r\n /** @type {CustomQueryManager} */ customQuery;\r\n /** @type {DocumentsManager} */ documents;\r\n /** @type {EmailManager} */ email;\r\n /** @type {FilesManager} */ files;\r\n /** @type {FormsManager} */ forms;\r\n /** @type {GroupsManager} */ groups;\r\n /** @type {LibraryManager} */ library;\r\n /** @type {SitesManager} */ sites;\r\n /** @type {UsersManager} */ users;\r\n /** @type {ScheduledProcessManager} */ scheduledProcess;\r\n /** @type {ScriptsManager} */ scripts;\r\n /** @type {ProjectsManager} */ projects;\r\n /** @type {CustomerManager} */ customer;\r\n /** @type {CustomerDatabaseManager} */ customerDatabase;\r\n /** @type {IndexFieldsManager} */ indexFields;\r\n /** @type {OutsideProcessesManager} */ outsideProcesses;\r\n /** @type {SecurityMembersManager} */ securityMembers;\r\n /** @type {LayoutsManager} */ layouts;\r\n /** @type {ReportsManager} */ reports;\r\n /** @type {LanguageResourcesManager} */ languageResources;\r\n /** @type {DropdownListsManager} */ dropdownLists;\r\n\r\n /**\r\n * @param {*} sessionToken - Session token from authentication\r\n */\r\n constructor(sessionToken) {\r\n this.yamlConfig = yaml.load(fs.readFileSync(path.join(__dirname, 'config.yml'), 'utf8'));\r\n\r\n this._httpHelper = new common.httpHelper(sessionToken, this.yamlConfig);\r\n this.constants = new Constants();\r\n this.configuration = new ConfigurationManager(this._httpHelper);\r\n\r\n this.customQuery = new CustomQueryManager(this._httpHelper);\r\n this.documents = new DocumentsManager(this._httpHelper);\r\n this.email = new EmailManager(this._httpHelper);\r\n this.files = new FilesManager(this._httpHelper);\r\n this.forms = new FormsManager(this._httpHelper);\r\n this.groups = new GroupsManager(this._httpHelper);\r\n this.library = new LibraryManager(this._httpHelper);\r\n this.sites = new SitesManager(this._httpHelper);\r\n this.users = new UsersManager(this._httpHelper);\r\n this.currentUser = new CurrentUserManager(this._httpHelper);\r\n this.scheduledProcess = new ScheduledProcessManager(this._httpHelper);\r\n this.scripts = new ScriptsManager(this._httpHelper);\r\n this.projects = new ProjectsManager(this._httpHelper);\r\n this.customer = new CustomerManager(this._httpHelper);\r\n this.customerDatabase = new CustomerDatabaseManager(this._httpHelper);\r\n this.indexFields = new IndexFieldsManager(this._httpHelper);\r\n this.outsideProcesses = new OutsideProcessesManager(this._httpHelper);\r\n this.securityMembers = new SecurityMembersManager(this._httpHelper);\r\n this.layouts = new LayoutsManager(this._httpHelper);\r\n this.reports = new ReportsManager(this._httpHelper);\r\n this.languageResources = new LanguageResourcesManager(this._httpHelper, sessionToken.baseUrl);\r\n this.dropdownLists = new DropdownListsManager(this._httpHelper);\r\n\r\n // Extended API modules - null when not enabled/configured\r\n this.docApi = null;\r\n this.formsApi = null;\r\n this.objectsApi = null;\r\n this.studioApi = null;\r\n this.notificationsApi = null;\r\n }\r\n\r\n async createDocApi(sessionToken) {\r\n const docApiConfigResponse = JSON.parse(await this.configuration.getDocApiConfig());\r\n\r\n if (docApiConfigResponse && docApiConfigResponse['data']) {\r\n const docApiSession = sessionToken.createCopy();\r\n docApiSession.baseUrl = docApiConfigResponse.data['apiUrl'];\r\n docApiSession.apiUrl = this.yamlConfig.DocApiUri;\r\n if (docApiSession['tokenType'] == 'jwt') {\r\n this.docApi = new DocApi(docApiSession, docApiConfigResponse.data);\r\n } else if (this.users) {\r\n const jwtResponse = JSON.parse(await this.users.getUserJwt(docApiSession.audience));\r\n\r\n if (jwtResponse['data'] && jwtResponse['data']['token']) {\r\n docApiSession.convertToJwt(jwtResponse['data']);\r\n this.docApi = new DocApi(docApiSession, docApiConfigResponse.data);\r\n }\r\n }\r\n }\r\n }\r\n\r\n async createFormsApi(sessionToken) {\r\n const formsApiConfigResponse = JSON.parse(await this.configuration.getFormsApiConfig());\r\n\r\n if (formsApiConfigResponse && formsApiConfigResponse['data']) {\r\n const formsApiSession = sessionToken.createCopy();\r\n formsApiSession.baseUrl = formsApiConfigResponse.data['formsApiUrl'];\r\n formsApiSession.apiUrl = this.yamlConfig.FormsApiUri;\r\n if (formsApiSession['tokenType'] == 'jwt') {\r\n this.formsApi = new FormsApi(formsApiSession, formsApiConfigResponse.data);\r\n } else if (this.users) {\r\n const jwtResponse = JSON.parse(await this.users.getUserJwt(formsApiSession.audience));\r\n\r\n if (jwtResponse['data'] && jwtResponse['data']['token']) {\r\n formsApiSession.convertToJwt(jwtResponse['data']);\r\n this.formsApi = new FormsApi(formsApiSession, formsApiConfigResponse.data);\r\n }\r\n }\r\n }\r\n }\r\n\r\n async createObjectsApi(sessionToken) {\r\n const objectsApiConfigResponse = JSON.parse(await this.configuration.getObjectsApiConfig());\r\n\r\n if (objectsApiConfigResponse && objectsApiConfigResponse['data']) {\r\n const objectsApiSession = sessionToken.createCopy();\r\n objectsApiSession.baseUrl = objectsApiConfigResponse.data['apiUrl'];\r\n objectsApiSession.apiUrl = '';\r\n if (objectsApiSession['tokenType'] == 'jwt') {\r\n this.objectsApi = new ObjectsApi(objectsApiSession, objectsApiConfigResponse.data);\r\n } else if (this.users) {\r\n const jwtResponse = JSON.parse(await this.users.getUserJwt(objectsApiSession.audience));\r\n\r\n if (jwtResponse['data'] && jwtResponse['data']['token']) {\r\n objectsApiSession.convertToJwt(jwtResponse['data']);\r\n this.objectsApi = new ObjectsApi(objectsApiSession, objectsApiConfigResponse.data);\r\n }\r\n }\r\n }\r\n }\r\n\r\n async createStudioApi(sessionToken) {\r\n const studioApiConfigResponse = JSON.parse(await this.configuration.getStudioApiConfig());\r\n\r\n if (studioApiConfigResponse && studioApiConfigResponse['data']) {\r\n const studioApiSession = sessionToken.createCopy();\r\n studioApiSession.baseUrl = studioApiConfigResponse.data['studioApiUrl'];\r\n studioApiSession.apiUrl = '';\r\n if (studioApiSession['tokenType'] == 'jwt') {\r\n this.studioApi = new StudioApi(studioApiSession, studioApiConfigResponse.data);\r\n } else if (this.users) {\r\n const jwtResponse = JSON.parse(await this.users.getUserJwt(studioApiSession.audience));\r\n\r\n if (jwtResponse['data'] && jwtResponse['data']['token']) {\r\n studioApiSession.convertToJwt(jwtResponse['data']);\r\n this.studioApi = new StudioApi(studioApiSession, studioApiConfigResponse.data);\r\n }\r\n }\r\n }\r\n }\r\n\r\n async createNotificationsApi(sessionToken) {\r\n const notificationsApiConfigResponse = JSON.parse(await this.configuration.getNotificationsApiConfig());\r\n\r\n if (notificationsApiConfigResponse && notificationsApiConfigResponse['data']) {\r\n const notificationsApiSession = sessionToken.createCopy();\r\n notificationsApiSession.baseUrl = notificationsApiConfigResponse.data['apiUrl'];\r\n notificationsApiSession.apiUrl = this.yamlConfig.NotificationsApiUri;\r\n if (notificationsApiSession['tokenType'] == 'jwt') {\r\n this.notificationsApi = new NotificationsApi(notificationsApiSession, notificationsApiConfigResponse.data);\r\n } else if (this.users) {\r\n const jwtResponse = JSON.parse(await this.users.getUserJwt(notificationsApiSession.audience));\r\n\r\n if (jwtResponse['data'] && jwtResponse['data']['token']) {\r\n notificationsApiSession.convertToJwt(jwtResponse['data']);\r\n this.notificationsApi = new NotificationsApi(notificationsApiSession, notificationsApiConfigResponse.data);\r\n }\r\n }\r\n }\r\n }\r\n\r\n async _convertToJwt(sessionToken) {\r\n const jwtResponse = JSON.parse(await this.users.getUserJwt(sessionToken.audience));\r\n if (jwtResponse['data'] && jwtResponse['data']['token']) {\r\n sessionToken.convertToJwt(jwtResponse['data']);\r\n } else {\r\n throw new Error('Failed to get JWT: API response missing data.token property');\r\n }\r\n }\r\n\r\n endsWith(source, suffix) {\r\n return source.indexOf(suffix, source.length - suffix.length) !== -1;\r\n }\r\n\r\n /**\r\n * Get the current security token\r\n * @returns {string} The access token\r\n */\r\n getSecurityToken() {\r\n return this._httpHelper._sessionToken.accessToken;\r\n }\r\n\r\n /**\r\n * Check if the client is authenticated\r\n * @returns {boolean} True if authenticated\r\n */\r\n isAuthenticated() {\r\n return this._httpHelper._sessionToken.isAuthenticated;\r\n }\r\n\r\n /**\r\n * Get the base URL\r\n * @returns {string} The base URL\r\n */\r\n getBaseUrl() {\r\n return this._httpHelper._sessionToken.baseUrl;\r\n }\r\n}\r\n\r\n/**\r\n * Authentication class for obtaining VaultApi client instances.\r\n */\r\nexport class Authorize extends common.authorize {\r\n /**\r\n * Authenticate and get a VaultApi client instance\r\n * @param {string} clientId - OAuth client ID\r\n * @param {string} clientSecret - OAuth client secret\r\n * @param {string} userId - User username\r\n * @param {string} password - User password\r\n * @param {string} audience - OAuth audience\r\n * @param {string} baseVaultUrl - VisualVault base URL\r\n * @param {string} customerAlias - Customer alias\r\n * @param {string} databaseAlias - Database alias\r\n * @returns {Promise<VVClient>} Authenticated client instance\r\n */\r\n async getVaultApi(clientId, clientSecret, userId, password, audience, baseVaultUrl, customerAlias, databaseAlias) {\r\n debug('getVaultApi called for user: %s, customer: %s/%s', userId, customerAlias, databaseAlias);\r\n\r\n const config = this.jsyaml.load(this.fs.readFileSync(__dirname + '/config.yml', 'utf8'));\r\n\r\n if (this.endsWith(baseVaultUrl, '/')) {\r\n baseVaultUrl = baseVaultUrl.substring(0, baseVaultUrl.length - 1);\r\n }\r\n\r\n const apiUrl = config.ApiUri.replace('{custalias}', customerAlias).replace('{custdbalias}', databaseAlias);\r\n const authenticationUrl = config.AutheticateUri;\r\n\r\n const sessionToken = await this.acquireSecurityToken(clientId, clientSecret, userId, password, audience, baseVaultUrl, apiUrl, customerAlias, databaseAlias, authenticationUrl);\r\n const client = new VVClient(sessionToken);\r\n\r\n try {\r\n await client._convertToJwt(sessionToken);\r\n await Promise.all([\r\n client.createDocApi(sessionToken),\r\n client.createFormsApi(sessionToken),\r\n client.createObjectsApi(sessionToken),\r\n client.createStudioApi(sessionToken),\r\n client.createNotificationsApi(sessionToken),\r\n ]);\r\n return client;\r\n } catch (error) {\r\n debug('Failed to convert to JWT or create specialized APIs: %s', error.message);\r\n return client;\r\n }\r\n }\r\n\r\n /**\r\n * Get a VaultApi client from an existing JWT token\r\n * @param {string} jwt - JWT authentication token\r\n * @param {string} baseVaultUrl - VisualVault base URL\r\n * @param {string} customerAlias - Customer alias\r\n * @param {string} databaseAlias - Database alias\r\n * @param {Date} expirationDate - Token expiration date\r\n * @returns {Promise<VVClient>} Authenticated client instance\r\n */\r\n async getVaultApiFromJwt(jwt, baseVaultUrl, customerAlias, databaseAlias, expirationDate) {\r\n debug('getVaultApiFromJwt called for customer: %s/%s', customerAlias, databaseAlias);\r\n\r\n const config = this.jsyaml.load(this.fs.readFileSync(__dirname + '/config.yml', 'utf8'));\r\n\r\n if (this.endsWith(baseVaultUrl, '/')) {\r\n baseVaultUrl = baseVaultUrl.substring(0, baseVaultUrl.length - 1);\r\n }\r\n\r\n const apiUrl = config.ApiUri.replace('{custalias}', customerAlias).replace('{custdbalias}', databaseAlias);\r\n const authenticationUrl = apiUrl + config.ResourceUri.UsersGetJwt;\r\n\r\n if (expirationDate && expirationDate >= new Date(new Date().getTime() + 30 * 1000)) {\r\n const sessionToken = new common.sessionToken();\r\n\r\n sessionToken.accessToken = jwt;\r\n sessionToken.baseUrl = baseVaultUrl;\r\n sessionToken.apiUrl = apiUrl;\r\n sessionToken.authenticationUrl = authenticationUrl;\r\n sessionToken.customerAlias = customerAlias;\r\n sessionToken.databaseAlias = databaseAlias;\r\n sessionToken.expirationDate = expirationDate;\r\n sessionToken.isAuthenticated = true;\r\n sessionToken.isJwt = true;\r\n\r\n const client = new VVClient(sessionToken);\r\n\r\n return Promise.all([\r\n client.createDocApi(sessionToken),\r\n client.createFormsApi(sessionToken),\r\n client.createObjectsApi(sessionToken),\r\n client.createStudioApi(sessionToken),\r\n ])\r\n .then(() => client)\r\n .catch((error) => {\r\n debug('Failed to create specialized APIs: %s', error.message);\r\n return client;\r\n });\r\n } else {\r\n const token = await this.acquireJwt(jwt, baseVaultUrl, apiUrl, authenticationUrl, customerAlias, databaseAlias);\r\n const client = new VVClient(token);\r\n\r\n try {\r\n await Promise.all([\r\n client.createDocApi(token),\r\n client.createFormsApi(token),\r\n client.createObjectsApi(token),\r\n client.createStudioApi(token),\r\n ]);\r\n return client;\r\n } catch (error) {\r\n debug('Failed to create specialized APIs: %s', error.message);\r\n return client;\r\n }\r\n }\r\n }\r\n\r\n endsWith(source, suffix) {\r\n return source.indexOf(suffix, source.length - suffix.length) !== -1;\r\n }\r\n}\r\n\r\n// Export helper classes from formsManager for backward compatibility\r\nexport const forms = {\r\n returnField: ReturnField,\r\n formFieldCollection: FormFieldCollection\r\n};\r\n\r\nexport default {\r\n vvClient: VVClient,\r\n authorize: Authorize,\r\n forms\r\n};\r\n","// DocApi\r\nimport common from './common.js';\r\nimport { DocumentManager } from './docApi/documentManager.js';\r\nimport yaml from 'js-yaml';\r\nimport fs from 'fs';\r\nimport { fileURLToPath } from 'url';\r\nimport path from 'path';\r\n\r\nconst __filename = fileURLToPath(import.meta.url);\r\nconst __dirname = path.dirname(__filename);\r\n\r\n/**\r\n * Entry point for the DocApi service. Exposes the `documents` manager when the service is enabled.\r\n * Access via `client.docApi` after authentication. Check `client.docApi.isEnabled` before use.\r\n */\r\nexport class DocApi {\r\n /** @type {boolean} */ isEnabled;\r\n /** @type {string|null} */ baseUrl;\r\n /** @type {boolean} */ roleSecurity;\r\n /** @type {DocumentManager} */ documents;\r\n\r\n /**\r\n * @param {object} sessionToken - JWT session token from authentication.\r\n * @param {object} docApiConfig - DocApi configuration object returned by the VV configuration endpoint.\r\n */\r\n constructor(sessionToken, docApiConfig) {\r\n if (!sessionToken['tokenType'] && sessionToken['tokenType'] != 'jwt') {\r\n return;\r\n }\r\n\r\n const yamlConfig = yaml.load(fs.readFileSync(__dirname + '/config.yml', 'utf8'));\r\n this._httpHelper = new common.httpHelper(sessionToken, yamlConfig);\r\n\r\n this.isEnabled = docApiConfig['isEnabled'] || false;\r\n this.baseUrl = docApiConfig['apiUrl'] || null;\r\n this.roleSecurity = docApiConfig['roleSecurity'] || false;\r\n\r\n if (this.isEnabled) {\r\n this.documents = new DocumentManager(this._httpHelper);\r\n }\r\n }\r\n}\r\n\r\nexport default DocApi;\r\n","// Re-export the modernized HTTP modules\nexport { HttpHelper as httpHelper } from './http/httpHelper.js';\nexport { SessionToken as sessionToken } from './http/sessionToken.js';\nexport { Authorize as authorize } from './http/authorize.js';\n\n// Default export for backward compatibility\nimport { HttpHelper } from './http/httpHelper.js';\nimport { SessionToken } from './http/sessionToken.js';\nimport { Authorize } from './http/authorize.js';\n\nexport default {\n httpHelper: HttpHelper,\n sessionToken: SessionToken,\n authorize: Authorize\n};\n","import createDebug from 'debug';\n\nconst debug = createDebug('visualvault:http');\n\nexport class HttpHelper {\n constructor(sessionToken, yamlConfig) {\n this._sessionToken = sessionToken;\n this._config = yamlConfig;\n this._maxRetries = 3;\n }\n\n async doVvClientRequest(url, options, params, data, buffer) {\n // If the token is within 30 seconds of expiration, refresh it\n if (this._sessionToken.expirationDate < new Date(new Date().getTime() + 30 * 1000)) {\n debug('accessToken has expired, calling __acquireRefreshToken');\n\n try {\n await this.__acquireRefreshToken();\n debug('return success from __acquireRefreshToken');\n return await this.__doVvClientCallRequest(url, options, params, data, buffer);\n } catch (error) {\n debug('return fail from __acquireRefreshToken: %s', error.message);\n throw new Error('Unable to obtain Authorization, error: ' + error);\n }\n } else {\n return await this.__doVvClientCallRequest(url, options, params, data, buffer);\n }\n }\n\n async __doVvClientCallRequest(url, options, params, data, buffer, retries = 0) {\n try {\n let responseData;\n\n if (options.method === 'GET') {\n responseData = await this.httpGet(url, params);\n } else if (options.method === 'GETSTREAM') {\n responseData = await this.httpGetStream(url, params);\n } else if (options.method === 'POST') {\n responseData = await this.httpPost(url, params, data);\n } else if (options.method === 'POSTSTREAM') {\n responseData = await this.httpPostStream(url, params, data, buffer);\n } else if (options.method === 'PUT') {\n responseData = await this.httpPut(url, params, data);\n } else if (options.method === 'PUTSTREAM') {\n responseData = await this.httpPutStream(url, params, data, buffer);\n } else if (options.method === 'DELETE') {\n responseData = await this.httpDelete(url, params);\n } else {\n throw new Error('http request method name error');\n }\n\n return responseData;\n } catch (error) {\n // Handle retry logic for 429 status\n if (error.status === 429 && retries < this._maxRetries) {\n const timeout = this.__getRetryDelay(error.retryTime);\n debug('Timed Out: Retrying in %d ms. (%d retries left)', timeout, this._maxRetries - retries - 1);\n\n await new Promise(resolve => setTimeout(resolve, timeout));\n return await this.__doVvClientCallRequest(url, options, params, data, buffer, retries + 1);\n }\n\n throw error;\n }\n }\n\n async __makeRequest(url, options) {\n const headers = {\n 'Authorization': 'Bearer ' + this._sessionToken.accessToken,\n 'Content-Type': 'application/json'\n };\n\n debug('Performing request to url: %s', url);\n\n const fetchOptions = {\n method: options.method,\n headers: { ...headers, ...options.headers }\n };\n\n // Add query parameters to URL\n if (options.qs && Object.keys(options.qs).length > 0) {\n const queryString = new URLSearchParams(options.qs).toString();\n url = `${url}?${queryString}`;\n }\n\n // Add body for POST/PUT requests\n if (options.json && (options.method === 'POST' || options.method === 'PUT')) {\n fetchOptions.body = JSON.stringify(options.json);\n }\n\n const response = await fetch(url, fetchOptions);\n const responseText = await response.text();\n\n if (!response.ok) {\n let parsedData;\n try {\n parsedData = JSON.parse(responseText);\n } catch (e) {\n parsedData = { meta: responseText };\n }\n\n if (response.status === 401 || response.status === 403) {\n this._sessionToken.isAuthenticated = false;\n throw new Error(JSON.stringify(parsedData.meta));\n } else if (response.status === 429) {\n const error = new Error(JSON.stringify(parsedData.meta));\n error.status = 429;\n error.retryTime = parsedData.meta?.retryTime;\n throw error;\n } else {\n throw new Error(responseText);\n }\n }\n\n return responseText;\n }\n\n async __makePostStreamRequest(url, options, buffer) {\n debug('Performing stream request to url: %s', url);\n\n const formData = new FormData();\n\n // Add form fields\n if (options.json) {\n for (const key in options.json) {\n if (options.json.hasOwnProperty(key)) {\n formData.append(key, options.json[key]);\n }\n }\n }\n\n // Add file(s) to multipart data\n if (Buffer.isBuffer(buffer)) {\n // Single file\n const filename = options.json?.fileName || \"file\";\n const blob = new Blob([buffer]);\n formData.append('fileUpload', blob, filename);\n } else if (Array.isArray(buffer)) {\n // Multiple files\n for (let i = 0; i < buffer.length; i++) {\n const fileInfoObj = buffer[i];\n if (Buffer.isBuffer(fileInfoObj.buffer)) {\n const fileName = fileInfoObj.fileName || `file${i}`;\n const blob = new Blob([fileInfoObj.buffer]);\n formData.append('fileUpload', blob, fileName);\n } else {\n throw new Error(`Invalid 'buffer' property found on fileObj at index ${i}`);\n }\n }\n } else {\n throw new Error('Expecting Buffer');\n }\n\n const headers = {\n 'Authorization': 'Bearer ' + this._sessionToken.accessToken\n };\n\n const response = await fetch(url, {\n method: options.method,\n headers,\n body: formData\n });\n\n const responseText = await response.text();\n\n if (!response.ok) {\n throw new Error(responseText);\n }\n\n return responseText;\n }\n\n async httpGet(url, params) {\n const options = { method: 'GET', qs: params || {}, headers: {}, json: null };\n\n if (this._sessionToken.accessToken == null) {\n throw new Error('Access token is null');\n }\n\n return await this.__makeRequest(url, options);\n }\n\n async httpGetStream(url, params) {\n if (this._sessionToken.accessToken == null) {\n throw new Error('Access token is null');\n }\n\n const headers = {\n 'Authorization': 'Bearer ' + this._sessionToken.accessToken,\n 'Content-Type': 'application/json; charset=utf-8'\n };\n\n if (params && Object.keys(params).length > 0) {\n const queryString = new URLSearchParams(params).toString();\n url = `${url}?${queryString}`;\n }\n\n const response = await fetch(url, { method: 'GET', headers });\n\n if (!response.ok) {\n throw new Error(`HTTP error! status: ${response.status}`);\n }\n\n const buffer = await response.arrayBuffer();\n return Buffer.from(buffer);\n }\n\n async httpPost(url, params, data) {\n const options = { method: 'POST', qs: params || {}, json: data, headers: {} };\n\n if (this._sessionToken.accessToken == null) {\n throw new Error('Access token is null');\n }\n\n return await this.__makeRequest(url, options);\n }\n\n async httpPostStream(url, params, data, buffer) {\n const options = { method: 'POST', qs: params || {}, json: data, headers: {} };\n\n if (this._sessionToken.accessToken == null) {\n throw new Error('Access token is null');\n }\n\n return await this.__makePostStreamRequest(url, options, buffer);\n }\n\n async httpPut(url, params, data) {\n const options = { method: 'PUT', qs: params || {}, json: data, headers: {} };\n\n if (this._sessionToken.accessToken == null) {\n throw new Error('Access token is null');\n }\n\n return await this.__makeRequest(url, options);\n }\n\n async httpPutStream(url, params, data, buffer) {\n const options = { method: 'PUT', qs: params || {}, json: data, headers: {} };\n\n if (this._sessionToken.accessToken == null) {\n throw new Error('Access token is null');\n }\n\n return await this.__makePostStreamRequest(url, options, buffer);\n }\n\n async httpDelete(url, params) {\n const options = { method: 'DELETE', qs: params || {}, json: null, headers: {} };\n\n if (this._sessionToken.accessToken == null) {\n throw new Error('Access token is null');\n }\n\n return await this.__makeRequest(url, options);\n }\n\n async __acquireRefreshToken() {\n this._sessionToken.isAuthenticated = false;\n\n // Import authorize dynamically to avoid circular dependency\n const { Authorize } = await import('./authorize.js');\n const vvAuthorize = new Authorize();\n\n try {\n await vvAuthorize.acquireRefreshToken(this._sessionToken);\n } catch (error) {\n await vvAuthorize.reacquireSecurityToken(this._sessionToken);\n }\n }\n\n request(httpVerb, url, params, data) {\n const options = { method: httpVerb.toUpperCase() };\n debug('Performing %s request to url: %s', httpVerb.toUpperCase(), url);\n return this.doVvClientRequest(url, options, params, data);\n }\n\n getUrl(resourceUrl) {\n return this._sessionToken.baseUrl + this._sessionToken.apiUrl + resourceUrl;\n }\n\n __getRetryDelay(retryTime) {\n let delay = 10;\n if (retryTime && !isNaN(Date.parse(retryTime))) {\n const now = new Date();\n delay = Date.parse(retryTime) - now.getTime();\n if (delay < 0) {\n delay *= -1;\n }\n }\n return delay;\n }\n}\n\nexport default HttpHelper;\n","/**\n * Manager class for document API operations.\n *\n * All methods return a `Promise<string>` containing a JSON-encoded API response.\n * When parsed, the response has the shape:\n * ```json\n * {\n * \"meta\": { \"status\": 200, \"statusMsg\": \"OK\", \"errors\": [] },\n * \"data\": { ... }\n * }\n * ```\n * Check `meta.status` to determine success or failure before consuming `data`.\n */\nexport class DocumentManager {\n /**\n * @param {object} httpHelper - The HTTP helper instance used to make API requests.\n */\n constructor(httpHelper) {\n this._httpHelper = httpHelper;\n }\n\n /**\n * Creates a new document.\n * @param {object} data - The document creation payload.\n * @param {string} data.folderId - (Required) The Guid of the folder to create the document in.\n * @param {string} [data.name] - The document name.\n * @param {string} [data.revision] - The revision label.\n * @param {string} [data.documentState] - The document state.\n * @param {string} [data.fileName] - The file name of the attached file.\n * @param {string} [data.contentType] - The MIME type of the attached file.\n * @param {number[]|Uint8Array} [data.fileBytes] - The file content as a byte array.\n * @param {number} [data.fileLength] - The byte length of the file.\n * @param {Array<{key: string, value: string}>} [data.indexFields] - Index field key/value pairs.\n * @param {string} [data.docType] - The document type.\n * @param {number} [data.confidence] - OCR confidence score (decimal).\n * @param {string} [data.description] - Document description.\n * @param {string} [data.keywords] - Document keywords.\n * @param {string} [data.abstract] - Document abstract.\n * @param {string} [data.changeText] - Change description for this revision.\n * @returns {Promise<string>} The API response containing the created document details.\n */\n async createDocument(data) {\n const resourceUri = this._httpHelper._config.ResourceUri.DocApi.CreateDocument;\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'POST' };\n\n return this._httpHelper.doVvClientRequest(url, opts, null, data);\n }\n\n /**\n * Retrieves a specific document revision by its ID.\n * @param {string} documentRevisionId - The ID (Guid) of the document revision to retrieve.\n * @returns {Promise<string>} The API response containing the document revision details.\n */\n async GetRevision(documentRevisionId) {\n let resourceUri = this._httpHelper._config.ResourceUri.DocApi.GetRevision;\n resourceUri = resourceUri.replace('{id}', documentRevisionId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n\n return this._httpHelper.doVvClientRequest(url, opts, null, null);\n }\n\n /**\n * Retrieves the OCR processing status for a document revision.\n * @param {string} documentRevisionId - The ID (Guid) of the document revision to check.\n * @returns {Promise<string>} The API response containing the OCR status for the document revision.\n */\n async getDocumentOcrStatus(documentRevisionId) {\n let resourceUri = this._httpHelper._config.ResourceUri.DocApi.OcrStatus;\n resourceUri = resourceUri.replace('{id}', documentRevisionId);\n const url = this._httpHelper.getUrl(resourceUri);\n\n const opts = { method: 'GET' };\n return this._httpHelper.doVvClientRequest(url, opts, null, null);\n }\n\n /**\n * Updates the OCR processing status for a document revision.\n * @param {string} documentRevisionId - The ID (Guid) of the document revision to update.\n * @param {object} data - The OCR status payload.\n * @param {number} data.ocrErrorCode - Error code enum: 0=None, 1=ErrorThrown, 2=OcrProcessingError, 3=OcrOutputSaveError, 4=CheckinError.\n * @param {number} data.ocrStatus - Status enum: 0=None, 1=Success, 2=SuccessNoTextExtracted, 3=Failure, 4=FailureNoRetry, 5=ResultingDocumentFromSuccess.\n * @param {number} data.pageCount - Number of pages processed.\n * @param {number} data.wordCount - Number of words extracted.\n * @returns {Promise<string>} The API response confirming the OCR status update.\n */\n async updateDocumentOcrStatus(documentRevisionId, data) {\n let resourceUri = this._httpHelper._config.ResourceUri.DocApi.OcrStatus;\n resourceUri = resourceUri.replace('{id}', documentRevisionId);\n const url = this._httpHelper.getUrl(resourceUri);\n\n const opts = { method: 'PUT' };\n return this._httpHelper.doVvClientRequest(url, opts, null, data);\n }\n\n /**\n * Updates an existing document by its ID.\n * @param {string} documentId - The ID (Guid) of the document to update.\n * @param {object} data - The document update payload.\n * @param {string} [data.name] - The document name.\n * @param {string} [data.displayRev] - The display revision label.\n * @param {string} [data.description] - Document description.\n * @param {string} [data.keywords] - Document keywords.\n * @param {string} [data.comments] - Comments for this revision.\n * @param {string} [data.abstract] - Document abstract.\n * @param {string} [data.changeText] - Change description for this revision.\n * @param {string} [data.archive] - Archive state value.\n * @param {string} [data.state] - Document state.\n * @param {Array<{key: string, value: string}>} [data.indexFields] - Index field key/value pairs.\n * @param {string} [data.docType] - The document type.\n * @param {number} [data.confidence] - OCR confidence score (decimal).\n * @returns {Promise<string>} The API response confirming the document update.\n */\n async updateDocument(documentId, data) {\n let resourceUri = this._httpHelper._config.ResourceUri.DocApi.UpdateDocument;\n resourceUri = resourceUri.replace('{id}', documentId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'PUT' };\n\n return this._httpHelper.doVvClientRequest(url, opts, null, data);\n }\n\n /**\n * Searches for documents using advanced search criteria.\n * @param {object[]} criteriaList - List of search criteria objects to filter results.\n * @param {string[]} searchFolders - List of folder paths to include in the search scope.\n * @param {string[]} excludeFolders - List of folder paths to exclude from the search scope.\n * @param {string} sortBy - The field name to sort the results by.\n * @param {string} [sortDirection='desc'] - Sort direction, either 'asc' or 'desc'.\n * @param {number} [page=0] - Zero-based page index for pagination.\n * @param {number} [take=15] - Number of results to return per page.\n * @param {number} [archiveType=0] - Archive type filter: 0 for active, 1 for archived documents.\n * @param {boolean} [roleSecurity=false] - Whether to apply role-based security filtering.\n * @returns {Promise<string>} The API response containing the matching documents and pagination info.\n */\n async search(criteriaList, searchFolders, excludeFolders, sortBy, sortDirection = 'desc', page = 0, take = 15, archiveType = 0, roleSecurity = false) {\n const url = this._httpHelper.getUrl(this._httpHelper._config.ResourceUri.DocApi.AdvancedSearch);\n\n const data = {\n criteriaList,\n searchFolders,\n excludeFolders,\n sortBy,\n sortDirection,\n page,\n take,\n archiveType,\n roleSecurity\n };\n\n const options = { method: 'POST'};\n return this._httpHelper.doVvClientRequest(url, options, null, data);\n }\n}\n\nexport default DocumentManager;\n","// FormsApi\r\nimport common from './common.js';\r\nimport FormInstanceManager from './formsApi/formInstanceManager.js';\r\nimport yaml from 'js-yaml';\r\nimport fs from 'fs';\r\nimport { fileURLToPath } from 'url';\r\nimport path from 'path';\r\n\r\nconst __filename = fileURLToPath(import.meta.url);\r\nconst __dirname = path.dirname(__filename);\r\n\r\n/**\r\n * Entry point for the FormsApi service. Exposes the `formInstances` manager when the service is enabled.\r\n * Access via `client.formsApi` after authentication. Check `client.formsApi.isEnabled` before use.\r\n */\r\nexport class FormsApi {\r\n /** @type {boolean} */ isEnabled;\r\n /** @type {string|null} */ baseUrl;\r\n /** @type {FormInstanceManager} */ formInstances;\r\n\r\n /**\r\n * @param {object} sessionToken - JWT session token from authentication.\r\n * @param {object} formsApiConfig - FormsApi configuration object returned by the VV configuration endpoint.\r\n */\r\n constructor(sessionToken, formsApiConfig) {\r\n if (!sessionToken['tokenType'] && sessionToken['tokenType'] != 'jwt') {\r\n return;\r\n }\r\n\r\n const yamlConfig = yaml.load(fs.readFileSync(__dirname + '/config.yml', 'utf8'));\r\n this._httpHelper = new common.httpHelper(sessionToken, yamlConfig);\r\n\r\n this.isEnabled = formsApiConfig['isEnabled'] || false;\r\n this.baseUrl = formsApiConfig['formsApiUrl'] || null;\r\n\r\n if (this.isEnabled) {\r\n this.formInstances = new FormInstanceManager(this._httpHelper);\r\n }\r\n }\r\n}\r\n\r\nexport default FormsApi;\r\n","/**\n * Manager class for form instance operations.\n *\n * All methods return a `Promise<string>` containing a JSON-encoded API response.\n * When parsed, the response has the shape:\n * ```json\n * {\n * \"meta\": { \"status\": 200, \"statusMsg\": \"OK\", \"errors\": [] },\n * \"data\": { ... }\n * }\n * ```\n * Check `meta.status` to determine success or failure before consuming `data`.\n */\nexport class FormInstanceManager {\n /**\n * @param {object} httpHelper - The HTTP helper instance used to make API requests.\n */\n constructor(httpHelper) {\n this._httpHelper = httpHelper;\n }\n\n /**\n * Creates a new form instance from a form template.\n * @param {object} params - URL parameters to include in the request.\n * @param {object} data - The form instance creation payload.\n * @param {string} data.formTemplateId - The Guid of the form template revision; overridden by the formTemplateRevisionId argument if provided.\n * @param {Array<{key: string, value: *, props?: Array<{key: string, value: string}>}>} data.fields - (Required) Form field values. Each item's key is the field name or its Guid; value is the field's value; props holds any extra key/value pairs to save alongside.\n * @param {string} [data.formName] - The DhDocId (display name) for the new form instance.\n * @param {string} [data.parentFormId] - Guid of the parent form instance (for child forms linked via a relation).\n * @param {string} [data.controlFormId] - Guid of the form control (e.g. RRC or Questions) associated with this instance.\n * @param {string} [data.offlineFormId] - Guid assigned to this form while offline; used when syncing offline forms.\n * @param {boolean} [data.ignoreWorkflow] - When true, skips workflow processing for this save.\n * @param {string} formTemplateRevisionId - The ID (Guid) of the form template revision to use; overrides any value in data.\n * @returns {Promise<string>} The API response containing the created form instance details.\n */\n async postForm(params, data, formTemplateRevisionId) {\n const resourceUri = this._httpHelper._config.ResourceUri.FormsApi.FormInstance;\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'POST' };\n\n data['formTemplateId'] = formTemplateRevisionId || data['formTemplateId'];\n\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n }\n\n /**\n * Submits a new revision for an existing form instance.\n * @param {object} params - URL parameters to include in the request.\n * @param {object} data - The form instance revision payload.\n * @param {string} data.formTemplateId - The Guid of the form template revision; overridden by the formTemplateRevisionId argument if provided.\n * @param {string} data.formId - The Guid of the existing form instance being revised; overridden by the formId argument if provided.\n * @param {Array<{key: string, value: *, props?: Array<{key: string, value: string}>}>} data.fields - (Required) Form field values. Each item's key is the field name or its Guid; value is the field's value; props holds any extra key/value pairs to save alongside.\n * @param {boolean} [data.replaceRevision] - When true, replaces the current revision instead of creating a new one.\n * @param {string} [data.formName] - The DhDocId (display name) for this revision.\n * @param {string} [data.parentFormId] - Guid of the parent form instance (for child forms linked via a relation).\n * @param {string} [data.controlFormId] - Guid of the form control (e.g. RRC or Questions) associated with this instance.\n * @param {string} [data.offlineFormId] - Guid assigned to this form while offline; used when syncing offline forms.\n * @param {boolean} [data.ignoreWorkflow] - When true, skips workflow processing for this save.\n * @param {string} formTemplateRevisionId - The ID (Guid) of the form template revision; overrides any value in data.\n * @param {string} formId - The ID (Guid) of the existing form instance to revise; overrides any value in data.\n * @returns {Promise<string>} The API response containing the updated form instance details.\n */\n async postFormRevision(params, data, formTemplateRevisionId, formId) {\n const resourceUri = this._httpHelper._config.ResourceUri.FormsApi.FormInstance;\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'PUT' };\n\n // only add these if provided. params could already have the value\n data['formTemplateId'] = formTemplateRevisionId || data['formTemplateId'];\n data['formId'] = formId || data['formId'];\n\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n }\n}\n\nexport default FormInstanceManager;\n","// Objects API\r\nimport common from './common.js';\r\nimport ModelManager from './objectsApi/modelManager.js';\r\nimport ObjectManager from './objectsApi/objectManager.js';\r\nimport yaml from 'js-yaml';\r\nimport fs from 'fs';\r\nimport { fileURLToPath } from 'url';\r\nimport path from 'path';\r\n\r\nconst __filename = fileURLToPath(import.meta.url);\r\nconst __dirname = path.dirname(__filename);\r\n\r\n/**\r\n * Entry point for the ObjectsApi service. Exposes `models` and `objects` managers when the service is enabled.\r\n * Access via `client.objectsApi` after authentication. Check `client.objectsApi.isEnabled` before use.\r\n */\r\nexport class ObjectsApi {\r\n /** @type {boolean} */ isEnabled;\r\n /** @type {string|null} */ baseUrl;\r\n /** @type {ModelManager} */ models;\r\n /** @type {ObjectManager} */ objects;\r\n\r\n /**\r\n * @param {object} sessionToken - JWT session token from authentication.\r\n * @param {object} objectsApiConfig - ObjectsApi configuration object returned by the VV configuration endpoint.\r\n */\r\n constructor(sessionToken, objectsApiConfig) {\r\n if(!sessionToken['tokenType'] && sessionToken['tokenType'] != 'jwt') {\r\n return;\r\n }\r\n\r\n const yamlConfig = yaml.load(fs.readFileSync(__dirname + '/config.yml', 'utf8'));\r\n this._httpHelper = new common.httpHelper(sessionToken, yamlConfig);\r\n\r\n this.isEnabled = objectsApiConfig['isEnabled'] || false;\r\n this.baseUrl = objectsApiConfig['apiUrl'] || null;\r\n\r\n if(this.isEnabled) {\r\n this.models = new ModelManager(this._httpHelper);\r\n this.objects = new ObjectManager(this._httpHelper);\r\n }\r\n }\r\n}\r\n\r\nexport default ObjectsApi;\r\n","/**\n * Manages model-related operations via the ObjectsApi.\n */\nexport class ModelManager {\n /**\n * @param {object} httpHelper - The HTTP helper instance used to make API requests.\n */\n constructor(httpHelper){\n this._httpHelper = httpHelper;\n }\n\n /**\n * Retrieves a list of available models.\n * @param {object} [params] - Optional URL parameters to include in the request.\n * @returns {Promise<object>} The API response containing the list of models.\n */\n async getModels(params) {\n const resourceUri = this._httpHelper._config.ResourceUri.ObjectsApi.Models;\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n\n params = params || {};\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n /**\n * Retrieves a specific model by its ID.\n * @param {string} modelId - The ID (Guid) for the requested model.\n * @param {object} [params] - Optional URL parameters to include in the request.\n * @returns {Promise<object>} The API response containing the model details.\n */\n async getModelById(modelId, params) {\n let resourceUri = this._httpHelper._config.ResourceUri.ObjectsApi.ModelById;\n resourceUri = resourceUri.replace('{id}', modelId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n\n params = params || {};\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n}\n\nexport default ModelManager;","/**\n * Manager class for object API operations.\n *\n * All methods return a `Promise<string>` containing a JSON-encoded API response.\n * When parsed, the response has the shape:\n * ```json\n * {\n * \"meta\": { \"status\": 200, \"statusMsg\": \"OK\", \"errors\": [] },\n * \"data\": { ... }\n * }\n * ```\n * Check `meta.status` to determine success or failure before consuming `data`.\n */\nexport class ObjectManager {\n /**\n * @param {object} httpHelper - The HTTP helper instance used to make API requests.\n */\n constructor(httpHelper){\n this._httpHelper = httpHelper;\n }\n\n /**\n * Retrieves a specific object by its ID.\n * @param {string} objectId - The ID (Guid) for the requested object.\n * @param {object} [params] - Optional URL parameters to include in the request.\n * @returns {Promise<string>} The API response containing the object details.\n */\n async getObject(objectId, params) {\n let resourceUri = this._httpHelper._config.ResourceUri.ObjectsApi.ObjectById;\n resourceUri = resourceUri.replace('{id}', objectId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n\n params = params || {};\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n /**\n * Retrieves a paged list of objects associated with a given model.\n * @param {string} modelId - The ID (Guid) for the requested model to search.\n * @param {object} data - The search payload.\n * @param {number} [data.page=0] - Zero-based page index for pagination.\n * @param {number} [data.take=10] - Number of results to return per page.\n * @param {Array<{sortField: string, direction: number}>} [data.sort] - Sort criteria; direction: 0=Ascending, 1=Descending.\n * @param {Array<{lookIn: string, clause: string, criteria: string, condition?: string, leftBracket?: boolean, rightBracket?: boolean}>} [data.criteriaList] - Filter criteria items. lookIn: property name or Guid. clause: 'IsEqual'|'NotEqual'|'GreaterThan'|'GreaterThanEqual'|'LessThan'|'LessThanEqual'|'BeginWith'|'NotBeginWith'|'EndWith'|'NotEndWith'|'Contain'|'NotContain'|'Null'|'NotNull'|'Between'|'NotBetween'|'In'|'NotIn'. criteria: value to compare. condition: 'AND'|'OR'. leftBracket/rightBracket: open/close a logical group.\n * @param {string[]} [data.propertyList] - Property names or Guids to include in results; empty array returns all properties.\n * @param {object} [params] - Optional URL parameters to include in the request.\n * @returns {Promise<string>} The API response containing the list of matching objects and pagination info.\n */\n async getObjectsByModelId(modelId, data, params) {\n let resourceUri = this._httpHelper._config.ResourceUri.ObjectsApi.ObjectSearchByModelId;\n resourceUri = resourceUri.replace('{modelId}', modelId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'POST' };\n\n data = data || {};\n params = params || {};\n\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n }\n\n /**\n * Creates a new object adhering to a given model.\n * @param {string} modelId - The ID (Guid) used to create a new object for that model; overrides any value in data.\n * @param {object} data - The object creation payload.\n * @param {string} data.modelId - The Guid of the model this object belongs to; overridden by the modelId argument.\n * @param {object} [data.properties] - Key/value pairs for object property values, keyed by property name or Guid.\n * @param {Array<{id: string, revisionId: string, properties: object, relatedObjectUpdates?: Array}>} [data.relatedModels] - Related object instances to create or link alongside this object.\n * @param {object} [params] - Optional URL parameters to include in the request.\n * @returns {Promise<string>} The API response containing the created object details.\n */\n async createObject(modelId, data, params) {\n const resourceUri = this._httpHelper._config.ResourceUri.ObjectsApi.Object;\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'POST' };\n\n // @ts-ignore\n data = data || {};\n params = params || {};\n\n data['modelId'] = modelId || data['modelId'];\n\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n }\n\n /**\n * Updates an existing object by its ID and revision ID.\n * @param {string} objectId - The ID (Guid) for the requested object to update.\n * @param {string} objectRevisionId - The revision ID (Guid) for the requested object to update; overrides any value in data.\n * @param {object} data - The object update payload.\n * @param {string} data.revisionId - The revision Guid to update; overridden by the objectRevisionId argument.\n * @param {object} [data.properties] - Key/value pairs for the updated object property values, keyed by property name or Guid.\n * @param {Array<{id: string, revisionId: string, properties: object, relatedObjectUpdates?: Array}>} [data.relatedObjectUpdates] - Related object instances to update alongside this object.\n * @param {object} [params] - Optional URL parameters to include in the request.\n * @returns {Promise<string>} The API response confirming the object update.\n */\n async updateObject(objectId, objectRevisionId, data, params) {\n let resourceUri = this._httpHelper._config.ResourceUri.ObjectsApi.ObjectById;\n resourceUri = resourceUri.replace('{id}', objectId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'PUT' };\n\n // @ts-ignore\n data = data || {};\n params = params || {};\n\n data['revisionId'] = objectRevisionId || data['revisionId'];\n\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n }\n\n /**\n * Deletes an existing object by its ID.\n * @param {string} objectId - The ID (Guid) for the requested object to delete.\n * @param {object} [params] - Optional URL parameters to include in the request.\n * @returns {Promise<string>} The API response confirming the object deletion.\n */\n async deleteObject(objectId, params) {\n let resourceUri = this._httpHelper._config.ResourceUri.ObjectsApi.ObjectById;\n resourceUri = resourceUri.replace('{id}', objectId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'DELETE' };\n\n params = params || {};\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n}\n\nexport default ObjectManager;","// Studio API\r\nimport common from './common.js';\r\nimport WorkflowManager from './studioApi/workflowManager.js';\r\nimport RolesAndPermissionsManager from './studioApi/rolesAndPermissionsManager.js';\r\nimport yaml from 'js-yaml';\r\nimport fs from 'fs';\r\nimport { fileURLToPath } from 'url';\r\nimport path from 'path';\r\n\r\nconst __filename = fileURLToPath(import.meta.url);\r\nconst __dirname = path.dirname(__filename);\r\n\r\n/**\r\n * Entry point for the StudioApi service. Exposes `workflow` and `permissions` managers when the service is enabled.\r\n * Access via `client.studioApi` after authentication. Check `client.studioApi.isEnabled` before use.\r\n */\r\nexport class StudioApi {\r\n /** @type {boolean} */ isEnabled;\r\n /** @type {string|null} */ baseUrl;\r\n /** @type {WorkflowManager} */ workflow;\r\n /** @type {RolesAndPermissionsManager} */ permissions;\r\n\r\n /**\r\n * @param {object} sessionToken - JWT session token from authentication.\r\n * @param {object} studioApiConfig - StudioApi configuration object returned by the VV configuration endpoint.\r\n */\r\n constructor(sessionToken, studioApiConfig){\r\n if(!sessionToken['tokenType'] && sessionToken['tokenType'] != 'jwt'){\r\n return;\r\n }\r\n\r\n const yamlConfig = yaml.load(fs.readFileSync(__dirname + '/config.yml', 'utf8'));\r\n this._httpHelper = new common.httpHelper(sessionToken, yamlConfig);\r\n\r\n this.isEnabled = studioApiConfig['isEnabled'] || false;\r\n this.baseUrl = studioApiConfig['studioApiUrl'] || null;\r\n\r\n if(this.isEnabled){\r\n this.workflow = new WorkflowManager(this._httpHelper);\r\n this.permissions = new RolesAndPermissionsManager(this._httpHelper);\r\n }\r\n }\r\n}\r\n\r\nexport default StudioApi;\r\n","/**\n * Manages workflow operations via the StudioApi.\n */\nexport class WorkflowManager {\n /**\n * @param {object} httpHelper - The HTTP helper instance used to make API requests.\n */\n constructor(httpHelper){\n this._httpHelper = httpHelper;\n }\n\n /**\n * Retrieves the latest published version of a workflow by its ID.\n * @param {string} workflowId - The ID (Guid) of the workflow to retrieve.\n * @returns {Promise<object>} The API response containing the workflow details.\n */\n async getWorkflow(workflowId){\n const resourceUri = this._httpHelper._config.ResourceUri.StudioApi.WorkflowLatestPublishedId.replace('{id}', workflowId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n const data = {};\n const params = {};\n\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n }\n\n /**\n * Retrieves the latest published version of a workflow by its name.\n * @param {string} workflowName - The name of the workflow to retrieve.\n * @returns {Promise<object>} The API response containing the workflow details.\n */\n async getWorkflowByName(workflowName){\n const resourceUri = this._httpHelper._config.ResourceUri.StudioApi.WorkflowLatestPublished;\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n const data = {};\n const params = { name: workflowName };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n }\n\n /**\n * Retrieves the variables defined for a specific workflow.\n * @param {object} [params] - Optional URL parameters to include in the request.\n * @param {string} workflowId - The ID (Guid) of the workflow whose variables to retrieve.\n * @returns {Promise<object>} The API response containing the list of workflow variables.\n */\n async getWorkflowVariables(params, workflowId){\n const resourceUri = this._httpHelper._config.ResourceUri.StudioApi.WorkflowVariables.replace('{id}', workflowId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n const data = {};\n params = params || {};\n\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n }\n\n /**\n * Triggers a workflow run for a specific object.\n * @param {string} workflowId - The ID (Guid) of the workflow to trigger.\n * @param {number} workflowRevision - The revision number of the workflow to run.\n * @param {string} objectId - The ID (Guid) of the object to run the workflow against.\n * @param {object[]} workflowVariables - Workflow variable values to pass into the workflow.\n * @param {string} workflowVariables[].name - The name of the variable.\n * @param {*} workflowVariables[].value - The value to pass for the variable.\n * @param {number} workflowVariables[].dataType - The data type: Text: 1, Number: 2, Date: 3, Boolean: 4.\n * @returns {Promise<object>} The API response containing the triggered workflow instance details.\n */\n async triggerWorkflow(workflowId, workflowRevision, objectId, workflowVariables){\n const resourceUri = this._httpHelper._config.ResourceUri.StudioApi.WorkflowRun.replace('{id}', workflowId).replace('{revision}', workflowRevision);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'POST' };\n const data = {\n objectId,\n reference: 'API',\n data: {\n workflowVariables,\n dataSetVariables: []\n }\n };\n const params = {};\n\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n }\n\n /**\n * Terminates a running workflow instance.\n * @param {string} workflowId - The ID (Guid) of the workflow containing the instance to terminate.\n * @param {string} instanceId - The ID (Guid) of the workflow instance to terminate.\n * @returns {Promise<object>} The API response confirming the workflow instance was terminated.\n */\n async terminateWorkflow(workflowId, instanceId){\n const resourceUri = this._httpHelper._config.ResourceUri.StudioApi.WorkflowTerminate.replace('{workflowId}', workflowId).replace('{instanceId}', instanceId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'POST' };\n const data = {};\n const params = {};\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n }\n\n /**\n * Returns the workflow execution history for an object under the provided workflow.\n * @param {string} objectId - The ID (Guid) of the object whose workflow history to retrieve.\n * @param {string} workflowId - The ID (Guid) of the workflow to query history for.\n * @returns {Promise<object>} The API response containing the workflow history entries for the object.\n */\n async GetWorkflowHistoryForObject(objectId, workflowId){\n const resourceUri = this._httpHelper._config.ResourceUri.StudioApi.WorkflowHistoryObject.replace('{workflowId}', workflowId).replace('{objectId}', objectId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n const data = {};\n const params = {};\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n }\n\n /**\n * Returns the currently running workflow instance, if any, for an object under the provided workflow.\n * @param {string} objectId - The ID (Guid) of the object to check for a running workflow.\n * @param {string} workflowId - The ID (Guid) of the workflow to query.\n * @returns {Promise<object>} The API response containing the running workflow instance, or empty if none is active.\n */\n async GetRunningWorkflowForObject(objectId, workflowId){\n const resourceUri = this._httpHelper._config.ResourceUri.StudioApi.WorkflowHistoryRunningObject.replace('{workflowId}', workflowId).replace('{objectId}', objectId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n const data = {};\n const params = {};\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n }\n}\n\nexport default WorkflowManager;\n","/**\r\n * Manages roles and permissions operations via the StudioApi.\r\n */\r\nexport class RolesAndPermissionsManager {\r\n /**\r\n * @param {object} httpHelper - The HTTP helper instance used to make API requests.\r\n */\r\n constructor(httpHelper) {\r\n this._httpHelper = httpHelper;\r\n }\r\n\r\n /**\r\n * Retrieves available features for the requesting user.\r\n * @param {object} [params] - Optional URL parameters to include in the request.\r\n * @returns {Promise<object>} The API response containing the list of features available to the user.\r\n */\r\n async getUserFeatures(params) {\r\n var resourceUri = this._httpHelper._config.ResourceUri.StudioApi.ResourceUserFeatures;\r\n var url = this._httpHelper.getUrl(resourceUri);\r\n var opts = { method: 'GET' };\r\n var data = {};\r\n params = params || {};\r\n\r\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\r\n }\r\n}\r\n\r\nexport default RolesAndPermissionsManager;","// Notifications API\r\nimport common from './common.js';\r\nimport UserNotificationsManager from './notificationsApi/userNotificationsManager.js';\r\nimport yaml from 'js-yaml';\r\nimport fs from 'fs';\r\nimport { fileURLToPath } from 'url';\r\nimport path from 'path';\r\n\r\nconst __filename = fileURLToPath(import.meta.url);\r\nconst __dirname = path.dirname(__filename);\r\n\r\n/**\r\n * Entry point for the NotificationsApi service. Exposes the `users` manager when the service is enabled.\r\n * Access via `client.notificationsApi` after authentication. Check `client.notificationsApi.isEnabled` before use.\r\n */\r\nexport class NotificationsApi {\r\n /** @type {boolean} */ isEnabled;\r\n /** @type {string|null} */ baseUrl;\r\n /** @type {UserNotificationsManager} */ users;\r\n\r\n /**\r\n * @param {object} sessionToken - JWT session token from authentication.\r\n * @param {object} notificationsApiConfig - NotificationsApi configuration object returned by the VV configuration endpoint.\r\n */\r\n constructor(sessionToken, notificationsApiConfig) {\r\n if(!sessionToken['tokenType'] && sessionToken['tokenType'] != 'jwt'){\r\n return;\r\n }\r\n\r\n const yamlConfig = yaml.load(fs.readFileSync(__dirname + '/config.yml', 'utf8'));\r\n this._httpHelper = new common.httpHelper(sessionToken, yamlConfig);\r\n\r\n this.isEnabled = notificationsApiConfig['isEnabled'] || false;\r\n this.baseUrl = notificationsApiConfig['apiUrl'] || null;\r\n\r\n if (this.isEnabled) {\r\n this.users = new UserNotificationsManager(this._httpHelper);\r\n }\r\n }\r\n}\r\n\r\nexport default NotificationsApi;\r\n","/**\n * Manages user notification operations via the NotificationsApi.\n */\nexport class UserNotificationsManager {\n /**\n * @param {object} httpHelper - The HTTP helper instance used to make API requests.\n */\n constructor (httpHelper) {\n this._httpHelper = httpHelper;\n }\n\n /**\n * Forces a UI refresh notification for a specific user.\n * @param {string} userGuid - The ID (Guid) of the user whose UI should be refreshed.\n * @returns {Promise<object>} The API response confirming the refresh notification was sent.\n */\n async forceUIRefresh(userGuid) {\n const resourceUri = this._httpHelper._config.ResourceUri.NotificationsApi.ForceUIRefresh.replace('{id}', userGuid);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'POST' };\n const params = {};\n const data = {};\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n }\n}\n\nexport default UserNotificationsManager;\n","export class Constants {\n constructor() {\n // Empty constructor - properties are defined as instance properties\n }\n\n alertEventIds = {\n // Folder Events\n folderSecurityModified: \"F06FD123-2C52-4F43-9122-34335A5BD8C6\", // \"CategorySecurity\"\n childFolderSecurityModified: \"30167D46-86CF-4E89-B1AE-FC00BB378F67\", // \"CategorySecurityCascade\"\n folderDocumentAdded: \"3702CFBF-555C-4032-BFB2-E25829788BAC\", // \"NewCategoryDoc\"\n childFolderDocumentAdded: \"28946E3C-AEAF-402B-BCE3-8DEAC3D19877\", // \"NewCategoryDocCascade\"\n\n // Document Events\n documentCheckedIn: \"D47804AB-AEE9-4002-BAB5-9F1AC0366076\", // \"CheckIn\"\n documentCheckedOut: \"4BBA55C1-7AF6-48FF-BFBE-EC7A58EB7F01\", // \"CheckOut\"\n documentDetailsModified: \"3B9D493F-2B45-4877-ABC1-5CA74F92723D\", // \"DocumentDetails\"\n documentSecurityModified: \"BAC187DC-78A8-4A8B-B50F-DB5D5AEE11B9\", // \"DocumentSecurity\"\n documentViewed: \"140B9E97-8D93-48D0-837B-AB4FD419B6D6\", // \"DocumentViewed\"\n\n // Project Events\n projectDocumentAddedOrRemoved: \"300DB724-5C51-4C38-B2E2-FFE19634A373\", // \"NewProjectDoc\"\n projectViewed: \"92F0C5F4-68DC-4309-9ABF-13B8E2198F79\" // \"ProjectView\"\n };\n\n securityRoles = {\n // RoleType\n Owner: \"Owner\",\n Editor: \"Editor\",\n Viewer: \"Viewer\"\n };\n\n securityMemberType = {\n // MemberType\n User: \"User\",\n Group: \"Group\"\n };\n\n relationType = {\n Parent: \"Parent\",\n Child: \"Child\",\n Peer: \"Peer\"\n };\n}\n\nexport default Constants;\n","/**\n * Manages API configuration retrieval for each VisualVault service.\n */\nexport class ConfigurationManager {\n /**\n * @param {object} httpHelper - The HTTP helper instance used to make API requests.\n */\n constructor(httpHelper) {\n this._httpHelper = httpHelper;\n }\n\n /**\n * Retrieves the configuration settings for the DocApi service.\n * @returns {Promise<string>} JSON string containing the DocApi configuration.\n */\n getDocApiConfig() {\n const url = this._httpHelper.getUrl(this._httpHelper._config.ResourceUri.ConfigurationDocApi);\n const opts = { method: 'GET' };\n const params = {};\n const data = {};\n\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n }\n\n /**\n * Retrieves the configuration settings for the FormsApi service.\n * @returns {Promise<string>} JSON string containing the FormsApi configuration.\n */\n getFormsApiConfig() {\n const url = this._httpHelper.getUrl(this._httpHelper._config.ResourceUri.ConfigurationFormsApi);\n const opts = { method: 'GET' };\n const params = {};\n const data = {};\n\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n }\n\n /**\n * Retrieves the configuration settings for the ObjectsApi service.\n * @returns {Promise<string>} JSON string containing the ObjectsApi configuration.\n */\n getObjectsApiConfig() {\n const url = this._httpHelper.getUrl(this._httpHelper._config.ResourceUri.ConfigurationObjectsApi);\n const opts = { method: 'GET' };\n const params = {};\n const data = {};\n\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n }\n\n /**\n * Retrieves the configuration settings for the StudioApi service.\n * @returns {Promise<string>} JSON string containing the StudioApi configuration.\n */\n getStudioApiConfig() {\n const url = this._httpHelper.getUrl(this._httpHelper._config.ResourceUri.ConfigurationStudioApi);\n const opts = { method: 'GET' };\n const params = {};\n const data = {};\n\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n }\n\n /**\n * Retrieves the configuration settings for the NotificationsApi service.\n * @returns {Promise<string>} JSON string containing the NotificationsApi configuration.\n */\n getNotificationsApiConfig() {\n const url = this._httpHelper.getUrl(this._httpHelper._config.ResourceUri.ConfigurationNotificationApi);\n const opts = { method: 'GET' };\n const params = {};\n const data = {};\n\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n }\n}\n\nexport default ConfigurationManager;\n","/**\n * Manages email sending operations via the VVRestApi.\n */\nexport class EmailManager {\n /**\n * @param {object} httpHelper - The HTTP helper instance used to make API requests.\n */\n constructor(httpHelper) {\n this._httpHelper = httpHelper;\n }\n\n /**\n * Sends one or more emails.\n * @param {object} params - URL parameters to include in the request.\n * @param {object} data - The email data to submit in the request body.\n * @param {string} data.recipients - The recipient email address(es).\n * @param {string} data.body - The email body content.\n * @param {string} [data.ccRecipients] - CC recipient email address(es).\n * @param {string} [data.bccRecipients] - BCC recipient email address(es).\n * @param {string} [data.subject] - The email subject line.\n * @param {boolean} [data.hasAttachments] - Whether the email includes document attachments.\n * @param {string|string[]} [data.documents] - One or more document IDs (Guids) to attach. Used when hasAttachments is true.\n * @returns {Promise<string>} The API response confirming the emails were sent.\n */\n postEmails(params, data) {\n const url = this._httpHelper.getUrl(this._httpHelper._config.ResourceUri.Emails);\n const opts = { method: 'POST' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n }\n\n /**\n * Sends one or more emails with file attachments.\n * @param {object} params - URL parameters to include in the request.\n * @param {object} data - The email data to submit in the request body.\n * @param {string} data.recipients - The recipient email address(es).\n * @param {string} data.body - The email body content.\n * @param {string} [data.ccRecipients] - CC recipient email address(es).\n * @param {string} [data.bccRecipients] - BCC recipient email address(es).\n * @param {string} [data.subject] - The email subject line.\n * @param {boolean} [data.hasAttachments] - Whether the email includes document attachments.\n * @param {string|string[]} [data.documents] - One or more document IDs (Guids) to attach alongside the direct file uploads.\n * @param {object[]} fileObjs - Array of file objects to attach directly to the email.\n * @returns {Promise<string>} The API response confirming the emails were sent.\n */\n postEmailsWithAttachments(params, data, fileObjs) {\n const url = this._httpHelper.getUrl(this._httpHelper._config.ResourceUri.Emails);\n const opts = { method: 'POSTSTREAM' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, data, fileObjs);\n }\n}\n\nexport default EmailManager;\n","import createDebug from 'debug';\n\nconst debug = createDebug('visualvault:forms');\n\n/**\n * Helper class for form field return values\n */\nexport class ReturnField {\n /** @type {string} */ id;\n /** @type {string} */ name;\n /** @type {*} */ value;\n /** @type {boolean} */ isError;\n /** @type {string} */ errorMessage;\n\n /**\n * @param {string} id - Field ID\n * @param {string} name - Field name\n * @param {*} value - Field value\n * @param {boolean} isError - Whether field has an error\n * @param {string} errorMessage - Error message if any\n */\n constructor(id, name, value, isError, errorMessage) {\n this.id = id;\n this.name = name;\n this.value = value;\n this.isError = isError;\n this.errorMessage = errorMessage;\n }\n}\n\n/**\n * Helper class for managing form field collections\n */\nexport class FormFieldCollection {\n /**\n * @param {Array<*>} ffColl - Array of form fields\n */\n constructor(ffColl) {\n this._ffColl = ffColl;\n }\n\n /**\n * Get a form field by name\n * @param {string} name - Field name to search for\n * @returns {*} The field or null if not found\n */\n getFormFieldByName(name) {\n const fieldName = name.toLowerCase();\n return this._ffColl.find(field =>\n field.name.toLowerCase() === fieldName\n ) || null;\n }\n\n /**\n * Get a form field by ID\n * @param {string} id - Field ID to search for\n * @returns {*} The field or null if not found\n */\n getFormFieldById(id) {\n const fieldId = id.toLowerCase();\n return this._ffColl.find(field =>\n field.id.toLowerCase() === fieldId\n ) || null;\n }\n\n /**\n * Get the array of all form fields\n * @returns {Array<*>} Array of form fields\n */\n getFieldArray() {\n return this._ffColl;\n }\n}\n\n/**\n * Manager class for Forms operations.\n *\n * All methods return a `Promise<string>` containing a JSON-encoded API response.\n * When parsed, the response has the shape:\n * ```json\n * {\n * \"meta\": { \"status\": 200, \"statusMsg\": \"OK\", \"errors\": [] },\n * \"data\": { ... }\n * }\n * ```\n * Check `meta.status` to determine success or failure before consuming `data`.\n */\nexport class FormsManager {\n /**\n * @param {object} httpHelper - HTTP helper instance\n */\n constructor(httpHelper) {\n this._httpHelper = httpHelper;\n }\n\n /**\n * Creates a ReturnField instance representing a form field value or error.\n * @param {string} id - The field ID.\n * @param {string} name - The field name.\n * @param {*} value - The field value.\n * @param {boolean} isError - Whether the field has an error.\n * @param {string} errorMessage - The error message if isError is true.\n * @returns {ReturnField} A new ReturnField instance.\n */\n returnField(id, name, value, isError, errorMessage) {\n return new ReturnField(id, name, value, isError, errorMessage);\n }\n\n /**\n * Retrieves available form templates in the vault.\n * @param {object} params - Optional query parameters for filtering and pagination.\n * @returns {Promise<string>} The API response containing the form templates.\n */\n getFormTemplates(params) {\n const url = this._httpHelper.getUrl(this._httpHelper._config.ResourceUri.FormTemplates);\n const opts = { method: 'GET' };\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n /**\n * Looks up the GUID and revision GUID for a form template by its display name.\n * @param {string} templateName - The display name of the form template.\n * @returns {Promise<{formsManager: FormsManager, templateIdGuid: string, templateRevisionIdGuid: string, error?: string}>} A promise that resolves with the template IDs, or an error property if the lookup fails.\n */\n async getFormTemplateIdByName(templateName) {\n const params = {\n fields: \"id, name, description, revision, revisionId\",\n q: `name eq '${templateName}'`\n };\n\n const url = this._httpHelper.getUrl(this._httpHelper._config.ResourceUri.FormTemplates);\n const opts = { method: 'GET' };\n\n try {\n const resp = await this._httpHelper.doVvClientRequest(url, opts, params, null);\n const templateResp = JSON.parse(resp);\n\n let templateId;\n let templateRevisionId;\n\n if (templateResp.data && templateResp.data.length > 0) {\n templateId = templateResp.data[0].id;\n templateRevisionId = templateResp.data[0].revisionId;\n }\n\n return {\n formsManager: this,\n templateIdGuid: templateId,\n templateRevisionIdGuid: templateRevisionId\n };\n } catch (error) {\n debug('Failed to get form template by name \"%s\": %s', templateName, error.message);\n\n return {\n formsManager: this,\n templateIdGuid: '',\n templateRevisionIdGuid: '',\n error: error.message\n };\n }\n }\n\n /**\n * Retrieves form instances for a given form template. Accepts either a template GUID or template name.\n * @param {object} params - Optional query parameters for filtering and pagination.\n * @param {string} formTemplateId - The form template GUID or display name.\n * @returns {Promise<string>} The API response containing the form instances.\n */\n async getForms(params, formTemplateId) {\n // If formTemplateId is not a Guid assume it's a template name and fetch the Guid\n if (!this.isGuid(formTemplateId)) {\n const resp = await this.getFormTemplateIdByName(formTemplateId);\n const templateIdGuid = resp.templateIdGuid;\n const resourceUri = this._httpHelper._config.ResourceUri.Forms.replace('{id}', templateIdGuid);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n } else {\n const resourceUri = this._httpHelper._config.ResourceUri.Forms.replace('{id}', formTemplateId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n }\n\n /**\n * Sets an image field on a form instance.\n * @param {string} formId - The ID of the form instance.\n * @param {string} fieldId - The ID of the image field to set.\n * @param {string} imageId - The ID of the image to assign to the field.\n * @returns {Promise<string>} The API response confirming the update.\n */\n setFieldImage(formId, fieldId, imageId) {\n const resourceUri = this._httpHelper._config.ResourceUri.FormInstanceImage.replace('{id}', formId);\n const url = this._httpHelper.getUrl(resourceUri);\n\n const data = { fieldId, imageId };\n const params = { fieldId, imageId };\n const opts = { method: 'PUT' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n }\n\n /**\n * Imports a form template from a file stream.\n * @param {object} data - Multipart metadata sent alongside the file stream.\n * @param {string} formTemplateId - The ID of the form template to import into.\n * @param {Uint8Array} buffer - The file content of the form template to import.\n * @returns {Promise<string>} The API response confirming the import.\n */\n importFormTemplate(data, formTemplateId, buffer) {\n const resourceUri = this._httpHelper._config.ResourceUri.FormTemplatesImport.replace('{id}', formTemplateId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'PUTSTREAM' };\n\n return this._httpHelper.doVvClientRequest(url, opts, null, data, buffer);\n }\n\n /**\n * Creates a new form instance for a given template. Accepts either a template GUID or template name.\n * @param {object} params - Optional query parameters.\n * @param {{[key: string]: string}} data - Form field key-value pairs where each key is a field name or Guid ID and each value is the field's string value.\n * @param {string} formTemplateId - The form template GUID or display name.\n * @returns {Promise<string>} The API response containing the created form instance.\n */\n async postForms(params, data, formTemplateId) {\n // If formTemplateId is not a Guid assume it's a template name and fetch the Guid\n if (!this.isGuid(formTemplateId)) {\n const resp = await this.getFormTemplateIdByName(formTemplateId);\n const templateIdGuid = resp.templateIdGuid;\n const resourceUri = this._httpHelper._config.ResourceUri.Forms.replace('{id}', templateIdGuid);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'POST' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n } else {\n const resourceUri = this._httpHelper._config.ResourceUri.Forms.replace('{id}', formTemplateId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'POST' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n }\n }\n\n /**\n * Creates a new revision of an existing form instance. Accepts either a template GUID or template name.\n * @param {object} params - Optional query parameters.\n * @param {{[key: string]: string}} data - Form field key-value pairs where each key is a field name or Guid ID and each value is the field's string value.\n * @param {string} formTemplateId - The form template GUID or display name.\n * @param {string} formId - The ID of the existing form instance to revise.\n * @returns {Promise<string>} The API response containing the new form revision.\n */\n async postFormRevision(params, data, formTemplateId, formId) {\n // If formTemplateId is not a Guid assume it's a template name and fetch the Guid\n if (!this.isGuid(formTemplateId)) {\n const resp = await this.getFormTemplateIdByName(formTemplateId);\n const templateIdGuid = resp.templateIdGuid;\n const resourceUri = this._httpHelper._config.ResourceUri.Forms.replace('{id}', templateIdGuid);\n const url = this._httpHelper.getUrl(resourceUri + '/' + formId);\n const opts = { method: 'POST' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n } else {\n const resourceUri = this._httpHelper._config.ResourceUri.Forms.replace('{id}', formTemplateId);\n const url = this._httpHelper.getUrl(resourceUri + '/' + formId);\n const opts = { method: 'POST' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n }\n }\n\n /**\n * Creates a new revision of a form instance identified directly by its form ID.\n * @param {object} params - Optional query parameters.\n * @param {{[key: string]: string}} data - Form field key-value pairs where each key is a field name or Guid ID and each value is the field's string value.\n * @param {string} formId - The ID of the form instance to revise.\n * @returns {Promise<string>} The API response containing the new form revision.\n */\n postFormRevisionByFormId(params, data, formId) {\n const url = this._httpHelper.getUrl(this._httpHelper._config.ResourceUri.FormsId).replace('{id}', formId);\n const opts = { method: 'POST' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n }\n\n /**\n * Updates the originator (owner) of a form instance.\n * @param {string} formInstanceId - The ID of the form instance to update.\n * @param {string} newOriginatorUsID - The user ID of the new originator.\n * @returns {Promise<string>} The API response confirming the update.\n */\n updateFormInstanceOriginator(formInstanceId, newOriginatorUsID) {\n const resourceUri = this._httpHelper._config.ResourceUri.FormInstanceUpdateOriginator.replace('{id}', formInstanceId);\n const url = this._httpHelper.getUrl(resourceUri);\n\n const params = { userId: newOriginatorUsID };\n const data = null;\n const opts = { method: \"PUT\" };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n }\n\n /**\n * Relates a form instance to another form instance by form ID.\n * @param {string} formId - The ID of the source form instance.\n * @param {string} relateToId - The ID of the form instance to relate to.\n * @returns {Promise<string>} The API response confirming the relation.\n */\n relateForm(formId, relateToId) {\n const resourceUri = this._httpHelper._config.ResourceUri.FormInstance.replace('{id}', formId);\n const url = this._httpHelper.getUrl(resourceUri + '/relateForm');\n\n const params = { relateToId };\n const data = null;\n const opts = { method: 'PUT' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n }\n\n /**\n * Relates a form instance to another form instance by document ID.\n * @param {string} formId - The ID of the source form instance.\n * @param {string} relateToDocId - The document ID of the form instance to relate to.\n * @returns {Promise<string>} The API response confirming the relation.\n */\n relateFormByDocId(formId, relateToDocId) {\n const resourceUri = this._httpHelper._config.ResourceUri.FormInstance.replace('{id}', formId);\n const url = this._httpHelper.getUrl(resourceUri + '/relateForm');\n\n const params = { relateToDocId };\n const data = null;\n const opts = { method: 'PUT' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n }\n\n /**\n * Relates a form instance to a document by document revision ID.\n * @param {string} formId - The ID of the form instance.\n * @param {string} relateToId - The revision ID of the document to relate to.\n * @returns {Promise<string>} The API response confirming the relation.\n */\n relateDocument(formId, relateToId) {\n const resourceUri = this._httpHelper._config.ResourceUri.FormInstance.replace('{id}', formId);\n const url = this._httpHelper.getUrl(resourceUri + '/relateDocument');\n\n const params = { relateToId };\n const data = null;\n const opts = { method: 'PUT' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n }\n\n /**\n * Relates a form instance to a document by document ID.\n * @param {string} formId - The ID of the form instance.\n * @param {string} relateToDocId - The document ID to relate to.\n * @returns {Promise<string>} The API response confirming the relation.\n */\n relateDocumentByDocId(formId, relateToDocId) {\n const resourceUri = this._httpHelper._config.ResourceUri.FormInstance.replace('{id}', formId);\n const url = this._httpHelper.getUrl(resourceUri + '/relateDocument');\n\n const params = { relateToDocId };\n const data = null;\n const opts = { method: 'PUT' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n }\n\n /**\n * Relates a form instance to a project by project ID.\n * @param {string} formId - The ID of the form instance.\n * @param {string} relateToId - The ID of the project to relate to.\n * @returns {Promise<string>} The API response confirming the relation.\n */\n relateProject(formId, relateToId) {\n const resourceUri = this._httpHelper._config.ResourceUri.FormInstance.replace('{id}', formId);\n const url = this._httpHelper.getUrl(resourceUri + '/relateProject');\n\n const params = { relateToId };\n const data = null;\n const opts = { method: 'PUT' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n }\n\n /**\n * Relates a form instance to a project by project name.\n * @param {string} formId - The ID of the form instance.\n * @param {string} relateToProjectName - The name of the project to relate to.\n * @returns {Promise<string>} The API response confirming the relation.\n */\n relateProjectByName(formId, relateToProjectName) {\n const resourceUri = this._httpHelper._config.ResourceUri.FormInstance.replace('{id}', formId);\n const url = this._httpHelper.getUrl(resourceUri + '/relateProject');\n\n const params = { relateToProjectName };\n const data = null;\n const opts = { method: 'PUT' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n }\n\n /**\n * Removes a relationship between two form instances by form ID.\n * @param {string} formId - The ID of the source form instance.\n * @param {string} relateToId - The ID of the related form instance to unrelate.\n * @returns {Promise<string>} The API response confirming the unrelation.\n */\n unrelateForm(formId, relateToId) {\n const resourceUri = this._httpHelper._config.ResourceUri.FormInstance.replace('{id}', formId);\n const url = this._httpHelper.getUrl(resourceUri + '/unrelateForm');\n\n const params = { relateToId };\n const data = null;\n const opts = { method: 'PUT' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n }\n\n /**\n * Removes a relationship between two form instances by document ID.\n * @param {string} formId - The ID of the source form instance.\n * @param {string} relateToDocId - The document ID of the related form instance to unrelate.\n * @returns {Promise<string>} The API response confirming the unrelation.\n */\n unrelateFormByDocId(formId, relateToDocId) {\n const resourceUri = this._httpHelper._config.ResourceUri.FormInstance.replace('{id}', formId);\n const url = this._httpHelper.getUrl(resourceUri + '/unrelateForm');\n\n const params = { relateToDocId };\n const data = null;\n const opts = { method: 'PUT' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n }\n\n /**\n * Removes a relationship between a form instance and a document by document revision ID.\n * @param {string} formId - The ID of the form instance.\n * @param {string} relateToId - The revision ID of the related document to unrelate.\n * @returns {Promise<string>} The API response confirming the unrelation.\n */\n unrelateDocument(formId, relateToId) {\n const resourceUri = this._httpHelper._config.ResourceUri.FormInstance.replace('{id}', formId);\n const url = this._httpHelper.getUrl(resourceUri + '/unrelateDocument');\n\n const params = { relateToId };\n const data = null;\n const opts = { method: 'PUT' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n }\n\n /**\n * Removes a relationship between a form instance and a document by document ID.\n * @param {string} formId - The ID of the form instance.\n * @param {string} relateToDocId - The document ID of the related document to unrelate.\n * @returns {Promise<string>} The API response confirming the unrelation.\n */\n unrelateDocumentByDocId(formId, relateToDocId) {\n const resourceUri = this._httpHelper._config.ResourceUri.FormInstance.replace('{id}', formId);\n const url = this._httpHelper.getUrl(resourceUri + '/unrelateDocument');\n\n const params = { relateToDocId };\n const data = null;\n const opts = { method: 'PUT' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n }\n\n /**\n * Removes a relationship between a form instance and a project by project ID.\n * @param {string} formId - The ID of the form instance.\n * @param {string} relateToId - The ID of the related project to unrelate.\n * @returns {Promise<string>} The API response confirming the unrelation.\n */\n unrelateProject(formId, relateToId) {\n const resourceUri = this._httpHelper._config.ResourceUri.FormInstance.replace('{id}', formId);\n const url = this._httpHelper.getUrl(resourceUri + '/unrelateProject');\n\n const params = { relateToId };\n const data = null;\n const opts = { method: 'PUT' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n }\n\n /**\n * Removes a relationship between a form instance and a project by project name.\n * @param {string} formId - The ID of the form instance.\n * @param {string} relateToProjectName - The name of the related project to unrelate.\n * @returns {Promise<string>} The API response confirming the unrelation.\n */\n unrelateProjectByName(formId, relateToProjectName) {\n const resourceUri = this._httpHelper._config.ResourceUri.FormInstance.replace('{id}', formId);\n const url = this._httpHelper.getUrl(resourceUri + '/unrelateProject');\n\n const params = { relateToProjectName };\n const data = null;\n const opts = { method: 'PUT' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n }\n\n /**\n * Retrieves documents related to a form instance.\n * @param {string} formId - The ID of the form instance.\n * @param {object} [params] - Optional query parameters for filtering and pagination.\n * @returns {Promise<string>} The API response containing the related documents.\n */\n getFormRelatedDocs(formId, params) {\n const resourceUri = this._httpHelper._config.ResourceUri.FormInstanceRelatedDocs.replace('{id}', formId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n\n if (params === undefined) {\n params = null;\n }\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n /**\n * Retrieves form instances related to a given form instance.\n * @param {string} formId - The ID of the form instance.\n * @param {object} [params] - Optional query parameters for filtering and pagination.\n * @returns {Promise<string>} The API response containing the related form instances.\n */\n getFormRelatedForms(formId, params) {\n const resourceUri = this._httpHelper._config.ResourceUri.FormInstanceRelatedForms.replace('{id}', formId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n\n if (params === undefined) {\n params = null;\n }\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n /**\n * Tests whether a string is a valid GUID.\n * @param {string} stringToTest - The string to test.\n * @returns {boolean} True if the string is a valid GUID, false otherwise.\n */\n isGuid(stringToTest) {\n let testString = stringToTest;\n if (testString[0] === \"{\") {\n testString = testString.substring(1, testString.length - 1);\n }\n const regexGuid = /^(\\{){0,1}[0-9a-fA-F]{8}\\-[0-9a-fA-F]{4}\\-[0-9a-fA-F]{4}\\-[0-9a-fA-F]{4}\\-[0-9a-fA-F]{12}(\\}){0,1}$/gi;\n return regexGuid.test(testString);\n }\n\n /**\n * Retrieves a specific form instance by template ID and instance ID.\n * @param {string} templateId - The ID of the form template.\n * @param {string} instanceId - The ID of the form instance.\n * @returns {Promise<string>} The API response containing the form instance.\n */\n getFormInstanceById(templateId, instanceId) {\n const resourceUri = this._httpHelper._config.ResourceUri.FormId.replace('{id}', templateId).replace('{formId}', instanceId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n\n return this._httpHelper.doVvClientRequest(url, opts, null, null);\n }\n\n /**\n * Retrieves a form instance as a PDF stream.\n * @param {string} templateId - The ID of the form template.\n * @param {string} instanceId - The ID of the form instance.\n * @returns {Promise<string>} The API response containing the PDF content stream.\n */\n getFormInstancePDF(templateId, instanceId) {\n const resourceUri = this._httpHelper._config.ResourceUri.FormIdPdf.replace('{id}', templateId).replace('{formId}', instanceId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GETSTREAM' };\n\n return this._httpHelper.doVvClientRequest(url, opts, null, null);\n }\n\n /**\n * Retrieves the field definitions for a form template.\n * @param {string} templateId - The ID of the form template.\n * @returns {Promise<string>} The API response containing the template's field definitions.\n */\n getFormTemplateFields(templateId) {\n const resourceUri = this._httpHelper._config.ResourceUri.FormDesignerFormsTemplatesIdFields.replace('{id}', templateId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n\n return this._httpHelper.doVvClientRequest(url, opts, null, null);\n }\n\n /**\n * Deletes a form instance.\n * @param {string} instanceId - The ID of the form instance to delete.\n * @returns {Promise<string>} The API response confirming the deletion.\n */\n deleteFormInstance(instanceId) {\n const resourceUri = this._httpHelper._config.ResourceUri.FormInstance.replace('{id}', instanceId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'DELETE' };\n\n return this._httpHelper.doVvClientRequest(url, opts, null, null);\n }\n\n /**\n * Releases a form template.\n * @param {string} formTemplateId - The ID of the form template to release.\n * @returns {Promise<string>} The API response confirming the release.\n */\n releaseFormTemplate(formTemplateId) {\n const resourceUri = this._httpHelper._config.ResourceUri.FormTemplatesRelease.replace('{id}', formTemplateId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'PUT' };\n\n return this._httpHelper.doVvClientRequest(url, opts, null, null);\n }\n}\n\n// Default export for backward compatibility\nexport default FormsManager;\n","/**\n * Manages group operations via the VVRestApi.\n */\nexport class GroupsManager {\n /**\n * @param {object} httpHelper - The HTTP helper instance used to make API requests.\n */\n constructor(httpHelper) {\n this._httpHelper = httpHelper;\n }\n\n /**\n * Retrieves a list of groups.\n * @param {object} params - URL parameters to include in the request.\n * @returns {Promise<string>} JSON string containing the list of groups.\n */\n getGroups(params) {\n const resourceUri = this._httpHelper._config.ResourceUri.GetGroups;\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n /**\n * Retrieves a specific group by its ID.\n * @param {object} params - URL parameters to include in the request.\n * @param {string} groupId - The ID (Guid) of the group to retrieve.\n * @returns {Promise<string>} JSON string containing the group details.\n */\n getGroupById(params, groupId) {\n const resourceUri = this._httpHelper._config.ResourceUri.GroupById.replace('{id}', groupId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n /**\n * Creates a new group.\n * @param {object} params - URL parameters to include in the request.\n * @param {object} formData - The group data to submit in the request body.\n * @returns {Promise<string>} JSON string containing the created group details.\n */\n addGroup(params, formData) {\n const resourceUri = this._httpHelper._config.ResourceUri.AddGroup;\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'POST' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, formData);\n }\n\n /**\n * Updates an existing group by its ID.\n * @param {object} params - URL parameters to include in the request.\n * @param {string} groupId - The ID (Guid) of the group to update.\n * @param {object} formData - The updated group data to submit in the request body.\n * @returns {Promise<string>} JSON string confirming the group was updated.\n */\n updateGroup(params, groupId, formData) {\n const resourceUri = this._httpHelper._config.ResourceUri.UpdateGroup.replace('{id}', groupId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'PUT' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, formData);\n }\n\n /**\n * Deletes a group by its ID.\n * @param {object} params - URL parameters to include in the request.\n * @param {string} groupId - The ID (Guid) of the group to delete.\n * @returns {Promise<string>} JSON string confirming the group was deleted.\n */\n deleteGroup(params, groupId) {\n const resourceUri = this._httpHelper._config.ResourceUri.DeleteGroup.replace('{id}', groupId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'DELETE' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n /**\n * Retrieves all users belonging to a specific group.\n * @param {object} params - URL parameters to include in the request.\n * @param {string} groupId - The ID (Guid) of the group whose users to retrieve.\n * @returns {Promise<string>} JSON string containing the list of users in the group.\n */\n getGroupsUsers(params, groupId) {\n const resourceUri = this._httpHelper._config.ResourceUri.GroupsUsers.replace('{id}', groupId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n /**\n * Retrieves a specific user within a group.\n * @param {object} params - URL parameters to include in the request.\n * @param {string} groupId - The ID (Guid) of the group to look up the user in.\n * @param {string} userId - The ID (Guid) of the user to retrieve.\n * @returns {Promise<string>} JSON string containing the user's membership details within the group.\n */\n getGroupUser(params, groupId, userId) {\n const resourceUri = this._httpHelper._config.ResourceUri.GroupsAddUser.replace('{groupId}', groupId).replace('{userId}', userId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n /**\n * Adds a user to a group.\n * @param {object} params - URL parameters to include in the request.\n * @param {string} groupId - The ID (Guid) of the group to add the user to.\n * @param {string} userId - The ID (Guid) of the user to add to the group.\n * @returns {Promise<string>} JSON string confirming the user was added to the group.\n */\n addUserToGroup(params, groupId, userId) {\n const resourceUri = this._httpHelper._config.ResourceUri.GroupsAddUser.replace('{groupId}', groupId).replace('{userId}', userId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'PUT' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n /**\n * Removes a user from a group.\n * @param {object} params - URL parameters to include in the request.\n * @param {string} groupId - The ID (Guid) of the group to remove the user from.\n * @param {string} userId - The ID (Guid) of the user to remove from the group.\n * @returns {Promise<string>} JSON string confirming the user was removed from the group.\n */\n removeUserFromGroup(params, groupId, userId) {\n const resourceUri = this._httpHelper._config.ResourceUri.GroupsAddUser.replace('{groupId}', groupId).replace('{userId}', userId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'DELETE' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n}\n\nexport default GroupsManager;\n","/**\n * Manager class for Library (folder) operations.\n *\n * All methods return a `Promise<string>` containing a JSON-encoded API response.\n * When parsed, the response has the shape:\n * ```json\n * {\n * \"meta\": { \"status\": 200, \"statusMsg\": \"OK\", \"errors\": [] },\n * \"data\": { ... }\n * }\n * ```\n * Check `meta.status` to determine success or failure before consuming `data`.\n */\nexport class LibraryManager {\n /**\n * @param {object} httpHelper - HTTP helper instance\n */\n constructor(httpHelper) {\n this._httpHelper = httpHelper;\n }\n\n /**\n * Retrieves all folders.\n * @param {object} params - Optional query parameters for filtering and pagination.\n * @returns {Promise<string>} The API response containing the list of folders.\n */\n getFolders(params) {\n const url = this._httpHelper.getUrl(this._httpHelper._config.ResourceUri.Folders);\n const opts = { method: 'GET' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n /**\n * Creates a new folder at the specified path.\n * @param {object} params - Optional query parameters.\n * @param {object} data - Folder properties to create.\n * @param {string} [data.name] - Folder name; if omitted, derived from the last segment of folderPath.\n * @param {string} [data.description] - Folder description.\n * @param {boolean} [data.allowRevisions] - Whether documents in this folder allow revisions.\n * @param {string} [data.formUploadControlId] - Guid of the form upload control to associate.\n * @param {string} [data.formId] - Guid of the form to associate with the folder.\n * @param {boolean} [data.inheritNamingConvention] - Whether to inherit the naming convention from the parent folder.\n * @param {boolean} [data.inheritRecordRetention] - Whether to inherit record retention settings from the parent folder.\n * @param {string} [data.defaultDocType] - Default document type for the folder.\n * @param {boolean} [data.docTypeRequired] - Whether a document type is required when uploading.\n * @param {string} folderPath - The full path where the folder should be created.\n * @returns {Promise<string>} The API response containing the created folder.\n */\n postFolderByPath(params, data, folderPath) {\n const url = this._httpHelper.getUrl(this._httpHelper._config.ResourceUri.Folders);\n\n // @ts-ignore - folderpath is injected from the folderPath argument\n data.folderpath = folderPath;\n const opts = { method: 'POST' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n }\n\n /**\n * Updates a folder's properties.\n * @param {object} params - Optional query parameters.\n * @param {object} data - Folder properties to update.\n * @param {string} [data.name] - New folder name.\n * @param {string} [data.description] - New folder description.\n * @param {string} [data.defaultDocType] - Default document type for the folder.\n * @param {boolean} [data.docTypeRequired] - Whether a document type is required when uploading.\n * @param {string} folderId - The ID of the folder to update.\n * @returns {Promise<string>} The API response containing the updated folder.\n */\n putFolder(params, data, folderId) {\n const url = this._httpHelper.getUrl(this._httpHelper._config.ResourceUri.FoldersId.replace('{id}', folderId));\n const opts = { method: 'PUT' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n }\n\n /**\n * Deletes a folder.\n * @param {string} folderId - The ID of the folder to delete.\n * @returns {Promise<string>} The API response confirming the deletion.\n */\n deleteFolder(folderId) {\n const url = this._httpHelper.getUrl(this._httpHelper._config.ResourceUri.FoldersId.replace('{id}', folderId));\n const opts = { method: 'DELETE' };\n\n return this._httpHelper.doVvClientRequest(url, opts, null, null);\n }\n\n /**\n * Copies a folder to a new location.\n * @param {object} params - Optional query parameters.\n * @param {object} data - Copy options.\n * @param {string} [data.sourceFolderId] - Guid of the folder to copy; use instead of sourceFolderPath.\n * @param {string} [data.sourceFolderPath] - Full path of the folder to copy; use instead of sourceFolderId.\n * @param {string} [data.targetFolderId] - Guid of the destination folder; use instead of targetFolderPath.\n * @param {string} [data.targetFolderPath] - Full path of the destination folder; use instead of targetFolderId.\n * @returns {Promise<string>} The API response confirming the copy operation.\n */\n copyFolder(params, data) {\n const url = this._httpHelper.getUrl(this._httpHelper._config.ResourceUri.FoldersCopy);\n const opts = { method: 'POST' };\n\n return this._httpHelper.doVvClientRequest(url, opts, null, data);\n }\n\n /**\n * Moves a folder to a new location.\n * @param {object} params - Optional query parameters.\n * @param {object} data - Move options.\n * @param {string} [data.sourceFolderId] - Guid of the folder to move; use instead of sourceFolderPath.\n * @param {string} [data.sourceFolderPath] - Full path of the folder to move; use instead of sourceFolderId.\n * @param {string} [data.targetFolderId] - Guid of the destination folder; use instead of targetFolderPath.\n * @param {string} [data.targetFolderPath] - Full path of the destination folder; use instead of targetFolderId.\n * @returns {Promise<string>} The API response confirming the move operation.\n */\n moveFolder(params, data) {\n const url = this._httpHelper.getUrl(this._httpHelper._config.ResourceUri.FoldersMove);\n const opts = { method: 'PUT' };\n\n return this._httpHelper.doVvClientRequest(url, opts, null, data);\n }\n\n /**\n * Retrieves documents within a specific folder.\n * @param {object} params - Optional query parameters for filtering and pagination.\n * @param {string} folderId - The ID of the folder to retrieve documents from.\n * @returns {Promise<string>} The API response containing the folder's documents.\n */\n getDocuments(params, folderId) {\n const resourceUri = this._httpHelper._config.ResourceUri.Documents.replace('{id}', folderId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n /**\n * Retrieves a folder by its full path.\n * @param {object} params - Optional query parameters.\n * @param {string} folderPath - The full path of the folder to retrieve.\n * @returns {Promise<string>} The API response containing the folder.\n */\n getFolderByPath(params, folderPath) {\n const resourceUri = this._httpHelper._config.ResourceUri.Folders + '?folderpath=' + encodeURIComponent(folderPath);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n /**\n * Updates the index field override settings for a folder (query, dropdown list, required, default value).\n * @param {string} folderId - The ID of the folder.\n * @param {string} fieldId - The ID of the index field to configure.\n * @param {string} queryId - The ID of the query to use for the field's dropdown.\n * @param {string} displayField - The query field to display in the dropdown.\n * @param {string} valueField - The query field to use as the stored value.\n * @param {string} dropDownListId - The ID of a static dropdown list, if used instead of a query.\n * @param {boolean} required - Whether the field is required.\n * @param {string} defaultValue - The default value for the field.\n * @returns {Promise<string>} The API response confirming the update.\n */\n updateFolderIndexFieldOverrideSettings(folderId, fieldId, queryId, displayField, valueField, dropDownListId, required, defaultValue) {\n const data = {\n queryId,\n queryValueField: valueField,\n queryDisplayField: displayField,\n dropDownListId,\n required,\n defaultValue\n };\n\n const resourceUri = this._httpHelper._config.ResourceUri.FoldersIdIndexFieldsId.replace('{id}', folderId).replace('{indexFieldId}', fieldId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'PUT' };\n return this._httpHelper.doVvClientRequest(url, opts, null, data);\n }\n\n /**\n * Retrieves the index fields associated with a folder.\n * @param {object} params - Optional query parameters for filtering.\n * @param {string} folderId - The ID of the folder.\n * @returns {Promise<string>} The API response containing the folder's index fields.\n */\n getFolderIndexFields(params, folderId) {\n const resourceUri = this._httpHelper._config.ResourceUri.FolderIndexFields.replace('{id}', folderId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n /**\n * Subscribes a user to alert notifications for a specific folder event.\n * @param {string} folderId - The ID of the folder to subscribe to.\n * @param {string} eventId - The ID of the event to subscribe to.\n * @param {string} userId - The ID of the user to subscribe.\n * @returns {Promise<string>} The API response confirming the subscription.\n */\n postFolderAlertSubscription(folderId, eventId, userId) {\n const resourceUri = this._httpHelper._config.ResourceUri.FolderAlertsId.replace('{folderId}', folderId).replace('{eventId}', eventId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'POST' };\n\n const params = {\n usId: userId\n };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n /**\n * Removes a user's subscription to alert notifications for a specific folder event.\n * @param {string} folderId - The ID of the folder.\n * @param {string} eventId - The ID of the event to unsubscribe from.\n * @param {string} userId - The ID of the user to unsubscribe.\n * @returns {Promise<string>} The API response confirming the unsubscription.\n */\n deleteFolderAlertSubscription(folderId, eventId, userId) {\n const resourceUri = this._httpHelper._config.ResourceUri.FolderAlertsId.replace('{folderId}', folderId).replace('{eventId}', eventId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'DELETE' };\n\n const params = {\n usId: userId\n };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n /**\n * Retrieves the security members (users and groups) assigned to a folder.\n * @param {object} params - Optional query parameters for filtering.\n * @param {string} folderId - The ID of the folder.\n * @returns {Promise<string>} The API response containing the folder's security members.\n */\n getFolderSecurityMembers(params, folderId) {\n const resourceUri = this._httpHelper._config.ResourceUri.FolderSecurity.replace('{folderId}', folderId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n /**\n * Adds or updates a security member's role on a folder.\n * @param {string} folderId - The ID of the folder.\n * @param {string} memberId - The ID of the user or group.\n * @param {\"user\"|\"group\"} memberType - The type of member.\n * @param {string} securityRole - The security role to assign (e.g., `editor`, `viewer`).\n * @param {boolean} cascadeSecurityChanges - Whether to apply the change to all subfolders.\n * @returns {Promise<string>} The API response confirming the update.\n */\n putFolderSecurityMember(folderId, memberId, memberType, securityRole, cascadeSecurityChanges) {\n const resourceUri = this._httpHelper._config.ResourceUri.FolderSecurityId.replace('{folderId}', folderId).replace('{memberId}', memberId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'PUT' };\n\n const data = {\n memberType,\n securityRole,\n cascadeSecurityChanges\n };\n\n return this._httpHelper.doVvClientRequest(url, opts, null, data);\n }\n\n /**\n * Removes a security member from a folder.\n * @param {string} folderId - The ID of the folder.\n * @param {string} memberId - The ID of the user or group to remove.\n * @param {boolean} cascadeSecurityChanges - Whether to remove the member from all subfolders.\n * @returns {Promise<string>} The API response confirming the deletion.\n */\n deleteFolderSecurityMember(folderId, memberId, cascadeSecurityChanges) {\n const resourceUri = this._httpHelper._config.ResourceUri.FolderSecurityId.replace('{folderId}', folderId).replace('{memberId}', memberId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'DELETE' };\n\n const params = {\n cascadeSecurityChanges\n };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n}\n\nexport default LibraryManager;\n","/**\n * Manager class for Sites operations.\n *\n * All methods return a `Promise<string>` containing a JSON-encoded API response.\n * When parsed, the response has the shape:\n * ```json\n * {\n * \"meta\": { \"status\": 200, \"statusMsg\": \"OK\", \"errors\": [] },\n * \"data\": { ... }\n * }\n * ```\n * Check `meta.status` to determine success or failure before consuming `data`.\n */\nexport class SitesManager {\n /**\n * @param {object} httpHelper - HTTP helper instance\n */\n constructor(httpHelper) {\n this._httpHelper = httpHelper;\n }\n\n /**\n * Retrieves all sites.\n * @param {object} params - Optional query parameters for filtering and pagination.\n * @returns {Promise<string>} The API response containing the list of sites.\n */\n getSites(params) {\n const url = this._httpHelper.getUrl(this._httpHelper._config.ResourceUri.Sites);\n const opts = { method: 'GET' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n /**\n * Creates a new site.\n * @param {object} params - Optional query parameters.\n * @param {object} data - Site properties to create.\n * @param {string} data.name - Site name (required).\n * @param {string} [data.description] - Site description.\n * @param {string} [data.sitetype] - Site type identifier.\n * @returns {Promise<string>} The API response containing the created site.\n */\n postSites(params, data) {\n const resourceUri = this._httpHelper._config.ResourceUri.Sites;\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'POST' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n }\n\n /**\n * Updates an existing site.\n * @param {object} params - Optional query parameters.\n * @param {object} data - Site properties to update.\n * @param {string} [data.name] - New site name.\n * @param {string} [data.description] - New site description.\n * @param {string} siteId - The ID of the site to update.\n * @returns {Promise<string>} The API response containing the updated site.\n */\n putSites(params, data, siteId) {\n const resourceUri = this._httpHelper._config.ResourceUri.SiteById.replace('{id}', siteId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'PUT' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n }\n\n /**\n * Retrieves all groups belonging to a site.\n * @param {object} params - Optional query parameters for filtering and pagination.\n * @param {string} siteId - The ID of the site.\n * @returns {Promise<string>} The API response containing the site's groups.\n */\n getGroups(params, siteId) {\n const resourceUri = this._httpHelper._config.ResourceUri.Groups.replace('{id}', siteId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n /**\n * Creates a new group within a site.\n * @param {object} params - Optional query parameters.\n * @param {object} data - Group properties to create.\n * @param {string} data.name - Group name (required).\n * @param {string} [data.description] - Group description; defaults to name if omitted.\n * @param {string} siteId - The ID of the site to create the group in.\n * @returns {Promise<string>} The API response containing the created group.\n */\n postGroups(params, data, siteId) {\n const resourceUri = this._httpHelper._config.ResourceUri.Groups.replace('{id}', siteId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'POST' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n }\n\n /**\n * Updates a group within a site.\n * @param {object} params - Optional query parameters.\n * @param {object} data - Group properties to update.\n * @param {string} [data.name] - New group name.\n * @param {string} [data.description] - New group description.\n * @param {string} siteId - The ID of the site the group belongs to.\n * @param {string} grId - The ID of the group to update.\n * @returns {Promise<string>} The API response containing the updated group.\n */\n putGroups(params, data, siteId, grId) {\n const resourceUri = this._httpHelper._config.ResourceUri.SiteGroupById\n .replace('{siteId}', siteId)\n .replace('{groupId}', grId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'PUT' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n }\n\n /**\n * Moves a user to a different site.\n * @param {string} userId - The ID of the user to move.\n * @param {string} newSiteId - The ID of the destination site.\n * @returns {Promise<string>} The API response confirming the site change.\n */\n changeUserSite(userId, newSiteId) {\n const resourceUri = this._httpHelper._config.ResourceUri.ChangeUserSite;\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'PUT' };\n\n const data = {\n UserId: userId,\n NewSiteId: newSiteId\n };\n\n return this._httpHelper.doVvClientRequest(url, opts, null, data);\n }\n\n /**\n * Retrieves a specific site by its ID.\n * @param {object} params - Optional query parameters.\n * @param {string} siteId - The ID of the site to retrieve.\n * @returns {Promise<string>} The API response containing the site.\n */\n getSiteById(params, siteId) {\n const resourceUri = this._httpHelper._config.ResourceUri.SiteById.replace('{id}', siteId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n /**\n * Deletes a site.\n * @param {object} params - Optional query parameters.\n * @param {string} siteId - The ID of the site to delete.\n * @returns {Promise<string>} The API response confirming the deletion.\n */\n deleteSite(params, siteId) {\n const resourceUri = this._httpHelper._config.ResourceUri.SiteById.replace('{id}', siteId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'DELETE' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n /**\n * Moves a group to a different site.\n * @param {object} params - Optional query parameters.\n * @param {string} groupId - The ID of the group to move.\n * @param {string} newSiteId - The ID of the destination site.\n * @returns {Promise<string>} The API response confirming the site change.\n */\n changeGroupSite(params, groupId, newSiteId) {\n const resourceUri = this._httpHelper._config.ResourceUri.ChangeGroupSite;\n const data = {\n groupId,\n newSiteId\n };\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'PUT' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n }\n}\n\nexport default SitesManager;\n","/**\n * Manager class for Users operations.\n *\n * All methods return a `Promise<string>` containing a JSON-encoded API response.\n * When parsed, the response has the shape:\n * ```json\n * {\n * \"meta\": { \"status\": 200, \"statusMsg\": \"OK\", \"errors\": [] },\n * \"data\": { ... }\n * }\n * ```\n * Check `meta.status` to determine success or failure before consuming `data`.\n */\nexport class UsersManager {\n /**\n * @param {object} httpHelper - HTTP helper instance\n */\n constructor(httpHelper) {\n this._httpHelper = httpHelper;\n }\n\n /**\n * Retrieves all users belonging to a site.\n * @param {object} params - Optional query parameters for filtering and pagination.\n * @param {string} siteId - The ID of the site to retrieve users from.\n * @returns {Promise<string>} The API response containing the list of users.\n */\n getUsers(params, siteId) {\n const resourceUri = this._httpHelper._config.ResourceUri.Users.replace('{id}', siteId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n /**\n * Creates a new user within a site.\n * @param {object} params - Optional query parameters.\n * @param {object} data - User properties to create.\n * @param {string} data.userId - Username (required if emailAddress is omitted; defaults to emailAddress when omitted).\n * @param {string} data.emailAddress - User email address (required if userId is omitted).\n * @param {string} [data.firstName] - User first name.\n * @param {string} [data.middleInitial] - User middle initial.\n * @param {string} [data.lastName] - User last name.\n * @param {string} [data.password] - Initial password.\n * @param {boolean} [data.mustChangePassword] - Whether the user must change their password on first login.\n * @param {boolean} [data.sendEmail] - Whether to send a welcome email; defaults to true.\n * @param {boolean} [data.passwordNeverExpires] - Whether the password never expires.\n * @param {string} [data.passwordExpires] - Date when the password expires.\n * @param {boolean} [data.getPasswordResetToken] - If true, the response includes a password reset token.\n * @param {string} [data.employeeId] - Employee ID.\n * @param {string} [data.employmentStatus] - Employment status.\n * @param {string} siteId - The ID of the site to create the user in.\n * @returns {Promise<string>} The API response containing the created user.\n */\n postUsers(params, data, siteId) {\n const resourceUri = this._httpHelper._config.ResourceUri.Users.replace('{id}', siteId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'POST' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n }\n\n /**\n * Updates a user within a site.\n * @param {object} params - Optional query parameters.\n * @param {object} data - User properties to update.\n * @param {string} [data.firstName] - New first name.\n * @param {string} [data.middleInitial] - New middle initial.\n * @param {string} [data.lastName] - New last name.\n * @param {string} [data.emailAddress] - New email address.\n * @param {string} [data.userId] - New username.\n * @param {string} [data.password] - New password.\n * @param {boolean} [data.mustChangePassword] - Whether the user must change their password on next login.\n * @param {boolean} [data.passwordNeverExpires] - Whether the password never expires.\n * @param {string} [data.passwordExpires] - Date when the password expires.\n * @param {string} [data.employeeId] - Employee ID.\n * @param {string} [data.employmentStatus] - Employment status.\n * @param {string} siteId - The ID of the site the user belongs to.\n * @param {string} usId - The ID of the user to update.\n * @returns {Promise<string>} The API response containing the updated user.\n */\n putUsers(params, data, siteId, usId) {\n const resourceUri = this._httpHelper._config.ResourceUri.Users.replace('{id}', siteId);\n const url = this._httpHelper.getUrl(resourceUri + '/' + usId);\n const opts = { method: 'PUT' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n }\n\n /**\n * Updates a user via the users endpoint (without site context).\n * When updating own profile: supports `newPassword`+`oldPassword`, `emailAddress`, and `firstName`+`lastName`.\n * When an admin updates another user: supports `isVaultAccess` and `enabled` in addition to profile fields.\n * @param {object} params - Optional query parameters.\n * @param {object} data - User properties to update.\n * @param {string} [data.firstName] - New first name.\n * @param {string} [data.lastName] - New last name.\n * @param {string} [data.emailAddress] - New email address.\n * @param {string} [data.newPassword] - New password (requires oldPassword).\n * @param {string} [data.oldPassword] - Current password (required when changing password).\n * @param {boolean} [data.isVaultAccess] - Whether the user has vault (account owner) access; admin only.\n * @param {boolean} [data.enabled] - Whether the user account is enabled; admin only.\n * @param {string} usId - The ID of the user to update.\n * @returns {Promise<string>} The API response containing the updated user.\n */\n putUsersEndpoint(params, data, usId) {\n const url = this._httpHelper.getUrl(this._httpHelper._config.ResourceUri.User + '/' + usId);\n const opts = { method: 'PUT' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n }\n\n /**\n * Retrieves users matching optional query parameters.\n * @param {object} params - Optional query parameters for filtering and pagination.\n * @returns {Promise<string>} The API response containing the matching users.\n */\n getUser(params) {\n const resourceUri = this._httpHelper._config.ResourceUri.User;\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n /**\n * Retrieves a specific user by their ID.\n * @param {object} params - Optional query parameters.\n * @param {string} usId - The ID of the user to retrieve.\n * @returns {Promise<string>} The API response containing the user.\n */\n getUserById(params, usId) {\n const resourceUri = this._httpHelper._config.ResourceUri.UserById.replace('{id}', usId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n /**\n * Retrieves the groups a user belongs to.\n * @param {object} params - Optional query parameters for filtering and pagination.\n * @param {string} usId - The ID of the user.\n * @returns {Promise<string>} The API response containing the user's groups.\n */\n getUserGroups(params, usId) {\n const resourceUri = this._httpHelper._config.ResourceUri.UserGroups.replace('{id}', usId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n /**\n * Retrieves the supervisors of a user.\n * @param {object} params - Optional query parameters for filtering and pagination.\n * @param {string} usId - The ID of the user.\n * @returns {Promise<string>} The API response containing the user's supervisors.\n */\n getUserSupervisors(params, usId) {\n const resourceUri = this._httpHelper._config.ResourceUri.UserSupervisors.replace('{id}', usId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n /**\n * Retrieves the supervisees of a user.\n * @param {object} params - Optional query parameters for filtering and pagination.\n * @param {string} usId - The ID of the user.\n * @returns {Promise<string>} The API response containing the user's supervisees.\n */\n getUserSupervisees(params, usId) {\n const resourceUri = this._httpHelper._config.ResourceUri.UserSupervisees.replace('{id}', usId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n /**\n * Retrieves a web login token for a user.\n * @param {string} usId - The ID of the user.\n * @returns {Promise<string>} The API response containing the user's login token.\n */\n getUserLoginToken(usId) {\n const resourceUri = this._httpHelper._config.ResourceUri.UserWebToken.replace('{id}', usId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n const params = [];\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n /**\n * Retrieves a JWT for the current user, optionally scoped to an audience.\n * @param {string} [audience] - The intended audience for the JWT.\n * @returns {Promise<string>} The API response containing the JWT token data.\n */\n getUserJwt(audience) {\n const resourceUri = this._httpHelper._config.ResourceUri.UsersGetJwt;\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n const params = {};\n if (audience) {\n params['audience'] = audience;\n }\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n /**\n * Retrieves the currently authenticated user's profile.\n * @returns {Promise<string>} The API response containing the current user's data.\n */\n getCurrentUser() {\n const resourceUri = this._httpHelper._config.ResourceUri.UsersMe;\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n const params = [];\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n /**\n * Resets a user's password, optionally sending a notification email.\n * @param {string} usId - The ID of the user whose password to reset.\n * @param {boolean} [sendEmail=true] - Whether to send a password reset email to the user.\n * @returns {Promise<string>} The API response confirming the password reset.\n */\n resetPassword(usId, sendEmail = true) {\n const resourceUri = this._httpHelper._config.ResourceUri.UsersPassword.replace('{id}', usId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'PUT' };\n const params = [];\n\n const data = {\n resetPassword: true,\n sendEmail\n };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n }\n\n /**\n * Updates the username (userId) of an existing user.\n * @param {string} usId - The ID of the user to update.\n * @param {string} newUserId - The new username to assign.\n * @returns {Promise<string>} The API response confirming the update.\n */\n updateUserId(usId, newUserId) {\n const resourceUri = this._httpHelper._config.ResourceUri.UsersIdUserId.replace('{id}', usId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'PUT' };\n const params = [];\n\n const data = {\n userId: newUserId\n };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n }\n}\n\nexport default UsersManager;\n","/**\n * Manages operations for the currently authenticated user.\n */\nexport class CurrentUserManager {\n /**\n * @param {object} httpHelper - The HTTP helper instance used to make API requests.\n */\n constructor(httpHelper) {\n this._httpHelper = httpHelper;\n }\n\n /**\n * Gets the currently authenticated user's information.\n * @param {object} [params] - Optional query parameters to include in the request.\n * @returns {Promise<string>} JSON string containing the current user's details.\n */\n async getCurrentUser(params) {\n var resourceUri = this._httpHelper._config.ResourceUri.UsersMe;\n var url = this._httpHelper.getUrl(resourceUri);\n var opts = { method: 'GET' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n}\n\nexport default CurrentUserManager;\n","/**\n * Manages scheduled process operations via the VVRestApi.\n */\nexport class ScheduledProcessManager {\n /**\n * @param {object} httpHelper - The HTTP helper instance used to make API requests.\n */\n constructor(httpHelper) {\n this._httpHelper = httpHelper;\n }\n\n /**\n * Posts a completion status for a scheduled process.\n * @param {string} id - The ID of the scheduled process to complete.\n * @param {string} action - The action taken by the scheduled process.\n * @param {boolean|string} result - The result of the scheduled process execution.\n * @param {string} [message] - An optional message describing the result.\n * @returns {Promise<string>} JSON string confirming the completion was recorded.\n */\n postCompletion(id, action, result, message) {\n const url = this._httpHelper.getUrl(this._httpHelper._config.ResourceUri.ScheduledProcess) + '/' + id;\n const opts = { method: 'POST' };\n\n const params = {\n action\n };\n\n if (result !== null && (typeof result === 'boolean' || result.length > 0)) {\n params.result = result.toString();\n }\n\n if (message && message.length > 0) {\n params.message = message;\n }\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n /**\n * Triggers an immediate run of all pending scheduled processes.\n * @returns {Promise<string>} JSON string confirming the scheduled processes were triggered.\n */\n runAllScheduledProcesses() {\n const url = this._httpHelper.getUrl(this._httpHelper._config.ResourceUri.ScheduledProcess) + '/Run';\n const opts = { method: 'PUT' };\n\n return this._httpHelper.doVvClientRequest(url, opts, null, null);\n }\n}\n\nexport default ScheduledProcessManager;\n","/**\n * Manages custom query execution via the VVRestApi.\n */\nexport class CustomQueryManager {\n /**\n * @param {object} httpHelper - The HTTP helper instance used to make API requests.\n */\n constructor(httpHelper) {\n this._httpHelper = httpHelper;\n }\n\n /**\n * Retrieves the results of a custom query by its name.\n * @param {string} queryName - The name of the custom query to execute.\n * @param {object} [params] - Optional URL parameters to include in the request.\n * @returns {Promise<string>} JSON string containing the custom query results.\n */\n getCustomQueryResultsByName(queryName, params) {\n const url = this._httpHelper.getUrl(this._httpHelper._config.ResourceUri.CustomQuery);\n const opts = { method: 'GET' };\n\n if (!params) {\n params = {};\n }\n params.queryName = queryName;\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n /**\n * Retrieves the results of a custom query by its ID.\n * @param {string} id - The ID (Guid) of the custom query to execute.\n * @param {object} [params] - Optional URL parameters to include in the request.\n * @returns {Promise<string>} JSON string containing the custom query results.\n */\n getCustomQueryResultsById(id, params) {\n const url = this._httpHelper.getUrl(this._httpHelper._config.ResourceUri.CustomQuery + '/' + id);\n const opts = { method: 'GET' };\n\n if (!params) {\n params = {};\n }\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n}\n\nexport default CustomQueryManager;\n","/**\n * Manages customer-level operations such as invitations and user assignments.\n */\nexport class CustomerManager {\n /**\n * @param {object} httpHelper - The HTTP helper instance used to make API requests.\n */\n constructor(httpHelper) {\n this._httpHelper = httpHelper;\n }\n\n /**\n * Creates a new customer invitation.\n * @param {object} data - The invitation data to submit in the request body.\n * @param {string} [data.email] - The email address to send the invitation code to. If omitted, the invite code is returned in the response metadata instead.\n * @returns {Promise<string>} The API response containing the created invitation details.\n */\n createCustomerInvite(data) {\n const baseUrl = this._httpHelper._sessionToken.baseUrl;\n let url = baseUrl + \"/api/v1/\" + this._httpHelper._config.ResourceUri.CustomerInvite;\n\n url = url.replace(/\\/api\\/\\//g, '/api/');\n url = url.replace(/\\/v1\\/\\//g, '/v1/');\n\n const opts = { method: 'POST' };\n\n return this._httpHelper.doVvClientRequest(url, opts, '', data);\n }\n\n /**\n * Assigns a user to a customer.\n * @param {string} customerId - The ID (Guid) of the customer to assign the user to.\n * @param {object} data - The user assignment data to submit in the request body.\n * @param {string} data.userId - The username (authentication user ID) of the user to assign.\n * @param {boolean} [data.allowMultipleCustomers] - Whether to allow the user to belong to multiple customers if already assigned to another.\n * @returns {Promise<string>} The API response confirming the user assignment.\n */\n assignUser(customerId, data) {\n const baseUrl = this._httpHelper._sessionToken.baseUrl;\n const url = baseUrl + \"/api/v1/\" + this._httpHelper._config.ResourceUri.CustomerAssignUser.replace('{customerId}', customerId);\n const opts = { method: 'PUT' };\n\n return this._httpHelper.doVvClientRequest(url, opts, '', data);\n }\n}\n\nexport default CustomerManager;\n","import createDebug from 'debug';\n\nconst debug = createDebug('visualvault:customer-db');\n\n/**\n * Manages user assignment operations on customer databases.\n */\nexport class CustomerDatabaseManager {\n /**\n * @param {object} httpHelper - The HTTP helper instance used to make API requests.\n */\n constructor(httpHelper) {\n this._httpHelper = httpHelper;\n }\n\n /**\n * Assigns a user to a customer database.\n * @param {string} customerId - The ID (Guid) of the customer database to assign the user to.\n * @param {object} data - The user assignment data to submit in the request body.\n * @param {string} data.userId - The username (authentication user ID) of the user to assign.\n * @returns {Promise<string>} The API response confirming the user assignment.\n */\n assignUser(customerId, data) {\n const baseUrl = this._httpHelper._sessionToken.baseUrl;\n const url = baseUrl + \"/api/v1/\" + this._httpHelper._config.ResourceUri.CustomerDatabaseAssignUser.replace('{databaseId}', customerId);\n const opts = { method: 'PUT' };\n\n return this._httpHelper.doVvClientRequest(url, opts, '', data);\n }\n\n /**\n * Removes a user from a customer database.\n * @param {string} authenticationUserId - The authentication user ID of the user to remove.\n * @param {string} databaseId - The ID (Guid) of the customer database to remove the user from.\n * @returns {Promise<string>} The API response confirming the user removal.\n */\n removeUser(authenticationUserId, databaseId) {\n const baseUrl = this._httpHelper._sessionToken.baseUrl;\n let url = baseUrl + \"/api/v1\" + this._httpHelper._config.ResourceUri.UserDelete.replace('{databaseId}', databaseId);\n url = url.replace(\"{authenticationUserId}\", authenticationUserId);\n debug('Removing user %s from database %s: %s', authenticationUserId, databaseId, url);\n const opts = { method: 'DELETE' };\n const params = [];\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n}\n\nexport default CustomerDatabaseManager;\n","/**\n * Manages file upload and download operations via the VVRestApi.\n */\nexport class FilesManager {\n /**\n * @param {object} httpHelper - The HTTP helper instance used to make API requests.\n */\n constructor(httpHelper) {\n this._httpHelper = httpHelper;\n }\n\n /**\n * Downloads file bytes using a query string path.\n * @param {string} query - The query string to append to the files resource URI.\n * @returns {Promise<Buffer>} The API response containing the raw file bytes.\n */\n getFileBytesQuery(query) {\n const resourceUri = this._httpHelper._config.ResourceUri.FilesQuery + query;\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GETSTREAM' };\n return this._httpHelper.doVvClientRequest(url, opts, null, null);\n }\n\n /**\n * Downloads file bytes by file ID.\n * @param {string} id - The ID (Guid) of the file to download.\n * @returns {Promise<Buffer>} The API response containing the raw file bytes.\n */\n getFileBytesId(id) {\n const resourceUri = this._httpHelper._config.ResourceUri.FilesId.replace('{id}', id);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GETSTREAM' };\n return this._httpHelper.doVvClientRequest(url, opts, null, null);\n }\n\n /**\n * Uploads a file to the VVRestApi.\n * @param {object} data - The file metadata to include in the request body.\n * @param {string} [data.fileId] - The file revision ID of the document to update. Required if documentId is not provided.\n * @param {string} [data.documentId] - The document ID of the document to update. Required if fileId is not provided.\n * @param {string} [data.fileName] - The filename to assign to the uploaded file.\n * @param {string} [data.revision] - The revision label to assign to the new revision.\n * @param {string} [data.changeReason] - The reason for uploading a new revision.\n * @param {string} [data.checkInDocumentState] - The document state after check-in: \"Released\", \"Unreleased\", or \"Replace\". Defaults to \"Released\".\n * @param {boolean} [data.checkIn] - Whether to check in the document after upload. Defaults to true.\n * @param {string} [data.indexFields] - JSON-serialized index fields; accepts an array of `{\"fieldLabel\": \"value\"}` objects or a single object with field labels as keys.\n * @param {string} [data.parameters] - JSON string with optional upload parameters: `source`, `command`, `ocrStatus`, `keepAnnotations`.\n * @param {Uint8Array} buffer - The raw file bytes to upload.\n * @returns {Promise<string>} The API response containing the uploaded file details.\n */\n postFile(data, buffer) {\n const resourceUri = this._httpHelper._config.ResourceUri.Files;\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'POSTSTREAM' };\n\n return this._httpHelper.doVvClientRequest(url, opts, null, data, buffer);\n }\n}\n\nexport default FilesManager;\n","/**\n * Manages script and web service execution via the VVRestApi.\n */\nexport class ScriptsManager {\n /**\n * @param {object} httpHelper - The HTTP helper instance used to make API requests.\n */\n constructor(httpHelper) {\n this._httpHelper = httpHelper;\n }\n\n /**\n * Executes a named web service script.\n * @param {string} serviceName - The name of the web service script to run.\n * @param {object} serviceData - The data to pass to the script in the request body.\n * @param {string} [usId] - The user session ID to run the script on behalf of.\n * @returns {Promise<string>} JSON string containing the script execution result.\n */\n runWebService(serviceName, serviceData, usId) {\n let resourceUri = this._httpHelper._config.ResourceUri.Scripts + '?name=' + serviceName;\n if (typeof usId !== 'undefined' && usId !== null) {\n resourceUri += `&usId=${usId}`;\n }\n\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'POST' };\n return this._httpHelper.doVvClientRequest(url, opts, null, serviceData);\n }\n\n /**\n * Completes a workflow web service execution and returns variables to the workflow.\n * @param {string} executionId - The ID of the workflow script execution to complete.\n * @param {object[]} workflowVariables - The workflow variables to return upon completion.\n * @returns {Promise<string>} JSON string confirming the workflow completion was recorded.\n */\n completeWorkflowWebService(executionId, workflowVariables) {\n const resourceUri = this._httpHelper._config.ResourceUri.ScriptsCompleteWf;\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'POST' };\n\n const postData = {\n executionId,\n workflowVariables\n };\n\n return this._httpHelper.doVvClientRequest(url, opts, null, postData);\n }\n}\n\nexport default ScriptsManager;\n","/**\n * Manager class for document API operations.\n *\n * All methods return a `Promise<string>` containing a JSON-encoded API response.\n * When parsed, the response has the shape:\n * ```json\n * {\n * \"meta\": { \"status\": 200, \"statusMsg\": \"OK\", \"errors\": [] },\n * \"data\": { ... }\n * }\n * ```\n * Check `meta.status` to determine success or failure before consuming `data`.\n */\nexport class DocumentsManager {\n /**\n * @param {object} httpHelper - HTTP helper instance\n */\n constructor(httpHelper) {\n this._httpHelper = httpHelper;\n }\n\n /**\n * Creates a new document record.\n * @param {object} data - Document metadata.\n * @param {string} data.folderId - The Guid of the destination folder.\n * @param {string} [data.name] - Display name for the document.\n * @param {string} [data.description] - Document description.\n * @param {string} [data.revision] - Revision label (e.g. \"0\").\n * @param {string} [data.documentState] - Check-in state (e.g. \"Released\", \"Checked In\").\n * @param {string} [data.filename] - File name for the document.\n * @param {number} [data.fileLength] - File size in bytes.\n * @param {string} [data.indexFields] - JSON-serialized index field key-value pairs.\n * @param {string} [data.allowNoFile] - Set to \"true\" to create without a file.\n * @returns {Promise<string>} The API response containing the created document.\n */\n postDoc(data) {\n const resourceUri = this._httpHelper._config.ResourceUri.DocumentsPost;\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'POST' };\n return this._httpHelper.doVvClientRequest(url, opts, null, data);\n }\n\n /**\n * Creates a new document record with an attached file.\n * @param {object} data - Document metadata to create.\n * @param {string} data.folderId - The Guid of the destination folder.\n * @param {string} [data.name] - Display name for the document.\n * @param {string} [data.description] - Document description.\n * @param {string} [data.revision] - Revision label (e.g. \"0\").\n * @param {string} [data.documentState] - Check-in state (e.g. \"Released\", \"Checked In\").\n * @param {string} [data.filename] - File name for the document.\n * @param {number} [data.fileLength] - File size in bytes.\n * @param {string} [data.indexFields] - JSON-serialized index field key-value pairs.\n * @param {Uint8Array} fileData - The file content to upload.\n * @returns {Promise<string>} The API response containing the created document.\n */\n postDocWithFile(data, fileData) {\n const resourceUri = this._httpHelper._config.ResourceUri.DocumentsPost;\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'POSTSTREAM' };\n return this._httpHelper.doVvClientRequest(url, opts, null, data, fileData);\n }\n\n /**\n * Copies a document to a new location.\n * @param {object} params - Optional query parameters.\n * @param {object} data - Copy options.\n * @param {string} data.folderId - The Guid of the destination folder to copy the document into.\n * @param {string} documentId - The Id of the document to copy.\n * @returns {Promise<string>} The API response containing the copied document.\n */\n copyDocument(params, data, documentId) {\n const resourceUri = this._httpHelper._config.ResourceUri.DocumentsIdCopy.replace('{id}', documentId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'POST' };\n\n return this._httpHelper.doVvClientRequest(url, opts, null, data);\n }\n\n /**\n * Moves a document to a different folder.\n * @param {object} params - Optional query parameters.\n * @param {object} data - Move options.\n * @param {string} data.folderId - The Guid of the destination folder to move the document into.\n * @param {string} documentId - The Id of the document to move.\n * @returns {Promise<string>} The API response containing the updated document.\n */\n moveDocument(params, data, documentId) {\n const resourceUri = this._httpHelper._config.ResourceUri.DocumentsIdMove.replace('{id}', documentId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'PUT' };\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n }\n\n /**\n * Deletes a specific document.\n * @param {object} params - Optional query parameters.\n * @param {string} revisionId - The Id of the document revision to delete.\n * @returns {Promise<string>} The API response confirming the deletion.\n */\n deleteDocument(params, revisionId) {\n const resourceUri = this._httpHelper._config.ResourceUri.DocumentsId.replace('{id}', revisionId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'DELETE' };\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n /**\n * Retrieves metadata for a specific document.\n * @param {object} params - Optional query parameters.\n * @param {string} revisionId - The revision Id of the document to retrieve.\n * @returns {Promise<string>} The API response containing the document metadata.\n */\n getDocumentRevision(params, revisionId) {\n const resourceUri = this._httpHelper._config.ResourceUri.DocumentsId.replace('{id}', revisionId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n /**\n * Retrieves a list of documents matching the given query parameters.\n * @param {object} params - Query parameters for filtering, sorting, and pagination.\n * @returns {Promise<string>} The API response containing the matching documents.\n */\n getDocuments(params) {\n const resourceUri = this._httpHelper._config.ResourceUri.DocumentsPost;\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n /**\n * Updates the index fields on a document.\n * @param {object} data - Index field values to update.\n * @param {string} data.indexFields - JSON-serialized index fields; accepts a JSON array of `{\"fieldLabel\": \"value\"}` objects or a single `{\"fieldLabel\": \"value\"}` object where keys are field labels or Guid IDs.\n * @param {string} documentId - The Id of the document to update.\n * @returns {Promise<string>} The API response confirming the update.\n */\n putDocumentIndexFields(data, documentId) {\n const resourceUri = this._httpHelper._config.ResourceUri.DocumentIndexFields.replace('{id}', documentId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'PUT' };\n return this._httpHelper.doVvClientRequest(url, opts, null, data);\n }\n\n /**\n * Subscribes a user to alert notifications for a specific document event.\n * @param {string} documentId - The Id of the document to subscribe to.\n * @param {string} eventId - The Id of the event to subscribe to.\n * @param {string} userId - The Id of the user to subscribe.\n * @returns {Promise<string>} The API response confirming the subscription.\n */\n postDocumentAlertSubscription(documentId, eventId, userId) {\n const resourceUri = this._httpHelper._config.ResourceUri.DocumentAlertsId.replace('{documentId}', documentId).replace('{eventId}', eventId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'POST' };\n\n const params = {\n usId: userId\n };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n /**\n * Removes a user's subscription to alert notifications for a specific document event.\n * @param {string} documentId - The Id of the document.\n * @param {string} eventId - The Id of the event to unsubscribe from.\n * @param {string} userId - The Id of the user to unsubscribe.\n * @returns {Promise<string>} The API response confirming the unsubscription.\n */\n deleteDocumentAlertSubscription(documentId, eventId, userId) {\n const resourceUri = this._httpHelper._config.ResourceUri.DocumentAlertsId.replace('{documentId}', documentId).replace('{eventId}', eventId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'DELETE' };\n\n const params = {\n usId: userId\n };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n /**\n * Retrieves OCR processing properties for a specific document revision.\n * @param {object} params - Optional query parameters.\n * @param {string} revisionId - The revision Id of the document.\n * @returns {Promise<string>} The API response containing the OCR properties.\n */\n getDocumentRevisionOcrProperties(params, revisionId) {\n const resourceUri = this._httpHelper._config.ResourceUri.DocumentsIdOcr.replace('{id}', revisionId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n /**\n * Creates a relationship between two document revisions.\n * @param {string} revisionId - The Id of the source document revision.\n * @param {string} relateToRevisionId - The revision Id of the document to relate to.\n * @param {string} relateType - The type of relationship to create.\n * @returns {Promise<string>} The API response confirming the relation.\n */\n relateDocuments(revisionId, relateToRevisionId, relateType) {\n const resourceUri = this._httpHelper._config.ResourceUri.DocumentsIdRelateDocument.replace('{id}', revisionId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'PUT' };\n\n const data = {\n relateToId: relateToRevisionId,\n relateType\n };\n\n return this._httpHelper.doVvClientRequest(url, opts, null, data);\n }\n\n /**\n * Sets or updates the expiration date on a document.\n * @param {string} documentId - The Id of the document to update.\n * @param {string} expirationDate - The expiration date in ISO 8601 format.\n * @returns {Promise<string>} The API response confirming the update.\n */\n updateDocumentExpiration(documentId, expirationDate) {\n const resourceUri = this._httpHelper._config.ResourceUri.DocumentsIdExpiration.replace('{id}', documentId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'PUT' };\n\n const data = {\n expirationDate\n };\n\n return this._httpHelper.doVvClientRequest(url, opts, null, data);\n }\n\n /**\n * Retrieves the WebDAV URL for a document.\n * @param {string} documentId - The Id of the document.\n * @returns {Promise<string>} The API response containing the WebDAV URL.\n */\n getDocumentWebDavUrl(documentId) {\n const resourceUri = this._httpHelper._config.ResourceUri.DocumentsWebDavUrl.replace('{id}', documentId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n\n return this._httpHelper.doVvClientRequest(url, opts, null, null);\n }\n\n /**\n * Retrieves the WOPI URL for a document.\n * @param {string} documentId - The Id of the document.\n * @returns {Promise<string>} The API response containing the WOPI URL.\n */\n getDocumentWopiUrl(documentId) {\n const resourceUri = this._httpHelper._config.ResourceUri.DocumentsWopiUrl.replace('{id}', documentId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n\n return this._httpHelper.doVvClientRequest(url, opts, null, null);\n }\n\n /**\n * Initiates creation of a zip archive containing multiple documents.\n * @param {object} params - Optional query parameters.\n * @param {string[]} documentIds - Array of document Ids to include in the zip.\n * @returns {Promise<string>} The API response containing a download key for polling zip status.\n */\n createDocumentZipFile(params, documentIds) {\n const resourceUri = this._httpHelper._config.ResourceUri.CreateDocumentZipFile;\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'POST' };\n const data = { documentDhIds: documentIds };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n }\n\n /**\n * Checks the status of a zip file creation request initiated by createDocumentZipFile.\n * @param {object} params - Optional query parameters.\n * @param {string} downloadKey - The download key returned from createDocumentZipFile.\n * @returns {Promise<string>} The API response containing the zip status and download URL.\n */\n getDocumentZipFileStatus(params, downloadKey) {\n const resourceUri = this._httpHelper._config.ResourceUri.GetDocumentZipFileStatus + `?downloadKey=${encodeURIComponent(downloadKey)}`;\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n /**\n * Retrieves the index fields and their values for a specific document.\n * @param {object} params - Optional query parameters.\n * @param {string} documentId - The Id of the document.\n * @returns {Promise<string>} The API response containing the document's index fields.\n */\n getDocumentIndexFields(params, documentId) {\n const resourceUri = this._httpHelper._config.ResourceUri.DocumentIndexFields.replace('{id}', documentId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n /**\n * Retrieves available document types defined in the vault.\n * @param {object} params - Optional query parameters for filtering.\n * @returns {Promise<string>} The API response containing the document types.\n */\n getDocumentTypes(params) {\n const resourceUri = this._httpHelper._config.ResourceUri.DocumentTypes;\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n /**\n * Creates a new document type in the vault.\n * @param {object} params - Optional query parameters.\n * @param {string} name - The name of the document type to create.\n * @returns {Promise<string>} The API response containing the created document type.\n */\n createDocumentType(params, name) {\n const resourceUri = this._httpHelper._config.ResourceUri.DocumentTypes;\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'POST' };\n const data = { documentTypeName: name };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n }\n\n /**\n * Retrieves saved document searches available to the current user.\n * @param {object} params - Optional query parameters for filtering.\n * @returns {Promise<string>} The API response containing the saved searches.\n */\n getSavedSearches(params) {\n const resourceUri = this._httpHelper._config.ResourceUri.SavedSearches;\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n /**\n * Retrieves available document metadata fields defined in the vault.\n * @param {object} params - Optional query parameters for filtering.\n * @returns {Promise<string>} The API response containing the document fields.\n */\n getDocumentFields(params) {\n const resourceUri = this._httpHelper._config.ResourceUri.DocumentFields;\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n /**\n * Retrieves the index fields associated with a saved search.\n * @param {object} params - Optional query parameters.\n * @param {string} savedSearchId - The Id of the saved search.\n * @returns {Promise<string>} The API response containing the saved search's index fields.\n */\n getSavedSearchIndexFields(params, savedSearchId) {\n const resourceUri = this._httpHelper._config.ResourceUri.SavedSearchIndexFields;\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n const mergedParams = { ...params, savedSearchId };\n\n return this._httpHelper.doVvClientRequest(url, opts, mergedParams, null);\n }\n\n /**\n * Retrieves the most recently accessed documents for the current user.\n * @param {object} params - Optional query parameters for filtering and pagination.\n * @returns {Promise<string>} The API response containing the recent documents.\n */\n getLastDocuments(params) {\n const resourceUri = this._httpHelper._config.ResourceUri.LastDocuments;\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n /**\n * Retrieves the most frequently accessed documents for the current user.\n * @param {object} params - Optional query parameters for filtering and pagination.\n * @returns {Promise<string>} The API response containing the frequent documents.\n */\n getFrequentDocuments(params) {\n const resourceUri = this._httpHelper._config.ResourceUri.FrequentDocuments;\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n /**\n * Retrieves documents matching a saved search.\n * @param {object} params - Optional query parameters for filtering and pagination.\n * @param {string} savedSearchId - The Id of the saved search to execute.\n * @returns {Promise<string>} The API response containing the matching documents.\n */\n getSavedSearchDocuments(params, savedSearchId) {\n const resourceUri = this._httpHelper._config.ResourceUri.SavedSearchDocuments.replace('{savedSearchId}', savedSearchId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n /**\n * Retrieves the default action link for a document.\n * @param {object} params - Optional query parameters.\n * @param {string} documentId - The Id of the document.\n * @returns {Promise<string>} The API response containing the default action link.\n */\n getDocumentDefaultLink(params, documentId) {\n const resourceUri = this._httpHelper._config.ResourceUri.DocumentDefaultAction.replace('{documentId}', documentId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n}\n\nexport default DocumentsManager;\n","/**\n * Manages project alert subscription operations via the VVRestApi.\n */\nexport class ProjectsManager {\n /**\n * @param {object} httpHelper - The HTTP helper instance used to make API requests.\n */\n constructor(httpHelper) {\n this._httpHelper = httpHelper;\n }\n\n /**\n * Subscribes a user to alerts for a specific project event.\n * @param {string} projectId - The ID (Guid) of the project to subscribe to.\n * @param {string} eventId - The ID (Guid) of the project event to subscribe to.\n * @param {string} userId - The ID (Guid) of the user to subscribe.\n * @returns {Promise<string>} JSON string confirming the alert subscription was created.\n */\n postProjectAlertSubscription(projectId, eventId, userId) {\n const resourceUri = this._httpHelper._config.ResourceUri.ProjectAlertsId.replace('{projectId}', projectId).replace('{eventId}', eventId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'POST' };\n\n const params = {\n usId: userId\n };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n /**\n * Removes a user's subscription from alerts for a specific project event.\n * @param {string} projectId - The ID (Guid) of the project to unsubscribe from.\n * @param {string} eventId - The ID (Guid) of the project event to unsubscribe from.\n * @param {string} userId - The ID (Guid) of the user to unsubscribe.\n * @returns {Promise<string>} JSON string confirming the alert subscription was removed.\n */\n deleteProjectAlertSubscription(projectId, eventId, userId) {\n const resourceUri = this._httpHelper._config.ResourceUri.ProjectAlertsId.replace('{projectId}', projectId).replace('{eventId}', eventId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'DELETE' };\n\n const params = {\n usId: userId\n };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n}\n\nexport default ProjectsManager;\n","/**\n * Manages index field operations via the VVRestApi.\n */\nexport class IndexFieldsManager {\n /**\n * @param {object} httpHelper - The HTTP helper instance used to make API requests.\n */\n constructor(httpHelper) {\n this._httpHelper = httpHelper;\n }\n\n /**\n * Retrieves all index fields.\n * @param {object} params - URL parameters to include in the request.\n * @returns {Promise<string>} JSON string containing the list of index fields.\n */\n getIndexFields(params) {\n const resourceUri = this._httpHelper._config.ResourceUri.IndexFields;\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n /**\n * Retrieves a specific index field by its ID.\n * @param {object} params - URL parameters to include in the request.\n * @param {string} id - The ID (Guid) of the index field to retrieve.\n * @returns {Promise<string>} JSON string containing the index field details.\n */\n getIndexField(params, id) {\n const resourceUri = this._httpHelper._config.ResourceUri.IndexFields + '/' + id;\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n /**\n * Payload for creating or updating index fields.\n * @typedef {object} IndexFieldData\n * @property {string} fieldType\n * @property {string} label\n * @property {string} [description]\n * @property {boolean} [required]\n * @property {string|null} [connectionId]\n * @property {string|null} [queryId]\n * @property {string|null} [queryDisplayField]\n * @property {string|null} [queryValueField]\n * @property {string|null} [dropDownListId]\n * @property {string|null} [defaultValue]\n */\n\n /**\n * Creates a new index field.\n * @param {object} params - URL parameters to include in the request.\n * @param {IndexFieldData} data - The index field data to submit in the request body.\n * @returns {Promise<string>} JSON string containing the created index field details.\n */\n createIndexField(params, data) {\n const resourceUri = this._httpHelper._config.ResourceUri.IndexFields;\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'POST' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n }\n\n /**\n * Updates an existing index field by its ID.\n * @param {object} params - URL parameters to include in the request.\n * @param {string} id - The ID (Guid) of the index field to update.\n * @param {IndexFieldData} data - The updated index field data to submit in the request body.\n * @returns {Promise<string>} JSON string confirming the index field was updated.\n */\n updateIndexField(params, id, data) {\n const resourceUri = this._httpHelper._config.ResourceUri.IndexFields + '/' + id;\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'PUT' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n }\n\n /**\n * Deletes an index field by its ID.\n * @param {object} params - URL parameters to include in the request.\n * @param {string} id - The ID (Guid) of the index field to delete.\n * @returns {Promise<string>} JSON string confirming the index field was deleted.\n */\n deleteIndexField(params, id) {\n const resourceUri = this._httpHelper._config.ResourceUri.IndexFields + '/' + id;\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'DELETE' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n /**\n * Moves an index field to appear after a specified destination field.\n * @param {object} params - URL parameters to include in the request.\n * @param {string} sourceFieldId - The ID (Guid) of the index field to move.\n * @param {string} destinationFieldId - The ID (Guid) of the index field to place the source after.\n * @returns {Promise<string>} JSON string confirming the index field was moved.\n */\n moveIndexFieldAfter(params, sourceFieldId, destinationFieldId) {\n const resourceUri = this._httpHelper._config.ResourceUri.IndexFields + '/MoveIndexFieldAfter';\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'POST' };\n const data = { sourceFieldId, destinationFieldId };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n }\n\n /**\n * Associates an index field with a folder.\n * @param {string} indexFieldId - The ID (Guid) of the index field to associate.\n * @param {string} folderId - The ID (Guid) of the folder to associate the index field with.\n * @returns {Promise<string>} JSON string confirming the index field was added to the folder.\n */\n addIndexFieldToFolder(indexFieldId, folderId) {\n const resourceUri = this._httpHelper._config.ResourceUri.IndexFieldsFolder\n .replace('{id}', indexFieldId)\n .replace('{folderId}', folderId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'PUT' };\n\n return this._httpHelper.doVvClientRequest(url, opts, null, null);\n }\n}\n\nexport default IndexFieldsManager;\n","/**\n * Manages outside process retrieval operations via the VVRestApi.\n */\nexport class OutsideProcessesManager {\n /**\n * @param {object} httpHelper - The HTTP helper instance used to make API requests.\n */\n constructor(httpHelper) {\n this._httpHelper = httpHelper;\n }\n\n /**\n * Retrieves a list of outside processes.\n * @param {object} params - URL parameters to include in the request.\n * @returns {Promise<string>} JSON string containing the list of outside processes.\n */\n getOutsideProcesses(params) {\n const resourceUri = this._httpHelper._config.ResourceUri.OutsideProcesses;\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n}\n\nexport default OutsideProcessesManager;\n","/**\n * Manages security member operations via the VVRestApi.\n */\nexport class SecurityMembersManager {\n /**\n * @param {object} httpHelper - The HTTP helper instance used to make API requests.\n */\n constructor(httpHelper) {\n this._httpHelper = httpHelper;\n }\n\n /**\n * Adds a user or group as a security member to a parent resource.\n * @param {string} parentId - The ID (Guid) of the parent resource to add the member to.\n * @param {string} memberId - The ID (Guid) of the user or group to add as a member.\n * @param {string} roleType - The role to assign to the member on the parent resource.\n * @param {boolean} isGroup - Whether the member being added is a group.\n * @returns {Promise<string>} JSON string containing the created security member details.\n */\n addSecurityMember(parentId, memberId, roleType, isGroup) {\n const resourceUri = this._httpHelper._config.ResourceUri.SecurityMembers;\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'POST' };\n\n const postData = {\n parentId,\n memberId,\n role: roleType,\n isGroup\n };\n\n return this._httpHelper.doVvClientRequest(url, opts, null, postData);\n }\n\n /**\n * Retrieves all security members associated with a parent resource.\n * @param {string} parentId - The ID (Guid) of the parent resource whose members to retrieve.\n * @returns {Promise<string>} JSON string containing the list of security members.\n */\n getSecurityMembersForParentId(parentId) {\n const resourceUri = this._httpHelper._config.ResourceUri.SecurityMembers;\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n\n const params = {\n parentId\n };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n /**\n * Removes a security member from a parent resource.\n * @param {string} parentId - The ID (Guid) of the parent resource to remove the member from.\n * @param {string} memberId - The ID (Guid) of the user or group to remove.\n * @returns {Promise<string>} JSON string confirming the security member was removed.\n */\n removeSecurityMember(parentId, memberId) {\n const resourceUri = this._httpHelper._config.ResourceUri.SecurityMembers;\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'DELETE' };\n\n const params = {\n parentId,\n memberId\n };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n /**\n * Updates the role of an existing security member on a parent resource.\n * @param {string} parentId - The ID (Guid) of the parent resource containing the member.\n * @param {string} memberId - The ID (Guid) of the user or group whose role to update.\n * @param {string} roleType - The new role to assign to the member.\n * @returns {Promise<string>} JSON string confirming the security member role was updated.\n */\n updateSecurityMember(parentId, memberId, roleType) {\n const resourceUri = this._httpHelper._config.ResourceUri.SecurityMembers;\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'PUT' };\n\n const postData = {\n parentId,\n memberId,\n role: roleType\n };\n\n return this._httpHelper.doVvClientRequest(url, opts, null, postData);\n }\n}\n\nexport default SecurityMembersManager;\n","/**\n * Manages layout retrieval operations via the VVRestApi.\n */\nexport class LayoutsManager {\n /**\n * @param {object} httpHelper - The HTTP helper instance used to make API requests.\n */\n constructor(httpHelper) {\n this._httpHelper = httpHelper;\n }\n\n /**\n * Retrieves the layout configuration for the current site.\n * @returns {Promise<string>} JSON string containing the layout configuration.\n */\n getLayout() {\n const resourceUri = this._httpHelper._config.ResourceUri.Layout;\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n\n return this._httpHelper.doVvClientRequest(url, opts, {}, null);\n }\n}\n\nexport default LayoutsManager;\n","/**\n * Manages report retrieval operations via the VVRestApi.\n */\nexport class ReportsManager {\n /**\n * @param {object} httpHelper - The HTTP helper instance used to make API requests.\n */\n constructor(httpHelper) {\n this._httpHelper = httpHelper;\n }\n\n /**\n * Retrieves a list of available reports.\n * @param {object} params - URL parameters to include in the request.\n * @returns {Promise<string>} JSON string containing the list of reports.\n */\n getReports(params) {\n const resourceUri = this._httpHelper._config.ResourceUri.Reports;\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n /**\n * Downloads a report as a PDF by its ID.\n * @param {string} reportId - The ID (Guid) of the report to download.\n * @param {object} params - URL parameters to include in the request.\n * @returns {Promise<Buffer>} The API response containing the raw PDF file bytes.\n */\n getReportPDF(reportId, params) {\n const resourceUri = this._httpHelper._config.ResourceUri.ReportServerPDF.replace('{id}', reportId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GETSTREAM' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n}\n\nexport default ReportsManager;\n","/**\n * Manages language resource operations via the VVRestApi.\n */\nexport class LanguageResourcesManager {\n /**\n * @param {object} httpHelper - The HTTP helper instance used to make API requests.\n * @param {string} baseUrl - The base URL of the VisualVault server.\n */\n constructor(httpHelper, baseUrl) {\n this._httpHelper = httpHelper;\n this._baseUrl = baseUrl;\n this._apiUrl = httpHelper._config.BaseApiUri\n }\n\n /**\n * Retrieves available language areas.\n * @param {object} params - URL parameters to include in the request.\n * @returns {Promise<string>} JSON string containing the list of language areas.\n */\n getLanguageAreas(params) {\n const resourceUri = this._httpHelper._config.ResourceUri.LanguageAreas;\n const url = this._baseUrl + this._apiUrl + resourceUri;\n const opts = { method: 'GET' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n /**\n * Retrieves available languages.\n * @param {object} params - URL parameters to include in the request.\n * @returns {Promise<string>} JSON string containing the list of available languages.\n */\n getLanguages(params) {\n const resourceUri = this._httpHelper._config.ResourceUri.Languages;\n const url = this._baseUrl + this._apiUrl + resourceUri;\n const opts = { method: 'GET' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n /**\n * Exports language resource translations as a downloadable file.\n * @param {object} params - URL parameters to include in the request.\n * @returns {Promise<Buffer>} The API response containing the raw exported language file bytes.\n */\n exportLanguages(params) {\n const resourceUri = this._httpHelper._config.ResourceUri.ExportLanguages;\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GETSTREAM' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n /**\n * Imports language resource translations from a file.\n * @param {object} params - URL parameters containing the target area and language (params.area, params.lang).\n * @param {Buffer} fileData - The raw file bytes of the language file to import.\n * @param {string} fileName - The name of the file being imported.\n * @returns {Promise<string>} JSON string confirming the language import was processed.\n */\n importLanguages(params, fileData, fileName) {\n const resourceUri = this._httpHelper._config.ResourceUri.ImportLanguages;\n const url = this._httpHelper.getUrl(resourceUri) + `?area=${params.area}&lang=${params.lang}`;\n const opts = { method: 'POSTSTREAM' };\n const data = { fileName };\n\n return this._httpHelper.doVvClientRequest(url, opts, null, data, fileData);\n }\n}\n\nexport default LanguageResourcesManager;\n","/**\n * Manages dropdown list operations via the VVRestApi.\n */\nexport class DropdownListsManager {\n /**\n * @param {object} httpHelper - The HTTP helper instance used to make API requests.\n */\n constructor(httpHelper) {\n this._httpHelper = httpHelper;\n }\n\n /**\n * Retrieves all dropdown lists.\n * @param {object} params - URL parameters to include in the request.\n * @returns {Promise<string>} JSON string containing the list of dropdown lists.\n */\n getDropDownLists(params) {\n const resourceUri = this._httpHelper._config.ResourceUri.DropDownLists;\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n /**\n * Retrieves a specific dropdown list by its ID.\n * @param {object} params - URL parameters to include in the request.\n * @param {string} listId - The ID (Guid) of the dropdown list to retrieve.\n * @returns {Promise<string>} JSON string containing the dropdown list details.\n */\n getDropDownListById(params, listId) {\n const resourceUri = this._httpHelper._config.ResourceUri.DropDownListsId.replace('{id}', listId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n /**\n * Retrieves the items of a specific dropdown list by its ID.\n * @param {object} params - URL parameters to include in the request.\n * @param {string} listId - The ID (Guid) of the dropdown list whose items to retrieve.\n * @returns {Promise<string>} JSON string containing the dropdown list items.\n */\n getDropDownListItemsById(params, listId) {\n const resourceUri = this._httpHelper._config.ResourceUri.DropDownListsIdItems.replace('{id}', listId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'GET' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n /**\n * Creates a new dropdown list with the specified items.\n * @param {object} params - URL parameters to include in the request.\n * @param {string} ddName - The name of the new dropdown list.\n * @param {string} ddDescription - The description of the new dropdown list.\n * @param {object[]} ddItems - The items to include in the new dropdown list.\n * @returns {Promise<string>} JSON string containing the created dropdown list details.\n */\n addDropDownList(params, ddName, ddDescription, ddItems) {\n const resourceUri = this._httpHelper._config.ResourceUri.DropDownLists;\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'POST' };\n const data = {\n Name: ddName,\n Description: ddDescription,\n Items: ddItems\n };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n }\n\n /**\n * Deletes a dropdown list by its ID.\n * @param {object} params - URL parameters to include in the request.\n * @param {string} listId - The ID (Guid) of the dropdown list to delete.\n * @returns {Promise<string>} JSON string confirming the dropdown list was deleted.\n */\n deleteDropDownList(params, listId) {\n const resourceUri = this._httpHelper._config.ResourceUri.DropDownListsId.replace('{id}', listId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'DELETE' };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, null);\n }\n\n /**\n * Updates an existing dropdown list by its ID.\n * @param {object} params - URL parameters to include in the request.\n * @param {string} listId - The ID (Guid) of the dropdown list to update.\n * @param {string} ddName - The updated name for the dropdown list.\n * @param {string} ddDescription - The updated description for the dropdown list.\n * @param {object[]} items - The updated items for the dropdown list.\n * @returns {Promise<string>} JSON string confirming the dropdown list was updated.\n */\n updateDropDownList(params, listId, ddName, ddDescription, items) {\n const resourceUri = this._httpHelper._config.ResourceUri.DropDownListsId.replace('{id}', listId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'PUT' };\n const data = {\n Name: ddName,\n Description: ddDescription,\n Items: items\n };\n\n return this._httpHelper.doVvClientRequest(url, opts, params, data);\n }\n\n /**\n * Deletes one or more items from a dropdown list.\n * @param {object} params - URL parameters to include in the request.\n * @param {string} listId - The ID (Guid) of the dropdown list containing the items to delete.\n * @param {string[]} itemIds - Array of item IDs to delete from the dropdown list.\n * @returns {Promise<string>} JSON string confirming the items were deleted.\n */\n deleteDropDownListItem(params, listId, itemIds) {\n const resourceUri = this._httpHelper._config.ResourceUri.DropDownListsIdItems.replace('{id}', listId);\n const url = this._httpHelper.getUrl(resourceUri);\n const opts = { method: 'DELETE' };\n const mergedParams = { ...params, itemIds };\n\n return this._httpHelper.doVvClientRequest(url, opts, mergedParams, null);\n }\n}\n\nexport default DropdownListsManager;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAKM,kBAOO;AAZb;AAAA;AAKA,IAAM,mBAAmB,MACvB,OAAO,aAAa,cAChB,IAAI,IAAI,QAAQ,UAAU,EAAE,EAAE,OAC7B,SAAS,iBAAiB,SAAS,cAAc,QAAQ,YAAY,MAAM,WAC1E,SAAS,cAAc,MACvB,IAAI,IAAI,WAAW,SAAS,OAAO,EAAE;AAEtC,IAAM,gBAAgC,iCAAiB;AAAA;AAAA;;;ACZ9D,IAAa;AAAb;AAAA;AAAA;AAAO,IAAM,eAAN,MAAM,cAAa;AAAA,MACtB,cAAc;AACV,aAAK,kBAAkB;AACvB,aAAK,SAAS;AACd,aAAK,UAAU;AACf,aAAK,oBAAoB;AACzB,aAAK,gBAAgB;AACrB,aAAK,gBAAgB;AACrB,aAAK,iBAAiB;AACtB,aAAK,cAAc;AACnB,aAAK,YAAY;AACjB,aAAK,eAAe;AACpB,aAAK,YAAY;AACjB,aAAK,WAAW;AAChB,aAAK,eAAe;AACpB,aAAK,SAAS;AACd,aAAK,WAAW;AAChB,aAAK,WAAW;AAAA,MACpB;AAAA,MAEA,aAAa;AACT,cAAM,aAAa,IAAI,cAAa;AACpC,mBAAW,kBAAkB,KAAK;AAClC,mBAAW,SAAS,KAAK;AACzB,mBAAW,UAAU,KAAK;AAC1B,mBAAW,oBAAoB,KAAK;AACpC,mBAAW,gBAAgB,KAAK;AAChC,mBAAW,gBAAgB,KAAK;AAChC,mBAAW,iBAAiB,KAAK;AACjC,mBAAW,cAAc,KAAK;AAC9B,mBAAW,YAAY,KAAK;AAC5B,mBAAW,eAAe,KAAK;AAC/B,mBAAW,YAAY,KAAK;AAC5B,mBAAW,WAAW,KAAK;AAC3B,mBAAW,eAAe,KAAK;AAC/B,mBAAW,SAAS,KAAK;AACzB,mBAAW,WAAW,KAAK;AAC3B,mBAAW,WAAW,KAAK;AAC3B,eAAO;AAAA,MACX;AAAA,MAEA,aAAa,KAAK;AACd,aAAK,YAAY;AACjB,aAAK,cAAc,IAAI,OAAO;AAC9B,aAAK,iBAAiB,IAAI,KAAK,IAAI,SAAS,CAAC;AAC7C,aAAK,YAAY;AAAA,MACrB;AAAA,IACJ;AAAA;AAAA;;;AC/CA;AAAA;AAAA;AAAA;AAAA;AAAA,IACA,cACA,gBACA,WAEM,OAEO,WAuRN;AA9RP;AAAA;AAAA;AAAA;AACA,mBAAwB;AACxB,qBAAiB;AACjB,gBAAe;AAEf,IAAM,YAAQ,aAAAA,SAAY,kBAAkB;AAErC,IAAM,YAAN,MAAgB;AAAA,MACnB,cAAc;AACV,aAAK,SAAS,eAAAC;AACd,aAAK,KAAK,UAAAC;AAAA,MACd;AAAA,MAEA,MAAM,qBAAqB,UAAU,cAAc,QAAQ,UAAU,UAAU,SAAS,QAAQ,eAAe,eAAe,mBAAmB;AAC7I,cAAM,4CAA4C,MAAM;AAExD,YAAI;AACA,gBAAM,eAAe,MAAM,KAAK;AAAA,YAC5B;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACJ;AAEA,gBAAM,8BAA8B;AAEpC,cAAI,OAAQ,gBAAiB,eAAe,gBAAgB,MAAM;AAC9D,yBAAa,UAAU;AACvB,yBAAa,SAAS;AACtB,yBAAa,oBAAoB;AACjC,yBAAa,gBAAgB;AAC7B,yBAAa,gBAAgB;AAC7B,yBAAa,WAAW;AACxB,yBAAa,eAAe;AAC5B,yBAAa,SAAS;AACtB,yBAAa,WAAW;AACxB,yBAAa,WAAW;AACxB,yBAAa,kBAAkB;AAAA,UACnC;AAEA,iBAAO;AAAA,QACX,SAAS,OAAO;AACZ,gBAAM,mCAAmC,MAAM,OAAO;AACtD,gBAAM;AAAA,QACV;AAAA,MACJ;AAAA,MAEA,MAAM,WAAW,KAAK,SAAS,QAAQ,mBAAmB,eAAe,eAAe;AACpF,cAAM,mBAAmB;AAEzB,YAAI;AACA,gBAAM,eAAe,MAAM,KAAK;AAAA,YAC5B;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACJ;AAEA,gBAAM,oBAAoB;AAE1B,cAAI,OAAQ,gBAAiB,eAAe,gBAAgB,MAAM;AAC9D,yBAAa,UAAU;AACvB,yBAAa,SAAS;AACtB,yBAAa,oBAAoB;AACjC,yBAAa,gBAAgB;AAC7B,yBAAa,gBAAgB;AAC7B,yBAAa,kBAAkB;AAC/B,yBAAa,QAAQ;AAAA,UACzB;AAEA,iBAAO;AAAA,QACX,SAAS,OAAO;AACZ,gBAAM,yBAAyB,MAAM,OAAO;AAC5C,gBAAM;AAAA,QACV;AAAA,MACJ;AAAA,MAEA,MAAM,uBAAuB,cAAc;AACvC,cAAM,6CAA6C,aAAa,KAAK;AAErE,YAAI;AACA,cAAI,aAAa,OAAO;AACpB,kBAAM,WAAW,MAAM,KAAK;AAAA,cACxB,aAAa;AAAA,cACb,aAAa;AAAA,cACb,aAAa;AAAA,cACb,aAAa;AAAA,cACb,aAAa;AAAA,cACb;AAAA,YACJ;AAEA,kBAAM,sCAAsC;AAC5C,mBAAO;AAAA,UACX,OAAO;AACH,kBAAM,WAAW,MAAM,KAAK;AAAA,cACxB,aAAa;AAAA,cACb,aAAa;AAAA,cACb,aAAa;AAAA,cACb,aAAa;AAAA,cACb,aAAa;AAAA,cACb,aAAa;AAAA,cACb,aAAa;AAAA,cACb,aAAa;AAAA,cACb,aAAa;AAAA,cACb;AAAA,YACJ;AAEA,kBAAM,iDAAiD;AACvD,mBAAO;AAAA,UACX;AAAA,QACJ,SAAS,OAAO;AACZ,gBAAM,qCAAqC,MAAM,OAAO;AACxD,gBAAM;AAAA,QACV;AAAA,MACJ;AAAA,MAEA,MAAM,oBAAoB,cAAc;AACpC,YAAI,aAAa,OAAO;AACpB,iBAAO,MAAM,KAAK,uBAAuB,YAAY;AAAA,QACzD;AAEA,cAAM,QAAQ;AAAA,UACV,YAAY;AAAA,UACZ,eAAe,aAAa;AAAA,UAC5B,WAAW,aAAa;AAAA,UACxB,eAAe,aAAa;AAAA,QAChC;AAEA,YAAI,aAAa,UAAU,GAAG;AAC1B,gBAAM,UAAU,IAAI,aAAa,UAAU;AAAA,QAC/C;AAEA,cAAM,cAAc,aAAa,UAAU,aAAa;AACxD,cAAM,iCAAiC,WAAW;AAElD,YAAI;AACA,gBAAM,WAAW,MAAM,MAAM,aAAa;AAAA,YACtC,QAAQ;AAAA,YACR,SAAS;AAAA,cACL,gBAAgB;AAAA,YACpB;AAAA,YACA,MAAM,IAAI,gBAAgB,KAAK;AAAA,UACnC,CAAC;AAED,gBAAM,OAAO,MAAM,SAAS,KAAK;AAEjC,cAAI,SAAS,WAAW,KAAK;AACzB,kBAAM,6BAA6B;AAEnC,kBAAM,iBAAiB,KAAK,MAAM,IAAI;AACtC,yBAAa,cAAc,eAAe;AAC1C,yBAAa,YAAY,eAAe;AACxC,yBAAa,eAAe,eAAe;AAC3C,yBAAa,YAAY,eAAe;AAExC,kBAAM,aAAa,oBAAI,KAAK;AAC5B,uBAAW,WAAW,WAAW,WAAW,IAAI,aAAa,SAAS;AAEtE,yBAAa,iBAAiB;AAC9B,yBAAa,kBAAkB;AAE/B,mBAAO;AAAA,UACX,WAAW,SAAS,WAAW,OAAO,SAAS,WAAW,OAAO,SAAS,WAAW,KAAK;AACtF,yBAAa,kBAAkB;AAC/B,kBAAM,IAAI,MAAM,gEAAgE,SAAS,MAAM,MAAM,KAAK,UAAU,GAAG,GAAG,CAAC,EAAE;AAAA,UACjI,OAAO;AACH,yBAAa,kBAAkB;AAC/B,kBAAM,IAAI,MAAM,2CAA2C,SAAS,MAAM,EAAE;AAAA,UAChF;AAAA,QACJ,SAAS,OAAO;AACZ,uBAAa,kBAAkB;AAC/B,gBAAM,iCAAiC,MAAM,OAAO;AACpD,gBAAM;AAAA,QACV;AAAA,MACJ;AAAA,MAEA,MAAM,WAAW,UAAU,cAAc,QAAQ,UAAU,UAAU,SAAS,eAAe,eAAe,mBAAmB;AAC3H,cAAM,eAAe,IAAI,aAAa;AAEtC,cAAM,QAAQ;AAAA,UACV,YAAY;AAAA,UACZ,WAAW;AAAA,UACX,eAAe;AAAA,UACf,UAAU;AAAA,UACV;AAAA,UACA,OAAO;AAAA,QACX;AAEA,cAAM,cAAc,UAAU;AAC9B,cAAM,iEAAiE,aAAa,QAAQ,eAAe,eAAe,QAAQ;AAElI,YAAI;AACA,gBAAM,WAAW,MAAM,MAAM,aAAa;AAAA,YACtC,QAAQ;AAAA,YACR,SAAS;AAAA,cACL,gBAAgB;AAAA,YACpB;AAAA,YACA,MAAM,IAAI,gBAAgB,KAAK;AAAA,UACnC,CAAC;AAED,gBAAM,OAAO,MAAM,SAAS,KAAK;AAEjC,cAAI,SAAS,WAAW,KAAK;AACzB,kBAAM,iBAAiB,KAAK,MAAM,IAAI;AACtC,yBAAa,cAAc,eAAe;AAC1C,yBAAa,YAAY,eAAe;AACxC,yBAAa,eAAe,eAAe;AAC3C,yBAAa,YAAY,eAAe;AAExC,kBAAM,aAAa,oBAAI,KAAK;AAC5B,uBAAW,WAAW,WAAW,WAAW,IAAI,aAAa,SAAS;AAEtE,yBAAa,iBAAiB;AAC9B,yBAAa,kBAAkB;AAE/B,kBAAM,oBAAoB;AAC1B,mBAAO;AAAA,UACX,WAAW,SAAS,WAAW,OAAO,SAAS,WAAW,OAAO,SAAS,WAAW,KAAK;AACtF,yBAAa,kBAAkB;AAC/B,kBAAM,IAAI,MAAM,gEAAgE,SAAS,MAAM,MAAM,KAAK,UAAU,GAAG,GAAG,CAAC,EAAE;AAAA,UACjI,OAAO;AACH,yBAAa,kBAAkB;AAC/B,kBAAM,IAAI,MAAM,2CAA2C,SAAS,MAAM,EAAE;AAAA,UAChF;AAAA,QACJ,SAAS,OAAO;AACZ,uBAAa,kBAAkB;AAC/B,gBAAM,wBAAwB,MAAM,OAAO;AAC3C,gBAAM;AAAA,QACV;AAAA,MACJ;AAAA,MAEA,MAAM,SAAS,KAAK,SAAS,eAAe,eAAe,mBAAmB;AAC1E,cAAM,eAAe,IAAI,aAAa;AAEtC,cAAM,UAAU;AAAA,UACZ,eAAe,YAAY;AAAA,QAC/B;AAEA,cAAM,cAAc,UAAU;AAC9B,cAAM,uCAAuC,aAAa,eAAe,aAAa;AAEtF,YAAI;AACA,gBAAM,WAAW,MAAM,MAAM,aAAa;AAAA,YACtC,QAAQ;AAAA,YACR;AAAA,UACJ,CAAC;AAED,gBAAM,OAAO,MAAM,SAAS,KAAK;AAEjC,cAAI,SAAS,WAAW,KAAK;AACzB,kBAAM,iBAAiB,KAAK,MAAM,IAAI;AAEtC,yBAAa,cAAc,eAAe,KAAK;AAC/C,yBAAa,iBAAiB,IAAI,KAAK,eAAe,KAAK,OAAO;AAClE,yBAAa,kBAAkB;AAC/B,yBAAa,QAAQ;AAErB,kBAAM,kBAAkB;AACxB,mBAAO;AAAA,UACX,WAAW,SAAS,WAAW,OAAO,SAAS,WAAW,OAAO,SAAS,WAAW,KAAK;AACtF,yBAAa,kBAAkB;AAC/B,kBAAM,IAAI,MAAM,gEAAgE,SAAS,MAAM,MAAM,KAAK,UAAU,GAAG,GAAG,CAAC,EAAE;AAAA,UACjI,OAAO;AACH,yBAAa,kBAAkB;AAC/B,kBAAM,IAAI,MAAM,kCAAkC,SAAS,MAAM,EAAE;AAAA,UACvE;AAAA,QACJ,SAAS,OAAO;AACZ,uBAAa,kBAAkB;AAC/B,gBAAM,sBAAsB,MAAM,OAAO;AACzC,gBAAM;AAAA,QACV;AAAA,MACJ;AAAA,MAEA,SAAS,QAAQ,QAAQ;AACrB,eAAO,OAAO,QAAQ,QAAQ,OAAO,SAAS,OAAO,MAAM,MAAM;AAAA,MACrE;AAAA,IACJ;AAEA,IAAO,oBAAQ;AAAA;AAAA;;;AC9Rf;AAAA;AAAA,mBAAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA;;;ACAA;;;ACAA;AAAA,IAAAC,gBAAwB;AAExB,IAAMC,aAAQ,cAAAC,SAAY,kBAAkB;AAErC,IAAM,aAAN,MAAiB;AAAA,EACpB,YAAY,cAAc,YAAY;AAClC,SAAK,gBAAgB;AACrB,SAAK,UAAU;AACf,SAAK,cAAc;AAAA,EACvB;AAAA,EAEA,MAAM,kBAAkB,KAAK,SAAS,QAAQ,MAAM,QAAQ;AAExD,QAAI,KAAK,cAAc,iBAAiB,IAAI,MAAK,oBAAI,KAAK,GAAE,QAAQ,IAAI,KAAK,GAAI,GAAG;AAChF,MAAAD,OAAM,wDAAwD;AAE9D,UAAI;AACA,cAAM,KAAK,sBAAsB;AACjC,QAAAA,OAAM,2CAA2C;AACjD,eAAO,MAAM,KAAK,wBAAwB,KAAK,SAAS,QAAQ,MAAM,MAAM;AAAA,MAChF,SAAS,OAAO;AACZ,QAAAA,OAAM,8CAA8C,MAAM,OAAO;AACjE,cAAM,IAAI,MAAM,4CAA4C,KAAK;AAAA,MACrE;AAAA,IACJ,OAAO;AACH,aAAO,MAAM,KAAK,wBAAwB,KAAK,SAAS,QAAQ,MAAM,MAAM;AAAA,IAChF;AAAA,EACJ;AAAA,EAEA,MAAM,wBAAwB,KAAK,SAAS,QAAQ,MAAM,QAAQ,UAAU,GAAG;AAC3E,QAAI;AACA,UAAI;AAEJ,UAAI,QAAQ,WAAW,OAAO;AAC1B,uBAAe,MAAM,KAAK,QAAQ,KAAK,MAAM;AAAA,MACjD,WAAW,QAAQ,WAAW,aAAa;AACvC,uBAAe,MAAM,KAAK,cAAc,KAAK,MAAM;AAAA,MACvD,WAAW,QAAQ,WAAW,QAAQ;AAClC,uBAAe,MAAM,KAAK,SAAS,KAAK,QAAQ,IAAI;AAAA,MACxD,WAAW,QAAQ,WAAW,cAAc;AACxC,uBAAe,MAAM,KAAK,eAAe,KAAK,QAAQ,MAAM,MAAM;AAAA,MACtE,WAAW,QAAQ,WAAW,OAAO;AACjC,uBAAe,MAAM,KAAK,QAAQ,KAAK,QAAQ,IAAI;AAAA,MACvD,WAAW,QAAQ,WAAW,aAAa;AACvC,uBAAe,MAAM,KAAK,cAAc,KAAK,QAAQ,MAAM,MAAM;AAAA,MACrE,WAAW,QAAQ,WAAW,UAAU;AACpC,uBAAe,MAAM,KAAK,WAAW,KAAK,MAAM;AAAA,MACpD,OAAO;AACH,cAAM,IAAI,MAAM,gCAAgC;AAAA,MACpD;AAEA,aAAO;AAAA,IACX,SAAS,OAAO;AAEZ,UAAI,MAAM,WAAW,OAAO,UAAU,KAAK,aAAa;AACpD,cAAM,UAAU,KAAK,gBAAgB,MAAM,SAAS;AACpD,QAAAA,OAAM,mDAAmD,SAAS,KAAK,cAAc,UAAU,CAAC;AAEhG,cAAM,IAAI,QAAQ,aAAW,WAAW,SAAS,OAAO,CAAC;AACzD,eAAO,MAAM,KAAK,wBAAwB,KAAK,SAAS,QAAQ,MAAM,QAAQ,UAAU,CAAC;AAAA,MAC7F;AAEA,YAAM;AAAA,IACV;AAAA,EACJ;AAAA,EAEA,MAAM,cAAc,KAAK,SAAS;AAC9B,UAAM,UAAU;AAAA,MACZ,iBAAiB,YAAY,KAAK,cAAc;AAAA,MAChD,gBAAgB;AAAA,IACpB;AAEA,IAAAA,OAAM,iCAAiC,GAAG;AAE1C,UAAM,eAAe;AAAA,MACjB,QAAQ,QAAQ;AAAA,MAChB,SAAS,EAAE,GAAG,SAAS,GAAG,QAAQ,QAAQ;AAAA,IAC9C;AAGA,QAAI,QAAQ,MAAM,OAAO,KAAK,QAAQ,EAAE,EAAE,SAAS,GAAG;AAClD,YAAM,cAAc,IAAI,gBAAgB,QAAQ,EAAE,EAAE,SAAS;AAC7D,YAAM,GAAG,GAAG,IAAI,WAAW;AAAA,IAC/B;AAGA,QAAI,QAAQ,SAAS,QAAQ,WAAW,UAAU,QAAQ,WAAW,QAAQ;AACzE,mBAAa,OAAO,KAAK,UAAU,QAAQ,IAAI;AAAA,IACnD;AAEA,UAAM,WAAW,MAAM,MAAM,KAAK,YAAY;AAC9C,UAAM,eAAe,MAAM,SAAS,KAAK;AAEzC,QAAI,CAAC,SAAS,IAAI;AACd,UAAI;AACJ,UAAI;AACA,qBAAa,KAAK,MAAM,YAAY;AAAA,MACxC,SAAS,GAAG;AACR,qBAAa,EAAE,MAAM,aAAa;AAAA,MACtC;AAEA,UAAI,SAAS,WAAW,OAAO,SAAS,WAAW,KAAK;AACpD,aAAK,cAAc,kBAAkB;AACrC,cAAM,IAAI,MAAM,KAAK,UAAU,WAAW,IAAI,CAAC;AAAA,MACnD,WAAW,SAAS,WAAW,KAAK;AAChC,cAAM,QAAQ,IAAI,MAAM,KAAK,UAAU,WAAW,IAAI,CAAC;AACvD,cAAM,SAAS;AACf,cAAM,YAAY,WAAW,MAAM;AACnC,cAAM;AAAA,MACV,OAAO;AACH,cAAM,IAAI,MAAM,YAAY;AAAA,MAChC;AAAA,IACJ;AAEA,WAAO;AAAA,EACX;AAAA,EAEA,MAAM,wBAAwB,KAAK,SAAS,QAAQ;AAChD,IAAAA,OAAM,wCAAwC,GAAG;AAEjD,UAAM,WAAW,IAAI,SAAS;AAG9B,QAAI,QAAQ,MAAM;AACd,iBAAW,OAAO,QAAQ,MAAM;AAC5B,YAAI,QAAQ,KAAK,eAAe,GAAG,GAAG;AAClC,mBAAS,OAAO,KAAK,QAAQ,KAAK,GAAG,CAAC;AAAA,QAC1C;AAAA,MACJ;AAAA,IACJ;AAGA,QAAI,OAAO,SAAS,MAAM,GAAG;AAEzB,YAAM,WAAW,QAAQ,MAAM,YAAY;AAC3C,YAAM,OAAO,IAAI,KAAK,CAAC,MAAM,CAAC;AAC9B,eAAS,OAAO,cAAc,MAAM,QAAQ;AAAA,IAChD,WAAW,MAAM,QAAQ,MAAM,GAAG;AAE9B,eAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK;AACpC,cAAM,cAAc,OAAO,CAAC;AAC5B,YAAI,OAAO,SAAS,YAAY,MAAM,GAAG;AACrC,gBAAM,WAAW,YAAY,YAAY,OAAO,CAAC;AACjD,gBAAM,OAAO,IAAI,KAAK,CAAC,YAAY,MAAM,CAAC;AAC1C,mBAAS,OAAO,cAAc,MAAM,QAAQ;AAAA,QAChD,OAAO;AACH,gBAAM,IAAI,MAAM,uDAAuD,CAAC,EAAE;AAAA,QAC9E;AAAA,MACJ;AAAA,IACJ,OAAO;AACH,YAAM,IAAI,MAAM,kBAAkB;AAAA,IACtC;AAEA,UAAM,UAAU;AAAA,MACZ,iBAAiB,YAAY,KAAK,cAAc;AAAA,IACpD;AAEA,UAAM,WAAW,MAAM,MAAM,KAAK;AAAA,MAC9B,QAAQ,QAAQ;AAAA,MAChB;AAAA,MACA,MAAM;AAAA,IACV,CAAC;AAED,UAAM,eAAe,MAAM,SAAS,KAAK;AAEzC,QAAI,CAAC,SAAS,IAAI;AACd,YAAM,IAAI,MAAM,YAAY;AAAA,IAChC;AAEA,WAAO;AAAA,EACX;AAAA,EAEA,MAAM,QAAQ,KAAK,QAAQ;AACvB,UAAM,UAAU,EAAE,QAAQ,OAAO,IAAI,UAAU,CAAC,GAAG,SAAS,CAAC,GAAG,MAAM,KAAK;AAE3E,QAAI,KAAK,cAAc,eAAe,MAAM;AACxC,YAAM,IAAI,MAAM,sBAAsB;AAAA,IAC1C;AAEA,WAAO,MAAM,KAAK,cAAc,KAAK,OAAO;AAAA,EAChD;AAAA,EAEA,MAAM,cAAc,KAAK,QAAQ;AAC7B,QAAI,KAAK,cAAc,eAAe,MAAM;AACxC,YAAM,IAAI,MAAM,sBAAsB;AAAA,IAC1C;AAEA,UAAM,UAAU;AAAA,MACZ,iBAAiB,YAAY,KAAK,cAAc;AAAA,MAChD,gBAAgB;AAAA,IACpB;AAEA,QAAI,UAAU,OAAO,KAAK,MAAM,EAAE,SAAS,GAAG;AAC1C,YAAM,cAAc,IAAI,gBAAgB,MAAM,EAAE,SAAS;AACzD,YAAM,GAAG,GAAG,IAAI,WAAW;AAAA,IAC/B;AAEA,UAAM,WAAW,MAAM,MAAM,KAAK,EAAE,QAAQ,OAAO,QAAQ,CAAC;AAE5D,QAAI,CAAC,SAAS,IAAI;AACd,YAAM,IAAI,MAAM,uBAAuB,SAAS,MAAM,EAAE;AAAA,IAC5D;AAEA,UAAM,SAAS,MAAM,SAAS,YAAY;AAC1C,WAAO,OAAO,KAAK,MAAM;AAAA,EAC7B;AAAA,EAEA,MAAM,SAAS,KAAK,QAAQ,MAAM;AAC9B,UAAM,UAAU,EAAE,QAAQ,QAAQ,IAAI,UAAU,CAAC,GAAG,MAAM,MAAM,SAAS,CAAC,EAAE;AAE5E,QAAI,KAAK,cAAc,eAAe,MAAM;AACxC,YAAM,IAAI,MAAM,sBAAsB;AAAA,IAC1C;AAEA,WAAO,MAAM,KAAK,cAAc,KAAK,OAAO;AAAA,EAChD;AAAA,EAEA,MAAM,eAAe,KAAK,QAAQ,MAAM,QAAQ;AAC5C,UAAM,UAAU,EAAE,QAAQ,QAAQ,IAAI,UAAU,CAAC,GAAG,MAAM,MAAM,SAAS,CAAC,EAAE;AAE5E,QAAI,KAAK,cAAc,eAAe,MAAM;AACxC,YAAM,IAAI,MAAM,sBAAsB;AAAA,IAC1C;AAEA,WAAO,MAAM,KAAK,wBAAwB,KAAK,SAAS,MAAM;AAAA,EAClE;AAAA,EAEA,MAAM,QAAQ,KAAK,QAAQ,MAAM;AAC7B,UAAM,UAAU,EAAE,QAAQ,OAAO,IAAI,UAAU,CAAC,GAAG,MAAM,MAAM,SAAS,CAAC,EAAE;AAE3E,QAAI,KAAK,cAAc,eAAe,MAAM;AACxC,YAAM,IAAI,MAAM,sBAAsB;AAAA,IAC1C;AAEA,WAAO,MAAM,KAAK,cAAc,KAAK,OAAO;AAAA,EAChD;AAAA,EAEA,MAAM,cAAc,KAAK,QAAQ,MAAM,QAAQ;AAC3C,UAAM,UAAU,EAAE,QAAQ,OAAO,IAAI,UAAU,CAAC,GAAG,MAAM,MAAM,SAAS,CAAC,EAAE;AAE3E,QAAI,KAAK,cAAc,eAAe,MAAM;AACxC,YAAM,IAAI,MAAM,sBAAsB;AAAA,IAC1C;AAEA,WAAO,MAAM,KAAK,wBAAwB,KAAK,SAAS,MAAM;AAAA,EAClE;AAAA,EAEA,MAAM,WAAW,KAAK,QAAQ;AAC1B,UAAM,UAAU,EAAE,QAAQ,UAAU,IAAI,UAAU,CAAC,GAAG,MAAM,MAAM,SAAS,CAAC,EAAE;AAE9E,QAAI,KAAK,cAAc,eAAe,MAAM;AACxC,YAAM,IAAI,MAAM,sBAAsB;AAAA,IAC1C;AAEA,WAAO,MAAM,KAAK,cAAc,KAAK,OAAO;AAAA,EAChD;AAAA,EAEA,MAAM,wBAAwB;AAC1B,SAAK,cAAc,kBAAkB;AAGrC,UAAM,EAAE,WAAAE,WAAU,IAAI,MAAM;AAC5B,UAAM,cAAc,IAAIA,WAAU;AAElC,QAAI;AACA,YAAM,YAAY,oBAAoB,KAAK,aAAa;AAAA,IAC5D,SAAS,OAAO;AACZ,YAAM,YAAY,uBAAuB,KAAK,aAAa;AAAA,IAC/D;AAAA,EACJ;AAAA,EAEA,QAAQ,UAAU,KAAK,QAAQ,MAAM;AACjC,UAAM,UAAU,EAAE,QAAQ,SAAS,YAAY,EAAE;AACjD,IAAAF,OAAM,oCAAoC,SAAS,YAAY,GAAG,GAAG;AACrE,WAAO,KAAK,kBAAkB,KAAK,SAAS,QAAQ,IAAI;AAAA,EAC5D;AAAA,EAEA,OAAO,aAAa;AAChB,WAAO,KAAK,cAAc,UAAU,KAAK,cAAc,SAAS;AAAA,EACpE;AAAA,EAEA,gBAAgB,WAAW;AACvB,QAAI,QAAQ;AACZ,QAAI,aAAa,CAAC,MAAM,KAAK,MAAM,SAAS,CAAC,GAAG;AAC5C,YAAM,MAAM,oBAAI,KAAK;AACrB,cAAQ,KAAK,MAAM,SAAS,IAAI,IAAI,QAAQ;AAC5C,UAAI,QAAQ,GAAG;AACX,iBAAS;AAAA,MACb;AAAA,IACJ;AACA,WAAO;AAAA,EACX;AACJ;;;ADlSA;AACA;AAIA;AACA;AAEA,IAAO,iBAAQ;AAAA,EACX,YAAY;AAAA,EACZ,cAAc;AAAA,EACd,WAAW;AACf;;;AEdA;AAaO,IAAM,kBAAN,MAAsB;AAAA;AAAA;AAAA;AAAA,EAIzB,YAAY,YAAY;AACpB,SAAK,cAAc;AAAA,EACvB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAsBA,MAAM,eAAe,MAAM;AACvB,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY,OAAO;AAChE,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,OAAO;AAE9B,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,MAAM,IAAI;AAAA,EACnE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,YAAY,oBAAoB;AAClC,QAAI,cAAc,KAAK,YAAY,QAAQ,YAAY,OAAO;AAC9D,kBAAc,YAAY,QAAQ,QAAQ,kBAAkB;AAC5D,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,MAAM;AAE7B,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,MAAM,IAAI;AAAA,EACnE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,qBAAqB,oBAAoB;AAC3C,QAAI,cAAc,KAAK,YAAY,QAAQ,YAAY,OAAO;AAC9D,kBAAc,YAAY,QAAQ,QAAQ,kBAAkB;AAC5D,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAE/C,UAAM,OAAO,EAAE,QAAQ,MAAM;AAC7B,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,MAAM,IAAI;AAAA,EACnE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,MAAM,wBAAwB,oBAAoB,MAAM;AACpD,QAAI,cAAc,KAAK,YAAY,QAAQ,YAAY,OAAO;AAC9D,kBAAc,YAAY,QAAQ,QAAQ,kBAAkB;AAC5D,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAE/C,UAAM,OAAO,EAAE,QAAQ,MAAM;AAC7B,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,MAAM,IAAI;AAAA,EACnE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAoBA,MAAM,eAAe,YAAY,MAAM;AACnC,QAAI,cAAc,KAAK,YAAY,QAAQ,YAAY,OAAO;AAC9D,kBAAc,YAAY,QAAQ,QAAQ,UAAU;AACpD,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,MAAM;AAE7B,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,MAAM,IAAI;AAAA,EACnE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAeA,MAAM,OAAO,cAAc,eAAe,gBAAgB,QAAQ,gBAAgB,QAAQ,OAAO,GAAG,OAAO,IAAI,cAAc,GAAG,eAAe,OAAO;AAClJ,UAAM,MAAM,KAAK,YAAY,OAAO,KAAK,YAAY,QAAQ,YAAY,OAAO,cAAc;AAE9F,UAAM,OAAO;AAAA,MACT;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAEA,UAAM,UAAU,EAAE,QAAQ,OAAM;AAChC,WAAO,KAAK,YAAY,kBAAkB,KAAK,SAAS,MAAM,IAAI;AAAA,EACtE;AACJ;;;AHvJA,IAAAG,kBAAiB;AACjB,IAAAC,aAAe;AACf,iBAA8B;AAC9B,kBAAiB;AAEjB,IAAMC,kBAAa,0BAAc,aAAe;AAChD,IAAM,YAAY,YAAAC,QAAK,QAAQD,WAAU;AAMlC,IAAM,SAAN,MAAa;AAAA;AAAA,EACO;AAAA;AAAA,EACI;AAAA;AAAA,EACJ;AAAA;AAAA,EACQ;AAAA;AAAA;AAAA;AAAA;AAAA,EAM/B,YAAY,cAAc,cAAc;AACpC,QAAI,CAAC,aAAa,WAAW,KAAK,aAAa,WAAW,KAAK,OAAO;AAClE;AAAA,IACJ;AAEA,UAAM,aAAa,gBAAAE,QAAK,KAAK,WAAAC,QAAG,aAAa,YAAY,eAAe,MAAM,CAAC;AAC/E,SAAK,cAAc,IAAI,eAAO,WAAW,cAAc,UAAU;AAEjE,SAAK,YAAY,aAAa,WAAW,KAAK;AAC9C,SAAK,UAAU,aAAa,QAAQ,KAAK;AACzC,SAAK,eAAe,aAAa,cAAc,KAAK;AAEpD,QAAI,KAAK,WAAW;AAChB,WAAK,YAAY,IAAI,gBAAgB,KAAK,WAAW;AAAA,IACzD;AAAA,EACJ;AACJ;AAEA,IAAO,iBAAQ;;;AI3Cf;;;ACAA;AAaO,IAAM,sBAAN,MAA0B;AAAA;AAAA;AAAA;AAAA,EAI7B,YAAY,YAAY;AACpB,SAAK,cAAc;AAAA,EACvB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAgBA,MAAM,SAAS,QAAQ,MAAM,wBAAwB;AACjD,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY,SAAS;AAClE,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,OAAO;AAE9B,SAAK,gBAAgB,IAAI,0BAA0B,KAAK,gBAAgB;AAExE,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAmBA,MAAM,iBAAiB,QAAQ,MAAM,wBAAwB,QAAQ;AACjE,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY,SAAS;AAClE,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,MAAM;AAG7B,SAAK,gBAAgB,IAAI,0BAA0B,KAAK,gBAAgB;AACxE,SAAK,QAAQ,IAAI,UAAU,KAAK,QAAQ;AAExC,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AACJ;AAEA,IAAO,8BAAQ;;;ADxEf,IAAAC,kBAAiB;AACjB,IAAAC,aAAe;AACf,IAAAC,cAA8B;AAC9B,IAAAC,eAAiB;AAEjB,IAAMC,kBAAa,2BAAc,aAAe;AAChD,IAAMC,aAAY,aAAAC,QAAK,QAAQF,WAAU;AAMlC,IAAM,WAAN,MAAe;AAAA;AAAA,EACK;AAAA;AAAA,EACI;AAAA;AAAA,EACQ;AAAA;AAAA;AAAA;AAAA;AAAA,EAMnC,YAAY,cAAc,gBAAgB;AACtC,QAAI,CAAC,aAAa,WAAW,KAAK,aAAa,WAAW,KAAK,OAAO;AAClE;AAAA,IACJ;AAEA,UAAM,aAAa,gBAAAG,QAAK,KAAK,WAAAC,QAAG,aAAaH,aAAY,eAAe,MAAM,CAAC;AAC/E,SAAK,cAAc,IAAI,eAAO,WAAW,cAAc,UAAU;AAEjE,SAAK,YAAY,eAAe,WAAW,KAAK;AAChD,SAAK,UAAU,eAAe,aAAa,KAAK;AAEhD,QAAI,KAAK,WAAW;AAChB,WAAK,gBAAgB,IAAI,4BAAoB,KAAK,WAAW;AAAA,IACjE;AAAA,EACJ;AACJ;AAEA,IAAO,mBAAQ;;;AEzCf;;;ACAA;AAGO,IAAM,eAAN,MAAmB;AAAA;AAAA;AAAA;AAAA,EAItB,YAAY,YAAW;AACnB,SAAK,cAAc;AAAA,EACvB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,UAAU,QAAQ;AACpB,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY,WAAW;AACpE,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,MAAM;AAE7B,aAAS,UAAU,CAAC;AAEpB,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAM,aAAa,SAAS,QAAQ;AAChC,QAAI,cAAc,KAAK,YAAY,QAAQ,YAAY,WAAW;AAClE,kBAAc,YAAY,QAAQ,QAAQ,OAAO;AACjD,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,MAAM;AAE7B,aAAS,UAAU,CAAC;AAEpB,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AACJ;AAEA,IAAO,uBAAQ;;;AC5Cf;AAaO,IAAM,gBAAN,MAAoB;AAAA;AAAA;AAAA;AAAA,EAIvB,YAAY,YAAW;AACnB,SAAK,cAAc;AAAA,EACvB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAM,UAAU,UAAU,QAAQ;AAC9B,QAAI,cAAc,KAAK,YAAY,QAAQ,YAAY,WAAW;AAClE,kBAAc,YAAY,QAAQ,QAAQ,QAAQ;AAClD,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,MAAM;AAE7B,aAAS,UAAU,CAAC;AAEpB,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAcA,MAAM,oBAAoB,SAAS,MAAM,QAAQ;AAC7C,QAAI,cAAc,KAAK,YAAY,QAAQ,YAAY,WAAW;AAClE,kBAAc,YAAY,QAAQ,aAAa,OAAO;AACtD,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,OAAO;AAE9B,WAAO,QAAQ,CAAC;AAChB,aAAS,UAAU,CAAC;AAEpB,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,MAAM,aAAa,SAAS,MAAM,QAAQ;AACtC,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY,WAAW;AACpE,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,OAAO;AAG9B,WAAO,QAAQ,CAAC;AAChB,aAAS,UAAU,CAAC;AAEpB,SAAK,SAAS,IAAI,WAAW,KAAK,SAAS;AAE3C,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaA,MAAM,aAAa,UAAU,kBAAkB,MAAM,QAAQ;AACzD,QAAI,cAAc,KAAK,YAAY,QAAQ,YAAY,WAAW;AAClE,kBAAc,YAAY,QAAQ,QAAQ,QAAQ;AAClD,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,MAAM;AAG7B,WAAO,QAAQ,CAAC;AAChB,aAAS,UAAU,CAAC;AAEpB,SAAK,YAAY,IAAI,oBAAoB,KAAK,YAAY;AAE1D,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAM,aAAa,UAAU,QAAQ;AACjC,QAAI,cAAc,KAAK,YAAY,QAAQ,YAAY,WAAW;AAClE,kBAAc,YAAY,QAAQ,QAAQ,QAAQ;AAClD,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,SAAS;AAEhC,aAAS,UAAU,CAAC;AAEpB,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AACJ;AAEA,IAAO,wBAAQ;;;AF9Hf,IAAAI,kBAAiB;AACjB,IAAAC,aAAe;AACf,IAAAC,cAA8B;AAC9B,IAAAC,eAAiB;AAEjB,IAAMC,kBAAa,2BAAc,aAAe;AAChD,IAAMC,aAAY,aAAAC,QAAK,QAAQF,WAAU;AAMlC,IAAM,aAAN,MAAiB;AAAA;AAAA,EACG;AAAA;AAAA,EACI;AAAA;AAAA,EACC;AAAA;AAAA,EACC;AAAA;AAAA;AAAA;AAAA;AAAA,EAM7B,YAAY,cAAc,kBAAkB;AACxC,QAAG,CAAC,aAAa,WAAW,KAAK,aAAa,WAAW,KAAK,OAAO;AACjE;AAAA,IACJ;AAEA,UAAM,aAAa,gBAAAG,QAAK,KAAK,WAAAC,QAAG,aAAaH,aAAY,eAAe,MAAM,CAAC;AAC/E,SAAK,cAAc,IAAI,eAAO,WAAW,cAAc,UAAU;AAEjE,SAAK,YAAY,iBAAiB,WAAW,KAAK;AAClD,SAAK,UAAU,iBAAiB,QAAQ,KAAK;AAE7C,QAAG,KAAK,WAAW;AACf,WAAK,SAAS,IAAI,qBAAa,KAAK,WAAW;AAC/C,WAAK,UAAU,IAAI,sBAAc,KAAK,WAAW;AAAA,IACrD;AAAA,EACJ;AACJ;AAEA,IAAO,qBAAQ;;;AG5Cf;;;ACAA;AAGO,IAAM,kBAAN,MAAsB;AAAA;AAAA;AAAA;AAAA,EAIzB,YAAY,YAAW;AACnB,SAAK,cAAc;AAAA,EACvB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,YAAY,YAAW;AACzB,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY,UAAU,0BAA0B,QAAQ,QAAQ,UAAU;AACvH,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,MAAM;AAC7B,UAAM,OAAO,CAAC;AACd,UAAM,SAAS,CAAC;AAEhB,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,kBAAkB,cAAa;AACjC,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY,UAAU;AACnE,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,MAAM;AAC7B,UAAM,OAAO,CAAC;AACd,UAAM,SAAS,EAAE,MAAM,aAAa;AAEpC,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAM,qBAAqB,QAAQ,YAAW;AAC1C,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY,UAAU,kBAAkB,QAAQ,QAAQ,UAAU;AAC/G,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,MAAM;AAC7B,UAAM,OAAO,CAAC;AACd,aAAS,UAAU,CAAC;AAEpB,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaA,MAAM,gBAAgB,YAAY,kBAAkB,UAAU,mBAAkB;AAC5E,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY,UAAU,YAAY,QAAQ,QAAQ,UAAU,EAAE,QAAQ,cAAc,gBAAgB;AACjJ,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,OAAO;AAC9B,UAAM,OAAO;AAAA,MACT;AAAA,MACA,WAAW;AAAA,MACX,MAAM;AAAA,QACF;AAAA,QACA,kBAAkB,CAAC;AAAA,MACvB;AAAA,IACJ;AACA,UAAM,SAAS,CAAC;AAEhB,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAM,kBAAkB,YAAY,YAAW;AAC3C,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY,UAAU,kBAAkB,QAAQ,gBAAgB,UAAU,EAAE,QAAQ,gBAAgB,UAAU;AAC3J,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,OAAO;AAC9B,UAAM,OAAO,CAAC;AACd,UAAM,SAAS,CAAC;AAChB,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAM,4BAA4B,UAAU,YAAW;AACnD,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY,UAAU,sBAAsB,QAAQ,gBAAgB,UAAU,EAAE,QAAQ,cAAc,QAAQ;AAC3J,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,MAAM;AAC7B,UAAM,OAAO,CAAC;AACd,UAAM,SAAS,CAAC;AAChB,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAM,4BAA4B,UAAU,YAAW;AACnD,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY,UAAU,6BAA6B,QAAQ,gBAAgB,UAAU,EAAE,QAAQ,cAAc,QAAQ;AAClK,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,MAAM;AAC7B,UAAM,OAAO,CAAC;AACd,UAAM,SAAS,CAAC;AAChB,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AACJ;AAEA,IAAO,0BAAQ;;;ACnIf;AAGO,IAAM,6BAAN,MAAiC;AAAA;AAAA;AAAA;AAAA,EAIpC,YAAY,YAAY;AACpB,SAAK,cAAc;AAAA,EACvB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,gBAAgB,QAAQ;AAC1B,QAAI,cAAc,KAAK,YAAY,QAAQ,YAAY,UAAU;AACjE,QAAI,MAAM,KAAK,YAAY,OAAO,WAAW;AAC7C,QAAI,OAAO,EAAE,QAAQ,MAAM;AAC3B,QAAI,OAAO,CAAC;AACZ,aAAS,UAAU,CAAC;AAEpB,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AACJ;AAEA,IAAO,qCAAQ;;;AFvBf,IAAAI,kBAAiB;AACjB,IAAAC,aAAe;AACf,IAAAC,cAA8B;AAC9B,IAAAC,eAAiB;AAEjB,IAAMC,kBAAa,2BAAc,aAAe;AAChD,IAAMC,aAAY,aAAAC,QAAK,QAAQF,WAAU;AAMlC,IAAM,YAAN,MAAgB;AAAA;AAAA,EACI;AAAA;AAAA,EACI;AAAA;AAAA,EACI;AAAA;AAAA,EACW;AAAA;AAAA;AAAA;AAAA;AAAA,EAM1C,YAAY,cAAc,iBAAgB;AACtC,QAAG,CAAC,aAAa,WAAW,KAAK,aAAa,WAAW,KAAK,OAAM;AAChE;AAAA,IACJ;AAEA,UAAM,aAAa,gBAAAG,QAAK,KAAK,WAAAC,QAAG,aAAaH,aAAY,eAAe,MAAM,CAAC;AAC/E,SAAK,cAAc,IAAI,eAAO,WAAW,cAAc,UAAU;AAEjE,SAAK,YAAY,gBAAgB,WAAW,KAAK;AACjD,SAAK,UAAU,gBAAgB,cAAc,KAAK;AAElD,QAAG,KAAK,WAAU;AACd,WAAK,WAAW,IAAI,wBAAgB,KAAK,WAAW;AACpD,WAAK,cAAc,IAAI,mCAA2B,KAAK,WAAW;AAAA,IACtE;AAAA,EACJ;AACJ;AAEA,IAAO,oBAAQ;;;AG5Cf;;;ACAA;AAGO,IAAM,2BAAN,MAA+B;AAAA;AAAA;AAAA;AAAA,EAIlC,YAAa,YAAY;AACrB,SAAK,cAAc;AAAA,EACvB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,eAAe,UAAU;AAC3B,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY,iBAAiB,eAAe,QAAQ,QAAQ,QAAQ;AACjH,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,OAAO;AAC9B,UAAM,SAAS,CAAC;AAChB,UAAM,OAAO,CAAC;AACd,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AACJ;AAEA,IAAO,mCAAQ;;;ADvBf,IAAAI,kBAAiB;AACjB,IAAAC,aAAe;AACf,IAAAC,cAA8B;AAC9B,IAAAC,eAAiB;AAEjB,IAAMC,kBAAa,2BAAc,aAAe;AAChD,IAAMC,aAAY,aAAAC,QAAK,QAAQF,WAAU;AAMlC,IAAM,mBAAN,MAAuB;AAAA;AAAA,EACH;AAAA;AAAA,EACI;AAAA;AAAA,EACa;AAAA;AAAA;AAAA;AAAA;AAAA,EAMxC,YAAY,cAAc,wBAAwB;AAC9C,QAAG,CAAC,aAAa,WAAW,KAAK,aAAa,WAAW,KAAK,OAAM;AAChE;AAAA,IACJ;AAEA,UAAM,aAAa,gBAAAG,QAAK,KAAK,WAAAC,QAAG,aAAaH,aAAY,eAAe,MAAM,CAAC;AAC/E,SAAK,cAAc,IAAI,eAAO,WAAW,cAAc,UAAU;AAEjE,SAAK,YAAY,uBAAuB,WAAW,KAAK;AACxD,SAAK,UAAU,uBAAuB,QAAQ,KAAK;AAEnD,QAAI,KAAK,WAAW;AAChB,WAAK,QAAQ,IAAI,iCAAyB,KAAK,WAAW;AAAA,IAC9D;AAAA,EACJ;AACJ;AAEA,IAAO,2BAAQ;;;AbnCf,IAAAI,kBAAiB;AACjB,IAAAC,aAAe;AACf,IAAAC,cAA8B;AAC9B,IAAAC,eAAiB;AACjB,IAAAC,gBAAwB;;;AeVxB;AAAO,IAAM,YAAN,MAAgB;AAAA,EACnB,cAAc;AAAA,EAEd;AAAA,EAEA,gBAAgB;AAAA;AAAA,IAEZ,wBAAwB;AAAA;AAAA,IACxB,6BAA6B;AAAA;AAAA,IAC7B,qBAAqB;AAAA;AAAA,IACrB,0BAA0B;AAAA;AAAA;AAAA,IAG1B,mBAAmB;AAAA;AAAA,IACnB,oBAAoB;AAAA;AAAA,IACpB,yBAAyB;AAAA;AAAA,IACzB,0BAA0B;AAAA;AAAA,IAC1B,gBAAgB;AAAA;AAAA;AAAA,IAGhB,+BAA+B;AAAA;AAAA,IAC/B,eAAe;AAAA;AAAA,EACnB;AAAA,EAEA,gBAAgB;AAAA;AAAA,IAEZ,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,QAAQ;AAAA,EACZ;AAAA,EAEA,qBAAqB;AAAA;AAAA,IAEjB,MAAM;AAAA,IACN,OAAO;AAAA,EACX;AAAA,EAEA,eAAe;AAAA,IACX,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,MAAM;AAAA,EACV;AACJ;;;AC1CA;AAGO,IAAM,uBAAN,MAA2B;AAAA;AAAA;AAAA;AAAA,EAI9B,YAAY,YAAY;AACpB,SAAK,cAAc;AAAA,EACvB;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,kBAAkB;AACd,UAAM,MAAM,KAAK,YAAY,OAAO,KAAK,YAAY,QAAQ,YAAY,mBAAmB;AAC5F,UAAM,OAAO,EAAE,QAAQ,MAAM;AAC7B,UAAM,SAAS,CAAC;AAChB,UAAM,OAAO,CAAC;AAEd,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,oBAAoB;AAChB,UAAM,MAAM,KAAK,YAAY,OAAO,KAAK,YAAY,QAAQ,YAAY,qBAAqB;AAC9F,UAAM,OAAO,EAAE,QAAQ,MAAM;AAC7B,UAAM,SAAS,CAAC;AAChB,UAAM,OAAO,CAAC;AAEd,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,sBAAsB;AAClB,UAAM,MAAM,KAAK,YAAY,OAAO,KAAK,YAAY,QAAQ,YAAY,uBAAuB;AAChG,UAAM,OAAO,EAAE,QAAQ,MAAM;AAC7B,UAAM,SAAS,CAAC;AAChB,UAAM,OAAO,CAAC;AAEd,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,qBAAqB;AACjB,UAAM,MAAM,KAAK,YAAY,OAAO,KAAK,YAAY,QAAQ,YAAY,sBAAsB;AAC/F,UAAM,OAAO,EAAE,QAAQ,MAAM;AAC7B,UAAM,SAAS,CAAC;AAChB,UAAM,OAAO,CAAC;AAEd,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,4BAA4B;AACxB,UAAM,MAAM,KAAK,YAAY,OAAO,KAAK,YAAY,QAAQ,YAAY,4BAA4B;AACrG,UAAM,OAAO,EAAE,QAAQ,MAAM;AAC7B,UAAM,SAAS,CAAC;AAChB,UAAM,OAAO,CAAC;AAEd,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AACJ;;;AC3EA;AAGO,IAAM,eAAN,MAAmB;AAAA;AAAA;AAAA;AAAA,EAItB,YAAY,YAAY;AACpB,SAAK,cAAc;AAAA,EACvB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAeA,WAAW,QAAQ,MAAM;AACrB,UAAM,MAAM,KAAK,YAAY,OAAO,KAAK,YAAY,QAAQ,YAAY,MAAM;AAC/E,UAAM,OAAO,EAAE,QAAQ,OAAO;AAE9B,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAgBA,0BAA0B,QAAQ,MAAM,UAAU;AAC9C,UAAM,MAAM,KAAK,YAAY,OAAO,KAAK,YAAY,QAAQ,YAAY,MAAM;AAC/E,UAAM,OAAO,EAAE,QAAQ,aAAa;AAEpC,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,MAAM,QAAQ;AAAA,EAC/E;AACJ;;;ACnDA;AAAC,IAAAC,gBAAwB;AAEzB,IAAMC,aAAQ,cAAAC,SAAY,mBAAmB;AAKtC,IAAM,cAAN,MAAkB;AAAA;AAAA,EACC;AAAA;AAAA,EACA;AAAA;AAAA,EACL;AAAA;AAAA,EACM;AAAA;AAAA,EACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAStB,YAAY,IAAI,MAAM,OAAO,SAAS,cAAc;AAChD,SAAK,KAAK;AACV,SAAK,OAAO;AACZ,SAAK,QAAQ;AACb,SAAK,UAAU;AACf,SAAK,eAAe;AAAA,EACxB;AACJ;AAKO,IAAM,sBAAN,MAA0B;AAAA;AAAA;AAAA;AAAA,EAI7B,YAAY,QAAQ;AAChB,SAAK,UAAU;AAAA,EACnB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,mBAAmB,MAAM;AACrB,UAAM,YAAY,KAAK,YAAY;AACnC,WAAO,KAAK,QAAQ;AAAA,MAAK,WACrB,MAAM,KAAK,YAAY,MAAM;AAAA,IACjC,KAAK;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,iBAAiB,IAAI;AACjB,UAAM,UAAU,GAAG,YAAY;AAC/B,WAAO,KAAK,QAAQ;AAAA,MAAK,WACrB,MAAM,GAAG,YAAY,MAAM;AAAA,IAC/B,KAAK;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,gBAAgB;AACZ,WAAO,KAAK;AAAA,EAChB;AACJ;AAeO,IAAM,eAAN,MAAmB;AAAA;AAAA;AAAA;AAAA,EAItB,YAAY,YAAY;AACpB,SAAK,cAAc;AAAA,EACvB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,YAAY,IAAI,MAAM,OAAO,SAAS,cAAc;AAChD,WAAO,IAAI,YAAY,IAAI,MAAM,OAAO,SAAS,YAAY;AAAA,EACjE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,iBAAiB,QAAQ;AACrB,UAAM,MAAM,KAAK,YAAY,OAAO,KAAK,YAAY,QAAQ,YAAY,aAAa;AACtF,UAAM,OAAO,EAAE,QAAQ,MAAM;AAC7B,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,wBAAwB,cAAc;AACxC,UAAM,SAAS;AAAA,MACX,QAAQ;AAAA,MACR,GAAG,YAAY,YAAY;AAAA,IAC/B;AAEA,UAAM,MAAM,KAAK,YAAY,OAAO,KAAK,YAAY,QAAQ,YAAY,aAAa;AACtF,UAAM,OAAO,EAAE,QAAQ,MAAM;AAE7B,QAAI;AACA,YAAM,OAAO,MAAM,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAC7E,YAAM,eAAe,KAAK,MAAM,IAAI;AAEpC,UAAI;AACJ,UAAI;AAEJ,UAAI,aAAa,QAAQ,aAAa,KAAK,SAAS,GAAG;AACnD,qBAAa,aAAa,KAAK,CAAC,EAAE;AAClC,6BAAqB,aAAa,KAAK,CAAC,EAAE;AAAA,MAC9C;AAEA,aAAO;AAAA,QACH,cAAc;AAAA,QACd,gBAAgB;AAAA,QAChB,wBAAwB;AAAA,MAC5B;AAAA,IACJ,SAAS,OAAO;AACZ,MAAAD,OAAM,gDAAgD,cAAc,MAAM,OAAO;AAEjF,aAAO;AAAA,QACH,cAAc;AAAA,QACd,gBAAgB;AAAA,QAChB,wBAAwB;AAAA,QACxB,OAAO,MAAM;AAAA,MACjB;AAAA,IACJ;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAM,SAAS,QAAQ,gBAAgB;AAEnC,QAAI,CAAC,KAAK,OAAO,cAAc,GAAG;AAC9B,YAAM,OAAO,MAAM,KAAK,wBAAwB,cAAc;AAC9D,YAAM,iBAAiB,KAAK;AAC5B,YAAM,cAAc,KAAK,YAAY,QAAQ,YAAY,MAAM,QAAQ,QAAQ,cAAc;AAC7F,YAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,YAAM,OAAO,EAAE,QAAQ,MAAM;AAE7B,aAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,IACrE,OAAO;AACH,YAAM,cAAc,KAAK,YAAY,QAAQ,YAAY,MAAM,QAAQ,QAAQ,cAAc;AAC7F,YAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,YAAM,OAAO,EAAE,QAAQ,MAAM;AAE7B,aAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,IACrE;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,cAAc,QAAQ,SAAS,SAAS;AACpC,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY,kBAAkB,QAAQ,QAAQ,MAAM;AACjG,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAE/C,UAAM,OAAO,EAAE,SAAS,QAAQ;AAChC,UAAM,SAAS,EAAE,SAAS,QAAQ;AAClC,UAAM,OAAO,EAAE,QAAQ,MAAM;AAE7B,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,mBAAmB,MAAM,gBAAgB,QAAQ;AAC7C,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY,oBAAoB,QAAQ,QAAQ,cAAc;AAC3G,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,YAAY;AAEnC,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,MAAM,MAAM,MAAM;AAAA,EAC3E;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAM,UAAU,QAAQ,MAAM,gBAAgB;AAE1C,QAAI,CAAC,KAAK,OAAO,cAAc,GAAG;AAC9B,YAAM,OAAO,MAAM,KAAK,wBAAwB,cAAc;AAC9D,YAAM,iBAAiB,KAAK;AAC5B,YAAM,cAAc,KAAK,YAAY,QAAQ,YAAY,MAAM,QAAQ,QAAQ,cAAc;AAC7F,YAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,YAAM,OAAO,EAAE,QAAQ,OAAO;AAE9B,aAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,IACrE,OAAO;AACH,YAAM,cAAc,KAAK,YAAY,QAAQ,YAAY,MAAM,QAAQ,QAAQ,cAAc;AAC7F,YAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,YAAM,OAAO,EAAE,QAAQ,OAAO;AAE9B,aAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,IACrE;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAM,iBAAiB,QAAQ,MAAM,gBAAgB,QAAQ;AAEzD,QAAI,CAAC,KAAK,OAAO,cAAc,GAAG;AAC9B,YAAM,OAAO,MAAM,KAAK,wBAAwB,cAAc;AAC9D,YAAM,iBAAiB,KAAK;AAC5B,YAAM,cAAc,KAAK,YAAY,QAAQ,YAAY,MAAM,QAAQ,QAAQ,cAAc;AAC7F,YAAM,MAAM,KAAK,YAAY,OAAO,cAAc,MAAM,MAAM;AAC9D,YAAM,OAAO,EAAE,QAAQ,OAAO;AAE9B,aAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,IACrE,OAAO;AACH,YAAM,cAAc,KAAK,YAAY,QAAQ,YAAY,MAAM,QAAQ,QAAQ,cAAc;AAC7F,YAAM,MAAM,KAAK,YAAY,OAAO,cAAc,MAAM,MAAM;AAC9D,YAAM,OAAO,EAAE,QAAQ,OAAO;AAE9B,aAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,IACrE;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,yBAAyB,QAAQ,MAAM,QAAQ;AAC3C,UAAM,MAAM,KAAK,YAAY,OAAO,KAAK,YAAY,QAAQ,YAAY,OAAO,EAAE,QAAQ,QAAQ,MAAM;AACxG,UAAM,OAAO,EAAE,QAAQ,OAAO;AAE9B,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,6BAA6B,gBAAgB,mBAAmB;AAC5D,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY,6BAA6B,QAAQ,QAAQ,cAAc;AACpH,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAE/C,UAAM,SAAS,EAAE,QAAQ,kBAAkB;AAC3C,UAAM,OAAO;AACb,UAAM,OAAO,EAAE,QAAQ,MAAM;AAE7B,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,WAAW,QAAQ,YAAY;AAC3B,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY,aAAa,QAAQ,QAAQ,MAAM;AAC5F,UAAM,MAAM,KAAK,YAAY,OAAO,cAAc,aAAa;AAE/D,UAAM,SAAS,EAAE,WAAW;AAC5B,UAAM,OAAO;AACb,UAAM,OAAO,EAAE,QAAQ,MAAM;AAE7B,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,kBAAkB,QAAQ,eAAe;AACrC,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY,aAAa,QAAQ,QAAQ,MAAM;AAC5F,UAAM,MAAM,KAAK,YAAY,OAAO,cAAc,aAAa;AAE/D,UAAM,SAAS,EAAE,cAAc;AAC/B,UAAM,OAAO;AACb,UAAM,OAAO,EAAE,QAAQ,MAAM;AAE7B,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,eAAe,QAAQ,YAAY;AAC/B,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY,aAAa,QAAQ,QAAQ,MAAM;AAC5F,UAAM,MAAM,KAAK,YAAY,OAAO,cAAc,iBAAiB;AAEnE,UAAM,SAAS,EAAE,WAAW;AAC5B,UAAM,OAAO;AACb,UAAM,OAAO,EAAE,QAAQ,MAAM;AAE7B,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,sBAAsB,QAAQ,eAAe;AACzC,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY,aAAa,QAAQ,QAAQ,MAAM;AAC5F,UAAM,MAAM,KAAK,YAAY,OAAO,cAAc,iBAAiB;AAEnE,UAAM,SAAS,EAAE,cAAc;AAC/B,UAAM,OAAO;AACb,UAAM,OAAO,EAAE,QAAQ,MAAM;AAE7B,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,cAAc,QAAQ,YAAY;AAC9B,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY,aAAa,QAAQ,QAAQ,MAAM;AAC5F,UAAM,MAAM,KAAK,YAAY,OAAO,cAAc,gBAAgB;AAElE,UAAM,SAAS,EAAE,WAAW;AAC5B,UAAM,OAAO;AACb,UAAM,OAAO,EAAE,QAAQ,MAAM;AAE7B,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,oBAAoB,QAAQ,qBAAqB;AAC7C,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY,aAAa,QAAQ,QAAQ,MAAM;AAC5F,UAAM,MAAM,KAAK,YAAY,OAAO,cAAc,gBAAgB;AAElE,UAAM,SAAS,EAAE,oBAAoB;AACrC,UAAM,OAAO;AACb,UAAM,OAAO,EAAE,QAAQ,MAAM;AAE7B,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,aAAa,QAAQ,YAAY;AAC7B,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY,aAAa,QAAQ,QAAQ,MAAM;AAC5F,UAAM,MAAM,KAAK,YAAY,OAAO,cAAc,eAAe;AAEjE,UAAM,SAAS,EAAE,WAAW;AAC5B,UAAM,OAAO;AACb,UAAM,OAAO,EAAE,QAAQ,MAAM;AAE7B,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,oBAAoB,QAAQ,eAAe;AACvC,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY,aAAa,QAAQ,QAAQ,MAAM;AAC5F,UAAM,MAAM,KAAK,YAAY,OAAO,cAAc,eAAe;AAEjE,UAAM,SAAS,EAAE,cAAc;AAC/B,UAAM,OAAO;AACb,UAAM,OAAO,EAAE,QAAQ,MAAM;AAE7B,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,iBAAiB,QAAQ,YAAY;AACjC,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY,aAAa,QAAQ,QAAQ,MAAM;AAC5F,UAAM,MAAM,KAAK,YAAY,OAAO,cAAc,mBAAmB;AAErE,UAAM,SAAS,EAAE,WAAW;AAC5B,UAAM,OAAO;AACb,UAAM,OAAO,EAAE,QAAQ,MAAM;AAE7B,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,wBAAwB,QAAQ,eAAe;AAC3C,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY,aAAa,QAAQ,QAAQ,MAAM;AAC5F,UAAM,MAAM,KAAK,YAAY,OAAO,cAAc,mBAAmB;AAErE,UAAM,SAAS,EAAE,cAAc;AAC/B,UAAM,OAAO;AACb,UAAM,OAAO,EAAE,QAAQ,MAAM;AAE7B,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,gBAAgB,QAAQ,YAAY;AAChC,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY,aAAa,QAAQ,QAAQ,MAAM;AAC5F,UAAM,MAAM,KAAK,YAAY,OAAO,cAAc,kBAAkB;AAEpE,UAAM,SAAS,EAAE,WAAW;AAC5B,UAAM,OAAO;AACb,UAAM,OAAO,EAAE,QAAQ,MAAM;AAE7B,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,sBAAsB,QAAQ,qBAAqB;AAC/C,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY,aAAa,QAAQ,QAAQ,MAAM;AAC5F,UAAM,MAAM,KAAK,YAAY,OAAO,cAAc,kBAAkB;AAEpE,UAAM,SAAS,EAAE,oBAAoB;AACrC,UAAM,OAAO;AACb,UAAM,OAAO,EAAE,QAAQ,MAAM;AAE7B,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,mBAAmB,QAAQ,QAAQ;AAC/B,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY,wBAAwB,QAAQ,QAAQ,MAAM;AACvG,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,MAAM;AAE7B,QAAI,WAAW,QAAW;AACtB,eAAS;AAAA,IACb;AAEA,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,oBAAoB,QAAQ,QAAQ;AAChC,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY,yBAAyB,QAAQ,QAAQ,MAAM;AACxG,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,MAAM;AAE7B,QAAI,WAAW,QAAW;AACtB,eAAS;AAAA,IACb;AAEA,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,OAAO,cAAc;AACjB,QAAI,aAAa;AACjB,QAAI,WAAW,CAAC,MAAM,KAAK;AACvB,mBAAa,WAAW,UAAU,GAAG,WAAW,SAAS,CAAC;AAAA,IAC9D;AACA,UAAM,YAAY;AAClB,WAAO,UAAU,KAAK,UAAU;AAAA,EACpC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,oBAAoB,YAAY,YAAY;AACxC,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY,OAAO,QAAQ,QAAQ,UAAU,EAAE,QAAQ,YAAY,UAAU;AAC1H,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,MAAM;AAE7B,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,MAAM,IAAI;AAAA,EACnE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,mBAAmB,YAAY,YAAY;AACvC,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY,UAAU,QAAQ,QAAQ,UAAU,EAAE,QAAQ,YAAY,UAAU;AAC7H,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,YAAY;AAEnC,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,MAAM,IAAI;AAAA,EACnE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,sBAAsB,YAAY;AAC9B,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY,mCAAmC,QAAQ,QAAQ,UAAU;AACtH,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,MAAM;AAE7B,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,MAAM,IAAI;AAAA,EACnE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,mBAAmB,YAAY;AAC3B,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY,aAAa,QAAQ,QAAQ,UAAU;AAChG,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,SAAS;AAEhC,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,MAAM,IAAI;AAAA,EACnE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,oBAAoB,gBAAgB;AAChC,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY,qBAAqB,QAAQ,QAAQ,cAAc;AAC5G,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,MAAM;AAE7B,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,MAAM,IAAI;AAAA,EACnE;AACJ;;;AChnBA;AAGO,IAAM,gBAAN,MAAoB;AAAA;AAAA;AAAA;AAAA,EAIvB,YAAY,YAAY;AACpB,SAAK,cAAc;AAAA,EACvB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,UAAU,QAAQ;AACd,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY;AACzD,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,MAAM;AAE7B,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,aAAa,QAAQ,SAAS;AAC1B,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY,UAAU,QAAQ,QAAQ,OAAO;AAC1F,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,MAAM;AAE7B,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,SAAS,QAAQ,UAAU;AACvB,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY;AACzD,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,OAAO;AAE9B,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,QAAQ;AAAA,EACzE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,YAAY,QAAQ,SAAS,UAAU;AACnC,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY,YAAY,QAAQ,QAAQ,OAAO;AAC5F,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,MAAM;AAE7B,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,QAAQ;AAAA,EACzE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,YAAY,QAAQ,SAAS;AACzB,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY,YAAY,QAAQ,QAAQ,OAAO;AAC5F,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,SAAS;AAEhC,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,eAAe,QAAQ,SAAS;AAC5B,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY,YAAY,QAAQ,QAAQ,OAAO;AAC5F,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,MAAM;AAE7B,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,aAAa,QAAQ,SAAS,QAAQ;AAClC,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY,cAAc,QAAQ,aAAa,OAAO,EAAE,QAAQ,YAAY,MAAM;AAC/H,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,MAAM;AAE7B,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,eAAe,QAAQ,SAAS,QAAQ;AACpC,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY,cAAc,QAAQ,aAAa,OAAO,EAAE,QAAQ,YAAY,MAAM;AAC/H,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,MAAM;AAE7B,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,oBAAoB,QAAQ,SAAS,QAAQ;AACzC,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY,cAAc,QAAQ,aAAa,OAAO,EAAE,QAAQ,YAAY,MAAM;AAC/H,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,SAAS;AAEhC,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AACJ;;;AC3IA;AAaO,IAAM,iBAAN,MAAqB;AAAA;AAAA;AAAA;AAAA,EAIxB,YAAY,YAAY;AACpB,SAAK,cAAc;AAAA,EACvB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,WAAW,QAAQ;AACf,UAAM,MAAM,KAAK,YAAY,OAAO,KAAK,YAAY,QAAQ,YAAY,OAAO;AAChF,UAAM,OAAO,EAAE,QAAQ,MAAM;AAE7B,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAkBA,iBAAiB,QAAQ,MAAM,YAAY;AACvC,UAAM,MAAM,KAAK,YAAY,OAAO,KAAK,YAAY,QAAQ,YAAY,OAAO;AAGhF,SAAK,aAAa;AAClB,UAAM,OAAO,EAAE,QAAQ,OAAO;AAE9B,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaA,UAAU,QAAQ,MAAM,UAAU;AAC9B,UAAM,MAAM,KAAK,YAAY,OAAO,KAAK,YAAY,QAAQ,YAAY,UAAU,QAAQ,QAAQ,QAAQ,CAAC;AAC5G,UAAM,OAAO,EAAE,QAAQ,MAAM;AAE7B,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,aAAa,UAAU;AACnB,UAAM,MAAM,KAAK,YAAY,OAAO,KAAK,YAAY,QAAQ,YAAY,UAAU,QAAQ,QAAQ,QAAQ,CAAC;AAC5G,UAAM,OAAO,EAAE,QAAQ,SAAS;AAEhC,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,MAAM,IAAI;AAAA,EACnE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,WAAW,QAAQ,MAAM;AACrB,UAAM,MAAM,KAAK,YAAY,OAAO,KAAK,YAAY,QAAQ,YAAY,WAAW;AACpF,UAAM,OAAO,EAAE,QAAQ,OAAO;AAE9B,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,MAAM,IAAI;AAAA,EACnE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,WAAW,QAAQ,MAAM;AACrB,UAAM,MAAM,KAAK,YAAY,OAAO,KAAK,YAAY,QAAQ,YAAY,WAAW;AACpF,UAAM,OAAO,EAAE,QAAQ,MAAM;AAE7B,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,MAAM,IAAI;AAAA,EACnE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,aAAa,QAAQ,UAAU;AAC3B,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY,UAAU,QAAQ,QAAQ,QAAQ;AAC3F,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,MAAM;AAE7B,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,gBAAgB,QAAQ,YAAY;AAChC,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY,UAAU,iBAAiB,mBAAmB,UAAU;AACjH,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,MAAM;AAE7B,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAcA,uCAAuC,UAAU,SAAS,SAAS,cAAc,YAAY,gBAAgB,UAAU,cAAc;AACjI,UAAM,OAAO;AAAA,MACT;AAAA,MACA,iBAAiB;AAAA,MACjB,mBAAmB;AAAA,MACnB;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAEA,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY,uBAAuB,QAAQ,QAAQ,QAAQ,EAAE,QAAQ,kBAAkB,OAAO;AAC3I,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,MAAM;AAC7B,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,MAAM,IAAI;AAAA,EACnE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,qBAAqB,QAAQ,UAAU;AACnC,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY,kBAAkB,QAAQ,QAAQ,QAAQ;AACnG,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,MAAM;AAE7B,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,4BAA4B,UAAU,SAAS,QAAQ;AACnD,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY,eAAe,QAAQ,cAAc,QAAQ,EAAE,QAAQ,aAAa,OAAO;AACpI,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,OAAO;AAE9B,UAAM,SAAS;AAAA,MACX,MAAM;AAAA,IACV;AAEA,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,8BAA8B,UAAU,SAAS,QAAQ;AACrD,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY,eAAe,QAAQ,cAAc,QAAQ,EAAE,QAAQ,aAAa,OAAO;AACpI,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,SAAS;AAEhC,UAAM,SAAS;AAAA,MACX,MAAM;AAAA,IACV;AAEA,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,yBAAyB,QAAQ,UAAU;AACvC,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY,eAAe,QAAQ,cAAc,QAAQ;AACtG,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,MAAM;AAE7B,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,wBAAwB,UAAU,UAAU,YAAY,cAAc,wBAAwB;AAC1F,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY,iBAAiB,QAAQ,cAAc,QAAQ,EAAE,QAAQ,cAAc,QAAQ;AACxI,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,MAAM;AAE7B,UAAM,OAAO;AAAA,MACT;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAEA,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,MAAM,IAAI;AAAA,EACnE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,2BAA2B,UAAU,UAAU,wBAAwB;AACnE,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY,iBAAiB,QAAQ,cAAc,QAAQ,EAAE,QAAQ,cAAc,QAAQ;AACxI,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,SAAS;AAEhC,UAAM,SAAS;AAAA,MACX;AAAA,IACJ;AAEA,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AACJ;;;AC9RA;AAaO,IAAM,eAAN,MAAmB;AAAA;AAAA;AAAA;AAAA,EAItB,YAAY,YAAY;AACpB,SAAK,cAAc;AAAA,EACvB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,SAAS,QAAQ;AACb,UAAM,MAAM,KAAK,YAAY,OAAO,KAAK,YAAY,QAAQ,YAAY,KAAK;AAC9E,UAAM,OAAO,EAAE,QAAQ,MAAM;AAE7B,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,UAAU,QAAQ,MAAM;AACpB,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY;AACzD,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,OAAO;AAE9B,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,SAAS,QAAQ,MAAM,QAAQ;AAC3B,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY,SAAS,QAAQ,QAAQ,MAAM;AACxF,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,MAAM;AAE7B,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,UAAU,QAAQ,QAAQ;AACtB,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY,OAAO,QAAQ,QAAQ,MAAM;AACtF,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,MAAM;AAE7B,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,WAAW,QAAQ,MAAM,QAAQ;AAC7B,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY,OAAO,QAAQ,QAAQ,MAAM;AACtF,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,OAAO;AAE9B,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,UAAU,QAAQ,MAAM,QAAQ,MAAM;AAClC,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY,cACpD,QAAQ,YAAY,MAAM,EAC1B,QAAQ,aAAa,IAAI;AAC9B,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,MAAM;AAE7B,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,eAAe,QAAQ,WAAW;AAC9B,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY;AACzD,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,MAAM;AAE7B,UAAM,OAAO;AAAA,MACT,QAAQ;AAAA,MACR,WAAW;AAAA,IACf;AAEA,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,MAAM,IAAI;AAAA,EACnE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,YAAY,QAAQ,QAAQ;AACxB,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY,SAAS,QAAQ,QAAQ,MAAM;AACxF,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,MAAM;AAE7B,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,WAAW,QAAQ,QAAQ;AACvB,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY,SAAS,QAAQ,QAAQ,MAAM;AACxF,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,SAAS;AAEhC,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,gBAAgB,QAAQ,SAAS,WAAW;AACxC,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY;AACzD,UAAM,OAAO;AAAA,MACT;AAAA,MACA;AAAA,IACJ;AACA,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,MAAM;AAE7B,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AACJ;;;ACvLA;AAaO,IAAM,eAAN,MAAmB;AAAA;AAAA;AAAA;AAAA,EAItB,YAAY,YAAY;AACpB,SAAK,cAAc;AAAA,EACvB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,SAAS,QAAQ,QAAQ;AACrB,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY,MAAM,QAAQ,QAAQ,MAAM;AACrF,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,MAAM;AAE7B,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAsBA,UAAU,QAAQ,MAAM,QAAQ;AAC5B,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY,MAAM,QAAQ,QAAQ,MAAM;AACrF,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,OAAO;AAE9B,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAqBA,SAAS,QAAQ,MAAM,QAAQ,MAAM;AACjC,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY,MAAM,QAAQ,QAAQ,MAAM;AACrF,UAAM,MAAM,KAAK,YAAY,OAAO,cAAc,MAAM,IAAI;AAC5D,UAAM,OAAO,EAAE,QAAQ,MAAM;AAE7B,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAkBA,iBAAiB,QAAQ,MAAM,MAAM;AACjC,UAAM,MAAM,KAAK,YAAY,OAAO,KAAK,YAAY,QAAQ,YAAY,OAAO,MAAM,IAAI;AAC1F,UAAM,OAAO,EAAE,QAAQ,MAAM;AAE7B,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,QAAQ,QAAQ;AACZ,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY;AACzD,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,MAAM;AAE7B,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,YAAY,QAAQ,MAAM;AACtB,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY,SAAS,QAAQ,QAAQ,IAAI;AACtF,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,MAAM;AAE7B,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,cAAc,QAAQ,MAAM;AACxB,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY,WAAW,QAAQ,QAAQ,IAAI;AACxF,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,MAAM;AAE7B,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,mBAAmB,QAAQ,MAAM;AAC7B,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY,gBAAgB,QAAQ,QAAQ,IAAI;AAC7F,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,MAAM;AAE7B,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,mBAAmB,QAAQ,MAAM;AAC7B,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY,gBAAgB,QAAQ,QAAQ,IAAI;AAC7F,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,MAAM;AAE7B,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,kBAAkB,MAAM;AACpB,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY,aAAa,QAAQ,QAAQ,IAAI;AAC1F,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,MAAM;AAC7B,UAAM,SAAS,CAAC;AAEhB,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,WAAW,UAAU;AACjB,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY;AACzD,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,MAAM;AAC7B,UAAM,SAAS,CAAC;AAChB,QAAI,UAAU;AACV,aAAO,UAAU,IAAI;AAAA,IACzB;AACA,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,iBAAiB;AACb,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY;AACzD,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,MAAM;AAC7B,UAAM,SAAS,CAAC;AAEhB,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,cAAc,MAAM,YAAY,MAAM;AAClC,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY,cAAc,QAAQ,QAAQ,IAAI;AAC3F,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,MAAM;AAC7B,UAAM,SAAS,CAAC;AAEhB,UAAM,OAAO;AAAA,MACT,eAAe;AAAA,MACf;AAAA,IACJ;AAEA,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,aAAa,MAAM,WAAW;AAC1B,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY,cAAc,QAAQ,QAAQ,IAAI;AAC3F,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,MAAM;AAC7B,UAAM,SAAS,CAAC;AAEhB,UAAM,OAAO;AAAA,MACT,QAAQ;AAAA,IACZ;AAEA,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AACJ;;;ACvQA;AAGO,IAAM,qBAAN,MAAyB;AAAA;AAAA;AAAA;AAAA,EAI5B,YAAY,YAAY;AACpB,SAAK,cAAc;AAAA,EACvB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,eAAe,QAAQ;AACzB,QAAI,cAAc,KAAK,YAAY,QAAQ,YAAY;AACvD,QAAI,MAAM,KAAK,YAAY,OAAO,WAAW;AAC7C,QAAI,OAAO,EAAE,QAAQ,MAAM;AAE3B,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AACJ;;;ACvBA;AAGO,IAAM,0BAAN,MAA8B;AAAA;AAAA;AAAA;AAAA,EAIjC,YAAY,YAAY;AACpB,SAAK,cAAc;AAAA,EACvB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,eAAe,IAAI,QAAQ,QAAQ,SAAS;AACxC,UAAM,MAAM,KAAK,YAAY,OAAO,KAAK,YAAY,QAAQ,YAAY,gBAAgB,IAAI,MAAM;AACnG,UAAM,OAAO,EAAE,QAAQ,OAAO;AAE9B,UAAM,SAAS;AAAA,MACX;AAAA,IACJ;AAEA,QAAI,WAAW,SAAS,OAAO,WAAW,aAAa,OAAO,SAAS,IAAI;AACvE,aAAO,SAAS,OAAO,SAAS;AAAA,IACpC;AAEA,QAAI,WAAW,QAAQ,SAAS,GAAG;AAC/B,aAAO,UAAU;AAAA,IACrB;AAEA,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,2BAA2B;AACvB,UAAM,MAAM,KAAK,YAAY,OAAO,KAAK,YAAY,QAAQ,YAAY,gBAAgB,IAAI;AAC7F,UAAM,OAAO,EAAE,QAAQ,MAAM;AAE7B,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,MAAM,IAAI;AAAA,EACnE;AACJ;;;AChDA;AAGO,IAAM,qBAAN,MAAyB;AAAA;AAAA;AAAA;AAAA,EAI5B,YAAY,YAAY;AACpB,SAAK,cAAc;AAAA,EACvB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,4BAA4B,WAAW,QAAQ;AAC3C,UAAM,MAAM,KAAK,YAAY,OAAO,KAAK,YAAY,QAAQ,YAAY,WAAW;AACpF,UAAM,OAAO,EAAE,QAAQ,MAAM;AAE7B,QAAI,CAAC,QAAQ;AACT,eAAS,CAAC;AAAA,IACd;AACA,WAAO,YAAY;AAEnB,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,0BAA0B,IAAI,QAAQ;AAClC,UAAM,MAAM,KAAK,YAAY,OAAO,KAAK,YAAY,QAAQ,YAAY,cAAc,MAAM,EAAE;AAC/F,UAAM,OAAO,EAAE,QAAQ,MAAM;AAE7B,QAAI,CAAC,QAAQ;AACT,eAAS,CAAC;AAAA,IACd;AAEA,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AACJ;;;AC7CA;AAGO,IAAM,kBAAN,MAAsB;AAAA;AAAA;AAAA;AAAA,EAIzB,YAAY,YAAY;AACpB,SAAK,cAAc;AAAA,EACvB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,qBAAqB,MAAM;AACvB,UAAM,UAAU,KAAK,YAAY,cAAc;AAC/C,QAAI,MAAM,UAAU,aAAa,KAAK,YAAY,QAAQ,YAAY;AAEtE,UAAM,IAAI,QAAQ,cAAc,OAAO;AACvC,UAAM,IAAI,QAAQ,aAAa,MAAM;AAErC,UAAM,OAAO,EAAE,QAAQ,OAAO;AAE9B,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,IAAI,IAAI;AAAA,EACjE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,WAAW,YAAY,MAAM;AACzB,UAAM,UAAU,KAAK,YAAY,cAAc;AAC/C,UAAM,MAAM,UAAU,aAAa,KAAK,YAAY,QAAQ,YAAY,mBAAmB,QAAQ,gBAAgB,UAAU;AAC7H,UAAM,OAAO,EAAE,QAAQ,MAAM;AAE7B,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,IAAI,IAAI;AAAA,EACjE;AACJ;;;AC5CA;AAAA,IAAAE,gBAAwB;AAExB,IAAMC,aAAQ,cAAAC,SAAY,yBAAyB;AAK5C,IAAM,0BAAN,MAA8B;AAAA;AAAA;AAAA;AAAA,EAIjC,YAAY,YAAY;AACpB,SAAK,cAAc;AAAA,EACvB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,WAAW,YAAY,MAAM;AACzB,UAAM,UAAU,KAAK,YAAY,cAAc;AAC/C,UAAM,MAAM,UAAU,aAAa,KAAK,YAAY,QAAQ,YAAY,2BAA2B,QAAQ,gBAAgB,UAAU;AACrI,UAAM,OAAO,EAAE,QAAQ,MAAM;AAE7B,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,IAAI,IAAI;AAAA,EACjE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,WAAW,sBAAsB,YAAY;AACzC,UAAM,UAAU,KAAK,YAAY,cAAc;AAC/C,QAAI,MAAM,UAAU,YAAY,KAAK,YAAY,QAAQ,YAAY,WAAW,QAAQ,gBAAgB,UAAU;AAClH,UAAM,IAAI,QAAQ,0BAA0B,oBAAoB;AAChE,IAAAD,OAAM,yCAAyC,sBAAsB,YAAY,GAAG;AACpF,UAAM,OAAO,EAAE,QAAQ,SAAS;AAChC,UAAM,SAAS,CAAC;AAEhB,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AACJ;;;AC9CA;AAGO,IAAM,eAAN,MAAmB;AAAA;AAAA;AAAA;AAAA,EAItB,YAAY,YAAY;AACpB,SAAK,cAAc;AAAA,EACvB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,kBAAkB,OAAO;AACrB,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY,aAAa;AACtE,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,YAAY;AACnC,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,MAAM,IAAI;AAAA,EACnE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,eAAe,IAAI;AACf,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY,QAAQ,QAAQ,QAAQ,EAAE;AACnF,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,YAAY;AACnC,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,MAAM,IAAI;AAAA,EACnE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAiBA,SAAS,MAAM,QAAQ;AACnB,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY;AACzD,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,aAAa;AAEpC,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,MAAM,MAAM,MAAM;AAAA,EAC3E;AACJ;;;ACzDA;AAGO,IAAM,iBAAN,MAAqB;AAAA;AAAA;AAAA;AAAA,EAIxB,YAAY,YAAY;AACpB,SAAK,cAAc;AAAA,EACvB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,cAAc,aAAa,aAAa,MAAM;AAC1C,QAAI,cAAc,KAAK,YAAY,QAAQ,YAAY,UAAU,WAAW;AAC5E,QAAI,OAAO,SAAS,eAAe,SAAS,MAAM;AAC9C,qBAAe,SAAS,IAAI;AAAA,IAChC;AAEA,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,OAAO;AAC9B,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,MAAM,WAAW;AAAA,EAC1E;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,2BAA2B,aAAa,mBAAmB;AACvD,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY;AACzD,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,OAAO;AAE9B,UAAM,WAAW;AAAA,MACb;AAAA,MACA;AAAA,IACJ;AAEA,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,MAAM,QAAQ;AAAA,EACvE;AACJ;;;AC/CA;AAaO,IAAM,mBAAN,MAAuB;AAAA;AAAA;AAAA;AAAA,EAI1B,YAAY,YAAY;AACpB,SAAK,cAAc;AAAA,EACvB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAgBA,QAAQ,MAAM;AACV,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY;AACzD,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,OAAO;AAC9B,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,MAAM,IAAI;AAAA,EACnE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAgBA,gBAAgB,MAAM,UAAU;AAC5B,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY;AACzD,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,aAAa;AACpC,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,MAAM,MAAM,QAAQ;AAAA,EAC7E;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,aAAa,QAAQ,MAAM,YAAY;AACnC,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY,gBAAgB,QAAQ,QAAQ,UAAU;AACnG,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,OAAO;AAE9B,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,MAAM,IAAI;AAAA,EACnE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,aAAa,QAAQ,MAAM,YAAY;AACnC,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY,gBAAgB,QAAQ,QAAQ,UAAU;AACnG,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,MAAM;AAC7B,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,eAAe,QAAQ,YAAY;AAC/B,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY,YAAY,QAAQ,QAAQ,UAAU;AAC/F,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,SAAS;AAChC,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,oBAAoB,QAAQ,YAAY;AACpC,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY,YAAY,QAAQ,QAAQ,UAAU;AAC/F,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,MAAM;AAC7B,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,aAAa,QAAQ;AACjB,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY;AACzD,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,MAAM;AAC7B,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,uBAAuB,MAAM,YAAY;AACrC,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY,oBAAoB,QAAQ,QAAQ,UAAU;AACvG,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,MAAM;AAC7B,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,MAAM,IAAI;AAAA,EACnE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,8BAA8B,YAAY,SAAS,QAAQ;AACvD,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY,iBAAiB,QAAQ,gBAAgB,UAAU,EAAE,QAAQ,aAAa,OAAO;AAC1I,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,OAAO;AAE9B,UAAM,SAAS;AAAA,MACX,MAAM;AAAA,IACV;AAEA,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,gCAAgC,YAAY,SAAS,QAAQ;AACzD,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY,iBAAiB,QAAQ,gBAAgB,UAAU,EAAE,QAAQ,aAAa,OAAO;AAC1I,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,SAAS;AAEhC,UAAM,SAAS;AAAA,MACX,MAAM;AAAA,IACV;AAEA,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,iCAAiC,QAAQ,YAAY;AACjD,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY,eAAe,QAAQ,QAAQ,UAAU;AAClG,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,MAAM;AAC7B,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,gBAAgB,YAAY,oBAAoB,YAAY;AACxD,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY,0BAA0B,QAAQ,QAAQ,UAAU;AAC7G,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,MAAM;AAE7B,UAAM,OAAO;AAAA,MACT,YAAY;AAAA,MACZ;AAAA,IACJ;AAEA,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,MAAM,IAAI;AAAA,EACnE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,yBAAyB,YAAY,gBAAgB;AACjD,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY,sBAAsB,QAAQ,QAAQ,UAAU;AACzG,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,MAAM;AAE7B,UAAM,OAAO;AAAA,MACT;AAAA,IACJ;AAEA,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,MAAM,IAAI;AAAA,EACnE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,qBAAqB,YAAY;AAC7B,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY,mBAAmB,QAAQ,QAAQ,UAAU;AACtG,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,MAAM;AAE7B,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,MAAM,IAAI;AAAA,EACnE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,mBAAmB,YAAY;AAC3B,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY,iBAAiB,QAAQ,QAAQ,UAAU;AACpG,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,MAAM;AAE7B,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,MAAM,IAAI;AAAA,EACnE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,sBAAsB,QAAQ,aAAa;AACvC,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY;AACzD,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,OAAO;AAC9B,UAAM,OAAO,EAAE,eAAe,YAAY;AAE1C,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,yBAAyB,QAAQ,aAAa;AAC1C,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY,2BAA2B,gBAAgB,mBAAmB,WAAW,CAAC;AACnI,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,MAAM;AAE7B,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,uBAAuB,QAAQ,YAAY;AACvC,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY,oBAAoB,QAAQ,QAAQ,UAAU;AACvG,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,MAAM;AAE7B,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,iBAAiB,QAAQ;AACrB,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY;AACzD,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,MAAM;AAE7B,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,mBAAmB,QAAQ,MAAM;AAC7B,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY;AACzD,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,OAAO;AAC9B,UAAM,OAAO,EAAE,kBAAkB,KAAK;AAEtC,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,iBAAiB,QAAQ;AACrB,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY;AACzD,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,MAAM;AAE7B,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,kBAAkB,QAAQ;AACtB,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY;AACzD,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,MAAM;AAE7B,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,0BAA0B,QAAQ,eAAe;AAC7C,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY;AACzD,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,MAAM;AAC7B,UAAM,eAAe,EAAE,GAAG,QAAQ,cAAc;AAEhD,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,cAAc,IAAI;AAAA,EAC3E;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,iBAAiB,QAAQ;AACrB,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY;AACzD,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,MAAM;AAE7B,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,qBAAqB,QAAQ;AACzB,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY;AACzD,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,MAAM;AAE7B,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,wBAAwB,QAAQ,eAAe;AAC3C,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY,qBAAqB,QAAQ,mBAAmB,aAAa;AACtH,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,MAAM;AAE7B,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,uBAAuB,QAAQ,YAAY;AACvC,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY,sBAAsB,QAAQ,gBAAgB,UAAU;AACjH,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,MAAM;AAE7B,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AACJ;;;AC1aA;AAGO,IAAM,kBAAN,MAAsB;AAAA;AAAA;AAAA;AAAA,EAIzB,YAAY,YAAY;AACpB,SAAK,cAAc;AAAA,EACvB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,6BAA6B,WAAW,SAAS,QAAQ;AACrD,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY,gBAAgB,QAAQ,eAAe,SAAS,EAAE,QAAQ,aAAa,OAAO;AACvI,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,OAAO;AAE9B,UAAM,SAAS;AAAA,MACX,MAAM;AAAA,IACV;AAEA,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,+BAA+B,WAAW,SAAS,QAAQ;AACvD,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY,gBAAgB,QAAQ,eAAe,SAAS,EAAE,QAAQ,aAAa,OAAO;AACvI,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,SAAS;AAEhC,UAAM,SAAS;AAAA,MACX,MAAM;AAAA,IACV;AAEA,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AACJ;;;AChDA;AAGO,IAAM,qBAAN,MAAyB;AAAA;AAAA;AAAA;AAAA,EAI5B,YAAY,YAAY;AACpB,SAAK,cAAc;AAAA,EACvB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,eAAe,QAAQ;AACnB,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY;AACzD,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,MAAM;AAE7B,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,cAAc,QAAQ,IAAI;AACtB,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY,cAAc,MAAM;AAC7E,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,MAAM;AAE7B,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAuBA,iBAAiB,QAAQ,MAAM;AAC3B,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY;AACzD,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,OAAO;AAE9B,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,iBAAiB,QAAQ,IAAI,MAAM;AAC/B,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY,cAAc,MAAM;AAC7E,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,MAAM;AAE7B,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,iBAAiB,QAAQ,IAAI;AACzB,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY,cAAc,MAAM;AAC7E,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,SAAS;AAEhC,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,oBAAoB,QAAQ,eAAe,oBAAoB;AAC3D,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY,cAAc;AACvE,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,OAAO;AAC9B,UAAM,OAAO,EAAE,eAAe,mBAAmB;AAEjD,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,sBAAsB,cAAc,UAAU;AAC1C,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY,kBACpD,QAAQ,QAAQ,YAAY,EAC5B,QAAQ,cAAc,QAAQ;AACnC,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,MAAM;AAE7B,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,MAAM,IAAI;AAAA,EACnE;AACJ;;;AC/HA;AAGO,IAAM,0BAAN,MAA8B;AAAA;AAAA;AAAA;AAAA,EAIjC,YAAY,YAAY;AACpB,SAAK,cAAc;AAAA,EACvB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,oBAAoB,QAAQ;AACxB,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY;AACzD,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,MAAM;AAE7B,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AACJ;;;ACvBA;AAGO,IAAM,yBAAN,MAA6B;AAAA;AAAA;AAAA;AAAA,EAIhC,YAAY,YAAY;AACpB,SAAK,cAAc;AAAA,EACvB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,kBAAkB,UAAU,UAAU,UAAU,SAAS;AACrD,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY;AACzD,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,OAAO;AAE9B,UAAM,WAAW;AAAA,MACb;AAAA,MACA;AAAA,MACA,MAAM;AAAA,MACN;AAAA,IACJ;AAEA,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,MAAM,QAAQ;AAAA,EACvE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,8BAA8B,UAAU;AACpC,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY;AACzD,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,MAAM;AAE7B,UAAM,SAAS;AAAA,MACX;AAAA,IACJ;AAEA,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,qBAAqB,UAAU,UAAU;AACrC,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY;AACzD,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,SAAS;AAEhC,UAAM,SAAS;AAAA,MACX;AAAA,MACA;AAAA,IACJ;AAEA,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,qBAAqB,UAAU,UAAU,UAAU;AAC/C,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY;AACzD,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,MAAM;AAE7B,UAAM,WAAW;AAAA,MACb;AAAA,MACA;AAAA,MACA,MAAM;AAAA,IACV;AAEA,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,MAAM,QAAQ;AAAA,EACvE;AACJ;;;AC1FA;AAGO,IAAM,iBAAN,MAAqB;AAAA;AAAA;AAAA;AAAA,EAIxB,YAAY,YAAY;AACpB,SAAK,cAAc;AAAA,EACvB;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,YAAY;AACR,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY;AACzD,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,MAAM;AAE7B,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,CAAC,GAAG,IAAI;AAAA,EACjE;AACJ;;;ACtBA;AAGO,IAAM,iBAAN,MAAqB;AAAA;AAAA;AAAA;AAAA,EAIxB,YAAY,YAAY;AACpB,SAAK,cAAc;AAAA,EACvB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,WAAW,QAAQ;AACf,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY;AACzD,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,MAAM;AAE7B,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,aAAa,UAAU,QAAQ;AAC3B,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY,gBAAgB,QAAQ,QAAQ,QAAQ;AACjG,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,YAAY;AAEnC,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AACJ;;;ACrCA;AAGO,IAAM,2BAAN,MAA+B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKlC,YAAY,YAAY,SAAS;AAC7B,SAAK,cAAc;AACnB,SAAK,WAAW;AAChB,SAAK,UAAU,WAAW,QAAQ;AAAA,EACtC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,iBAAiB,QAAQ;AACrB,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY;AACzD,UAAM,MAAM,KAAK,WAAW,KAAK,UAAU;AAC3C,UAAM,OAAO,EAAE,QAAQ,MAAM;AAE7B,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,aAAa,QAAQ;AACjB,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY;AACzD,UAAM,MAAM,KAAK,WAAW,KAAK,UAAU;AAC3C,UAAM,OAAO,EAAE,QAAQ,MAAM;AAE7B,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,gBAAgB,QAAQ;AACpB,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY;AACzD,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,YAAY;AAEnC,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,gBAAgB,QAAQ,UAAU,UAAU;AACxC,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY;AACzD,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW,IAAI,SAAS,OAAO,IAAI,SAAS,OAAO,IAAI;AAC3F,UAAM,OAAO,EAAE,QAAQ,aAAa;AACpC,UAAM,OAAO,EAAE,SAAS;AAExB,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,MAAM,MAAM,QAAQ;AAAA,EAC7E;AACJ;;;ACpEA;AAGO,IAAM,uBAAN,MAA2B;AAAA;AAAA;AAAA;AAAA,EAI9B,YAAY,YAAY;AACpB,SAAK,cAAc;AAAA,EACvB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,iBAAiB,QAAQ;AACrB,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY;AACzD,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,MAAM;AAE7B,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,oBAAoB,QAAQ,QAAQ;AAChC,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY,gBAAgB,QAAQ,QAAQ,MAAM;AAC/F,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,MAAM;AAE7B,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,yBAAyB,QAAQ,QAAQ;AACrC,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY,qBAAqB,QAAQ,QAAQ,MAAM;AACpG,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,MAAM;AAE7B,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,gBAAgB,QAAQ,QAAQ,eAAe,SAAS;AACpD,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY;AACzD,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,OAAO;AAC9B,UAAM,OAAO;AAAA,MACT,MAAM;AAAA,MACN,aAAa;AAAA,MACb,OAAO;AAAA,IACX;AAEA,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,mBAAmB,QAAQ,QAAQ;AAC/B,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY,gBAAgB,QAAQ,QAAQ,MAAM;AAC/F,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,SAAS;AAEhC,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,mBAAmB,QAAQ,QAAQ,QAAQ,eAAe,OAAO;AAC7D,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY,gBAAgB,QAAQ,QAAQ,MAAM;AAC/F,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,MAAM;AAC7B,UAAM,OAAO;AAAA,MACT,MAAM;AAAA,MACN,aAAa;AAAA,MACb,OAAO;AAAA,IACX;AAEA,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,QAAQ,IAAI;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,uBAAuB,QAAQ,QAAQ,SAAS;AAC5C,UAAM,cAAc,KAAK,YAAY,QAAQ,YAAY,qBAAqB,QAAQ,QAAQ,MAAM;AACpG,UAAM,MAAM,KAAK,YAAY,OAAO,WAAW;AAC/C,UAAM,OAAO,EAAE,QAAQ,SAAS;AAChC,UAAM,eAAe,EAAE,GAAG,QAAQ,QAAQ;AAE1C,WAAO,KAAK,YAAY,kBAAkB,KAAK,MAAM,cAAc,IAAI;AAAA,EAC3E;AACJ;;;AtChHA,IAAME,aAAQ,cAAAC,SAAY,iBAAiB;AA4B3C,IAAMC,kBAAa,2BAAc,aAAe;AAChD,IAAMC,aAAY,aAAAC,QAAK,QAAQF,WAAU;AAKlC,IAAM,WAAN,MAAe;AAAA;AAAA,EACO;AAAA;AAAA,EACW;AAAA;AAAA,EACF;AAAA;AAAA,EACF;AAAA;AAAA,EACJ;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AAAA,EACC;AAAA;AAAA,EACC;AAAA;AAAA,EACF;AAAA;AAAA,EACA;AAAA;AAAA,EACW;AAAA;AAAA,EACT;AAAA;AAAA,EACC;AAAA;AAAA,EACA;AAAA;AAAA,EACQ;AAAA;AAAA,EACL;AAAA;AAAA,EACK;AAAA;AAAA,EACD;AAAA;AAAA,EACR;AAAA;AAAA,EACA;AAAA;AAAA,EACU;AAAA;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA,EAKpC,YAAY,cAAc;AACtB,SAAK,aAAa,gBAAAG,QAAK,KAAK,WAAAC,QAAG,aAAa,aAAAF,QAAK,KAAKD,YAAW,YAAY,GAAG,MAAM,CAAC;AAEvF,SAAK,cAAc,IAAI,eAAO,WAAW,cAAc,KAAK,UAAU;AACtE,SAAK,YAAY,IAAI,UAAU;AAC/B,SAAK,gBAAgB,IAAI,qBAAqB,KAAK,WAAW;AAE9D,SAAK,cAAc,IAAI,mBAAmB,KAAK,WAAW;AAC1D,SAAK,YAAY,IAAI,iBAAiB,KAAK,WAAW;AACtD,SAAK,QAAQ,IAAI,aAAa,KAAK,WAAW;AAC9C,SAAK,QAAQ,IAAI,aAAa,KAAK,WAAW;AAC9C,SAAK,QAAQ,IAAI,aAAa,KAAK,WAAW;AAC9C,SAAK,SAAS,IAAI,cAAc,KAAK,WAAW;AAChD,SAAK,UAAU,IAAI,eAAe,KAAK,WAAW;AAClD,SAAK,QAAQ,IAAI,aAAa,KAAK,WAAW;AAC9C,SAAK,QAAQ,IAAI,aAAa,KAAK,WAAW;AAC9C,SAAK,cAAc,IAAI,mBAAmB,KAAK,WAAW;AAC1D,SAAK,mBAAmB,IAAI,wBAAwB,KAAK,WAAW;AACpE,SAAK,UAAU,IAAI,eAAe,KAAK,WAAW;AAClD,SAAK,WAAW,IAAI,gBAAgB,KAAK,WAAW;AACpD,SAAK,WAAW,IAAI,gBAAgB,KAAK,WAAW;AACpD,SAAK,mBAAmB,IAAI,wBAAwB,KAAK,WAAW;AACpE,SAAK,cAAc,IAAI,mBAAmB,KAAK,WAAW;AAC1D,SAAK,mBAAmB,IAAI,wBAAwB,KAAK,WAAW;AACpE,SAAK,kBAAkB,IAAI,uBAAuB,KAAK,WAAW;AAClE,SAAK,UAAU,IAAI,eAAe,KAAK,WAAW;AAClD,SAAK,UAAU,IAAI,eAAe,KAAK,WAAW;AAClD,SAAK,oBAAoB,IAAI,yBAAyB,KAAK,aAAa,aAAa,OAAO;AAC5F,SAAK,gBAAgB,IAAI,qBAAqB,KAAK,WAAW;AAG9D,SAAK,SAAS;AACd,SAAK,WAAW;AAChB,SAAK,aAAa;AAClB,SAAK,YAAY;AACjB,SAAK,mBAAmB;AAAA,EAC5B;AAAA,EAEA,MAAM,aAAa,cAAc;AAC7B,UAAM,uBAAuB,KAAK,MAAM,MAAM,KAAK,cAAc,gBAAgB,CAAC;AAElF,QAAI,wBAAwB,qBAAqB,MAAM,GAAG;AACtD,YAAM,gBAAgB,aAAa,WAAW;AAC9C,oBAAc,UAAU,qBAAqB,KAAK,QAAQ;AAC1D,oBAAc,SAAS,KAAK,WAAW;AACvC,UAAI,cAAc,WAAW,KAAK,OAAO;AACrC,aAAK,SAAS,IAAI,eAAO,eAAe,qBAAqB,IAAI;AAAA,MACrE,WAAW,KAAK,OAAO;AACnB,cAAM,cAAc,KAAK,MAAM,MAAM,KAAK,MAAM,WAAW,cAAc,QAAQ,CAAC;AAElF,YAAI,YAAY,MAAM,KAAK,YAAY,MAAM,EAAE,OAAO,GAAG;AACrD,wBAAc,aAAa,YAAY,MAAM,CAAC;AAC9C,eAAK,SAAS,IAAI,eAAO,eAAe,qBAAqB,IAAI;AAAA,QACrE;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AAAA,EAEA,MAAM,eAAe,cAAc;AAC/B,UAAM,yBAAyB,KAAK,MAAM,MAAM,KAAK,cAAc,kBAAkB,CAAC;AAEtF,QAAI,0BAA0B,uBAAuB,MAAM,GAAG;AAC1D,YAAM,kBAAkB,aAAa,WAAW;AAChD,sBAAgB,UAAU,uBAAuB,KAAK,aAAa;AACnE,sBAAgB,SAAS,KAAK,WAAW;AACzC,UAAI,gBAAgB,WAAW,KAAK,OAAO;AACvC,aAAK,WAAW,IAAI,iBAAS,iBAAiB,uBAAuB,IAAI;AAAA,MAC7E,WAAW,KAAK,OAAO;AACnB,cAAM,cAAc,KAAK,MAAM,MAAM,KAAK,MAAM,WAAW,gBAAgB,QAAQ,CAAC;AAEpF,YAAI,YAAY,MAAM,KAAK,YAAY,MAAM,EAAE,OAAO,GAAG;AACrD,0BAAgB,aAAa,YAAY,MAAM,CAAC;AAChD,eAAK,WAAW,IAAI,iBAAS,iBAAiB,uBAAuB,IAAI;AAAA,QAC7E;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AAAA,EAEA,MAAM,iBAAiB,cAAc;AACjC,UAAM,2BAA2B,KAAK,MAAM,MAAM,KAAK,cAAc,oBAAoB,CAAC;AAE1F,QAAI,4BAA4B,yBAAyB,MAAM,GAAG;AAC9D,YAAM,oBAAoB,aAAa,WAAW;AAClD,wBAAkB,UAAU,yBAAyB,KAAK,QAAQ;AAClE,wBAAkB,SAAS;AAC3B,UAAI,kBAAkB,WAAW,KAAK,OAAO;AACzC,aAAK,aAAa,IAAI,mBAAW,mBAAmB,yBAAyB,IAAI;AAAA,MACrF,WAAW,KAAK,OAAO;AACnB,cAAM,cAAc,KAAK,MAAM,MAAM,KAAK,MAAM,WAAW,kBAAkB,QAAQ,CAAC;AAEtF,YAAI,YAAY,MAAM,KAAK,YAAY,MAAM,EAAE,OAAO,GAAG;AACrD,4BAAkB,aAAa,YAAY,MAAM,CAAC;AAClD,eAAK,aAAa,IAAI,mBAAW,mBAAmB,yBAAyB,IAAI;AAAA,QACrF;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AAAA,EAEA,MAAM,gBAAgB,cAAc;AAChC,UAAM,0BAA0B,KAAK,MAAM,MAAM,KAAK,cAAc,mBAAmB,CAAC;AAExF,QAAI,2BAA2B,wBAAwB,MAAM,GAAG;AAC5D,YAAM,mBAAmB,aAAa,WAAW;AACjD,uBAAiB,UAAU,wBAAwB,KAAK,cAAc;AACtE,uBAAiB,SAAS;AAC1B,UAAI,iBAAiB,WAAW,KAAK,OAAO;AACxC,aAAK,YAAY,IAAI,kBAAU,kBAAkB,wBAAwB,IAAI;AAAA,MACjF,WAAW,KAAK,OAAO;AACnB,cAAM,cAAc,KAAK,MAAM,MAAM,KAAK,MAAM,WAAW,iBAAiB,QAAQ,CAAC;AAErF,YAAI,YAAY,MAAM,KAAK,YAAY,MAAM,EAAE,OAAO,GAAG;AACrD,2BAAiB,aAAa,YAAY,MAAM,CAAC;AACjD,eAAK,YAAY,IAAI,kBAAU,kBAAkB,wBAAwB,IAAI;AAAA,QACjF;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AAAA,EAEA,MAAM,uBAAuB,cAAc;AACvC,UAAM,iCAAiC,KAAK,MAAM,MAAM,KAAK,cAAc,0BAA0B,CAAC;AAEtG,QAAI,kCAAkC,+BAA+B,MAAM,GAAG;AAC1E,YAAM,0BAA0B,aAAa,WAAW;AACxD,8BAAwB,UAAU,+BAA+B,KAAK,QAAQ;AAC9E,8BAAwB,SAAS,KAAK,WAAW;AACjD,UAAI,wBAAwB,WAAW,KAAK,OAAO;AAC/C,aAAK,mBAAmB,IAAI,yBAAiB,yBAAyB,+BAA+B,IAAI;AAAA,MAC7G,WAAW,KAAK,OAAO;AACnB,cAAM,cAAc,KAAK,MAAM,MAAM,KAAK,MAAM,WAAW,wBAAwB,QAAQ,CAAC;AAE5F,YAAI,YAAY,MAAM,KAAK,YAAY,MAAM,EAAE,OAAO,GAAG;AACrD,kCAAwB,aAAa,YAAY,MAAM,CAAC;AACxD,eAAK,mBAAmB,IAAI,yBAAiB,yBAAyB,+BAA+B,IAAI;AAAA,QAC7G;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AAAA,EAEA,MAAM,cAAc,cAAc;AAC9B,UAAM,cAAc,KAAK,MAAM,MAAM,KAAK,MAAM,WAAW,aAAa,QAAQ,CAAC;AACjF,QAAI,YAAY,MAAM,KAAK,YAAY,MAAM,EAAE,OAAO,GAAG;AACrD,mBAAa,aAAa,YAAY,MAAM,CAAC;AAAA,IACjD,OAAO;AACH,YAAM,IAAI,MAAM,6DAA6D;AAAA,IACjF;AAAA,EACJ;AAAA,EAEA,SAAS,QAAQ,QAAQ;AACrB,WAAO,OAAO,QAAQ,QAAQ,OAAO,SAAS,OAAO,MAAM,MAAM;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,mBAAmB;AACf,WAAO,KAAK,YAAY,cAAc;AAAA,EAC1C;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,kBAAkB;AACd,WAAO,KAAK,YAAY,cAAc;AAAA,EAC1C;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,aAAa;AACT,WAAO,KAAK,YAAY,cAAc;AAAA,EAC1C;AACJ;AAKO,IAAMI,aAAN,cAAwB,eAAO,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAa5C,MAAM,YAAY,UAAU,cAAc,QAAQ,UAAU,UAAU,cAAc,eAAe,eAAe;AAC9G,IAAAP,OAAM,oDAAoD,QAAQ,eAAe,aAAa;AAE9F,UAAM,SAAS,KAAK,OAAO,KAAK,KAAK,GAAG,aAAaG,aAAY,eAAe,MAAM,CAAC;AAEvF,QAAI,KAAK,SAAS,cAAc,GAAG,GAAG;AAClC,qBAAe,aAAa,UAAU,GAAG,aAAa,SAAS,CAAC;AAAA,IACpE;AAEA,UAAM,SAAS,OAAO,OAAO,QAAQ,eAAe,aAAa,EAAE,QAAQ,iBAAiB,aAAa;AACzG,UAAM,oBAAoB,OAAO;AAEjC,UAAM,eAAe,MAAM,KAAK,qBAAqB,UAAU,cAAc,QAAQ,UAAU,UAAU,cAAc,QAAQ,eAAe,eAAe,iBAAiB;AAC9K,UAAM,SAAS,IAAI,SAAS,YAAY;AAExC,QAAI;AACA,YAAM,OAAO,cAAc,YAAY;AACvC,YAAM,QAAQ,IAAI;AAAA,QACd,OAAO,aAAa,YAAY;AAAA,QAChC,OAAO,eAAe,YAAY;AAAA,QAClC,OAAO,iBAAiB,YAAY;AAAA,QACpC,OAAO,gBAAgB,YAAY;AAAA,QACnC,OAAO,uBAAuB,YAAY;AAAA,MAC9C,CAAC;AACD,aAAO;AAAA,IACX,SAAS,OAAO;AACZ,MAAAH,OAAM,2DAA2D,MAAM,OAAO;AAC9E,aAAO;AAAA,IACX;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAM,mBAAmB,KAAK,cAAc,eAAe,eAAe,gBAAgB;AACtF,IAAAA,OAAM,iDAAiD,eAAe,aAAa;AAEnF,UAAM,SAAS,KAAK,OAAO,KAAK,KAAK,GAAG,aAAaG,aAAY,eAAe,MAAM,CAAC;AAEvF,QAAI,KAAK,SAAS,cAAc,GAAG,GAAG;AAClC,qBAAe,aAAa,UAAU,GAAG,aAAa,SAAS,CAAC;AAAA,IACpE;AAEA,UAAM,SAAS,OAAO,OAAO,QAAQ,eAAe,aAAa,EAAE,QAAQ,iBAAiB,aAAa;AACzG,UAAM,oBAAoB,SAAS,OAAO,YAAY;AAEtD,QAAI,kBAAkB,kBAAkB,IAAI,MAAK,oBAAI,KAAK,GAAE,QAAQ,IAAI,KAAK,GAAI,GAAG;AAChF,YAAM,eAAe,IAAI,eAAO,aAAa;AAE7C,mBAAa,cAAc;AAC3B,mBAAa,UAAU;AACvB,mBAAa,SAAS;AACtB,mBAAa,oBAAoB;AACjC,mBAAa,gBAAgB;AAC7B,mBAAa,gBAAgB;AAC7B,mBAAa,iBAAiB;AAC9B,mBAAa,kBAAkB;AAC/B,mBAAa,QAAQ;AAErB,YAAM,SAAS,IAAI,SAAS,YAAY;AAExC,aAAO,QAAQ,IAAI;AAAA,QACf,OAAO,aAAa,YAAY;AAAA,QAChC,OAAO,eAAe,YAAY;AAAA,QAClC,OAAO,iBAAiB,YAAY;AAAA,QACpC,OAAO,gBAAgB,YAAY;AAAA,MACvC,CAAC,EACA,KAAK,MAAM,MAAM,EACjB,MAAM,CAAC,UAAU;AACd,QAAAH,OAAM,yCAAyC,MAAM,OAAO;AAC5D,eAAO;AAAA,MACX,CAAC;AAAA,IACL,OAAO;AACH,YAAM,QAAQ,MAAM,KAAK,WAAW,KAAK,cAAc,QAAQ,mBAAmB,eAAe,aAAa;AAC9G,YAAM,SAAS,IAAI,SAAS,KAAK;AAEjC,UAAI;AACA,cAAM,QAAQ,IAAI;AAAA,UACd,OAAO,aAAa,KAAK;AAAA,UACzB,OAAO,eAAe,KAAK;AAAA,UAC3B,OAAO,iBAAiB,KAAK;AAAA,UAC7B,OAAO,gBAAgB,KAAK;AAAA,QAChC,CAAC;AACD,eAAO;AAAA,MACX,SAAS,OAAO;AACZ,QAAAA,OAAM,yCAAyC,MAAM,OAAO;AAC5D,eAAO;AAAA,MACX;AAAA,IACJ;AAAA,EACJ;AAAA,EAEA,SAAS,QAAQ,QAAQ;AACrB,WAAO,OAAO,QAAQ,QAAQ,OAAO,SAAS,OAAO,MAAM,MAAM;AAAA,EACrE;AACJ;AAGO,IAAM,QAAQ;AAAA,EACjB,aAAa;AAAA,EACb,qBAAqB;AACzB;AAEA,IAAO,oBAAQ;AAAA,EACX,UAAU;AAAA,EACV,WAAWO;AAAA,EACX;AACJ;","names":["createDebug","yaml","fs","Authorize","import_debug","debug","createDebug","Authorize","import_js_yaml","import_fs","__filename","path","yaml","fs","import_js_yaml","import_fs","import_url","import_path","__filename","__dirname","path","yaml","fs","import_js_yaml","import_fs","import_url","import_path","__filename","__dirname","path","yaml","fs","import_js_yaml","import_fs","import_url","import_path","__filename","__dirname","path","yaml","fs","import_js_yaml","import_fs","import_url","import_path","__filename","__dirname","path","yaml","fs","import_js_yaml","import_fs","import_url","import_path","import_debug","import_debug","debug","createDebug","import_debug","debug","createDebug","debug","createDebug","__filename","__dirname","path","yaml","fs","Authorize"]}