diff --git a/.gitignore b/.gitignore index afdbd5ccf..54ca5f1d2 100644 --- a/.gitignore +++ b/.gitignore @@ -29,5 +29,3 @@ package-lock.json yarn-lock.json logo.svg screenshot.png -data.db -.wwebjs_cache diff --git a/.test-init.ts b/.test-init.ts deleted file mode 100644 index 9b280f030..000000000 --- a/.test-init.ts +++ /dev/null @@ -1,47 +0,0 @@ -import { expect, test } from 'vitest'; -import { GBServer } from './src/app'; -import { RootData } from './src/RootData'; -import { GBMinInstance } from 'botlib'; -import { Mutex } from 'async-mutex'; - -export default function init() { - - const min = { - packages: null, - appPackages: null, - botId: 'gbtest', - instance: {botId: 'gbtest'}, - core: {}, - conversationalService: {}, - kbService: {}, - adminService: {}, - deployService: {}, - textServices: {}, - bot: {}, - dialogs: {}, - userState: {}, - userProfile: {}, - whatsAppDirectLine: {}, - cbMap: {}, - scriptMap: {}, - sandBoxMap: {}, - gbappServices: {} - - } - - GBServer.globals = new RootData(); - GBServer.globals.server = null; - GBServer.globals.httpsServer = null; - GBServer.globals.webSessions = {}; - GBServer.globals.processes = [0, { pid: 1, proc: {step: {}}}]; - GBServer.globals.files = {}; - GBServer.globals.appPackages = []; - GBServer.globals.sysPackages = []; - GBServer.globals.minInstances = [min]; - GBServer.globals.minBoot = min; - GBServer.globals.wwwroot = null; - GBServer.globals.entryPointDialog = null; - GBServer.globals.debuggers = []; - GBServer.globals.indexSemaphore = new Mutex(); - GBServer.globals.users = {1: {userId: 1}}; -} diff --git a/.vscode/launch.json b/.vscode/launch.json index b23b24305..55a766b6f 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -11,20 +11,20 @@ "cwd": "${workspaceRoot}", "env": { "NODE_ENV": "development", - "NODE_NO_WARNINGS": "1" + "NODE_NO_WARNINGS":"1" }, "args": [ - "--require", "${workspaceRoot}/suppress-node-warnings.cjs" + "--no-deprecation", + "--loader ts-node/esm", + "--require ${workspaceRoot}/suppress-node-warnings.cjs", ], "skipFiles": [ - "node_modules/**/*.js", - "/**" + "node_modules/**/*.js" ], "outFiles": [ - "${workspaceRoot}/dist/**/*.js" - ], + "${workspaceRoot}/dist/**/*.js"], "stopOnEntry": false, "console": "integratedTerminal" } ] -} \ No newline at end of file +} diff --git a/.vscode/settings.json b/.vscode/settings.json index e6f320b33..3b6641073 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,4 +1,3 @@ { - "git.ignoreLimitWarning": true, - "cmake.ignoreCMakeListsMissing": true + "git.ignoreLimitWarning": true } \ No newline at end of file diff --git a/boot.mjs b/boot.mjs index 4c6cf2cd6..dfe9e3037 100644 --- a/boot.mjs +++ b/boot.mjs @@ -1,56 +1,54 @@ #!/usr/bin/env node -process.stdout.write(`General Bots VM: node@${process.version.replace('v', '')}, ${process.platform} ${process.arch} `); - -import fs from 'fs/promises'; +import Fs from 'fs'; import os from 'node:os'; -import path from 'path'; +import Path from 'path'; import { exec } from 'child_process'; - -import {GBUtil} from './dist/src/util.js' +import pjson from './package.json' assert { type: 'json' }; // Displays version of Node JS being used at runtime and others attributes. -console.log(`\nLoading General Bots VM...`); +process.stdout.write(`General Bots. BotServer@${pjson.version}, botlib@${pjson.dependencies.botlib}, botbuilder@${pjson.dependencies.botbuilder}, node@${process.version.replace('v', '')}, ${process.platform} ${process.arch} `); +console.log(`\nLoading virtual machine source code files...`); var __dirname = process.env.PWD || process.cwd(); try { - var run = async () => { + var run = () => { - import('./dist/src/app.js').then(async (gb)=> { - await gb.GBServer.run() + import('./dist/src/app.js').then((gb)=> { + gb.GBServer.run() }); }; - var processDist = async () => { - if (!await GBUtil.exists('dist')) { + var processDist = () => { + if (!Fs.existsSync('dist')) { console.log(`\n`); - console.log(`General Bots: Compiling...`); - exec(path.join(__dirname, 'node_modules/.bin/tsc'), async (err, stdout, stderr) => { + console.log(`Generall Bots: Compiling...`); + exec(Path.join(__dirname, 'node_modules/.bin/tsc'), (err, stdout, stderr) => { if (err) { console.error(err); return; } - await run(); + run(); }); } else { - await run(); + run(); } }; // Installing modules if it has not been done yet. - if (!await GBUtil.exists('node_modules')) { + if (!Fs.existsSync('node_modules')) { console.log(`\n`); - console.log(`General Bots: Installing modules for the first time, please wait...`); - exec('npm install', async (err, stdout, stderr) => { + console.log(`Generall Bots: Installing modules for the first time, please wait...`); + exec('npm install', (err, stdout, stderr) => { if (err) { console.error(err); return; } - await processDist(); + processDist(); }); } else { - await processDist(); + processDist(); } } catch (e) { console.log(e); diff --git a/directline-v2.json b/directline-3.0.json similarity index 99% rename from directline-v2.json rename to directline-3.0.json index 80662bb12..39755e981 100644 --- a/directline-v2.json +++ b/directline-3.0.json @@ -35,21 +35,6 @@ "application/xml", "text/xml" ], - "parameters": [ - { - "name": "userSystemId", - "in": "query", - "description": "User System ID", - "required": false, - "type": "string" - },{ - "name": "userName", - "in": "query", - "description": "User Name", - "required": false, - "type": "string" - }], - "responses": { "200": { "description": "The conversation was successfully created, updated, or retrieved.", diff --git a/greenkeeper.json b/greenkeeper.json index 3e5b77aa7..50295f32d 100644 --- a/greenkeeper.json +++ b/greenkeeper.json @@ -3,6 +3,7 @@ "default": { "packages": [ "package.json", + "packages/default.gbtheme/package.json", "packages/default.gbui/package.json" ] } diff --git a/logo.png b/logo.png new file mode 100644 index 000000000..9a0a1a84e Binary files /dev/null and b/logo.png differ diff --git a/package.json b/package.json index 5f2f30005..929a64bb2 100644 --- a/package.json +++ b/package.json @@ -1,9 +1,9 @@ { "name": "botserver", - "version": "5.0.0", + "version": "3.1.0", + "type": "module", "description": "General Bot Community Edition open-core server.", "main": "./boot.mjs", - "type": "module", "bugs": "https://github.com/pragmatismo-io/BotServer/issues", "homepage": "https://github.com/pragmatismo-io/BotServer/#readme", "contributors": [ @@ -13,18 +13,16 @@ "PH ", "Dário Vieira ", "Alan Perdomo " + ], - "opencv4nodejs": { - "disableAutoBuild": "1" - }, "engines": { - "node": "=22.9.0" + "node": "=21.7.3" }, "license": "AGPL-3.0", "preferGlobal": true, "private": false, "bin": { - "gbot": "./boot.mjs" + "gbot": "./boot.cjs" }, "readme": "README.md", "repository": { @@ -58,7 +56,7 @@ "jest": { "workerIdleMemoryLimit": "4096MB", "transform": { - ".+\\.tsx?$": "ts-jest" + "^.+\\.tsx?$": "ts-jest" }, "moduleFileExtensions": [ "ts", @@ -69,197 +67,183 @@ ] }, "dependencies": { - "@azure/arm-appservice": "15.0.0", - "@azure/arm-cognitiveservices": "7.5.0", - "@azure/arm-resources": "5.2.0", - "@azure/arm-search": "3.2.0", - "@azure/arm-sql": "10.0.0", + "@azure/arm-appservice": "13.0.3", + "@azure/arm-cognitiveservices": "7.3.1", + "@azure/arm-resources": "5.1.0", + "@azure/arm-search": "3.0.1", + "@azure/arm-sql": "9.0.1", "@azure/arm-subscriptions": "5.1.0", "@azure/cognitiveservices-computervision": "8.2.0", - "@azure/keyvault-keys": "4.8.0", - "@azure/ms-rest-js": "2.7.0", - "@azure/msal-node": "2.13.1", - "@azure/openai": "2.0.0-beta.1", - "@azure/search-documents": "12.1.0", - "@azure/storage-blob": "12.24.0", - "@google-cloud/pubsub": "4.7.0", - "@google-cloud/translate": "8.5.0", - "@hubspot/api-client": "11.2.0", - "@koa/cors": "5.0.0", - "@langchain/community": "0.2.31", - "@langchain/openai": "0.2.8", - "@microsoft/microsoft-graph-client": "3.0.7", - "@nlpjs/basic": "4.27.0", - "@nosferatu500/textract": "3.1.3", - "@push-rpc/core": "1.9.0", - "@push-rpc/http": "1.9.0", - "@push-rpc/openapi": "1.9.0", - "@push-rpc/websocket": "1.9.0", - "@semantic-release/changelog": "6.0.3", - "@semantic-release/exec": "6.0.3", - "@semantic-release/git": "10.0.1", - "@sendgrid/mail": "8.1.3", - "@sequelize/core": "7.0.0-alpha.37", - "@types/node": "22.5.2", - "@types/validator": "13.12.1", - "adm-zip": "0.5.16", - "alasql": "4.5.1", + "@azure/keyvault-keys": "4.6.0", + "@azure/ms-rest-js": "2.6.2", + "@azure/msal-node": "1.14.3", + "@azure/search-documents": "12.0.0", + "@azure/storage-blob": "12.17.0", + "@google-cloud/pubsub": "3.2.1", + "@google-cloud/translate": "7.0.4", + "@hubspot/api-client": "7.1.2", + "@koa/cors": "4.0.0", + "@langchain/community": "^0.0.36", + "@langchain/openai": "^0.0.15", + "@microsoft/microsoft-graph-client": "3.0.4", + "@nlpjs/basic": "4.26.1", + "@nosferatu500/textract": "3.1.2", + "@push-rpc/core": "1.8.2", + "@push-rpc/http": "1.8.2", + "@push-rpc/openapi": "^1.9.0", + "@push-rpc/websocket": "1.8.2", + "@semantic-release/changelog": "5.0.1", + "@semantic-release/exec": "5.0.0", + "@semantic-release/git": "9.0.0", + "@sendgrid/mail": "7.7.0", + "@sequelize/core": "7.0.0-alpha.29", + "@types/node": "18.11.9", + "@types/validator": "13.7.10", + "adm-zip": "0.5.9", + "alasql": "2.1.6", "any-shell-escape": "0.1.1", "arraybuffer-to-buffer": "0.0.7", - "async-mutex": "0.5.0", + "async-mutex": "0.4.0", "async-promises": "0.2.3", "async-retry": "1.3.3", "basic-auth": "2.0.1", - "billboard.js": "3.13.0", + "billboard.js": "3.6.3", "bluebird": "3.7.2", - "body-parser": "1.20.2", - "botbuilder": "4.23.0", + "body-parser": "1.20.1", + "botbuilder": "4.18.0", "botbuilder-adapter-facebook": "1.0.12", - "botbuilder-ai": "4.23.0", - "botbuilder-dialogs": "4.23.0", - "botframework-connector": "4.23.0", - "botlib": "5.0.0", + "botbuilder-ai": "4.18.0", + "botbuilder-dialogs": "4.18.0", + "botframework-connector": "4.18.0", + "botlib": "3.0.11", "c3-chart-maker": "0.2.8", - "cd": "0.3.3", - "chalk-animation": "2.0.3", - "chatgpt": "5.2.5", - "chrome-remote-interface": "0.33.2", - "cli-progress": "3.12.0", + "cd": "^0.3.3", + "chalk-animation": "^2.0.3", + "chatgpt": "2.4.2", + "chrome-remote-interface": "0.31.3", + "cli-progress": "3.11.2", "cli-spinner": "0.2.10", - "core-js": "3.38.1", - "csv-database": "0.9.2", - "data-forge": "1.10.2", + "core-js": "3.26.1", + "data-forge": "1.9.6", "date-diff": "1.0.2", "docximager": "0.0.4", - "docxtemplater": "3.50.0", + "docxtemplater": "3.9.7", "dotenv-extended": "2.9.0", - "electron": "32.0.1", - "exceljs": "4.4.0", - "express": "4.19.2", + "dynamics-web-api": "1.7.6", + "exceljs": "4.3.0", + "express": "4.18.2", "express-remove-route": "1.0.0", - "facebook-nodejs-business-sdk": "^20.0.2", - "ffmpeg-static": "5.2.0", - "formidable": "^3.5.1", - "get-image-colors": "4.0.1", - "glob": "^11.0.0", - "google-libphonenumber": "3.2.38", - "googleapis": "143.0.0", - "hnswlib-node": "3.0.0", - "html-to-md": "0.8.6", + "ffmpeg-static": "5.1.0", + "get-image-colors": "^4.0.1", + "google-libphonenumber": "3.2.31", + "googleapis": "126.0.1", + "hnswlib-node": "^1.4.2", "http-proxy": "1.18.1", - "ibm-watson": "9.1.0", - "instagram-private-api": "1.46.1", - "iso-639-1": "3.1.3", - "isomorphic-fetch": "3.0.0", - "jimp": "^1.6.0", + "ibm-watson": "7.1.2", + "iso-639-1": "3.1.1", + "join-images-updated": "1.1.11", "js-md5": "0.8.3", - "json-schema-to-zod": "2.4.0", - "jsqr": "^1.4.0", + "json-schema-to-zod": "^2.0.14", "just-indent": "0.0.1", - "keyv": "5.0.1", - "koa": "2.15.3", + "keyv": "4.5.2", + "koa": "2.13.4", "koa-body": "6.0.1", - "koa-ratelimit": "5.1.0", - "koa-router": "12.0.1", - "langchain": "0.2.17", - "language-tags": "1.0.9", + "koa-router": "12.0.0", + "langchain": "0.1.25", + "language-tags": "^1.0.9", "line-replace": "2.0.1", "lodash": "4.17.21", - "luxon": "3.5.0", - "mammoth": "1.8.0", - "mariadb": "3.3.1", + "lunary": "^0.6.16", + "luxon": "3.1.0", + "mammoth": "1.7.0", + "mariadb": "3.2.2", "mime-types": "2.1.35", - "moment": "2.30.1", - "ms-rest-azure": "3.0.2", - "mysql": "^2.18.1", + "moment": "1.3.0", + "ms-rest-azure": "3.0.0", "nexmo": "2.9.1", "ngrok": "5.0.0-beta.2", - "node-cron": "3.0.3", - "node-html-parser": "6.1.13", - "node-nlp": "4.27.0", + "node-cron": "3.0.2", + "node-html-parser": "6.1.5", + "node-nlp": "4.26.1", "node-tesseract-ocr": "2.2.1", - "nodemon": "^3.1.7", - "npm": "10.8.3", - "open": "10.1.0", + "npm": "9.6.1", + "open": "8.4.0", "open-docxtemplater-image-module": "1.0.3", - "openai": "4.57.0", + "openai": "4.6.0", "pdf-extraction": "1.0.2", "pdf-parse": "1.1.1", - "pdf-to-png-converter": "3.3.0", - "pdfjs-dist": "4.6.82", - "pdfkit": "0.15.0", - "phone": "3.1.50", - "pizzip": "3.1.7", + "pdf-to-png-converter": "3.2.0", + "pdfjs-dist": "4.0.379", + "pdfkit": "0.13.0", + "phone": "3.1.30", + "pizzip": "3.1.3", "pptxtemplater": "1.0.5", "pragmatismo-io-framework": "1.1.1", - "prism-media": "1.3.5", - "public-ip": "7.0.1", - "punycode": "2.3.1", - "puppeteer": "23.2.2", - "puppeteer-extra": "3.3.6", + "prism-media": "1.3.4", + "public-ip": "6.0.1", + "punycode": "2.1.1", + "puppeteer": "19.8.0", + "puppeteer-extra": "3.3.4", "puppeteer-extra-plugin-minmax": "1.1.2", - "puppeteer-extra-plugin-stealth": "2.11.2", + "puppeteer-extra-plugin-stealth": "2.11.1", "qr-scanner": "1.4.2", - "qrcode": "1.5.4", - "qrcode-reader": "^1.0.4", + "qrcode": "1.5.1", "qrcode-terminal": "0.12.0", "readline": "1.3.0", - "reflect-metadata": "0.2.2", - "rimraf": "6.0.1", + "reflect-metadata": "0.1.13", + "rimraf": "3.0.2", "safe-buffer": "5.2.1", - "scanf": "1.2.0", - "sequelize": "6.37.3", - "sequelize-cli": "6.6.2", - "sequelize-typescript": "2.1.6", - "simple-git": "3.26.0", + "scanf": "1.1.2", + "sequelize": "6.28.2", + "sequelize-cli": "6.6.0", + "sequelize-typescript": "2.1.5", + "sharp": "0.33.4", + "simple-git": "3.16.0", "speakingurl": "14.0.1", - "sqlite3": "5.1.7", "ssr-for-bots": "1.0.1-c", "strict-password-generator": "1.1.2", - "swagger-client": "3.29.2", - "swagger-ui-dist": "5.17.14", - "tabulator-tables": "6.2.5", - "tedious": "18.6.1", + "swagger-client": "3.18.5", + "swagger-ui-dist": "^5.11.0", + "tabulator-tables": "5.4.2", + "tedious": "15.1.2", "textract": "2.5.0", - "twilio": "5.2.3", - "twitter-api-v2": "1.17.2", - "typeorm": "0.3.20", - "typescript": "5.5.4", + "twilio": "^4.23.0", + "twitter-api-v2": "1.12.9", + "typescript": "4.9.5", "url-join": "5.0.0", "vhost": "3.0.2", - "vm2": "3.9.19", - "vm2-process": "2.1.5", + "vm2": "3.9.11", + "vm2-process": "2.1.1", "walk-promise": "0.2.0", "washyourmouthoutwithsoap": "1.0.2", - "webdav-server": "2.6.2", "whatsapp-cloud-api": "0.3.1", - "whatsapp-web.js": "1.26.1-alpha.1", - "winston": "3.14.2", - "ws": "8.18.0", - "yaml": "2.5.0", - "yarn": "1.22.22", - "zod-to-json-schema": "3.23.2" + "whatsapp-web.js": "https://github.com/Julzk/whatsapp-web.js/tarball/jkr_hotfix_7", + "winston": "3.8.2", + "ws": "8.14.2", + "yarn": "1.22.19", + "zod-to-json-schema": "^3.22.4" }, "devDependencies": { - "@types/qrcode": "1.5.5", - "@types/url-join": "4.0.3", - "@typescript-eslint/eslint-plugin": "8.4.0", - "@typescript-eslint/parser": "8.4.0", - "ban-sensitive-files": "1.10.5", - "commitizen": "4.3.0", + "@types/qrcode": "1.5.0", + "@types/url-join": "4.0.1", + "ban-sensitive-files": "1.9.18", + "commitizen": "4.2.2", "cz-conventional-changelog": "3.3.0", "dependency-check": "4.1.0", - "git-issues": "1.3.1", + "git-issues": "1.0.0", "license-checker": "25.0.1", - "prettier-standard": "16.4.1", - "semantic-release": "24.1.0", - "simple-commit-message": "4.1.3", + "prettier-standard": "15.0.1", + "semantic-release": "17.2.4", + "simple-commit-message": "4.0.13", "super-strong-password-generator": "2.0.2", "super-strong-password-generator-es": "2.0.2", "travis-deploy-once": "5.0.11", "tslint": "6.1.3", - "tsx": "^4.19.1", - "vitest": "2.0.5" + "vitest": "^1.3.0" + }, + "optionalDependencies": { + "@img/sharp-win32-x64": "0.33.4", + "@img/sharp-linux-arm": "0.33.4" }, "eslintConfig": { "env": { diff --git a/packages/admin.gbapp/dialogs/AdminDialog.ts b/packages/admin.gbapp/dialogs/AdminDialog.ts index 5a9acdaaa..8c2606bf6 100644 --- a/packages/admin.gbapp/dialogs/AdminDialog.ts +++ b/packages/admin.gbapp/dialogs/AdminDialog.ts @@ -288,7 +288,7 @@ export class AdminDialog extends IGBDialog { const packages = []; let skipError = false; - if (!filename || filename === '') { + if (filename === null || filename === '') { await min.conversationalService.sendText(min, step, `Starting publishing for ${botId} packages...`); packages.push(`${botId}.gbot`); packages.push(`${botId}.gbtheme`); @@ -313,7 +313,7 @@ export class AdminDialog extends IGBDialog { } if (packageName.indexOf('.') !== -1) { - cmd1 = `deployPackage ${process.env.STORAGE_SITE} /${GBConfigService.get('STORAGE_LIBRARY')}/${botId}.gbai/${packageName}`; + cmd1 = `deployPackage ${process.env.STORAGE_SITE} /${process.env.STORAGE_LIBRARY}/${botId}.gbai/${packageName}`; } else { cmd1 = `deployPackage ${packageName}`; } diff --git a/packages/admin.gbapp/index.ts b/packages/admin.gbapp/index.ts index 0abbf1c67..7b093560f 100644 --- a/packages/admin.gbapp/index.ts +++ b/packages/admin.gbapp/index.ts @@ -5,7 +5,7 @@ | ██ ██ █ █ ██ █ █ ██ ██ ██ ██ ██ ██ █ ██ ██ █ █ | | █████ █████ █ ███ █████ ██ ██ ██ ██ █████ ████ █████ █ ███ | | | -| General Bots Copyright (c) pragmatismo.cloud. All rights reserved. | +| General Bots Copyright (c) pragmatismo.cloud. All rights reserved. | | Licensed under the AGPL-3.0. | | | | According to our dual licensing model, this program can be used either | @@ -21,7 +21,7 @@ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | | GNU Affero General Public License for more details. | | | -| "General Bots" is a registered trademark of pragmatismo.cloud. | +| "General Bots" is a registered trademark of pragmatismo.cloud. | | The licensing of the program under the AGPLv3 does not imply a | | trademark license. Therefore any rights, title and interest in | | our trademarks remain entirely with us. | diff --git a/packages/admin.gbapp/models/AdminModel.ts b/packages/admin.gbapp/models/AdminModel.ts index 224ebc2d7..34e24a226 100644 --- a/packages/admin.gbapp/models/AdminModel.ts +++ b/packages/admin.gbapp/models/AdminModel.ts @@ -5,7 +5,7 @@ | ██ ██ █ █ ██ █ █ ██ ██ ██ ██ ██ ██ █ ██ ██ █ █ | | █████ █████ █ ███ █████ ██ ██ ██ ██ █████ ████ █████ █ ███ | | | -| General Bots Copyright (c) pragmatismo.cloud. All rights reserved. | +| General Bots Copyright (c) pragmatismo.cloud. All rights reserved. | | Licensed under the AGPL-3.0. | | | | According to our dual licensing model, this program can be used either | @@ -21,7 +21,7 @@ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | | GNU Affero General Public License for more details. | | | -| "General Bots" is a registered trademark of pragmatismo.cloud. | +| "General Bots" is a registered trademark of pragmatismo.cloud. | | The licensing of the program under the AGPLv3 does not imply a | | trademark license. Therefore any rights, title and interest in | | our trademarks remain entirely with us. | diff --git a/packages/admin.gbapp/services/GBAdminService.ts b/packages/admin.gbapp/services/GBAdminService.ts index b8fb9d2a0..0b0e7f0a3 100644 --- a/packages/admin.gbapp/services/GBAdminService.ts +++ b/packages/admin.gbapp/services/GBAdminService.ts @@ -1,3 +1,5 @@ + + /*****************************************************************************\ | █████ █████ ██ █ █████ █████ ████ ██ ████ █████ █████ ███ ® | | ██ █ ███ █ █ ██ ██ ██ ██ ██ ██ █ ██ ██ █ █ | @@ -5,7 +7,7 @@ | ██ ██ █ █ ██ █ █ ██ ██ ██ ██ ██ ██ █ ██ ██ █ █ | | █████ █████ █ ███ █████ ██ ██ ██ ██ █████ ████ █████ █ ███ | | | -| General Bots Copyright (c) pragmatismo.cloud. All rights reserved. | +| General Bots Copyright (c) pragmatismo.cloud. All rights reserved. | | Licensed under the AGPL-3.0. | | | | According to our dual licensing model, this program can be used either | @@ -21,7 +23,7 @@ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | | GNU Affero General Public License for more details. | | | -| "General Bots" is a registered trademark of pragmatismo.cloud. | +| "General Bots" is a registered trademark of pragmatismo.cloud. | | The licensing of the program under the AGPLv3 does not imply a | | trademark license. Therefore any rights, title and interest in | | our trademarks remain entirely with us. | @@ -46,15 +48,14 @@ import { GBImporter } from '../../core.gbapp/services/GBImporterService.js'; import { GBSharePointService } from '../../sharepoint.gblib/services/SharePointService.js'; import { GuaribasAdmin } from '../models/AdminModel.js'; import msRestAzure from 'ms-rest-azure'; -import path from 'path'; -import { caseSensitive_Numbs_SpecialCharacters_PW, lowercase_PW } from 'super-strong-password-generator'; +import Path from 'path'; +import { caseSensitive_Numbs_SpecialCharacters_PW, lowercase_PW } from 'super-strong-password-generator' import crypto from 'crypto'; -import fs from 'fs/promises'; +import Fs from 'fs'; import { GBServer } from '../../../src/app.js'; import { GuaribasUser } from '../../security.gbapp/models/index.js'; import { DialogKeywords } from '../../basic.gblib/services/DialogKeywords.js'; import { GBLogEx } from '../../core.gbapp/services/GBLogEx.js'; -import { GBUtil } from '../../../src/util.js'; /** * Services for server administration. @@ -75,9 +76,9 @@ export class GBAdminService implements IGBAdminService { return crypto.randomUUID(); } - public static async getNodeVersion() { + public static getNodeVersion() { const packageJson = urlJoin(process.cwd(), 'package.json'); - const pkg = JSON.parse(await fs.readFile(packageJson, 'utf8')); + const pkg = JSON.parse(Fs.readFileSync(packageJson, 'utf8')); return pkg.engines.node.replace('=', ''); } @@ -88,40 +89,45 @@ export class GBAdminService implements IGBAdminService { } public static async getADALCredentialsFromUsername(username: string, password: string) { + return await msRestAzure.loginWithUsernamePassword(username, password); } public static getMobileCode() { + return this.getNumberIdentifier(6); } public static getRndPassword(): string { + let password = caseSensitive_Numbs_SpecialCharacters_PW(15); password = password.replace(/[\@\[\=\:\;\?\"\'\#]/gi, '*'); const removeRepeatedChars = (s, r) => { - let res = '', - last = null, - counter = 0; + let res = '', last = null, counter = 0; s.split('').forEach(char => { - if (char == last) counter++; - else { - counter = 0; - last = char; - } - if (counter < r) res += char; - }); + if (char == last) + counter++; + else { + counter = 0; + last = char; + } + if (counter < r) + res += char; + }); return res; - }; + } return removeRepeatedChars(password, 1); } public static getRndReadableIdentifier(): string { + return lowercase_PW(14); } public static getNumberIdentifier(digits: number = 14): string { + if (digits <= 0) { throw new Error('Number of digits should be greater than 0.'); } @@ -149,39 +155,54 @@ export class GBAdminService implements IGBAdminService { } public static async undeployPackageCommand(text: string, min: GBMinInstance) { + const packageName = text.split(' ')[1]; const importer = new GBImporter(min.core); const deployer = new GBDeployer(min.core, importer); - const packagePath = GBUtil.getGBAIPath(min.botId, null, packageName); - const localFolder = path.join('work', packagePath); + const path = DialogKeywords.getGBAIPath(min.botId, null, packageName); + const localFolder = Path.join('work', path); await deployer.undeployPackageFromLocalPath(min.instance, localFolder); } public static isSharePointPath(path: string) { return path.indexOf('sharepoint.com') !== -1; } - public static async deployPackageCommand( - min: GBMinInstance, - user: GuaribasUser, - text: string, - deployer: IGBDeployer - ) { + public static async deployPackageCommand(min: GBMinInstance, user: GuaribasUser, text: string, deployer: IGBDeployer) { const packageName = text.split(' ')[1]; - const folderName = text.split(' ')[2]; - const packageType = path.extname(folderName).substr(1); - const gbaiPath = GBUtil.getGBAIPath(min.instance.botId, packageType, null); - const localFolder = path.join('work', gbaiPath); + if (!this.isSharePointPath(packageName)) { + const additionalPath = GBConfigService.get('ADDITIONAL_DEPLOY_PATH'); + if (additionalPath === undefined) { + throw new Error('ADDITIONAL_DEPLOY_PATH is not set and deployPackage was called.'); + } + await deployer['deployPackage2'](min, user, urlJoin(additionalPath, packageName)); + } else { + const folderName = text.split(' ')[2]; + const packageType = Path.extname(folderName).substr(1); + const gbaiPath = DialogKeywords.getGBAIPath(min.instance.botId, packageType, null); + const localFolder = Path.join('work', gbaiPath); - await deployer['deployPackage2'](min, user, localFolder, true); + // .gbot packages are handled using storage API, so no download + // of local resources is required. + const gbai = DialogKeywords.getGBAIPath(min.instance.botId); + if (packageType === 'gbkb') { + await deployer['cleanupPackage'](min.instance, packageName); + } + + await deployer['downloadFolder'](min, + Path.join('work', `${gbai}`), + Path.basename(localFolder)); + await deployer['deployPackage2'](min, user, localFolder); + } } public static async rebuildIndexPackageCommand(min: GBMinInstance, deployer: GBDeployer) { const service = await AzureDeployerService.createInstance(deployer); - const searchIndex = min.instance.searchIndex - ? min.instance.searchIndex - : GBServer.globals.minBoot.instance.searchIndex; - await deployer.rebuildIndex(min.instance, service.getKBSearchSchema(searchIndex)); + const searchIndex = min.instance.searchIndex ? min.instance.searchIndex : GBServer.globals.minBoot.instance.searchIndex; + await deployer.rebuildIndex( + min.instance, + service.getKBSearchSchema(searchIndex) + ); } public static async syncBotServerCommand(min: GBMinInstance, deployer: GBDeployer) { @@ -224,15 +245,15 @@ export class GBAdminService implements IGBAdminService { return obj.value; } - public async acquireElevatedToken( - instanceId: number, - root: boolean = false, + public async acquireElevatedToken(instanceId: number, root: boolean = false, tokenName: string = '', clientId: string = null, clientSecret: string = null, host: string = null, tenant: string = null ): Promise { + + if (root) { const minBoot = GBServer.globals.minBoot; instanceId = minBoot.instance.instanceId; @@ -246,6 +267,7 @@ export class GBAdminService implements IGBAdminService { throw new Error(`/setupSecurity is required before running /publish.`); } + return new Promise(async (resolve, reject) => { const instance = await this.core.loadInstanceById(instanceId); @@ -254,10 +276,14 @@ export class GBAdminService implements IGBAdminService { const accessToken = await this.getValue(instanceId, `${tokenName}accessToken`); resolve(accessToken); } else { + if (tokenName && !root) { + const refreshToken = await this.getValue(instanceId, `${tokenName}refreshToken`); - let url = urlJoin(host, tenant, 'oauth/token'); + let url = urlJoin( + host, + tenant, 'oauth/token'); let buff = new Buffer(`${clientId}:${clientSecret}`); const base64 = buff.toString('base64'); @@ -269,8 +295,8 @@ export class GBAdminService implements IGBAdminService { 'Content-Type': 'application/x-www-form-urlencoded' }, body: new URLSearchParams({ - grant_type: 'refresh_token', - refresh_token: refreshToken + 'grant_type': 'refresh_token', + 'refresh_token': refreshToken }) }; const result = await fetch(url, options); @@ -287,15 +313,15 @@ export class GBAdminService implements IGBAdminService { await this.setValue(instanceId, `${tokenName}accessToken`, token['access_token']); await this.setValue(instanceId, `${tokenName}refreshToken`, token['refresh_token']); - await this.setValue( - instanceId, - `${tokenName}expiresOn`, - new Date(Date.now() + token['expires_in'] * 1000).toString() - ); + await this.setValue(instanceId, `${tokenName}expiresOn`, + new Date(Date.now() + (token['expires_in'] * 1000)).toString()); await this.setValue(instanceId, `${tokenName}AntiCSRFAttackState`, null); resolve(token['access_token']); - } else { + + } + else { + const oauth2 = tokenName ? 'oauth' : 'oauth2'; const authorizationUrl = urlJoin( tokenName ? host : instance.authenticatorAuthorityHostUrl, @@ -333,5 +359,5 @@ export class GBAdminService implements IGBAdminService { }); } - public async publish(min: GBMinInstance, packageName: string, republish: boolean): Promise {} + public async publish(min: GBMinInstance, packageName: string, republish: boolean): Promise { } } diff --git a/packages/analytics.gblib/index.ts b/packages/analytics.gblib/index.ts index f6ae80741..785057fbc 100644 --- a/packages/analytics.gblib/index.ts +++ b/packages/analytics.gblib/index.ts @@ -5,7 +5,7 @@ | ██ ██ █ █ ██ █ █ ██ ██ ██ ██ ██ ██ █ ██ ██ █ █ | | █████ █████ █ ███ █████ ██ ██ ██ ██ █████ ████ █████ █ ███ | | | -| General Bots Copyright (c) pragmatismo.cloud. All rights reserved. | +| General Bots Copyright (c) pragmatismo.cloud. All rights reserved. | | Licensed under the AGPL-3.0. | | | | According to our dual licensing model, this program can be used either | @@ -21,7 +21,7 @@ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | | GNU Affero General Public License for more details. | | | -| "General Bots" is a registered trademark of pragmatismo.cloud. | +| "General Bots" is a registered trademark of pragmatismo.cloud. | | The licensing of the program under the AGPLv3 does not imply a | | trademark license. Therefore any rights, title and interest in | | our trademarks remain entirely with us. | diff --git a/packages/analytics.gblib/models/index.ts b/packages/analytics.gblib/models/index.ts index b6a6a0a35..27b22d77e 100644 --- a/packages/analytics.gblib/models/index.ts +++ b/packages/analytics.gblib/models/index.ts @@ -5,7 +5,7 @@ | ██ ██ █ █ ██ █ █ ██ ██ ██ ██ ██ ██ █ ██ ██ █ █ | | █████ █████ █ ███ █████ ██ ██ ██ ██ █████ ████ █████ █ ███ | | | -| General Bots Copyright (c) pragmatismo.cloud. All rights reserved. | +| General Bots Copyright (c) pragmatismo.cloud. All rights reserved. | | Licensed under the AGPL-3.0. | | | | According to our dual licensing model, this program can be used either | @@ -21,7 +21,7 @@ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | | GNU Affero General Public License for more details. | | | -| "General Bots" is a registered trademark of pragmatismo.cloud. | +| "General Bots" is a registered trademark of pragmatismo.cloud. | | The licensing of the program under the AGPLv3 does not imply a | | trademark license. Therefore any rights, title and interest in | | our trademarks remain entirely with us. | diff --git a/packages/analytics.gblib/services/AnalyticsService.ts b/packages/analytics.gblib/services/AnalyticsService.ts index 5fb524568..a227cf2f9 100644 --- a/packages/analytics.gblib/services/AnalyticsService.ts +++ b/packages/analytics.gblib/services/AnalyticsService.ts @@ -5,7 +5,7 @@ | ██ ██ █ █ ██ █ █ ██ ██ ██ ██ ██ ██ █ ██ ██ █ █ | | █████ █████ █ ███ █████ ██ ██ ██ ██ █████ ████ █████ █ ███ | | | -| General Bots Copyright (c) pragmatismo.cloud. All rights reserved. | +| General Bots Copyright (c) pragmatismo.cloud. All rights reserved. | | Licensed under the AGPL-3.0. | | | | According to our dual licensing model, this program can be used either | @@ -21,7 +21,7 @@ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | | GNU Affero General Public License for more details. | | | -| "General Bots" is a registered trademark of pragmatismo.cloud. | +| "General Bots" is a registered trademark of pragmatismo.cloud. | | The licensing of the program under the AGPLv3 does not imply a | | trademark license. Therefore any rights, title and interest in | | our trademarks remain entirely with us. | diff --git a/packages/azuredeployer.gbapp/dialogs/StartDialog.ts b/packages/azuredeployer.gbapp/dialogs/StartDialog.ts index 4a184d4db..af182036f 100644 --- a/packages/azuredeployer.gbapp/dialogs/StartDialog.ts +++ b/packages/azuredeployer.gbapp/dialogs/StartDialog.ts @@ -5,7 +5,7 @@ | ██ ██ █ █ ██ █ █ ██ ██ ██ ██ ██ ██ █ ██ ██ █ █ | | █████ █████ █ ███ █████ ██ ██ ██ ██ █████ ████ █████ █ ███ | | | -| General Bots Copyright (c) pragmatismo.cloud. All rights reserved. | +| General Bots Copyright (c) pragmatismo.cloud. All rights reserved. | | Licensed under the AGPL-3.0. | | | | According to our dual licensing model, this program can be used either | @@ -21,7 +21,7 @@ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | | GNU Affero General Public License for more details. | | | -| "General Bots" is a registered trademark of pragmatismo.cloud. | +| "General Bots" is a registered trademark of pragmatismo.cloud. | | The licensing of the program under the AGPLv3 does not imply a | | trademark license. Therefore any rights, title and interest in | | our trademarks remain entirely with us. | @@ -35,13 +35,12 @@ 'use strict'; import { GBLog, IGBInstallationDeployer, IGBInstance } from 'botlib'; -import fs from 'fs/promises'; +import * as Fs from 'fs'; import { GBAdminService } from '../../../packages/admin.gbapp/services/GBAdminService.js'; import { GBConfigService } from '../../../packages/core.gbapp/services/GBConfigService.js'; import scanf from 'scanf'; import { AzureDeployerService } from '../services/AzureDeployerService.js'; import { GBLogEx } from '../../core.gbapp/services/GBLogEx.js'; -import { GBUtil } from '../../../src/util.js'; /** * Handles command-line dialog for getting info for Boot Bot. @@ -50,7 +49,7 @@ export class StartDialog { public static async createBaseInstance (deployer, freeTier) { // No .env so asks for cloud credentials to start a new farm. - if (!await GBUtil.exists(`.env`)) { + if (!Fs.existsSync(`.env`)) { process.stdout.write( 'A empty enviroment is detected. To start automatic deploy, please enter some information:\n' ); diff --git a/packages/azuredeployer.gbapp/index.ts b/packages/azuredeployer.gbapp/index.ts index d765958c1..d8d9ffcd7 100644 --- a/packages/azuredeployer.gbapp/index.ts +++ b/packages/azuredeployer.gbapp/index.ts @@ -5,7 +5,7 @@ | ██ ██ █ █ ██ █ █ ██ ██ ██ ██ ██ ██ █ ██ ██ █ █ | | █████ █████ █ ███ █████ ██ ██ ██ ██ █████ ████ █████ █ ███ | | | -| General Bots Copyright (c) pragmatismo.cloud. All rights reserved. | +| General Bots Copyright (c) pragmatismo.cloud. All rights reserved. | | Licensed under the AGPL-3.0. | | | | According to our dual licensing model, this program can be used either | @@ -21,7 +21,7 @@ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | | GNU Affero General Public License for more details. | | | -| "General Bots" is a registered trademark of pragmatismo.cloud. | +| "General Bots" is a registered trademark of pragmatismo.cloud. | | The licensing of the program under the AGPLv3 does not imply a | | trademark license. Therefore any rights, title and interest in | | our trademarks remain entirely with us. | diff --git a/packages/azuredeployer.gbapp/services/AzureDeployerService.ts b/packages/azuredeployer.gbapp/services/AzureDeployerService.ts index 84e2c4a08..bc59da415 100644 --- a/packages/azuredeployer.gbapp/services/AzureDeployerService.ts +++ b/packages/azuredeployer.gbapp/services/AzureDeployerService.ts @@ -5,7 +5,7 @@ | ██ ██ █ █ ██ █ █ ██ ██ ██ ██ ██ ██ █ ██ ██ █ █ | | █████ █████ █ ███ █████ ██ ██ ██ ██ █████ ████ █████ █ ███ | | | -| General Bots Copyright (c) pragmatismo.cloud. All rights reserved. | +| General Bots Copyright (c) pragmatismo.cloud. All rights reserved. | | Licensed under the AGPL-3.0. | | | | According to our dual licensing model, this program can be used either | @@ -21,7 +21,7 @@ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | | GNU Affero General Public License for more details. | | | -| "General Bots" is a registered trademark of pragmatismo.cloud. | +| "General Bots" is a registered trademark of pragmatismo.cloud. | | The licensing of the program under the AGPLv3 does not imply a | | trademark license. Therefore any rights, title and interest in | | our trademarks remain entirely with us. | @@ -936,7 +936,7 @@ export class AzureDeployerService implements IGBInstallationDeployer { serverFarmId: farmId, siteConfig: { - nodeVersion: await GBAdminService.getNodeVersion(), + nodeVersion: GBAdminService.getNodeVersion(), detailedErrorLoggingEnabled: true, requestTracingEnabled: true } @@ -985,7 +985,8 @@ export class AzureDeployerService implements IGBInstallationDeployer { siteConfig: { appSettings: [ { name: 'WEBSITES_CONTAINER_START_TIME_LIMIT', value: `${WebSiteResponseTimeout}` }, - { name: 'WEBSITE_NODE_DEFAULT_VERSION', value: await GBAdminService.getNodeVersion() }, + { name: 'WEBSITE_NODE_DEFAULT_VERSION', value: GBAdminService.getNodeVersion() }, + { name: 'ADDITIONAL_DEPLOY_PATH', value: `` }, { name: 'ADMIN_PASS', value: `${instance.adminPass}` }, { name: 'BOT_ID', value: `${instance.botId}` }, { name: 'CLOUD_SUBSCRIPTIONID', value: `${instance.cloudSubscriptionId}` }, diff --git a/packages/basic.gblib/index.ts b/packages/basic.gblib/index.ts index 301d943ea..f2cbeafbf 100644 --- a/packages/basic.gblib/index.ts +++ b/packages/basic.gblib/index.ts @@ -1,3 +1,4 @@ + /*****************************************************************************\ | █████ █████ ██ █ █████ █████ ████ ██ ████ █████ █████ ███ ® | | ██ █ ███ █ █ ██ ██ ██ ██ ██ ██ █ ██ ██ █ █ | @@ -5,7 +6,7 @@ | ██ ██ █ █ ██ █ █ ██ ██ ██ ██ ██ ██ █ ██ ██ █ █ | | █████ █████ █ ███ █████ ██ ██ ██ ██ █████ ████ █████ █ ███ | | | -| General Bots Copyright (c) pragmatismo.cloud. All rights reserved. | +| General Bots Copyright (c) pragmatismo.cloud. All rights reserved. | | Licensed under the AGPL-3.0. | | | | According to our dual licensing model, this program can be used either | @@ -21,7 +22,7 @@ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | | GNU Affero General Public License for more details. | | | -| "General Bots" is a registered trademark of pragmatismo.cloud. | +| "General Bots" is a registered trademark of pragmatismo.cloud. | | The licensing of the program under the AGPLv3 does not imply a | | trademark license. Therefore any rights, title and interest in | | our trademarks remain entirely with us. | @@ -43,34 +44,21 @@ import { createKoaHttpMiddleware } from '@push-rpc/http'; import { GBServer } from '../../src/app.js'; import { SocketServer } from '@push-rpc/core'; import * as koaBody from 'koa-body'; -import ratelimit from 'koa-ratelimit'; -export function createKoaHttpServer(port: number, getRemoteId: (ctx: Koa.Context) => string, opts: {}): SocketServer { - const { onError, onConnection, middleware } = createKoaHttpMiddleware(getRemoteId); +export function createKoaHttpServer( + port: number, + getRemoteId: (ctx: Koa.Context) => string, + opts:{} +): SocketServer { + const { onError, onConnection, middleware } = + createKoaHttpMiddleware(getRemoteId); const app = new Koa(); - - // Apply the rate-limiting middleware - app.use( - ratelimit({ - driver: 'memory', // Use 'memory' for in-memory store - duration: 60000, // 1 minute window - errorMessage: 'Slow down your requests', - id: ctx => ctx.ip, // Identify client by IP address - headers: { - remaining: 'X-RateLimit-Remaining', - reset: 'X-RateLimit-Reset', - total: 'X-RateLimit-Limit' - }, - max: 100, // Limit each IP to 100 requests per window - disableHeader: false - }) - ); - app.use(cors({ origin: '*' })); - app.use(koaBody.koaBody({ jsonLimit: '1024mb', textLimit: '1024mb', formLimit: '1024mb', multipart: true })); + app.use(koaBody.koaBody({jsonLimit:'1024mb',textLimit:'1024mb', formLimit:'1024mb', + multipart: true })); app.use(middleware); - const server = app.listen(port); + const server = app.listen(port); const SERVER_TIMEOUT = 60 * 60 * 24 * 1000; // Equals to client RPC set. server.timeout = SERVER_TIMEOUT; @@ -112,7 +100,7 @@ export class GBBasicPackage implements IGBPackage { } public async loadBot(min: GBMinInstance): Promise { const botId = min.botId; - GBServer.globals.debuggers[botId] = {}; + GBServer.globals.debuggers[botId] = {}; GBServer.globals.debuggers[botId].state = 0; GBServer.globals.debuggers[botId].breaks = []; GBServer.globals.debuggers[botId].stateInfo = 'Stopped'; diff --git a/packages/basic.gblib/models/Model.ts b/packages/basic.gblib/models/Model.ts index 3c1269735..fcc5db0b1 100644 --- a/packages/basic.gblib/models/Model.ts +++ b/packages/basic.gblib/models/Model.ts @@ -5,7 +5,7 @@ | ██ ██ █ █ ██ █ █ ██ ██ ██ ██ ██ ██ █ ██ ██ █ █ | | █████ █████ █ ███ █████ ██ ██ ██ ██ █████ ████ █████ █ ███ | | | -| General Bots Copyright (c) pragmatismo.cloud. All rights reserved. | +| General Bots Copyright (c) pragmatismo.cloud. All rights reserved. | | Licensed under the AGPL-3.0. | | | | According to our dual licensing model, this program can be used either | @@ -21,7 +21,7 @@ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | | GNU Affero General Public License for more details. | | | -| "General Bots" is a registered trademark of pragmatismo.cloud. | +| "General Bots" is a registered trademark of pragmatismo.cloud. | | The licensing of the program under the AGPLv3 does not imply a | | trademark license. Therefore any rights, title and interest in | | our trademarks remain entirely with us. | diff --git a/packages/basic.gblib/services/ChartServices.ts b/packages/basic.gblib/services/ChartServices.ts index c3f734258..8a4106cb7 100644 --- a/packages/basic.gblib/services/ChartServices.ts +++ b/packages/basic.gblib/services/ChartServices.ts @@ -5,7 +5,7 @@ | ██ ██ █ █ ██ █ █ ██ ██ ██ ██ ██ ██ █ ██ ██ █ █ | | █████ █████ █ ███ █████ ██ ██ ██ ██ █████ ████ █████ █ ███ | | | -| General Bots Copyright (c) pragmatismo.cloud. All rights reserved. | +| General Bots Copyright (c) pragmatismo.cloud. All rights reserved. | | Licensed under the AGPL-3.0. | | | | According to our dual licensing model, this program can be used either | @@ -21,7 +21,7 @@ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | | GNU Affero General Public License for more details. | | | -| "General Bots" is a registered trademark of pragmatismo.cloud. | +| "General Bots" is a registered trademark of pragmatismo.cloud. | | The licensing of the program under the AGPLv3 does not imply a | | trademark license. Therefore any rights, title and interest in | | our trademarks remain entirely with us. | diff --git a/packages/basic.gblib/services/DebuggerService.ts b/packages/basic.gblib/services/DebuggerService.ts index e0925cd24..dfaf8c654 100644 --- a/packages/basic.gblib/services/DebuggerService.ts +++ b/packages/basic.gblib/services/DebuggerService.ts @@ -1,29 +1,31 @@ /*****************************************************************************\ -| █████ █████ ██ █ █████ █████ ████ ██ ████ █████ █████ ███ ® | -| ██ █ ███ █ █ ██ ██ ██ ██ ██ ██ █ ██ ██ █ █ | -| ██ ███ ████ █ ██ █ ████ █████ ██████ ██ ████ █ █ █ ██ | -| ██ ██ █ █ ██ █ █ ██ ██ ██ ██ ██ ██ █ ██ ██ █ █ | -| █████ █████ █ ███ █████ ██ ██ ██ ██ █████ ████ █████ █ ███ | +| ( )_ _ | +| _ _ _ __ _ _ __ ___ ___ _ _ | ,_)(_) ___ ___ _ | +| ( '_`\ ( '__)/'_` ) /'_ `\/' _ ` _ `\ /'_` )| | | |/',__)/' v `\ /'_`\ | +| | (_) )| | ( (_| |( (_) || ( ) ( ) |( (_| || |_ | |\__,\| (˅) |( (_) ) | +| | ,__/'(_) `\__,_)`\__ |(_) (_) (_)`\__,_)`\__)(_)(____/(_) (_)`\___/' | +| | | ( )_) | | +| (_) \___/' | | | -| General Bots Copyright (c) pragmatismo.cloud. All rights reserved. | +| General Bots Copyright (c) pragmatismo.cloud. All rights reserved. | | Licensed under the AGPL-3.0. | | | -| According to our dual licensing model, this program can be used either | -| under the terms of the GNU Affero General Public License, version 3, | +| According to our dual licensing model,this program can be used either | +| under the terms of the GNU Affero General Public License,version 3, | | or under a proprietary license. | | | | The texts of the GNU Affero General Public License with an additional | | permission and of our proprietary license can be found at and | | in the LICENSE file you have received along with this program. | | | -| This program is distributed in the hope that it will be useful, | -| but WITHOUT ANY WARRANTY, without even the implied warranty of | +| This program is distributed in the hope that it will be useful, | +| but WITHOUT ANY WARRANTY,without even the implied warranty of | | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | | GNU Affero General Public License for more details. | | | -| "General Bots" is a registered trademark of pragmatismo.cloud. | +| "General Bots" is a registered trademark of pragmatismo.cloud. | | The licensing of the program under the AGPLv3 does not imply a | -| trademark license. Therefore any rights, title and interest in | +| trademark license. Therefore any rights,title and interest in | | our trademarks remain entirely with us. | | | \*****************************************************************************/ @@ -32,12 +34,11 @@ import { GBLog, GBMinInstance } from 'botlib'; import { GBServer } from '../../../src/app.js'; -import fs from 'fs/promises'; +import Fs from 'fs'; import SwaggerClient from 'swagger-client'; import { spawn } from 'child_process'; -import { CodeServices } from '../../llm.gblib/services/CodeServices.js'; +import { CodeServices } from '../../gpt.gblib/services/CodeServices.js'; import { GBLogEx } from '../../core.gbapp/services/GBLogEx.js'; -import { GBUtil } from '../../../src/util.js'; /** * Web Automation services of conversation to be called by BASIC. @@ -45,7 +46,7 @@ import { GBUtil } from '../../../src/util.js'; export class DebuggerService { public async setBreakpoint({ botId, line }) { - GBLogEx.info(botId, `Enabled breakpoint for ${botId} on ${line}.`); + GBLogEx.info(botId, `BASIC: Enabled breakpoint for ${botId} on ${line}.`); GBServer.globals.debuggers[botId].breaks.push(Number.parseInt(line)); } @@ -145,18 +146,22 @@ export class DebuggerService { error = `Cannot DEBUG an already running process. ${botId}`; return { error: error }; } else if (GBServer.globals.debuggers[botId].state === 2) { - GBLogEx.info(botId, `Releasing execution ${botId} in DEBUG mode.`); + GBLogEx.info(botId, `BASIC: Releasing execution ${botId} in DEBUG mode.`); await this.resume({ botId }); return { status: 'OK' }; } else { - GBLogEx.info(botId, `Running ${botId} in DEBUG mode.`); + GBLogEx.info(botId, `BASIC: Running ${botId} in DEBUG mode.`); GBServer.globals.debuggers[botId].state = 1; GBServer.globals.debuggers[botId].stateInfo = 'Running (Debug)'; let min: GBMinInstance = GBServer.globals.minInstances.filter(p => p.instance.botId === botId)[0]; - const client = await GBUtil.getDirectLineClient(min); - + const client = await new SwaggerClient({ + spec: JSON.parse(Fs.readFileSync('directline-3.0.json', 'utf8')), + requestInterceptor: req => { + req.headers['Authorization'] = `Bearer ${min.instance.webchatKey}`; + } + }); GBServer.globals.debuggers[botId].client = client; const response = await client.apis.Conversations.Conversations_StartConversation(); const conversationId = response.obj.conversationId; diff --git a/packages/basic.gblib/services/DialogKeywords.ts b/packages/basic.gblib/services/DialogKeywords.ts index 50765405f..dd70cf368 100644 --- a/packages/basic.gblib/services/DialogKeywords.ts +++ b/packages/basic.gblib/services/DialogKeywords.ts @@ -1,122 +1,81 @@ /*****************************************************************************\ -| █████ █████ ██ █ █████ █████ ████ ██ ████ █████ █████ ███ ® | -| ██ █ ███ █ █ ██ ██ ██ ██ ██ ██ █ ██ ██ █ █ | -| ██ ███ ████ █ ██ █ ████ █████ ██████ ██ ████ █ █ █ ██ | -| ██ ██ █ █ ██ █ █ ██ ██ ██ ██ ██ ██ █ ██ ██ █ █ | -| █████ █████ █ ███ █████ ██ ██ ██ ██ █████ ████ █████ █ ███ | +| ( )_ _ | +| _ _ _ __ _ _ __ ___ ___ _ _ | ,_)(_) ___ ___ _ | +| ( '_`\ ( '__)/'_` ) /'_ `\/' _ ` _ `\ /'_` )| | | |/',__)/' v `\ /'_`\ | +| | (_) )| | ( (_| |( (_) || ( ) ( ) |( (_| || |_ | |\__,\| (˅) |( (_) ) | +| | ,__/'(_) `\__,_)`\__ |(_) (_) (_)`\__,_)`\__)(_)(____/(_) (_)`\___/' | +| | | ( )_) | | +| (_) \___/' | | | -| General Bots Copyright (c) pragmatismo.cloud. All rights reserved. | +| General Bots Copyright (c) pragmatismo.cloud. All rights reserved. | | Licensed under the AGPL-3.0. | | | -| According to our dual licensing model, this program can be used either | -| under the terms of the GNU Affero General Public License, version 3, | +| According to our dual licensing model,this program can be used either | +| under the terms of the GNU Affero General Public License,version 3, | | or under a proprietary license. | | | | The texts of the GNU Affero General Public License with an additional | | permission and of our proprietary license can be found at and | | in the LICENSE file you have received along with this program. | | | -| This program is distributed in the hope that it will be useful, | -| but WITHOUT ANY WARRANTY, without even the implied warranty of | +| This program is distributed in the hope that it will be useful, | +| but WITHOUT ANY WARRANTY,without even the implied warranty of | | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | | GNU Affero General Public License for more details. | | | -| "General Bots" is a registered trademark of pragmatismo.cloud. | +| "General Bots" is a registered trademark of pragmatismo.cloud. | | The licensing of the program under the AGPLv3 does not imply a | -| trademark license. Therefore any rights, title and interest in | +| trademark license. Therefore any rights,title and interest in | | our trademarks remain entirely with us. | | | \*****************************************************************************/ 'use strict'; -import sgMail from '@sendgrid/mail'; -import { ActivityTypes } from 'botbuilder'; import { GBLog, GBMinInstance } from 'botlib'; -import * as df from 'date-diff'; -import fs from 'fs/promises'; -import libphonenumber from 'google-libphonenumber'; -import { Jimp } from 'jimp'; -import jsQR from 'jsqr'; -import mammoth from 'mammoth'; -import mime from 'mime-types'; -import tesseract from 'node-tesseract-ocr'; -import path from 'path'; -import { CollectionUtil } from 'pragmatismo-io-framework'; -import puppeteer from 'puppeteer'; -import qrcode from 'qrcode'; -import urlJoin from 'url-join'; -import pkg from 'whatsapp-web.js'; -import { ChatServices } from '../../../packages/llm.gblib/services/ChatServices.js'; -import { GBServer } from '../../../src/app.js'; -import { GBUtil } from '../../../src/util.js'; -import { GBAdminService } from '../../admin.gbapp/services/GBAdminService.js'; import { GBConfigService } from '../../core.gbapp/services/GBConfigService.js'; -import { GBConversationalService } from '../../core.gbapp/services/GBConversationalService.js'; -import { GBDeployer } from '../../core.gbapp/services/GBDeployer.js'; -import { GBLogEx } from '../../core.gbapp/services/GBLogEx.js'; -import { SecService } from '../../security.gbapp/services/SecService.js'; -import { Messages } from '../strings.js'; import { ChartServices } from './ChartServices.js'; -import { GBVMService } from './GBVMService.js'; +import urlJoin from 'url-join'; +import { GBServer } from '../../../src/app.js'; +import { GBDeployer } from '../../core.gbapp/services/GBDeployer.js'; +import { SecService } from '../../security.gbapp/services/SecService.js'; import { SystemKeywords } from './SystemKeywords.js'; +import { GBAdminService } from '../../admin.gbapp/services/GBAdminService.js'; +import { Messages } from '../strings.js'; +import * as Fs from 'fs'; +import { CollectionUtil } from 'pragmatismo-io-framework'; +import { GBConversationalService } from '../../core.gbapp/services/GBConversationalService.js'; +import libphonenumber from 'google-libphonenumber'; +import * as df from 'date-diff'; +import tesseract from 'node-tesseract-ocr'; +import Path from 'path'; +import sgMail from '@sendgrid/mail'; +import mammoth from 'mammoth'; +import qrcode from 'qrcode'; import { WebAutomationServices } from './WebAutomationServices.js'; +import urljoin from 'url-join'; +import QrScanner from 'qr-scanner'; +import pkg from 'whatsapp-web.js'; +import { ActivityTypes } from 'botbuilder'; const { List, Buttons } = pkg; +import mime from 'mime-types'; +import { GBLogEx } from '../../core.gbapp/services/GBLogEx.js'; +import { GBUtil } from '../../../src/util.js'; +import SwaggerClient from 'swagger-client'; +import { GBVMService } from './GBVMService.js'; + /** * Default check interval for user replay */ const DEFAULT_HEAR_POLL_INTERVAL = 500; -const POOLING_COUNT = 120; +const API_RETRIES = 120; /** * Base services of conversation to be called by BASIC. */ export class DialogKeywords { - public async llmChart({ pid, data, prompt }) { - const { min, user } = await DialogKeywords.getProcessInfo(pid); - - // The prompt for the LLM, including the data. - - const llmPrompt = ` - You are given the following data: ${JSON.stringify(data)}. - - Based on this data, generate a configuration for a Billboard.js chart. The output should be valid JSON, following Billboard.js conventions. Ensure the JSON is returned without markdown formatting, explanations, or comments. - - The chart should be ${prompt}. Return only the one-line only JSON configuration, nothing else.`; - - // Send the prompt to the LLM and get the response - - const response = await ChatServices.invokeLLM(min, llmPrompt); - const args = JSON.parse(response.content); // Ensure the LLM generates valid JSON - - // Launch Puppeteer to render the chart - - const browser = await puppeteer.launch(); - const page = await browser.newPage(); - - // Load Billboard.js styles and scripts - - await page.addStyleTag({ url: 'https://cdn.jsdelivr.net/npm/billboard.js/dist/theme/datalab.min.css' }); - await page.addScriptTag({ url: 'https://cdn.jsdelivr.net/npm/billboard.js/dist/billboard.pkgd.min.js' }); - - // Pass the args to render the chart - - await page.evaluate(`bb.generate(${JSON.stringify(args)});`); - - // Get the chart container and take a screenshot - - const content = await page.$('.bb'); - const gbaiName = GBUtil.getGBAIPath(min.botId); - const localName = path.join('work', gbaiName, 'cache', `chart${GBAdminService.getRndReadableIdentifier()}.jpg`); - await content.screenshot({ path: localName, omitBackground: true }); - await browser.close(); - const url = urlJoin(GBServer.globals.publicAddress, min.botId, 'cache', path.basename(localName)); - GBLogEx.info(min, `Visualization: Chart generated at ${url}.`); - - return { localName, url }; - } /** * * Data = [10,20,30] @@ -182,14 +141,14 @@ export class DialogKeywords { }; } - const gbaiName = GBUtil.getGBAIPath(min.botId); - const localName = path.join('work', gbaiName, 'cache', `img${GBAdminService.getRndReadableIdentifier()}.jpg`); + const gbaiName = DialogKeywords.getGBAIPath(min.botId); + const localName = Path.join('work', gbaiName, 'cache', `img${GBAdminService.getRndReadableIdentifier()}.jpg`); await ChartServices.screenshot(definition, localName); - const url = urlJoin(GBServer.globals.publicAddress, min.botId, 'cache', path.basename(localName)); + const url = urlJoin(GBServer.globals.publicAddress, min.botId, 'cache', Path.basename(localName)); - GBLogEx.info(min, `Visualization: Chart generated at ${url}.`); + GBLogEx.info(min, `BASIC: Visualization: Chart generated at ${url}.`); return url; } @@ -200,7 +159,7 @@ export class DialogKeywords { */ public async getOCR({ pid, localFile }) { const { min, user } = await DialogKeywords.getProcessInfo(pid); - GBLogEx.info(min, `OCR processing on ${localFile}.`); + GBLogEx.info(min, `BASIC: OCR processing on ${localFile}.`); const config = { lang: 'eng', @@ -365,6 +324,7 @@ export class DialogKeywords { // https://weblog.west-wind.com/posts/2008/Mar/18/A-simple-formatDate-function-for-JavaScript public async format({ pid, value, format }) { + const { min, user } = await DialogKeywords.getProcessInfo(pid); const contentLocale = min.core.getParam( min.instance, @@ -377,32 +337,39 @@ export class DialogKeywords { } var date: any = new Date(value); //don't change original date - if (!format) format = 'MM/dd/yyyy'; + if (!format) + format = "MM/dd/yyyy"; var month = date.getMonth() + 1; var year = date.getFullYear(); - format = format.replace('MM', GBUtil.padL(month.toString(), 2, '0')); - format = format.toLowerCase(); + format = format.replace("MM", GBUtil.padL(month.toString(), 2, "0")); - if (format.indexOf('yyyy') > -1) format = format.replace('yyyy', year.toString()); - else if (format.indexOf('yy') > -1) format = format.replace('yy', year.toString().substr(2, 2)); + if (format.indexOf("yyyy") > -1) + format = format.replace("yyyy", year.toString()); + else if (format.indexOf("yy") > -1) + format = format.replace("yy", year.toString().substr(2, 2)); - format = format.replace('dd', GBUtil.padL(date.getDate().toString(), 2, '0')); + format = format.replace("dd", GBUtil.padL(date.getDate().toString(), 2, "0")); var hours = date.getHours(); - if (format.indexOf('t') > -1) { - if (hours > 11) format = format.replace('t', 'pm'); - else format = format.replace('t', 'am'); + if (format.indexOf("t") > -1) { + if (hours > 11) + format = format.replace("t", "pm") + else + format = format.replace("t", "am") } - if (format.indexOf('HH') > -1) format = format.replace('HH', GBUtil.padL(hours.toString(), 2, '0')); - if (format.indexOf('hh') > -1) { + if (format.indexOf("HH") > -1) + format = format.replace("HH", GBUtil.padL(hours.toString(), 2, "0")); + if (format.indexOf("hh") > -1) { if (hours > 12) hours - 12; if (hours == 0) hours = 12; - format = format.replace('hh', hours.toString().padL(2, '0')); + format = format.replace("hh", hours.toString().padL(2, "0")); } - if (format.indexOf('mm') > -1) format = format.replace('mm', GBUtil.padL(date.getMinutes().toString(), 2, '0')); - if (format.indexOf('ss') > -1) format = format.replace('ss', GBUtil.padL(date.getSeconds().toString(), 2, '0')); + if (format.indexOf("mm") > -1) + format = format.replace("mm", GBUtil.padL(date.getMinutes().toString(), 2, "0")); + if (format.indexOf("ss") > -1) + format = format.replace("ss", GBUtil.padL(date.getSeconds().toString(), 2, "0")); return format; } @@ -415,6 +382,7 @@ export class DialogKeywords { * https://stackoverflow.com/a/1214753/18511 */ public async dateAdd({ pid, date, mode, units }) { + const { min, user } = await DialogKeywords.getProcessInfo(pid); const contentLocale = min.core.getParam( min.instance, @@ -473,7 +441,7 @@ export class DialogKeywords { * @example TALK TOLIST (array,member) * */ - public async getToLst({ pid, array, member }) { + public async getToLst(pid, array, member) { const { min, user } = await DialogKeywords.getProcessInfo(pid); if (!array) { @@ -562,13 +530,9 @@ export class DialogKeywords { public async sendEmail({ pid, to, subject, body }) { const { min, user } = await DialogKeywords.getProcessInfo(pid); - if (!process.env.EMAIL_FROM) { - return; - } - if (!body) { - body = ''; - } + body = ""; + }; // tslint:disable-next-line:no-console @@ -582,6 +546,7 @@ export class DialogKeywords { body = result.value; } + if (emailToken) { return new Promise((resolve, reject) => { sgMail.setApiKey(emailToken); @@ -600,35 +565,39 @@ export class DialogKeywords { } }); }); - } else { + } + else { let { client } = await GBDeployer.internalGetDriveClient(min); const data = { - message: { - subject: subject, - body: { - contentType: 'Text', - content: body + "message": { + "subject": subject, + "body": { + "contentType": "Text", + "content": body }, - toRecipients: [ + "toRecipients": [ { - emailAddress: { - address: to + "emailAddress": { + "address": to } } ], - from: { - emailAddress: { - address: process.env.EMAIL_FROM + "from": { + "emailAddress": { + "address": process.env.EMAIL_FROM } } } }; - await client.api('/me/sendMail').post(data); - + await client.api('/me/sendMail') + .post(data); + GBLogEx.info(min, `E-mail ${to} (${subject}) sent.`); + } + } /** @@ -639,7 +608,7 @@ export class DialogKeywords { */ public async sendFileTo({ pid, mobile, filename, caption }) { const { min, user, proc } = await DialogKeywords.getProcessInfo(pid); - GBLogEx.info(min, `SEND FILE TO '${mobile}',filename '${filename}'.`); + GBLogEx.info(min, `BASIC: SEND FILE TO '${mobile}',filename '${filename}'.`); return await this.internalSendFile({ pid, mobile, channel: proc.channel, filename, caption }); } @@ -649,19 +618,22 @@ export class DialogKeywords { * @example SEND TEMPLATE TO "+199988887777","image.jpg" * */ - public async sendTemplateTo({ pid, mobile, filename }) { - const { min } = await DialogKeywords.getProcessInfo(pid); - GBLogEx.info(min, `SEND TEMPLATE TO '${mobile}',filename '${filename}'.`); + public async sendTemplateTo({ pid, mobile, filename}) { + const { min, user, proc } = await DialogKeywords.getProcessInfo(pid); + GBLogEx.info(min, `BASIC: SEND TEMPLATE TO '${mobile}',filename '${filename}'.`); const service = new GBConversationalService(min.core); let text; if (filename.endsWith('.docx')) { text = await min.kbService.getAnswerTextByMediaName(min.instance.instanceId, filename); - } else { + } + else{ text = filename; } + - return await service.fillAndBroadcastTemplate(min, filename, mobile, text); + return await service.fillAndBroadcastTemplate(min, mobile, text); + } /** @@ -672,7 +644,7 @@ export class DialogKeywords { */ public async sendFile({ pid, filename, caption }) { const { min, user, proc } = await DialogKeywords.getProcessInfo(pid); - GBLogEx.info(min, `SEND FILE (to: ${user.userSystemId},filename '${filename}'.`); + GBLogEx.info(min, `BASIC: SEND FILE (to: ${user.userSystemId},filename '${filename}'.`); const mobile = await this.userMobile({ pid }); return await this.internalSendFile({ pid, channel: proc.channel, mobile, filename, caption }); } @@ -710,17 +682,20 @@ export class DialogKeywords { // Checks access. - const filters = ['People.xlsx', `${role}=x`, `id=${user.userSystemId}`]; + const filters = ["People.xlsx", `${role}=x`, `id=${user.userSystemId}`]; const people = await sys.find({ pid, handle: null, args: filters }); if (!people) { throw new Error(`Invalid access. Check if People sheet has the role ${role} checked.`); - } else { + } + else { GBLogEx.info(min, `Allowed access for ${user.userSystemId} on ${role}`); return people; } + } + /** * Defines the id generation policy. * @@ -754,7 +729,7 @@ export class DialogKeywords { // throw new Error(`Not possible to define ${name} as it is a reserved system param name.`); // } let { min, user, params } = await DialogKeywords.getProcessInfo(pid); - GBLogEx.info(min, `${name} = ${value} (botId: ${min.botId})`); + GBLogEx.info(min, `BASIC: ${name} = ${value} (botId: ${min.botId})`); const sec = new SecService(); if (user) { await sec.setParam(user.userId, name, value); @@ -808,6 +783,7 @@ export class DialogKeywords { await DialogKeywords.setOption({ pid, name, value }); } + /** * Returns current if any continuation token for paginated HTTP requests. * @@ -828,7 +804,7 @@ export class DialogKeywords { */ public async getConfig({ pid, name }) { let { min, user, params } = await DialogKeywords.getProcessInfo(pid); - return min.core.getParam(min.instance, name, null, false); + return min.core.getParam(min.instance, name, null); } /** @@ -856,7 +832,7 @@ export class DialogKeywords { * Defines page mode for paged GET calls. * * @example SET PAGE MODE "auto" - * data = GET url + * data = GET url * FOR EACH item in data * ... * END FOR @@ -963,6 +939,7 @@ export class DialogKeywords { * */ public async hear({ pid, kind, args }) { + let { min, user, params } = await DialogKeywords.getProcessInfo(pid); // Handles first arg as an array of args. @@ -1015,9 +992,9 @@ export class DialogKeywords { await this.talk({ pid: pid, text: button }); } - GBLogEx.info(min, `HEAR with [${args.toString()}] (Asking for input).`); + GBLogEx.info(min, `BASIC: HEAR with [${args.toString()}] (Asking for input).`); } else { - GBLogEx.info(min, 'HEAR (Asking for input).'); + GBLogEx.info(min, 'BASIC: HEAR (Asking for input).'); } // Wait for the user to answer. @@ -1038,7 +1015,7 @@ export class DialogKeywords { let { baseUrl, client } = await GBDeployer.internalGetDriveClient(min); const botId = min.instance.botId; - const packagePath = GBUtil.getGBAIPath(botId); + const path = DialogKeywords.getGBAIPath(botId); let url = `${baseUrl}/drive/root:/${path}:/children`; GBLogEx.info(min, `Loading HEAR AS .xlsx options from Sheet: ${url}`); @@ -1141,6 +1118,7 @@ export class DialogKeywords { result = answer; } else if (kind === 'date') { + const parseDate = str => { function pad(x) { return (('' + x).length == 2 ? '' : '0') + x; @@ -1209,27 +1187,14 @@ export class DialogKeywords { } result = phoneNumber; - } else if (kind === 'qrcode') { + } else if (kind === 'qr-scanner') { //https://github.com/GeneralBots/BotServer/issues/171 - GBLogEx.info(min, `BASIC (${min.botId}): QRCode for ${answer.filename}.`); + GBLogEx.info(min, `BASIC (${min.botId}): Upload done for ${answer.filename}.`); const handle = WebAutomationServices.cyrb53({ pid, str: min.botId + answer.filename }); GBServer.globals.files[handle] = answer; - - // Load the image with Jimp - const image = await Jimp.read(answer.data); - - // Get the image data - const imageData = { - data: new Uint8ClampedArray(image.bitmap.data), - width: image.bitmap.width, - height: image.bitmap.height, - }; - - // Use jsQR to decode the QR code - const decodedQR = jsQR(imageData.data, imageData.width, imageData.height); - - result = decodedQR.data; - + QrScanner.scanImage(GBServer.globals.files[handle]) + .then(result => console.log(result)) + .catch(error => console.log(error || 'no QR code found.')); } else if (kind === 'zipcode') { const extractEntity = (text: string) => { text = text.replace(/\-/gi, ''); @@ -1301,6 +1266,20 @@ export class DialogKeywords { GBLog.error(`BASIC RUNTIME ERR HEAR ${error.message ? error.message : error}\n Stack:${error.stack}`); } } + static getGBAIPath(botId, packageType = null, packageName = null) { + let gbai = `${botId}.gbai`; + if (!packageType && !packageName) { + return GBConfigService.get('DEV_GBAI') ? GBConfigService.get('DEV_GBAI') : gbai; + } + + if (GBConfigService.get('DEV_GBAI')) { + gbai = GBConfigService.get('DEV_GBAI'); + botId = gbai.replace(/\.[^/.]+$/, ''); + return urljoin(GBConfigService.get('DEV_GBAI'), packageName ? packageName : `${botId}.${packageType}`); + } else { + return urljoin(gbai, packageName ? packageName : `${botId}.${packageType}`); + } + } /** * Prepares the next dialog to be shown to the specified user. @@ -1315,7 +1294,15 @@ export class DialogKeywords { let sec = new SecService(); let user = await sec.getUserFromSystemId(fromOrDialogName); if (!user) { - user = await sec.ensureUser(min, fromOrDialogName, fromOrDialogName, null, 'whatsapp', 'from', null); + user = await sec.ensureUser( + min, + fromOrDialogName, + fromOrDialogName, + null, + 'whatsapp', + 'from', + null + ); } await sec.updateUserHearOnDialog(user.userId, dialogName); } @@ -1327,16 +1314,17 @@ export class DialogKeywords { public async messageBot({ pid, text }) { const { min, user } = await DialogKeywords.getProcessInfo(pid); + GBLogEx.info(min, `MESSAGE BOT: ${text}.`); + const { conversation, client } = min['apiConversations'][pid]; - GBLogEx.info(min, `API messaged bot (Conversation Id: ${conversation.conversationId}): ${text} .`); await client.apis.Conversations.Conversations_PostActivity({ conversationId: conversation.conversationId, activity: { + pid: pid, textFormat: 'plain', text: text, type: 'message', - pid: pid, from: { id: user.userSystemId, name: user.userName @@ -1344,12 +1332,12 @@ export class DialogKeywords { } }); - min['conversationWelcomed'][conversation.conversationId] = true; let messages = []; - GBLogEx.info(min, `Start API message pooling: ${conversation.conversationId})...`); + GBLogEx.info(min, `MessageBot: Starting message polling ${conversation.conversationId}).`); - let count = POOLING_COUNT; + let count = API_RETRIES; while (count--) { + await GBUtil.sleep(DEFAULT_HEAR_POLL_INTERVAL); try { @@ -1361,50 +1349,70 @@ export class DialogKeywords { let activities = response.obj.activities; if (activities && activities.length) { - activities = activities.filter(m => m.from.id !== user.userSystemId && m.type === 'message'); + activities = activities.filter(m => m.from.id === min.botId && m.type === 'message'); if (activities.length) { activities.forEach(activity => { messages.push(activity.text); GBLogEx.info(min, `MESSAGE BOT answer from bot: ${activity.text}`); }); - return messages.join('\n'); } + return messages.join('\n'); } - } catch (error) { - count = 0; - GBLog.error(`API Message Pooling error: ${GBUtil.toYAML(error)}`); + } catch (err) { + GBLog.error( + `Error calling printMessages in messageBot API ${err.data === undefined ? err : err.data} ${err.errObj ? err.errObj.message : '' + }` + ); + return err; } - } - return null; + }; } + public async start({ botId, botApiKey, userSystemId, text }) { + let min: GBMinInstance = GBServer.globals.minInstances.filter(p => p.instance.botId === botId)[0]; let sec = new SecService(); let user = await sec.getUserFromSystemId(userSystemId); - if (!user) { - user = await sec.ensureUser(min, userSystemId, userSystemId, null, 'api', 'API User', null); + user = await sec.ensureUser( + min, + userSystemId, + userSystemId, + null, + 'api', + 'API User', + null + ); } + const pid = GBVMService.createProcessInfo(user, min, 'api', null); + const conversation = min['apiConversations'][pid]; - const client = await GBUtil.getDirectLineClient(min); + + const client = await new SwaggerClient({ + spec: JSON.parse(Fs.readFileSync('directline-3.0.json', 'utf8')), + requestInterceptor: req => { + req.headers['Authorization'] = `Bearer ${min.instance.webchatKey}`; + } + }); conversation.client = client; - const response = await client.apis.Conversations.Conversations_StartConversation( - - ); + const response = await client.apis.Conversations.Conversations_StartConversation(); conversation.conversationId = response.obj.conversationId; return await GBVMService.callVM('start', min, null, pid); + } + + public static async getProcessInfo(pid: number) { const proc = GBServer.globals.processes[pid]; const step = proc.step; const min = GBServer.globals.minInstances.filter(p => p.instance.instanceId == proc.instanceId)[0]; const sec = new SecService(); - const user = GBServer.globals.users[proc.userId]; + const user = await sec.getUserFromId(min.instance.instanceId, proc.userId); const params = user ? JSON.parse(user.params) : {}; return { min, @@ -1420,20 +1428,22 @@ export class DialogKeywords { */ public async talk({ pid, text }) { const { min, user, step } = await DialogKeywords.getProcessInfo(pid); - GBLogEx.info(min, `TALK '${text} step:${step}'.`); + GBLogEx.info(min, `BASIC: TALK '${text} step:${step}'.`); if (user) { - + // TODO: const translate = user ? user.basicOptions.translatorOn : false; text = await min.conversationalService.translate( min, text, - user.locale ? user.locale : min.core.getParam(min.instance, 'Locale', GBConfigService.get('LOCALE')) + user.locale ? user.locale : min.core.getParam(min.instance, 'Locale', + GBConfigService.get('LOCALE')) ); GBLog.verbose(`Translated text(playMarkdown): ${text}.`); - if (!isNaN(user.userSystemId)) { - await min.conversationalService.sendText(min, step, text, user); - } else { + if (step) { + await min.conversationalService.sendText(min, step, text); + } + else { await min.conversationalService['sendOnConversation'](min, user, text); } } @@ -1455,121 +1465,84 @@ export class DialogKeywords { const element = filename._page ? filename._page : filename.screenshot ? filename : null; let url; let nameOnly; - let localName; - const gbaiName = GBUtil.getGBAIPath(min.botId); - + const gbaiName = DialogKeywords.getGBAIPath(min.botId); // Web automation. if (element) { - localName = path.join('work', gbaiName, 'cache', `img${GBAdminService.getRndReadableIdentifier()}.jpg`); - nameOnly = path.basename(localName); + const localName = Path.join('work', gbaiName, 'cache', `img${GBAdminService.getRndReadableIdentifier()}.jpg`); + nameOnly = Path.basename(localName); await element.screenshot({ path: localName, fullPage: true }); - url = urlJoin(GBServer.globals.publicAddress, min.botId, 'cache', path.basename(localName)); + url = urlJoin(GBServer.globals.publicAddress, min.botId, 'cache', Path.basename(localName)); - GBLogEx.info(min, `WebAutomation: Sending ${url} to ${mobile} (${channel}).`); + GBLogEx.info(min, `BASIC: WebAutomation: Sending ${url} to ${mobile} (${channel}).`); } // GBFILE object. + else if (filename.url) { url = filename.url; - nameOnly = path.basename(filename.localName); + nameOnly = Path.basename(filename.localName); - GBLogEx.info(min, `Sending the GBFILE ${url} to ${mobile} (${channel}).`); + GBLogEx.info(min, `BASIC: Sending the GBFILE ${url} to ${mobile} (${channel}).`); } // Handles Markdown. + else if (filename.indexOf('.md') !== -1) { - GBLogEx.info(min, `Sending the contents of ${filename} markdown to mobile ${mobile}.`); + + GBLogEx.info(min, `BASIC: Sending the contents of ${filename} markdown to mobile ${mobile}.`); const md = await min.kbService.getAnswerTextByMediaName(min.instance.instanceId, filename); if (!md) { - GBLogEx.info(min, `Markdown file ${filename} not found on database for ${min.instance.botId}.`); + GBLogEx.info(min, `BASIC: Markdown file ${filename} not found on database for ${min.instance.botId}.`); } await min.conversationalService['playMarkdown'](min, md, DialogKeywords.getChannel(), null, mobile); return; + } // .gbdrive direct sending. + else { - if (GBConfigService.get('STORAGE_NAME')) { + const ext = Path.extname(filename); + const gbaiName = DialogKeywords.getGBAIPath(min.botId); - const ext = path.extname(filename); - const gbaiName = GBUtil.getGBAIPath(min.botId); + let { baseUrl, client } = await GBDeployer.internalGetDriveClient(min); + const fileUrl = urlJoin('/', gbaiName, `${min.botId}.gbdrive`, filename); + GBLogEx.info(min, `BASIC: Direct send from .gbdrive: ${fileUrl} to ${mobile}.`); - let { baseUrl, client } = await GBDeployer.internalGetDriveClient(min); - const fileUrl = urlJoin('/', gbaiName, `${min.botId}.gbdrive`, filename); - GBLogEx.info(min, `Direct send from .gbdrive: ${fileUrl} to ${mobile}.`); + const sys = new SystemKeywords(); - const sys = new SystemKeywords(); + const pathOnly = fileUrl.substring(0, fileUrl.lastIndexOf('/')); + const fileOnly = fileUrl.substring(fileUrl.lastIndexOf('/') + 1); - const pathOnly = fileUrl.substring(0, fileUrl.lastIndexOf('/')); - const fileOnly = fileUrl.substring(fileUrl.lastIndexOf('/') + 1); + let template = await sys.internalGetDocument(client, baseUrl, pathOnly, fileOnly); - let template = await sys.internalGetDocument(client, baseUrl, pathOnly, fileOnly); + const driveUrl = template['@microsoft.graph.downloadUrl']; + const res = await fetch(driveUrl); + let buf: any = Buffer.from(await res.arrayBuffer()); + let localName1 = Path.join('work', gbaiName, 'cache', `${fileOnly.replace(/\s/gi, '')}-${GBAdminService.getNumberIdentifier()}.${ext}`); + Fs.writeFileSync(localName1, buf, { encoding: null }); - const driveUrl = template['@microsoft.graph.downloadUrl']; - const res = await fetch(driveUrl); - let buf: any = Buffer.from(await res.arrayBuffer()); - localName = path.join( - 'work', - gbaiName, - 'cache', - `${fileOnly.replace(/\s/gi, '')}-${GBAdminService.getNumberIdentifier()}.${ext}` - ); - await fs.writeFile(localName, buf, { encoding: null }); - - url = urlJoin(GBServer.globals.publicAddress, min.botId, 'cache', path.basename(localName)); - } - else { - const gbdriveName = GBUtil.getGBAIPath(min.botId, 'gbdrive'); - localName = path.join(GBConfigService.get('STORAGE_LIBRARY'), gbdriveName, filename); - } - - if (localName.endsWith('.pdf')) { - - const pngs = await GBUtil.pdfPageAsImage(min, localName, undefined); - - await CollectionUtil.asyncForEach(pngs, async png => { - await GBUtil.sleepRandom(); - // Prepare a cache to be referenced by Bot Framework. - - url = urlJoin(GBServer.globals.publicAddress, min.botId, 'cache', path.basename(png.localName)); - - const contentType = mime.lookup(url); - const reply = { type: ActivityTypes.Message, text: caption }; - reply['attachments'] = []; - reply['attachments'].push({ - name: nameOnly, - contentType: contentType, - contentUrl: url - }); - - if (!isNaN(mobile)) { - await min.whatsAppDirectLine.sendFileToDevice(mobile, url, filename, caption, undefined, true); - } else { - await min.conversationalService['sendOnConversation'](min, user, reply); - } - }); - - return; - } + url = urlJoin(GBServer.globals.publicAddress, min.botId, 'cache', Path.basename(localName1)); } if (!url) { - const ext = path.extname(filename.localName); + + const ext = Path.extname(filename.localName); // Prepare a cache to be referenced by Bot Framework. - const buf = await fs.readFile(filename); - const gbaiName = GBUtil.getGBAIPath(min.botId); - const localName = path.join('work', gbaiName, 'cache', `tmp${GBAdminService.getRndReadableIdentifier()}.${ext}`); - await fs.writeFile(localName, buf, { encoding: null }); - url = urlJoin(GBServer.globals.publicAddress, min.botId, 'cache', path.basename(localName)); + const buf = Fs.readFileSync(filename); + const gbaiName = DialogKeywords.getGBAIPath(min.botId); + const localName = Path.join('work', gbaiName, 'cache', `tmp${GBAdminService.getRndReadableIdentifier()}.${ext}`); + Fs.writeFileSync(localName, buf, { encoding: null }); + url = urlJoin(GBServer.globals.publicAddress, min.botId, 'cache', Path.basename(localName)); } const contentType = mime.lookup(url); @@ -1599,10 +1572,10 @@ export class DialogKeywords { const data = img.replace(/^data:image\/\w+;base64,/, ''); const buf = Buffer.from(data, 'base64'); - const gbaiName = GBUtil.getGBAIPath(min.botId); - const localName = path.join('work', gbaiName, 'cache', `qr${GBAdminService.getRndReadableIdentifier()}.png`); - await fs.writeFile(localName, buf, { encoding: null }); - const url = urlJoin(GBServer.globals.publicAddress, min.botId, 'cache', path.basename(localName)); + const gbaiName = DialogKeywords.getGBAIPath(min.botId); + const localName = Path.join('work', gbaiName, 'cache', `qr${GBAdminService.getRndReadableIdentifier()}.png`); + Fs.writeFileSync(localName, buf, { encoding: null }); + const url = urlJoin(GBServer.globals.publicAddress, min.botId, 'cache', Path.basename(localName)); return { data: data, localName: localName, url: url }; } diff --git a/packages/basic.gblib/services/GBVMService.test.ts b/packages/basic.gblib/services/GBVMService.test.ts new file mode 100644 index 000000000..7951735d4 --- /dev/null +++ b/packages/basic.gblib/services/GBVMService.test.ts @@ -0,0 +1,19 @@ +import { GBVMService } from './GBVMService'; +import { expect, test } from 'vitest' + +test('Default', () => { + + + const args = GBVMService.getSetScheduleKeywordArgs(` + + SET SCHEDULE "0 0 */1 * * *" + SET SCHEDULE "0 0 */3 * * *" + SET SCHEDULE "0 0 */2 * * *" + SET SCHEDULE "0 0 */2 * * *" + SET SCHEDULE "0 0 */3 * * *" + + `); + + expect(args.length).toBe(5); + +}); diff --git a/packages/basic.gblib/services/GBVMService.ts b/packages/basic.gblib/services/GBVMService.ts index c0d2f2ef3..c26475a4e 100644 --- a/packages/basic.gblib/services/GBVMService.ts +++ b/packages/basic.gblib/services/GBVMService.ts @@ -5,7 +5,7 @@ | ██ ██ █ █ ██ █ █ ██ ██ ██ ██ ██ ██ █ ██ ██ █ █ | | █████ █████ █ ███ █████ ██ ██ ██ ██ █████ ████ █████ █ ███ | | | -| General Bots Copyright (c) pragmatismo.cloud. All rights reserved. | +| General Bots Copyright (c) pragmatismo.cloud. All rights reserved. | | Licensed under the AGPL-3.0. | | | | According to our dual licensing model, this program can be used either | @@ -21,7 +21,7 @@ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | | GNU Affero General Public License for more details. | | | -| "General Bots" is a registered trademark of pragmatismo.cloud. | +| "General Bots" is a registered trademark of pragmatismo.cloud. | | The licensing of the program under the AGPLv3 does not imply a | | trademark license. Therefore any rights, title and interest in | | our trademarks remain entirely with us. | @@ -31,8 +31,8 @@ 'use strict'; import { GBMinInstance, GBService, IGBCoreService, GBLog } from 'botlib'; -import fs from 'fs/promises'; -import * as ji from 'just-indent'; +import * as Fs from 'fs'; +import * as ji from 'just-indent' import { GBServer } from '../../../src/app.js'; import { GBDeployer } from '../../core.gbapp/services/GBDeployer.js'; import { CollectionUtil } from 'pragmatismo-io-framework'; @@ -41,11 +41,10 @@ import { GBConfigService } from '../../core.gbapp/services/GBConfigService.js'; import urlJoin from 'url-join'; import { NodeVM, VMScript } from 'vm2'; import { createVm2Pool } from './vm2-process/index.js'; -import { watch } from 'fs'; import textract from 'textract'; import walkPromise from 'walk-promise'; import child_process from 'child_process'; -import path from 'path'; +import Path from 'path'; import { GBAdminService } from '../../admin.gbapp/services/GBAdminService.js'; import { DialogKeywords } from './DialogKeywords.js'; import { KeywordsExpressions } from './KeywordsExpressions.js'; @@ -53,9 +52,8 @@ import { GBLogEx } from '../../core.gbapp/services/GBLogEx.js'; import { GuaribasUser } from '../../security.gbapp/models/index.js'; import { SystemKeywords } from './SystemKeywords.js'; import { Sequelize, QueryTypes } from '@sequelize/core'; -import { z } from 'zod'; -import { zodToJsonSchema } from 'zod-to-json-schema'; -import { GBUtil } from '../../../src/util.js'; +import { z } from "zod"; +import { zodToJsonSchema } from "zod-to-json-schema"; /** * @fileoverview Decision was to priorize security(isolation) and debugging, @@ -66,11 +64,11 @@ import { GBUtil } from '../../../src/util.js'; * Basic services for BASIC manipulation. */ export class GBVMService extends GBService { + private static DEBUGGER_PORT = 9222; public static API_PORT = 1111; public async loadDialogPackage(folder: string, min: GBMinInstance, core: IGBCoreService, deployer: GBDeployer) { - const ignore = path.join('work', GBUtil.getGBAIPath(min.botId, 'gbdialog'), 'node_modules'); - const files = await walkPromise(folder, { ignore: [ignore] }); + const files = await walkPromise(folder); await CollectionUtil.asyncForEach(files, async file => { if (!file) { @@ -79,7 +77,9 @@ export class GBVMService extends GBService { let filename: string = file.name; - filename = await this.loadDialog(filename, folder, min); + if (filename.endsWith('.docx')) { + filename = await this.loadDialog(filename, folder, min); + } }); } @@ -91,11 +91,14 @@ export class GBVMService extends GBService { //check every key for being same return Object.keys(obj1).every(function (key) { + //if object - if (typeof obj1[key] == 'object' && typeof obj2[key] == 'object') { + if ((typeof obj1[key] == "object") && (typeof obj2[key] == "object")) { + //recursively check return GBVMService.compare(obj1[key], obj2[key]); } else { + //do the normal compare return obj1[key] === obj2[key]; } @@ -103,27 +106,14 @@ export class GBVMService extends GBService { } public async loadDialog(filename: string, folder: string, min: GBMinInstance) { - const isWord = filename.endsWith('.docx'); - if ( - !( - isWord || - filename.endsWith('.vbs') || - filename.endsWith('.vb') || - filename.endsWith('.vba') || - filename.endsWith('.bas') || - filename.endsWith('.basic') - ) - ) { - return; - } - const wordFile = filename; - const vbsFile = isWord ? filename.substr(0, filename.indexOf('docx')) + 'vbs' : filename; + const vbsFile = filename.substr(0, filename.indexOf('docx')) + 'vbs'; const fullVbsFile = urlJoin(folder, vbsFile); - const docxStat = await fs.stat(urlJoin(folder, wordFile)); + const docxStat = Fs.statSync(urlJoin(folder, wordFile)); const interval = 3000; // If compiled is older 30 seconds, then recompile. let writeVBS = true; + // TODO: #412. // const subscription = { // changeType: 'created,updated', @@ -135,12 +125,13 @@ export class GBVMService extends GBService { // }; // let { baseUrl, client } = await GBDeployer.internalGetDriveClient(min); - + // await client.api('/subscriptions') // .post(subscription); - if (await GBUtil.exists(fullVbsFile)) { - const vbsStat = await fs.stat(fullVbsFile); + + if (Fs.existsSync(fullVbsFile)) { + const vbsStat = Fs.statSync(fullVbsFile); if (docxStat['mtimeMs'] < vbsStat['mtimeMs'] + interval) { writeVBS = false; } @@ -149,53 +140,35 @@ export class GBVMService extends GBService { let mainName = GBVMService.getMethodNameFromVBSFilename(filename); min.scriptMap[filename] = mainName; - if (writeVBS && GBConfigService.get('STORAGE_NAME')) { + if (writeVBS) { let text = await this.getTextFromWord(folder, wordFile); + // Pre process SET SCHEDULE calls. + + const schedules = GBVMService.getSetScheduleKeywordArgs(text); + + const s = new ScheduleServices(); + await s.deleteScheduleIfAny(min, mainName); + + let i = 1; + await CollectionUtil.asyncForEach(schedules, async (syntax) => { + + if (s) { + await s.createOrUpdateSchedule(min, syntax, `${mainName};${i++}`); + } + }); + + text = text.replace(/^\s*SET SCHEDULE (.*)/gim, ''); + // Write VBS file without pragma keywords. - await fs.writeFile(urlJoin(folder, vbsFile), text); + Fs.writeFileSync(urlJoin(folder, vbsFile), text); } // Process node_modules install. - await this.processNodeModules(folder, min); - - // Hot swap for .vbs files. - - const fullFilename = urlJoin(folder, filename); - if (process.env.DEV_HOTSWAP) { - watch(fullFilename, async () => { - await this.translateBASIC(mainName, fullFilename, min); - const parsedCode: string = await fs.readFile(jsfile, 'utf8'); - min.sandBoxMap[mainName.toLowerCase().trim()] = parsedCode; - }); - } - - const compiledAt = await fs.stat(fullFilename); - const jsfile = urlJoin(folder, `${filename}.js`); - - if (await GBUtil.exists(jsfile)) { - const jsStat = await fs.stat(jsfile); - const interval = 1000; // If compiled is older 1 seconds, then recompile. - if (compiledAt.isFile() && compiledAt['mtimeMs'] > jsStat['mtimeMs'] + interval) { - await this.translateBASIC(mainName, fullFilename, min); - } - } else { - await this.translateBASIC(mainName, fullFilename, min); - } - - // Syncronizes Database Objects with the ones returned from "Word". - - await this.syncStorageFromTABLE(folder, filename, min, mainName); - - const parsedCode: string = await fs.readFile(jsfile, 'utf8'); - min.sandBoxMap[mainName.toLowerCase().trim()] = parsedCode; - return filename; - } - private async processNodeModules(folder: string, min: GBMinInstance) { const node_modules = urlJoin(process.env.PWD, folder, 'node_modules'); - if (!(await GBUtil.exists(node_modules))) { + if (!Fs.existsSync(node_modules)) { const packageJson = ` { "name": "${min.botId}.gbdialog", @@ -204,7 +177,6 @@ export class GBVMService extends GBService { "author": "${min.botId} owner.", "license": "ISC", "dependencies": { - "yaml": "2.4.2", "encoding": "0.1.13", "isomorphic-fetch": "3.0.0", "punycode": "2.1.1", @@ -214,88 +186,49 @@ export class GBVMService extends GBService { "async-retry": "1.3.3" } }`; - await fs.writeFile(urlJoin(folder, 'package.json'), packageJson); + Fs.writeFileSync(urlJoin(folder, 'package.json'), packageJson); - GBLogEx.info(min, `Installing node_modules...`); + GBLogEx.info(min, `BASIC: Installing .gbdialog node_modules for ${min.botId}...`); const npmPath = urlJoin(process.env.PWD, 'node_modules', '.bin', 'npm'); - child_process.exec(`${npmPath} install`, { cwd: folder }); - } - } - - public static async loadConnections(min) { - // Loads storage custom connections. - const packagePath = GBUtil.getGBAIPath(min.botId, null); - const filePath = path.join('work', packagePath, 'connections.json'); - let connections = []; - if (await GBUtil.exists(filePath)) { - connections = JSON.parse(await fs.readFile(filePath, 'utf8')); + child_process.execSync(`${npmPath} install`, { cwd: folder }); } - connections.forEach(async con => { - const connectionName = con['name']; + // Hot swap for .vbs files. - const dialect = con['storageDriver']; - const host = con['storageServer']; - const port = con['storagePort']; - const storageName = con['storageName']; - const username = con['storageUsername']; - const password = con['storagePassword']; + const fullFilename = urlJoin(folder, filename); + if (process.env.DEV_HOTSWAP) { + Fs.watchFile(fullFilename, async () => { + await this.translateBASIC(mainName, fullFilename, min); + const parsedCode: string = Fs.readFileSync(jsfile, 'utf8'); + min.sandBoxMap[mainName.toLowerCase().trim()] = parsedCode; + }); + } - const logging: boolean | Function = - GBConfigService.get('STORAGE_LOGGING') === 'true' - ? (str: string): void => { - GBLogEx.info(min, str); - } - : false; + const compiledAt = Fs.statSync(fullFilename); + const jsfile = urlJoin(folder, `${filename}.js`); - const encrypt: boolean = GBConfigService.get('STORAGE_ENCRYPT') === 'true'; - const acquire = parseInt(GBConfigService.get('STORAGE_ACQUIRE_TIMEOUT')); - const sequelizeOptions = { - define: { - charset: 'utf8', - collate: 'utf8_general_ci', - freezeTableName: true, - timestamps: false - }, - host: host, - port: port, - logging: logging as boolean, - dialect: dialect, - quoteIdentifiers: false, // set case-insensitive - dialectOptions: { - options: { - trustServerCertificate: true, - encrypt: encrypt, - requestTimeout: 120 * 1000 - } - }, - pool: { - max: 5, - min: 0, - idle: 10000, - evict: 10000, - acquire: acquire - } - }; - - if (!min[connectionName]) { - GBLogEx.info(min, `Loading data connection ${connectionName}...`); - min[connectionName] = new Sequelize(storageName, username, password, sequelizeOptions); - min[connectionName]['gbconnection'] = con; + if (Fs.existsSync(jsfile)) { + const jsStat = Fs.statSync(jsfile); + const interval = 30000; // If compiled is older 30 seconds, then recompile. + if (compiledAt.isFile() && compiledAt['mtimeMs'] > jsStat['mtimeMs'] + interval) { + await this.translateBASIC(mainName, fullFilename, min); } - }); - } + } else { + await this.translateBASIC(mainName, fullFilename, min); + } + + // Syncronizes Database Objects with the ones returned from "Word". - private async syncStorageFromTABLE(folder: string, filename: string, min: GBMinInstance, mainName: string) { const tablesFile = urlJoin(folder, `${filename}.tables.json`); let sync = false; - if (await GBUtil.exists(tablesFile)) { + if (Fs.existsSync(tablesFile)) { const minBoot = GBServer.globals.minBoot; - const tableDef = JSON.parse(await fs.readFile(tablesFile, 'utf8')) as any; + const tableDef = JSON.parse(Fs.readFileSync(tablesFile, 'utf8')) as any; const getTypeBasedOnCondition = (t, size) => { + if (1) { switch (t) { case 'string': @@ -319,6 +252,7 @@ export class GBVMService extends GBService { default: return { type: 'TABLE', name: t }; } + } else { switch (t) { case 'string': @@ -342,14 +276,28 @@ export class GBVMService extends GBService { default: return { key: 'TABLE', name: t }; } + } }; const associations = []; - const shouldSync = min.core.getParam(min.instance, 'Synchronize Database', false); + // Loads storage custom connections. + + const path = DialogKeywords.getGBAIPath(min.botId, null); + const filePath = Path.join('work', path, 'connections.json'); + let connections = null; + if (Fs.existsSync(filePath)) { + connections = JSON.parse(Fs.readFileSync(filePath, 'utf8')); + } + const shouldSync = min.core.getParam( + min.instance, + 'Synchronize Database', + false + ); tableDef.forEach(async t => { + const tableName = t.name.trim(); // Determines autorelationship. @@ -357,121 +305,166 @@ export class GBVMService extends GBService { Object.keys(t.fields).forEach(key => { let obj = t.fields[key]; obj.type = getTypeBasedOnCondition(obj.type, obj.size); - if (obj.type.key === 'TABLE') { - obj.type.key = 'BIGINT'; + if (obj.type.key === "TABLE") { + obj.type.key = "BIGINT" associations.push({ from: tableName, to: obj.type.name }); } }); - // Custom connection for TABLE. + // Cutom connection for TABLE. const connectionName = t.connection; - let con = min[connectionName]; + let con; + + if (connectionName && connections) { + con = connections.filter(p => p.name === connectionName)[0]; + + const dialect = con['storageDriver']; + const host = con['storageServer']; + const port = con['storagePort']; + const storageName = con['storageName']; + const username = con['storageUsername']; + const password = con['storagePassword']; + + const logging: boolean | Function = + GBConfigService.get('STORAGE_LOGGING') === 'true' + ? (str: string): void => { + GBLogEx.info(min, str); + } + : false; + + const encrypt: boolean = GBConfigService.get('STORAGE_ENCRYPT') === 'true'; + const acquire = parseInt(GBConfigService.get('STORAGE_ACQUIRE_TIMEOUT')); + const sequelizeOptions = { + define: { + charset: 'utf8', + collate: 'utf8_general_ci', + freezeTableName: true, + timestamps: false + }, + host: host, + port: port, + logging: logging as boolean, + dialect: dialect, + quoteIdentifiers: false, // set case-insensitive + dialectOptions: { + options: { + trustServerCertificate: true, + encrypt: encrypt, + requestTimeout: 120 * 1000 + } + }, + pool: { + max: 5, + min: 0, + idle: 10000, + evict: 10000, + acquire: acquire + } + }; + + if (!min[connectionName]) { + GBLogEx.info(min, `Loading custom connection ${connectionName}...`); + min[connectionName] = new Sequelize(storageName, username, password, sequelizeOptions); + } + } if (!con) { - GBLogEx.debug(min, `Invalid connection specified: ${min.bot} ${tableName} ${connectionName}.`); - } else { + throw new Error(`Invalid connection specified: ${connectionName}.`); + } - // Field checking, syncs if there is any difference. + // Field checking, syncs if there is any difference. - const seq = con ? con : minBoot.core.sequelize; + const seq = min[connectionName] ? min[connectionName] + : minBoot.core.sequelize; - if (seq) { - const model = seq.models[tableName]; - if (model) { + if (seq) { - // Except Id, checks if has same number of fields. + const model = seq.models[tableName]; + if (model) { + // Except Id, checks if has same number of fields. - let equals = 0; - Object.keys(t.fields).forEach(key => { - let obj1 = t.fields[key]; - let obj2 = model['fieldRawAttributesMap'][key]; + let equals = 0; + Object.keys(t.fields).forEach(key => { + let obj1 = t.fields[key]; + let obj2 = model['fieldRawAttributesMap'][key]; - if (key !== 'id') { - if (obj1 && obj2) { - equals++; - } + if (key !== "id") { + if (obj1 && obj2) { + equals++; } - }); - - if (equals != Object.keys(t.fields).length) { - sync = true; } - } - seq.define(tableName, t.fields); - - // New table checking, if needs sync. - let tables; - const dialect = con.dialect.name; - - tables = await GBUtil.listTables(dialect, seq); - - let found = false; - tables.forEach(storageTable => { - if (storageTable['table_name'] === tableName) { - found = true; - } }); - sync = sync ? sync : !found; - - // Do not erase tables in case of an error in collection retrieval. + if (equals != Object.keys(t.fields).length) { + sync = true; + } + } - if (tables.length === 0){ - sync = false; + seq.define(tableName, t.fields); + + // New table checking, if needs sync. + let tables; + + if (con.storageDriver === 'mssql') { + tables = await seq.query(`SELECT table_name, table_schema + FROM information_schema.tables + WHERE table_type = 'BASE TABLE' + ORDER BY table_name ASC`, { + type: QueryTypes.RAW + })[0] + } + else if (con.storageDriver === 'mariadb') { + tables = await seq.getQueryInterface().showAllTables(); + } + + let found = false; + tables.forEach((storageTable) => { + if (storageTable['table_name'] === tableName) { + found = true; + } + }); + + sync = sync ? sync : !found; + + associations.forEach(e => { + const from = seq.models[e.from]; + const to = seq.models[e.to]; + + try { + to.hasMany(from); + } catch (error) { + throw new Error(`BASIC: Invalid relationship in ${mainName}: from ${e.from} to ${e.to} (${min.botId})... ${error.message}`); } - associations.forEach(e => { - const from = seq.models[e.from]; - const to = seq.models[e.to]; + }); - try { - to.hasMany(from); - } catch (error) { - throw new Error( - `Invalid relationship in ${mainName}: from ${e.from} to ${e.to} (${min.botId})... ${error.message}` - ); - } + + if (sync && shouldSync) { + + GBLogEx.info(min, `BASIC: Syncing changes for TABLE ${connectionName} ${tableName} keyword (${min.botId})...`); + + await seq.sync({ + alter: true, + force: false // Keep it false due to data loss danger. }); - - if (sync && shouldSync) { - GBLogEx.info(min, `Syncing changes for TABLE ${connectionName} ${tableName} keyword (${min.botId})...`); - - await seq.sync({ - alter: true, - force: false // Keep it false due to data loss danger. - }); - GBLogEx.info(min, `Done sync for ${min.botId} ${connectionName} ${tableName} storage table...`); - } + GBLogEx.info(min, `BASIC: Done sync for ${min.botId} ${connectionName} ${tableName} storage table...`); } } }); } + + const parsedCode: string = Fs.readFileSync(jsfile, 'utf8'); + min.sandBoxMap[mainName.toLowerCase().trim()] = parsedCode; + return filename; } public async translateBASIC(mainName, filename: any, min: GBMinInstance) { // Converts General Bots BASIC into regular VBS - let basicCode: string = await fs.readFile(filename, 'utf8'); - basicCode = GBVMService.normalizeQuotes(basicCode); - - // Pre process SET SCHEDULE calls. - - const schedules = GBVMService.getSetScheduleKeywordArgs(basicCode); - - const s = new ScheduleServices(); - await s.deleteScheduleIfAny(min, mainName); - - let i = 1; - await CollectionUtil.asyncForEach(schedules, async syntax => { - if (s) { - await s.createOrUpdateSchedule(min, syntax, `${mainName};${i++}`); - } - }); - - basicCode = basicCode.replace(/^\s*SET SCHEDULE (.*)/gim, ''); + let basicCode: string = Fs.readFileSync(filename, 'utf8'); // Process INCLUDE keyword to include another // dialog inside the dialog. @@ -482,26 +475,26 @@ export class GBVMService extends GBService { if (include) { let includeName = include[1].trim(); - includeName = path.join(path.dirname(filename), includeName); + includeName = Path.join(Path.dirname(filename), includeName); includeName = includeName.substr(0, includeName.lastIndexOf('.')) + '.vbs'; // To use include, two /publish will be necessary (for now) // because of alphabet order may raise not found errors. - let includeCode: string = await fs.readFile(includeName, 'utf8'); + let includeCode: string = Fs.readFileSync(includeName, 'utf8'); basicCode = basicCode.replace(/^include\b.*$/gim, includeCode); } } while (include); - let { code, map, metadata, tasks } = await this.convert(filename, mainName, basicCode); + let { code, map, metadata, tasks, systemPrompt } = await this.convert(filename, mainName, basicCode); // Generates function JSON metadata to be used later. const jsonFile = `${filename}.json`; - await fs.writeFile(jsonFile, JSON.stringify(metadata)); + Fs.writeFileSync(jsonFile, JSON.stringify(metadata)); const mapFile = `${filename}.map`; - await fs.writeFile(mapFile, JSON.stringify(map)); + Fs.writeFileSync(mapFile, JSON.stringify(map)); // Execute off-line code tasks @@ -511,14 +504,185 @@ export class GBVMService extends GBService { const jsfile: string = `${filename}.js`; - const template = (await fs.readFile('./vm-inject.js')).toString(); - code = template.replace('//##INJECTED_CODE_HERE', code ); - code = code.replace('//##INJECTED_HEADER', `port=${GBVMService.API_PORT}; botId='${min.botId}';` ); + code = ` + module.exports = (async () => { + + // Imports npm packages for this .gbdialog conversational application. + + require('isomorphic-fetch'); + const http = require('node:http'); + const retry = require('async-retry'); + const createRpcClient = require("@push-rpc/core").createRpcClient; + const createHttpClient = require("@push-rpc/http").createHttpClient; + + // Unmarshalls Local variables from server VM. + + const pid = this.pid; + let id = this.id; + let username = this.username; + let mobile = this.mobile; + let from = this.from; + const channel = this.channel; + const ENTER = this.ENTER; + const headers = this.headers; + let httpUsername = this.httpUsername; + let httpPs = this.httpPs; + let today = this.today; + let now = this.now; + let date = new Date(); + let page = null; + const files = []; + let col = 1; + let index = 1; + + // Makes objects in BASIC insensitive. + + const caseInsensitive = (listOrRow) => { + + if (!listOrRow) { + + return listOrRow; + }; + + const lowercase = (oldKey) => typeof oldKey === 'string' ? oldKey.toLowerCase() : oldKey; + + const createCaseInsensitiveProxy = (obj) => { + const propertiesMap = new Map(Object.keys(obj).map(propKey => [lowercase(propKey), obj[propKey]])); + const caseInsensitiveGetHandler = { + get: (target, property) => propertiesMap.get(lowercase(property)) + }; + return new Proxy(obj, caseInsensitiveGetHandler); + }; + + if (listOrRow.length) { + return listOrRow.map(row => createCaseInsensitiveProxy(row)); + } else { + return createCaseInsensitiveProxy(listOrRow); + } + }; + + // Transfers auto variables into global object. + + for(__indexer in this.variables) { + global[__indexer] = this.variables[__indexer]; + } + + + // Defines local utility BASIC functions. + + const ubound = (gbarray) => { + let length = 0; + if (gbarray){ + length = gbarray.length; + if (length > 0){ + if(gbarray[0].gbarray){ + return length - 1; + } + } + } + return length; + } + + const isarray = (gbarray) => {return Array.isArray(gbarray) }; + + // Proxies remote functions as BASIC functions. + + const weekday = (v) => { return (async () => { return await dk.getWeekFromDate({v}) })(); }; + const hour = (v) => { return (async () => { return await dk.getHourFromDate({v}) })(); }; + const base64 = (v) => { return (async () => { return await dk.getCoded({v}) })(); }; + const tolist = (v) => { return (async () => { return await dk.getToLst({v}) })(); }; + const uuid = () => { + var dt = new Date().getTime(); + var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => { + var r = (dt + Math.random()*16)%16 | 0; + dt = Math.floor(dt/16); + return (c=='x' ? r :(r&0x3|0x8)).toString(16); + }); + return uuid; + }; + const random = () => { return Number.parseInt((Math.random() * 8) % 8 * 100000000)}; + + + // Setups interprocess communication from .gbdialog run-time to the BotServer API. + + const optsRPC = {callTimeout: this.callTimeout, messageParser: data => {return JSON.parse(data)}}; + let url; + const agent = http.Agent({ keepAlive: true }); + + url = 'http://localhost:${GBVMService.API_PORT}/${min.botId}/dk'; + const dk = (await createRpcClient(() => createHttpClient(url, {agent: agent}), optsRPC)).remote; + url = 'http://localhost:${GBVMService.API_PORT}/${min.botId}/sys'; + const sys = (await createRpcClient(() => createHttpClient(url, {agent: agent}), optsRPC)).remote; + url = 'http://localhost:${GBVMService.API_PORT}/${min.botId}/wa'; + const wa = (await createRpcClient(() => createHttpClient(url, {agent: agent}), optsRPC)).remote; + url = 'http://localhost:${GBVMService.API_PORT}/${min.botId}/img'; + const img = (await createRpcClient(() => createHttpClient(url, {agent: agent}), optsRPC)).remote; + + const timeout = (ms)=> { + return new Promise(resolve => setTimeout(resolve, ms)); + } + + const ensureTokens = async (firstTime) => { + const tokens = this.tokens ? this.tokens.split(',') : []; + + for(__indexer in tokens) { + const tokenName = tokens[__indexer]; + + // Auto update Bearar authentication for the first token. + + const expiresOn = new Date(global[tokenName + "_expiresOn"]); + const expiration = expiresOn.getTime() - (10 * 60 * 1000); + + // Expires token 10min. before or if it the first time, load it. + + if (expiration < new Date().getTime() || firstTime) { + console.log ('Expired. Refreshing token...'); + const {token, expiresOn} = await sys.getCustomToken({pid, tokenName}); + + global[tokenName] = token; + global[tokenName + "_expiresOn"]= expiresOn; + } + + if (__indexer == 0) { + headers['Authorization'] = 'Bearer ' + global[tokenName]; + } + } + }; + + // Line of Business logic. + + let __reportMerge = {adds: 0, updates: 0, skipped: 0}; + let __report = () => { + return __reportMerge.title + ' adds: ' + __reportMerge.adds + ', updates: ' + __reportMerge.updates + ' and skipped: ' + __reportMerge.skipped + '.'; + }; + let REPORT = 'No report yet'; + + try{ + await ensureTokens(true); + ${code} + } + catch(e){ + console.log(e); + + reject ({message: e.message, name: e.name}); + } + finally{ + + // Closes handles if any. + + await wa.closeHandles({pid: pid}); + await sys.closeHandles({pid: pid}); + + resolve(true); + } + })(); +`; code = ji.default(code, ' '); - await fs.writeFile(jsfile, code); - + Fs.writeFileSync(jsfile, code); + GBLogEx.info(min, `[GBVMService] Finished loading of ${filename}, JavaScript from Word: \n ${code}`); + } private async executeTasks(min, tasks) { @@ -526,10 +690,12 @@ export class GBVMService extends GBService { const task = tasks[i]; if (task.kind === 'writeTableDefinition') { + // Creates an empty object that will receive Sequelize fields. const tablesFile = `${task.file}.tables.json`; - await fs.writeFile(tablesFile, JSON.stringify(task.tables)); + Fs.writeFileSync(tablesFile, JSON.stringify(task.tables)); + } } } @@ -547,10 +713,11 @@ export class GBVMService extends GBService { lines.forEach(line => { if (line.trim()) { - const keyword = /^\s*SET SCHEDULE (.*)/gi; + console.log(line); + const keyword = /\s*SET SCHEDULE (.*)/gi; let result: any = keyword.exec(line); if (result) { - result = result[1].replace(/\`|\"|\'/, ''); + result = result[1].replace(/\`|\"|\'/, '') result = result.trim(); results.push(result); } @@ -559,25 +726,28 @@ export class GBVMService extends GBService { return results; } - private async getTextFromWord(folder: string, filename: string) { return new Promise(async (resolve, reject) => { - const filePath = urlJoin(folder, filename); - textract.fromFileWithPath(filePath, { preserveLineBreaks: true }, async (error, text) => { + const path = urlJoin(folder, filename); + textract.fromFileWithPath(path, { preserveLineBreaks: true }, (error, text) => { if (error) { if (error.message.startsWith('File not correctly recognized as zip file')) { - text = await fs.readFile(filePath, 'utf8'); + text = Fs.readFileSync(path, 'utf8'); } else { reject(error); } } + if (text) { + text = GBVMService.normalizeQuotes(text); + } resolve(text); }); }); } public static normalizeQuotes(text: any) { + text = text.replace(/\"/gm, '`'); text = text.replace(/\¨/gm, '`'); text = text.replace(/\“/gm, '`'); @@ -588,66 +758,67 @@ export class GBVMService extends GBService { return text; } - public static getMetadata(mainName: string, propertiesText: string[][], description: string) { + public static getMetadata(mainName: string, propertiesText, description) { let properties = {}; if (!propertiesText || !description) { - return {}; - } - const getType = (asClause: string) => { + return {} + } + const getType = asClause => { + asClause = asClause.trim().toUpperCase(); if (asClause.indexOf('STRING') !== -1) { return 'string'; - } else if (asClause.indexOf('OBJECT') !== -1) { + } + else if (asClause.indexOf('OBJECT') !== -1) { return 'object'; - } else if (asClause.indexOf('INTEGER') !== -1 || asClause.indexOf('NUMBER') !== -1) { + } + else if (asClause.indexOf('INTEGER') !== -1 || asClause.indexOf('NUMBER') !== -1) { return 'number'; } else { return 'enum'; } }; + for (let i = 0; i < propertiesText.length; i++) { const propertiesExp = propertiesText[i]; const t = getType(propertiesExp[2]); let element; - const description = propertiesExp[4]?.trim(); if (t === 'enum') { - const list = propertiesExp[2] as any; - element = z.enum(list.split(',')); + element = z.enum(propertiesExp[2].split(',')); } else if (t === 'string') { - element = z.string({ description: description }); + element = z.string(); } else if (t === 'object') { - element = z.string({ description: description }); // Assuming 'object' is represented as a string here + element = z.string(); } else if (t === 'number') { - element = z.number({ description: description }); + element = z.number(); } else { GBLog.warn(`Element type invalid specified on .docx: ${propertiesExp[0]}`); } + element.describe(propertiesExp[3]); element['type'] = t; properties[propertiesExp[1].trim()] = element; } - const json = { - type: 'function', + + let json = { + type: "function", function: { - name: mainName, + name: `${mainName}`, description: description ? description : '', - schema: zodToJsonSchema(z.object(properties)) - }, - arguments: propertiesText.reduce((acc, prop) => { - acc[prop[1].trim()] = prop[3]?.trim(); // Assuming value is in the 3rd index - return acc; - }, {}) - }; + parameters: zodToJsonSchema(z.object(properties)) + } + } return json; } public async parseField(line) { + let required = line.indexOf('*') !== -1; let unique = /\bunique\b/gi.test(line); let primaryKey = /\bkey\b/gi.test(line); @@ -669,8 +840,7 @@ export class GBVMService extends GBService { let definition = { allowNull: !required, - unique: unique, - primaryKey: primaryKey, + unique: unique, primaryKey: primaryKey, autoIncrement: autoIncrement }; definition['type'] = t; @@ -689,6 +859,7 @@ export class GBVMService extends GBService { * @param code General Bots BASIC */ public async convert(filename: string, mainName: string, code: string) { + // Start and End of VB2TS tags of processing. code = process.env.ENABLE_AUTH ? `hear GBLogExin as login\n${code}` : code; @@ -709,6 +880,7 @@ export class GBVMService extends GBService { const outputLines = []; let emmitIndex = 1; for (let i = 1; i <= lines.length; i++) { + let line = lines[i - 1]; // Remove lines before statements. @@ -724,7 +896,7 @@ export class GBVMService extends GBService { // Pre-process "off-line" static KEYWORDS. let emmit = true; - const params = /^\s*PARAM\s*(.*)\s*AS\s*(.*)\s*LIKE\s*(.*)\s*DESCRIPTION\s*(.*)/gim; + const params = /^\s*PARAM\s*(.*)\s*AS\s*(.*)\s*LIKE\s*(.*)/gim; const param = params.exec(line); if (param) { properties.push(param); @@ -759,12 +931,12 @@ export class GBVMService extends GBService { const endTableKeyword = /^\s*END TABLE\s*/gim; let endTableReg = endTableKeyword.exec(line); if (endTableReg && table) { + tables.push({ - name: table, - fields: fields, - connection: connection + name: table, fields: fields, connection: connection }); + fields = {}; table = null; connection = null; @@ -804,14 +976,14 @@ export class GBVMService extends GBService { const talkKeyword = /^\s*BEGIN TALK\s*/gim; let talkReg = talkKeyword.exec(line); if (talkReg && !talk) { - talk = 'await dk.talk ({pid: pid, text: `'; + talk = "await dk.talk ({pid: pid, text: `"; emmit = false; } const systemPromptKeyword = /^\s*BEGIN SYSTEM PROMPT\s*/gim; let systemPromptReg = systemPromptKeyword.exec(line); if (systemPromptReg && !systemPrompt) { - systemPrompt = 'await sys.setSystemPrompt ({pid: pid, text: `'; + systemPrompt = "await sys.setSystemPrompt ({pid: pid, text: `"; emmit = false; } @@ -829,10 +1001,9 @@ export class GBVMService extends GBService { if (tables) { tasks.push({ - kind: 'writeTableDefinition', - file: filename, - tables + kind: 'writeTableDefinition', file: filename, tables }); + } code = `${outputLines.join('\n')}\n`; @@ -845,7 +1016,14 @@ export class GBVMService extends GBService { /** * Executes the converted JavaScript from BASIC code inside execution context. */ - public static async callVM(text: string, min: GBMinInstance, step, pid, debug: boolean = false, params = []) { + public static async callVM( + text: string, + min: GBMinInstance, + step, + pid, + debug: boolean = false, + params = [] + ) { // Creates a class DialogKeywords which is the *this* pointer // in BASIC. @@ -856,12 +1034,13 @@ export class GBVMService extends GBService { GBConfigService.get('DEFAULT_CONTENT_LANGUAGE') ); - let variables = {}; + let variables = []; // These variables will be automatically be available as normal BASIC variables. try { - variables['aadToken'] = await (min.adminService as any)['acquireElevatedToken'](min.instance.instanceId, false); + variables['aadToken'] = await (min.adminService as any)['acquireElevatedToken'] + (min.instance.instanceId, false); } catch (error) { variables['aadToken'] = 'ERROR: Configure /setupSecurity before using aadToken variable.'; } @@ -877,7 +1056,7 @@ export class GBVMService extends GBService { // Auto-NLP generates BASIC variables related to entities. - if (step?.context?.activity.originalText && min['nerEngine']) { + if (step ? step.context.activity.originalText : null && min['nerEngine']) { const result = await min['nerEngine'].process(step.context.activity.originalText); for (let i = 0; i < result.entities.length; i++) { @@ -895,17 +1074,19 @@ export class GBVMService extends GBService { } const botId = min.botId; - const packagePath = GBUtil.getGBAIPath(min.botId, `gbdialog`); - const gbdialogPath = urlJoin(process.cwd(), 'work', packagePath); - const scriptFilePath = urlJoin(gbdialogPath, `${text}.js`); + const path = DialogKeywords.getGBAIPath(min.botId, `gbdialog`); + const gbdialogPath = urlJoin(process.cwd(), 'work', path); + const scriptPath = urlJoin(gbdialogPath, `${text}.js`); let code = min.sandBoxMap[text]; - const channel = step?.context ? step.context.activity.channelId : 'web'; + const channel = step ? step.context.activity.channelId : 'web'; + const dk = new DialogKeywords(); const sys = new SystemKeywords(); await dk.setFilter({ pid: pid, value: null }); + // Find all tokens in .gbot Config. const strFind = ' Client ID'; @@ -936,12 +1117,12 @@ export class GBVMService extends GBService { let result; try { - if (!GBConfigService.get('GBVM')) { + if (GBConfigService.get('GBVM') === 'false') { return await (async () => { - return await new Promise((resolve) => { + return await new Promise((resolve, reject) => { sandbox['resolve'] = resolve; // TODO: #411 sandbox['reject'] = reject; - sandbox['reject'] = () => {}; + sandbox['reject'] = ()=>{}; const vm1 = new NodeVM({ allowAsync: true, @@ -955,9 +1136,10 @@ export class GBVMService extends GBService { context: 'sandbox' } }); - const s = new VMScript(code, { filename: scriptFilePath }); + const s = new VMScript(code, { filename: scriptPath }); result = vm1.run(s); }); + })(); } else { const runnerPath = urlJoin( @@ -974,7 +1156,7 @@ export class GBVMService extends GBService { min: 0, max: 0, debug: debug, - // debuggerport: GBVMService.DEBUGGER_PORT, + debuggerport: GBVMService.DEBUGGER_PORT, botId: botId, cpu: 100, memory: 50000, @@ -983,20 +1165,15 @@ export class GBVMService extends GBService { script: runnerPath }); - result = await run(code, Object.assign(sandbox, { filename: scriptFilePath })); + result = await run(code, { filename: scriptPath, sandbox: sandbox }); } } catch (error) { throw new Error(`BASIC RUNTIME ERR: ${error.message ? error.message : error}\n Stack:${error.stack}`); } + } - public static createProcessInfo( - user: GuaribasUser, - min: GBMinInstance, - channel: any, - executable: string, - step = null - ) { + public static createProcessInfo(user: GuaribasUser, min: GBMinInstance, channel: any, executable: string, step = null) { const pid = GBAdminService.getNumberIdentifier(); GBServer.globals.processes[pid] = { pid: pid, diff --git a/packages/basic.gblib/services/ImageProcessingServices.ts b/packages/basic.gblib/services/ImageProcessingServices.ts index 4b1337c26..bd93218ed 100644 --- a/packages/basic.gblib/services/ImageProcessingServices.ts +++ b/packages/basic.gblib/services/ImageProcessingServices.ts @@ -1,47 +1,47 @@ /*****************************************************************************\ -| █████ █████ ██ █ █████ █████ ████ ██ ████ █████ █████ ███ ® | -| ██ █ ███ █ █ ██ ██ ██ ██ ██ ██ █ ██ ██ █ █ | -| ██ ███ ████ █ ██ █ ████ █████ ██████ ██ ████ █ █ █ ██ | -| ██ ██ █ █ ██ █ █ ██ ██ ██ ██ ██ ██ █ ██ ██ █ █ | -| █████ █████ █ ███ █████ ██ ██ ██ ██ █████ ████ █████ █ ███ | +| ( )_ _ | +| _ _ _ __ _ _ __ ___ ___ _ _ | ,_)(_) ___ ___ _ | +| ( '_`\ ( '__)/'_` ) /'_ `\/' _ ` _ `\ /'_` )| | | |/',__)/' v `\ /'_`\ | +| | (_) )| | ( (_| |( (_) || ( ) ( ) |( (_| || |_ | |\__,\| (˅) |( (_) ) | +| | ,__/'(_) `\__,_)`\__ |(_) (_) (_)`\__,_)`\__)(_)(____/(_) (_)`\___/' | +| | | ( )_) | | +| (_) \___/' | | | -| General Bots Copyright (c) pragmatismo.cloud. All rights reserved. | +| General Bots Copyright (c) pragmatismo.cloud. All rights reserved. | | Licensed under the AGPL-3.0. | | | -| According to our dual licensing model, this program can be used either | -| under the terms of the GNU Affero General Public License, version 3, | +| According to our dual licensing model,this program can be used either | +| under the terms of the GNU Affero General Public License,version 3, | | or under a proprietary license. | | | | The texts of the GNU Affero General Public License with an additional | | permission and of our proprietary license can be found at and | | in the LICENSE file you have received along with this program. | | | -| This program is distributed in the hope that it will be useful, | -| but WITHOUT ANY WARRANTY, without even the implied warranty of | +| This program is distributed in the hope that it will be useful, | +| but WITHOUT ANY WARRANTY,without even the implied warranty of | | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | | GNU Affero General Public License for more details. | | | -| "General Bots" is a registered trademark of pragmatismo.cloud. | +| "General Bots" is a registered trademark of pragmatismo.cloud. | | The licensing of the program under the AGPLv3 does not imply a | -| trademark license. Therefore any rights, title and interest in | +| trademark license. Therefore any rights,title and interest in | | our trademarks remain entirely with us. | | | \*****************************************************************************/ 'use strict'; -import path from 'path'; +import Path from 'path'; import { GBLog, GBMinInstance } from 'botlib'; import { DialogKeywords } from './DialogKeywords.js'; +import sharp from 'sharp'; +import joinImages from 'join-images-updated'; import { CollectionUtil } from 'pragmatismo-io-framework'; import { GBAdminService } from '../../admin.gbapp/services/GBAdminService.js'; import urlJoin from 'url-join'; import { GBServer } from '../../../src/app.js'; import { GBLogEx } from '../../core.gbapp/services/GBLogEx.js'; -import { GBUtil } from '../../../src/util.js'; -import fs from 'fs/promises'; -import { AzureOpenAI } from 'openai'; -import { OpenAIClient } from '@langchain/openai'; /** * Image processing services of conversation to be called by BASIC. @@ -54,41 +54,52 @@ export class ImageProcessingServices { */ public async sharpen({ pid, file: file }) { const { min, user } = await DialogKeywords.getProcessInfo(pid); - GBLogEx.info(min, `Image Processing SHARPEN ${file}.`); + GBLogEx.info(min, `BASIC: Image Processing SHARPEN ${file}.`); const gbfile = DialogKeywords.getFileByHandle(file); + const data = await sharp(gbfile.data) + .sharpen({ + sigma: 2, + m1: 0, + m2: 3, + x1: 3, + y2: 15, + y3: 15 + }) + .toBuffer(); - // TODO: sharp. + const newFile = { + filename: gbfile.filename, + data: data + + }; return; } /** * SET ORIENTATION VERTICAL - * - * file = MERGE file1, file2, file3 + * + * file = MERGE file1, file2, file3 */ - public async mergeImage({ pid, files }) { + public async mergeImage({pid, files}) + { const { min, user } = await DialogKeywords.getProcessInfo(pid); let paths = []; await CollectionUtil.asyncForEach(files, async file => { - const gbfile = DialogKeywords.getFileByHandle(file); + const gbfile = DialogKeywords.getFileByHandle(file); paths.push(gbfile.path); }); const botId = min.instance.botId; - const packagePath = GBUtil.getGBAIPath(min.botId); - // TODO: const img = await joinImages(paths); - const localName = path.join( - 'work', - packagePath, - 'cache', - `img-mrg${GBAdminService.getRndReadableIdentifier()}.png` - ); - const url = urlJoin(GBServer.globals.publicAddress, min.botId, 'cache', path.basename(localName)); - // img.toFile(localName); + const path = DialogKeywords.getGBAIPath(min.botId); + const img = await joinImages(paths); + const localName = Path.join('work', path, 'cache', `img-mrg${GBAdminService.getRndReadableIdentifier()}.png`); + const url = urlJoin(GBServer.globals.publicAddress, min.botId, 'cache', Path.basename(localName)); + img.toFile(localName); return { localName: localName, url: url, data: null }; + } /** @@ -96,86 +107,20 @@ export class ImageProcessingServices { * * @example file = BLUR file */ - public async blur({ pid, file: file }) { + public async blur({ pid, file: file }) { const { min, user } = await DialogKeywords.getProcessInfo(pid); - GBLogEx.info(min, `Image Processing SHARPEN ${file}.`); + GBLogEx.info(min, `BASIC: Image Processing SHARPEN ${file}.`); const gbfile = DialogKeywords.getFileByHandle(file); + const data = await sharp(gbfile.data) + .blur() + .toBuffer(); + + const newFile = { + filename: gbfile.filename, + data: data + }; return; } - public async getImageFromPrompt({ pid, prompt }) { - const { min, user, params } = await DialogKeywords.getProcessInfo(pid); - - GBLogEx.info(min, `DALL-E: ${prompt}.`); - - const azureOpenAIKey = await min.core.getParam(min.instance, 'Azure Open AI Key', null, true); - const azureOpenAIEndpoint = await min.core.getParam(min.instance, 'Azure Open AI Endpoint', null, true); - const azureOpenAIVersion = await (min.core as any)['getParam'](min.instance, 'Azure Open AI Version', null, true); - const azureOpenAIImageModel = await (min.core as any)['getParam'](min.instance, 'Azure Open AI Image Model', null, true); - - - if (azureOpenAIKey) { - // Initialize the Azure OpenAI client - - const client = new AzureOpenAI({ - endpoint: azureOpenAIEndpoint, - deployment: azureOpenAIImageModel, - apiVersion: azureOpenAIVersion, - apiKey: azureOpenAIKey - }); - - // Make a request to the image generation endpoint - - const response = await client.images.generate({ - model: '', - prompt: prompt, - n: 1, - size: '1024x1024' - }); - - const gbaiName = GBUtil.getGBAIPath(min.botId); - const localName = path.join('work', gbaiName, 'cache', `DALL-E${GBAdminService.getRndReadableIdentifier()}.png`); - - const url = response.data[0].url; - const res = await fetch(url); - let buf: any = Buffer.from(await res.arrayBuffer()); - await fs.writeFile(localName, buf, { encoding: null }); - - GBLogEx.info(min, `DALL-E: ${url} - ${response.data[0].revised_prompt}.`); - - return { localName, url }; - } - } - - public async getCaptionForImage({ pid, imageUrl }) { - const { min, user, params } = await DialogKeywords.getProcessInfo(pid); - - const azureOpenAIKey = await min.core.getParam(min.instance, 'Azure Open AI Key', null); - const azureOpenAITextModel = 'gpt-4'; // Specify GPT-4 model here - const azureOpenAIEndpoint = await min.core.getParam(min.instance, 'Azure Open AI Endpoint', null); - const azureOpenAIVersion = await (min.core as any)['getParam'](min.instance, 'Azure Open AI Version', null, true); - - if (azureOpenAIKey && azureOpenAITextModel && imageUrl) { - const client = new AzureOpenAI({ - apiVersion: azureOpenAIVersion, - apiKey: azureOpenAIKey, - baseURL: azureOpenAIEndpoint - }); - - const prompt = `Provide a descriptive caption for the image at the following URL: ${imageUrl}`; - - const response = await client.completions.create({ - - model: azureOpenAITextModel, - prompt: prompt, - max_tokens: 50 - }); - - const caption = response['data'].choices[0].text.trim(); - GBLogEx.info(min, `Generated caption: ${caption}`); - - return { caption }; - } - } } diff --git a/packages/basic.gblib/services/KeywordsExpressions.ts b/packages/basic.gblib/services/KeywordsExpressions.ts index 453971398..431b1c1f7 100644 --- a/packages/basic.gblib/services/KeywordsExpressions.ts +++ b/packages/basic.gblib/services/KeywordsExpressions.ts @@ -1,44 +1,46 @@ /*****************************************************************************\ -| █████ █████ ██ █ █████ █████ ████ ██ ████ █████ █████ ███ ® | -| ██ █ ███ █ █ ██ ██ ██ ██ ██ ██ █ ██ ██ █ █ | -| ██ ███ ████ █ ██ █ ████ █████ ██████ ██ ████ █ █ █ ██ | -| ██ ██ █ █ ██ █ █ ██ ██ ██ ██ ██ ██ █ ██ ██ █ █ | -| █████ █████ █ ███ █████ ██ ██ ██ ██ █████ ████ █████ █ ███ | +| ( )_ _ | +| _ _ _ __ _ _ __ __ __ _ _ | ,_)(_) __ __ _ | +| ( '_`\ ( '__)/'_` ) /'_ `\/' _ ` _ `\ /'_` )| | | |/',__)/' v `\ /'_`\ | +| | (_) )| | ( (_| |( (_) || ( ) ( ) |( (_| || |_ | |\__,\| (˅) |( (_) ) | +| | ,__/'(_) `\__,_)`\__ |(_) (_) (_)`\__,_)`\__)(_)(___/(_) (_)`\__/' | +| | | ( )_) | | +| (_) \__/' | | | -| General Bots Copyright (c) pragmatismo.cloud. All rights reserved. | +| General Bots Copyright (c) pragmatismo.cloud. All rights reserved. | | Licensed under the AGPL-3.0. | | | -| According to our dual licensing model, this program can be used either | -| under the terms of the GNU Affero General Public License, version 3, | +| According to our dual licensing model,this program can be used either | +| under the terms of the GNU Affero General Public License,version 3, | | or under a proprietary license. | | | | The texts of the GNU Affero General Public License with an additional | | permission and of our proprietary license can be found at and | | in the LICENSE file you have received along with this program. | | | -| This program is distributed in the hope that it will be useful, | -| but WITHOUT ANY WARRANTY, without even the implied warranty of | +| This program is distributed in the hope that it will be useful, | +| but WITHOUT ANY WARRANTY,without even the implied warranty of | | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | | GNU Affero General Public License for more details. | | | -| "General Bots" is a registered trademark of pragmatismo.cloud. | +| "General Bots" is a registered trademark of pragmatismo.cloud. | | The licensing of the program under the AGPLv3 does not imply a | -| trademark license. Therefore any rights, title and interest in | +| trademark license. Therefore any rights,title and interest in | | our trademarks remain entirely with us. | | | \*****************************************************************************/ - 'use strict'; import { GBAdminService } from '../../admin.gbapp/services/GBAdminService.js'; import { GBVMService } from './GBVMService.js'; -import path from 'path'; +import Path from 'path'; /** * Image processing services of conversation to be called by BASIC. */ export class KeywordsExpressions { + public static splitParamsButIgnoreCommasInDoublequotes = (str: string) => { return str.split(',').reduce( (accum, curr) => { @@ -48,7 +50,7 @@ export class KeywordsExpressions { if (curr === '') { curr = null; } - accum.soFar.push(curr ? curr.trim() : ''); + accum.soFar.push(curr); } if (curr.split('`').length % 2 == 0) { accum.isConcatting = !accum.isConcatting; @@ -59,7 +61,9 @@ export class KeywordsExpressions { ).soFar; }; + private static getParams = (text: string, names) => { + const items = KeywordsExpressions.splitParamsButIgnoreCommasInDoublequotes(text); let i = 0; @@ -100,10 +104,12 @@ export class KeywordsExpressions { keywords[i++] = [ /^\s*INPUT(.*)/gim, ($0, $1, $2) => { + let separator; if ($1.indexOf(',') > -1) { separator = ','; - } else if ($1.indexOf(';') > -1) { + } + else if ($1.indexOf(';') > -1) { separator = ';'; } let parts; @@ -111,7 +117,8 @@ export class KeywordsExpressions { return ` TALK ${parts[0]} HEAR ${parts[1]}`; - } else { + } + else { return ` HEAR ${$1}`; } @@ -127,7 +134,6 @@ export class KeywordsExpressions { keywords[i++] = [/^\s*REM.*/gim, '']; - keywords[i++] = [/^\s*CLOSE.*/gim, '']; // Always autoclose keyword. @@ -152,7 +158,8 @@ export class KeywordsExpressions { let separator; if ($1.indexOf(',') > -1) { separator = ','; - } else if ($1.indexOf(';') > -1) { + } + else if ($1.indexOf(';') > -1) { separator = ';'; } let items; @@ -198,8 +205,9 @@ export class KeywordsExpressions { if (kind === 'AS' && KeywordsExpressions.isNumber(sessionName)) { const jParams = JSON.parse(`{${params}}`); - const filename = `${jParams.url.substr(0, jParams.url.lastIndexOf('.'))}.xlsx`; - let code = ` + const filename = `${jParams.url.substr(0, jParams.url.lastIndexOf("."))}.xlsx`; + let code = + ` col = 1 await sys.save({pid: pid,file: "${filename}", args: [id] }) await dk.setFilter ({pid: pid, value: "id=" + id }) @@ -243,10 +251,11 @@ export class KeywordsExpressions { keywords[i++] = [/^\s*end function/gim, '}']; - keywords[i++] = [/^\s*function +(.*)\((.*)\)/gim, 'const $1 = async ($2) => {\n']; + keywords[i++] = [/^\s*function +(.*)\((.*)\)/gim, '$1 = async ($2) => {\n']; keywords[i++] = [/^\s*for +(.*to.*)/gim, 'for ($1) {']; + keywords[i++] = [ /^\s*((?:[a-z]+.?)(?:(?:\w+).)(?:\w+)*)\s*=\s*pay\s*(.*)/gim, ($0, $1, $2, $3) => { @@ -297,7 +306,7 @@ export class KeywordsExpressions { if (kind === 'AS' && KeywordsExpressions.isNumber(sessionName)) { const jParams = JSON.parse(`{${params}}`); - const filename = `${path.basename(jParams.url, 'txt')}xlsx`; + const filename = `${Path.basename(jParams.url, 'txt')}xlsx`; return `files[${sessionName}] = "${filename}"`; } else { sessionName = `"${sessionName}"`; @@ -333,6 +342,7 @@ export class KeywordsExpressions { keywords[i++] = [ /^\s*FOR EACH\s*(.*)\s*IN\s*(.*)/gim, ($0, $1, $2) => { + return ` __totalCalls = 10; @@ -356,9 +366,9 @@ export class KeywordsExpressions { } ]; - keywords[i++] = [ - /^\s*next *$/gim, + keywords[i++] = [/^\s*next *$/gim, ($0, $1, $2) => { + return ` __index = __index + 1; @@ -372,8 +382,7 @@ export class KeywordsExpressions { if (__calls < __totalCalls && __pageMode === "auto") { // Performs GET request using the constructed URL - - let ___data = null + await retry( async (bail) => { await ensureTokens(); @@ -381,7 +390,6 @@ export class KeywordsExpressions { },{ retries: 5}); __data = ___data - ___data = null // Updates current variable handlers. @@ -398,80 +406,11 @@ export class KeywordsExpressions { } } - __data = null }`; } ]; - keywords[i++] = [ - /^\s*synchronize\s*(.*)/gim, - ($0, $1) => { - const items = KeywordsExpressions.splitParamsButIgnoreCommasInDoublequotes($1); - const [url, tableName, key1, pageVariable, limitVariable] = items; - - return ` - - if (!limit) limit = 100; - __page = 1 - while (__page > 0 && __page < pages) { - let __res = null - await retry( - async (bail) => { - await ensureTokens(); - __res = await sys.getHttp ({pid: pid, file: host + '${url}' + '?' + pageVariable + '=' + __page + '&' + limitVariable + '=' + limit, addressOrHeaders: headers, httpUsername, httpPs}) - },{ retries: 5}); - - await sleep(330); - - res = __res - __res = null - list1 = res.data - res = null - - - let j1 = 0 - items1 = [] - while (j1 < ubound(list1)) { - detail_id = caseInsensitive(list1[j1])['${key1}'] - let __res = null - await retry( - async (bail) => { - await ensureTokens(); - __res = await sys.getHttp ({pid: pid, file: host + '${url}' + '/' + detail_id, addressOrHeaders: headers, httpUsername, httpPs}) - },{ retries: 5}); - - await sleep(330); - - res = __res - __res = null - - items1[j1] = res.data - res = null - - j1 = j1 + 1 - } - __reportMerge1 = await sys.merge({pid: pid, file: '${tableName}' , data: items1 , key1: '${key1}'}) - items1 = null; - - __reportMerge.adds += __reportMerge1.adds; - __reportMerge.updates += __reportMerge1.updates; - __reportMerge.skipped += __reportMerge1.skipped; - __reportMerge.title = __reportMerge1.title; - REPORT = __report(); - - __page = __page + 1 - - if (list1?.length < limit) { - __page = 0 - } - list1 = null - } - - - `; - } - ]; keywords[i++] = [ /^\s*(.*)\=\s*(REWRITE)(\s*)(.*)/gim, @@ -481,31 +420,6 @@ export class KeywordsExpressions { } ]; - keywords[i++] = [ - /^\s*(.*)\=\s*(ANSWER)(\s*)(.*)/gim, - ($0, $1, $2, $3, $4) => { - const params = this.getParams($4, ['text']); - return `${$1} = await sys.answer ({pid: pid, ${params}})`; - } - ]; - - keywords[i++] = [ - /^\s*(.*)\=\s*(GET IMAGE)(\s*)(.*)/gim, - ($0, $1, $2, $3, $4) => { - const params = this.getParams($4, ['prompt']); - return `${$1} = await img.getImageFromPrompt({pid: pid, ${params}})`; - } - ]; - - keywords[i++] = [ - /\s*(SHOW IMAGE)(\s*)(.*)/gim, - ($0, $1, $2, $3, $4) => { - const params = this.getParams($3, ['file']); - return `await sys.showImage({pid: pid, ${params}})`; - } - ]; - - keywords[i++] = [ /^\s*(.*)\=\s*(AUTO SAVE)(\s*)(.*)/gim, ($0, $1, $2, $3, $4) => { @@ -517,7 +431,7 @@ export class KeywordsExpressions { keywords[i++] = [ /^\s*(DEBUG)(\s*)(.*)/gim, ($0, $1, $2, $3) => { - const params = this.getParams($3, ['obj']); + const params = this.getParams($3, ['text']); return `await sys.log ({pid: pid, ${params}})`; } ]; @@ -537,7 +451,8 @@ export class KeywordsExpressions { if (params[1]) { return `await sys.deleteFromStorage ({pid: pid, ${params}})`; - } else { + } + else { return `await sys.deleteFile ({pid: pid, ${params}})`; } } @@ -782,24 +697,15 @@ export class KeywordsExpressions { // Handles the GET http version. else { - return ` - - if (${$2}.endsWith('.pdf') && !${$2}.startsWith('https')) { - ${$1} = await sys.getPdf({pid: pid, file: ${$2}}); - } else { - - let __${$1} = null - await retry( - + await retry( async (bail) => { await ensureTokens(); __${$1} = await sys.getHttp ({pid: pid, file: ${$2}, addressOrHeaders: headers, httpUsername, httpPs}) },{ retries: 5}); ${$1} = __${$1} - __${$1} = null - } + `; } } @@ -827,22 +733,6 @@ export class KeywordsExpressions { } ]; - keywords[i++] = [ - /^\s*(SET CONTEXT)(\s*)(.*)/gim, - ($0, $1, $2, $3) => { - const params = this.getParams($3, ['text']); - return `await sys.setContext({pid: pid, ${params}})`; - } - ]; - - keywords[i++] = [ - /^\s*(SET ANSWER MODE)(\s*)(.*)/gim, - ($0, $1, $2, $3) => { - const params = this.getParams($3, ['mode']); - return `await sys.setAnswerMode({pid: pid, ${params}})`; - } - ]; - keywords[i++] = [ /^\s*(set language)(\s*)(.*)/gim, ($0, $1, $2, $3) => { @@ -975,6 +865,7 @@ export class KeywordsExpressions { keywords[i++] = [ /^\s*((?:[a-z]+.?)(?:(?:\w+).)(?:\w+)*)\s*=\s*post\s*(.*)/gim, ($0, $1, $2, $3) => { + const args = $2.split(','); return ` @@ -1081,12 +972,13 @@ export class KeywordsExpressions { keywords[i++] = [ /^\s*(talk)(\s*)(.*)/gim, ($0, $1, $2, $3) => { + $3 = GBVMService.normalizeQuotes($3); // // Uses auto quote if this is a phrase with more then one word. if (!($3.trim().substr(0, 1) === '`' || $3.trim().substr(0, 1) === "'")) { - $3 = '`' + $3 + '`'; + $3 = "`" + $3 + "`"; } return `await dk.talk ({pid: pid, text: ${$3}})`; } @@ -1215,19 +1107,10 @@ export class KeywordsExpressions { } ]; - keywords[i++] = [ - /^\s*((?:[a-z]+.?)(?:(?:\w+).)(?:\w+)*)\s*=\s*chart prompt(\s*)(.*)/gim, - ($0, $1, $2, $3) => { - const params = this.getParams($3, ['type', 'data', 'prompt']); - return `${$1} = await dk.llmChart ({pid: pid, ${params}})`; - } - ]; - keywords[i++] = [ /^\s*MERGE\s*(.*)\s*WITH\s*(.*)BY\s*(.*)/gim, ($0, $1, $2, $3) => { return `__reportMerge1 = await sys.merge({pid: pid, file: ${$1}, data: ${$2}, key1: ${$3}}) - ${$2.replace(/\`/g, '')} = null; __reportMerge.adds += __reportMerge1.adds; __reportMerge.updates += __reportMerge1.updates; __reportMerge.skipped += __reportMerge1.skipped; @@ -1316,13 +1199,6 @@ export class KeywordsExpressions { } ]; - keywords[i++] = [ - /^\s*(refresh)\s*(.*)/gim, - ($0, $1, $2, $3) => { - return `await sys.refreshDataSourceCache({pid: pid, connectionName: ${$2}})`; - } - ]; - keywords[i++] = [ /^\s*(save)(\s*)(.*)(.*)/gim, ($0, $1, $2, $3, $4) => { @@ -1338,11 +1214,12 @@ export class KeywordsExpressions { let index = 0; fields.forEach(field => { - // Extracts only the last part of the variable like 'column' + + // Extracts only the last part of the variable like 'column' // from 'row.column'. const fieldRegExp = /(?:.*\.)*(.*)/gim; - let name = fieldRegExp.exec(field.trim())[1]; + let name = fieldRegExp.exec(field.trim())[1] fieldsNamesOnly.push(`'${name}'`); }); @@ -1351,14 +1228,12 @@ export class KeywordsExpressions { // Checks if it is a collection or series of params. return ` - if (Array.isArray(${fields[0]}) || typeof ${fields[0]} === 'object') { - await sys.saveToStorageBatch({pid: pid, table: ${table}, rows: ${fields[0]} }) - } else { + if (Array.isArray(${fields[0]})){ + await sys.saveToStorageBatch({pid: pid, table: ${table}, rows:${fields[0]} }) + }else{ await sys.saveToStorage({pid: pid, table: ${table}, fieldsValues: [${fieldsAsText}], fieldsNames: [${fieldsNames}] }) } - ${fields[0].replace(/\`/g, '')} = null; `; - } ]; diff --git a/packages/basic.gblib/services/ScheduleServices.ts b/packages/basic.gblib/services/ScheduleServices.ts index dc0ed0e7e..f6003bf0e 100644 --- a/packages/basic.gblib/services/ScheduleServices.ts +++ b/packages/basic.gblib/services/ScheduleServices.ts @@ -5,7 +5,7 @@ | ██ ██ █ █ ██ █ █ ██ ██ ██ ██ ██ ██ █ ██ ██ █ █ | | █████ █████ █ ███ █████ ██ ██ ██ ██ █████ ████ █████ █ ███ | | | -| General Bots Copyright (c) pragmatismo.cloud. All rights reserved. | +| General Bots Copyright (c) pragmatismo.cloud. All rights reserved. | | Licensed under the AGPL-3.0. | | | | According to our dual licensing model, this program can be used either | @@ -21,7 +21,7 @@ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | | GNU Affero General Public License for more details. | | | -| "General Bots" is a registered trademark of pragmatismo.cloud. | +| "General Bots" is a registered trademark of pragmatismo.cloud. | | The licensing of the program under the AGPLv3 does not imply a | | trademark license. Therefore any rights, title and interest in | | our trademarks remain entirely with us. | @@ -47,30 +47,33 @@ import { GBLogEx } from '../../core.gbapp/services/GBLogEx.js'; * Basic services for BASIC manipulation. */ export class ScheduleServices extends GBService { + public async deleteScheduleIfAny(min: GBMinInstance, name: string) { + let i = 1; while (i <= 10) { const task = min['scheduleMap'] ? min['scheduleMap'][name + i] : null; if (task) { task.destroy(); - } - const id = `${name};${i}`; + const id = `${name};${i}`; - delete min['scheduleMap'][id]; - const count = await GuaribasSchedule.destroy({ - where: { - instanceId: min.instance.instanceId, - name: id + delete min['scheduleMap'][id]; + const count = await GuaribasSchedule.destroy({ + where: { + instanceId: min.instance.instanceId, + name: id + } + }); + + if (count > 0) { + GBLogEx.info(min, `BASIC: Removed ${name} SET SCHEDULE and ${count} rows from storage on: ${min.botId}...`); } - }); - - if (count > 0) { - GBLogEx.info(min, `Removed ${name} SET SCHEDULE and ${count} rows from storage on: ${min.botId}...`); } - i++; + } + } /** @@ -110,10 +113,12 @@ export class ScheduleServices extends GBService { let i = 0; let lastName = ''; - await CollectionUtil.asyncForEach(schedules, async item => { + await CollectionUtil.asyncForEach(schedules, async (item) => { + if (item.name === lastName) { item.name = item.name + ++i; - } else { + } + else { i = 0; } @@ -164,6 +169,7 @@ export class ScheduleServices extends GBService { }, options ); + } catch (error) { GBLogEx.error(min, `Running .gbdialog word ${item.name} : ${error}...`); } diff --git a/packages/basic.gblib/services/SystemKeywords.ts b/packages/basic.gblib/services/SystemKeywords.ts index d0d769e91..89c7d8a67 100644 --- a/packages/basic.gblib/services/SystemKeywords.ts +++ b/packages/basic.gblib/services/SystemKeywords.ts @@ -1,3 +1,4 @@ + /*****************************************************************************\ | █████ █████ ██ █ █████ █████ ████ ██ ████ █████ █████ ███ ® | | ██ █ ███ █ █ ██ ██ ██ ██ ██ ██ █ ██ ██ █ █ | @@ -5,7 +6,7 @@ | ██ ██ █ █ ██ █ █ ██ ██ ██ ██ ██ ██ █ ██ ██ █ █ | | █████ █████ █ ███ █████ ██ ██ ██ ██ █████ ████ █████ █ ███ | | | -| General Bots Copyright (c) pragmatismo.cloud. All rights reserved. | +| General Bots Copyright (c) pragmatismo.cloud. All rights reserved. | | Licensed under the AGPL-3.0. | | | | According to our dual licensing model, this program can be used either | @@ -21,19 +22,13 @@ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | | GNU Affero General Public License for more details. | | | -| "General Bots" is a registered trademark of pragmatismo.cloud. | +| "General Bots" is a registered trademark of pragmatismo.cloud. | | The licensing of the program under the AGPLv3 does not imply a | | trademark license. Therefore any rights, title and interest in | | our trademarks remain entirely with us. | | | \*****************************************************************************/ 'use strict'; - -import { setFlagsFromString } from 'v8'; -import { runInNewContext } from 'vm'; -import { IgApiClient } from 'instagram-private-api'; -import { readFile } from 'fs'; -import path, { resolve } from 'path'; import { GBLog, GBMinInstance } from 'botlib'; import { GBConfigService } from '../../core.gbapp/services/GBConfigService.js'; import { CollectionUtil } from 'pragmatismo-io-framework'; @@ -42,14 +37,12 @@ import { GBDeployer } from '../../core.gbapp/services/GBDeployer.js'; import { DialogKeywords } from './DialogKeywords.js'; import { GBServer } from '../../../src/app.js'; import { GBVMService } from './GBVMService.js'; -import fs from 'fs/promises'; +import Fs from 'fs'; import { GBSSR } from '../../core.gbapp/services/GBSSR.js'; import urlJoin from 'url-join'; import Excel from 'exceljs'; -import { BufferWindowMemory } from 'langchain/memory'; -import csvdb from 'csv-database'; -import { Sequelize, QueryTypes, DataTypes } from '@sequelize/core'; -import packagePath from 'path'; +import { TwitterApi } from 'twitter-api-v2'; +import Path from 'path'; import ComputerVisionClient from '@azure/cognitiveservices-computervision'; import ApiKeyCredentials from '@azure/ms-rest-js'; import alasql from 'alasql'; @@ -58,17 +51,24 @@ import Docxtemplater from 'docxtemplater'; import pptxTemplaterModule from 'pptxtemplater'; import _ from 'lodash'; import { pdfToPng, PngPageOutput } from 'pdf-to-png-converter'; +import sharp from 'sharp'; import ImageModule from 'open-docxtemplater-image-module'; +import DynamicsWebApi from 'dynamics-web-api'; +import * as MSAL from '@azure/msal-node'; import { GBConversationalService } from '../../core.gbapp/services/GBConversationalService.js'; import { WebAutomationServices } from './WebAutomationServices.js'; import { KeywordsExpressions } from './KeywordsExpressions.js'; -import { ChatServices } from '../../llm.gblib/services/ChatServices.js'; +import { ChatServices } from '../../gpt.gblib/services/ChatServices.js'; import mime from 'mime-types'; +import exts from '../../../extensions.json' assert { type: 'json' }; import { SecService } from '../../security.gbapp/services/SecService.js'; import { GBLogEx } from '../../core.gbapp/services/GBLogEx.js'; import retry from 'async-retry'; -import { BlobServiceClient, BlockBlobClient, StorageSharedKeyCredential } from '@azure/storage-blob'; -import { Page } from 'facebook-nodejs-business-sdk'; +import { + BlobServiceClient, + BlockBlobClient, + StorageSharedKeyCredential +} from '@azure/storage-blob'; import { md5 } from 'js-md5'; import { GBUtil } from '../../../src/util.js'; @@ -81,6 +81,7 @@ import { GBUtil } from '../../../src/util.js'; * BASIC system class for extra manipulation of bot behaviour. */ export class SystemKeywords { + /** * @tags System */ @@ -89,11 +90,10 @@ export class SystemKeywords { const step = null; const deployer = null; - return await GBVMService.callVM(text, min, step, pid, false, [text]); + return await GBVMService.callVM(text, min, step, pid,false, [text]); } public async append({ pid, args }) { - if (!args) return []; let array = [].concat(...args); return array.filter(function (item, pos) { return item; @@ -261,7 +261,7 @@ export class SystemKeywords { // headers. const { min, user } = await DialogKeywords.getProcessInfo(pid); - const gbaiName = GBUtil.getGBAIPath(min.botId); + const gbaiName = DialogKeywords.getGBAIPath(min.botId); const browser = await GBSSR.createBrowser(null); const page = await browser.newPage(); await page.minimize(); @@ -321,19 +321,19 @@ export class SystemKeywords { let url; let localName; if (renderImage) { - localName = path.join('work', gbaiName, 'cache', `img${GBAdminService.getRndReadableIdentifier()}.png`); + localName = Path.join('work', gbaiName, 'cache', `img${GBAdminService.getRndReadableIdentifier()}.png`); await page.screenshot({ path: localName, fullPage: true }); - url = urlJoin(GBServer.globals.publicAddress, min.botId, 'cache', path.basename(localName)); - GBLogEx.info(min, `Table image generated at ${url} .`); + url = urlJoin(GBServer.globals.publicAddress, min.botId, 'cache', Path.basename(localName)); + GBLogEx.info(min, `BASIC: Table image generated at ${url} .`); } // Handles PDF generation. if (renderPDF) { - localName = path.join('work', gbaiName, 'cache', `img${GBAdminService.getRndReadableIdentifier()}.pdf`); - url = urlJoin(GBServer.globals.publicAddress, min.botId, 'cache', path.basename(localName)); + localName = Path.join('work', gbaiName, 'cache', `img${GBAdminService.getRndReadableIdentifier()}.pdf`); + url = urlJoin(GBServer.globals.publicAddress, min.botId, 'cache', Path.basename(localName)); let pdf = await page.pdf({ format: 'A4' }); - GBLogEx.info(min, `Table PDF generated at ${url} .`); + GBLogEx.info(min, `BASIC: Table PDF generated at ${url} .`); } await browser.close(); @@ -341,24 +341,7 @@ export class SystemKeywords { } public async closeHandles({ pid }) { - const { min, user } = await DialogKeywords.getProcessInfo(pid); - const memoryBeforeGC = process.memoryUsage().heapUsed / 1024 / 1024; // in MB - delete this.cachedMerge[pid]; - - // Capture memory usage before GC - GBLogEx.info(min, ``); - - setFlagsFromString('--expose_gc'); - const gc = runInNewContext('gc'); // nocommit - gc(); - - // Capture memory usage after GC - const memoryAfterGC = process.memoryUsage().heapUsed / 1024 / 1024; // in MB - GBLogEx.info( - min, - `BASIC: Closing Handles... From ${memoryBeforeGC.toFixed(2)} MB to ${memoryAfterGC.toFixed(2)} MB` - ); } public async asPDF({ pid, data }) { @@ -376,7 +359,7 @@ export class SystemKeywords { let { baseUrl, client } = await GBDeployer.internalGetDriveClient(min); const botId = min.instance.botId; - const gbaiName = GBUtil.getGBAIPath(min.botId); + const gbaiName = DialogKeywords.getGBAIPath(min.botId); const tmpDocx = urlJoin(gbaiName, `${botId}.gbdrive`, `tmp${GBAdminService.getRndReadableIdentifier()}.docx`); // Performs the conversion operation. @@ -409,12 +392,12 @@ export class SystemKeywords { // Prepare an image on cache and return the GBFILE information. - const localName = path.join('work', gbaiName, 'cache', `img${GBAdminService.getRndReadableIdentifier()}.png`); + const localName = Path.join('work', gbaiName, 'cache', `img${GBAdminService.getRndReadableIdentifier()}.png`); if (pngPages.length > 0) { const buffer = pngPages[0].content; - const url = urlJoin(GBServer.globals.publicAddress, min.botId, 'cache', path.basename(localName)); + const url = urlJoin(GBServer.globals.publicAddress, min.botId, 'cache', Path.basename(localName)); - await fs.writeFile(localName, buffer, { encoding: null }); + Fs.writeFileSync(localName, buffer, { encoding: null }); return { localName: localName, url: url, data: buffer }; } @@ -488,7 +471,7 @@ export class SystemKeywords { public async wait({ pid, seconds }) { const { min, user } = await DialogKeywords.getProcessInfo(pid); // tslint:disable-next-line no-string-based-set-timeout - GBLogEx.info(min, `WAIT for ${seconds} second(s).`); + GBLogEx.info(min, `BASIC: WAIT for ${seconds} second(s).`); const timeout = async (ms: number) => new Promise(resolve => setTimeout(resolve, ms)); await timeout(seconds * 1000); } @@ -501,7 +484,7 @@ export class SystemKeywords { */ public async talkTo({ pid, mobile, message }) { const { min, user } = await DialogKeywords.getProcessInfo(pid); - GBLogEx.info(min, `Talking '${message}' to a specific user (${mobile}) (TALK TO). `); + GBLogEx.info(min, `BASIC: Talking '${message}' to a specific user (${mobile}) (TALK TO). `); await min.conversationalService.sendMarkdownToMobile(min, null, mobile, message); } @@ -527,7 +510,7 @@ export class SystemKeywords { */ public async sendSmsTo({ pid, mobile, message }) { const { min, user } = await DialogKeywords.getProcessInfo(pid); - GBLogEx.info(min, `SEND SMS TO '${mobile}', message '${message}'.`); + GBLogEx.info(min, `BASIC: SEND SMS TO '${mobile}', message '${message}'.`); await min.conversationalService.sendSms(min, mobile, message); } @@ -546,7 +529,7 @@ export class SystemKeywords { // Handles calls for HTML stuff if (handle && WebAutomationServices.isSelector(file)) { - GBLogEx.info(min, `Web automation SET ${file}' to '${address}' . `); + GBLogEx.info(min, `BASIC: Web automation SET ${file}' to '${address}' . `); await new WebAutomationServices().setElementText({ pid, handle, selector: file, text: address }); return; @@ -564,13 +547,13 @@ export class SystemKeywords { // Handles calls for BASIC persistence on sheet files. - GBLogEx.info(min, `Defining '${address}' in '${file}' to '${value}' (SET). `); + GBLogEx.info(min, `BASIC: Defining '${address}' in '${file}' to '${value}' (SET). `); let { baseUrl, client } = await GBDeployer.internalGetDriveClient(min); const botId = min.instance.botId; - const packagePath = GBUtil.getGBAIPath(botId, 'gbdata'); - let document = await this.internalGetDocument(client, baseUrl, packagePath, file); + const path = DialogKeywords.getGBAIPath(botId, 'gbdata'); + let document = await this.internalGetDocument(client, baseUrl, path, file); let sheets = await client.api(`${baseUrl}/drive/items/${document.id}/workbook/worksheets`).get(); let body = { values: [[]] }; @@ -651,10 +634,10 @@ export class SystemKeywords { */ public async saveFile({ pid, file, data }): Promise { const { min, user } = await DialogKeywords.getProcessInfo(pid); - GBLogEx.info(min, `Saving '${file}' (SAVE file).`); + GBLogEx.info(min, `BASIC: Saving '${file}' (SAVE file).`); let { baseUrl, client } = await GBDeployer.internalGetDriveClient(min); const botId = min.instance.botId; - const packagePath = GBUtil.getGBAIPath(min.botId, `gbdrive`); + const path = DialogKeywords.getGBAIPath(min.botId, `gbdrive`); // Checks if it is a GB FILE object. @@ -664,12 +647,12 @@ export class SystemKeywords { try { data = GBServer.globals.files[data].data; // TODO - await client.api(`${baseUrl}/drive/root:/${packagePath}/${file}:/content`).put(data); + await client.api(`${baseUrl}/drive/root:/${path}/${file}:/content`).put(data); } catch (error) { if (error.code === 'itemNotFound') { - GBLogEx.info(min, `BASIC source file not found: ${file}.`); + GBLogEx.info(min, `BASIC: BASIC source file not found: ${file}.`); } else if (error.code === 'nameAlreadyExists') { - GBLogEx.info(min, `BASIC destination file already exists: ${file}.`); + GBLogEx.info(min, `BASIC: BASIC destination file already exists: ${file}.`); } throw error; } @@ -679,60 +662,73 @@ export class SystemKeywords { * Saves the content of variable into BLOB storage. * * MSFT uses MD5, see https://katelynsills.com/law/the-curious-case-of-md5. - * + * * @exaple UPLOAD file. * */ public async uploadFile({ pid, file }): Promise { const { min, user } = await DialogKeywords.getProcessInfo(pid); - GBLogEx.info(min, `UPLOAD '${file.name}' ${file.size} bytes.`); + GBLogEx.info(min, `BASIC: UPLOAD '${file.name}' ${file.size} bytes.`); // Checks if it is a GB FILE object. const accountName = min.core.getParam(min.instance, 'Blob Account'); const accountKey = min.core.getParam(min.instance, 'Blob Key'); - const sharedKeyCredential = new StorageSharedKeyCredential(accountName, accountKey); + const sharedKeyCredential = new StorageSharedKeyCredential( + accountName, + accountKey + ); const baseUrl = `https://${accountName}.blob.core.windows.net`; - const blobServiceClient = new BlobServiceClient(`${baseUrl}`, sharedKeyCredential); + const blobServiceClient = new BlobServiceClient( + `${baseUrl}`, + sharedKeyCredential + ); + // It is an SharePoint object that needs to be downloaded. - const gbaiName = GBUtil.getGBAIPath(min.botId); - const localName = path.join('work', gbaiName, 'cache', `${GBAdminService.getRndReadableIdentifier()}.tmp`); + const gbaiName = DialogKeywords.getGBAIPath(min.botId); + const localName = Path.join('work', gbaiName, 'cache', `${GBAdminService.getRndReadableIdentifier()}.tmp`); const url = file['url']; const response = await fetch(url); // Writes it to disk and calculate hash. const data = await response.arrayBuffer(); - await fs.writeFile(localName, Buffer.from(data), { encoding: null }); + Fs.writeFileSync(localName, Buffer.from(data), { encoding: null }); const hash = new Uint8Array(md5.array(data)); // Performs uploading passing local hash. const container = blobServiceClient.getContainerClient(accountName); const blockBlobClient: BlockBlobClient = container.getBlockBlobClient(file.path); - const res = await blockBlobClient.uploadFile(localName, { - blobHTTPHeaders: { - blobContentMD5: hash - } - }); + const res = await blockBlobClient.uploadFile(localName, + { + blobHTTPHeaders: { + blobContentMD5: hash + } + }); // If upload is OK including hash check, removes the temporary file. - if (res._response.status === 201 && new Uint8Array(res.contentMD5).toString() === hash.toString()) { - fs.rm(localName); + if (res._response.status === 201 && + (new Uint8Array(res.contentMD5)).toString() === hash.toString()) { + Fs.rmSync(localName); file['md5'] = hash.toString(); return file; - } else { - GBLog.error(`BLOB HTTP ${res.errorCode} ${res._response.status} .`); + } + else { + GBLog.error(`BASIC: BLOB HTTP ${res.errorCode} ${res._response.status} .`); + } + } + /** * Takes note inside a notes.xlsx of .gbdata. * @@ -740,33 +736,28 @@ export class SystemKeywords { * */ public async note({ pid, text }): Promise { - await this.save({ pid, file: 'Notes.xlsx', args: [text] }); + await this.save({ pid, file: "Notes.xlsx", args: [text] }); } /** - * Saves variables to storage, not a worksheet. - * - */ + * Saves variables to storage, not a worksheet. + * + */ public async saveToStorageBatch({ pid, table, rows }): Promise { const { min } = await DialogKeywords.getProcessInfo(pid); - - if (!Array.isArray(rows) && typeof rows === 'object' && rows !== null) { - rows = [rows]; - } + GBLogEx.info(min, `BASIC: Saving batch to storage '${table}' (SAVE).`); if (rows.length === 0) { + return; } - const t = this.getTableFromName(table, min); - let rowsDest = []; + const definition = this.getTableFromName(table, min); + const rowsDest = []; rows.forEach(row => { - if (GBUtil.hasSubObject(row)) { - row = this.flattenJSON(row); - } - let dst = {}; + const dst = {}; let i = 0; Object.keys(row).forEach(column => { const field = column.charAt(0).toUpperCase() + column.slice(1); @@ -774,41 +765,72 @@ export class SystemKeywords { i++; }); rowsDest.push(dst); - dst = null; - row = null; }); - GBLogEx.info(min, `SAVE '${table}': ${rows.length} row(s).`); await retry( - async bail => { - await t.bulkCreate(rowsDest); - rowsDest = null; + async (bail) => { + await definition.bulkCreate(GBUtil.caseInsensitive(rowsDest)); }, { retries: 5, - onRetry: err => { - GBLog.error(`SAVE (retry): ${GBUtil.toYAML(err)}.`); - } + onRetry: (err) => { GBLog.error(`Retrying SaveToStorageBatch due to: ${err.message}.`); } } ); } + /** - * Saves variables to storage, not a worksheet. - * - * @example SAVE "Billing", columnName1, columnName2 - * - */ + * Saves variables to storage, not a worksheet. + * + * @example SAVE "Billing", columnName1, columnName2 + * + */ + public async saveToStorage({ pid, table, fieldsValues, fieldsNames }): Promise { + + if (!fieldsValues || fieldsValues.length===0 || !fieldsValues[0]){ + + return; + } + + const { min } = await DialogKeywords.getProcessInfo(pid); + GBLogEx.info(min, `BASIC: Saving to storage '${table}' (SAVE).`); + + const definition = this.getTableFromName(table, min); + + let dst = {}; + // Uppercases fields. + let i = 0; + Object.keys(fieldsValues).forEach(fieldSrc => { + const field = fieldsNames[i].charAt(0).toUpperCase() + fieldsNames[i].slice(1); + + dst[field] = fieldsValues[fieldSrc]; + + i++; + }); + + let item; + await retry( + async (bail) => { + item = await definition.create(dst); + }, + { + retries: 5, + onRetry: (err) => { GBLog.error(`Retrying SaveToStorage due to: ${err.message}.`); } + } + + ); + return item; + + } public async saveToStorageWithJSON({ pid, table, fieldsValues, fieldsNames }): Promise { const { min, user } = await DialogKeywords.getProcessInfo(pid); - GBLogEx.info(min, `Saving to storage '${table}' (SAVE).`); + GBLogEx.info(min, `BASIC: Saving to storage '${table}' (SAVE).`); const minBoot = GBServer.globals.minBoot as any; const definition = minBoot.core.sequelize.models[table]; let out = []; - let data = {}, - data2 = {}; + let data = {}, data2 = {}; // Flattern JSON to a table. @@ -831,32 +853,33 @@ export class SystemKeywords { * */ public async save({ pid, file, args }): Promise { - if (!args) { + + if (!args){ return; } const { min } = await DialogKeywords.getProcessInfo(pid); - GBLogEx.info(min, `Saving '${file}' (SAVE). Args: ${args.join(',')}.`); + GBLogEx.info(min, `BASIC: Saving '${file}' (SAVE). Args: ${args.join(',')}.`); let { baseUrl, client } = await GBDeployer.internalGetDriveClient(min); const botId = min.instance.botId; - const packagePath = GBUtil.getGBAIPath(botId, 'gbdata'); + const path = DialogKeywords.getGBAIPath(botId, 'gbdata'); let sheets; let document; try { - document = await this.internalGetDocument(client, baseUrl, packagePath, file); + document = await this.internalGetDocument(client, baseUrl, path, file); sheets = await client.api(`${baseUrl}/drive/items/${document.id}/workbook/worksheets`).get(); } catch (e) { if (e.cause === 404) { // Creates the file. - const blank = path.join(process.env.PWD, 'blank.xlsx'); - const data = await fs.readFile(blank); - await client.api(`${baseUrl}/drive/root:/${packagePath}/${file}:/content`).put(data); + const blank = Path.join(process.env.PWD, 'blank.xlsx'); + const data = Fs.readFileSync(blank); + await client.api(`${baseUrl}/drive/root:/${path}/${file}:/content`).put(data); // Tries to open again. - document = await this.internalGetDocument(client, baseUrl, packagePath, file); + document = await this.internalGetDocument(client, baseUrl, path, file); sheets = await client.api(`${baseUrl}/drive/items/${document.id}/workbook/worksheets`).get(); } else { throw e; @@ -912,28 +935,11 @@ export class SystemKeywords { body.values[0][filter ? index + 1 : index] = value; } - - await retry( - async bail => { - const result = await client - .api( - `${baseUrl}/drive/items/${document.id}/workbook/worksheets('${sheets.value[0].name}')/range(address='${address}')` - ) - .patch(body); - - if (result.status != 200) { - GBLogEx.info(min, `Waiting 5 secs. before retrying HTTP ${result.status} GET: ${result.url}`); - await GBUtil.sleep(5 * 1000); - throw new Error(`HTTP:${result.status} retry: ${result.statusText}.`); - } - }, - { - retries: 5, - onRetry: error => { - GBLog.error(`Retrying HTTP GET due to: ${error.message}.`); - } - } - ); + await client + .api( + `${baseUrl}/drive/items/${document.id}/workbook/worksheets('${sheets.value[0].name}')/range(address='${address}')` + ) + .patch(body); } /** @@ -954,13 +960,13 @@ export class SystemKeywords { qs }); } else { - GBLogEx.info(min, `GET '${addressOrHeaders}' in '${file}'.`); + GBLogEx.info(min, `BASIC: GET '${addressOrHeaders}' in '${file}'.`); let { baseUrl, client } = await GBDeployer.internalGetDriveClient(min); const botId = min.instance.botId; + (''); + const path = DialogKeywords.getGBAIPath(botId, 'gbdata'); - const packagePath = GBUtil.getGBAIPath(botId, 'gbdata'); - - let document = await this.internalGetDocument(client, baseUrl, packagePath, file); + let document = await this.internalGetDocument(client, baseUrl, path, file); // Creates workbook session that will be discarded. @@ -973,7 +979,7 @@ export class SystemKeywords { .get(); let val = results.text[0][0]; - GBLogEx.info(min, `Getting '${file}' (GET). Value= ${val}.`); + GBLogEx.info(min, `BASIC: Getting '${file}' (GET). Value= ${val}.`); return val; } } @@ -1008,7 +1014,7 @@ export class SystemKeywords { public static async getFilter(text) { let filter; - const operators = [/\<\=/, /\<\>/, /\>\=/, /\/, /\blike\b/, /\bnot in\b/, /\bin\b/, /\=/]; + const operators = [/\<\=/, /\<\>/, /\>\=/, /\/, /\bnot in\b/, /\bin\b/, /\=/]; let done = false; await CollectionUtil.asyncForEach(operators, async op => { var re = new RegExp(op, 'gi'); @@ -1034,7 +1040,9 @@ export class SystemKeywords { }); return filter; - } + }; + + /** * Finds a value or multi-value results in a tabular file. @@ -1056,7 +1064,7 @@ export class SystemKeywords { args.shift(); const botId = min.instance.botId; - const packagePath = GBUtil.getGBAIPath(botId, 'gbdata'); + const path = DialogKeywords.getGBAIPath(botId, 'gbdata'); // MAX LINES property. @@ -1068,7 +1076,7 @@ export class SystemKeywords { } else { maxLines = maxLines; } - GBLogEx.info(min, `FIND running on ${file} (maxLines: ${maxLines}) and args: ${JSON.stringify(args)}...`); + GBLogEx.info(min, `BASIC: FIND running on ${file} (maxLines: ${maxLines}) and args: ${JSON.stringify(args)}...`); // Choose data sources based on file type (HTML Table, data variable or sheet file) @@ -1085,7 +1093,7 @@ export class SystemKeywords { // Transforms table - let resultH = await container.evaluate(originalSelector => { + const resultH = await container.evaluate(originalSelector => { const rows = document.querySelectorAll(`${originalSelector} tr`); return Array.from(rows, row => { const columns = row.querySelectorAll('th'); @@ -1093,7 +1101,7 @@ export class SystemKeywords { }); }, originalSelector); - let result = await container.evaluate(originalSelector => { + const result = await container.evaluate(originalSelector => { const rows = document.querySelectorAll(`${originalSelector} tr`); return Array.from(rows, row => { const columns = row.querySelectorAll('td'); @@ -1105,50 +1113,42 @@ export class SystemKeywords { for (let i = 0; i < resultH[0].length; i++) { header[i] = resultH[0][i]; } - resultH = null; rows = []; rows[0] = header; for (let i = 1; i < result.length; i++) { rows[i] = result[i]; } - result = null; } else if (file['cTag']) { - const gbaiName = GBUtil.getGBAIPath(min.botId); - const localName = path.join('work', gbaiName, 'cache', `csv${GBAdminService.getRndReadableIdentifier()}.csv`); + const gbaiName = DialogKeywords.getGBAIPath(min.botId); + const localName = Path.join('work', gbaiName, 'cache', `csv${GBAdminService.getRndReadableIdentifier()}.csv`); const url = file['@microsoft.graph.downloadUrl']; const response = await fetch(url); - await fs.writeFile(localName, Buffer.from(await response.arrayBuffer()), { encoding: null }); + Fs.writeFileSync(localName, Buffer.from(await response.arrayBuffer()), { encoding: null }); var workbook = new Excel.Workbook(); - let worksheet = await workbook.csv.readFile(localName); + const worksheet = await workbook.csv.readFile(localName); header = []; rows = []; for (let i = 0; i < worksheet.rowCount; i++) { const r = worksheet.getRow(i + 1); let outRow = []; - let hasValue = false; for (let j = 0; j < r.cellCount; j++) { - const value = r.getCell(j + 1).text; - if (value) { - hasValue = true; - } - outRow.push(value); + outRow.push(r.getCell(j + 1).text); } if (i == 0) { header = outRow; - } else if (hasValue) { + } else { rows.push(outRow); } } - worksheet = null; } else if (file.indexOf('.xlsx') !== -1) { let { baseUrl, client } = await GBDeployer.internalGetDriveClient(min); let document; - document = await this.internalGetDocument(client, baseUrl, packagePath, file); + document = await this.internalGetDocument(client, baseUrl, path, file); // Creates workbook session that will be discarded. @@ -1162,43 +1162,22 @@ export class SystemKeywords { header = results.text[0]; rows = results.text; - } else if (file.indexOf('.csv') !== -1) { - let res; - let packagePath = GBUtil.getGBAIPath(min.botId, `gbdata`); - const csvFile = path.join(GBConfigService.get('STORAGE_LIBRARY'), packagePath, file); - const data = await fs.readFile(csvFile, 'utf8'); - const firstLine = data.split('\n')[0]; - const headers = firstLine.split(','); - const db = await csvdb(csvFile, headers, ','); - if (args[0]) { - const systemFilter = await SystemKeywords.getFilter(args[0]); - let filter = {}; - filter[systemFilter.columnName] = systemFilter.value; - res = await db.get(filter); - } else { - res = await db.get(); - } - - return res.length > 1 ? res : res[0]; } else { const t = this.getTableFromName(file, min); if (!t) { throw new Error(`TABLE ${file} not found. Check TABLE keywords.`); } - let res; - if (args[0]) { - const systemFilter = await SystemKeywords.getFilter(args[0]); - let filter = {}; - filter[systemFilter.columnName] = systemFilter.value; - res = await t.findAll({ where: filter }); - } else { - res = await t.findAll(); - } + + const systemFilter = await SystemKeywords.getFilter(args[0]); + let filter = {}; + filter[systemFilter.columnName] = systemFilter.value; + const res = await t.findAll({ where: filter }); return res.length > 1 ? res : res[0]; } + const contentLocale = min.core.getParam( min.instance, 'Default Content Language', @@ -1207,7 +1186,7 @@ export class SystemKeywords { // Increments columnIndex by looping until find a column match. - let filters = []; + const filters = []; let predefinedFilterTypes; if (params.filterTypes) { predefinedFilterTypes = params.filterTypes.split(','); @@ -1217,7 +1196,7 @@ export class SystemKeywords { await CollectionUtil.asyncForEach(args, async arg => { const filter = await SystemKeywords.getFilter(arg); if (!filter) { - throw new Error(`FIND filter has an error: ${arg} check this and publish .gbdialog again.`); + throw new Error(`BASIC: FIND filter has an error: ${arg} check this and publish .gbdialog again.`); } let columnIndex = 0; @@ -1369,48 +1348,34 @@ export class SystemKeywords { if (filterAcceptCount === filters.length) { rowCount++; let row = {}; - let xlRow = rows[foundIndex]; - let hasValue = false; + const xlRow = rows[foundIndex]; for (let colIndex = 0; colIndex < xlRow.length; colIndex++) { - const propertyName = header[colIndex].trim(); - + const propertyName = header[colIndex]; let value = xlRow[colIndex]; - if (value) { - hasValue = true; - value = value.trim(); - if (value.charAt(0) === "'") { - if (await this.isValidDate({ pid, dt: value.substr(1) })) { - value = value.substr(1); - } + if (value && value.charAt(0) === "'") { + if (await this.isValidDate({ pid, dt: value.substr(1) })) { + value = value.substr(1); } } - row[propertyName] = value; - value = null; } - xlRow = null; row['ordinal'] = rowCount; row['line'] = foundIndex + 1; - if (hasValue) { - table.push(row); - } - row = null; + + table.push(row); } } const outputArray = await DialogKeywords.getOption({ pid, name: 'output' }); - filters = null; - header = null; - rows = null; if (table.length === 1) { - GBLogEx.info(min, `FIND returned no results (zero rows).`); + GBLogEx.info(min, `BASIC: FIND returned no results (zero rows).`); return null; } else if (table.length === 2 && !outputArray) { - GBLogEx.info(min, `FIND returned single result: ${table[0]}.`); + GBLogEx.info(min, `BASIC: FIND returned single result: ${table[0]}.`); return table[1]; } else { - GBLogEx.info(min, `FIND returned multiple results (Count): ${table.length - 1}.`); + GBLogEx.info(min, `BASIC: FIND returned multiple results (Count): ${table.length - 1}.`); return table; } } @@ -1480,24 +1445,19 @@ export class SystemKeywords { } public async setSystemPrompt({ pid, text }) { + let { min, user } = await DialogKeywords.getProcessInfo(pid); if (user) { ChatServices.userSystemPrompt[user.userSystemId] = text; - const packagePath = GBUtil.getGBAIPath(min.botId); - const systemPromptFile = urlJoin( - process.cwd(), - 'work', - packagePath, - 'users', - user.userSystemId, - 'systemPrompt.txt' - ); - await fs.writeFile(systemPromptFile, text); + const path = DialogKeywords.getGBAIPath(min.botId); + const systemPromptFile = urlJoin(process.cwd(), 'work', path, 'users',user.userSystemId, 'systemPrompt.txt'); + Fs.writeFileSync(systemPromptFile, text); } } + /** * Creates a folder in the bot instance drive. * @@ -1508,7 +1468,7 @@ export class SystemKeywords { const { min, user, params } = await DialogKeywords.getProcessInfo(pid); let { baseUrl, client } = await GBDeployer.internalGetDriveClient(min); const botId = min.instance.botId; - let packagePath = GBUtil.getGBAIPath(min.botId, `gbdrive`); + let path = DialogKeywords.getGBAIPath(min.botId, `gbdrive`); // Extracts each part of path to call create folder to each // one of them. @@ -1529,18 +1489,18 @@ export class SystemKeywords { }; try { - lastFolder = await client.api(`${baseUrl}/drive/root:/${packagePath}:/children`).post(body); + lastFolder = await client.api(`${baseUrl}/drive/root:/${path}:/children`).post(body); } catch (error) { if (error.code !== 'nameAlreadyExists') { throw error; } else { - lastFolder = await client.api(`${baseUrl}/drive/root:/${urlJoin(packagePath, item)}`).get(); + lastFolder = await client.api(`${baseUrl}/drive/root:/${urlJoin(path, item)}`).get(); } } // Increments path to the next child be created. - packagePath = urlJoin(packagePath, item); + path = urlJoin(path, item); }); return lastFolder; } @@ -1557,8 +1517,8 @@ export class SystemKeywords { public async shareFolder({ pid, folder, email, message }) { const { min, user, params } = await DialogKeywords.getProcessInfo(pid); let { baseUrl, client } = await GBDeployer.internalGetDriveClient(min); - const packagePath = GBUtil.getGBAIPath(min.botId, `gbdrive`); - const root = urlJoin(packagePath, folder); + const path = DialogKeywords.getGBAIPath(min.botId, `gbdrive`); + const root = urlJoin(path, folder); const src = await client.api(`${baseUrl}/drive/root:/${root}`).get(); @@ -1575,16 +1535,16 @@ export class SystemKeywords { await client.api(`https://graph.microsoft.com/v1.0/drives/${driveId}/items/${itemId}/invite`).post(body); } - public async internalCreateDocument(min, filePath, content) { - GBLogEx.info(min, `CREATE DOCUMENT '${filePath}...'`); + public async internalCreateDocument(min, path, content) { + GBLogEx.info(min, `BASIC: CREATE DOCUMENT '${path}...'`); let { baseUrl, client } = await GBDeployer.internalGetDriveClient(min); - const gbaiName = GBUtil.getGBAIPath(min.botId); - const tmpDocx = urlJoin(gbaiName, filePath); + const gbaiName = DialogKeywords.getGBAIPath(min.botId); + const tmpDocx = urlJoin(gbaiName, path); // Templates a blank {content} tag inside the blank.docx. - const blank = path.join(process.env.PWD, 'blank.docx'); - let buf = await fs.readFile(blank); + const blank = Path.join(process.env.PWD, 'blank.docx'); + let buf = Fs.readFileSync(blank); let zip = new PizZip(buf); let doc = new Docxtemplater(); doc.setOptions({ linebreaks: true }); @@ -1597,9 +1557,9 @@ export class SystemKeywords { await client.api(`${baseUrl}/drive/root:/${tmpDocx}:/content`).put(buf); } - public async createDocument({ pid, packagePath, content }) { + public async createDocument({ pid, path, content }) { const { min, user, params } = await DialogKeywords.getProcessInfo(pid); - this.internalCreateDocument(min, packagePath, content); + this.internalCreateDocument(min, path, content); } /** @@ -1612,7 +1572,7 @@ export class SystemKeywords { */ public async copyFile({ pid, src, dest }) { const { min, user, params } = await DialogKeywords.getProcessInfo(pid); - GBLogEx.info(min, `BEGINING COPY '${src}' to '${dest}'`); + GBLogEx.info(min, `BASIC: BEGINING COPY '${src}' to '${dest}'`); let { baseUrl, client } = await GBDeployer.internalGetDriveClient(min); const botId = min.instance.botId; @@ -1623,7 +1583,7 @@ export class SystemKeywords { // Determines full path at source and destination. - const root = GBUtil.getGBAIPath(botId, 'gbdrive'); + const root = DialogKeywords.getGBAIPath(botId, 'gbdrive'); const srcPath = urlJoin(root, src); const dstPath = urlJoin(root, dest); @@ -1632,7 +1592,7 @@ export class SystemKeywords { let folder; if (dest.indexOf('/') !== -1) { - const pathOnly = path.dirname(dest); + const pathOnly = Path.dirname(dest); folder = await this.createFolder({ pid, name: pathOnly }); } else { folder = await client.api(`${baseUrl}/drive/root:/${root}`).get(); @@ -1645,16 +1605,16 @@ export class SystemKeywords { const srcFile = await client.api(`${baseUrl}/drive/root:/${srcPath}`).get(); const destFile = { parentReference: { driveId: folder.parentReference.driveId, id: folder.id }, - name: `${path.basename(dest)}` + name: `${Path.basename(dest)}` }; const file = await client.api(`${baseUrl}/drive/items/${srcFile.id}/copy`).post(destFile); - GBLogEx.info(min, `FINISHED COPY '${src}' to '${dest}'`); + GBLogEx.info(min, `BASIC: FINISHED COPY '${src}' to '${dest}'`); return file; } catch (error) { if (error.code === 'itemNotFound') { - GBLogEx.info(min, `COPY source file not found: ${srcPath}.`); + GBLogEx.info(min, `BASIC: COPY source file not found: ${srcPath}.`); } else if (error.code === 'nameAlreadyExists') { - GBLogEx.info(min, `COPY destination file already exists: ${dstPath}.`); + GBLogEx.info(min, `BASIC: COPY destination file already exists: ${dstPath}.`); } throw error; } @@ -1672,8 +1632,9 @@ export class SystemKeywords { * */ public async convert({ pid, src, dest }) { + const { min, user, params } = await DialogKeywords.getProcessInfo(pid); - GBLogEx.info(min, `CONVERT '${src}' to '${dest}'`); + GBLogEx.info(min, `BASIC: CONVERT '${src}' to '${dest}'`); let { baseUrl, client } = await GBDeployer.internalGetDriveClient(min); const botId = min.instance.botId; @@ -1683,17 +1644,17 @@ export class SystemKeywords { dest = dest.replace(/\\/gi, '/'); // Determines full path at source and destination. - const packagePath = GBUtil.getGBAIPath(min.botId, `gbdrive`); - const root = packagePath; + const path = DialogKeywords.getGBAIPath(min.botId, `gbdrive`); + const root = path; const srcPath = urlJoin(root, src); - const dstPath = urlJoin(packagePath, dest); + const dstPath = urlJoin(path, dest); // Checks if the destination contains subfolders that // need to be created. let folder; if (dest.indexOf('/') !== -1) { - const pathOnly = path.dirname(dest); + const pathOnly = Path.dirname(dest); folder = await this.createFolder({ pid, name: pathOnly }); } else { folder = await client.api(`${baseUrl}/drive/root:/${root}`).get(); @@ -1719,9 +1680,9 @@ export class SystemKeywords { await client.api(`${baseUrl}/drive/root:/${dstPath}:/content`).put(result); } catch (error) { if (error.code === 'itemNotFound') { - GBLogEx.info(min, `CONVERT source file not found: ${srcPath}.`); + GBLogEx.info(min, `BASIC: CONVERT source file not found: ${srcPath}.`); } else if (error.code === 'nameAlreadyExists') { - GBLogEx.info(min, `CONVERT destination file already exists: ${dstPath}.`); + GBLogEx.info(min, `BASIC: CONVERT destination file already exists: ${dstPath}.`); } throw error; } @@ -1739,46 +1700,47 @@ export class SystemKeywords { private flattenJSON(obj, res = {}, separator = '_', parent = null) { for (let key in obj) { - if (!obj.hasOwnProperty(key) || typeof obj[key] === 'function') { + if (typeof obj[key] === 'function') { continue; } if (typeof obj[key] !== 'object' || obj[key] instanceof Date) { - // If not defined already, add the flattened field. - const newKey = `${parent ? parent + separator : ''}${key}`; - if (!res.hasOwnProperty(newKey)) { + + // If not defined already add the flattened field. + + const newKey = `${parent ? (parent + separator) : ''}${key}`; + if (!res[newKey]) { res[newKey] = obj[key]; - } else { + } + else { GBLog.verbose(`Ignoring duplicated field in flatten operation to storage: ${key}.`); } + } else { - // Create a temporary reference to the nested object to prevent memory leaks. - const tempObj = obj[key]; - this.flattenJSON(tempObj, res, separator, `${parent ? parent + separator : ''}${key}`); - // Clear the reference to avoid holding unnecessary objects in memory. - obj[key] = null; - } - } + obj[key] = this.flattenJSON(obj[key], res, separator, `${parent ? parent + separator : ''}${key}`); + }; + }; return res; } public async getCustomToken({ pid, tokenName }) { + const { min } = await DialogKeywords.getProcessInfo(pid); GBLogEx.info(min, `BASIC internal getCustomToken: ${tokenName}`); - const token = await (min.adminService as any)['acquireElevatedToken']( - min.instance.instanceId, - false, - tokenName, - min.core.getParam(min.instance, `${tokenName} Client ID`, null), - min.core.getParam(min.instance, `${tokenName} Client Secret`, null), - min.core.getParam(min.instance, `${tokenName} Host`, null), - min.core.getParam(min.instance, `${tokenName} Tenant`, null) - ); + const token = await (min.adminService as any)['acquireElevatedToken'] + (min.instance.instanceId, false, + tokenName, + min.core.getParam(min.instance, `${tokenName} Client ID`, null), + min.core.getParam(min.instance, `${tokenName} Client Secret`, null), + min.core.getParam(min.instance, `${tokenName} Host`, null), + min.core.getParam(min.instance, `${tokenName} Tenant`, null) + ); const expiresOn = await min.adminService.getValue(min.instance.instanceId, `${tokenName}expiresOn`); return { token, expiresOn }; } + /** * Calls any REST API by using GET HTTP method. * @@ -1792,9 +1754,10 @@ export class SystemKeywords { GBLogEx.info(min, `GET: ${url}`); let pageMode = await DialogKeywords.getOption({ pid, name: 'pageMode' }); - let continuationToken = await DialogKeywords.getOption({ pid, name: `${proc.executable}-continuationToken` }); + let continuationToken = await + DialogKeywords.getOption({ pid, name: `${proc.executable}-continuationToken` }); - if (pageMode === 'auto' && continuationToken) { + if (pageMode === "auto" && continuationToken) { headers = headers ? headers : {}; headers['MS-ContinuationToken'] = continuationToken; @@ -1815,54 +1778,60 @@ export class SystemKeywords { } let result; await retry( - async bail => { + async (bail) => { + result = await fetch(url, options); + if (result.status === 401) { - GBLogEx.info(min, `Waiting 5 secs. before retrying HTTP 401 GET: ${url}`); + GBLogEx.info(min, `Waiting 5 secs. before retrynig HTTP 401 GET: ${url}`); await GBUtil.sleep(5 * 1000); - throw new Error(`HTTP:${result.status} retry: ${result.statusText}.`); + throw new Error(`BASIC: HTTP:${result.status} retry: ${result.statusText}.`); } if (result.status === 429) { GBLogEx.info(min, `Waiting 1min. before retrying HTTP 429 GET: ${url}`); await GBUtil.sleep(60 * 1000); - throw new Error(`HTTP:${result.status} retry: ${result.statusText}.`); + throw new Error(`BASIC: HTTP:${result.status} retry: ${result.statusText}.`); } if (result.status === 503) { - GBLogEx.info(min, `Waiting 1h before retrying GET 503: ${url}`); + GBLogEx.info(min, `Waiting 1h before retrynig GET 503: ${url}`); await GBUtil.sleep(60 * 60 * 1000); - throw new Error(`HTTP:${result.status} retry: ${result.statusText}.`); + throw new Error(`BASIC: HTTP:${result.status} retry: ${result.statusText}.`); } if (result.status === 2000) { + // Token expired. await DialogKeywords.setOption({ pid, name: `${proc.executable}-continuationToken`, value: null }); bail(new Error(`Expired Token for ${url}.`)); + + } if (result.status != 200) { - throw new Error(`GET ${result.status}: ${result.statusText}.`); + throw new Error(`BASIC: GET ${result.status}: ${result.statusText}.`); } + }, { retries: 5, - onRetry: error => { - GBLog.error(`Retrying HTTP GET due to: ${error.message}.`); - } + onRetry: (err) => { GBLog.error(`Retrying HTTP GET due to: ${err.message}.`); } } ); let res = JSON.parse(await result.text()); + function process(key, value, o) { if (value === '0000-00-00') { o[key] = null; } + } function traverse(o, func) { for (var i in o) { func.apply(this, [i, o[i], o]); - if (o[i] !== null && typeof o[i] == 'object') { + if (o[i] !== null && typeof (o[i]) == "object") { traverse(o[i], func); } } @@ -1870,22 +1839,24 @@ export class SystemKeywords { traverse(res, process); - if (pageMode === 'auto') { + + if (pageMode === "auto") { + continuationToken = res.next?.headers['MS-ContinuationToken']; if (continuationToken) { GBLogEx.info(min, `Updating continuationToken for ${url}.`); await DialogKeywords.setOption({ pid, name: 'continuationToken', value: continuationToken }); } - } else { - pageMode = 'none'; + } + else { + pageMode = "none"; } - if (res) { - res['pageMode'] = pageMode; - } - result = null; + if (res) { res['pageMode'] = pageMode; } + return res; + } /** @@ -1905,19 +1876,20 @@ export class SystemKeywords { method: 'PUT' }; - if (typeof data === 'object') { + if (typeof (data) === 'object') { options['body'] = JSON.stringify(data); options.headers['Content-Type'] = 'application/json'; - } else { + } + else { options['body'] = data; } let result = await fetch(url, options); const text = await result.text(); - GBLogEx.info(min, `PUT ${url} (${data}): ${text}`); + GBLogEx.info(min, `BASIC: PUT ${url} (${data}): ${text}`); if (result.status != 200 && result.status != 201) { - throw new Error(`PUT ${result.status}: ${result.statusText}.`); + throw new Error(`BASIC: PUT ${result.status}: ${result.statusText}.`) } let res = JSON.parse(text); @@ -1940,19 +1912,20 @@ export class SystemKeywords { method: 'POST' }; - if (typeof data === 'object') { + if (typeof (data) === 'object') { options['body'] = JSON.stringify(data); options.headers['Content-Type'] = 'application/json'; - } else { + } + else { options['body'] = data; } let result = await fetch(url, options); const text = await result.text(); - GBLogEx.info(min, `POST ${url} (${data}): ${text}`); + GBLogEx.info(min, `BASIC: POST ${url} (${data}): ${text}`); if (result.status != 200 && result.status != 201) { - throw new Error(`POST ${result.status}: ${result.statusText}.`); + throw new Error(`BASIC: POST ${result.status}: ${result.statusText}.`) } let res = JSON.parse(text); @@ -1963,6 +1936,59 @@ export class SystemKeywords { return text.replace(/\D/gi, ''); } + //Create a CREAT LEAD keyword + public async createLead({ pid, templateName, data }) { + //OAuth Token Endpoint (from your Azure App Registration) + const authorityUrl = 'https://login.microsoftonline.com/'; + const msalConfig = { + auth: { + authority: authorityUrl, + clientId: process.env.DYNAMICS_CLIENTID, + clientSecret: process.env.DYNAMICS_CLIENTSECRET, + knownAuthorities: ['login.microsoftonline.com'] + } + }; + const cca = new MSAL.ConfidentialClientApplication(msalConfig); + const serverUrl = ` `; + + //function that acquires a token and passes it to DynamicsWebApi + const acquireToken = dynamicsWebApiCallback => { + cca + .acquireTokenByClientCredential({ + scopes: [`${serverUrl}/.default`] + }) + .then(response => { + //call DynamicsWebApi callback only when a token has been retrieved successfully + dynamicsWebApiCallback(response.accessToken); + }) + .catch(error => { + console.log(JSON.stringify(error)); + }); + }; + + //create DynamicsWebApi + const dynamicsWebApi = new DynamicsWebApi({ + webApiUrl: `${serverUrl}/api/data/v9.2/`, + onTokenRefresh: acquireToken + }); + //initialize a CRM entity record object + var lead = { + subject: 'Test WebAPI', + firstname: 'Test', + lastname: 'WebAPI', + jobtitle: 'Title' + }; + //call dynamicsWebApi.create function + dynamicsWebApi + .create(lead, 'leads') + .then(function (id) { + //do something with id here + }) + .catch(function (error) { + //catch error here + }); + } + /** * * Fills a .docx or .pptx with template data. @@ -1973,26 +1999,26 @@ export class SystemKeywords { public async fill({ pid, templateName, data }) { const { min, user } = await DialogKeywords.getProcessInfo(pid); const botId = min.instance.botId; - const gbaiName = GBUtil.getGBAIPath(botId, 'gbdata'); + const gbaiName = DialogKeywords.getGBAIPath(botId, 'gbdata'); let localName; // Downloads template from .gbdrive. let { baseUrl, client } = await GBDeployer.internalGetDriveClient(min); - let packagePath = '/' + urlJoin(gbaiName, `${botId}.gbdrive`); - let template = await this.internalGetDocument(client, baseUrl, packagePath, templateName); + let path = '/' + urlJoin(gbaiName, `${botId}.gbdrive`); + let template = await this.internalGetDocument(client, baseUrl, path, templateName); let url = template['@microsoft.graph.downloadUrl']; const res = await fetch(url); let buf: any = Buffer.from(await res.arrayBuffer()); - localName = path.join('work', gbaiName, 'cache', `tmp${GBAdminService.getRndReadableIdentifier()}.docx`); - await fs.writeFile(localName, buf, { encoding: null }); + localName = Path.join('work', gbaiName, 'cache', `tmp${GBAdminService.getRndReadableIdentifier()}.docx`); + Fs.writeFileSync(localName, buf, { encoding: null }); // Replace image path on all elements of data. const images = []; let index = 0; - packagePath = path.join(gbaiName, 'cache', `tmp${GBAdminService.getRndReadableIdentifier()}.docx`); - url = urlJoin(GBServer.globals.publicAddress, min.botId, 'cache', path.basename(localName)); + path = Path.join(gbaiName, 'cache', `tmp${GBAdminService.getRndReadableIdentifier()}.docx`); + url = urlJoin(GBServer.globals.publicAddress, min.botId, 'cache', Path.basename(localName)); const traverseDataToInjectImageUrl = async o => { for (var i in o) { @@ -2007,15 +2033,15 @@ export class SystemKeywords { if (value.endsWith && value.endsWith(`.${kind}`)) { const { baseUrl, client } = await GBDeployer.internalGetDriveClient(min); - packagePath = urlJoin(gbaiName, `${botId}.gbdrive`); + path = urlJoin(gbaiName, `${botId}.gbdrive`); if (value.indexOf('/') !== -1) { - packagePath = '/' + urlJoin(packagePath, path.dirname(value)); - value = path.basename(value); + path = '/' + urlJoin(path, Path.dirname(value)); + value = Path.basename(value); } - const ref = await this.internalGetDocument(client, baseUrl, packagePath, value); + const ref = await this.internalGetDocument(client, baseUrl, path, value); let url = ref['@microsoft.graph.downloadUrl']; - const imageName = path.join( + const imageName = Path.join( 'work', gbaiName, 'cache', @@ -2023,19 +2049,16 @@ export class SystemKeywords { ); const response = await fetch(url); const buf = Buffer.from(await response.arrayBuffer()); - await fs.writeFile(imageName, buf, { encoding: null }); + Fs.writeFileSync(imageName, buf, { encoding: null }); const getNormalSize = ({ width, height, orientation }) => { return (orientation || 0) >= 5 ? [height, width] : [width, height]; }; - // TODO: sharp. const metadata = await sharp(buf).metadata(); - const size = getNormalSize({ - width: 400, - height: 400, - orientation: '0' - }); - url = urlJoin(GBServer.globals.publicAddress, min.botId, 'cache', path.basename(imageName)); + const metadata = await sharp(buf).metadata(); + const size = getNormalSize({width:metadata['width'], + height:metadata['height'], orientation: metadata['orientation'] }); + url = urlJoin(GBServer.globals.publicAddress, min.botId, 'cache', Path.basename(imageName)); images[index++] = { url: url, size: size, buf: buf }; } } @@ -2072,7 +2095,7 @@ export class SystemKeywords { doc.setData(data).render(); buf = doc.getZip().generate({ type: 'nodebuffer', compression: 'DEFLATE' }); - await fs.writeFile(localName, buf, { encoding: null }); + Fs.writeFileSync(localName, buf, { encoding: null }); return { localName: localName, url: url, data: buf }; } @@ -2129,6 +2152,7 @@ export class SystemKeywords { } else { return minBoot.core.sequelize.models[file]; } + } private cachedMerge: any = {}; @@ -2145,13 +2169,25 @@ export class SystemKeywords { public async merge({ pid, file, data, key1, key2 }): Promise { const { min, user, params } = await DialogKeywords.getProcessInfo(pid); if (!data || data.length === 0) { - GBLog.verbose(`MERGE running on ${file}: NO DATA.`); + GBLog.verbose(`BASIC: MERGE running on ${file}: NO DATA.`); return data; } - GBLogEx.info(min, `MERGE running on ${file} and key1: ${key1}, key2: ${key2}...`); + + GBLogEx.info(min, `BASIC: MERGE running on ${file} and key1: ${key1}, key2: ${key2}...`); if (!this.cachedMerge[pid]) { - this.cachedMerge[pid] = { file: {} }; + this.cachedMerge[pid] = { file: {} } + } + + + // Check if is a tree or flat object. + + const hasSubObject = (t) => { + for (var key in t) { + if (!t.hasOwnProperty(key)) continue; + if (typeof t[key] === "object") return true; + } + return false; } // MAX LINES property. @@ -2167,14 +2203,14 @@ export class SystemKeywords { let storage = file.indexOf('.xlsx') === -1; let results; - let header = [], - rows = []; + let header = [], rows = []; let t; let fieldsNames = []; let fieldsSizes = []; let fieldsValuesList = []; if (storage) { + t = this.getTableFromName(file, min); if (!t) { @@ -2183,11 +2219,11 @@ export class SystemKeywords { Object.keys(t.fieldRawAttributesMap).forEach(e => { fieldsNames.push(e); - }); + }) Object.keys(t.fieldRawAttributesMap).forEach(e => { fieldsSizes.push(t.fieldRawAttributesMap[e].size); - }); + }) header = Object.keys(t.fieldRawAttributesMap); @@ -2196,28 +2232,44 @@ export class SystemKeywords { if (!this.cachedMerge[pid][file]) { await retry( - async bail => { - rows = await t.findAll(); - GBLogEx.info(min, `MERGE cached: ${rows.length} row(s)...`); + async (bail) => { + let page = 0, pageSize = 1000; + let count = 0; + + while (page === 0 || count === pageSize) { + const paged = await t.findAll( + { offset: page * pageSize, limit: pageSize, subquery: false, where: {} } + ); + rows = [...paged, ...rows]; + page++; + count = paged.length; + + GBLogEx.info(min, `BASIC: MERGE cached: ${rows.length} from page: ${page}.`); + + } }, { retries: 5, - onRetry: error => { - GBLog.error(`MERGE: Retrying SELECT ALL on table: ${error.message}.`); - } + onRetry: (err) => { GBLog.error(`MERGE: Retrying SELECT ALL on table: ${err.message}.`); } } ); - } else { + + + + } + else { rows = this.cachedMerge[pid][file]; } + } else { + const botId = min.instance.botId; - const packagePath = GBUtil.getGBAIPath(botId, 'gbdata'); + const path = DialogKeywords.getGBAIPath(botId, 'gbdata'); let { baseUrl, client } = await GBDeployer.internalGetDriveClient(min); let document; - document = await this.internalGetDocument(client, baseUrl, packagePath, file); + document = await this.internalGetDocument(client, baseUrl, path, file); // Creates workbook session that will be discarded. @@ -2231,7 +2283,6 @@ export class SystemKeywords { header = results.text[0]; rows = results.text; - results = null; } let table = []; @@ -2242,10 +2293,11 @@ export class SystemKeywords { if (!storage || !this.cachedMerge[pid][file]) { for (; foundIndex < rows.length; foundIndex++) { let row = {}; - let tmpRow = rows[foundIndex]; + const tmpRow = rows[foundIndex]; row = tmpRow.dataValues ? tmpRow.dataValues : tmpRow; for (let colIndex = 0; colIndex < tmpRow.length; colIndex++) { + const propertyName = header[colIndex]; let value = tmpRow[colIndex]; @@ -2256,18 +2308,16 @@ export class SystemKeywords { } row[propertyName] = value; - value = null; } row['line'] = foundIndex + 1; table.push(row); - row = null; - tmpRow = null; } if (storage) { this.cachedMerge[pid][file] = table; } - } else { + } + else { table = this.cachedMerge[pid][file]; } @@ -2282,17 +2332,17 @@ export class SystemKeywords { } let updates = 0, - adds = 0, - skipped = 0; + adds = 0, skipped = 0; // Scans all items in incoming data. for (let i = 0; i < data.length; i++) { + // Scans all sheet lines and compare keys. let row = data[i]; - if (GBUtil.hasSubObject(row)) { + if (hasSubObject(row)) { row = this.flattenJSON(row); } @@ -2300,6 +2350,7 @@ export class SystemKeywords { let key1Value; let key1Original = key1; if (key1Index) { + key1 = key1.charAt(0).toLowerCase() + key1.slice(1); Object.keys(row).forEach(e => { @@ -2308,24 +2359,25 @@ export class SystemKeywords { } }); - let foundRow = key1Index[key1Value]; + const foundRow = key1Index[key1Value]; if (foundRow) { found = table[foundRow[0]]; } - foundRow = null; } if (found) { let merge = false; for (let j = 0; j < header.length; j++) { + const columnName = header[j]; let columnNameFound = false; let value; Object.keys(row).forEach(e => { + if (columnName.toLowerCase() === e.toLowerCase()) { value = row[e]; - if (typeof value === 'string') { + if (typeof (value) === 'string') { value = value.substring(0, fieldsSizes[j]); } @@ -2333,9 +2385,7 @@ export class SystemKeywords { } }); - if (value === undefined) { - value = null; - } + if (value === undefined) { value = null; } let valueFound; Object.keys(found).forEach(e => { @@ -2345,25 +2395,27 @@ export class SystemKeywords { }); const equals = - typeof value === 'string' && typeof valueFound === 'string' - ? value?.toLowerCase() != valueFound?.toLowerCase() - : value != valueFound; + typeof (value) === 'string' && typeof (valueFound) === 'string' ? + value?.toLowerCase() != valueFound?.toLowerCase() : + value != valueFound; if (equals && columnNameFound) { + if (storage) { + let obj = {}; obj[columnName] = value; let criteria = {}; criteria[key1Original] = key1Value; await retry( - async bail => { + async (bail) => { await t.update(obj, { where: criteria }); - }, - { retries: 5 } + }, { retries: 5 } ); - obj = null; + } else { + const cell = `${this.numberToLetters(j)}${i + 1}`; const address = `${cell}:${cell}`; @@ -2371,18 +2423,22 @@ export class SystemKeywords { } merge = true; } + } merge ? updates++ : skipped++; + } else { + let fieldsValues = []; for (let j = 0; j < fieldsNames.length; j++) { let add = false; Object.keys(row).forEach(p => { if (fieldsNames[j].toLowerCase() === p.toLowerCase()) { + let value = row[p]; - if (typeof value === 'string') { + if (typeof (value) === 'string') { value = value.substring(0, fieldsSizes[j]); } @@ -2396,9 +2452,11 @@ export class SystemKeywords { } if (storage) { + + // Uppercases fields. - let dst = {}; + const dst = {}; let i = 0; Object.keys(fieldsValues).forEach(fieldSrc => { const name = fieldsNames[i]; @@ -2409,15 +2467,13 @@ export class SystemKeywords { fieldsValuesList.push(dst); this.cachedMerge[pid][file].push(dst); - dst = null; - } else { - await this.save({ pid, file, args: fieldsValues }); } - fieldsValues = null; + else { + await this.save({ pid, file, args: fieldsValues }); + + } adds++; } - row = null; - found = null; } // In case of storage, persist to DB in batch. @@ -2425,49 +2481,37 @@ export class SystemKeywords { if (fieldsValuesList.length) { await this.saveToStorageBatch({ pid, table: file, rows: fieldsValuesList }); } - key1Index = null; - key2Index = null; - table = null; - fieldsValuesList = null; - rows = null; - header = null; - results = null; - t = null; - - GBLogEx.info(min, `MERGE results: adds:${adds}, updates:${updates} , skipped: ${skipped}.`); - return { title: file, adds, updates, skipped }; + GBLogEx.info(min, `BASIC: MERGE results: adds:${adds}, updates:${updates} , skipped: ${skipped}.`); + return { title:file, adds, updates, skipped }; } /** - * Publishs a post to BlueSky . + * Publishs a tweet to X. * - * BlueSky "My BlueSky text" + * TWEET "My tweet text" */ - public async postToBlueSky({ pid, text }) { + public async tweet({ pid, text }) { const { min, user } = await DialogKeywords.getProcessInfo(pid); - const consumer_key = min.core.getParam(min.instance, 'BlueSky Consumer Key', null); - const consumer_secret = min.core.getParam(min.instance, 'BlueSky Consumer Key Secret', null); - const access_token_key = min.core.getParam(min.instance, 'BlueSky Access Token', null); - const access_token_secret = min.core.getParam(min.instance, 'BlueSky Access Token Secret', null); + const consumer_key = min.core.getParam(min.instance, 'Twitter Consumer Key', null); + const consumer_secret = min.core.getParam(min.instance, 'Twitter Consumer Key Secret', null); + const access_token_key = min.core.getParam(min.instance, 'Twitter Access Token', null); + const access_token_secret = min.core.getParam(min.instance, 'Twitter Access Token Secret', null); if (!consumer_key || !consumer_secret || !access_token_key || !access_token_secret) { - GBLogEx.info(min, 'BlueSky not configured in .gbot.'); + GBLogEx.info(min, 'Twitter not configured in .gbot.'); } - throw new Error('Not implemented yet.'); - GBLogEx.info(min, `BlueSky Automation: ${text}.`); - } + const client = new TwitterApi({ + appKey: consumer_key, + appSecret: consumer_secret, + accessToken: access_token_key, + accessSecret: access_token_secret + }); - - /** - */ - public async answer({ pid, text }) { - const { min, user } = await DialogKeywords.getProcessInfo(pid); - const answer = await ChatServices.answerByLLM(pid, min, user, text) - GBLogEx.info(min, `ANSWER ${text} TO ${answer}`); - return answer.answer; + await client.v2.tweet(text); + GBLogEx.info(min, `Twitter Automation: ${text}.`); } /** @@ -2477,9 +2521,9 @@ export class SystemKeywords { */ public async rewrite({ pid, text }) { const { min, user } = await DialogKeywords.getProcessInfo(pid); - const prompt = `Rewrite this sentence in a better way: ${text}`; - const answer = await ChatServices.invokeLLM(min, prompt); - GBLogEx.info(min, `REWRITE ${text} TO ${answer}`); + const prompt = `rewrite this sentence in a better way: ${text}`; + const answer = await ChatServices.continue(min, prompt, 0); + GBLogEx.info(min, `BASIC: REWRITE ${text} TO ${answer}`); return answer; } @@ -2492,7 +2536,7 @@ export class SystemKeywords { public async pay({ pid, orderId, customerName, ammount }) { const { min, user } = await DialogKeywords.getProcessInfo(pid); - const gbaiName = GBUtil.getGBAIPath(min.botId); + const gbaiName = DialogKeywords.getGBAIPath(min.botId); const merchantId = min.core.getParam(min.instance, 'Merchant ID', null); const merchantKey = min.core.getParam(min.instance, 'Merchant Key', null); @@ -2539,14 +2583,14 @@ export class SystemKeywords { // Prepare an image on cache and return the GBFILE information. const buf = Buffer.from(data.Payment.QrCodeBase64Image, 'base64'); - const localName = path.join('work', gbaiName, 'cache', `qr${GBAdminService.getRndReadableIdentifier()}.png`); - await fs.writeFile(localName, buf, { encoding: null }); - const url = urlJoin(GBServer.globals.publicAddress, min.botId, 'cache', path.basename(localName)); + const localName = Path.join('work', gbaiName, 'cache', `qr${GBAdminService.getRndReadableIdentifier()}.png`); + Fs.writeFileSync(localName, buf, { encoding: null }); + const url = urlJoin(GBServer.globals.publicAddress, min.botId, 'cache', Path.basename(localName)); GBLogEx.info(min, `GBPay: ${data.MerchantOrderId} OK: ${url}.`); return { - name: path.basename(localName), + name: Path.basename(localName), localName: localName, url: url, data: buf, @@ -2566,13 +2610,13 @@ export class SystemKeywords { private async internalAutoSave({ min, handle }) { const file = GBServer.globals.files[handle]; - GBLogEx.info(min, `Auto saving '${file.filename}' (SAVE file).`); + GBLogEx.info(min, `BASIC: Auto saving '${file.filename}' (SAVE file).`); let { baseUrl, client } = await GBDeployer.internalGetDriveClient(min); - const packagePath = GBUtil.getGBAIPath(min.botId, `gbdrive`); + const path = DialogKeywords.getGBAIPath(min.botId, `gbdrive`); const fileName = file.url ? file.url : file.name; const contentType = mime.lookup(fileName); - const ext = path.extname(fileName).substring(1); + const ext = Path.extname(fileName).substring(1); const kind = await this.getExtensionInfo(ext); let d = new Date(), @@ -2582,7 +2626,7 @@ export class SystemKeywords { const today = [day, month, year].join('-'); const result = await client - .api(`${baseUrl}/drive/root:/${packagePath}/${today}/${kind.category}/${fileName}:/content`) + .api(`${baseUrl}/drive/root:/${path}/${today}/${kind.category}/${fileName}:/content`) .put(file.data); return { contentType, ext, kind, category: kind['category'] }; @@ -2590,49 +2634,49 @@ export class SystemKeywords { public async deleteFromStorage({ pid, table, criteria }) { const { min } = await DialogKeywords.getProcessInfo(pid); - GBLogEx.info(min, `DELETE '${table}' where ${criteria}.`); + GBLogEx.info(min, `BASIC: DELETE (storage) '${table}' where ${criteria}.`); const definition = this.getTableFromName(table, min); const filter = await SystemKeywords.getFilter(criteria); await retry( - async bail => { + async (bail) => { const options = { where: {} }; options.where = {}; options.where[filter['columnName']] = filter['value']; await definition.destroy(options); + }, { retries: 5, - onRetry: error => { - GBLog.error(`Retrying deleteFromStorage due to: ${error.message}.`); - } + onRetry: (err) => { GBLog.error(`Retrying SaveToStorageBatch due to: ${err.message}.`); } } ); + } public async deleteFile({ pid, file }) { const { min } = await DialogKeywords.getProcessInfo(pid); - GBLogEx.info(min, `DELETE '${file.name}'.`); + GBLogEx.info(min, `BASIC: DELETE '${file.name}'.`); let { baseUrl, client } = await GBDeployer.internalGetDriveClient(min); - const gbaiPath = GBUtil.getGBAIPath(min.botId); + const gbaiPath = DialogKeywords.getGBAIPath(min.botId); const fileName = file.name; const contentType = mime.lookup(fileName); - const ext = path.extname(fileName).substring(1); + const ext = Path.extname(fileName).substring(1); const kind = await this.getExtensionInfo(ext); - await client.api(`${baseUrl}/drive/root:/${gbaiPath}/${file.path}`).delete(); + await client + .api(`${baseUrl}/drive/root:/${gbaiPath}/${file.path}`) + .delete(); return { contentType, ext, kind, category: kind['category'] }; } + public async getExtensionInfo(ext: any): Promise { - - // TODO: Load exts. - - let array = []; // exts.filter((v, i, a) => a[i]['extension'] === ext); + let array = exts.filter((v, i, a) => a[i]['extension'] === ext); if (array[0]) { return array[0]; } @@ -2640,9 +2684,10 @@ export class SystemKeywords { } /** - * Loads all para from tabular file Config.xlsx. - */ + * Loads all para from tabular file Config.xlsx. + */ public async dirFolder({ pid, remotePath, baseUrl = null, client = null, array = null }) { + const { min } = await DialogKeywords.getProcessInfo(pid); GBLogEx.info(min, `dirFolder: remotePath=${remotePath}, baseUrl=${baseUrl}`); @@ -2662,9 +2707,9 @@ export class SystemKeywords { // Retrieves all files in remote folder. - let packagePath = GBUtil.getGBAIPath(min.botId); - packagePath = urlJoin(packagePath, remotePath); - let url = `${baseUrl}/drive/root:/${packagePath}:/children`; + let path = DialogKeywords.getGBAIPath(min.botId); + path = urlJoin(path, remotePath); + let url = `${baseUrl}/drive/root:/${path}:/children`; const res = await client.api(url).get(); const documents = res.value; @@ -2676,10 +2721,13 @@ export class SystemKeywords { // Navigate files / directory to recurse. await CollectionUtil.asyncForEach(documents, async item => { + if (item.folder) { remotePath = urlJoin(remotePath, item.name); - array = [...array, ...(await this.dirFolder({ pid, remotePath, baseUrl, client, array }))]; + array = [...array, ... await this.dirFolder({ pid, remotePath, baseUrl, client, array })]; + } else { + // TODO: https://raw.githubusercontent.com/ishanarora04/quickxorhash/master/quickxorhash.js let obj = {}; @@ -2687,7 +2735,7 @@ export class SystemKeywords { obj['name'] = item.name; obj['size'] = item.size; obj['hash'] = item.file?.hashes?.quickXorHash; - obj['path'] = path.join(remotePath, item.name); + obj['path'] = Path.join(remotePath, item.name); obj['url'] = item['@microsoft.graph.downloadUrl']; array.push(obj); @@ -2697,198 +2745,37 @@ export class SystemKeywords { return array; } - public async log({ pid, obj }) { - const { min } = await DialogKeywords.getProcessInfo(pid); - GBLogEx.info(min, GBUtil.toYAML(obj)); - } - - public async getPdf({ pid, file }) { - const { min } = await DialogKeywords.getProcessInfo(pid); - GBLogEx.info(min, `BASIC GET (pdf): ${file}`); - try { - let data; - - if (GBConfigService.get('STORAGE_NAME')) { - let { baseUrl, client } = await GBDeployer.internalGetDriveClient(min); - const gbaiName = GBUtil.getGBAIPath(min.botId); - let packagePath = '/' + urlJoin(gbaiName, `${min.botId}.gbdrive`); - let template = await this.internalGetDocument(client, baseUrl, packagePath, file); - let url = template['@microsoft.graph.downloadUrl']; - const res = await fetch(url); - let buf: any = Buffer.from(await res.arrayBuffer()); - data = new Uint8Array(buf); - } else { - let packagePath = GBUtil.getGBAIPath(min.botId, `gbdrive`); - let filePath = path.join(GBConfigService.get('STORAGE_LIBRARY'), packagePath, file); - data = await fs.readFile(filePath); - data = new Uint8Array(data); - } - return await GBUtil.getPdfText(data); - } catch (error) { - GBLogEx.error(min, error); - return null; - } - } - - public async setContext({ pid, text }) { - const { min, user, params } = await DialogKeywords.getProcessInfo(pid); - ChatServices.userSystemPrompt[user.userSystemId] = text; - - await this.setMemoryContext({ pid, erase: true }); - } - - public async setMemoryContext({ pid, input = null, output = null, erase }) { - const { min, user, params } = await DialogKeywords.getProcessInfo(pid); - let memory; - if (erase || !ChatServices.memoryMap[user.userSystemId]) { - memory = new BufferWindowMemory({ - returnMessages: true, - memoryKey: 'chat_history', - inputKey: 'input', - k: 2 - }); - - ChatServices.memoryMap[user.userSystemId] = memory; - } else { - memory = ChatServices.memoryMap[user.userSystemId]; - } - - if (memory && input) - await memory.saveContext( - { - input: input - }, - { - output: output - } - ); - } - - public async postToFacebook({ pid, imagePath, caption, pageId }) { - // Obtendo informações do processo para logs (ajuste conforme necessário) - const { min, user, params } = await DialogKeywords.getProcessInfo(pid); - - // Leitura do arquivo de imagem - const imageBuffer = await fs.readFile(path.resolve(imagePath)); - - // Criação de um arquivo temporário para enviar - const tempFilePath = path.resolve('temp_image.jpg'); - await fs.writeFile(tempFilePath, imageBuffer); - - // Publicação da imagem - const page = new Page(pageId); - const response = await page.createFeed({ - message: caption, - attached_media: [ - { - media_fbid: tempFilePath - } - ] - }); - - // Log do resultado - GBLogEx.info(min, `Imagem publicada no Facebook: ${JSON.stringify(response)}`); - - // Limpeza do arquivo temporário - fs.unlink(tempFilePath); - } - - public async postToInstagram({ pid, username, password, imagePath, caption }) { - const { min, user, params } = await DialogKeywords.getProcessInfo(pid); - - const ig = new IgApiClient(); - ig.state.generateDevice(username); - await ig.account.login(username, password); - const imageBuffer = await fs.readFile(imagePath); - const publishResult = await ig.publish.photo({ file: imageBuffer, caption }); - - GBLogEx.info(min, `Image posted on IG: ${publishResult}`); - } - - public async setAnswerMode({ pid, mode }) { - const { min, user, params } = await DialogKeywords.getProcessInfo(pid); - - ChatServices.usersMode[user.userSystemId] = mode; - - GBLogEx.info(min, `LLM Mode (${user.userSystemId}): ${mode}`); - } - - /** - * Saves variables to storage, not a worksheet. - * - * @example SAVE "Billing", columnName1, columnName2 - * - */ - public async saveToStorage({ pid, table, fieldsValues, fieldsNames }): Promise { - if (!fieldsValues || fieldsValues.length === 0 || !fieldsValues[0]) { - return; - } + public async log({ pid, text: obj }) { const { min } = await DialogKeywords.getProcessInfo(pid); - GBLogEx.info(min, `SAVE '${table}': 1 row.`); - // Uppercase fields - const dst = {}; - fieldsNames.forEach((fieldName, index) => { - const field = fieldName.charAt(0).toUpperCase() + fieldName.slice(1); - dst[field] = fieldsValues[Object.keys(fieldsValues)[index]]; - }); + let level = 0; + const mydump = (text, level) => { - let item; - await retry( - async bail => { - if (table.endsWith('.csv')) { - // CSV handling - const packagePath = GBUtil.getGBAIPath(min.botId, 'gbdata'); - const csvFile = path.join(GBConfigService.get('STORAGE_LIBRARY'), packagePath, `${table}`); + var dumped_text = ""; - try { - // Try to read the file to get headers - const data = await fs.readFile(csvFile, 'utf8'); - const headers = data.split('\n')[0].split(','); - const db = await csvdb(csvFile, headers, ','); + var level_padding = ""; + for (var j = 0; j < level + 1; j++) level_padding += " "; - // Append new row - await db.add(dst); - item = dst; - } catch (error) { - if (error.code === 'ENOENT') { - // File doesn't exist, create it with headers and data - const headers = Object.keys(dst); - await fs.writeFile(csvFile, headers.join(',') + '\n'); - const db = await csvdb(csvFile, headers, ','); - await db.add(dst); - item = dst; - } else { - throw error; - } + if (typeof (text) == 'object') { + for (var item in text) { + var value = text[item]; + + if (typeof (value) == 'object') { + dumped_text += level_padding + "'" + item + "' ...\n"; + dumped_text += mydump(value, level + 1); + } else { + dumped_text += level_padding + "'" + item + "' => \"" + value + "\"\n"; } - } else { - const definition = this.getTableFromName(table, min); - item = await definition.create(dst); - } - }, - { - retries: 5, - onRetry: error => { - GBLog.error(`Retrying SaveToStorage due to: ${error.message}.`); } + } else { + dumped_text = text + "(" + typeof (text) + ")"; } - ); - return item; + return dumped_text; + }; + + GBLogEx.info(min, mydump(obj, level)); + } - public async showImage({ pid, file }) { - const { min, user, params, step } = await DialogKeywords.getProcessInfo(pid); - - const url = file?.url ? file.url : file; - GBLog.info(`PLAY IMAGE: ${url}.`); - - await min.kbService.showImage(min, min.conversationalService, step, url); - - await this.setMemoryContext({ pid, erase: true }); - } - - - } diff --git a/packages/basic.gblib/services/WebAutomationServices.ts b/packages/basic.gblib/services/WebAutomationServices.ts index a35e730d9..d6702e06e 100644 --- a/packages/basic.gblib/services/WebAutomationServices.ts +++ b/packages/basic.gblib/services/WebAutomationServices.ts @@ -1,29 +1,31 @@ /*****************************************************************************\ -| █████ █████ ██ █ █████ █████ ████ ██ ████ █████ █████ ███ ® | -| ██ █ ███ █ █ ██ ██ ██ ██ ██ ██ █ ██ ██ █ █ | -| ██ ███ ████ █ ██ █ ████ █████ ██████ ██ ████ █ █ █ ██ | -| ██ ██ █ █ ██ █ █ ██ ██ ██ ██ ██ ██ █ ██ ██ █ █ | -| █████ █████ █ ███ █████ ██ ██ ██ ██ █████ ████ █████ █ ███ | +| ( )_ _ | +| _ _ _ __ _ _ __ ___ ___ _ _ | ,_)(_) ___ ___ _ | +| ( '_`\ ( '__)/'_` ) /'_ `\/' _ ` _ `\ /'_` )| | | |/',__)/' v `\ /'_`\ | +| | (_) )| | ( (_| |( (_) || ( ) ( ) |( (_| || |_ | |\__,\| (˅) |( (_) ) | +| | ,__/'(_) `\__,_)`\__ |(_) (_) (_)`\__,_)`\__)(_)(____/(_) (_)`\___/' | +| | | ( )_) | | +| (_) \___/' | | | -| General Bots Copyright (c) pragmatismo.cloud. All rights reserved. | +| General Bots Copyright (c) pragmatismo.cloud. All rights reserved. | | Licensed under the AGPL-3.0. | | | -| According to our dual licensing model, this program can be used either | -| under the terms of the GNU Affero General Public License, version 3, | +| According to our dual licensing model,this program can be used either | +| under the terms of the GNU Affero General Public License,version 3, | | or under a proprietary license. | | | | The texts of the GNU Affero General Public License with an additional | | permission and of our proprietary license can be found at and | | in the LICENSE file you have received along with this program. | | | -| This program is distributed in the hope that it will be useful, | -| but WITHOUT ANY WARRANTY, without even the implied warranty of | +| This program is distributed in the hope that it will be useful, | +| but WITHOUT ANY WARRANTY,without even the implied warranty of | | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | | GNU Affero General Public License for more details. | | | -| "General Bots" is a registered trademark of pragmatismo.cloud. | +| "General Bots" is a registered trademark of pragmatismo.cloud. | | The licensing of the program under the AGPLv3 does not imply a | -| trademark license. Therefore any rights, title and interest in | +| trademark license. Therefore any rights,title and interest in | | our trademarks remain entirely with us. | | | \*****************************************************************************/ @@ -31,9 +33,10 @@ 'use strict'; import urlJoin from 'url-join'; -import fs from 'fs/promises'; -import path from 'path'; +import Fs from 'fs'; +import Path from 'path'; import url from 'url'; + import { GBLog } from 'botlib'; import { GBServer } from '../../../src/app.js'; import { GBAdminService } from '../../admin.gbapp/services/GBAdminService.js'; @@ -43,7 +46,6 @@ import { GBDeployer } from '../../core.gbapp/services/GBDeployer.js'; import { Mutex } from 'async-mutex'; import { GBLogEx } from '../../core.gbapp/services/GBLogEx.js'; import { SystemKeywords } from './SystemKeywords.js'; -import { GBUtil } from '../../../src/util.js'; /** * Web Automation services of conversation to be called by BASIC. @@ -93,7 +95,7 @@ export class WebAutomationServices { public async openPage({ pid, handle, sessionKind, sessionName, url, username, password }) { const { min, user } = await DialogKeywords.getProcessInfo(pid); - GBLogEx.info(min, `Web Automation OPEN ${sessionName ? sessionName : ''} ${url}.`); + GBLogEx.info(min, `BASIC: Web Automation OPEN ${sessionName ? sessionName : ''} ${url}.`); // Try to find an existing handle. @@ -192,7 +194,7 @@ export class WebAutomationServices { public async getBySelector({ handle, selector, pid }) { const page = WebAutomationServices.getPageByHandle(handle); const { min, user } = await DialogKeywords.getProcessInfo(pid); - GBLogEx.info(min, `Web Automation GET element: ${selector}.`); + GBLogEx.info(min, `BASIC: Web Automation GET element: ${selector}.`); await page.waitForSelector(selector); let elements = await page.$$(selector); if (elements && elements.length > 1) { @@ -217,7 +219,7 @@ export class WebAutomationServices { const { min, user } = await DialogKeywords.getProcessInfo(pid); const page = WebAutomationServices.getPageByHandle(handle); - GBLogEx.info(min, `Web Automation GET element by frame: ${selector}.`); + GBLogEx.info(min, `BASIC: Web Automation GET element by frame: ${selector}.`); await page.waitForSelector(frame); let frameHandle = await page.$(frame); const f = await frameHandle.contentFrame(); @@ -239,7 +241,7 @@ export class WebAutomationServices { const { min, user } = await DialogKeywords.getProcessInfo(pid); const page = WebAutomationServices.getPageByHandle(handle); - GBLogEx.info(min, `Web Automation HOVER element: ${selector}.`); + GBLogEx.info(min, `BASIC: Web Automation HOVER element: ${selector}.`); await this.getBySelector({ handle, selector: selector, pid }); await page.hover(selector); await this.debugStepWeb(pid, page); @@ -254,7 +256,7 @@ export class WebAutomationServices { const { min, user } = await DialogKeywords.getProcessInfo(pid); const page = WebAutomationServices.getPageByHandle(handle); - GBLogEx.info(min, `Web Automation CLICK element: ${frameOrSelector}.`); + GBLogEx.info(min, `BASIC: Web Automation CLICK element: ${frameOrSelector}.`); if (selector) { await page.waitForSelector(frameOrSelector); let frameHandle = await page.$(frameOrSelector); @@ -297,7 +299,7 @@ export class WebAutomationServices { const { min, user } = await DialogKeywords.getProcessInfo(pid); const page = WebAutomationServices.getPageByHandle(handle); - GBLogEx.info(min, `Web Automation PRESS ${char} ON element: ${frame}.`); + GBLogEx.info(min, `BASIC: Web Automation PRESS ${char} ON element: ${frame}.`); if (char.toLowerCase() === 'enter') { char = '\n'; } @@ -315,7 +317,7 @@ export class WebAutomationServices { const { min, user } = await DialogKeywords.getProcessInfo(pid); const page = WebAutomationServices.getPageByHandle(handle); - GBLogEx.info(min, `Web Automation CLICK LINK TEXT: ${text} ${index}.`); + GBLogEx.info(min, `BASIC: Web Automation CLICK LINK TEXT: ${text} ${index}.`); if (!index) { index = 1; } @@ -328,7 +330,7 @@ export class WebAutomationServices { const { min, user } = await DialogKeywords.getProcessInfo(pid); const page = WebAutomationServices.getPageByHandle(handle); - GBLogEx.info(min, `Web Automation CLICK BUTTON: ${text} ${index}.`); + GBLogEx.info(min, `BASIC: Web Automation CLICK BUTTON: ${text} ${index}.`); if (!index) { index = 1; } @@ -346,15 +348,15 @@ export class WebAutomationServices { public async screenshot({ pid, handle, selector }) { const { min, user } = await DialogKeywords.getProcessInfo(pid); const page = WebAutomationServices.getPageByHandle(handle); - GBLogEx.info(min, `Web Automation SCREENSHOT ${selector}.`); + GBLogEx.info(min, `BASIC: Web Automation SCREENSHOT ${selector}.`); - const gbaiName = GBUtil.getGBAIPath(min.botId); - const localName = path.join('work', gbaiName, 'cache', `screen-${GBAdminService.getRndReadableIdentifier()}.jpg`); + const gbaiName = DialogKeywords.getGBAIPath(min.botId); + const localName = Path.join('work', gbaiName, 'cache', `screen-${GBAdminService.getRndReadableIdentifier()}.jpg`); await page.screenshot({ path: localName }); - const url = urlJoin(GBServer.globals.publicAddress, min.botId, 'cache', path.basename(localName)); - GBLogEx.info(min, `WebAutomation: Screenshot captured at ${url}.`); + const url = urlJoin(GBServer.globals.publicAddress, min.botId, 'cache', Path.basename(localName)); + GBLogEx.info(min, `BASIC: WebAutomation: Screenshot captured at ${url}.`); return { data: null, localName: localName, url: url }; } @@ -369,7 +371,7 @@ export class WebAutomationServices { text = `${text}`; const page = WebAutomationServices.getPageByHandle(handle); - GBLogEx.info(min, `Web Automation TYPE on ${selector}: ${text}.`); + GBLogEx.info(min, `BASIC: Web Automation TYPE on ${selector}: ${text}.`); const e = await this.getBySelector({ handle, selector, pid }); await e.click({ clickCount: 3 }); await page.keyboard.press('Backspace'); @@ -409,24 +411,24 @@ export class WebAutomationServices { const cookies = await page.cookies(); options.headers.Cookie = cookies.map(ck => ck.name + '=' + ck.value).join(';'); - GBLogEx.info(min, `DOWNLOADING '${options.uri}...'`); + GBLogEx.info(min, `BASIC: DOWNLOADING '${options.uri}...'`); let local; let filename; if (options.uri.indexOf('file://') != -1) { local = url.fileURLToPath(options.uri); - filename = path.basename(local); + filename = Path.basename(local); } else { const getBasenameFormUrl = urlStr => { const url = new URL(urlStr); - return path.basename(url.pathname); + return Path.basename(url.pathname); }; filename = getBasenameFormUrl(options.uri); } let result: Buffer; if (local) { - result = await fs.readFile(local); + result = Fs.readFileSync(local); } else { const res = await fetch(options.uri, options); result = Buffer.from(await res.arrayBuffer()); @@ -439,8 +441,8 @@ export class WebAutomationServices { folder = folder.replace(/\\/gi, '/'); // Determines full path at source and destination. - const packagePath = GBUtil.getGBAIPath(min.botId, `gbdrive`); - const root = packagePath; + const path = DialogKeywords.getGBAIPath(min.botId, `gbdrive`); + const root = path; const dstPath = urlJoin(root, folder, filename); // Checks if the destination contains subfolders that @@ -455,7 +457,7 @@ export class WebAutomationServices { file = await client.api(`${baseUrl}/drive/root:/${dstPath}:/content`).put(result); } catch (error) { if (error.code === 'nameAlreadyExists') { - GBLogEx.info(min, `DOWNLOAD destination file already exists: ${dstPath}.`); + GBLogEx.info(min, `BASIC: DOWNLOAD destination file already exists: ${dstPath}.`); } throw error; } @@ -484,7 +486,7 @@ export class WebAutomationServices { const { min, user } = await DialogKeywords.getProcessInfo(pid); const page = WebAutomationServices.getPageByHandle(handle); - GBLogEx.info(min, `Web Automation CLICK element: ${frameOrSelector}.`); + GBLogEx.info(min, `BASIC: Web Automation CLICK element: ${frameOrSelector}.`); if (frameOrSelector) { const result = await page.$eval( frameOrSelector, diff --git a/packages/basic.gblib/services/vm2-process/index.ts b/packages/basic.gblib/services/vm2-process/index.ts index 86f2c5d17..aa36f47a0 100644 --- a/packages/basic.gblib/services/vm2-process/index.ts +++ b/packages/basic.gblib/services/vm2-process/index.ts @@ -118,6 +118,7 @@ const systemVariables = [ 'valueOf' ]; + export const createVm2Pool = ({ min, max, ...limits }) => { limits = Object.assign( { @@ -139,14 +140,8 @@ export const createVm2Pool = ({ min, max, ...limits }) => { let stderrCache = ''; const run = async (code: any, scope: any) => { - // Configure environment variables - const env = Object.assign({}, process.env, { - NODE_ENV: 'production', - NODE_OPTIONS: '' // Clear NODE_OPTIONS if needed - }); - const childProcess = spawn( - '/usr/bin/cpulimit', + 'cpulimit', [ '-ql', limits.cpu, @@ -158,7 +153,7 @@ export const createVm2Pool = ({ min, max, ...limits }) => { limits.script, ref ], - { cwd: limits.cwd, shell: true, env: env } + { cwd: limits.cwd, shell: false } ); childProcess.stdout.on('data', data => { @@ -180,7 +175,7 @@ export const createVm2Pool = ({ min, max, ...limits }) => { GBServer.globals.debuggers[limits.botId].state = 0; GBServer.globals.debuggers[limits.botId].stateInfo = 'Fail'; } else if (stderrCache.includes('Debugger attached.')) { - GBLogEx.info(min, `General Bots Debugger attached to Node .gbdialog process for ${limits.botId}.`); + GBLogEx.info(min, `BASIC: General Bots Debugger attached to Node .gbdialog process for ${limits.botId}.`); } }); @@ -191,7 +186,7 @@ export const createVm2Pool = ({ min, max, ...limits }) => { // Only attach if called by debugger/run. - if (limits.debug) { + if (GBServer.globals.debuggers[limits.botId]) { const debug = async () => { return new Promise((resolve, reject) => { CDP(async client => { @@ -217,16 +212,16 @@ export const createVm2Pool = ({ min, max, ...limits }) => { }); } GBServer.globals.debuggers[limits.botId].scope = variablesText; - GBLogEx.info(min, `Breakpoint variables: ${variablesText}`); // (zero-based) + GBLogEx.info(min,`BASIC: Breakpoint variables: ${variablesText}`); // (zero-based) // Processes breakpoint hits. if (hitBreakpoints.length >= 1) { - GBLogEx.info(min, `Break at line ${frame.location.lineNumber + 1}`); // (zero-based) + GBLogEx.info(min, `BASIC: Break at line ${frame.location.lineNumber + 1}`); // (zero-based) GBServer.globals.debuggers[limits.botId].state = 2; GBServer.globals.debuggers[limits.botId].stateInfo = 'Break'; } else { - GBLog.verbose(`Configuring breakpoints if any for ${limits.botId}...`); + GBLog.verbose(`BASIC: Configuring breakpoints if any for ${limits.botId}...`); // Waits for debugger and setup breakpoints. await CollectionUtil.asyncForEach(GBServer.globals.debuggers[limits.botId].breaks, async brk => { @@ -251,8 +246,8 @@ export const createVm2Pool = ({ min, max, ...limits }) => { await client.Runtime.enable(); resolve(1); - } catch (error) { - GBLog.error(error); + } catch (err) { + GBLog.error(err); kill(childProcess); GBServer.globals.debuggers[limits.botId].state = 0; GBServer.globals.debuggers[limits.botId].stateInfo = 'Stopped'; diff --git a/packages/basic.gblib/services/vm2-process/vm2ProcessRunner.ts b/packages/basic.gblib/services/vm2-process/vm2ProcessRunner.ts index fce8d125e..adb145262 100644 --- a/packages/basic.gblib/services/vm2-process/vm2ProcessRunner.ts +++ b/packages/basic.gblib/services/vm2-process/vm2ProcessRunner.ts @@ -26,13 +26,10 @@ const server = net1.createServer(socket => { const buffer = []; const sync = async () => { - const request = buffer.join('').toString(); - console.log(request); if (request.includes('\n')) { try { const { code, scope } = JSON.parse(request); - const result = await evaluate(code, { ...scope, module: null @@ -42,17 +39,12 @@ const server = net1.createServer(socket => { socket.write(JSON.stringify({ result }) + '\n'); socket.end(); } catch (error) { - console.log(`RUNTIME: ${error.message}, ${error.stack}`); + console.log(`BASIC: RUNTIME: ${error.message}, ${error.stack}`); socket.write(JSON.stringify({ error: error.message }) + '\n'); socket.end(); } } }; - socket.on('error', err => { - - console.log(err); - }); - socket.on('data', data => { buffer.push(data); diff --git a/packages/basic.gblib/tests/DialogKeywords.test.ts b/packages/basic.gblib/tests/DialogKeywords.test.ts deleted file mode 100644 index 681f41b28..000000000 --- a/packages/basic.gblib/tests/DialogKeywords.test.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { expect, test } from 'vitest'; -import { DialogKeywords } from '../services/DialogKeywords'; -import init from '../../../.test-init' - -init(); - -const dk = new DialogKeywords(); -const pid = 1; - -test('TOLIST', async () => { - - const obj = [{a:1, b:2}, {a:2, b:4}]; - - expect(await dk.getToLst({ pid, array: obj, member:'a' })) - .toBe("1,2"); -}); diff --git a/packages/basic.gblib/tests/GBVMService.test.ts b/packages/basic.gblib/tests/GBVMService.test.ts deleted file mode 100644 index e990016c2..000000000 --- a/packages/basic.gblib/tests/GBVMService.test.ts +++ /dev/null @@ -1,43 +0,0 @@ -import { GBVMService } from '../services/GBVMService'; -import { expect, test } from 'vitest' - -test('Default', () => { - - - const args = GBVMService.getSetScheduleKeywordArgs(` - - SET SCHEDULE "0 0 */1 * * *" - SET SCHEDULE "0 0 */3 * * *" - SET SCHEDULE "0 0 */2 * * *" - SET SCHEDULE "0 0 */2 * * *" - SET SCHEDULE "0 0 */3 * * *" - - `); - - expect(args.length).toBe(5); - -}); - - -test('Compare', () => { - - expect(GBVMService.compare(1,1)).toBeTruthy(); - expect(GBVMService.compare({a:1},{a:1})).toBeTruthy(); - expect(GBVMService.compare({a:1},{a:2})).toBeFalsy(); - expect(GBVMService.compare({a:1, b:2},{a:1, b:2})).toBeTruthy(); - -}); - -test('Parse Storage Field', async () => { - - const s = new GBVMService(); - - expect(await s.parseField('name STRING(30)')).toStrictEqual({name: 'name', definition: { - allowNull: true, - unique: false, primaryKey: false, - size: 30, - autoIncrement: false, - type:"STRING" - }}); - -}); diff --git a/packages/basic.gblib/tests/SystemKeywords.test.ts b/packages/basic.gblib/tests/SystemKeywords.test.ts deleted file mode 100644 index 73e0cd2f6..000000000 --- a/packages/basic.gblib/tests/SystemKeywords.test.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { GBVMService } from '../services/GBVMService'; -import { expect, test } from 'vitest'; -import { SystemKeywords } from '../services/SystemKeywords'; - -const s = new SystemKeywords(); -const pid = 1; - -test('APPEND', async () => { - expect(await s.append({ pid, args: [1, 1, 1, 1] })).toStrictEqual([1, 1, 1, 1]); - expect(await s.append({ pid, args: [1] })).toStrictEqual([1]); - expect(await s.append({ pid, args: [] })).toStrictEqual([]); - expect(await s.append({ pid, args: null })).toStrictEqual([]); -}); - -test('COMPARE', () => { - expect(GBVMService.compare(1, 1)).toBeTruthy(); - expect(GBVMService.compare({ a: 1 }, { a: 1 })).toBeTruthy(); - expect(GBVMService.compare({ a: 1 }, { a: 2 })).toBeFalsy(); - expect(GBVMService.compare({ a: 1, b: 2 }, { a: 1, b: 2 })).toBeTruthy(); -}); - -test('Parse Storage Field', async () => { - const s = new GBVMService(); - - expect(await s.parseField('name STRING(30)')).toStrictEqual({ - name: 'name', - definition: { - allowNull: true, - unique: false, - primaryKey: false, - size: 30, - autoIncrement: false, - type: 'STRING' - } - }); -}); diff --git a/packages/core.gbapp/dialogs/BroadcastDialog.ts b/packages/core.gbapp/dialogs/BroadcastDialog.ts index 44b679c6b..e2026293e 100644 --- a/packages/core.gbapp/dialogs/BroadcastDialog.ts +++ b/packages/core.gbapp/dialogs/BroadcastDialog.ts @@ -5,7 +5,7 @@ | ██ ██ █ █ ██ █ █ ██ ██ ██ ██ ██ ██ █ ██ ██ █ █ | | █████ █████ █ ███ █████ ██ ██ ██ ██ █████ ████ █████ █ ███ | | | -| General Bots Copyright (c) pragmatismo.cloud. All rights reserved. | +| General Bots Copyright (c) pragmatismo.cloud. All rights reserved. | | Licensed under the AGPL-3.0. | | | | According to our dual licensing model, this program can be used either | @@ -21,7 +21,7 @@ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | | GNU Affero General Public License for more details. | | | -| "General Bots" is a registered trademark of pragmatismo.cloud. | +| "General Bots" is a registered trademark of pragmatismo.cloud. | | The licensing of the program under the AGPLv3 does not imply a | | trademark license. Therefore any rights, title and interest in | | our trademarks remain entirely with us. | diff --git a/packages/core.gbapp/dialogs/LanguageDialog.ts b/packages/core.gbapp/dialogs/LanguageDialog.ts index 4a85c5192..96b4d6543 100644 --- a/packages/core.gbapp/dialogs/LanguageDialog.ts +++ b/packages/core.gbapp/dialogs/LanguageDialog.ts @@ -5,7 +5,7 @@ | ██ ██ █ █ ██ █ █ ██ ██ ██ ██ ██ ██ █ ██ ██ █ █ | | █████ █████ █ ███ █████ ██ ██ ██ ██ █████ ████ █████ █ ███ | | | -| General Bots Copyright (c) pragmatismo.cloud. All rights reserved. | +| General Bots Copyright (c) pragmatismo.cloud. All rights reserved. | | Licensed under the AGPL-3.0. | | | | According to our dual licensing model, this program can be used either | @@ -21,7 +21,7 @@ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | | GNU Affero General Public License for more details. | | | -| "General Bots" is a registered trademark of pragmatismo.cloud. | +| "General Bots" is a registered trademark of pragmatismo.cloud. | | The licensing of the program under the AGPLv3 does not imply a | | trademark license. Therefore any rights, title and interest in | | our trademarks remain entirely with us. | diff --git a/packages/core.gbapp/dialogs/SwitchBot.ts b/packages/core.gbapp/dialogs/SwitchBot.ts index b3fc8087f..168e13fdd 100644 --- a/packages/core.gbapp/dialogs/SwitchBot.ts +++ b/packages/core.gbapp/dialogs/SwitchBot.ts @@ -5,7 +5,7 @@ | ██ ██ █ █ ██ █ █ ██ ██ ██ ██ ██ ██ █ ██ ██ █ █ | | █████ █████ █ ███ █████ ██ ██ ██ ██ █████ ████ █████ █ ███ | | | -| General Bots Copyright (c) pragmatismo.cloud. All rights reserved. | +| General Bots Copyright (c) pragmatismo.cloud. All rights reserved. | | Licensed under the AGPL-3.0. | | | | According to our dual licensing model, this program can be used either | @@ -21,7 +21,7 @@ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | | GNU Affero General Public License for more details. | | | -| "General Bots" is a registered trademark of pragmatismo.cloud. | +| "General Bots" is a registered trademark of pragmatismo.cloud. | | The licensing of the program under the AGPLv3 does not imply a | | trademark license. Therefore any rights, title and interest in | | our trademarks remain entirely with us. | diff --git a/packages/core.gbapp/dialogs/WelcomeDialog.ts b/packages/core.gbapp/dialogs/WelcomeDialog.ts index ca9d71927..23cd75e13 100644 --- a/packages/core.gbapp/dialogs/WelcomeDialog.ts +++ b/packages/core.gbapp/dialogs/WelcomeDialog.ts @@ -5,7 +5,7 @@ | ██ ██ █ █ ██ █ █ ██ ██ ██ ██ ██ ██ █ ██ ██ █ █ | | █████ █████ █ ███ █████ ██ ██ ██ ██ █████ ████ █████ █ ███ | | | -| General Bots Copyright (c) pragmatismo.cloud. All rights reserved. | +| General Bots Copyright (c) pragmatismo.cloud. All rights reserved. | | Licensed under the AGPL-3.0. | | | | According to our dual licensing model, this program can be used either | @@ -21,7 +21,7 @@ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | | GNU Affero General Public License for more details. | | | -| "General Bots" is a registered trademark of pragmatismo.cloud. | +| "General Bots" is a registered trademark of pragmatismo.cloud. | | The licensing of the program under the AGPLv3 does not imply a | | trademark license. Therefore any rights, title and interest in | | our trademarks remain entirely with us. | @@ -36,11 +36,11 @@ import { BotAdapter } from 'botbuilder'; import { WaterfallDialog } from 'botbuilder-dialogs'; -import { GBMinInstance, IGBDialog } from 'botlib'; +import { GBLog, GBMinInstance, IGBDialog } from 'botlib'; import { GBServer } from '../../../src/app.js'; +import { GBConversationalService } from '../services/GBConversationalService.js'; import { Messages } from '../strings.js'; import { GBLogEx } from '../services/GBLogEx.js'; -import { GBConfigService } from '../services/GBConfigService.js'; /** * Dialog for Welcoming people. @@ -65,7 +65,7 @@ export class WelcomeDialog extends IGBDialog { async step => { if ( GBServer.globals.entryPointDialog !== null && - min.instance.botId === GBConfigService.get('BOT_ID') && + min.instance.botId === process.env.BOT_ID && step.context.activity.channelId === 'webchat' ) { return step.replaceDialog(GBServer.globals.entryPointDialog); diff --git a/packages/core.gbapp/dialogs/WhoAmIDialog.ts b/packages/core.gbapp/dialogs/WhoAmIDialog.ts index 333b7ef87..2aad9af33 100644 --- a/packages/core.gbapp/dialogs/WhoAmIDialog.ts +++ b/packages/core.gbapp/dialogs/WhoAmIDialog.ts @@ -5,7 +5,7 @@ | ██ ██ █ █ ██ █ █ ██ ██ ██ ██ ██ ██ █ ██ ██ █ █ | | █████ █████ █ ███ █████ ██ ██ ██ ██ █████ ████ █████ █ ███ | | | -| General Bots Copyright (c) pragmatismo.cloud. All rights reserved. | +| General Bots Copyright (c) pragmatismo.cloud. All rights reserved. | | Licensed under the AGPL-3.0. | | | | According to our dual licensing model, this program can be used either | @@ -21,7 +21,7 @@ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | | GNU Affero General Public License for more details. | | | -| "General Bots" is a registered trademark of pragmatismo.cloud. | +| "General Bots" is a registered trademark of pragmatismo.cloud. | | The licensing of the program under the AGPLv3 does not imply a | | trademark license. Therefore any rights, title and interest in | | our trademarks remain entirely with us. | diff --git a/packages/core.gbapp/index.ts b/packages/core.gbapp/index.ts index 9b84dad3d..57cf65f8e 100644 --- a/packages/core.gbapp/index.ts +++ b/packages/core.gbapp/index.ts @@ -5,7 +5,7 @@ | ██ ██ █ █ ██ █ █ ██ ██ ██ ██ ██ ██ █ ██ ██ █ █ | | █████ █████ █ ███ █████ ██ ██ ██ ██ █████ ████ █████ █ ███ | | | -| General Bots Copyright (c) pragmatismo.cloud. All rights reserved. | +| General Bots Copyright (c) pragmatismo.cloud. All rights reserved. | | Licensed under the AGPL-3.0. | | | | According to our dual licensing model, this program can be used either | @@ -21,7 +21,7 @@ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | | GNU Affero General Public License for more details. | | | -| "General Bots" is a registered trademark of pragmatismo.cloud. | +| "General Bots" is a registered trademark of pragmatismo.cloud. | | The licensing of the program under the AGPLv3 does not imply a | | trademark license. Therefore any rights, title and interest in | | our trademarks remain entirely with us. | diff --git a/packages/core.gbapp/models/GBError.ts b/packages/core.gbapp/models/GBError.ts index 3c6502d9a..c92dadbbc 100644 --- a/packages/core.gbapp/models/GBError.ts +++ b/packages/core.gbapp/models/GBError.ts @@ -5,7 +5,7 @@ | ██ ██ █ █ ██ █ █ ██ ██ ██ ██ ██ ██ █ ██ ██ █ █ | | █████ █████ █ ███ █████ ██ ██ ██ ██ █████ ████ █████ █ ███ | | | -| General Bots Copyright (c) pragmatismo.cloud. All rights reserved. | +| General Bots Copyright (c) pragmatismo.cloud. All rights reserved. | | Licensed under the AGPL-3.0. | | | | According to our dual licensing model, this program can be used either | @@ -21,7 +21,7 @@ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | | GNU Affero General Public License for more details. | | | -| "General Bots" is a registered trademark of pragmatismo.cloud. | +| "General Bots" is a registered trademark of pragmatismo.cloud. | | The licensing of the program under the AGPLv3 does not imply a | | trademark license. Therefore any rights, title and interest in | | our trademarks remain entirely with us. | diff --git a/packages/core.gbapp/models/GBModel.ts b/packages/core.gbapp/models/GBModel.ts index 7f99bf591..e24235e6a 100644 --- a/packages/core.gbapp/models/GBModel.ts +++ b/packages/core.gbapp/models/GBModel.ts @@ -5,7 +5,7 @@ | ██ ██ █ █ ██ █ █ ██ ██ ██ ██ ██ ██ █ ██ ██ █ █ | | █████ █████ █ ███ █████ ██ ██ ██ ██ █████ ████ █████ █ ███ | | | -| General Bots Copyright (c) pragmatismo.cloud. All rights reserved. | +| General Bots Copyright (c) pragmatismo.cloud. All rights reserved. | | Licensed under the AGPL-3.0. | | | | According to our dual licensing model, this program can be used either | @@ -21,7 +21,7 @@ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | | GNU Affero General Public License for more details. | | | -| "General Bots" is a registered trademark of pragmatismo.cloud. | +| "General Bots" is a registered trademark of pragmatismo.cloud. | | The licensing of the program under the AGPLv3 does not imply a | | trademark license. Therefore any rights, title and interest in | | our trademarks remain entirely with us. | diff --git a/packages/core.gbapp/services/GBConfigService.ts b/packages/core.gbapp/services/GBConfigService.ts index 3187bcda2..e31f025a4 100644 --- a/packages/core.gbapp/services/GBConfigService.ts +++ b/packages/core.gbapp/services/GBConfigService.ts @@ -5,7 +5,7 @@ | ██ ██ █ █ ██ █ █ ██ ██ ██ ██ ██ ██ █ ██ ██ █ █ | | █████ █████ █ ███ █████ ██ ██ ██ ██ █████ ████ █████ █ ███ | | | -| General Bots Copyright (c) pragmatismo.cloud. All rights reserved. | +| General Bots Copyright (c) pragmatismo.cloud. All rights reserved. | | Licensed under the AGPL-3.0. | | | | According to our dual licensing model, this program can be used either | @@ -21,7 +21,7 @@ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | | GNU Affero General Public License for more details. | | | -| "General Bots" is a registered trademark of pragmatismo.cloud. | +| "General Bots" is a registered trademark of pragmatismo.cloud. | | The licensing of the program under the AGPLv3 does not imply a | | trademark license. Therefore any rights, title and interest in | | our trademarks remain entirely with us. | @@ -32,7 +32,6 @@ import { GBLog } from 'botlib'; import * as en from 'dotenv-extended'; -import path from 'path'; /** * @fileoverview General Bots server core. @@ -43,7 +42,7 @@ import path from 'path'; */ export class GBConfigService { public static getBoolean(value: string): boolean { - return this.get(value) as unknown as boolean; + return (this.get(value) as unknown) as boolean; } public static getServerPort(): string { if (process.env.PORT) { @@ -77,38 +76,19 @@ export class GBConfigService { } } - public static get(key: string) { + public static get(key: string): string | undefined { let value = GBConfigService.tryGet(key); - if (!value) { + if (value === undefined) { switch (key) { - case 'PORT': - value = this.getServerPort(); - break; - case 'GBVM': - value = false; - break; - case 'STORAGE_NAME': - value = null; - break; - case 'WEBDAV_USERNAME': - value = null; - break; - case 'WEBDAV_PASSWORD': - value = null; - break; case 'CLOUD_USERNAME': value = undefined; break; - - case 'CLOUD_PASSWORD': + case 'BOT_ID': value = undefined; break; - case 'STORAGE_LIBRARY': - value = path.join(process.env.PWD, 'templates'); - break; - case 'BOT_ID': - value = 'default'; + case 'CLOUD_PASSWORD': + value = undefined; break; case 'CLOUD_SUBSCRIPTIONID': value = undefined; @@ -119,18 +99,14 @@ export class GBConfigService { case 'MARKETPLACE_ID': value = undefined; break; - case 'LOG_ON_STORAGE': - value = false; - break; case 'MARKETPLACE_SECRET': value = undefined; break; - case 'STORAGE_DIALECT': - value = 'sqlite'; + value = undefined; break; case 'STORAGE_FILE': - value = './data.db'; + value = './guaribas.sqlite'; break; case 'GBKB_AUTO_DEPLOY': value = false; @@ -184,7 +160,7 @@ export class GBConfigService { value = true; break; case 'BOT_URL': - value = 'http://localhost:4242'; + value = undefined; break; case 'STORAGE_SERVER': value = undefined; diff --git a/packages/core.gbapp/services/GBConversationalService.ts b/packages/core.gbapp/services/GBConversationalService.ts index f8dc8849f..d838a5fb4 100644 --- a/packages/core.gbapp/services/GBConversationalService.ts +++ b/packages/core.gbapp/services/GBConversationalService.ts @@ -5,7 +5,7 @@ | ██ ██ █ █ ██ █ █ ██ ██ ██ ██ ██ ██ █ ██ ██ █ █ | | █████ █████ █ ███ █████ ██ ██ ██ ██ █████ ████ █████ █ ███ | | | -| General Bots Copyright (c) pragmatismo.cloud. All rights reserved. | +| General Bots Copyright (c) pragmatismo.cloud. All rights reserved. | | Licensed under the AGPL-3.0. | | | | According to our dual licensing model, this program can be used either | @@ -21,7 +21,7 @@ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | | GNU Affero General Public License for more details. | | | -| "General Bots" is a registered trademark of pragmatismo.cloud. | +| "General Bots" is a registered trademark of pragmatismo.cloud. | | The licensing of the program under the AGPLv3 does not imply a | | trademark license. Therefore any rights, title and interest in | | our trademarks remain entirely with us. | @@ -48,12 +48,10 @@ import { CollectionUtil, AzureText } from 'pragmatismo-io-framework'; import { GuaribasUser } from '../../security.gbapp/models/index.js'; import { GBMinService } from './GBMinService.js'; import urlJoin from 'url-join'; -import { createWriteStream, createReadStream } from 'fs'; -import fs from 'fs/promises'; +import Fs from 'fs'; import twilio from 'twilio'; import Nexmo from 'nexmo'; import { join } from 'path'; -import path from 'path'; import shell from 'any-shell-escape'; import { exec } from 'child_process'; import prism from 'prism-media'; @@ -67,11 +65,13 @@ import { GBUtil } from '../../../src/util.js'; import { GBLogEx } from './GBLogEx.js'; import { DialogKeywords } from '../../basic.gblib/services/DialogKeywords.js'; + /** * Provides basic services for handling messages and dispatching to back-end * services like NLP or Search. */ export class GBConversationalService { + public async getNewMobileCode() { throw new Error('Method removed.'); } @@ -322,8 +322,7 @@ export class GBConversationalService { const filename = url.substring(url.lastIndexOf('/') + 1); await min.whatsAppDirectLine.sendFileToDevice(mobile, url, filename, caption); } else { - GBLogEx.info( - min, + GBLogEx.info(min, `Sending ${url} as file attachment not available in this channel ${step.context.activity['mobile']}...` ); await min.conversationalService.sendText(min, step, url); @@ -342,9 +341,9 @@ export class GBConversationalService { } public async sendEvent(min: GBMinInstance, step: GBDialogStep, name: string, value: Object): Promise { - if (step.context.activity.channelId !== 'msteams' && step.context.activity.channelId !== 'omnichannel') { - GBLogEx.info( - min, + if (step.context.activity.channelId !== 'msteams' && + step.context.activity.channelId !== 'omnichannel') { + GBLogEx.info(min, `Sending event ${name}:${typeof value === 'object' ? JSON.stringify(value) : value ? value : ''} to client...` ); const msg = MessageFactory.text(''); @@ -358,18 +357,23 @@ export class GBConversationalService { // tslint:disable:no-unsafe-any due to Nexmo. public async sendSms(min: GBMinInstance, mobile: string, text: string): Promise { + let botNumber = min.core.getParam(min.instance, 'Bot Number', null); if (botNumber) { + + GBLogEx.info(min, `Sending SMS from ${botNumber} to ${mobile} with text: '${text}'.`); const accountSid = process.env.TWILIO_ACCOUNT_SID; const authToken = process.env.TWILIO_AUTH_TOKEN; const client = twilio(null, authToken, { accountSid: accountSid }); - const msg = await client.messages.create({ - body: text, - from: '+' + botNumber, - to: '+' + mobile - }); + + const msg = await client.messages + .create({ + body: text, + from: '+' + botNumber, + to: '+' + mobile + }) GBLogEx.info(min, `SMS sent, return: ${msg.sid}.`); } @@ -412,7 +416,7 @@ export class GBConversationalService { nexmo.message.sendSms(min.instance.smsServiceNumber, mobile, text, {}, (err, data) => { const message = data.messages ? data.messages[0] : {}; if (err || message['error-text']) { - GBLog.error(`error sending SMS to ${mobile}: ${message['error-text']}`); + GBLog.error(`BASIC: error sending SMS to ${mobile}: ${message['error-text']}`); reject(message['error-text']); } else { resolve(data); @@ -425,9 +429,8 @@ export class GBConversationalService { public async sendToMobile(min: GBMinInstance, mobile: string, message: any, conversationId) { GBLogEx.info(min, `Sending message ${message} to ${mobile}...`); - return min.whatsAppDirectLine - ? await min.whatsAppDirectLine.sendToDevice(mobile, message, conversationId) - : await this.sendSms(min, mobile, message); + return min.whatsAppDirectLine ? await min.whatsAppDirectLine.sendToDevice(mobile, message, conversationId) : + await this.sendSms(min, mobile, message); } public static async getAudioBufferFromText(text): Promise { @@ -452,15 +455,15 @@ export class GBConversationalService { const waveFilename = `work/tmp${name}.pcm`; let audio = await textToSpeech.repairWavHeaderStream(res.result as any); - await fs.writeFile(waveFilename, audio); + Fs.writeFileSync(waveFilename, audio); const oggFilenameOnly = `tmp${name}.ogg`; const oggFilename = `work/${oggFilenameOnly}`; - const output = createWriteStream(oggFilename); + const output = Fs.createWriteStream(oggFilename); const transcoder = new prism.FFmpeg({ args: ['-analyzeduration', '0', '-loglevel', '0', '-f', 'opus', '-ar', '16000', '-ac', '1'] }); - createReadStream(waveFilename).pipe(transcoder).pipe(output); + Fs.createReadStream(waveFilename).pipe(transcoder).pipe(output); let url = urlJoin(GBServer.globals.publicAddress, 'audios', oggFilenameOnly); resolve(url); @@ -474,7 +477,7 @@ export class GBConversationalService { return new Promise(async (resolve, reject) => { try { const oggFile = new Readable(); - oggFile._read = () => {}; // _read is required but you can noop it + oggFile._read = () => { }; // _read is required but you can noop it oggFile.push(buffer); oggFile.push(null); @@ -482,7 +485,7 @@ export class GBConversationalService { const dest = `work/tmp${name}.wav`; const src = `work/tmp${name}.ogg`; - await fs.writeFile(src, oggFile.read()); + Fs.writeFileSync(src, oggFile.read()); const makeMp3 = shell([ 'node_modules/ffmpeg-static/ffmpeg', // TODO: .exe on MSWin. @@ -500,12 +503,12 @@ export class GBConversationalService { join(process.cwd(), dest) ]); - exec(makeMp3, async error => { + exec(makeMp3, error => { if (error) { GBLog.error(error); return Promise.reject(error); } else { - let data = await fs.readFile(dest); + let data = Fs.readFileSync(dest); const speechToText = new SpeechToTextV1({ authenticator: new IamAuthenticator({ apikey: process.env.WATSON_STT_KEY }), @@ -541,24 +544,27 @@ export class GBConversationalService { } public static getIBMAudioModelNameFromLocale = locale => { const locales = { - ar: 'ar-MS_BroadbandModel', - zh: 'zh-CN_BroadbandModel', - nl: 'nl-NL_BroadbandModel', - en: 'en-US_BroadbandModel', - fr: 'fr-FR_BroadbandModel', - de: 'de-DE_BroadbandModel', - it: 'it-IT_BroadbandModel', - ja: 'ja-JP_BroadbandModel', - ko: 'ko-KR_BroadbandModel', - pt: 'pt-BR_BroadbandModel', - es: 'es-ES_BroadbandModel' + "ar": "ar-MS_BroadbandModel", + "zh": "zh-CN_BroadbandModel", + "nl": "nl-NL_BroadbandModel", + "en": "en-US_BroadbandModel", + "fr": "fr-FR_BroadbandModel", + "de": "de-DE_BroadbandModel", + "it": "it-IT_BroadbandModel", + "ja": "ja-JP_BroadbandModel", + "ko": "ko-KR_BroadbandModel", + "pt": "pt-BR_BroadbandModel", + "es": "es-ES_BroadbandModel" }; const languageCode = locale.substring(0, 2); - return locales[languageCode] || 'en-US_BroadbandModel'; + return locales[languageCode] || "en-US_BroadbandModel"; }; - public async playMarkdown(min: GBMinInstance, answer: string, channel: string, step: GBDialogStep, mobile: string) { + + public async playMarkdown(min: GBMinInstance, answer: string, channel: string, + step: GBDialogStep, mobile: string) { + const sec = new SecService(); const user = await sec.getUserFromSystemId(mobile ? mobile : step.context.activity.from.id); @@ -574,8 +580,8 @@ export class GBConversationalService { GBLog.verbose(`Translated text(playMarkdown): ${text}.`); } - var renderer = new marked.Renderer(); - renderer['oldImage'] = renderer.image; + var renderer = new marked.marked.Renderer(); + renderer.oldImage = renderer.image; renderer.image = function (href, title, text) { var videos = ['webm', 'mp4', 'mov']; var filetype = href.split('.').pop(); @@ -592,7 +598,7 @@ export class GBConversationalService { ''; return out; } else { - return renderer['oldImage'](href, title, text); + return renderer.oldImage(href, title, text); } }; @@ -601,8 +607,13 @@ export class GBConversationalService { marked.setOptions({ renderer: renderer, gfm: true, + tables: true, breaks: false, pedantic: false, + sanitize: false, + smartLists: true, + smartypants: false, + xhtml: false }); // MSFT Translator breaks markdown, so we need to manually fix it: @@ -614,10 +625,10 @@ export class GBConversationalService { if (mobile) { await this.sendMarkdownToMobile(min, step, mobile, text); } else if (GBConfigService.get('DISABLE_WEB') !== 'true') { - const html = await marked.marked(text); + const html = marked(text); await this.sendHTMLToWeb(min, step, html, answer); } else { - const html = await marked.marked(text); + const html = marked(text); await min.conversationalService.sendText(min, step, html); } } @@ -637,52 +648,58 @@ export class GBConversationalService { }); } - public async fillAndBroadcastTemplate(min: GBMinInstance, template, mobile: string, text) { - template = template.replace(/\-/gi, '_'); - template = template.replace(/\./gi, '_'); + public async fillAndBroadcastTemplate(min: GBMinInstance, mobile: string, text) { - let isMedia = - text.toLowerCase().endsWith('.jpg') || - text.toLowerCase().endsWith('.jpeg') || - text.toLowerCase().endsWith('.png') || - text.toLowerCase().endsWith('.mp4') || - text.toLowerCase().endsWith('.mov'); - let mediaFile = !isMedia ? /(.*)\n/gim.exec(text)[0].trim() : text; - let mediaType = mediaFile.toLowerCase().endsWith('.mp4') || text.toLowerCase().endsWith('.mov') ? 'video' : 'image'; + let isMedia = text.toLowerCase().endsWith('.jpg') || text.toLowerCase().endsWith('.jpeg') + || text.toLowerCase().endsWith('.png'); - // Set folder based on media type - const folder = mediaType === 'video' ? 'videos' : 'images'; - const gbaiName = GBUtil.getGBAIPath(min.botId); - const fileUrl = urlJoin(process.env.BOT_URL, 'kb', gbaiName, `${min.botId}.gbkb`, folder, mediaFile); + let image = !isMedia ? + /(.*)\n/gmi.exec(text)[0].trim() : + text; - let urlMedia = mediaFile.startsWith('http') ? mediaFile : fileUrl; + const gbaiName = DialogKeywords.getGBAIPath(min.botId); + const fileUrl = urlJoin(process.env.BOT_URL, 'kb', gbaiName, `${min.botId}.gbkb`, 'images', image); + + let urlImage = image.startsWith('http') + ? image + : fileUrl; if (!isMedia) { - text = text.substring(mediaFile.length + 1).trim(); - text = text.replace(/\n/g, '\\n'); + text = text.substring(image.length).trim(); + text = text.replace(/\n/g, "\\n"); } - template = isMedia ? mediaFile.replace(/\.[^/.]+$/, '') : template; - - let data: any = { - name: template, - components: [ + let data:any = { + name: isMedia ? 'broadcast_notext' : 'broadcast', components: [ { - type: 'header', + type: "header", parameters: [ { - type: mediaType - } - ] + type: "image", + image: { + link: urlImage, + } + }, + ], } ] }; - data['components'][0]['parameters'][0][mediaType] = { link: urlMedia }; + if (!isMedia) { + data.components.push({ + type: "body", + parameters: [ + { + type: "text", + text: text, + } + ] + }); + } + + GBLogEx.info(min, `Sending answer file to mobile: ${mobile}. Header: ${urlImage}`); await this.sendToMobile(min, mobile, data, null); - GBLogEx.info(min, `Sending answer file to mobile: ${mobile}. Header: ${urlMedia}`); } - // tslint:enable:no-unsafe-any public async sendMarkdownToMobile(min: GBMinInstance, step: GBDialogStep, mobile: string, text: string) { @@ -851,7 +868,7 @@ export class GBConversationalService { } public async routeNLP(step: GBDialogStep, min: GBMinInstance, text: string) { - if (!min.instance.nlpAppId) { + if (min.instance.nlpAppId === null || min.instance.nlpAppId === undefined) { return false; } @@ -925,8 +942,7 @@ export class GBConversationalService { return false; } - GBLogEx.info( - min, + GBLogEx.info(min, `NLP called: ${intent}, entities: ${nlp.entities.length}, score: ${score} > required (nlpScore): ${instanceScore}` ); @@ -947,6 +963,7 @@ export class GBConversationalService { await step.replaceDialog(`/${intent}`, step.activeDialog.state.options); return true; + } GBLogEx.info(min, `NLP NOT called: score: ${score} > required (nlpScore): ${instanceScore}`); @@ -984,6 +1001,7 @@ export class GBConversationalService { } public async translate(min: GBMinInstance, text: string, language: string): Promise { + const translatorEnabled = () => { if (min.instance.params) { const params = JSON.parse(min.instance.params); @@ -995,7 +1013,7 @@ export class GBConversationalService { const key = min.core.getParam(min.instance, 'translatorKey', null); if ( - (!endPoint && !min.instance.googleProjectId) || + (endPoint === null && !min.instance.googleProjectId) || !translatorEnabled() || process.env.TRANSLATOR_DISABLED === 'true' ) { @@ -1031,13 +1049,14 @@ export class GBConversationalService { return Promise.reject(new Error(msg)); } } else { - let url = urlJoin(endPoint, 'translate'); - url += - '?' + + let url = urlJoin( + endPoint, + 'translate'); + url += "?" + new URLSearchParams({ 'api-version': '3.0', to: language - }).toString(); + }).toString() let options = { method: 'POST', @@ -1057,7 +1076,8 @@ export class GBConversationalService { if (results[0]) { return results[0].translations[0].text; - } else { + } + else { return text; } } catch (error) { @@ -1135,7 +1155,10 @@ export class GBConversationalService { const group = step.context.activity['group']; - const groupSpell = group ? await min.core.getParam(min.instance, 'Group Spell', false) : false; + const groupSpell = group ? await min.core.getParam( + min.instance, + 'Group Spell', + false) : false; if (textProcessed !== text && group && groupSpell) { await min.whatsAppDirectLine.sendToDevice(group, `Spell: ${text}`); @@ -1143,17 +1166,24 @@ export class GBConversationalService { // Detects user typed language and updates their locale profile if applies. - let locale = user.locale - ? user.locale - : min.core.getParam(min.instance, 'Default User Language', GBConfigService.get('DEFAULT_USER_LANGUAGE')); + let locale = user.locale ? user.locale : min.core.getParam( + min.instance, + 'Default User Language', + GBConfigService.get('DEFAULT_USER_LANGUAGE')); + + const detectLanguage = + min.core.getParam( + min.instance, + 'Language Detector', + false) != false; - const detectLanguage = min.core.getParam(min.instance, 'Language Detector', false) != false; if (text.indexOf(' ') !== -1 && detectLanguage) { locale = await min.conversationalService.getLanguage(min, text); if (user.locale != locale) { user = await sec.updateUserLocale(user.userId, locale); - await min.conversationalService.sendText(min, step, `Changed language to: ${locale}`); + await min.conversationalService.sendText(min, + step, `Changed language to: ${locale}`); } } @@ -1189,6 +1219,7 @@ export class GBConversationalService { GBLog.verbose(`Translated text(prompt): ${text}.`); } if (step.activeDialog.state.options['kind'] === 'file') { + return await step.prompt('attachmentPrompt', {}); } else { await this.sendText(min, step, text); @@ -1196,20 +1227,18 @@ export class GBConversationalService { } } - public async sendText(min: GBMinInstance, step, text, user = null) { - await this['sendTextWithOptions'](min, step, text, true, null, user); + public async sendText(min: GBMinInstance, step, text) { + await this['sendTextWithOptions'](min, step, text, true, null); } - public async sendTextWithOptions(min: GBMinInstance, step, text, translate, keepTextList, user) { + public async sendTextWithOptions(min: GBMinInstance, step, text, translate, keepTextList) { let sec = new SecService(); - - if (!user){ - user = await sec.getUserFromSystemId(step.context.activity.from.id); - } + let user = await sec.getUserFromSystemId(step.context.activity.from.id); await this['sendTextWithOptionsAndUser'](min, user, step, text, true, null); } public async sendTextWithOptionsAndUser(min: GBMinInstance, user, step, text, translate, keepTextList) { + const member = step ? step.context.activity.from : null; let replacements = []; @@ -1252,14 +1281,12 @@ export class GBConversationalService { } analytics.createMessage(min.instance.instanceId, conversation, null, text); } + if (!step && member && !isNaN(member.id) && !member.id.startsWith('1000')) { + const to = step.context.activity.group ? step.context.activity.group : member.id; - if (!isNaN(user.userSystemId)){ - - await min.whatsAppDirectLine.sendToDevice(user.userSystemId, text); - } - else{ + await min.whatsAppDirectLine.sendToDevice(to, text, step.context.activity.conversation.id); + } else { await step.context.sendActivity(text); - } } public async broadcast(min: GBMinInstance, message: string) { @@ -1281,31 +1308,22 @@ export class GBConversationalService { * Sends a message in a user with an already started conversation (got ConversationReference set) */ public async sendOnConversation(min: GBMinInstance, user: GuaribasUser, message: any) { - if (GBConfigService.get('STORAGE_NAME')) { - const ref = JSON.parse(user.conversationReference); - MicrosoftAppCredentials.trustServiceUrl(ref.serviceUrl); + if (message['buttons'] || message['sections']) { + await min['whatsAppDirectLine'].sendToDevice(user.userSystemId, message, user.conversationReference); + } else if (user.conversationReference.startsWith('spaces')) { + await min['googleDirectLine'].sendToDevice(user.userSystemId, null, user.conversationReference, message); + } else { + const ref = JSON.parse(user.conversationReference); + MicrosoftAppCredentials.trustServiceUrl(ref.serviceUrl); + try { await min.bot['continueConversation'](ref, async t1 => { const ref2 = TurnContext.getConversationReference(t1.activity); await min.bot.continueConversation(ref2, async t2 => { await t2.sendActivity(message); }); }); - - } else { - - const ref = JSON.parse(user.conversationReference); - await min.bot['continueConversation'](ref, async (t1) => { - const ref2 = TurnContext.getConversationReference(t1.activity); - await min.bot.continueConversation(ref2, async (t2) => { - await t2.sendActivity(message); - }); - }); - - if (message['buttons'] || message['sections']) { - await min['whatsAppDirectLine'].sendToDevice(user.userSystemId, message, user.conversationReference); - } - else if (user.conversationReference && user.conversationReference.startsWith('spaces')) { - await min['googleDirectLine'].sendToDevice(user.userSystemId, null, user.conversationReference, message); + } catch (error) { + console.log(error); } } } diff --git a/packages/core.gbapp/services/GBCoreService.ts b/packages/core.gbapp/services/GBCoreService.ts index 4230dbcf3..e272274f8 100644 --- a/packages/core.gbapp/services/GBCoreService.ts +++ b/packages/core.gbapp/services/GBCoreService.ts @@ -5,7 +5,7 @@ | ██ ██ █ █ ██ █ █ ██ ██ ██ ██ ██ ██ █ ██ ██ █ █ | | █████ █████ █ ███ █████ ██ ██ ██ ██ █████ ████ █████ █ ███ | | | -| General Bots Copyright (c) pragmatismo.cloud. All rights reserved. | +| General Bots Copyright (c) pragmatismo.cloud. All rights reserved. | | Licensed under the AGPL-3.0. | | | | According to our dual licensing model, this program can be used either | @@ -21,7 +21,7 @@ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | | GNU Affero General Public License for more details. | | | -| "General Bots" is a registered trademark of pragmatismo.cloud. | +| "General Bots" is a registered trademark of pragmatismo.cloud. | | The licensing of the program under the AGPLv3 does not imply a | | trademark license. Therefore any rights, title and interest in | | our trademarks remain entirely with us. | @@ -34,8 +34,8 @@ 'use strict'; -import { GBLog, GBMinInstance, IGBCoreService, IGBInstallationDeployer, IGBInstance, IGBPackage } from 'botlib'; -import fs from 'fs/promises'; +import { GBLog, IGBCoreService, IGBInstallationDeployer, IGBInstance, IGBPackage } from 'botlib'; +import * as Fs from 'fs'; import { Sequelize, SequelizeOptions } from 'sequelize-typescript'; import { Op, Dialect } from 'sequelize'; import { GBServer } from '../../../src/app.js'; @@ -47,11 +47,9 @@ import { GBCorePackage } from '../../core.gbapp/index.js'; import { GBCustomerSatisfactionPackage } from '../../customer-satisfaction.gbapp/index.js'; import { GBKBPackage } from '../../kb.gbapp/index.js'; import { GBSecurityPackage } from '../../security.gbapp/index.js'; -import { v2 as webdav } from 'webdav-server'; import { GBWhatsappPackage } from '../../whatsapp.gblib/index.js'; import { GuaribasApplications, GuaribasInstance, GuaribasLog } from '../models/GBModel.js'; import { GBConfigService } from './GBConfigService.js'; -import mkdirp from 'mkdirp'; import { GBAzureDeployerPackage } from '../../azuredeployer.gbapp/index.js'; import { GBSharePointPackage } from '../../sharepoint.gblib/index.js'; import { CollectionUtil } from 'pragmatismo-io-framework'; @@ -60,13 +58,12 @@ import { GBGoogleChatPackage } from '../../google-chat.gblib/index.js'; import { GBHubSpotPackage } from '../../hubspot.gblib/index.js'; import open from 'open'; import ngrok from 'ngrok'; -import path from 'path'; +import Path from 'path'; import { GBUtil } from '../../../src/util.js'; import { GBLogEx } from './GBLogEx.js'; import { GBDeployer } from './GBDeployer.js'; import { SystemKeywords } from '../../basic.gblib/services/SystemKeywords.js'; -import csvdb from 'csv-database'; -import { SaaSPackage } from '../../saas.gbapp/index.js'; +import { DialogKeywords } from '../../basic.gblib/services/DialogKeywords.js'; /** * GBCoreService contains main logic for handling storage services related @@ -112,7 +109,7 @@ export class GBCoreService implements IGBCoreService { constructor() { this.adminService = new GBAdminService(this); } - public async ensureInstances(instances: IGBInstance[], bootInstance: any, core: IGBCoreService) {} + public async ensureInstances(instances: IGBInstance[], bootInstance: any, core: IGBCoreService) { } /** * Gets database config and connect to storage. Currently two databases @@ -134,10 +131,6 @@ export class GBCoreService implements IGBCoreService { password = GBConfigService.get('STORAGE_PASSWORD'); } else if (this.dialect === 'sqlite') { storage = GBConfigService.get('STORAGE_FILE'); - - if (!(await GBUtil.exists(storage))) { - process.env.STORAGE_SYNC = 'true'; - } } else { throw new Error(`Unknown dialect: ${this.dialect}.`); } @@ -145,8 +138,8 @@ export class GBCoreService implements IGBCoreService { const logging: boolean | Function = GBConfigService.get('STORAGE_LOGGING') === 'true' ? (str: string): void => { - GBLogEx.info(0, str); - } + GBLogEx.info(0, str); + } : false; const encrypt: boolean = GBConfigService.get('STORAGE_ENCRYPT') === 'true'; @@ -238,11 +231,12 @@ export class GBCoreService implements IGBCoreService { return out; } + /** * Loads all items to start several listeners. */ public async loadInstances(): Promise { - if (process.env.LOAD_ONLY) { + if (process.env.LOAD_ONLY !== undefined) { const bots = process.env.LOAD_ONLY.split(`;`); const and = []; await CollectionUtil.asyncForEach(bots, async e => { @@ -313,7 +307,7 @@ STORAGE_SYNC_ALTER=true ENDPOINT_UPDATE=true `; -await fs.writeFile('.env', env); + Fs.writeFileSync('.env', env); } /** @@ -323,10 +317,7 @@ await fs.writeFile('.env', env); */ public async ensureProxy(port): Promise { try { - if ( - (await GBUtil.exists('node_modules/ngrok/bin/ngrok.exe')) || - (await GBUtil.exists('node_modules/.bin/ngrok')) - ) { + if (Fs.existsSync('node_modules/ngrok/bin/ngrok.exe') || Fs.existsSync('node_modules/.bin/ngrok')) { return await ngrok.connect({ port: port }); } else { GBLog.warn('ngrok executable not found. Check installation or node_modules folder.'); @@ -398,7 +389,7 @@ await fs.writeFile('.env', env); } try { instance.params = JSON.stringify(JSON.parse(instance.params)); - } catch (error) { + } catch (err) { instance.params = JSON.stringify(instance.params); } return await instance.save(); @@ -413,7 +404,7 @@ await fs.writeFile('.env', env); let matchingAppPackages = []; await CollectionUtil.asyncForEach(appPackages, async appPackage => { - const filenameOnly = path.basename(appPackage.name); + const filenameOnly = Path.basename(appPackage.name); const matchedApp = apps.find(app => app.name === filenameOnly); if (matchedApp || filenameOnly.endsWith('.gblib')) { matchingAppPackages.push(appPackage); @@ -435,11 +426,12 @@ await fs.writeFile('.env', env); let instances: IGBInstance[]; try { instances = await core.loadInstances(); + const group = GBConfigService.get('CLOUD_GROUP')??GBConfigService.get('BOT_ID'); if (process.env.ENDPOINT_UPDATE === 'true') { - const group = GBConfigService.get('CLOUD_GROUP') ?? GBConfigService.get('BOT_ID'); await CollectionUtil.asyncForEach(instances, async instance => { GBLogEx.info(instance.instanceId, `Updating bot endpoint for ${instance.botId}...`); try { + await installationDeployer.updateBotProxy( instance.botId, group, @@ -467,10 +459,7 @@ await fs.writeFile('.env', env); Try setting STORAGE_SYNC to true in .env file. Error: ${error.message}.` ); } else { - GBLogEx.info( - 0, - `Storage is empty. After collecting storage structure from all .gbapps it will get synced.` - ); + GBLogEx.info(0, `Storage is empty. After collecting storage structure from all .gbapps it will get synced.`); } } else { throw new Error(`Cannot connect to operating storage: ${error.message}.`); @@ -503,8 +492,7 @@ await fs.writeFile('.env', env); GBSharePointPackage, GBGoogleChatPackage, GBBasicPackage, - GBHubSpotPackage, - SaaSPackage + GBHubSpotPackage ], async e => { GBLogEx.info(0, `Loading sys package: ${e.name}...`); @@ -523,7 +511,15 @@ await fs.writeFile('.env', env); * Verifies that an complex global password has been specified * before starting the server. */ - public ensureAdminIsSecured() {} + public ensureAdminIsSecured() { + const password = GBConfigService.get('ADMIN_PASS'); + if (!GBAdminService.StrongRegex.test(password)) { + throw new Error( + 'Please, define a really strong password in ADMIN_PASS environment variable before running the server.' + ); + } + } + public async createBootInstance( core: GBCoreService, @@ -533,10 +529,9 @@ await fs.writeFile('.env', env); return await this.createBootInstanceEx( core, installationDeployer, - proxyAddress, - null, - GBConfigService.get('FREE_TIER') - ); + proxyAddress, null, + GBConfigService.get('FREE_TIER')); + } /** * Creates the first bot instance (boot instance) used to "boot" the server. @@ -553,10 +548,8 @@ await fs.writeFile('.env', env); ) { GBLogEx.info(0, `Deploying cognitive infrastructure (on the cloud / on premises)...`); try { - const { instance, credentials, subscriptionId, installationDeployer } = await StartDialog.createBaseInstance( - deployer, - freeTier - ); + const { instance, credentials, subscriptionId, installationDeployer } + = await StartDialog.createBaseInstance(deployer, freeTier); installationDeployer['core'] = this; const changedInstance = await installationDeployer['deployFarm2']( proxyAddress, @@ -675,68 +668,52 @@ await fs.writeFile('.env', env); } public async setConfig(min, name: string, value: any): Promise { - if (GBConfigService.get('STORAGE_NAME')) { - // Handles calls for BASIC persistence on sheet files. - GBLog.info(`Defining Config.xlsx variable ${name}= '${value}'...`); - - let { baseUrl, client } = await GBDeployer.internalGetDriveClient(min); - const maxLines = 512; - const file = 'Config.xlsx'; - const packagePath = GBUtil.getGBAIPath(min.botId, `gbot`); - - let document = await new SystemKeywords().internalGetDocument(client, baseUrl, packagePath, file); - - // Creates book session that will be discarded. - let sheets = await client.api(`${baseUrl}/drive/items/${document.id}/workbook/worksheets`).get(); - - // Get the current rows in column A - let results = await client - .api(`${baseUrl}/drive/items/${document.id}/workbook/worksheets('${sheets.value[0].name}')/range(address='A1:A${maxLines}')`) - .get(); - - const rows = results.values; - let address = ''; - let lastEmptyRow = -1; - let isEdit = false; - - // Loop through column A to find the row where name matches, or find the next empty row - for (let i = 7; i <= rows.length; i++) { - let result = rows[i - 1][0]; - if (result && result.toLowerCase() === name.toLowerCase()) { - address = `B${i}:B${i}`; // Match found, update value in column B - isEdit = true; // We are in editing mode - break; - } else if (!result && lastEmptyRow === -1) { - lastEmptyRow = i ; // Store the first empty row if no match is found - } - } - - // If no match was found and there's an empty row, add a new entry - if (!isEdit && lastEmptyRow !== -1) { - address = `A${lastEmptyRow}:B${lastEmptyRow}`; // Add new entry in columns A and B - } - - // Prepare the request body based on whether it's an edit or add operation - let body = { values: isEdit ? [[value]] : [[name, value]] }; - - // Update or add the new value in the found address - await client - .api(`${baseUrl}/drive/items/${document.id}/workbook/worksheets('${sheets.value[0].name}')/range(address='${address}')`) - .patch(body); - - } else { - let packagePath = GBUtil.getGBAIPath(min.botId, `gbot`); - const config = path.join(GBConfigService.get('STORAGE_LIBRARY'), packagePath, 'config.csv'); - - const db = await csvdb(config, ['name', 'value'], ','); - if (await db.get({ name: name })) { - await db.edit({ name: name }, { name, value }); - } else { - await db.add({ name, value }); + + // Handles calls for BASIC persistence on sheet files. + + GBLog.info( `Defining Config.xlsx variable ${name}= '${value}'...`); + + let { baseUrl, client } = await GBDeployer.internalGetDriveClient(min); + + const maxLines = 512; + const file = "Config.xlsx"; + const path = DialogKeywords.getGBAIPath(min.botId, `gbot`);; + + let document = await (new SystemKeywords()).internalGetDocument(client, baseUrl, path, file); + + // Creates workbook session that will be discarded. + + let sheets = await client + .api(`${baseUrl}/drive/items/${document.id}/workbook/worksheets`) + .get(); + + let results = await client + .api(`${baseUrl}/drive/items/${document.id}/workbook/worksheets('${sheets.value[0].name}')/range(address='A1:A${maxLines}')`) + .get(); + + const rows = results.text; + let address = ''; + + // Fills the row variable. + + for (let i = 1; i <= rows.length; i++) { + let result = rows[i - 1][0]; + if (result && result.toLowerCase() === name.toLowerCase()) { + address = `B${i}:B${i}`; + break; } } + + let body = { values: [[]] }; + body.values[0][0] = value; + + await client + .api(`${baseUrl}/drive/items/${document.id}/workbook/worksheets('${sheets.value[0].name}')/range(address='${address}')`) + .patch(body); } - + + + /** * Get a dynamic param from instance. Dynamic params are defined in Config.xlsx * and loaded into the work folder from comida command. @@ -744,60 +721,17 @@ await fs.writeFile('.env', env); * @param name Name of param to get from instance. * @param defaultValue Value returned when no param is defined in Config.xlsx. */ - public getParam(instance: IGBInstance, name: string, defaultValue?: T, platform = false): any { + public getParam(instance: IGBInstance, name: string, defaultValue?: T): any { let value = null; let params; name = name.trim(); - // Gets .gbot Params from specified bot. - if (instance.params) { - params = typeof instance.params === 'object' ? instance.params : JSON.parse(instance.params); + + params = typeof (instance.params) === 'object' ? instance.params : JSON.parse(instance.params); params = GBUtil.caseInsensitive(params); value = params ? params[name] : defaultValue; } - - // Gets specified bot instance values. - - params = GBUtil.caseInsensitive(instance['dataValues']); - - if (params && !value) { - // Retrieves the value from specified bot instance (no params collection). - - value = instance['dataValues'][name]; - - // If still not found, get from boot bot params. - - const minBoot = GBServer.globals.minBoot as any; - - if (minBoot.instance && !value && instance.botId != minBoot.instance.botId) { - instance = minBoot.instance; - - if (instance.params) { - params = typeof instance.params === 'object' ? instance.params : JSON.parse(instance.params); - params = GBUtil.caseInsensitive(params); - value = params ? params[name] : defaultValue; - } - - // If still did not found in boot bot params, try instance fields. - - if (!value) { - value = instance['dataValues'][name]; - } - if (!value) { - value = instance[name]; - } - } - } - - if (value === undefined) { - value = null; - } - - if (!value && platform) { - value = process.env[name.replace(/ /g, '_').toUpperCase()]; - } - if (value && typeof defaultValue === 'boolean') { return new Boolean(value ? value.toString().toLowerCase() === 'true' : defaultValue).valueOf(); } @@ -808,12 +742,20 @@ await fs.writeFile('.env', env); return new Number(value ? value : defaultValue ? defaultValue : 0).valueOf(); } - if (typeof value === 'string') { - return value.trim(); + params = GBUtil.caseInsensitive(instance['dataValues']); + if (params && !value) { + value = instance['dataValues'][name]; + if (value === null) { + const minBoot = GBServer.globals.minBoot as any; + params = GBUtil.caseInsensitive(minBoot.instance.dataValues); + value = params[name]; + } + } + if (value === undefined) { + value = null; } - const ret = value ?? defaultValue; - return ret; + return value ?? defaultValue; } /** @@ -823,7 +765,7 @@ await fs.writeFile('.env', env); let params = null; const list = []; if (instance.params) { - params = typeof instance.params === 'object' ? instance.params : JSON.parse(instance.params); + params = typeof (instance.params) === 'object' ? instance.params : JSON.parse(instance.params); } Object.keys(params).forEach(e => { @@ -835,107 +777,5 @@ await fs.writeFile('.env', env); return list; } - public async ensureFolders(instances, deployer: GBDeployer) { - let libraryPath = GBConfigService.get('STORAGE_LIBRARY'); - if (!(await GBUtil.exists(libraryPath))) { - mkdirp.sync(libraryPath); - } - - await this.syncBotStorage(instances, 'default', deployer, libraryPath); - - const files = await fs.readdir(libraryPath); - await CollectionUtil.asyncForEach(files, async file => { - if (file.trim().toLowerCase() !== 'default.gbai' && file.charAt(0) !== '_') { - let botId = file.replace(/\.gbai/, ''); - - await this.syncBotStorage(instances, botId, deployer, libraryPath); - } - }); - } - - private async syncBotStorage(instances: any, botId: any, deployer: GBDeployer, libraryPath: string) { - let instance = instances.find(p => p.botId.toLowerCase().trim() === botId.toLowerCase().trim()); - - if (!instance) { - GBLog.info(`Importing package ${botId}...`); - - // Creates a bot. - - let mobile = null, - email = null; - - instance = await deployer.deployBlankBot(botId, mobile, email); - const gbaiPath = path.join(libraryPath, `${botId}.gbai`); - - if (!(await GBUtil.exists(gbaiPath))) { - fs.mkdir(gbaiPath, { recursive: true }); - - const base = path.join(process.env.PWD, 'templates', 'default.gbai'); - - fs.cp(path.join(base, `default.gbkb`), path.join(gbaiPath, `default.gbkb`), { - errorOnExist: false, - force: true, - recursive: true - }); - fs.cp(path.join(base, `default.gbot`), path.join(gbaiPath, `default.gbot`), { - errorOnExist: false, - force: true, - recursive: true - }); - fs.cp(path.join(base, `default.gbtheme`), path.join(gbaiPath, `default.gbtheme`), { - errorOnExist: false, - force: true, - recursive: true - }); - fs.cp(path.join(base, `default.gbdata`), path.join(gbaiPath, `default.gbdata`), { - errorOnExist: false, - force: true, - recursive: true - }); - fs.cp(path.join(base, `default.gbdialog`), path.join(gbaiPath, `default.gbdialog`), { - errorOnExist: false, - force: true, - recursive: true - }); - fs.cp(path.join(base, `default.gbdrive`), path.join(gbaiPath, `default.gbdrive`), { - errorOnExist: false, - force: true, - recursive: true - }); - } - } - } - - public static async createWebDavServer(minInstances: GBMinInstance[]) { - const userManager = new webdav.SimpleUserManager(); - const privilegeManager = new webdav.SimplePathPrivilegeManager(); - - // Create the WebDAV server - const server = new webdav.WebDAVServer({ - port: 1900, - httpAuthentication: new webdav.HTTPDigestAuthentication(userManager, 'Default realm'), - privilegeManager: privilegeManager - }); - GBServer.globals.webDavServer = server; - - minInstances.forEach(min => { - const user = min.core.getParam(min.instance, 'WebDav Username', GBConfigService.get('WEBDAV_USERNAME')); - const pass = min.core.getParam(min.instance, 'WebDav Password', GBConfigService.get('WEBDAV_PASSWORD')); - - if (user && pass) { - const objUser = userManager.addUser(user, pass); - - const virtualPath = '/' + min.botId; - let path = GBUtil.getGBAIPath(min.botId, null); - const gbaiRoot = path.join(GBConfigService.get('STORAGE_LIBRARY'), path); - - server.setFileSystem(virtualPath, new webdav.PhysicalFileSystem(gbaiRoot), successed => { - GBLogEx.info(min.instance.instanceId, `WebDav online for ${min.botId}...`); - }); - privilegeManager.setRights(objUser, virtualPath, ['all']); - } - }); - server.start(1900); - } } diff --git a/packages/core.gbapp/services/GBDeployer.ts b/packages/core.gbapp/services/GBDeployer.ts index d3092a9f6..03b376ddc 100644 --- a/packages/core.gbapp/services/GBDeployer.ts +++ b/packages/core.gbapp/services/GBDeployer.ts @@ -5,7 +5,7 @@ | ██ ██ █ █ ██ █ █ ██ ██ ██ ██ ██ ██ █ ██ ██ █ █ | | █████ █████ █ ███ █████ ██ ██ ██ ██ █████ ████ █████ █ ███ | | | -| General Bots Copyright (c) pragmatismo.cloud. All rights reserved. | +| General Bots Copyright (c) pragmatismo.cloud. All rights reserved. | | Licensed under the AGPL-3.0. | | | | According to our dual licensing model, this program can be used either | @@ -21,7 +21,7 @@ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | | GNU Affero General Public License for more details. | | | -| "General Bots" is a registered trademark of pragmatismo.cloud. | +| "General Bots" is a registered trademark of pragmatismo.cloud. | | The licensing of the program under the AGPLv3 does not imply a | | trademark license. Therefore any rights, title and interest in | | our trademarks remain entirely with us. | @@ -34,19 +34,17 @@ 'use strict'; -import path from 'path'; +import Path from 'path'; import express from 'express'; import child_process from 'child_process'; -import { rimraf } from 'rimraf'; +import rimraf from 'rimraf'; import urlJoin from 'url-join'; -import fs from 'fs/promises'; +import Fs from 'fs'; import { GBError, GBLog, GBMinInstance, IGBCoreService, IGBDeployer, IGBInstance, IGBPackage } from 'botlib'; import { AzureSearch } from 'pragmatismo-io-framework'; import { CollectionUtil } from 'pragmatismo-io-framework'; import { GBServer } from '../../../src/app.js'; import { GBVMService } from '../../basic.gblib/services/GBVMService.js'; -import Excel from 'exceljs'; -import asyncPromise from 'async-promises'; import { GuaribasPackage } from '../models/GBModel.js'; import { GBAdminService } from './../../admin.gbapp/services/GBAdminService.js'; import { AzureDeployerService } from './../../azuredeployer.gbapp/services/AzureDeployerService.js'; @@ -56,10 +54,10 @@ import { GBImporter } from './GBImporterService.js'; import { TeamsService } from '../../teams.gblib/services/TeamsService.js'; import MicrosoftGraph from '@microsoft/microsoft-graph-client'; import { GBLogEx } from './GBLogEx.js'; +import { DialogKeywords } from '../../basic.gblib/services/DialogKeywords.js'; import { GBUtil } from '../../../src/util.js'; import { HNSWLib } from '@langchain/community/vectorstores/hnswlib'; import { OpenAIEmbeddings } from '@langchain/openai'; -import { GBMinService } from './GBMinService.js'; /** * Deployer service for bots, themes, ai and more. @@ -98,11 +96,7 @@ export class GBDeployer implements IGBDeployer { * use to database like the Indexer (Azure Search). */ public static getConnectionStringFromInstance(instance: IGBInstance) { - return `Server=tcp:${GBConfigService.get('STORAGE_SERVER')},1433;Database=${GBConfigService.get( - 'STORAGE_NAME' - )};User ID=${GBConfigService.get('STORAGE_USERNAME')};Password=${GBConfigService.get( - 'STORAGE_PASSWORD' - )};Trusted_Connection=False;Encrypt=True;Connection Timeout=30;`; + return `Server=tcp:${GBConfigService.get("STORAGE_SERVER")},1433;Database=${GBConfigService.get("STORAGE_NAME")};User ID=${GBConfigService.get("STORAGE_USERNAME")};Password=${GBConfigService.get("STORAGE_PASSWORD")};Trusted_Connection=False;Encrypt=True;Connection Timeout=30;`; } /** @@ -111,26 +105,25 @@ export class GBDeployer implements IGBDeployer { public static async internalGetDriveClient(min: GBMinInstance) { let token; - // Get token as root only if the bot does not have - // an custom tenant for retrieving packages. + // Get token as root only if the bot does not have + // an custom tenant for retrieving packages. - token = await (min.adminService as any)['acquireElevatedToken']( - min.instance.instanceId, - min.instance.authenticatorTenant ? false : true - ); + token = await (min.adminService as any)['acquireElevatedToken'] + (min.instance.instanceId, min.instance.authenticatorTenant ? false : true); - const siteId = process.env.STORAGE_SITE_ID; - const libraryId = GBConfigService.get('STORAGE_LIBRARY'); + const siteId = process.env.STORAGE_SITE_ID; + const libraryId = process.env.STORAGE_LIBRARY; - const client = MicrosoftGraph.Client.init({ - authProvider: done => { - done(null, token); - } - }); - const baseUrl = `https://graph.microsoft.com/v1.0/sites/${siteId}/lists/${libraryId}`; - min['cacheToken'] = { baseUrl, client }; + const client = MicrosoftGraph.Client.init({ + authProvider: done => { + done(null, token); + } + }); + const baseUrl = `https://graph.microsoft.com/v1.0/sites/${siteId}/lists/${libraryId}`; + min['cacheToken'] = { baseUrl, client }; + + return { baseUrl, client }; - return { baseUrl, client }; } /** @@ -148,20 +141,22 @@ export class GBDeployer implements IGBDeployer { const gbappPackages: string[] = []; const generalPackages: string[] = []; - async function scanPackageDirectory(directory) { + async function scanPackageDirectory(path) { // Gets all directories. - const isDirectory = async source => (await fs.lstat(source)).isDirectory(); - const getDirectories = async source => - (await fs.readdir(source)).map(name => path.join(source, name)).filter(isDirectory); - const dirs = await getDirectories(directory); + const isDirectory = source => Fs.lstatSync(source).isDirectory(); + const getDirectories = source => + Fs.readdirSync(source) + .map(name => Path.join(source, name)) + .filter(isDirectory); + const dirs = getDirectories(path); await CollectionUtil.asyncForEach(dirs, async element => { // For each folder, checks its extensions looking for valid packages. if (element === '.') { GBLogEx.info(0, `Ignoring ${element}...`); } else { - const name = path.basename(element); + const name = Path.basename(element); // Skips what does not need to be loaded. @@ -220,27 +215,25 @@ export class GBDeployer implements IGBDeployer { const instance = await this.importer.createBotInstance(botId); const bootInstance = GBServer.globals.bootInstance; - if (GBConfigService.get('STORAGE_NAME')) { - // Gets the access token to perform service operations. + // Gets the access token to perform service operations. - const accessToken = await (GBServer.globals.minBoot.adminService as any)['acquireElevatedToken']( - bootInstance.instanceId, - true - ); + const accessToken = await (GBServer.globals.minBoot.adminService as any)['acquireElevatedToken']( + bootInstance.instanceId, + true + ); - // Creates the MSFT application that will be associated to the bot. + // Creates the MSFT application that will be associated to the bot. - const service = await AzureDeployerService.createInstance(this); - const application = await service.createApplication(accessToken, botId); - // Fills new instance base information and get App secret. + const service = await AzureDeployerService.createInstance(this); + const application = await service.createApplication(accessToken, botId); - instance.marketplaceId = (application as any).appId; - instance.marketplacePassword = await service.createApplicationSecret(accessToken, (application as any).id); - } + // Fills new instance base information and get App secret. + instance.marketplaceId = (application as any).appId; + instance.marketplacePassword = await service.createApplicationSecret(accessToken, (application as any).id); instance.adminPass = GBAdminService.getRndPassword(); instance.title = botId; - instance.activationCode = instance.botId.substring(0, 15); + instance.activationCode = instance.botId.substring(0,15); instance.state = 'active'; instance.nlpScore = 0.8; instance.searchScore = 0.25; @@ -249,17 +242,10 @@ export class GBDeployer implements IGBDeployer { // Saves bot information to the store. await this.core.saveInstance(instance); - if (GBConfigService.get('STORAGE_NAME')) { - await this.deployBotOnAzure(instance, GBServer.globals.publicAddress); - } - - // Makes available bot to the channels and .gbui interfaces. - - await GBServer.globals.minService.mountBot(instance); // Creates remaining objects on the cloud and updates instance information. - return instance; + return await this.deployBotFull(instance, GBServer.globals.publicAddress); } /** @@ -274,14 +260,14 @@ export class GBDeployer implements IGBDeployer { /** * Performs all tasks of deploying a new bot on the cloud. */ - public async deployBotOnAzure(instance: IGBInstance, publicAddress: string): Promise { + public async deployBotFull(instance: IGBInstance, publicAddress: string): Promise { // Reads base configuration from environent file. const service = await AzureDeployerService.createInstance(this); const username = GBConfigService.get('CLOUD_USERNAME'); const password = GBConfigService.get('CLOUD_PASSWORD'); const accessToken = await GBAdminService.getADALTokenFromUsername(username, password); - const group = GBConfigService.get('CLOUD_GROUP') ?? GBConfigService.get('BOT_ID'); + const group = GBConfigService.get('CLOUD_GROUP')??GBConfigService.get('BOT_ID'); const subscriptionId = GBConfigService.get('CLOUD_SUBSCRIPTIONID'); // If the bot already exists, just update the endpoint. @@ -295,6 +281,7 @@ export class GBDeployer implements IGBDeployer { `${publicAddress}/api/messages/${instance.botId}` ); } else { + // Internally create resources on cloud provider. instance = await service.internalDeployBot( @@ -312,6 +299,11 @@ export class GBDeployer implements IGBDeployer { instance.marketplacePassword, subscriptionId ); + + // Makes available bot to the channels and .gbui interfaces. + + await GBServer.globals.minService.mountBot(instance); + await GBServer.globals.minService.ensureAPI(); } // Saves final instance object and returns it. @@ -321,44 +313,18 @@ export class GBDeployer implements IGBDeployer { public async loadOrCreateEmptyVectorStore(min: GBMinInstance): Promise { let vectorStore: HNSWLib; - - const azureOpenAIKey = await (min.core as any)['getParam'](min.instance, 'Azure Open AI Key', null, true); - const azureOpenAIVersion = await (min.core as any)['getParam'](min.instance, 'Azure Open AI Version', null, true); - const azureOpenAIApiInstanceName = await (min.core as any)['getParam']( - min.instance, - 'Azure Open AI Instance', - null, - true - ); - const azureOpenAIEmbeddingModel = await (min.core as any)['getParam']( - min.instance, - 'Azure Open AI Embedding Model', - null, - true - ); - - let embedding; - if (!azureOpenAIEmbeddingModel) { - return; - } - - embedding = new OpenAIEmbeddings({ - maxConcurrency: 5, - azureOpenAIApiKey: azureOpenAIKey, - azureOpenAIApiDeploymentName: azureOpenAIEmbeddingModel, - azureOpenAIApiVersion: azureOpenAIVersion, - azureOpenAIApiInstanceName: azureOpenAIApiInstanceName - }); - + try { - vectorStore = await HNSWLib.load(min['vectorStorePath'], embedding); + vectorStore = await HNSWLib.load(min['vectorStorePath'], new OpenAIEmbeddings({ maxConcurrency: 5 })); } catch { - vectorStore = new HNSWLib(embedding, { - space: 'cosine' + vectorStore = new HNSWLib(new OpenAIEmbeddings({ maxConcurrency: 5 }), { + space: 'cosine', + numDimensions: 1536, }); } return vectorStore; } + /** * Performs the NLP publishing process on remote service. @@ -421,70 +387,72 @@ export class GBDeployer implements IGBDeployer { * Deploys a bot to the storage from a .gbot folder. */ public async deployBotFromLocalPath(localPath: string, publicAddress: string): Promise { - const packageName = path.basename(localPath); + const packageName = Path.basename(localPath); const instance = await this.importer.importIfNotExistsBotPackage(undefined, packageName, localPath); - await this.deployBotOnAzure(instance, publicAddress); + await this.deployBotFull(instance, publicAddress); } /** * Loads all para from tabular file Config.xlsx. */ + public async loadParamsFromTabular(min: GBMinInstance): Promise { + const siteId = process.env.STORAGE_SITE_ID; + const libraryId = process.env.STORAGE_LIBRARY; - public async loadParamsFromTabular(min: GBMinInstance, filePath: string): Promise { - const xls = path.join(filePath, 'Config.xlsx'); - const csv = path.join(filePath, 'config.csv'); + GBLogEx.info(min, `Connecting to Config.xslx (siteId: ${siteId}, libraryId: ${libraryId})...`); - let rows: any[] = []; - let obj: any = {}; + // Connects to MSFT storage. - const workbook = new Excel.Workbook(); + const token = await (min.adminService as any)['acquireElevatedToken'](min.instance.instanceId, true); - if (await GBUtil.exists(xls)) { - await workbook.xlsx.readFile(xls); - let worksheet: any; - for (let t = 0; t < workbook.worksheets.length; t++) { - worksheet = workbook.worksheets[t]; - if (worksheet) { - break; - } - } - rows = worksheet.getSheetValues(); - - // Skips the header lines. - for (let index = 0; index < 6; index++) { - rows.shift(); - } - } else if (await GBUtil.exists(csv)) { - await workbook.csv.readFile(csv); - let worksheet = workbook.worksheets[0]; // Assuming the CSV file has only one sheet - rows = worksheet.getSheetValues(); - - // Skips the header lines. - - rows.shift(); - } else { - return []; - } - - await asyncPromise.eachSeries(rows, async (line: any) => { - if (line && line.length > 0) { - const key = line[1]; - let value = line[2]; - - - if (key && value) { - if (value.text) { value = value.text }; - obj[key] = value; - } + const client = MicrosoftGraph.Client.init({ + authProvider: done => { + done(null, token); } }); - GBLogEx.info(min, `Processing ${rows.length} rows from ${path.basename(filePath)}...`); - rows = null; + // Retrieves all files in .bot folder. + + const botId = min.instance.botId; + const path = DialogKeywords.getGBAIPath(botId, 'gbot'); + let url = `https://graph.microsoft.com/v1.0/sites/${siteId}/lists/${libraryId}/drive/root:/${path}:/children`; + + GBLogEx.info(min, `Loading .gbot from Excel: ${url}`); + const res = await client.api(url).get(); + + // Finds Config.xlsx. + + const document = res.value.filter(m => { + return m.name === 'Config.xlsx'; + }); + if (document === undefined || document.length === 0) { + GBLogEx.info(min, `Config.xlsx not found on .bot folder, check the package.`); + + return null; + } + + // Reads all rows in Config.xlsx that contains a pair of name/value + // and fills an object that is returned to be saved in params instance field. + + const results = await client + .api( + `https://graph.microsoft.com/v1.0/sites/${siteId}/lists/${libraryId}/drive/items/${document[0].id}/workbook/worksheets('General')/range(address='A7:B100')` + ) + .get(); + let index = 0, + obj = {}; + for (; index < results.text.length; index++) { + if (results.text[index][0] === '') { + return obj; + } + obj[results.text[index][0]] = results.text[index][1]; + } + return obj; } /** + * Loads all para from tabular file Config.xlsx. */ public async downloadFolder( min: GBMinInstance, @@ -504,33 +472,27 @@ export class GBDeployer implements IGBDeployer { // Creates each subfolder. let pathBase = localPath; - if (!(await GBUtil.exists(pathBase))) { - fs.mkdir(pathBase); + if (!Fs.existsSync(pathBase)) { + Fs.mkdirSync(pathBase); } await CollectionUtil.asyncForEach(parts, async item => { - pathBase = path.join(pathBase, item); - if (!(await GBUtil.exists(pathBase))) { - fs.mkdir(pathBase); + pathBase = Path.join(pathBase, item); + if (!Fs.existsSync(pathBase)) { + Fs.mkdirSync(pathBase); } }); // Retrieves all files in remote folder. - let packagePath = GBUtil.getGBAIPath(min.botId); - packagePath = urlJoin(packagePath, remotePath); - let url = `${baseUrl}/drive/root:/${packagePath}:/children`; + let path = DialogKeywords.getGBAIPath(min.botId); + path = urlJoin(path, remotePath); + let url = `${baseUrl}/drive/root:/${path}:/children`; - GBLogEx.info(min, `Downloading: ${url}`); - let documents; + GBLogEx.info(min, `Download URL: ${url}`); - - try { - const res = await client.api(url).get(); - documents = res.value; - } catch (error) { - GBLogEx.info(min, `Error downloading: ${error.toString()}`); - } + const res = await client.api(url).get(); + const documents = res.value; if (documents === undefined || documents.length === 0) { GBLogEx.info(min, `${remotePath} is an empty folder.`); return null; @@ -539,19 +501,19 @@ export class GBDeployer implements IGBDeployer { // Download files or navigate to directory to recurse. await CollectionUtil.asyncForEach(documents, async item => { - const itemPath = path.join(localPath, remotePath, item.name); + const itemPath = Path.join(localPath, remotePath, item.name); if (item.folder) { - if (!(await GBUtil.exists(itemPath))) { - fs.mkdir(itemPath); + if (!Fs.existsSync(itemPath)) { + Fs.mkdirSync(itemPath); } const nextFolder = urlJoin(remotePath, item.name); await this.downloadFolder(min, localPath, nextFolder); } else { let download = true; - if (await GBUtil.exists(itemPath)) { - const dt = await fs.stat(itemPath); + if (Fs.existsSync(itemPath)) { + const dt = Fs.statSync(itemPath); if (new Date(dt.mtime) >= new Date(item.lastModifiedDateTime)) { download = false; } @@ -562,10 +524,10 @@ export class GBDeployer implements IGBDeployer { const url = item['@microsoft.graph.downloadUrl']; const response = await fetch(url); - await fs.writeFile(itemPath, Buffer.from(await response.arrayBuffer()), { encoding: null }); - fs.utimes(itemPath, new Date(), new Date(item.lastModifiedDateTime)); + Fs.writeFileSync(itemPath, Buffer.from(await response.arrayBuffer()), { encoding: null }); + Fs.utimesSync(itemPath, new Date(), new Date(item.lastModifiedDateTime)); } else { - GBLogEx.info(min, `Local is up to date: ${path.basename(itemPath)}...`); + GBLogEx.info(min, `Local is up to date: ${itemPath}...`); } } }); @@ -607,27 +569,11 @@ export class GBDeployer implements IGBDeployer { /** * Deploys a folder into the bot storage. */ - public async deployPackage2(min: GBMinInstance, user, packageWorkFolder: string, download = false) { - const packageName = path.basename(packageWorkFolder); - const packageType = path.extname(packageWorkFolder); + public async deployPackage2(min: GBMinInstance, user, localPath: string) { + const packageType = Path.extname(localPath); let handled = false; let pck = null; - const gbai = GBUtil.getGBAIPath(min.instance.botId); - - if (download) { - if (packageType === '.gbkb' || packageType === '.gbtheme') { - await this.cleanupPackage(min.instance, packageName); - } - - if (!GBConfigService.get('STORAGE_NAME')) { - const filePath = path.join(GBConfigService.get('STORAGE_LIBRARY'), gbai, packageName); - await GBUtil.copyIfNewerRecursive(filePath, packageWorkFolder); - } else { - await this.downloadFolder(min, path.join('work', `${gbai}`), packageName); - } - } - // Asks for each .gbapp if it will handle the package publishing. const _this = this; @@ -637,7 +583,7 @@ export class GBDeployer implements IGBDeployer { if ( (pck = await e.onExchangeData(min, 'handlePackage', { - name: packageWorkFolder, + name: localPath, createPackage: async packageName => { return await _this.deployPackageToStorage(min.instance.instanceId, packageName); }, @@ -663,56 +609,48 @@ export class GBDeployer implements IGBDeployer { case '.gbot': // Extracts configuration information from .gbot files. - min.instance.params = await this.loadParamsFromTabular(min, packageWorkFolder); - if (min.instance.params) { - let connections = []; - - // Find all tokens in .gbot Config. - const strFind = ' Driver'; - const conns = await min.core['findParam'](min.instance, strFind); - await CollectionUtil.asyncForEach(conns, async t => { - const connectionName = t.replace(strFind, '').trim(); - let con = {}; - con['name'] = connectionName; - con['storageDriver'] = min.core.getParam(min.instance, `${connectionName} Driver`, null); - const storageName = min.core.getParam(min.instance, `${connectionName} Name`, null); - - let file = min.core.getParam(min.instance, `${connectionName} File`, null); - - if (storageName) { - con['storageName'] = storageName.trim(); - con['storageServer'] = min.core.getParam(min.instance, `${connectionName} Server`, null); - con['storageUsername'] = min.core.getParam(min.instance, `${connectionName} Username`, null); - con['storagePort'] = min.core.getParam(min.instance, `${connectionName} Port`, null); - con['storagePassword'] = min.core.getParam(min.instance, `${connectionName} Password`, null); - } else if (file) { - const packagePath = GBUtil.getGBAIPath(min.botId, 'gbdata'); - con['storageFile'] = path.join(GBConfigService.get('STORAGE_LIBRARY'), packagePath, file); - } else { - GBLogEx.debug(min, `No storage information found for ${connectionName}, missing storage name or file.`); - } - connections.push(con); - }); - - const packagePath = GBUtil.getGBAIPath(min.botId, null); - const localFolder = path.join('work', packagePath, 'connections.json'); - await fs.writeFile(localFolder, JSON.stringify(connections), { encoding: null }); - - // Updates instance object. - - await this.core.saveInstance(min.instance); - GBServer.globals.minService.unmountBot(min.botId); - GBServer.globals.minService.mountBot(min.instance); - - GBLogEx.info(min, `Bot ${min.botId} reloaded.`); + if (process.env.ENABLE_PARAMS_ONLINE === 'false') { + if (Fs.existsSync(localPath)) { + GBLogEx.info(min, `Loading .gbot from ${localPath}.`); + await this.deployBotFromLocalPath(localPath, GBServer.globals.publicAddress); + } + } else { + min.instance.params = await this.loadParamsFromTabular(min); } + + let connections = []; + + // Find all tokens in .gbot Config. + const strFind = ' Driver'; + const conns = await min.core['findParam'](min.instance, strFind); + await CollectionUtil.asyncForEach(conns, async t => { + const connectionName = t.replace(strFind, ''); + let con = {}; + con['name'] = connectionName; + con['storageServer'] = min.core.getParam(min.instance, `${connectionName} Server`, null), + con['storageName'] = min.core.getParam(min.instance, `${connectionName} Name`, null), + con['storageUsername'] = min.core.getParam(min.instance, `${connectionName} Username`, null), + con['storagePort'] = min.core.getParam(min.instance, `${connectionName} Port`, null), + con['storagePassword'] = min.core.getParam(min.instance, `${connectionName} Password`, null), + con['storageDriver'] = min.core.getParam(min.instance, `${connectionName} Driver`, null) + connections.push(con); + }); + + const path = DialogKeywords.getGBAIPath(min.botId, null); + const localFolder = Path.join('work', path, 'connections.json'); + Fs.writeFileSync(localFolder, JSON.stringify(connections), { encoding: null }); + + // Updates instance object. + + await this.core.saveInstance(min.instance); + break; case '.gbkb': // Deploys .gbkb into the storage. const service = new KBService(this.core.sequelize); - await service.deployKb(this.core, this, packageWorkFolder, min); + await service.deployKb(this.core, this, localPath, min); break; case '.gbdialog': @@ -720,14 +658,15 @@ export class GBDeployer implements IGBDeployer { // it to the VM. const vm = new GBVMService(); - await vm.loadDialogPackage(packageWorkFolder, min, this.core, this); + await vm.loadDialogPackage(localPath, min, this.core, this); GBLogEx.verbose(min, `Dialogs (.gbdialog) for ${min.botId} loaded.`); break; case '.gbtheme': // Updates server listeners to serve theme files in .gbtheme. - const filePath = path.join(process.env.PWD, 'templates', 'default.gbai', 'default.gbtheme'); - GBServer.globals.server.use('/' + urlJoin('themes', packageName), express.static(filePath)); + + const packageName = Path.basename(localPath); + GBServer.globals.server.use(`/themes/${packageName}`, express.static(localPath)); GBLogEx.verbose(min, `Theme (.gbtheme) assets accessible at: /themes/${packageName}.`); break; @@ -735,13 +674,13 @@ export class GBDeployer implements IGBDeployer { case '.gbapp': // Dynamically compiles and loads .gbapp packages (Node.js packages). - await this.callGBAppCompiler(packageWorkFolder, this.core); + await this.callGBAppCompiler(localPath, this.core); break; case '.gblib': // Dynamically compiles and loads .gblib packages (Node.js packages). - await this.callGBAppCompiler(packageWorkFolder, this.core); + await this.callGBAppCompiler(localPath, this.core); break; default: @@ -750,11 +689,11 @@ export class GBDeployer implements IGBDeployer { } /** - * Removes the package local files from cache. - */ + * Removes the package local files from cache. + */ public async cleanupPackage(instance: IGBInstance, packageName: string) { - const packagePath = GBUtil.getGBAIPath(instance.botId, null, packageName); - const localFolder = path.join('work', packagePath); + const path = DialogKeywords.getGBAIPath(instance.botId, null, packageName); + const localFolder = Path.join('work', path); rimraf.sync(localFolder); } @@ -764,10 +703,11 @@ export class GBDeployer implements IGBDeployer { public async undeployPackageFromPackageName(instance: IGBInstance, packageName: string) { // Gets information about the package. + const packageType = Path.extname(packageName); const p = await this.getStoragePackageByName(instance.instanceId, packageName); - const packagePath = GBUtil.getGBAIPath(instance.botId, null, packageName); - const localFolder = path.join('work', packagePath); + const path = DialogKeywords.getGBAIPath(instance.botId, null, packageName); + const localFolder = Path.join('work', path); return await this.undeployPackageFromLocalPath(instance, localFolder); } @@ -778,15 +718,15 @@ export class GBDeployer implements IGBDeployer { public async undeployPackageFromLocalPath(instance: IGBInstance, localPath: string) { // Gets information about the package. - const packageType = path.extname(localPath); - const packageName = path.basename(localPath); + const packageType = Path.extname(localPath); + const packageName = Path.basename(localPath); const p = await this.getStoragePackageByName(instance.instanceId, packageName); // Removes objects from storage, cloud resources and local files if any. switch (packageType) { case '.gbot': - const packageObject = JSON.parse(await fs.readFile(urlJoin(localPath, 'package.json'), 'utf8')); + const packageObject = JSON.parse(Fs.readFileSync(urlJoin(localPath, 'package.json'), 'utf8')); await this.undeployBot(packageObject.botId, packageName); break; @@ -827,10 +767,12 @@ export class GBDeployer implements IGBDeployer { * its index based on .gbkb structure. */ public async rebuildIndex(instance: IGBInstance, searchSchema: any) { - const key = instance.searchKey ? instance.searchKey : GBServer.globals.minBoot.instance.searchKey; + + const key = instance.searchKey ? instance.searchKey : GBServer.globals.minBoot.instance.searchKey; GBLogEx.info(instance.instanceId, `rebuildIndex running...`); - if (!key) { + if (!key){ + return; } const searchIndex = instance.searchIndex ? instance.searchIndex : GBServer.globals.minBoot.instance.searchIndex; @@ -841,7 +783,12 @@ export class GBDeployer implements IGBDeployer { // Prepares search. - const search = new AzureSearch(key, host, searchIndex, searchIndexer); + const search = new AzureSearch( + key, + host, + searchIndex, + searchIndexer + ); const connectionString = GBDeployer.getConnectionStringFromInstance(GBServer.globals.minBoot.instance); const dsName = 'gb'; @@ -849,11 +796,11 @@ export class GBDeployer implements IGBDeployer { try { await search.deleteDataSource(dsName); - } catch (error) { + } catch (err) { // If it is a 404 there is nothing to delete as it is the first creation. - if (error.code !== 404) { - throw error; + if (err.code !== 404) { + throw err; } } @@ -861,11 +808,11 @@ export class GBDeployer implements IGBDeployer { try { await search.deleteIndex(); - } catch (error) { + } catch (err) { // If it is a 404 there is nothing to delete as it is the first creation. - if (error.code !== 404 && error.code !== 'OperationNotAllowed') { - throw error; + if (err.code !== 404 && err.code !== 'OperationNotAllowed') { + throw err; } } @@ -873,9 +820,9 @@ export class GBDeployer implements IGBDeployer { try { await search.createDataSource(dsName, dsName, 'GuaribasQuestion', 'azuresql', connectionString); - } catch (error) { - GBLog.error(error); - throw error; + } catch (err) { + GBLog.error(err); + throw err; } await search.createIndex(searchSchema, dsName); @@ -897,7 +844,7 @@ export class GBDeployer implements IGBDeployer { * Prepares the React application inside default.gbui folder and * makes this web application available as default web front-end. */ - public async setupDefaultGBUI() { + public setupDefaultGBUI() { // Setups paths. const root = 'packages/default.gbui'; @@ -905,10 +852,10 @@ export class GBDeployer implements IGBDeployer { // Checks if .gbapp compiliation is enabled. - if (!(await GBUtil.exists(`${root}/build`)) && process.env.DISABLE_WEB !== 'true') { + if (!Fs.existsSync(`${root}/build`) && process.env.DISABLE_WEB !== 'true') { // Write a .env required to fix some bungs in create-react-app tool. - await fs.writeFile(`${root}/.env`, 'SKIP_PREFLIGHT_CHECK=true'); + Fs.writeFileSync(`${root}/.env`, 'SKIP_PREFLIGHT_CHECK=true'); // Install modules and compiles the web app. @@ -925,7 +872,7 @@ export class GBDeployer implements IGBDeployer { * Servers bot storage assets to be used by web, WhatsApp and other channels. */ public static mountGBKBAssets(packageName: any, botId: string, filename: string) { - const gbaiName = GBUtil.getGBAIPath(botId); + const gbaiName = DialogKeywords.getGBAIPath(botId); // Servers menu assets. @@ -957,9 +904,6 @@ export class GBDeployer implements IGBDeployer { express.static(urlJoin('work', gbaiName, filename, 'videos')) ); GBServer.globals.server.use(`/${botId}/cache`, express.static(urlJoin('work', gbaiName, 'cache'))); - - // FEAT-A7B1F6 - GBServer.globals.server.use( `/${gbaiName}/${botId}.gbdrive/public`, express.static(urlJoin('work', gbaiName, `${botId}.gbdata`, 'public')) @@ -979,22 +923,22 @@ export class GBDeployer implements IGBDeployer { ) { // Runs `npm install` for the package. - GBLogEx.info(0, `Deploying General Bots Application (.gbapp) or Library (.gblib): ${path.basename(gbappPath)}...`); - let folder = path.join(gbappPath, 'node_modules'); + GBLogEx.info(0, `Deploying General Bots Application (.gbapp) or Library (.gblib): ${Path.basename(gbappPath)}...`); + let folder = Path.join(gbappPath, 'node_modules'); if (process.env.GBAPP_DISABLE_COMPILE !== 'true') { - if (!(await GBUtil.exists(folder))) { - GBLogEx.info(0, `Installing modules for ${path.basename(gbappPath)}...`); + if (!Fs.existsSync(folder)) { + GBLogEx.info(0, `Installing modules for ${gbappPath}...`); child_process.execSync('npm install', { cwd: gbappPath }); } } - folder = path.join(gbappPath, 'dist'); + folder = Path.join(gbappPath, 'dist'); try { // Runs TSC in .gbapp folder. if (process.env.GBAPP_DISABLE_COMPILE !== 'true') { - GBLogEx.info(0, `Compiling: ${path.basename(gbappPath)}.`); - child_process.execSync(path.join(process.env.PWD, 'node_modules/.bin/tsc'), { cwd: gbappPath }); + GBLogEx.info(0, `Compiling: ${gbappPath}.`); + child_process.execSync(Path.join(process.env.PWD, 'node_modules/.bin/tsc'), { cwd: gbappPath }); } // After compiled, adds the .gbapp to the current server VM context. @@ -1045,8 +989,7 @@ export class GBDeployer implements IGBDeployer { 'google-chat.gblib', 'teams.gblib', 'hubspot.gblib', - 'llm.gblib', - 'saas.gbapp' + 'gpt.gblib' ]; return names.indexOf(name) > -1; @@ -1060,7 +1003,7 @@ export class GBDeployer implements IGBDeployer { let appPackagesProcessed = 0; await CollectionUtil.asyncForEach(gbappPackages, async e => { - const filenameOnly = path.basename(e); + const filenameOnly = Path.basename(e); // Skips .gbapp inside deploy folder. diff --git a/packages/core.gbapp/services/GBImporterService.ts b/packages/core.gbapp/services/GBImporterService.ts index 34cda6333..374ef4476 100644 --- a/packages/core.gbapp/services/GBImporterService.ts +++ b/packages/core.gbapp/services/GBImporterService.ts @@ -5,7 +5,7 @@ | ██ ██ █ █ ██ █ █ ██ ██ ██ ██ ██ ██ █ ██ ██ █ █ | | █████ █████ █ ███ █████ ██ ██ ██ ██ █████ ████ █████ █ ███ | | | -| General Bots Copyright (c) pragmatismo.cloud. All rights reserved. | +| General Bots Copyright (c) pragmatismo.cloud. All rights reserved. | | Licensed under the AGPL-3.0. | | | | According to our dual licensing model, this program can be used either | @@ -21,7 +21,7 @@ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | | GNU Affero General Public License for more details. | | | -| "General Bots" is a registered trademark of pragmatismo.cloud. | +| "General Bots" is a registered trademark of pragmatismo.cloud. | | The licensing of the program under the AGPLv3 does not imply a | | trademark license. Therefore any rights, title and interest in | | our trademarks remain entirely with us. | @@ -36,12 +36,11 @@ import { GBMinInstance, IGBCoreService, IGBInstance } from 'botlib'; import { CreateOptions } from 'sequelize/types'; -import fs from 'fs/promises'; +import Fs from 'fs'; import urlJoin from 'url-join'; import { GBServer } from '../../../src/app.js'; import { GuaribasInstance } from '../models/GBModel.js'; import { GBConfigService } from './GBConfigService.js'; -import { GBUtil } from '../../../src/util.js'; /** * Handles the importing of packages. @@ -62,9 +61,9 @@ export class GBImporter { const file = urlJoin(localPath, 'settings.json'); let settingsJson = {botId: botId}; - if (await GBUtil.exists(file)){ + if (Fs.existsSync(file)){ - settingsJson = JSON.parse(await fs.readFile(file, 'utf8')); + settingsJson = JSON.parse(Fs.readFileSync(file, 'utf8')); if (botId === undefined) { botId = settingsJson.botId; } @@ -96,7 +95,7 @@ export class GBImporter { instance = await this.core.loadInstanceByBotId(botId); } - if (instance != undefined && !instance.botId) { + if (instance != undefined && instance.botId === null) { console.log(`Null BotId after load instance with botId: ${botId}.`); } else { instance = additionalInstance; diff --git a/packages/core.gbapp/services/GBLogEx.ts b/packages/core.gbapp/services/GBLogEx.ts index 887243ffe..3a5b764c9 100644 --- a/packages/core.gbapp/services/GBLogEx.ts +++ b/packages/core.gbapp/services/GBLogEx.ts @@ -1,11 +1,13 @@ /*****************************************************************************\ -| █████ █████ ██ █ █████ █████ ████ ██ ████ █████ █████ ███ ® | -| ██ █ ███ █ █ ██ ██ ██ ██ ██ ██ █ ██ ██ █ █ | -| ██ ███ ████ █ ██ █ ████ █████ ██████ ██ ████ █ █ █ ██ | -| ██ ██ █ █ ██ █ █ ██ ██ ██ ██ ██ ██ █ ██ ██ █ █ | -| █████ █████ █ ███ █████ ██ ██ ██ ██ █████ ████ █████ █ ███ | +| ( )_ _ | +| _ _ _ __ _ _ __ ___ ___ _ _ | ,_)(_) ___ _ _ _ | +| ( '_`\ ( '__)/'_` ) /'_ `\/' _ ` _ `\ /'_` )| | | |/',__)/ \ /`\ /'_`\ | +| | (_) )| | ( (_| |( (_) || ( ) ( ) |( (_| || |_ | |\__, \| |*| |( (_) ) | +| | ,__/'(_) `\__,_)`\__ |(_) (_) (_)`\__,_)`\__)(_)(____/(_) (_)`\___/' | +| | | ( )_) | | +| (_) \___/' | | | -| General Bots Copyright (c) pragmatismo.cloud. All rights reserved. | +| General Bots Copyright (c) pragmatismo.cloud. All rights reserved. | | Licensed under the AGPL-3.0. | | | | According to our dual licensing model, this program can be used either | @@ -21,7 +23,7 @@ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | | GNU Affero General Public License for more details. | | | -| "General Bots" is a registered trademark of pragmatismo.cloud. | +| "General Bots" is a registered trademark of pragmatismo.cloud. | | The licensing of the program under the AGPLv3 does not imply a | | trademark license. Therefore any rights, title and interest in | | our trademarks remain entirely with us. | @@ -37,51 +39,50 @@ import { GBLog, IGBInstance } from 'botlib'; import { GuaribasLog } from '../models/GBModel.js'; import { GBServer } from '../../../src/app.js'; -import { GBConfigService } from './GBConfigService.js'; export class GBLogEx { - private static async logWithLevel( - level: 'error' | 'debug' | 'info' | 'verbose', - minOrInstanceId: any, - message: string - ) { - const instanceId = this.normalizeInstanceId(minOrInstanceId); - GBLog[level](`${instanceId}: ${message}`); - await this.log(instanceId, level.charAt(0), message); - } - - private static normalizeInstanceId(minOrInstanceId: any): string | number { - if (typeof minOrInstanceId === 'object') { - return minOrInstanceId.instance ? minOrInstanceId.instance.botId : minOrInstanceId.botId; - } - return minOrInstanceId === 0 ? 'default' : minOrInstanceId; - } - public static async error(minOrInstanceId: any, message: string) { - await this.logWithLevel('error', minOrInstanceId, message); + if (typeof minOrInstanceId === 'object') { + minOrInstanceId = minOrInstanceId.instance.instanceId; + } + GBLog.error(`${minOrInstanceId}: ${message}`); + await this.log(minOrInstanceId, 'e', message); } public static async debug(minOrInstanceId: any, message: string) { - await this.logWithLevel('debug', minOrInstanceId, message); + if (typeof minOrInstanceId === 'object') { + minOrInstanceId = minOrInstanceId.instance.instanceId; + } + GBLog.debug(`${minOrInstanceId}: ${message}`); + await this.log(minOrInstanceId, 'd', message); } public static async info(minOrInstanceId: any, message: string) { - await this.logWithLevel('info', minOrInstanceId, message); + + if (typeof minOrInstanceId === 'object') { + minOrInstanceId = minOrInstanceId.instance.instanceId; + } + GBLog.info(`${minOrInstanceId}: ${message}`); + await this.log(minOrInstanceId, 'i', message); } public static async verbose(minOrInstanceId: any, message: string) { - await this.logWithLevel('verbose', minOrInstanceId, message); + if (typeof minOrInstanceId === 'object') { + minOrInstanceId = minOrInstanceId.instance.instanceId; + } + GBLog.verbose(`${minOrInstanceId}: ${message}`); + await this.log(minOrInstanceId, 'v', message); } /** * Finds and update user agent information to a next available person. */ - public static async log(instance, kind: string, message: string): Promise { - if (GBConfigService.get('LOG_ON_STORAGE')) { + public static async log(instance: IGBInstance, kind: string, message: string): Promise { + if (process.env.LOG_ON_STORAGE) { message = message ? message.substring(0, 1023) : null; return await GuaribasLog.create({ - instanceId: instance ? instance : 0, + instanceId: instance ? instance.instanceId : GBServer.globals, message: message, kind: kind }); diff --git a/packages/core.gbapp/services/GBMinService.ts b/packages/core.gbapp/services/GBMinService.ts index fa7e6d602..4dda229e5 100644 --- a/packages/core.gbapp/services/GBMinService.ts +++ b/packages/core.gbapp/services/GBMinService.ts @@ -5,7 +5,7 @@ | ██ ██ █ █ ██ █ █ ██ ██ ██ ██ ██ ██ █ ██ ██ █ █ | | █████ █████ █ ███ █████ ██ ██ ██ ██ █████ ████ █████ █ ███ | | | -| General Bots Copyright (c) pragmatismo.cloud. All rights reserved. | +| General Bots Copyright (c) pragmatismo.cloud. All rights reserved. | | Licensed under the AGPL-3.0. | | | | According to our dual licensing model, this program can be used either | @@ -21,7 +21,7 @@ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | | GNU Affero General Public License for more details. | | | -| "General Bots" is a registered trademark of pragmatismo.cloud. | +| "General Bots" is a registered trademark of pragmatismo.cloud. | | The licensing of the program under the AGPLv3 does not imply a | | trademark license. Therefore any rights, title and interest in | | our trademarks remain entirely with us. | @@ -33,12 +33,19 @@ */ 'use strict'; -import { createRpcServer } from '@push-rpc/core'; +import cliProgress from 'cli-progress'; +import { DialogSet, TextPrompt } from 'botbuilder-dialogs'; +import SwaggerClient from 'swagger-client'; +import removeRoute from 'express-remove-route'; import AuthenticationContext from 'adal-node'; +import { FacebookAdapter } from 'botbuilder-adapter-facebook'; +import mkdirp from 'mkdirp'; +import Fs from 'fs'; import arrayBufferToBuffer from 'arraybuffer-to-buffer'; -import { Semaphore } from 'async-mutex'; -import { Mutex } from 'async-mutex'; -import chokidar from 'chokidar'; +import { NlpManager } from 'node-nlp'; +import Koa from 'koa'; +import { createRpcServer } from '@push-rpc/core'; +import wash from 'washyourmouthoutwithsoap'; import { AutoSaveStateMiddleware, BotFrameworkAdapter, @@ -47,16 +54,7 @@ import { TurnContext, UserState } from 'botbuilder'; -import { FacebookAdapter } from 'botbuilder-adapter-facebook'; -import { - AttachmentPrompt, - ConfirmPrompt, - DialogSet, - OAuthPrompt, - TextPrompt, - WaterfallDialog -} from 'botbuilder-dialogs'; -import { MicrosoftAppCredentials } from 'botframework-connector'; +import { AttachmentPrompt, ConfirmPrompt, OAuthPrompt, WaterfallDialog } from 'botbuilder-dialogs'; import { GBDialogStep, GBLog, @@ -67,33 +65,13 @@ import { IGBInstance, IGBPackage } from 'botlib'; -import cliProgress from 'cli-progress'; -import removeRoute from 'express-remove-route'; -import fs from 'fs/promises'; -import Koa from 'koa'; -import mkdirp from 'mkdirp'; -import { NlpManager } from 'node-nlp'; -import path from 'path'; import { CollectionUtil } from 'pragmatismo-io-framework'; -import SwaggerClient from 'swagger-client'; -import urlJoin from 'url-join'; -import wash from 'washyourmouthoutwithsoap'; -import { v2 as webdav } from 'webdav-server'; -import { start as startRouter } from '../../../packages/core.gbapp/services/router/bridge.js'; +import { MicrosoftAppCredentials } from 'botframework-connector'; import { GBServer } from '../../../src/app.js'; -import { GBUtil } from '../../../src/util.js'; import { GBAdminService } from '../../admin.gbapp/services/GBAdminService.js'; import { GuaribasConversationMessage } from '../../analytics.gblib/models/index.js'; import { AnalyticsService } from '../../analytics.gblib/services/AnalyticsService.js'; -import { createKoaHttpServer } from '../../basic.gblib/index.js'; -import { DebuggerService } from '../../basic.gblib/services/DebuggerService.js'; -import { DialogKeywords } from '../../basic.gblib/services/DialogKeywords.js'; import { GBVMService } from '../../basic.gblib/services/GBVMService.js'; -import { ImageProcessingServices } from '../../basic.gblib/services/ImageProcessingServices.js'; -import { ScheduleServices } from '../../basic.gblib/services/ScheduleServices.js'; -import { SystemKeywords } from '../../basic.gblib/services/SystemKeywords.js'; -import { WebAutomationServices } from '../../basic.gblib/services/WebAutomationServices.js'; -import { GoogleChatDirectLine } from '../../google-chat.gblib/services/GoogleChatDirectLine.js'; import { AskDialogArgs } from '../../kb.gbapp/dialogs/AskDialog.js'; import { KBService } from '../../kb.gbapp/services/KBService.js'; import { SecService } from '../../security.gbapp/services/SecService.js'; @@ -102,8 +80,19 @@ import { Messages } from '../strings.js'; import { GBConfigService } from './GBConfigService.js'; import { GBConversationalService } from './GBConversationalService.js'; import { GBDeployer } from './GBDeployer.js'; -import { GBLogEx } from './GBLogEx.js'; +import urlJoin from 'url-join'; +import { GoogleChatDirectLine } from '../../google-chat.gblib/services/GoogleChatDirectLine.js'; +import { SystemKeywords } from '../../basic.gblib/services/SystemKeywords.js'; +import Path from 'path'; import { GBSSR } from './GBSSR.js'; +import { DialogKeywords } from '../../basic.gblib/services/DialogKeywords.js'; +import { GBLogEx } from './GBLogEx.js'; +import { WebAutomationServices } from '../../basic.gblib/services/WebAutomationServices.js'; +import { createKoaHttpServer } from '../../basic.gblib/index.js'; +import { DebuggerService } from '../../basic.gblib/services/DebuggerService.js'; +import { ImageProcessingServices } from '../../basic.gblib/services/ImageProcessingServices.js'; +import { ScheduleServices } from '../../basic.gblib/services/ScheduleServices.js'; +import { GBUtil } from '../../../src/util.js'; /** * Minimal service layer for a bot and encapsulation of BOT Framework calls. @@ -135,7 +124,6 @@ export class GBMinService { public deployer: GBDeployer; bar1; - static pidsConversation = {}; /** * Static initialization of minimal instance. @@ -152,13 +140,23 @@ export class GBMinService { this.deployer = deployer; } + + public async enableAPI(min: GBMinInstance) { + + } + /** * Constructs a new minimal instance for each bot. */ - public async buildMin(instances: IGBInstance[]): Promise { + public async buildMin(instances: IGBInstance[]) { // Servers default UI on root address '/' if web enabled. if (process.env.DISABLE_WEB !== 'true') { + // SSR processing and default.gbui access definition. + + GBServer.globals.server.get('/', async (req, res, next) => { + await GBSSR.ssrFilter(req, res, next); + }); // Servers the bot information object via HTTP so clients can get // instance information stored on server. @@ -169,74 +167,33 @@ export class GBMinService { // Calls mountBot event to all bots. let i = 1; - const minInstances = []; + + if (instances.length > 1) { + } await CollectionUtil.asyncForEach( instances, (async instance => { try { - GBLogEx.info(instance, `Mounting...`); - const min = await this['mountBot'](instance); - minInstances.push(min); + GBLog.info(`Mounting ${instance.botId}...`) + await this['mountBot'](instance); } catch (error) { - GBLogEx.error(instance, `Error mounting bot: ${error.message}\n${error.stack}`); + GBLog.error(`Error mounting bot ${instance.botId}: ${error.message}\n${error.stack}`); } }).bind(this) ); + // Loads API. + + await this.ensureAPI(); + // Loads schedules. GBLogEx.info(0, `Loading SET SCHEDULE entries...`); const service = new ScheduleServices(); await service.scheduleAll(); - GBLogEx.info(0, `All Bot service instances loaded.`); - - return minInstances; - } - - public async startSimpleTest(min) { - if (process.env.TEST_MESSAGE && min['isDefault']) { - GBLogEx.info(min, `Starting auto test with '${process.env.TEST_MESSAGE}'.`); - - const client = await GBUtil.getDirectLineClient(min); - const sec = new SecService(); - const user = await sec.ensureUser(min, 'testuser', 'testuser', '', 'test', 'testuser', null); - const pid = GBVMService.createProcessInfo(user, min, 'api', null); - - const response = await client.apis.Conversations.Conversations_StartConversation( - { - userSystemId: user.userSystemId, - userName: user.userName, - pid: pid - } - - ); - const conversationId = response.obj.conversationId; - GBServer.globals.debugConversationId = conversationId; - - const steps = process.env.TEST_MESSAGE.split(';'); - - await CollectionUtil.asyncForEach(steps, async step => { - client.apis.Conversations.Conversations_PostActivity({ - conversationId: conversationId, - activity: { - textFormat: 'plain', - text: step, - pid: pid, - type: 'message', - from: { - id: 'test', - name: 'test', - channelIdEx: 'web', - pid: pid - }, - } - }); - - await GBUtil.sleep(3000); - }); - } + GBLogEx.info(0, `All Bot instances loaded.`); } /** @@ -260,7 +217,7 @@ export class GBMinService { // TODO: https://github.com/GeneralBots/BotServer/issues/321 const options = { passphrase: process.env.CERTIFICATE2_PASSPHRASE, - pfx: await fs.readFile(process.env.CERTIFICATE2_PFX) + pfx: Fs.readFileSync(process.env.CERTIFICATE2_PFX) }; const domain = min.core.getParam(min.instance, 'Domain', null); @@ -285,6 +242,7 @@ export class GBMinService { * installing all BASIC artifacts from .gbdialog and OAuth2. */ public async mountBot(instance: IGBInstance) { + // Build bot adapter. const { min, adapter, conversationState } = await this.buildBotAdapter( @@ -296,104 +254,85 @@ export class GBMinService { // https://github.com/GeneralBots/BotServer/issues/286 // min['groupCache'] = await KBService.getGroupReplies(instance.instanceId); - min['isDefault'] = GBServer.globals.minInstances.length === 0; - GBServer.globals.minInstances.push(min); const user = null; // No user context. - await GBVMService.loadConnections(min); + await this.deployer['deployPackage2'](min, user, 'packages/default.gbtheme'); // Install per bot deployed packages. - let packagePath = urlJoin(`work`, GBUtil.getGBAIPath(min.botId, 'gbdialog')); - if (await GBUtil.exists(packagePath)) { + let packagePath = urlJoin(`work`, DialogKeywords.getGBAIPath(min.botId, 'gbdialog')); + if (Fs.existsSync(packagePath)) { await this.deployer['deployPackage2'](min, user, packagePath); } - packagePath = urlJoin(`work`, GBUtil.getGBAIPath(min.botId, 'gbapp')); - if (await GBUtil.exists(packagePath)) { + packagePath = urlJoin(`work`, DialogKeywords.getGBAIPath(min.botId, 'gbapp')); + if (Fs.existsSync(packagePath)) { await this.deployer['deployPackage2'](min, user, packagePath); } - packagePath = urlJoin(`work`, GBUtil.getGBAIPath(min.botId, 'gbtheme')); - if (await GBUtil.exists(packagePath)) { + packagePath = urlJoin(`work`, DialogKeywords.getGBAIPath(min.botId, 'gbtheme')); + if (Fs.existsSync(packagePath)) { await this.deployer['deployPackage2'](min, user, packagePath); - await this.watchPackages(min, 'gbtheme'); - } else { - await this.deployer['deployPackage2'](min, user, path.join('work', 'default.gbai', 'default.gbtheme')); } - - packagePath = urlJoin(`work`, GBUtil.getGBAIPath(min.botId, `gblib`)); - if (await GBUtil.exists(packagePath)) { + packagePath = urlJoin(`work`, DialogKeywords.getGBAIPath(min.botId, `gblib`)); + if (Fs.existsSync(packagePath)) { await this.deployer['deployPackage2'](min, user, packagePath); } - const gbai = GBUtil.getGBAIPath(min.botId); + const gbai = DialogKeywords.getGBAIPath(min.botId); let dir = `work/${gbai}/cache`; const botId = gbai.replace(/\.[^/.]+$/, ''); - if (!(await GBUtil.exists(dir))) { + if (!Fs.existsSync(dir)) { mkdirp.sync(dir); } dir = `work/${gbai}/profile`; - if (!(await GBUtil.exists(dir))) { + if (!Fs.existsSync(dir)) { mkdirp.sync(dir); } dir = `work/${gbai}/uploads`; - if (!(await GBUtil.exists(dir))) { + if (!Fs.existsSync(dir)) { mkdirp.sync(dir); } - dir = `work/${gbai}/${botId}.gbkb`; - if (!(await GBUtil.exists(dir))) { + if (!Fs.existsSync(dir)) { mkdirp.sync(dir); } - await this.watchPackages(min, 'gbkb'); - dir = `work/${gbai}/${botId}.gbkb/docs-vectorized`; - if (!(await GBUtil.exists(dir))) { + if (!Fs.existsSync(dir)) { mkdirp.sync(dir); } - dir = `work/${gbai}/${botId}.gbdialog`; - if (!(await GBUtil.exists(dir))) { + if (!Fs.existsSync(dir)) { mkdirp.sync(dir); } - await this.watchPackages(min, 'gbdialog'); - dir = `work/${gbai}/${botId}.gbot`; - if (!(await GBUtil.exists(dir))) { + if (!Fs.existsSync(dir)) { mkdirp.sync(dir); } - await this.watchPackages(min, 'gbot'); - dir = `work/${gbai}/${botId}.gbui`; - if (!(await GBUtil.exists(dir))) { + if (!Fs.existsSync(dir)) { + mkdirp.sync(dir); + } + dir = `work/${gbai}/users`; + if (!Fs.existsSync(dir)) { mkdirp.sync(dir); } - dir = `work/${gbai}/users`; - if (!(await GBUtil.exists(dir))) { - mkdirp.sync(dir); - } + // Loads Named Entity data for this bot. + + // TODO: await KBService.RefreshNER(min); // Calls the loadBot context.activity for all packages. await this.invokeLoadBot(min.appPackages, GBServer.globals.sysPackages, min); + + // Serves individual URL for each bot conversational interface. + const receiver = async (req, res) => { - let path = /(http[s]?:\/\/)?([^\/\s]+\/)(.*)/gi; - const botId = req.url.substr(req.url.lastIndexOf('/') + 1); - - const min = GBServer.globals.minInstances.filter(p => p.instance.botId == botId)[0]; - - await this.receiver(req, res, conversationState, min, GBServer.globals.appPackages); + await this.receiver(req, res, conversationState, min, instance, GBServer.globals.appPackages); }; - let url = `/api/messages/${instance.botId}`; + const url = `/api/messages/${instance.botId}`; GBServer.globals.server.post(url, receiver); - - if (min['default']) { - url = `/api/messages`; - GBServer.globals.server.post(url, receiver); - } - GBServer.globals.server.get(url, (req, res) => { if (req.query['hub.mode'] === 'subscribe') { if (req.query['hub.verify_token'] === process.env.FACEBOOK_VERIFY_TOKEN) { @@ -406,18 +345,51 @@ export class GBMinService { } res.end(); }); - - await this.ensureAPI(); - GBLog.verbose(`GeneralBots(${instance.engineName}) listening on: ${url}.`); - // Generates MS Teams manifest. + // Test code. + if (process.env.TEST_MESSAGE) { + GBLogEx.info(min, `Starting auto test with '${process.env.TEST_MESSAGE}'.`); - const manifest = `${instance.botId}-Teams.zip`; - const packageTeams = urlJoin(`work`, GBUtil.getGBAIPath(instance.botId), manifest); - if (!(await GBUtil.exists(packageTeams))) { - const data = await this.deployer.getBotManifest(instance); - await fs.writeFile(packageTeams, data); + const client = await new SwaggerClient({ + spec: JSON.parse(Fs.readFileSync('directline-3.0.json', 'utf8')), + requestInterceptor: req => { + req.headers['Authorization'] = `Bearer ${min.instance.webchatKey}`; + } + }); + + const response = await client.apis.Conversations.Conversations_StartConversation(); + const conversationId = response.obj.conversationId; + GBServer.globals.debugConversationId = conversationId; + + const steps = process.env.TEST_MESSAGE.split(';'); + + await CollectionUtil.asyncForEach(steps, async step => { + client.apis.Conversations.Conversations_PostActivity({ + conversationId: conversationId, + activity: { + textFormat: 'plain', + text: step, + type: 'message', + from: { + id: 'test', + name: 'test' + } + } + }); + + await GBUtil.sleep(3000); + }); + + // Generates MS Teams manifest. + + const manifest = `${instance.botId}-Teams.zip`; + const packageTeams = urlJoin(`work`, DialogKeywords.getGBAIPath(instance.botId), manifest); + if (!Fs.existsSync(packageTeams)) { + GBLogEx.info(min, 'Generating MS Teams manifest....'); + const data = await this.deployer.getBotManifest(instance); + Fs.writeFileSync(packageTeams, data); + } } // Serves individual URL for each bot user interface. @@ -454,50 +426,37 @@ export class GBMinService { // Setups official handler for WhatsApp. - GBServer.globals.server - .all(`/${min.instance.botId}/whatsapp`, async (req, res) => { + GBServer.globals.server.all(`/${min.instance.botId}/whatsapp`, async (req, res) => { - const status = req.body?.entry?.[0]?.changes?.[0]?.value?.statuses?.[0]; - if (status) { - GBLogEx.verbose(min, `WhatsApp: ${status.recipient_id} ${status.status}`); - return; + if (req.query['hub.mode'] === 'subscribe') { + const val = req.query['hub.verify_token']; + + if (val === process.env.META_CHALLENGE) { + res.send(req.query['hub.challenge']); + res.status(200); + GBLogEx.info(min, `Meta callback OK. ${JSON.stringify(req.query)}`); + } else { + res.status(401); } + res.end(); - if (req.query['hub.mode'] === 'subscribe') { - const val = req.query['hub.verify_token']; - const challenge = (min.core['getParam'] as any)(min.instance, `Meta Challenge`, null, true); + return; + } - if (challenge && val === challenge) { - res.send(req.query['hub.challenge']); - res.status(200); - GBLogEx.info(min, `Meta callback OK. ${JSON.stringify(req.query)}`); - } else { - res.status(401); - } - res.end(); + let whatsAppDirectLine = min.whatsAppDirectLine; - return; - } + // Not meta, multiples bots on root bot. - let whatsAppDirectLine = min.whatsAppDirectLine; + if (!req.body.object) { + const to = req.body.To.replace(/whatsapp\:\+/gi, ''); + whatsAppDirectLine = WhatsappDirectLine.botsByNumber[to]; + } - // Not meta, multiples bots on root bot. - - if (!req.body.object) { - const to = req.body.To.replace(/whatsapp\:\+/gi, ''); - whatsAppDirectLine = WhatsappDirectLine.botsByNumber[to]; - } - - if (whatsAppDirectLine) { - await whatsAppDirectLine.WhatsAppCallback(req, res, whatsAppDirectLine.botId); - } - }) - .bind(min); + await whatsAppDirectLine.WhatsAppCallback(req, res, whatsAppDirectLine.botId); + }).bind(min); GBDeployer.mountGBKBAssets(`${botId}.gbkb`, botId, `${botId}.gbkb`); - - return min; } public static getProviderName(req: any, res: any) { @@ -551,7 +510,9 @@ export class GBMinService { * on https:////token URL. */ private handleOAuthTokenRequests(server: any, min: GBMinInstance, instance: IGBInstance) { + server.get(`/${min.instance.botId}/token`, async (req, res) => { + let tokenName = req.query['value']; if (!tokenName) { tokenName = ''; @@ -574,7 +535,9 @@ export class GBMinService { if (tokenName) { const code = req?.query?.code; - let url = urlJoin(host, tenant, 'oauth/token'); + let url = urlJoin( + host, + tenant, 'oauth/token'); let buff = new Buffer(`${clientId}:${clientSecret}`); const base64 = buff.toString('base64'); @@ -586,14 +549,14 @@ export class GBMinService { 'Content-Type': 'application/x-www-form-urlencoded' }, body: new URLSearchParams({ - grant_type: 'authorization_code', - code: code + 'grant_type': 'authorization_code', + 'code': code }) }; const result = await fetch(url, options); if (result.status != 200) { - throw new Error(`handleOAuthTokenRequests error: ${result.status}: ${result.statusText}.`); + throw new Error(`handleOAuthTokenRequests error: ${result.status}: ${result.statusText}.`) } const text = await result.text(); @@ -601,31 +564,24 @@ export class GBMinService { // Saves token to the database. - await this.adminService.setValue( - instance.instanceId, - `${tokenName}accessToken`, - token['accessToken'] ? token['accessToken'] : token['access_token'] - ); - await this.adminService.setValue( - instance.instanceId, - `${tokenName}refreshToken`, - token['refreshToken'] ? token['refreshToken'] : token['refresh_token'] - ); + await this.adminService.setValue(instance.instanceId, + `${tokenName}accessToken`, token['accessToken'] ? token['accessToken'] : token['access_token']); + await this.adminService.setValue(instance.instanceId, + `${tokenName}refreshToken`, token['refreshToken'] ? token['refreshToken'] : token['refresh_token']); - await this.adminService.setValue( - instance.instanceId, - `${tokenName}expiresOn`, - token['expiresOn'] - ? token['expiresOn'].toString() - : new Date(Date.now() + token['expires_in'] * 1000).toString() - ); + await this.adminService.setValue(instance.instanceId, + `${tokenName}expiresOn`, token['expiresOn'] ? + token['expiresOn'].toString() : + new Date(Date.now() + (token['expires_in'] * 1000)).toString()); await this.adminService.setValue(instance.instanceId, `${tokenName}AntiCSRFAttackState`, null); - } else { + + + } + else { const authenticationContext = new AuthenticationContext.AuthenticationContext( urlJoin( tokenName ? host : min.instance.authenticatorAuthorityHostUrl, - tokenName ? tenant : min.instance.authenticatorTenant - ) + tokenName ? tenant : min.instance.authenticatorTenant) ); const resource = 'https://graph.microsoft.com'; @@ -639,24 +595,26 @@ export class GBMinService { tokenName ? clientSecret : instance.marketplacePassword, async (err, token) => { if (err) { + const msg = `handleOAuthTokenRequests: Error acquiring token: ${err}`; GBLog.error(msg); res.send(msg); + } else { + // Saves token to the database. await this.adminService.setValue(instance.instanceId, `${tokenName}accessToken`, token['accessToken']); await this.adminService.setValue(instance.instanceId, `${tokenName}refreshToken`, token['refreshToken']); - await this.adminService.setValue( - instance.instanceId, - `${tokenName}expiresOn`, - token['expiresOn'].toString() - ); + await this.adminService.setValue(instance.instanceId, `${tokenName}expiresOn`, token['expiresOn'].toString()); await this.adminService.setValue(instance.instanceId, `${tokenName}AntiCSRFAttackState`, null); + } } ); + + } // Inform the home for default .gbui after finishing token retrival. @@ -693,16 +651,19 @@ export class GBMinService { botId = GBConfigService.get('BOT_ID'); } + // Loads by the botId itself or by the activationCode field. let instance = await this.core.loadInstanceByBotId(botId); if (instance === null) { instance = await this.core.loadInstanceByActivationCode(botId); } + GBLogEx.info(instance.instanceId, `Client requested instance for: ${botId}.`); if (instance !== null) { // Gets the webchat token, speech token and theme. + const webchatTokenContainer = await this.getWebchatToken(instance); const speechToken = instance.speechKey != undefined ? await this.getSTSToken(instance) : null; let theme = instance.theme; @@ -712,36 +673,29 @@ export class GBMinService { theme = `default.gbtheme`; } - let logo = this.core.getParam(instance, 'Logo', null); + res.send( + JSON.stringify({ + instanceId: instance.instanceId, + botId: botId, + theme: theme, + webchatToken: webchatTokenContainer.token, + speechToken: speechToken, + conversationId: webchatTokenContainer.conversationId, + authenticatorTenant: instance.authenticatorTenant, + authenticatorClientId: instance.marketplaceId, + paramLogoImageUrl: this.core.getParam(instance, 'Logo Image Url', null), + paramLogoImageAlt: this.core.getParam(instance, 'Logo Image Alt', null), + paramLogoImageWidth: this.core.getParam(instance, 'Logo Image Width', null), + paramLogoImageHeight: this.core.getParam(instance, 'Logo Image Height', null), + paramLogoImageType: this.core.getParam(instance, 'Logo Image Type', null), + logo: this.core.getParam(instance, 'Logo', null), + color1: this.core.getParam(instance, 'Color1', null), + color2: this.core.getParam(instance, 'Color2', null), + + - logo = logo ? urlJoin(instance.botId, 'cache', logo) : 'images/logo-gb.png'; - - let config = { - instanceId: instance.instanceId, - botId: botId, - theme: theme, - speechToken: speechToken, - authenticatorTenant: instance.authenticatorTenant, - authenticatorClientId: instance.marketplaceId, - paramLogoImageUrl: this.core.getParam(instance, 'Logo Image Url', null), - paramLogoImageAlt: this.core.getParam(instance, 'Logo Image Alt', null), - paramLogoImageWidth: this.core.getParam(instance, 'Logo Image Width', null), - paramLogoImageHeight: this.core.getParam(instance, 'Logo Image Height', null), - paramLogoImageType: this.core.getParam(instance, 'Logo Image Type', null), - logo: logo, - color1: this.core.getParam(instance, 'Color1', null), - color2: this.core.getParam(instance, 'Color2', null) - }; - - if (!GBConfigService.get('STORAGE_NAME')) { - config['domain'] = `http://localhost:${GBConfigService.get('PORT')}/directline/${botId}`; - } else { - const webchatTokenContainer = await this.getWebchatToken(instance); - config['conversationId'] = webchatTokenContainer.conversationId; - config['webchatToken'] = webchatTokenContainer.token; - } - - res.send(JSON.stringify(config)); + }) + ); } else { const error = `Instance not found while retrieving from .gbui web client: ${botId}.`; res.sendStatus(error); @@ -799,18 +753,12 @@ export class GBMinService { private async buildBotAdapter(instance: any, sysPackages: IGBPackage[], appPackages: IGBPackage[]) { // MSFT stuff. - let config = { + const adapter = new BotFrameworkAdapter({ appId: instance.marketplaceId ? instance.marketplaceId : GBConfigService.get('MARKETPLACE_ID'), appPassword: instance.marketplacePassword ? instance.marketplacePassword : GBConfigService.get('MARKETPLACE_SECRET') - }; - if (!GBConfigService.get('STORAGE_NAME')) { - startRouter(GBServer.globals.server, instance.botId); - config['clientOptions'] = { baseUri: `http://localhost:${GBConfigService.get('PORT')}` }; - } - - const adapter = new BotFrameworkAdapter(config); + }); const storage = new MemoryStorage(); const conversationState = new ConversationState(storage); const userState = new UserState(storage); @@ -823,28 +771,6 @@ export class GBMinService { // The minimal bot is built here. const min = new GBMinInstance(); - - // Setups default BOT Framework dialogs. - - min.userProfile = conversationState.createProperty('userProfile'); - const dialogState = conversationState.createProperty('dialogState'); - - min.dialogs = new DialogSet(dialogState); - min.dialogs.add(new TextPrompt('textPrompt')); - min.dialogs.add(new AttachmentPrompt('attachmentPrompt')); - - min.dialogs.add(new ConfirmPrompt('confirmPrompt')); - if (process.env.ENABLE_AUTH) { - min.dialogs.add( - new OAuthPrompt('oAuthPrompt', { - connectionName: 'OAuth2', - text: 'Please sign in to General Bots.', - title: 'Sign in', - timeout: 300000 - }) - ); - } - min.botId = instance.botId; min.bot = adapter; min.userState = userState; @@ -859,9 +785,9 @@ export class GBMinService { min.sandBoxMap = {}; min['scheduleMap'] = {}; min['conversationWelcomed'] = {}; - if (await min.core.getParam(min.instance, 'Answer Mode', null)) { - const gbkbPath = GBUtil.getGBAIPath(min.botId, 'gbkb'); - min['vectorStorePath'] = path.join('work', gbkbPath, 'docs-vectorized'); + if (process.env.OPENAI_API_KEY) { + const gbkbPath = DialogKeywords.getGBAIPath(min.botId, 'gbkb'); + min['vectorStorePath'] = Path.join('work', gbkbPath, 'docs-vectorized'); min['vectorStore'] = await this.deployer.loadOrCreateEmptyVectorStore(min); } min['apiConversations'] = {}; @@ -876,6 +802,7 @@ export class GBMinService { GBServer.globals.minBoot = min; GBServer.globals.minBoot.instance.marketplaceId = GBConfigService.get('MARKETPLACE_ID'); GBServer.globals.minBoot.instance.marketplacePassword = GBConfigService.get('MARKETPLACE_SECRET'); + } if (min.instance.facebookWorkplaceVerifyToken) { @@ -933,7 +860,8 @@ export class GBMinService { await min.whatsAppDirectLine.setup(true); } else { - if (min !== minBoot && minBoot.instance.whatsappServiceKey && min.instance.webchatKey) { + if (min !== minBoot && minBoot.instance.whatsappServiceKey + && min.instance.webchatKey) { min.whatsAppDirectLine = new WhatsappDirectLine( min, min.botId, @@ -954,8 +882,26 @@ export class GBMinService { WhatsappDirectLine.botsByNumber[botNumber] = min.whatsAppDirectLine; } - min['default'] = min === minBoot; + // Setups default BOT Framework dialogs. + min.userProfile = conversationState.createProperty('userProfile'); + const dialogState = conversationState.createProperty('dialogState'); + + min.dialogs = new DialogSet(dialogState); + min.dialogs.add(new TextPrompt('textPrompt')); + min.dialogs.add(new AttachmentPrompt('attachmentPrompt')); + + min.dialogs.add(new ConfirmPrompt('confirmPrompt')); + if (process.env.ENABLE_AUTH) { + min.dialogs.add( + new OAuthPrompt('oAuthPrompt', { + connectionName: 'OAuth2', + text: 'Please sign in to General Bots.', + title: 'Sign in', + timeout: 300000 + }) + ); + } return { min, adapter, conversationState }; } @@ -1014,6 +960,7 @@ export class GBMinService { res: any, conversationState: ConversationState, min: GBMinInstance, + instance: any, appPackages: any[] ) { // Uses standard or Facebook Adapter. @@ -1026,13 +973,12 @@ export class GBMinService { // Unifies channel detection. Unmarshalls group information. - req.body.channelId = req.body?.from?.channelIdEx === 'whatsapp' ? 'omnichannel' : req.body.channelId; - req.body.group = req.body?.from?.group; + req.body.channelId = req.body.from.channelIdEx === 'whatsapp' ? 'omnichannel' : req.body.channelId; + req.body.group = req.body.from.group; // Default activity processing and handler. const handler = async context => { - // Handle activity text issues. if (!context.activity.text) { @@ -1045,20 +991,14 @@ export class GBMinService { const step = await min.dialogs.createContext(context); step.context.activity.locale = 'pt-BR'; - + const member = context.activity.from; const sec = new SecService(); - let member = context.activity.recipient; - - if (process.env.STORAGE_NAME || !member) { - member = context.activity.from; - } - let user = await sec.ensureUser(min, member.id, member.name, '', 'web', member.name, null); + const user = await sec.ensureUser(min, member.id, member.name, '', 'web', member.name, null); const userId = user.userId; const params = user.params ? JSON.parse(user.params) : {}; try { const conversationReference = JSON.stringify(TurnContext.getConversationReference(context.activity)); - user = await sec.updateConversationReferenceById(user.userId, conversationReference); // First time processing. @@ -1096,7 +1036,7 @@ export class GBMinService { if (step.context.activity.channelId !== 'msteams') { const service = new KBService(min.core.sequelize); - const data = await service.getFaqBySubjectArray(min.instance.instanceId, 'faq', undefined); + const data = await service.getFaqBySubjectArray(instance.instanceId, 'faq', undefined); await min.conversationalService.sendEvent(min, step, 'play', { playerType: 'bullet', data: data.slice(0, 10) @@ -1104,29 +1044,12 @@ export class GBMinService { } } - let conversationId = step.context.activity.conversation.id; - - let pid = GBMinService.pidsConversation[conversationId]; - + let pid = step.context.activity['pid']; if (!pid) { - - pid = step.context.activity['pid']; - if (!pid) { - pid = WhatsappDirectLine.pidByNumber[context.activity.from.id]; - if (!pid) { - pid = GBVMService.createProcessInfo(user, min, step.context.activity.channelId, null, step); - } - } + pid = GBVMService.createProcessInfo(user, min, step.context.activity.channelId, null, step); } - GBMinService.pidsConversation[conversationId] = pid; step.context.activity['pid'] = pid; - const notes = min.core.getParam(min.instance, 'Notes', null); - if (await this.handleUploads(min, step, user, params, notes != null)) { - return; - - } - // Required for MSTEAMS handling of persisted conversations. if (step.context.activity.channelId === 'msteams') { @@ -1147,11 +1070,11 @@ export class GBMinService { ps: null, qs: null }); - const packagePath = GBUtil.getGBAIPath(min.botId); + const path = DialogKeywords.getGBAIPath(min.botId); const folder = `work/${path}/cache`; const filename = `${GBAdminService.generateUuid()}.png`; - await fs.writeFile(urlJoin(folder, filename), data); + Fs.writeFileSync(urlJoin(folder, filename), data); step.context.activity.text = urlJoin( GBServer.globals.publicAddress, `${min.instance.botId}`, @@ -1164,25 +1087,27 @@ export class GBMinService { const startDialog = min.core.getParam(min.instance, 'Start Dialog', null); if (startDialog) { await sec.setParam(userId, 'welcomed', 'true'); - GBLogEx.info( - min, - `Auto start (teams) dialog is now being called: ${startDialog} for ${min.instance.botId}...` - ); - - await GBVMService.callVM(startDialog.toLowerCase(), min, step, 0); + GBLogEx.info(min, `Auto start (teams) dialog is now being called: ${startDialog} for ${min.instance.botId}...`); + await GBVMService.callVM(startDialog.toLowerCase(), min, step, pid); } } } + // Required for F0 handling of persisted conversations. + + GBLogEx.info(min, + `Input> ${context.activity.text} (type: ${context.activity.type}, name: ${context.activity.name}, channelId: ${context.activity.channelId})` + ); + // Answer to specific BOT Framework event conversationUpdate to auto start dialogs. // Skips if the bot is talking. const startDialog = min.core.getParam(min.instance, 'Start Dialog', null); + if (context.activity.type === 'installationUpdate') { GBLogEx.info(min, `Bot installed on Teams.`); - } else if (context.activity.type === 'conversationUpdate' && - context.activity.membersAdded.length > 0) { + } else if (context.activity.type === 'conversationUpdate' && context.activity.membersAdded.length > 0) { // Check if a bot or a human participant is being added to the conversation. const member = context.activity.membersAdded[0]; @@ -1206,14 +1131,9 @@ export class GBMinService { !GBMinService.userMobile(step) && !min['conversationWelcomed'][step.context.activity.conversation.id] ) { - - const pid = GBVMService.createProcessInfo(user, min, step.context.activity.channelId, null, step); - step.context.activity['pid'] = pid; - min['conversationWelcomed'][step.context.activity.conversation.id] = true; - GBLogEx.info( - min, + GBLogEx.info(min, `Auto start (web 1) dialog is now being called: ${startDialog} for ${min.instance.instanceId}...` ); await GBVMService.callVM(startDialog.toLowerCase(), min, step, pid); @@ -1225,19 +1145,9 @@ export class GBMinService { return; } } else if (context.activity.type === 'message') { - - - - // Required for F0 handling of persisted conversations. - - GBLogEx.info( - min, - `Human: pid:${pid} ${context.activity.from.id} ${GBUtil.toYAML(WhatsappDirectLine.pidByNumber)} ${context.activity.text} (type: ${context.activity.type}, name: ${context.activity.name}, channelId: ${context.activity.channelId})` - ); - - // Processes messages activities. + await this.processMessageActivity(context, min, step, pid); } else if (context.activity.type === 'event') { // Processes events activities. @@ -1245,7 +1155,9 @@ export class GBMinService { await this.processEventActivity(min, user, context, step); } } catch (error) { - GBLog.error(`Receiver: ${GBUtil.toYAML(error)}`); + const msg = `ERROR: ${error.message} ${error.stack} ${error.error ? error.error.body : ''} ${error.error ? (error.error.stack ? error.error.stack : '') : '' + }`; + GBLog.error(msg); await min.conversationalService.sendText( min, @@ -1258,24 +1170,12 @@ export class GBMinService { }; try { - if (!GBConfigService.get('STORAGE_NAME')) { - const context = adapter['createContext'](req); - context['_activity'] = context.activity.body; - await handler(context); - - // Return status - res.status(200); - - res.end(); - } else { - await adapter['processActivity'](req, res, handler); - } + await adapter['processActivity'](req, res, handler); } catch (error) { if (error.code === 401) { GBLog.error('Calling processActivity due to Signing Key could not be retrieved error.'); await adapter['processActivity'](req, res, handler); } else { - GBLog.error(`Error processing activity: ${GBUtil.toYAML(error)}`); throw error; } } @@ -1309,10 +1209,7 @@ export class GBMinService { const startDialog = min.core.getParam(min.instance, 'Start Dialog', null); if (startDialog && !min['conversationWelcomed'][step.context.activity.conversation.id]) { user.welcomed = true; - GBLogEx.info( - min, - `Auto start (web 2) dialog is now being called: ${startDialog} for ${min.instance.instanceId}...` - ); + GBLogEx.info(min, `Auto start (web 2) dialog is now being called: ${startDialog} for ${min.instance.instanceId}...`); await GBVMService.callVM(startDialog.toLowerCase(), min, step, pid); } } else if (context.activity.name === 'updateToken') { @@ -1332,11 +1229,10 @@ export class GBMinService { private static async downloadAttachmentAndWrite(attachment) { const url = attachment.contentUrl; const localFolder = 'work'; - const packagePath = GBUtil.getGBAIPath(this['min'].botId); - const localFileName = path.join(localFolder, packagePath, 'cache', attachment.name); + const path = DialogKeywords.getGBAIPath(this['min'].botId); + const localFileName = Path.join(localFolder, path, 'uploads', attachment.name); let buffer; - if (url.startsWith('data:')) { const base64Data = url.split(';base64,')[1]; buffer = Buffer.from(base64Data, 'base64'); @@ -1349,13 +1245,11 @@ export class GBMinService { buffer = arrayBufferToBuffer(await res.arrayBuffer()); } - await fs.writeFile(localFileName, buffer); + Fs.writeFileSync(localFileName, buffer); return { - name: attachment.name, - filename: localFileName, - url: url, - data: buffer + fileName: attachment.name, + localPath: localFileName }; } @@ -1369,7 +1263,9 @@ export class GBMinService { } private async handleUploads(min, step, user, params, autoSave) { + // Prepare Promises to download each attachment and then execute each Promise. + if ( step.context.activity.attachments && step.context.activity.attachments[0] && @@ -1381,25 +1277,24 @@ export class GBMinService { const successfulSaves = await Promise.all(promises); async function replyForReceivedAttachments(attachmentData) { if (attachmentData) { - // In case of not having HEAR activated before, it is // a upload with no Dialog, so run Auto Save to .gbdrive. const t = new SystemKeywords(); - GBLogEx.info(min, `BASIC (${min.botId}): Upload2 done for ${attachmentData.filename}.`); - const handle = WebAutomationServices.cyrb53({ pid: 0, str: min.botId + attachmentData.filename }); - let data = await fs.readFile(attachmentData.filename); + GBLogEx.info(min, `BASIC (${min.botId}): Upload done for ${attachmentData.fileName}.`); + const handle = WebAutomationServices.cyrb53({ pid: 0, str: min.botId + attachmentData.fileName }); + let data = Fs.readFileSync(attachmentData.localPath); const gbfile = { - filename: path.join(process.env.PWD, attachmentData.filename), + filename: attachmentData.localPath, data: data, - url: attachmentData.url, - name: path.basename(attachmentData.filename) + name: Path.basename(attachmentData.fileName) }; GBServer.globals.files[handle] = gbfile; if (!min.cbMap[user.userId] && autoSave) { + const result = await t['internalAutoSave']({ min: min, handle: handle }); await min.conversationalService.sendText( min, @@ -1408,9 +1303,12 @@ export class GBMinService { ); return; - } else { + } + else { return gbfile; } + + } else { await this.sendActivity('Error uploading file. Please,start again.'); } @@ -1421,16 +1319,12 @@ export class GBMinService { class GBFile { data: Buffer; filename: string; - url: string; - name: string; } - const results = await successfulSaves.reduce(async (accum: GBFile[], item) => { + const results = successfulSaves.reduce((accum: GBFile[], item) => { const result: GBFile = { - data: await fs.readFile(successfulSaves[0]['filename']), - filename: successfulSaves[0]['filename'], - name: successfulSaves[0]['name'], - url: successfulSaves[0]['url'], + data: Fs.readFileSync(successfulSaves[0]['localPath']), + filename: successfulSaves[0]['fileName'] }; accum.push(result); return accum; @@ -1441,11 +1335,11 @@ export class GBMinService { throw new Error('It is only possible to upload one file per message, right now.'); } min.cbMap[user.userId].promise = results[0]; + } else { + return; } } - return successfulSaves.length > 0; } - return false; } /** @@ -1473,8 +1367,7 @@ export class GBMinService { context.activity.text = context.activity.text.trim(); const member = context.activity.from; - let memberId = null, - email = null; + let memberId, email; // Processes e-mail from id in case of Teams messages. @@ -1506,8 +1399,10 @@ export class GBMinService { const userId = user.userId; const params = user.params ? JSON.parse(user.params) : {}; + let message: GuaribasConversationMessage; if (process.env.PRIVACY_STORE_MESSAGES === 'true') { + // Adds message to the analytics layer. const analytics = new AnalyticsService(); @@ -1525,6 +1420,7 @@ export class GBMinService { userId, context.activity.text ); + } } @@ -1543,22 +1439,23 @@ export class GBMinService { ) { await sec.setParam(userId, 'welcomed', 'true'); min['conversationWelcomed'][step.context.activity.conversation.id] = true; - GBLogEx.info( - min, + GBLogEx.info(min, `Auto start (4) dialog is now being called: ${startDialog} for ${min.instance.instanceId}...` ); await GBVMService.callVM(startDialog.toLowerCase(), min, step, pid); - - + return; } } + const notes = min.core.getParam(min.instance, 'Notes', null); + await this.handleUploads(min, step, user, params, notes != null); + // Files in .gbdialog can be called directly by typing its name normalized into JS . const isVMCall = Object.keys(min.scriptMap).find(key => min.scriptMap[key] === context.activity.text) !== undefined; - // TODO: Externalize intents for LLM. + // TODO: Externalize intents for GPT. if (/create dialog|creative dialog|create a dialog|criar diálogo|criar diálogo/gi.test(context.activity.text)) { await step.beginDialog('/dialog'); @@ -1603,11 +1500,21 @@ export class GBMinService { } else { // Removes unwanted chars in input text. + step.context.activity['originalText'] = context.activity.text; const text = await GBConversationalService.handleText(min, user, step, context.activity.text); - step.context.activity['originalText']; + step.context.activity['originalText'] step.context.activity['text'] = text; + + if (notes && text && text !== "") { + const sys = new SystemKeywords(); + await sys.note({ pid, text }); + await step.context.sendActivity('OK.'); + return; + } + + // Checks for bad words on input text. const hasBadWord = wash.check(step.context.activity.locale, text); @@ -1642,7 +1549,7 @@ export class GBMinService { } } else { if (min.cbMap[userId] && min.cbMap[userId].promise === '!GBHEAR') { - min.cbMap[userId].promise = step.context.activity['originalText']; + min.cbMap[userId].promise = step.context.activity['originalText'];; } // If there is a dialog in course, continue to the next step. @@ -1680,7 +1587,7 @@ export class GBMinService { } }); data.step = null; - GBLogEx.info(min, `/answer from processMessageActivity (nextDialog=${nextDialog}).`); + GBLogEx.info(min, `/answer being called from processMessageActivity (nextDialog=${nextDialog}).`); await step.beginDialog(nextDialog ? nextDialog : '/answer', { data: data, query: text, @@ -1694,6 +1601,7 @@ export class GBMinService { } public async ensureAPI() { + const mins = GBServer.globals.minInstances; function getRemoteId(ctx: Koa.Context) { @@ -1703,10 +1611,14 @@ export class GBMinService { const close = async () => { return new Promise(resolve => { if (GBServer.globals.server.apiServer) { - GBServer.globals.server.apiServer.close(cb => { - resolve(true); - }); - } else { + GBServer.globals.server.apiServer.close( + cb => { + resolve(true); + GBLogEx.info(0, 'Reloading General Bots API...'); + } + ); + } + else { resolve(true); GBLogEx.info(0, 'Loading General Bots API...'); } @@ -1717,45 +1629,45 @@ export class GBMinService { let proxies = {}; await CollectionUtil.asyncForEach(mins, async min => { + let dialogs = {}; - await CollectionUtil.asyncForEach(Object.values(min.scriptMap), async script => { - const api = min.core.getParam(min.instance, 'Server API', null); - if (api) { - dialogs[script] = async data => { - let sec = new SecService(); - const user = await sec.ensureUser( - min, - data.userSystemId, - data.userName ? data.userName : 'apiuser', - '', - 'api', - data.userSystemId, - null - ); - let pid = data?.pid; - if (script === 'start') { - pid = GBVMService.createProcessInfo(user, min, 'api', null); + dialogs[script] = async (data) => { + let sec = new SecService(); + const user = await sec.ensureUser( + min, + data.userSystemId, + data.userSystemId, + '', + 'api', + data.userSystemId, + null + ); - const client = await GBUtil.getDirectLineClient(min); - const response = await client.apis.Conversations.Conversations_StartConversation({ - userSystemId: user.userSystemId, - userName: user.userName, - pid: pid - }); + let pid = data?.pid; + if (script === 'start') { + pid = GBVMService.createProcessInfo(user, min, 'api', null); - min['apiConversations'][pid] = { conversation: response.obj, client: client }; - min['conversationWelcomed'][response.obj.id] = true; - } - let ret = await GBVMService.callVM(script, min, null, pid, false, data); + const client = await new SwaggerClient({ + spec: JSON.parse(Fs.readFileSync('directline-3.0.json', 'utf8')), + requestInterceptor: req => { + req.headers['Authorization'] = `Bearer ${min.instance.webchatKey}`; + } + }); + const response = await client.apis.Conversations.Conversations_StartConversation(); - if (script === 'start') { - ret = pid; - } - return ret; - }; + min['apiConversations'][pid] = { conversation: response.obj, client: client }; + min['conversationWelcomed'][response.obj.id] = true; + } + + let ret = await GBVMService.callVM(script, min, null, pid, false, data); + + if (script === 'start') { + ret = pid; + } + return ret; } }); @@ -1787,48 +1699,16 @@ export class GBMinService { } }; - GBServer.globals.server.apiServer = createKoaHttpServer(GBVMService.API_PORT, getRemoteId, { prefix: `api/v3` }); + GBServer.globals.server.apiServer = createKoaHttpServer( + GBVMService.API_PORT, + getRemoteId, { prefix: `api/v3` }); + + createRpcServer( + proxies, + GBServer.globals.server.apiServer, + opts + ); - createRpcServer(proxies, GBServer.globals.server.apiServer, opts); } - // Map to track recent changes with timestamps - - private recentChanges: Set = new Set(); - private mutex: Mutex = new Mutex(); - - public async watchPackages(min: GBMinInstance, packageType: string): Promise { - if (!GBConfigService.get('STORAGE_NAME')) { - const packagePath = GBUtil.getGBAIPath(min.botId, packageType); - const libraryPath = path.join(GBConfigService.get('STORAGE_LIBRARY'), packagePath); - - const watcher = chokidar.watch(libraryPath, { - depth: 99 // Watch subdirectories - }); - - const handleFileChange = async (filePath: string) => { - this.recentChanges.add(filePath); - - // Use mutex to ensure only one deployment runs at a time - await this.mutex.runExclusive(async () => { - if (this.recentChanges.size > 0) { - try { - const workFolder = path.join('work', packagePath); - await this.deployer.deployPackage2(min, null, workFolder, true); - GBLogEx.info(min, `Deployed: ${path.basename(workFolder)}.`); - } catch (error) { - GBLogEx.error(min, `Error deploying package: ${GBUtil.toYAML(error)}`); - } finally { - this.recentChanges.clear(); - } - } - }); - }; - - // Watch for file changes - watcher.on('change', filePath => { - handleFileChange(filePath).catch(error => console.error('Error processing file change:', error)); - }); - } - } -} +} \ No newline at end of file diff --git a/packages/core.gbapp/services/GBSSR.ts b/packages/core.gbapp/services/GBSSR.ts index 6e8dc58ac..ff0bbf691 100644 --- a/packages/core.gbapp/services/GBSSR.ts +++ b/packages/core.gbapp/services/GBSSR.ts @@ -5,7 +5,7 @@ | ██ ██ █ █ ██ █ █ ██ ██ ██ ██ ██ ██ █ ██ ██ █ █ | | █████ █████ █ ███ █████ ██ ██ ██ ██ █████ ████ █████ █ ███ | | | -| General Bots Copyright (c) pragmatismo.cloud. All rights reserved. | +| General Bots Copyright (c) pragmatismo.cloud. All rights reserved. | | Licensed under the AGPL-3.0. | | | | According to our dual licensing model, this program can be used either | @@ -21,7 +21,7 @@ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | | GNU Affero General Public License for more details. | | | -| "General Bots" is a registered trademark of pragmatismo.cloud. | +| "General Bots" is a registered trademark of pragmatismo.cloud. | | The licensing of the program under the AGPLv3 does not imply a | | trademark license. Therefore any rights, title and interest in | | our trademarks remain entirely with us. | @@ -37,8 +37,8 @@ import { createRequire } from 'module'; const require = createRequire(import.meta.url); -import path from 'path'; -import fs from 'fs/promises'; +import Path from 'path'; +import Fs from 'fs'; import { NextFunction, Request, Response } from 'express'; import urljoin from 'url-join'; import { GBMinInstance } from 'botlib'; @@ -91,7 +91,7 @@ export class GBSSR { 'tiqcdn' ]; - public static async preparePuppeteer(profilePath) { + public static preparePuppeteer(profilePath) { let args = [ '--check-for-update-interval=2592000', '--disable-accelerated-2d-canvas', @@ -106,11 +106,11 @@ export class GBSSR { args.push(`--user-data-dir=${profilePath}`); const preferences = urljoin(profilePath, 'Default', 'Preferences'); - if (await GBUtil.exists(preferences)) { - const file = await fs.readFile(preferences, 'utf8'); + if (Fs.existsSync(preferences)) { + const file = Fs.readFileSync(preferences, 'utf8'); const data = JSON.parse(file); data['profile']['exit_type'] = 'none'; - await fs.writeFile(preferences, JSON.stringify(data)); + Fs.writeFileSync(preferences, JSON.stringify(data)); } } @@ -126,7 +126,7 @@ export class GBSSR { public static async createBrowser(profilePath): Promise { - const opts = await this.preparePuppeteer(profilePath); + const opts = this.preparePuppeteer(profilePath); puppeteer.use(hidden()); puppeteer.use(require("puppeteer-extra-plugin-minmax")()); const browser = await puppeteer.launch(opts); @@ -303,29 +303,29 @@ export class GBSSR { } - let packagePath = GBUtil.getGBAIPath(botId, `gbui`); + let path = DialogKeywords.getGBAIPath(botId, `gbui`); // Checks if the bot has an .gbui published or use default.gbui. - if (!await GBUtil.exists(packagePath)) { - packagePath = path.join(process.env.PWD, 'packages', `default.gbui`, 'build'); + if (!Fs.existsSync(path)) { + path = DialogKeywords.getGBAIPath(minBoot.botId, `gbui`); } let parts = req.url.replace(`/${botId}`, '').split('?'); let url = parts[0]; - if (min && req.originalUrl && prerender && exclude && await GBUtil.exists(packagePath)) { + if (min && req.originalUrl && prerender && exclude && Fs.existsSync(path)) { // Reads from static HTML when a bot is crawling. - packagePath = path.join(process.env.PWD, 'work', packagePath, 'index.html'); - const html = await fs.readFile(packagePath, 'utf8'); + path = Path.join(process.env.PWD, 'work', path, 'index.html'); + const html = Fs.readFileSync(path, 'utf8'); res.status(200).send(html); return true; } else { // Servers default.gbui web application. - packagePath = path.join( + path = Path.join( process.env.PWD, GBDeployer.deployFolder, GBMinService.uiPackage, @@ -333,28 +333,22 @@ export class GBSSR { url === '/' || url === '' ? `index.html` : url ); if (GBServer.globals.wwwroot && url === '/') { - packagePath = GBServer.globals.wwwroot + "/index.html"; // TODO. + path = GBServer.globals.wwwroot + "/index.html"; // TODO. } if (!min && !url.startsWith("/static") && GBServer.globals.wwwroot) { - packagePath = path.join(GBServer.globals.wwwroot, url); + path = Path.join(GBServer.globals.wwwroot, url); } - if (await GBUtil.exists(packagePath)) { + if (Fs.existsSync(path)) { if (min) { - let html = await fs.readFile(packagePath, 'utf8'); + let html = Fs.readFileSync(path, 'utf8'); html = html.replace(/\{p\}/gi, min.botId); html = html.replace(/\{botId\}/gi, min.botId); - - const theme = - `theme-${await (min.core as any)['getParam'](min.instance, 'Theme Color', 'grey')}`; - - html = html.replace(/\{themeColor\}/gi, theme); - html = html.replace(/\{theme\}/gi, min.instance.theme ? min.instance.theme : 'default.gbtheme'); html = html.replace(/\{title\}/gi, min.instance.title); res.send(html).end(); } else { - res.sendFile(packagePath); + res.sendFile(path); } return true; } else { diff --git a/packages/core.gbapp/services/router/bridge.ts b/packages/core.gbapp/services/router/bridge.ts deleted file mode 100644 index 17582a508..000000000 --- a/packages/core.gbapp/services/router/bridge.ts +++ /dev/null @@ -1,479 +0,0 @@ -import fs from 'fs/promises'; -import formidable from 'formidable'; -import path from 'path'; -import bodyParser from 'body-parser'; -import express from 'express'; -import fetch from 'isomorphic-fetch'; -import moment from 'moment'; -import * as uuidv4 from 'uuid'; -import { IActivity, IBotData, IConversation, IConversationUpdateActivity, IMessageActivity } from './types'; -import { GBConfigService } from '../GBConfigService.js'; -import { GBUtil } from '../../../../src/util.js'; -import urlJoin from 'url-join'; -import { GBServer } from '../../../../src/app.js'; - -const expiresIn = 1800; -const conversationsCleanupInterval = 10000; -const conversations: { [key: string]: IConversation } = {}; -const botDataStore: { [key: string]: IBotData } = {}; - -export const getRouter = ( - serviceUrl: string, - botUrl: string, - conversationInitRequired = true, - botId -): express.Router => { - const router = express.Router(); - - router.use(bodyParser.json()); // for parsing application/json - router.use(bodyParser.urlencoded({ extended: true })); // for parsing application/x-www-form-urlencoded - router.use((req, res, next) => { - res.header('Access-Control-Allow-Origin', '*'); - res.header('Access-Control-Allow-Methods', 'GET, PUT, POST, DELETE, PATCH, OPTIONS'); - res.header( - 'Access-Control-Allow-Headers', - 'Origin, X-Requested-With, Content-Type, Accept, Authorization, x-ms-bot-agent' - ); - next(); - }); - - // CLIENT ENDPOINT - router.options(`/directline/${botId}/`, (req, res) => { - res.status(200).end(); - }); - - // Creates a conversation - const reqs = (req, res) => { - - const conversationId: string = uuidv4.v4().toString(); - conversations[conversationId] = { - conversationId, - history: [] - }; - console.log('Created conversation with conversationId: ' + conversationId); - - let userId = req.query?.userSystemId ? req.query?.userSystemId : req.body?.user?.id; - userId = userId ? userId : req.query.userId; - - const activity = createConversationUpdateActivity(serviceUrl, conversationId, userId); - - fetch(botUrl, { - method: 'POST', - body: JSON.stringify(activity), - headers: { - 'Content-Type': 'application/json' - } - }).then(response => { - res.status(response.status).send({ - conversationId, - expiresIn - }); - }); - }; - - router.post('/v3/directline/conversations/', reqs); - router.post(`/api/messages/${botId}/v3/directline/conversations/`, reqs); - router.post(`/directline/${botId}/conversations/`, reqs); - router.post(`/directline/conversations/`, reqs); - - // Reconnect API - const req3 = (req, res) => { - const conversation = getConversation(req.params.conversationId, conversationInitRequired); - if (conversation) { - res.status(200).send(conversation); - } else { - // Conversation was never initialized - res.status(400).send(); - } - - console.warn('/v3/directline/conversations/:conversationId not implemented'); - }; - router.get('/v3/directline/conversations/:conversationId', req3); - router.get(`/directline/${botId}/conversations/:conversationId`, req3); - - // Gets activities from store (local history array for now) - const req45 = (req, res) => { - const watermark = req.query.watermark && req.query.watermark !== 'null' ? Number(req.query.watermark) : 0; - - const conversation = getConversation(req.params.conversationId, conversationInitRequired); - - if (conversation) { - // If the bot has pushed anything into the history array - if (conversation.history.length > watermark) { - const activities = conversation.history.slice(watermark); - res.status(200).json({ - activities, - watermark: watermark + activities.length - }); - } else { - res.status(200).send({ - activities: [], - watermark - }); - } - } else { - // Conversation was never initialized - res.status(400).send(); - } - }; - - const req34 = (req, res) => { - const watermark = req.query.watermark && req.query.watermark !== 'null' ? Number(req.query.watermark) : 0; - - const conversation = getConversation(req.params.conversationId, conversationInitRequired); - - if (conversation) { - // If the bot has pushed anything into the history array - if (conversation.history.length > watermark) { - const activities = conversation.history.slice(watermark); - res.status(200).json({ - activities, - watermark: watermark + activities.length - }); - } else { - res.status(200).send({ - activities: [], - watermark - }); - } - } else { - // Conversation was never initialized - res.status(400).send(); - } - }; - - router.get(`/directline/${botId}/conversations/:conversationId/activities`, req34); - router.get(`/api/messages/${botId}/v3/directline/conversations/:conversationId/activities`, req34); - - // Sends message to bot. Assumes message activities - - const res2 = (req, res) => { - const incomingActivity = req.body; - // Make copy of activity. Add required fields - const activity = createMessageActivity(incomingActivity, serviceUrl, req.params.conversationId, req.params['pid']); - - const conversation = getConversation(req.params.conversationId, conversationInitRequired); - - if (conversation) { - conversation.history.push(activity); - fetch(botUrl, { - method: 'POST', - body: JSON.stringify(activity), - headers: { - 'Content-Type': 'application/json' - } - }).then(response => { - res.status(response.status).json({ id: activity.id }); - }); - } else { - // Conversation was never initialized - res.status(400).send(); - } - }; - - // import { createMessageActivity, getConversation } from './yourModule'; // Update this import as needed - - const resupload = async (req, res) => { - // Extract botId from the URL using the pathname - const urlParts = req.url.split('/'); - const botId = urlParts[2]; // Assuming the URL is structured like /directline/{botId}/conversations/:conversationId/upload - const conversationId = req.params.conversationId; // Extract conversationId from parameters - - const uploadDir = path.join(process.cwd(), 'work', `${botId}.gbai`, 'cache'); // Create upload directory path - - // Create the uploads directory if it doesn't exist - - await fs.mkdir(uploadDir, { recursive: true }); - - const form = formidable({ - uploadDir, // Use the constructed upload directory - keepExtensions: true, // Keep file extensions - }); - - form.parse(req, async (err, fields, files) => { - if (err) { - console.log(`Error parsing the file: ${GBUtil.toYAML(err)}.`); - return res.status(400).send('Error parsing the file.'); - } - - const incomingActivity = fields; // Get incoming activity data - const file = files.file[0]; // Access the uploaded file - - const fileName = file['newFilename']; - const fileUrl = urlJoin(GBServer.globals.publicAddress, `${botId}.gbai`,'cache', fileName); - - // Create the activity message - let userId = req.query?.userSystemId ? req.query?.userSystemId : req.body?.user?.id; - userId = userId ? userId : req.query?.userId; - - const activity = createMessageActivity(incomingActivity, serviceUrl, conversationId, req.params['pid']); - activity.from = { id: userId, name: 'webbot' }; - activity.attachments = [{ - contentType: 'application/octet-stream', // Adjust as necessary - contentUrl: fileUrl, - name: fileName, // Original filename - }]; - const conversation = getConversation(conversationId, conversationInitRequired); - - if (conversation) { - // Add the uploaded file info to the activity - activity['fileUrl'] = fileUrl; // Set the file URL - - conversation.history.push(activity); - - try { - const response = await fetch(botUrl, { - method: 'POST', - body: JSON.stringify(activity), - headers: { - 'Content-Type': 'application/json' - } - }); - - res.status(response.status).json({ id: activity.id }); - } catch (fetchError) { - console.error('Error fetching bot:', fetchError); - res.status(500).send('Error processing request.'); - } - } else { - // Conversation was never initialized - res.status(400).send('Conversation not initialized.'); - } - }); - }; - - router.post(`/api/messages/${botId}/v3/directline/conversations/:conversationId/activities`, res2); - router.post(`/directline/${botId}/conversations/:conversationId/activities`, res2); - - router.post(`/directline/${botId}/conversations/:conversationId/upload`, resupload); - - router.post('/v3/directline/conversations/:conversationId/upload', (req, res) => { - console.warn('/v3/directline/conversations/:conversationId/upload not implemented'); - }); - router.get('/v3/directline/conversations/:conversationId/stream', (req, res) => { - console.warn('/v3/directline/conversations/:conversationId/stream not implemented'); - }); - - // BOT CONVERSATION ENDPOINT - - router.post('/v3/conversations', (req, res) => { - console.warn('/v3/conversations not implemented'); - }); - - // TODO: Check duplicate. router.post(`/api/messages/${botId}/v3/directline/conversations/:conversationId/activities`, (req, res) => { - // let activity: IActivity; - - // activity = req.body; - - // const conversation = getConversation(req.params.conversationId, conversationInitRequired); - // if (conversation) { - // conversation.history.push(activity); - // res.status(200).send(); - // } else { - // // Conversation was never initialized - // res.status(400).send(); - // } - // }); - - router.post(`/v3/conversations/:conversationId/activities/:activityId`, (req, res) => { - let activity: IActivity; - - activity = req.body; - activity.id = uuidv4.v4(); - activity.from = { id: 'id', name: 'Bot' }; - - const conversation = getConversation(req.params.conversationId, conversationInitRequired); - if (conversation) { - conversation.history.push(activity); - res.status(200).send(); - } else { - // Conversation was never initialized - res.status(400).send(); - } - }); - - router.get('/v3/conversations/:conversationId/members', (req, res) => { - console.warn('/v3/conversations/:conversationId/members not implemented'); - }); - router.get('/v3/conversations/:conversationId/activities/:activityId/members', (req, res) => { - console.warn('/v3/conversations/:conversationId/activities/:activityId/members'); - }); - - // BOTSTATE ENDPOINT - - router.get('/v3/botstate/:channelId/users/:userId', (req, res) => { - console.log('Called GET user data'); - getBotData(req, res); - }); - - router.get('/v3/botstate/:channelId/conversations/:conversationId', (req, res) => { - console.log('Called GET conversation data'); - getBotData(req, res); - }); - - router.get('/v3/botstate/:channelId/conversations/:conversationId/users/:userId', (req, res) => { - console.log('Called GET private conversation data'); - getBotData(req, res); - }); - - router.post('/v3/botstate/:channelId/users/:userId', (req, res) => { - console.log('Called POST setUserData'); - setUserData(req, res); - }); - - router.post('/v3/botstate/:channelId/conversations/:conversationId', (req, res) => { - console.log('Called POST setConversationData'); - setConversationData(req, res); - }); - - router.post('/v3/botstate/:channelId/conversations/:conversationId/users/:userId', (req, res) => { - setPrivateConversationData(req, res); - }); - - router.delete('/v3/botstate/:channelId/users/:userId', (req, res) => { - console.log('Called DELETE deleteStateForUser'); - deleteStateForUser(req, res); - }); - - return router; -}; - -/** - * @param app The express app where your offline-directline endpoint will live - * @param port The port where your offline-directline will be hosted - * @param botUrl The url of the bot (e.g. http://127.0.0.1:3978/api/messages) - * @param conversationInitRequired Requires that a conversation is initialized before it is accessed, returning a 400 - * when not the case. If set to false, a new conversation reference is created on the fly. This is true by default. - */ -export const initializeRoutes = ( - app: express.Express, - port: number, - botUrl: string, - conversationInitRequired = true, - botId -) => { - conversationsCleanup(); - - const directLineEndpoint = `http://127.0.0.1:${port}`; - const router = getRouter(directLineEndpoint, botUrl, conversationInitRequired, botId); - - app.use(router); -}; - -const getConversation = (conversationId: string, conversationInitRequired: boolean) => { - // Create conversation on the fly when needed and init not required - if (!conversations[conversationId] && !conversationInitRequired) { - conversations[conversationId] = { - conversationId, - history: [] - }; - } - return conversations[conversationId]; -}; - -const getBotDataKey = (channelId: string, conversationId: string, userId: string) => { - return `$${channelId || '*'}!${conversationId || '*'}!${userId || '*'}`; -}; - -const setBotData = (channelId: string, conversationId: string, userId: string, incomingData: IBotData): IBotData => { - const key = getBotDataKey(channelId, conversationId, userId); - const newData: IBotData = { - eTag: new Date().getTime().toString(), - data: incomingData.data - }; - - if (incomingData) { - botDataStore[key] = newData; - } else { - delete botDataStore[key]; - newData.eTag = '*'; - } - - return newData; -}; - -const getBotData = (req: express.Request, res: express.Response) => { - const key = getBotDataKey(req.params.channelId, req.params.conversationId, req.params.userId); - console.log('Data key: ' + key); - - res.status(200).send(botDataStore[key] || { data: null, eTag: '*' }); -}; - -const setUserData = (req: express.Request, res: express.Response) => { - res.status(200).send(setBotData(req.params.channelId, req.params.conversationId, req.params.userId, req.body)); -}; - -const setConversationData = (req: express.Request, res: express.Response) => { - res.status(200).send(setBotData(req.params.channelId, req.params.conversationId, req.params.userId, req.body)); -}; - -const setPrivateConversationData = (req: express.Request, res: express.Response) => { - res.status(200).send(setBotData(req.params.channelId, req.params.conversationId, req.params.userId, req.body)); -}; - -export const start = (server, botId) => { - const port = GBConfigService.getServerPort(); - initializeRoutes(server, Number(port), `http://127.0.0.1:${port}/api/messages/${botId}`, null, botId); - - if (botId === 'default') { - initializeRoutes(server, Number(port), `http://127.0.0.1:${port}/api/messages`, null, botId); - } -}; - -const deleteStateForUser = (req: express.Request, res: express.Response) => { - Object.keys(botDataStore).forEach(key => { - if (key.endsWith(`!{req.query.userId}`)) { - delete botDataStore[key]; - } - }); - res.status(200).send(); -}; - -// CLIENT ENDPOINT HELPERS -const createMessageActivity = ( - incomingActivity: IMessageActivity, - serviceUrl: string, - conversationId: string, - pid -): IMessageActivity => { - const obj = { - ...incomingActivity, - channelId: 'api', - serviceUrl, - conversation: { id: conversationId }, - id: uuidv4.v4() - }; - return obj; -}; - -const createConversationUpdateActivity = (serviceUrl: string, conversationId: string, userId: any): IConversationUpdateActivity => { - const activity: IConversationUpdateActivity = { - type: 'conversationUpdate', - channelId: 'api', - serviceUrl, - conversation: { id: conversationId }, - id: uuidv4.v4(), - membersAdded: [], - membersRemoved: [], - from: { id: userId, name: 'webbot' } - }; - - return activity; -}; - -const conversationsCleanup = () => { - setInterval(() => { - const expiresTime = moment().subtract(expiresIn, 'seconds'); - Object.keys(conversations).forEach(conversationId => { - if (conversations[conversationId].history.length > 0) { - const lastTime = moment( - conversations[conversationId].history[conversations[conversationId].history.length - 1].localTimestamp - ); - if (lastTime < expiresTime) { - delete conversations[conversationId]; - console.log('deleted cId: ' + conversationId); - } - } - }); - }, conversationsCleanupInterval); -}; diff --git a/packages/core.gbapp/services/router/types.ts b/packages/core.gbapp/services/router/types.ts deleted file mode 100644 index f6e6f4a99..000000000 --- a/packages/core.gbapp/services/router/types.ts +++ /dev/null @@ -1,66 +0,0 @@ -export interface IUser { - id: string, - name: string -} - -export interface IChannelAccount { - id?: string, - name?: string, -} - -export interface IConversationAccount extends IChannelAccount { - isGroup?: boolean, -} - -export interface IAttachment { - contentType?: string, - contentUrl?: string, - content?: any, - name?: string, - thumbnailUrl?: string, -} - -export interface IEntity { - type?: string, -} - -export interface IActivity { - type?: string, - id?: string, - serviceUrl?: string, - timestamp?: string, - localTimestamp?: string, - channelId?: string, - from?: IChannelAccount, - conversation?: IConversationAccount, - recipient?: IChannelAccount, - replyToId?: string, - channelData?: any, -} - -export interface IMessageActivity extends IActivity { - locale?: string, - text?: string, - summary?: string, - textFormat?: string, - attachmentLayout?: string, - attachments?: IAttachment[], - entities?: IEntity[], -} - -export interface IBotData { - eTag: string; - data: any; -} - -export interface IConversation { - conversationId: string, - history?: IActivity[] -} - -export interface IConversationUpdateActivity extends IActivity { - membersAdded?: IChannelAccount[], - membersRemoved?: IChannelAccount[], - topicName?: string, - historyDisclosed?: boolean, -} \ No newline at end of file diff --git a/packages/customer-satisfaction.gbapp/dialogs/FeedbackDialog.ts b/packages/customer-satisfaction.gbapp/dialogs/FeedbackDialog.ts index 2d8e2e1a8..4df8ca440 100644 --- a/packages/customer-satisfaction.gbapp/dialogs/FeedbackDialog.ts +++ b/packages/customer-satisfaction.gbapp/dialogs/FeedbackDialog.ts @@ -5,7 +5,7 @@ | ██ ██ █ █ ██ █ █ ██ ██ ██ ██ ██ ██ █ ██ ██ █ █ | | █████ █████ █ ███ █████ ██ ██ ██ ██ █████ ████ █████ █ ███ | | | -| General Bots Copyright (c) pragmatismo.cloud. All rights reserved. | +| General Bots Copyright (c) pragmatismo.cloud. All rights reserved. | | Licensed under the AGPL-3.0. | | | | According to our dual licensing model, this program can be used either | @@ -21,7 +21,7 @@ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | | GNU Affero General Public License for more details. | | | -| "General Bots" is a registered trademark of pragmatismo.cloud. | +| "General Bots" is a registered trademark of pragmatismo.cloud. | | The licensing of the program under the AGPLv3 does not imply a | | trademark license. Therefore any rights, title and interest in | | our trademarks remain entirely with us. | diff --git a/packages/customer-satisfaction.gbapp/dialogs/QualityDialog.ts b/packages/customer-satisfaction.gbapp/dialogs/QualityDialog.ts index c713dac54..e4a06b0e3 100644 --- a/packages/customer-satisfaction.gbapp/dialogs/QualityDialog.ts +++ b/packages/customer-satisfaction.gbapp/dialogs/QualityDialog.ts @@ -5,7 +5,7 @@ | ██ ██ █ █ ██ █ █ ██ ██ ██ ██ ██ ██ █ ██ ██ █ █ | | █████ █████ █ ███ █████ ██ ██ ██ ██ █████ ████ █████ █ ███ | | | -| General Bots Copyright (c) pragmatismo.cloud. All rights reserved. | +| General Bots Copyright (c) pragmatismo.cloud. All rights reserved. | | Licensed under the AGPL-3.0. | | | | According to our dual licensing model, this program can be used either | @@ -21,7 +21,7 @@ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | | GNU Affero General Public License for more details. | | | -| "General Bots" is a registered trademark of pragmatismo.cloud. | +| "General Bots" is a registered trademark of pragmatismo.cloud. | | The licensing of the program under the AGPLv3 does not imply a | | trademark license. Therefore any rights, title and interest in | | our trademarks remain entirely with us. | diff --git a/packages/customer-satisfaction.gbapp/index.ts b/packages/customer-satisfaction.gbapp/index.ts index 15c080aae..fd459aba9 100644 --- a/packages/customer-satisfaction.gbapp/index.ts +++ b/packages/customer-satisfaction.gbapp/index.ts @@ -5,7 +5,7 @@ | ██ ██ █ █ ██ █ █ ██ ██ ██ ██ ██ ██ █ ██ ██ █ █ | | █████ █████ █ ███ █████ ██ ██ ██ ██ █████ ████ █████ █ ███ | | | -| General Bots Copyright (c) pragmatismo.cloud. All rights reserved. | +| General Bots Copyright (c) pragmatismo.cloud. All rights reserved. | | Licensed under the AGPL-3.0. | | | | According to our dual licensing model, this program can be used either | @@ -21,7 +21,7 @@ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | | GNU Affero General Public License for more details. | | | -| "General Bots" is a registered trademark of pragmatismo.cloud. | +| "General Bots" is a registered trademark of pragmatismo.cloud. | | The licensing of the program under the AGPLv3 does not imply a | | trademark license. Therefore any rights, title and interest in | | our trademarks remain entirely with us. | diff --git a/packages/customer-satisfaction.gbapp/models/index.ts b/packages/customer-satisfaction.gbapp/models/index.ts index 4231ee967..39814ab08 100644 --- a/packages/customer-satisfaction.gbapp/models/index.ts +++ b/packages/customer-satisfaction.gbapp/models/index.ts @@ -5,7 +5,7 @@ | ██ ██ █ █ ██ █ █ ██ ██ ██ ██ ██ ██ █ ██ ██ █ █ | | █████ █████ █ ███ █████ ██ ██ ██ ██ █████ ████ █████ █ ███ | | | -| General Bots Copyright (c) pragmatismo.cloud. All rights reserved. | +| General Bots Copyright (c) pragmatismo.cloud. All rights reserved. | | Licensed under the AGPL-3.0. | | | | According to our dual licensing model, this program can be used either | @@ -21,7 +21,7 @@ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | | GNU Affero General Public License for more details. | | | -| "General Bots" is a registered trademark of pragmatismo.cloud. | +| "General Bots" is a registered trademark of pragmatismo.cloud. | | The licensing of the program under the AGPLv3 does not imply a | | trademark license. Therefore any rights, title and interest in | | our trademarks remain entirely with us. | diff --git a/packages/customer-satisfaction.gbapp/services/CSService.ts b/packages/customer-satisfaction.gbapp/services/CSService.ts index c7cb08117..278086a57 100644 --- a/packages/customer-satisfaction.gbapp/services/CSService.ts +++ b/packages/customer-satisfaction.gbapp/services/CSService.ts @@ -5,7 +5,7 @@ | ██ ██ █ █ ██ █ █ ██ ██ ██ ██ ██ ██ █ ██ ██ █ █ | | █████ █████ █ ███ █████ ██ ██ ██ ██ █████ ████ █████ █ ███ | | | -| General Bots Copyright (c) pragmatismo.cloud. All rights reserved. | +| General Bots Copyright (c) pragmatismo.cloud. All rights reserved. | | Licensed under the AGPL-3.0. | | | | According to our dual licensing model, this program can be used either | @@ -21,7 +21,7 @@ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | | GNU Affero General Public License for more details. | | | -| "General Bots" is a registered trademark of pragmatismo.cloud. | +| "General Bots" is a registered trademark of pragmatismo.cloud. | | The licensing of the program under the AGPLv3 does not imply a | | trademark license. Therefore any rights, title and interest in | | our trademarks remain entirely with us. | diff --git a/templates/_drafts/reminder.gbai/reminder.gbdata/reminders.csv b/packages/default.gbapp.gbignore/.gitkeep similarity index 100% rename from templates/_drafts/reminder.gbai/reminder.gbdata/reminders.csv rename to packages/default.gbapp.gbignore/.gitkeep diff --git a/packages/default.gbdialog/bot.vbs.gbignore b/packages/default.gbdialog/bot.vbs.gbignore new file mode 100644 index 000000000..7a6734c25 --- /dev/null +++ b/packages/default.gbdialog/bot.vbs.gbignore @@ -0,0 +1,77 @@ +' General Bots Copyright (c) pragmatismo.cloud. All rights reserved. Licensed under the AGPL-3.0. +' Rules from http://jsfiddle.net/roderick/dym05hsy + +talk "How many installments do you want to pay your Credit?" +hear installments + +if installments > 60 then + talk "The maximum number of payments is 60" +else + talk "What is the amount requested?" + hear amount + + if amount >100000 then + talk "We are sorry, we can only accept proposals bellow 100k" + else + + talk "What is the best due date?" + hear dueDate + + interestRate = 0 + adjustment = 0 + + if installments < 12 then + interestRate = 1.60 + adjustment = 0.09748 + end if + + if installments > 12 and installments < 18 then + interestRate = 1.66 + adjustment = 0.06869 + end if + + if installments > 18 and installments < 36 then + interestRate = 1.64 + adjustment = 0.05397 + end if + + if installments > 36 and installments < 48 then + interestRate = 1.62 + adjustment = 0.03931 + end if + + if installments > 48 and installments < 60 then + interestRate = 1.70 + adjustment = 0.03270 + end if + + if installments = 60 then + interestRate = 1.79 + adjustment = 0.02916 + end if + + if installments > 60 then + talk "The maximum number of payments is 60" + end if + + nInstallments = parseInt(installments) + vamount = parseFloat(amount) + initialPayment = vamount * 0.3 ' 30% of the value + tac = 800 + adjustment = 1.3 + + totalValue = amount - initialPayment + tac + paymentValue = totalValue * adjustment + finalValue = paymentValue * nInstallments + initialPayment + + talk "Congratulations! Your credit analysis is **done**:" + talk "First payment: **" + initialPayment + "**" + talk "Payment value: **" + paymentValue + "**" + talk "Interest Rate: **" + interestRate + "%**" + talk "Total Value: **" + totalValue + "**" + talk "Final Value: **" + finalValue + "**" + + + + end if +end if diff --git a/packages/default.gbdialog/delivery.vbs.gbignore b/packages/default.gbdialog/delivery.vbs.gbignore new file mode 100644 index 000000000..e119cda21 --- /dev/null +++ b/packages/default.gbdialog/delivery.vbs.gbignore @@ -0,0 +1,50 @@ +' General Bots Copyright (c) pragmatismo.cloud. All rights reserved. Licensed under the AGPL-3.0. + +talk "Quer pagar quanto?" +hear amount + +talk "Para onde?" +hear address + +if amount < 5 then + talk "O mínimo que vendo este produto é 5." +else + + if address is in "Rio" then + get payment amount + delivery to address + else + talk "Vou ver se tenho um parceiro para entregar aí e te falo. Eu só entrego no Rio." + end if +end if + +talk "Valeu!" + + + +Falar "Qual seu nome?" +Ouvir nome + +Falar "Informe seu CEP, por favor:" +Ouvir CEP + +Address = CEP + +Confira seu endereço: + +Address.Street +Address.Number + + +Falar "Manda sua localização para eu pedir a alguém para sair agora com o seu pedido" +Hear Location + +SAve "Pedidos.xlsx", Nome, From, Location.Street, Location.Number + + + +Falar "Manda sua localização que eu encontro o posto mais próximo" +Hear Location + +Find "Postos.xlsx", "Endereço=" + Location + \ No newline at end of file diff --git a/packages/default.gbdialog/find-on-excel.vbs b/packages/default.gbdialog/find-on-excel.vbs new file mode 100644 index 000000000..a8418aa05 --- /dev/null +++ b/packages/default.gbdialog/find-on-excel.vbs @@ -0,0 +1,29 @@ + + +if consulta = "cpf" then + talk "Qual seu CPF?" + hear cpf + talk "Aguarde alguns instantes que eu localizo seu cadastro..." + row = find "Cadastro.xlsx", "CPF=" + cpf + if row != null then + talk "Oi, " + row.Nome + "Tudo bem? " + talk "Seu código de cliente é " + row.Cod + talk "Vamos te enviar o pedido para seu endereço em: " + row.Endereço + send file "boleta.pdf", "Pague já e evite multas!" + else + talk "Tente novamente." + end if +else + talk "Qual seria seu código?" + hear cod + talk "Aguarde alguns instantes que eu localizo seu cadastro..." + row = find "Cadastro.xlsx", "Cod=" + cod + if row != null then + talk "Oi, " + row.Nome + "Tudo bem? " + talk "Seu CPF é " + row.CPF + talk "Vamos te enviar o pedido para seu endereço em: " + row.Endereço + send file "boleta.pdf", "Pague já e evite multas!" + else + talk "Tente novamente." + end if +end if diff --git a/packages/default.gbdialog/find-or-talk.vbs.gbignore b/packages/default.gbdialog/find-or-talk.vbs.gbignore new file mode 100644 index 000000000..084b0bf10 --- /dev/null +++ b/packages/default.gbdialog/find-or-talk.vbs.gbignore @@ -0,0 +1,5 @@ +talk “Olá! Seja bem vinda(o)!” + +X = find “campanhas.xlsx”, “nome=1239” OR TALK “Desculpe-me, não localizei seu nome.” + +talk “opa, vamos lá!” + x.nome diff --git a/packages/default.gbdialog/get-payment.vbs.gbignore b/packages/default.gbdialog/get-payment.vbs.gbignore new file mode 100644 index 000000000..75ea35312 --- /dev/null +++ b/packages/default.gbdialog/get-payment.vbs.gbignore @@ -0,0 +1,12 @@ +' General Bots Copyright (c) pragmatismo.cloud. All rights reserved. Licensed under the AGPL-3.0. + +talk "Quer pagar quanto?" +hear amount + +if amount < 5 then + talk "O mínimo que vendo este produto é 5." +else + get payment amount +end if + +talk "Valeu!" \ No newline at end of file diff --git a/packages/default.gbdialog/get-set-excel.vbs b/packages/default.gbdialog/get-set-excel.vbs new file mode 100644 index 000000000..40e024d7b --- /dev/null +++ b/packages/default.gbdialog/get-set-excel.vbs @@ -0,0 +1,9 @@ +value = get "list.xslx", "A1:A1" + +set "list.xslx", "A1:A1", "value" + +myVar = find "chamadosbug748.xlsx", "CHAMADO=" + "5521979047667-44129-10" +status="alterado" +set "chamadosbug748.xlsx", "E" + myVar.line + ":E" + myVar.line, status +res = get "chamadosbug748.xlsx", "E" + myVar.line + ":E" + myVar.line +talk "Obrigado e até a próxima e veja bem, o resultado é esse: " + res diff --git a/templates/default.gbai/default.gbdialog/get-stock.bas b/packages/default.gbdialog/get-stock.vbs.gbignore similarity index 100% rename from templates/default.gbai/default.gbdialog/get-stock.bas rename to packages/default.gbdialog/get-stock.vbs.gbignore diff --git a/packages/default.gbdialog/http-get-and-post.vbs b/packages/default.gbdialog/http-get-and-post.vbs new file mode 100644 index 000000000..8454dfd7b --- /dev/null +++ b/packages/default.gbdialog/http-get-and-post.vbs @@ -0,0 +1,6 @@ + +user = get "http://server/path" + +user = post "http://server/path", "data" + +Talk “ The user area is” + user.area, user.validuser, user.user \ No newline at end of file diff --git a/packages/default.gbdialog/lab.vbs.gbignore b/packages/default.gbdialog/lab.vbs.gbignore new file mode 100644 index 000000000..d07d07df2 --- /dev/null +++ b/packages/default.gbdialog/lab.vbs.gbignore @@ -0,0 +1,26 @@ +talk "Qual seu pedido?" +hear pedido +talk "Qual seu e-mail?" +hear email +talk "Obrigado, seu pedido será processado e retornamos." +ask payment + + +talk "Qual seu pedido?" +hear pedido +talk "Obrigado. Agora informe seu nome:" +Hear nome +Talk "Obrigado" + nome + "! Agora falta saber onde vamos entregar. Qual seu endereço?" +Hear endereço +Save "BistroBot.gbdata\pedidos.xlsx", nome, pedido, endereço, phone +Talk "Aguarde, enquanto eu calculo o valor total do seu pedido. Volto em alguns minutos, aguarde!" +Total = Ask "+5521999995555", "Qual o valor para o pedido da(o)" + nome +"?" +ask payment Total + +Talk "Qual seunome? " +Hear nome +Talk "Qual o valor pedido?" +Hear pedido +Save "Contoso.gbdata\ Aprovações.xlsx", nome, pedido, phone +Ask "+5521999995555", "Aprove por favor o pedido tal " +Talk "Sua aprovação foi enviada, aguarde." diff --git a/packages/default.gbdialog/save-on-excel.vbs.gbignore b/packages/default.gbdialog/save-on-excel.vbs.gbignore new file mode 100644 index 000000000..27504192e --- /dev/null +++ b/packages/default.gbdialog/save-on-excel.vbs.gbignore @@ -0,0 +1,11 @@ + +talk "O seu nome, por favor?" +hear nome + +talk "Qual seu pedido?" +hear details + +talk "Valeu " + nome + "! Agora falta saber onde vamos entregar. \nQual seu endereço?" +hear address + +save "Pedidos.xlsx", id, nome, from, address, details, today diff --git a/packages/default.gbdialog/sys-bot-farm-creation.vbs.gbignore b/packages/default.gbdialog/sys-bot-farm-creation.vbs.gbignore new file mode 100644 index 000000000..95a206665 --- /dev/null +++ b/packages/default.gbdialog/sys-bot-farm-creation.vbs.gbignore @@ -0,0 +1,37 @@ +' General Bots Copyright (c) pragmatismo.cloud. All rights reserved. Licensed under the AGPL-3.0. + +talk "Please, tell me what is the Bot name?" +hear title + +talk "If you tell me your username/password, I can show service subscription list to you." +talk "What is your Username (eg.: human@domain.bot)" +hear email + +talk "What is your Password" +hear password + +talk "Your password? (Will be discarded after sigining process)" +talk "Can you describe in a few words what the bot is about?" +hear description + +talk "Please, paste the Subscription ID (Azure):" +hear subscriptionId + +talk "Please, provide the cloud location just like 'westus'?" +hear location + +talk "Please, provide the Authoring Key for NLP service (LUIS)?" +hear authoringKey + +talk "Sorry, this part cannot be automated yet due to Microsoft schedule, please go to https://apps.dev.microsoft.com/portal/register-app to generate manually an App ID and App Secret." +wait 5 + +talk "Please, provide the App ID you just generated:" +hear appId + +talk "Please, provide the Generated Password:" +hear appPassword + +talk "Now, I am going to create a Bot farm... Wait 5 minutes or more..." + +create a bot farm using title, email, password, location, authoringKey, appId, appPassword, subscriptionId diff --git a/packages/default.gbdialog/templates.vbs b/packages/default.gbdialog/templates.vbs new file mode 100644 index 000000000..55cccb41c --- /dev/null +++ b/packages/default.gbdialog/templates.vbs @@ -0,0 +1,25 @@ + + +talk "qual seu nome?" +hear nome +talk "qual seu e-mail?" +hear email + +documento = "meutemplate.docx", nome, email, + +send file documento + +save file documento, "curriculos/nome" + ".docx" + +' $name + +'$trabalho + +'Experiência +'$ano1 +'$oquefoifeitoAno1 +'$ano2 +'$oquefoifeitoAno2 +'$ano3 +'$oquefoifeitoAno1 + diff --git a/packages/default.gbdialog/translator.gbignore b/packages/default.gbdialog/translator.gbignore new file mode 100644 index 000000000..bbd32df18 --- /dev/null +++ b/packages/default.gbdialog/translator.gbignore @@ -0,0 +1,13 @@ +rem hi + +talk "Qual seu nome?" +hear name + +talk "Qual seu CPF?" +hear CPF + +talk "Por que você abrirá este chamado?" +hear translated motivo + +talk "Seu nome: " + name +talk "Você disse em Português " + motivo. \ No newline at end of file diff --git a/packages/default.gbkb/draft.md b/packages/default.gbkb/draft.md new file mode 100644 index 000000000..3e56b0b6d --- /dev/null +++ b/packages/default.gbkb/draft.md @@ -0,0 +1,3 @@ + ltimas notcias + Contato + Ofertas diff --git a/packages/default.gbkb/package.json b/packages/default.gbkb/package.json new file mode 100644 index 000000000..6d8fb717d --- /dev/null +++ b/packages/default.gbkb/package.json @@ -0,0 +1,6 @@ +{ + "botId":"pragmatismo-ai-prd", + "version": "1.0.0", + "description": "Bot pragmatismo.", + "license": "Private" +} \ No newline at end of file diff --git a/packages/default.gbkb/pages/about.md b/packages/default.gbkb/pages/about.md new file mode 100644 index 000000000..f8f61594d --- /dev/null +++ b/packages/default.gbkb/pages/about.md @@ -0,0 +1,16 @@ +#Desenvolvimento Personalizado + +General Bots usa linguagem natural para entender o que as pessoas querem, facilitando o desenvolvimento de código. Quando alguém diz: "Preciso do relatório mensal" ou "Imprima o relatório do mês", General Bots entende o mesmo. Utilize o nosso desenvolvimento para estender a conversa com suas próprias regras e intenções. + +#Descoberta + +General Bots pode pró-ativamente sugerir suas habilidades para os usuários baseada no contexto, como solicitação de um pedido, envio de uma mensagem, agendamento de uma conferência telefônica ou qualquer ação definida na sua aplicação. + +#Torne pessoal + +Entregue experiências únicas através do conhecimento que a General Bots possui sobre seus usuários e preferências, para ajudar a tomar decisões e apresentar sempre o melhor cenário. + +#Sem downloads adicionais + +A interface da sua aplicação é automaticamente integrada à General Bots, de modo que não seja necessário realizar download ou instalações. + diff --git a/packages/default.gbkb/subjects.json b/packages/default.gbkb/subjects.json new file mode 100644 index 000000000..0afc084b3 --- /dev/null +++ b/packages/default.gbkb/subjects.json @@ -0,0 +1,58 @@ +{ + "children": [ + { + "title": "Bots & AI", + "description": "Bots & inteligência artificial.", + "id": "bots-ai", + "children": [ + { + "title": "General Bots", + "description": "Plataforma de bots da pragmatismo.cloud.", + "id": "general-bots" + }, + { + "title": "Cortana Intelligence Suite", + "description": "Suite de Big Data da Microsoft.", + "id": "cortana" + } + ] + }, + { + "title": "Produtividade", + "description": "Artigos sobre sistemas Internos.", + "id": "produtividade", + "children": [ + { + "title": "Microsoft Project Online", + "description": "Artigos sobre o Microsoft Project Online.", + "id": "msproject" + }, + { + "title": "SharePoint", + "description": "SharePoint, sites e serviços.", + "id": "sharepoint" + }, + { + "title": "Office 365", + "description": "Plataforma colaborativa moderna da Microsoft.", + "id": "office365" + }, + { + "title": "Microsoft Dynamics", + "description": "Artigos sobre plataforma de CRM da Microsoft.", + "id": "msdynamics" + }, + { + "title": "Power BI", + "description": "Dashboards modernos e intuitivos.", + "id": "powerbi" + } + ] + }, + { + "title": "Sobre", + "description": "Artigos sobre o Bot da pragmatismo.cloud", + "id": "sobre" + } + ] +} \ No newline at end of file diff --git a/packages/default.gbkb/subjects/bots-ai.png b/packages/default.gbkb/subjects/bots-ai.png new file mode 100644 index 000000000..5c9197f7f Binary files /dev/null and b/packages/default.gbkb/subjects/bots-ai.png differ diff --git a/packages/default.gbkb/subjects/cortana.png b/packages/default.gbkb/subjects/cortana.png new file mode 100644 index 000000000..964451744 Binary files /dev/null and b/packages/default.gbkb/subjects/cortana.png differ diff --git a/packages/default.gbkb/subjects/general-bots.png b/packages/default.gbkb/subjects/general-bots.png new file mode 100644 index 000000000..1a68418ef Binary files /dev/null and b/packages/default.gbkb/subjects/general-bots.png differ diff --git a/packages/default.gbkb/subjects/msdynamics.png b/packages/default.gbkb/subjects/msdynamics.png new file mode 100644 index 000000000..6076c0931 Binary files /dev/null and b/packages/default.gbkb/subjects/msdynamics.png differ diff --git a/packages/default.gbkb/subjects/msproject.png b/packages/default.gbkb/subjects/msproject.png new file mode 100644 index 000000000..7df4e3d14 Binary files /dev/null and b/packages/default.gbkb/subjects/msproject.png differ diff --git a/packages/default.gbkb/subjects/office365.png b/packages/default.gbkb/subjects/office365.png new file mode 100644 index 000000000..f9aae394c Binary files /dev/null and b/packages/default.gbkb/subjects/office365.png differ diff --git a/packages/default.gbkb/subjects/powerbi.png b/packages/default.gbkb/subjects/powerbi.png new file mode 100644 index 000000000..f9aae394c Binary files /dev/null and b/packages/default.gbkb/subjects/powerbi.png differ diff --git a/packages/default.gbkb/subjects/produtividade.png b/packages/default.gbkb/subjects/produtividade.png new file mode 100644 index 000000000..8e4d6c1a2 Binary files /dev/null and b/packages/default.gbkb/subjects/produtividade.png differ diff --git a/packages/default.gbkb/subjects/sharepoint.png b/packages/default.gbkb/subjects/sharepoint.png new file mode 100644 index 000000000..a1423ae9c Binary files /dev/null and b/packages/default.gbkb/subjects/sharepoint.png differ diff --git a/packages/default.gbkb/subjects/skype.png b/packages/default.gbkb/subjects/skype.png new file mode 100644 index 000000000..7ee1402eb Binary files /dev/null and b/packages/default.gbkb/subjects/skype.png differ diff --git a/packages/default.gbkb/subjects/sobre.png b/packages/default.gbkb/subjects/sobre.png new file mode 100644 index 000000000..9e0f1b762 Binary files /dev/null and b/packages/default.gbkb/subjects/sobre.png differ diff --git a/packages/default.gbkb/tabular/common-goodbye.tsv b/packages/default.gbkb/tabular/common-goodbye.tsv new file mode 100644 index 000000000..68056eb86 Binary files /dev/null and b/packages/default.gbkb/tabular/common-goodbye.tsv differ diff --git a/packages/default.gbkb/tabular/common-hello.tsv b/packages/default.gbkb/tabular/common-hello.tsv new file mode 100644 index 000000000..97062e0d9 Binary files /dev/null and b/packages/default.gbkb/tabular/common-hello.tsv differ diff --git a/templates/default.gbai/default.gbkb/tabular/common-persona.tsv b/packages/default.gbkb/tabular/common-persona.tsv similarity index 88% rename from templates/default.gbai/default.gbkb/tabular/common-persona.tsv rename to packages/default.gbkb/tabular/common-persona.tsv index a8335507a..363d71a89 100644 Binary files a/templates/default.gbai/default.gbkb/tabular/common-persona.tsv and b/packages/default.gbkb/tabular/common-persona.tsv differ diff --git a/packages/default.gbkb/tabular/min.tsv b/packages/default.gbkb/tabular/min.tsv new file mode 100644 index 000000000..7eca9c7a8 Binary files /dev/null and b/packages/default.gbkb/tabular/min.tsv differ diff --git a/templates/default.gbai/default.gbkb/images/placeholder b/packages/default.gbkb/videos/placeholder similarity index 100% rename from templates/default.gbai/default.gbkb/images/placeholder rename to packages/default.gbkb/videos/placeholder diff --git a/packages/default.gbtest/first-test.xlsx b/packages/default.gbtest/first-test.xlsx new file mode 100644 index 000000000..a6bad6489 Binary files /dev/null and b/packages/default.gbtest/first-test.xlsx differ diff --git a/packages/default.gbtheme/css/App.css b/packages/default.gbtheme/css/App.css new file mode 100644 index 000000000..5fa8a7c53 --- /dev/null +++ b/packages/default.gbtheme/css/App.css @@ -0,0 +1,171 @@ +body { + background-color: #dadada !important; +} + +.loader { + opacity: 1 !important; + filter: opacity(100%); +} + + +.gb-quality-button-yes { + width: 54px; + text-decoration: none; + text-transform: uppercase; + background-color: green; + color: white; + padding: 2px; + cursor: pointer; + transition: 0.9s; + transition-delay: 0.3s; + border: none; +} + +.gb-quality-button-no { + width: 54px; + text-decoration: none; + text-transform: uppercase; + background-color: red; + color: white; + padding: 2px; + cursor: pointer; + transition: 0.9s; + transition-delay: 0.3s; + border: none; +} + +.gb-markdown-player-quality { + background-color: #f5e4a8; + padding: 4px; + position: absolute; + bottom: 14px; + left: -9px; + width: 100%; + border-radius: 5px; + color: #52514e; + border: 1px solid #b2a46e; + text-align: center; +} + +.media-player { + font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif !important; +} + +.media-player-container { + font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif; +} + +.media-player-link { + cursor: pointer !important; +} + +.gb-bullet-player { + font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif !important; + background: white; + height: 95%; + overflow-y: scroll; +} + +.gb-bullet-player-item { + cursor: pointer; +} + +.gb-image-player-outter-div {} + +.gb-image-player-img {} + +.gb-bullet-player-outter-div {} + +.gb-video-player-wrapper { + width: 100%; + height: 100%; +} + +.gb-video-react-player { + + position: relative; + left: 50%; + transform: translateX(-50%); +} + +body { + display: flex; +} + +.App { + min-height: 100vh; +} + +.App .body { + display: flex; + flex-direction: row; +} + +.body { + flex-basis: 12em; + /* Default value of the element before distribuing the remaing space */ + flex-grow: 0; + /* Defined the ability to groe */ + flex-shrink: 0; + /* Defines the ability to shrink */ + max-width: 12em; + order: -1; +} + +body { + margin: 0; + overflow: hidden; +} + +.media-player-container { + overflow: auto; + max-height: 90%; + font-family: "Open Sans", sans-serif; + background: white; +} + +.media-player-scroll { + height: 1500px; +} + +@media screen and (max-width: 1000px) { + .media-player-scroll h1 { + font-size: 15px; + } + .media-player-scroll p { + font-size: 12px; + } + .media-player-scroll li { + font-size: 12px; + } +} + +@media screen and (max-width: 451px) { + .media-player { + position: relative; + zoom: 90%; + height: 94% !important; + width: 95% !important; + background-repeat: no-repeat; + margin-top: 10px; + margin-left: 10px; + margin-right: -40px; + } + .gb-markdown-player-quality { + bottom: -1px; + left: -3px; + } +} + +@media screen and (min-width: 451px) { + .media-player { + position: relative; + zoom: 90%; + height: 100% !important; + width: 95% !important; + background-repeat: no-repeat; + margin-top: 10px; + margin-left: 20px; + margin-right: -40px; + } +} \ No newline at end of file diff --git a/packages/default.gbtheme/css/ChatPane.css b/packages/default.gbtheme/css/ChatPane.css new file mode 100644 index 000000000..42ad5bc5b --- /dev/null +++ b/packages/default.gbtheme/css/ChatPane.css @@ -0,0 +1,47 @@ +.webchat > div { + height: 100%; + width: 100%; +} + +.webchat { + background-color: white !important; + left: 57%; + right: 0%; + top: 0; + bottom: 0; + overflow: auto !important; +} + +@media screen and (max-width: 1000px) { + .webchat { + display: inline-block !important; + width: 96% !important; + height: 57% !important; + font-family: 'Open Sans', sans-serif; + font-size: 14px; + left: 50%; + top: 41%; + + position: absolute; + margin-left: -48%; + } +} + +@media screen and (min-width: 1000px) { + .webchat { + display: inline-block !important; + width: 50% !important; + font-family: 'Open Sans', sans-serif; + font-size: 14px; + top: 1% !important; + + height: 96%; + position: absolute; + right: 0; + margin-left: -8%; + position: absolute; + top: 0; + bottom: 0; + border-bottom: 4px solid #4f4f4f; + } +} diff --git a/packages/default.gbtheme/css/Content.css b/packages/default.gbtheme/css/Content.css new file mode 100644 index 000000000..987a3986b --- /dev/null +++ b/packages/default.gbtheme/css/Content.css @@ -0,0 +1,18 @@ +.body .container { padding: 1em;width: 100%;height: 100% } + +.body .ms-Breadcrumb { + margin-bottom: 1em; + margin-top: 0; +} + +.body .selection { + height: calc(100vh - 16.5em); + overflow-x: auto; +} + +.body .selection .selection-item { + display: flex; + padding: 0.5em; +} + +.body .selection .selection-item .name { margin-left: 1em; } diff --git a/packages/default.gbtheme/css/Footer.css b/packages/default.gbtheme/css/Footer.css new file mode 100644 index 000000000..3033d6d4e --- /dev/null +++ b/packages/default.gbtheme/css/Footer.css @@ -0,0 +1,8 @@ +.footer { + align-items: center; + background-color: #450a64; + display: flex; + justify-content: center; +} + +.footer-container { color: white; } \ No newline at end of file diff --git a/packages/default.gbtheme/css/GifPlayer.css b/packages/default.gbtheme/css/GifPlayer.css new file mode 100644 index 000000000..727c752a9 --- /dev/null +++ b/packages/default.gbtheme/css/GifPlayer.css @@ -0,0 +1,31 @@ +@media screen and (max-width: 1000px) { + .player { + width: 93% !important; + height: 26% !important; + border: 7px solid #272727; + position: absolute; + top: 9%; + left: 50%; + margin-left: -48%; + background: url(../images/general-bot-background.jpg), WHITE; + background-repeat: no-repeat; + background-size: contain; + background-position: center; + } +} + +@media screen and (min-width: 1000px) { + .player { + display: inline-block; + width: 46% !important; + height: 81% !important; + border: 7px solid #272727; + background: url(../images/general-bot-background.jpg), WHITE; + background-repeat: no-repeat; + background-size: contain; + background-position: center; + position: absolute; + left: 1%; + top: 15%; + } +} \ No newline at end of file diff --git a/packages/default.gbtheme/css/MediaPlayer.css b/packages/default.gbtheme/css/MediaPlayer.css new file mode 100644 index 000000000..a193c839e --- /dev/null +++ b/packages/default.gbtheme/css/MediaPlayer.css @@ -0,0 +1,7 @@ +.media { + margin-top: 20px; + height: 280px !important; + width: 200px !important; + + } + diff --git a/packages/default.gbtheme/css/NavBar.css b/packages/default.gbtheme/css/NavBar.css new file mode 100644 index 000000000..6aa3d64ea --- /dev/null +++ b/packages/default.gbtheme/css/NavBar.css @@ -0,0 +1,22 @@ +.NavBar { + align-items: center; + display: flex; + justify-content: space-between; + padding: 0.2em 0.5em; + border-bottom-width: 1px; + color:black; + height: 100%; +} + +/* +.logo { + padding-top: 4em; +} +*/ + +.NavBar .searchbox { width: 20em; } + +.NavBar .searchbox .ms-SearchBox { + background-color: white; + margin-bottom: 0; +} diff --git a/packages/default.gbtheme/css/SideBarMenu.css b/packages/default.gbtheme/css/SideBarMenu.css new file mode 100644 index 000000000..b1de09f1f --- /dev/null +++ b/packages/default.gbtheme/css/SideBarMenu.css @@ -0,0 +1,199 @@ +.ms-Nav { + background: #222; + color: white; + margin-top: 20px; +} + +.ms-Nav-link { + color: white !important; + background-color: #222222 !important; +} + +.ms-Nav-link a:active { + border-right: 2px solid white; +} + +.ms-Nav-compositeLink .ms-Nav-chevronButton.ms-Nav-chevronButton--link { + background: #222222 !important; +} + +.ms-Nav-compositeLink.is-selected .ms-Nav-chevronButton, +.ms-Nav-compositeLink.is-selected a { + padding-left: 70px !important; +} + +html[dir="ltr"] .ms-Nav-compositeLink.is-selected .ms-Nav-chevronButton:after, +html[dir="ltr"] .ms-Nav-compositeLink.is-selected a:after { + border-left: none !important; +} + +@media screen and (max-width: 419px) { + .sidebar { + display: inline-block !important; + background-color: #3f3f3f !important; + height: 8%; + width: 100% !important; + position: absolute; + top: 0; + left: 0; + } + + .tittleSideBarMenu { + display: none; + } + + .iconMenu { + color: #d1d1d1; + font-size: 13px; + display: inline; + margin-right: 20px; + } + .iconMenu:hover { + color: white; + } + + .IconsMenu { + position: absolute; + top: 50%; + margin-top: -23px; + height: 22px; + width: 300px; + left: 50%; + margin-left: -150px; + text-align: center; + font-family: "Open Sans", sans-serif; + } + + .iconText { + cursor: pointer; + } +} + +@media screen and (min-width: 520px) and (max-width:1000px) { + .tittleSideBarMenu { + display: none; + } + .sidebar { + display: inline-block !important; + background-color: #3f3f3f !important; + height: 8%; + width: 100% !important; + position: absolute; + top: 0; + left: 0; + background-image: url(../images/bot-logo.png); + background-position: 2px 2px; + background-repeat: no-repeat; + background-size: contain; + } + .IconsMenu { + position: absolute; + top: 50%; + margin-top: -11px; + height: 22px; + width: 416px; + left: 100px !important; + margin-left: 0px !important; + text-align: center; + font-family: "Open Sans", sans-serif; + } + .iconMenu { + color: #d1d1d1; + } + .iconMenu:hover { + color: white; + } +} + +@media screen and (min-width: 420px) and (max-width: 1000px) { + .sidebar { + display: inline-block !important; + background-color: #3f3f3f !important; + height: 8%; + width: 100% !important; + position: absolute; + top: 0; + left: 0; + } + .tittleSideBarMenu { + display: none; + } + + .iconMenu { + color: #d1d1d1; + font-size: 14px; + display: inline; + margin-right: 20px; + } + .iconMenu:hover { + color: white; + } + + .IconsMenu { + position: absolute; + top: 50%; + margin-top: -11px; + height: 22px; + width: 416px; + left: 50%; + margin-left: -208px; + text-align: center; + font-family: "Open Sans", sans-serif; + } + + .iconText { + cursor: pointer; + } +} + + +@media screen and (min-width: 1000px) { + .sidebar { + display: inline-block !important; + background-color: #3f3f3f !important; + height: 15%; + position: absolute; + top: 1%; + left: 1%; + width: 46% !important; + border-right: 14px solid #3f3f3f !important; + } + + .tittleSideBarMenu { + color: white; + text-align: center; + } + + .iconMenu { + color: #d1d1d1; + font-size: 14px; + text-align: center; + margin-right: 20px; + margin-left: 20px; + } + .iconMenu:hover { + color: white; + } + + .IconsMenu { + width: 520px; + display: inline-flex; + position: absolute; + left: 50%; + margin-left: -249px; + bottom: 10px; + height: 22px; + font-family: "Open Sans", sans-serif; + } + + .iconText { + cursor: pointer; + } +} + + + +.iconText:hover { + cursor: pointer; + +} \ No newline at end of file diff --git a/packages/default.gbtheme/css/index.css b/packages/default.gbtheme/css/index.css new file mode 100644 index 000000000..a0f010455 --- /dev/null +++ b/packages/default.gbtheme/css/index.css @@ -0,0 +1,41 @@ +body { + font-family: 'Open Sans', sans-serif; + font-size: 14px; + margin: 0; + padding: 0; +} + + + +/** Main Layout rules */ + +.App { min-height: 100vh; } + +.App { + display: flex; + flex: 1; + flex-direction: column; +} + +.App .body { + display: flex; + flex: 1; + flex-direction: row; +} + +.body .sidebar { order: -1; } + +.body .content { flex: 1; } + +.body .sidebar { + flex: 0 0 12em; + max-width: 12em; +} + +.App .header { height: 4em; } + +.App .footer { height: 4em; } + +/** Text */ + +.text-red { color: red; } \ No newline at end of file diff --git a/templates/default.gbai/default.gbtheme/css/webchat-style.json b/packages/default.gbtheme/css/webchat-style.json similarity index 100% rename from templates/default.gbai/default.gbtheme/css/webchat-style.json rename to packages/default.gbtheme/css/webchat-style.json diff --git a/templates/default.gbai/default.gbtheme/images/bot-logo-chat.png b/packages/default.gbtheme/images/bot-logo-chat.png similarity index 100% rename from templates/default.gbai/default.gbtheme/images/bot-logo-chat.png rename to packages/default.gbtheme/images/bot-logo-chat.png diff --git a/templates/default.gbai/default.gbtheme/images/bot-logo.png b/packages/default.gbtheme/images/bot-logo.png similarity index 100% rename from templates/default.gbai/default.gbtheme/images/bot-logo.png rename to packages/default.gbtheme/images/bot-logo.png diff --git a/templates/default.gbai/default.gbtheme/images/bot-tv-on.png b/packages/default.gbtheme/images/bot-tv-on.png similarity index 100% rename from templates/default.gbai/default.gbtheme/images/bot-tv-on.png rename to packages/default.gbtheme/images/bot-tv-on.png diff --git a/templates/default.gbai/default.gbtheme/images/bot-tv-on2.png b/packages/default.gbtheme/images/bot-tv-on2.png similarity index 100% rename from templates/default.gbai/default.gbtheme/images/bot-tv-on2.png rename to packages/default.gbtheme/images/bot-tv-on2.png diff --git a/templates/default.gbai/default.gbtheme/images/bot-tv.png b/packages/default.gbtheme/images/bot-tv.png similarity index 100% rename from templates/default.gbai/default.gbtheme/images/bot-tv.png rename to packages/default.gbtheme/images/bot-tv.png diff --git a/templates/default.gbai/default.gbtheme/images/chat-background.png b/packages/default.gbtheme/images/chat-background.png similarity index 100% rename from templates/default.gbai/default.gbtheme/images/chat-background.png rename to packages/default.gbtheme/images/chat-background.png diff --git a/templates/default.gbai/default.gbtheme/images/chat-header-logo.png b/packages/default.gbtheme/images/chat-header-logo.png similarity index 100% rename from templates/default.gbai/default.gbtheme/images/chat-header-logo.png rename to packages/default.gbtheme/images/chat-header-logo.png diff --git a/templates/default.gbai/default.gbtheme/images/chat-header.png b/packages/default.gbtheme/images/chat-header.png similarity index 100% rename from templates/default.gbai/default.gbtheme/images/chat-header.png rename to packages/default.gbtheme/images/chat-header.png diff --git a/packages/default.gbtheme/images/general-bot-background.jpg b/packages/default.gbtheme/images/general-bot-background.jpg new file mode 100644 index 000000000..bb82ff172 Binary files /dev/null and b/packages/default.gbtheme/images/general-bot-background.jpg differ diff --git a/templates/default.gbai/default.gbtheme/images/logo-Pragmatismo.png b/packages/default.gbtheme/images/logo-Pragmatismo.png similarity index 100% rename from templates/default.gbai/default.gbtheme/images/logo-Pragmatismo.png rename to packages/default.gbtheme/images/logo-Pragmatismo.png diff --git a/templates/default.gbai/default.gbtheme/images/logo.jpg b/packages/default.gbtheme/images/logo.jpg similarity index 100% rename from templates/default.gbai/default.gbtheme/images/logo.jpg rename to packages/default.gbtheme/images/logo.jpg diff --git a/templates/default.gbai/default.gbtheme/images/logo.png b/packages/default.gbtheme/images/logo.png similarity index 100% rename from templates/default.gbai/default.gbtheme/images/logo.png rename to packages/default.gbtheme/images/logo.png diff --git a/templates/default.gbai/default.gbtheme/images/pragmatismo-logo.png b/packages/default.gbtheme/images/pragmatismo-logo.png similarity index 100% rename from templates/default.gbai/default.gbtheme/images/pragmatismo-logo.png rename to packages/default.gbtheme/images/pragmatismo-logo.png diff --git a/templates/default.gbai/default.gbtheme/images/pragmatismo-powered-by.png b/packages/default.gbtheme/images/pragmatismo-powered-by.png similarity index 100% rename from templates/default.gbai/default.gbtheme/images/pragmatismo-powered-by.png rename to packages/default.gbtheme/images/pragmatismo-powered-by.png diff --git a/templates/default.gbai/default.gbtheme/images/projector-background.jpg b/packages/default.gbtheme/images/projector-background.jpg similarity index 100% rename from templates/default.gbai/default.gbtheme/images/projector-background.jpg rename to packages/default.gbtheme/images/projector-background.jpg diff --git a/templates/default.gbai/default.gbtheme/images/projetor_tela.png b/packages/default.gbtheme/images/projetor_tela.png similarity index 100% rename from templates/default.gbai/default.gbtheme/images/projetor_tela.png rename to packages/default.gbtheme/images/projetor_tela.png diff --git a/templates/default.gbai/default.gbtheme/images/screen.png b/packages/default.gbtheme/images/screen.png similarity index 100% rename from templates/default.gbai/default.gbtheme/images/screen.png rename to packages/default.gbtheme/images/screen.png diff --git a/templates/default.gbai/default.gbtheme/images/tela-01.png b/packages/default.gbtheme/images/tela-01.png similarity index 100% rename from templates/default.gbai/default.gbtheme/images/tela-01.png rename to packages/default.gbtheme/images/tela-01.png diff --git a/templates/default.gbai/default.gbtheme/package.json b/packages/default.gbtheme/package.json similarity index 73% rename from templates/default.gbai/default.gbtheme/package.json rename to packages/default.gbtheme/package.json index 729a0ad94..45d5f79f1 100644 --- a/templates/default.gbai/default.gbtheme/package.json +++ b/packages/default.gbtheme/package.json @@ -1,7 +1,7 @@ { "version": "1.0.0", "description": "Default General Bots theme.", - "authors": "pragmatismo.io", + "authors": "pragmatismo.cloud", "license": "AGPL-3.0" } \ No newline at end of file diff --git a/packages/default.gbui/package.json b/packages/default.gbui/package.json index 8f10b3e14..47e09a342 100644 --- a/packages/default.gbui/package.json +++ b/packages/default.gbui/package.json @@ -8,24 +8,24 @@ "homepage": ".", "dependencies": { "@midudev/react-static-content": "1.0.4", - "ajv": "8.17.1", - "botframework-directlinejs": "0.15.5", - "botframework-webchat": "4.18.0", + "ajv": "8.11.2", + "botframework-directlinejs": "0.15.1", + "botframework-webchat": "4.15.6", "deep-extend": "0.6.0", - "eslint": "9.10.0", + "eslint": "8.28.0", "fetch": "1.1.0", - "msal": "1.4.18", - "powerbi-client": "2.23.1", - "react": "18.3.1", - "react-dom": "18.3.1", + "msal": "1.4.17", + "powerbi-client": "2.22.0", + "react": "18.2.0", + "react-dom": "18.2.0", "react-helmet": "6.1.0", - "react-player": "2.16.0", + "react-player": "2.11.0", "react-scripts": "5.0.1", - "react-super-seo": "1.1.9", + "react-super-seo": "1.0.7", "react-transition-group": "4.4.5", - "rxjs": "7.8.1", + "rxjs": "7.5.7", "url-join": "5.0.0", - "webpack": "5.94.0" + "webpack": "5.75.0" }, "scripts": { "start": "react-scripts start", diff --git a/packages/llm.gblib/services/ImageServices.ts b/packages/default.gbui/public/css/pragmatismo.css similarity index 92% rename from packages/llm.gblib/services/ImageServices.ts rename to packages/default.gbui/public/css/pragmatismo.css index 21072373f..b158f9a96 100644 --- a/packages/llm.gblib/services/ImageServices.ts +++ b/packages/default.gbui/public/css/pragmatismo.css @@ -5,7 +5,7 @@ | ██ ██ █ █ ██ █ █ ██ ██ ██ ██ ██ ██ █ ██ ██ █ █ | | █████ █████ █ ███ █████ ██ ██ ██ ██ █████ ████ █████ █ ███ | | | -| General Bots Copyright (c) pragmatismo.cloud. All rights reserved. | +| General Bots Copyright (c) pragmatismo.cloud. All rights reserved. | | Licensed under the AGPL-3.0. | | | | According to our dual licensing model, this program can be used either | @@ -17,23 +17,19 @@ | in the LICENSE file you have received along with this program. | | | | This program is distributed in the hope that it will be useful, | -| but WITHOUT ANY WARRANTY, without even the implied warranty of | +| but WITHOUT ANY WARRANTY; without even the implied warranty of | | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | | GNU Affero General Public License for more details. | | | -| "General Bots" is a registered trademark of pragmatismo.cloud. | +| "General Bots" is a registered trademark of pragmatismo.cloud. | | The licensing of the program under the AGPLv3 does not imply a | | trademark license. Therefore any rights, title and interest in | | our trademarks remain entirely with us. | | | \*****************************************************************************/ -'use strict'; - - -/** - * Image processing services of conversation to be called by BASIC. - */ -export class ImageServices { +/* Non-branding related artifacts */ +.pragmaLogo{ + background: white; } diff --git a/packages/default.gbui/public/index.html b/packages/default.gbui/public/index.html index 4fda8073d..bcbc9559e 100644 --- a/packages/default.gbui/public/index.html +++ b/packages/default.gbui/public/index.html @@ -1,12 +1,13 @@ - - - - - - - - - - {title} | General Bots - - + + - + + + + + + + + + + + + + + + + + {title} - General Bots Community Edition + + + + +
- - + + + + + \ No newline at end of file diff --git a/packages/default.gbui/public/js/webchat.js b/packages/default.gbui/public/js/webchat.js deleted file mode 100644 index cbae8cc2c..000000000 --- a/packages/default.gbui/public/js/webchat.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! For license information please see webchat.js.LICENSE.txt */ -!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var r=t();for(var n in r)("object"==typeof exports?exports:e)[n]=r[n]}}(self,(function(){return function(){var e,t,r={37825:function(e,t,r){"use strict";var n=r(92412),i={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},o={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},a={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},s={};function c(e){return n.isMemo(e)?a:s[e.$$typeof]||i}s[n.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},s[n.Memo]=a;var u=Object.defineProperty,l=Object.getOwnPropertyNames,p=Object.getOwnPropertySymbols,d=Object.getOwnPropertyDescriptor,f=Object.getPrototypeOf,h=Object.prototype;e.exports=function e(t,r,n){if("string"!=typeof r){if(h){var i=f(r);i&&i!==h&&e(t,i,n)}var a=l(r);p&&(a=a.concat(p(r)));for(var s=c(t),v=c(r),m=0;me.length)&&(t=e.length);for(var r=0,n=new Array(t);r=e.length?{done:!0}:{done:!1,value:e[t++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var n,i,o=!0,a=!1;return{s:function(){n=e[Symbol.iterator]()},n:function(){var e=n.next();return o=e.done,e},e:function(e){a=!0,i=e},f:function(){try{o||null==n.return||n.return()}finally{if(a)throw i}}}}var d=Object.is||function(e,t){return e===t?0!==e||1/e==1/t:e!=e&&t!=t};function f(e,t,r){v(t);var n,i=p(function e(t,r){if(r.length){var n=a(r),i=n[0],o=n.slice(1);if("function"==typeof i){var c=[];if(Array.isArray(t))for(var u=0,l=t.length;u0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0?"Stopping automatic refreshes after "+t+" consecutive refreshes.":"The card has a refresh section, but automatic refreshes are disabled."),(s.GlobalSettings.applets.refresh.allowManualRefreshesAfterAutomaticRefreshes||s.GlobalSettings.applets.refresh.mode===o.RefreshMode.Manual)&&(d(o.LogLevel.Info,"Showing manual refresh button."),this.showManualRefreshButton(this._card.refresh.action)))}catch(e){d(o.LogLevel.Error,"setCard: "+e)}},e.prototype.internalExecuteAction=function(e,t,r){if(e instanceof l.UniversalAction){if(!this.channelAdapter)throw new Error("internalExecuteAction: No channel adapter set.");var n=this.createActivityRequest(e,t,r);n&&n.retryAsync()}this.onAction&&this.onAction(this,e)},e.prototype.createProgressOverlay=function(e){if(!this._progressOverlay)if(this.onCreateProgressOverlay)this._progressOverlay=this.onCreateProgressOverlay(this,e);else{this._progressOverlay=document.createElement("div"),this._progressOverlay.className="aaf-progress-overlay";var t=document.createElement("div");t.className="aaf-spinner",t.style.width="28px",t.style.height="28px",this._progressOverlay.appendChild(t)}return this._progressOverlay},e.prototype.removeProgressOverlay=function(e){this.onRemoveProgressOverlay&&this.onRemoveProgressOverlay(this,e),void 0!==this._progressOverlay&&(this.renderedElement.removeChild(this._progressOverlay),this._progressOverlay=void 0)},e.prototype.activityRequestSucceeded=function(e,t){this.onActivityRequestSucceeded&&this.onActivityRequestSucceeded(this,e,t)},e.prototype.activityRequestFailed=function(e){return this.onActivityRequestFailed?this.onActivityRequestFailed(this,e):s.GlobalSettings.applets.defaultTimeBetweenRetryAttempts},e.prototype.showAuthCodeInputDialog=function(t){var r=this;if(!this.onShowAuthCodeInputDialog||this.onShowAuthCodeInputDialog(this,t)){var n=this.createMagicCodeInputCard(t.attemptNumber);n.render(),n.onExecuteAction=function(n){if(r.card&&n instanceof l.SubmitAction)switch(n.id){case e._submitMagicCodeActionId:var i=void 0;n.data&&"string"==typeof n.data.magicCode&&(i=n.data.magicCode),i?(r.displayCard(r.card),t.authCode=i,t.retryAsync()):alert("Please enter the magic code you received.");break;case e._cancelMagicCodeAuthActionId:d(o.LogLevel.Warning,"Authentication cancelled by user."),r.displayCard(r.card);break;default:d(o.LogLevel.Error,"Unexpected action taken from magic code input card (id = "+n.id+")"),alert(u.Strings.magicCodeInputCard.somethingWentWrong())}},this.displayCard(n)}},e.prototype.internalSendActivityRequestAsync=function(e){return n(this,void 0,void 0,(function(){var t;return i(this,(function(r){switch(r.label){case 0:if(!this.channelAdapter)throw new Error("internalSendActivityRequestAsync: channelAdapter is not set.");return(t=e.action)instanceof l.ExecuteAction?[4,this.internalSendExecuteRequestAsync(e)]:[3,2];case 1:case 3:return r.sent(),[3,5];case 2:return t instanceof l.DataQuery?[4,this.internalSendDataQueryRequestAsync(e)]:[3,4];case 4:throw new Error("internalSendActivityRequestAsync: Unhandled Action Type");case 5:return[2]}}))}))},e.prototype.internalSendExecuteRequestAsync=function(e){return n(this,void 0,void 0,(function(){var t,r,n,a;return i(this,(function(l){switch(l.label){case 0:if(!this.channelAdapter)throw new Error("internalSendExecuteRequestAsync: channelAdapter is not set.");void 0!==(t=this.createProgressOverlay(e))&&this.renderedElement.appendChild(t),r=!1,n=function(){var t,n,l,p,f,h,v;return i(this,(function(i){switch(i.label){case 0:t=void 0,1===e.attemptNumber?d(o.LogLevel.Info,"Sending activity request to channel (attempt "+e.attemptNumber+")"):d(o.LogLevel.Info,"Re-sending activity request to channel (attempt "+e.attemptNumber+")"),i.label=1;case 1:return i.trys.push([1,3,,4]),[4,a.channelAdapter.sendRequestAsync(e)];case 2:return t=i.sent(),[3,4];case 3:return n=i.sent(),d(o.LogLevel.Error,"Activity request failed: "+n),a.removeProgressOverlay(e),r=!0,[3,4];case 4:if(!t)return[3,10];if(!(t instanceof c.SuccessResponse))return[3,5];if(a.removeProgressOverlay(e),void 0===t.rawContent)throw new Error("internalSendExecuteRequestAsync: Action.Execute result is undefined");l=t.rawContent;try{l=JSON.parse(t.rawContent)}catch(e){}if("string"==typeof l)d(o.LogLevel.Info,"The activity request returned a string after "+e.attemptNumber+" attempt(s)."),a.activityRequestSucceeded(t,l);else{if("object"!=typeof l||"AdaptiveCard"!==l.type)throw new Error("internalSendExecuteRequestAsync: Action.Execute result is of unsupported type ("+typeof t.rawContent+")");d(o.LogLevel.Info,"The activity request returned an Adaptive Card after "+e.attemptNumber+" attempt(s)."),a.internalSetCard(l,e.consecutiveActions),a.activityRequestSucceeded(t,a.card)}return r=!0,[3,10];case 5:return t instanceof c.ErrorResponse?(p=a.activityRequestFailed(t))>=0&&e.attemptNumber=0;s--)(i=e[s])&&(a=(o<3?i(a):o>3?i(t,r,a):i(t,r))||a);return o>3&&a&&Object.defineProperty(t,r,a),a},a=this&&this.__awaiter||function(e,t,r,n){return new(r||(r=Promise))((function(i,o){function a(e){try{c(n.next(e))}catch(e){o(e)}}function s(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?i(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(a,s)}c((n=n.apply(e,t||[])).next())}))},s=this&&this.__generator||function(e,t){var r,n,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function s(o){return function(s){return function(o){if(r)throw new TypeError("Generator is already executing.");for(;a;)try{if(r=1,n&&(i=2&o[0]?n.return:o[0]?n.throw||((i=n.return)&&i.call(n),0):n.next)&&!(i=i.call(n,o[1])).done)return i;switch(n=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return a.label++,{value:o[1],done:!1};case 5:a.label++,n=o[1],o=[0];continue;case 7:o=a.ops.pop(),a.trys.pop();continue;default:if(!(i=a.trys,(i=i.length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0||t.lineThickness&&t.lineThickness>0){var n=document.createElement("div");n.className=e.makeCssClassName("ac-"+(r===u.Orientation.Horizontal?"horizontal":"vertical")+"-separator"),n.setAttribute("aria-hidden","true");var i=t.lineColor?p.stringToCssColor(t.lineColor):"";return r===u.Orientation.Horizontal?t.lineThickness?(n.style.paddingTop=t.spacing/2+"px",n.style.marginBottom=t.spacing/2+"px",n.style.borderBottom=t.lineThickness+"px solid "+i):n.style.height=t.spacing+"px":t.lineThickness?(n.style.paddingLeft=t.spacing/2+"px",n.style.marginRight=t.spacing/2+"px",n.style.borderRight=t.lineThickness+"px solid "+i):n.style.width=t.spacing+"px",n.style.overflow="hidden",n.style.flex="0 0 auto",n}}t.renderSeparation=y;var E=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t._truncatedDueToOverflow=!1,t}return i(t,e),Object.defineProperty(t.prototype,"lang",{get:function(){var e=this.getValue(t.langProperty);return e||(this.parent?this.parent.lang:void 0)},set:function(e){this.setValue(t.langProperty,e)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"isVisible",{get:function(){return this.getValue(t.isVisibleProperty)},set:function(e){l.GlobalSettings.useAdvancedCardBottomTruncation&&!e&&this.undoOverflowTruncation(),this.isVisible!==e&&(this.setValue(t.isVisibleProperty,e),this.updateRenderedElementVisibility(),this._renderedElement&&Re(this)),this._renderedElement&&this._renderedElement.setAttribute("aria-expanded",e.toString())},enumerable:!1,configurable:!0}),t.prototype.internalRenderSeparator=function(){var e=y(this.hostConfig,{spacing:this.hostConfig.getEffectiveSpacing(this.spacing),lineThickness:this.separator?this.hostConfig.separator.lineThickness:void 0,lineColor:this.separator?this.hostConfig.separator.lineColor:void 0},this.separatorOrientation);if(l.GlobalSettings.alwaysBleedSeparators&&e&&this.separatorOrientation===u.Orientation.Horizontal){var t=this.getParentContainer();if(t&&t.getEffectivePadding()){var r=this.hostConfig.paddingDefinitionToSpacingDefinition(t.getEffectivePadding());e.style.marginLeft="-"+r.left+"px",e.style.marginRight="-"+r.right+"px"}}return e},t.prototype.updateRenderedElementVisibility=function(){var e=this.isDesignMode()||this.isVisible?this._defaultRenderedElementDisplayMode:"none";this._renderedElement&&(e?this._renderedElement.style.display=e:this._renderedElement.style.removeProperty("display")),this._separatorElement&&(this.parent&&this.parent.isFirstElement(this)?this._separatorElement.style.display="none":e?this._separatorElement.style.display=e:this._separatorElement.style.removeProperty("display"))},t.prototype.hideElementDueToOverflow=function(){this._renderedElement&&this.isVisible&&(this._renderedElement.style.visibility="hidden",this.isVisible=!1,Re(this,!1))},t.prototype.showElementHiddenDueToOverflow=function(){this._renderedElement&&!this.isVisible&&(this._renderedElement.style.removeProperty("visibility"),this.isVisible=!0,Re(this,!1))},t.prototype.handleOverflow=function(e){if(this.isVisible||this.isHiddenDueToOverflow()){var t=this.truncateOverflow(e);this._truncatedDueToOverflow=t||this._truncatedDueToOverflow,t?t&&!this.isVisible&&this.showElementHiddenDueToOverflow():this.hideElementDueToOverflow()}},t.prototype.resetOverflow=function(){var e=!1;return this._truncatedDueToOverflow&&(this.undoOverflowTruncation(),this._truncatedDueToOverflow=!1,e=!0),this.isHiddenDueToOverflow()&&this.showElementHiddenDueToOverflow(),e},t.prototype.getDefaultSerializationContext=function(){return new je},t.prototype.createPlaceholderElement=function(){var e=this.getEffectiveStyleDefinition(),t=p.stringToCssColor(e.foregroundColors.default.subtle),r=document.createElement("div");return r.style.border="1px dashed "+t,r.style.padding="4px",r.style.minHeight="32px",r.style.fontSize="10px",t&&(r.style.color=t),r.innerText=_.Strings.defaults.emptyElementText(this.getJsonTypeName()),r},t.prototype.adjustRenderedElementSize=function(e){"auto"===this.height?e.style.flex="0 0 auto":e.style.flex="1 1 auto"},t.prototype.updateInputsVisualState=function(e){var t=this.getAllInputs(),r=e?G.MouseEnterOnCard:G.MouseLeaveOnCard;t.forEach((function(e){return e.updateVisualState(r)}))},t.prototype.isDisplayed=function(){return void 0!==this._renderedElement&&this.isVisible&&this._renderedElement.offsetHeight>0},t.prototype.overrideInternalRender=function(){return this.internalRender()},t.prototype.applyPadding=function(){if(this.separatorElement&&this.separatorOrientation===u.Orientation.Horizontal)if(l.GlobalSettings.alwaysBleedSeparators&&!this.isBleeding()){var e=new l.PaddingDefinition;this.getImmediateSurroundingPadding(e);var t=this.hostConfig.paddingDefinitionToSpacingDefinition(e);this.separatorElement.style.marginLeft="-"+t.left+"px",this.separatorElement.style.marginRight="-"+t.right+"px"}else this.separatorElement.style.marginRight="0",this.separatorElement.style.marginLeft="0"},t.prototype.truncateOverflow=function(e){return!1},t.prototype.undoOverflowTruncation=function(){},t.prototype.getDefaultPadding=function(){return new l.PaddingDefinition},t.prototype.getHasBackground=function(e){return void 0===e&&(e=!1),!1},t.prototype.getHasBorder=function(){return!1},t.prototype.getPadding=function(){return this._padding},t.prototype.setPadding=function(e){this._padding=e},t.prototype.shouldSerialize=function(e){return void 0!==e.elementRegistry.findByName(this.getJsonTypeName())},Object.defineProperty(t.prototype,"useDefaultSizing",{get:function(){return!0},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"separatorOrientation",{get:function(){return u.Orientation.Horizontal},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"defaultStyle",{get:function(){return u.ContainerStyle.Default},enumerable:!1,configurable:!0}),t.prototype.parse=function(t,r){e.prototype.parse.call(this,t,r||new je)},t.prototype.asString=function(){return""},t.prototype.isBleeding=function(){return!1},t.prototype.getEffectiveStyle=function(){return this.parent?this.parent.getEffectiveStyle():this.defaultStyle},t.prototype.getEffectiveStyleDefinition=function(){return this.hostConfig.containerStyles.getStyleByName(this.getEffectiveStyle())},t.prototype.getEffectiveTextStyleDefinition=function(){return this.parent?this.parent.getEffectiveTextStyleDefinition():this.hostConfig.textStyles.default},t.prototype.getForbiddenActionTypes=function(){return[]},t.prototype.getImmediateSurroundingPadding=function(e,t,r,n,i){if(void 0===t&&(t=!0),void 0===r&&(r=!0),void 0===n&&(n=!0),void 0===i&&(i=!0),this.parent){var o=t&&this.parent.isTopElement(this),a=r&&this.parent.isRightMostElement(this),s=n&&this.parent.isBottomElement(this),c=i&&this.parent.isLeftMostElement(this),l=this.parent.getEffectivePadding();l&&(o&&l.top!==u.Spacing.None&&(e.top=l.top,o=!1),a&&l.right!==u.Spacing.None&&(e.right=l.right,a=!1),s&&l.bottom!==u.Spacing.None&&(e.bottom=l.bottom,s=!1),c&&l.left!==u.Spacing.None&&(e.left=l.left,c=!1)),(o||a||s||c)&&this.parent.getImmediateSurroundingPadding(e,o,a,s,c)}},t.prototype.getActionCount=function(){return 0},t.prototype.getActionAt=function(e){throw new Error(_.Strings.errors.indexOutOfRange(e))},t.prototype.indexOfAction=function(e){for(var t=0;t0&&(this.renderedElement.style.maxHeight=this._computedLineHeight*this.maxLines+"px");var n=null!==(r=null===(e=t._ttRoundtripPolicy)||void 0===e?void 0:e.createHTML(this._originalInnerHtml))&&void 0!==r?r:this._originalInnerHtml;this.renderedElement.innerHTML=n}},t.prototype.truncateIfSupported=function(e){if(void 0!==this.renderedElement){var t=this.renderedElement.children,r=!t.length;if(r||1===t.length&&"p"===t[0].tagName.toLowerCase()&&!t[0].children.length){var n=r?this.renderedElement:t[0];return p.truncateText(n,e,this._computedLineHeight),!0}}return!1},t.prototype.setText=function(t){e.prototype.setText.call(this,t),this._processedText=void 0},t.prototype.internalRender=function(){var e,r,n=this;if(this._processedText=void 0,this.text){var i=this.preProcessPropertyValue(A.textProperty),o=this.hostConfig,a=void 0;if(this.forElementId){var s=document.createElement("label");s.htmlFor=this.forElementId,a=s}else a=document.createElement("div");if(a.classList.add(o.makeCssClassName("ac-textBlock")),a.style.overflow="hidden",this.applyStylesTo(a),"heading"===this.style){a.setAttribute("role","heading");var c=this.hostConfig.textBlock.headingLevel;void 0!==c&&c>0&&a.setAttribute("aria-level",c.toString())}if(this.selectAction&&o.supportsInteractivity&&(a.onclick=function(e){n.selectAction&&n.selectAction.isEffectivelyEnabled()&&(e.preventDefault(),e.cancelBubble=!0,n.selectAction.execute())},this.selectAction.setupElementForAccessibility(a),this.selectAction.isEffectivelyEnabled()&&a.classList.add(o.makeCssClassName("ac-selectable"))),!this._processedText){this._treatAsPlainText=!0;var u=f.formatText(this.lang,i);if(this.useMarkdown&&u){l.GlobalSettings.allowMarkForTextHighlighting&&(u=u.replace(//g,"===").replace(/<\/mark>/g,"/==/"));var d=Be.applyMarkdown(u);if(d.didProcess&&d.outputHtml){if(this._processedText=d.outputHtml,this._treatAsPlainText=!1,l.GlobalSettings.allowMarkForTextHighlighting&&this._processedText){var h="",v=this.getEffectiveStyleDefinition();v.highlightBackgroundColor&&(h+="background-color: "+v.highlightBackgroundColor+";"),v.highlightForegroundColor&&(h+="color: "+v.highlightForegroundColor+";"),h&&(h='style="'+h+'"'),this._processedText=this._processedText.replace(/===/g,"").replace(/\/==\//g,"")}}else this._processedText=u,this._treatAsPlainText=!0}else this._processedText=u,this._treatAsPlainText=!0}if(this._processedText||(this._processedText=""),this._treatAsPlainText)a.innerText=this._processedText;else{var m=null!==(r=null===(e=t._ttMarkdownPolicy)||void 0===e?void 0:e.createHTML(this._processedText))&&void 0!==r?r:this._processedText;a.innerHTML=m}if(a.firstElementChild instanceof HTMLElement){var _=a.firstElementChild;_.style.marginTop="0px",_.style.width="100%",this.wrap||(_.style.overflow="hidden",_.style.textOverflow="ellipsis")}a.lastElementChild instanceof HTMLElement&&(a.lastElementChild.style.marginBottom="0px");for(var T=a.getElementsByTagName("a"),g=function(e){e.classList.add(o.makeCssClassName("ac-anchor")),e.target="_blank",e.onclick=function(t){Oe(n,e,t)&&(t.preventDefault(),t.cancelBubble=!0)},e.oncontextmenu=function(t){return!Oe(n,e,t)||(t.preventDefault(),t.cancelBubble=!0,!1)}},y=0,E=Array.from(T);y0&&(a.style.overflow="hidden",p.isInternetExplorer()||!l.GlobalSettings.useWebkitLineClamp?a.style.maxHeight=this._computedLineHeight*this.maxLines+"px":(a.style.removeProperty("line-height"),a.style.display="-webkit-box",a.style.webkitBoxOrient="vertical",a.style.webkitLineClamp=this.maxLines.toString()))):(a.style.whiteSpace="nowrap",a.style.textOverflow="ellipsis"),(l.GlobalSettings.useAdvancedTextBlockTruncation||l.GlobalSettings.useAdvancedCardBottomTruncation)&&(this._originalInnerHtml=a.innerHTML),a}},t.prototype.truncateOverflow=function(e){return e>=this._computedLineHeight&&this.truncateIfSupported(e)},t.prototype.undoOverflowTruncation=function(){if(this.restoreOriginalContent(),l.GlobalSettings.useAdvancedTextBlockTruncation&&this.maxLines){var e=this._computedLineHeight*this.maxLines;this.truncateIfSupported(e)}},t.prototype.applyStylesTo=function(t){switch(e.prototype.applyStylesTo.call(this,t),this.getEffectiveHorizontalAlignment()){case u.HorizontalAlignment.Center:t.style.textAlign="center";break;case u.HorizontalAlignment.Right:t.style.textAlign="end";break;default:t.style.textAlign="start"}var r=this.hostConfig.lineHeights;if(r)switch(this.effectiveSize){case u.TextSize.Small:this._computedLineHeight=r.small;break;case u.TextSize.Medium:this._computedLineHeight=r.medium;break;case u.TextSize.Large:this._computedLineHeight=r.large;break;case u.TextSize.ExtraLarge:this._computedLineHeight=r.extraLarge;break;default:this._computedLineHeight=r.default}else this._computedLineHeight=1.33*this.getFontSize(this.hostConfig.getFontTypeDefinition(this.effectiveFontType));t.style.lineHeight=this._computedLineHeight+"px"},t.prototype.getJsonTypeName=function(){return"TextBlock"},t.prototype.getEffectiveTextStyleDefinition=function(){return this.style?this.hostConfig.textStyles.getStyleByName(this.style):e.prototype.getEffectiveTextStyleDefinition.call(this)},t.prototype.updateLayout=function(t){void 0===t&&(t=!1),e.prototype.updateLayout.call(this,t),l.GlobalSettings.useAdvancedTextBlockTruncation&&this.maxLines&&this.isDisplayed()&&(this.restoreOriginalContent(),this.truncateIfSupported(this._computedLineHeight*this.maxLines))},t.wrapProperty=new v.BoolProperty(v.Versions.v1_0,"wrap",!1),t.maxLinesProperty=new v.NumProperty(v.Versions.v1_0,"maxLines"),t.styleProperty=new v.ValueSetProperty(v.Versions.v1_5,"style",[{value:"default"},{value:"columnHeader"},{value:"heading"}]),t._ttMarkdownPolicy="undefined"==typeof window||null===(r=window.trustedTypes)||void 0===r?void 0:r.createPolicy("adaptivecards#markdownPassthroughPolicy",{createHTML:function(e){return e}}),t._ttRoundtripPolicy="undefined"==typeof window||null===(n=window.trustedTypes)||void 0===n?void 0:n.createPolicy("adaptivecards#restoreContentsPolicy",{createHTML:function(e){return e}}),o([(0,v.property)(t.wrapProperty)],t.prototype,"wrap",void 0),o([(0,v.property)(t.maxLinesProperty)],t.prototype,"maxLines",void 0),o([(0,v.property)(t.styleProperty)],t.prototype,"style",void 0),t}(A);t.TextBlock=S;var C=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.italic=!1,t.strikethrough=!1,t.highlight=!1,t.underline=!1,t}return i(t,e),t.prototype.populateSchema=function(t){e.prototype.populateSchema.call(this,t),t.add(A.selectActionProperty)},t.prototype.internalRender=function(){var e=this;if(this.text){var t=this.preProcessPropertyValue(A.textProperty),r=this.hostConfig,n=f.formatText(this.lang,t);n||(n="");var i=document.createElement("span");if(i.classList.add(r.makeCssClassName("ac-textRun")),this.applyStylesTo(i),this.selectAction&&r.supportsInteractivity){var o=document.createElement("a");o.classList.add(r.makeCssClassName("ac-anchor"));var a=this.selectAction.getHref();o.href=a||"",o.target="_blank",o.onclick=function(t){e.selectAction&&e.selectAction.isEffectivelyEnabled()&&(t.preventDefault(),t.cancelBubble=!0,e.selectAction.execute())},this.selectAction.setupElementForAccessibility(o),o.innerText=n,i.appendChild(o)}else i.innerText=n;return i}},t.prototype.applyStylesTo=function(t){if(e.prototype.applyStylesTo.call(this,t),this.italic&&(t.style.fontStyle="italic"),this.strikethrough&&(t.style.textDecoration="line-through"),this.highlight){var r=this.getColorDefinition(this.getEffectiveStyleDefinition().foregroundColors,this.effectiveColor),n=p.stringToCssColor(this.effectiveIsSubtle?r.highlightColors.subtle:r.highlightColors.default);n&&(t.style.backgroundColor=n)}this.underline&&(t.style.textDecoration="underline")},t.prototype.getJsonTypeName=function(){return"TextRun"},Object.defineProperty(t.prototype,"isStandalone",{get:function(){return!1},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"isInline",{get:function(){return!0},enumerable:!1,configurable:!0}),t.italicProperty=new v.BoolProperty(v.Versions.v1_2,"italic",!1),t.strikethroughProperty=new v.BoolProperty(v.Versions.v1_2,"strikethrough",!1),t.highlightProperty=new v.BoolProperty(v.Versions.v1_2,"highlight",!1),t.underlineProperty=new v.BoolProperty(v.Versions.v1_3,"underline",!1),o([(0,v.property)(t.italicProperty)],t.prototype,"italic",void 0),o([(0,v.property)(t.strikethroughProperty)],t.prototype,"strikethrough",void 0),o([(0,v.property)(t.highlightProperty)],t.prototype,"highlight",void 0),o([(0,v.property)(t.underlineProperty)],t.prototype,"underline",void 0),t}(A);t.TextRun=C;var I=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t._inlines=[],t}return i(t,e),t.prototype.internalAddInline=function(e,t){if(void 0===t&&(t=!1),!e.isInline)throw new Error(_.Strings.errors.elementCannotBeUsedAsInline());if(!(void 0===e.parent||t)&&e.parent!==this)throw new Error(_.Strings.errors.inlineAlreadyParented());e.setParent(this),this._inlines.push(e)},t.prototype.internalParse=function(t,r){if(e.prototype.internalParse.call(this,t,r),this._inlines=[],Array.isArray(t.inlines))for(var n=0,i=t.inlines;n0){for(var n=[],i=0,o=this._inlines;i0){var e=void 0;if(this.forElementId){var t=document.createElement("label");t.htmlFor=this.forElementId,e=t}else e=document.createElement("div");switch(e.className=this.hostConfig.makeCssClassName("ac-richTextBlock"),this.getEffectiveHorizontalAlignment()){case u.HorizontalAlignment.Center:e.style.textAlign="center";break;case u.HorizontalAlignment.Right:e.style.textAlign="end";break;default:e.style.textAlign="start"}for(var r=0,n=0,i=this._inlines;n0)return e}},t.prototype.asString=function(){for(var e="",t=0,r=this._inlines;t=0&&e=0&&(this._inlines[t].setParent(void 0),this._inlines.splice(t,1),!0)},t}(E);t.RichTextBlock=I;var O=function(e){function t(t,r){var n=e.call(this)||this;return n.name=t,n.value=r,n}return i(t,e),t.prototype.getSchemaKey=function(){return"Fact"},t.titleProperty=new v.StringProperty(v.Versions.v1_0,"title"),t.valueProperty=new v.StringProperty(v.Versions.v1_0,"value"),o([(0,v.property)(t.titleProperty)],t.prototype,"name",void 0),o([(0,v.property)(t.valueProperty)],t.prototype,"value",void 0),t}(v.SerializableObject);t.Fact=O;var w=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return i(t,e),Object.defineProperty(t.prototype,"useDefaultSizing",{get:function(){return!1},enumerable:!1,configurable:!0}),t.prototype.internalRender=function(){var e=void 0,t=this.hostConfig;if(this.facts.length>0){(e=document.createElement("table")).style.borderWidth="0px",e.style.borderSpacing="0px",e.style.borderStyle="none",e.style.borderCollapse="collapse",e.style.display="block",e.style.overflow="hidden",e.classList.add(t.makeCssClassName("ac-factset")),e.setAttribute("role","presentation");for(var r=0;r0&&(n.style.marginTop=t.factSet.spacing+"px");var i=document.createElement("td");i.style.padding="0",i.classList.add(t.makeCssClassName("ac-fact-title")),t.factSet.title.maxWidth&&(i.style.maxWidth=t.factSet.title.maxWidth+"px"),i.style.verticalAlign="top";var o=new S;o.setParent(this),o.text=!this.facts[r].name&&this.isDesignMode()?"Title":this.facts[r].name,o.size=t.factSet.title.size,o.color=t.factSet.title.color,o.isSubtle=t.factSet.title.isSubtle,o.weight=t.factSet.title.weight,o.wrap=t.factSet.title.wrap,o.spacing=u.Spacing.None,p.appendChild(i,o.render()),p.appendChild(n,i),(i=document.createElement("td")).style.width="10px",p.appendChild(n,i),(i=document.createElement("td")).style.padding="0",i.style.verticalAlign="top",i.classList.add(t.makeCssClassName("ac-fact-value")),(o=new S).setParent(this),o.text=this.facts[r].value,o.size=t.factSet.value.size,o.color=t.factSet.value.color,o.isSubtle=t.factSet.value.isSubtle,o.weight=t.factSet.value.weight,o.wrap=t.factSet.value.wrap,o.spacing=u.Spacing.None,p.appendChild(i,o.render()),p.appendChild(n,i),p.appendChild(e,n)}}return e},t.prototype.getJsonTypeName=function(){return"FactSet"},t.factsProperty=new v.SerializableObjectCollectionProperty(v.Versions.v1_0,"facts",O),o([(0,v.property)(t.factsProperty)],t.prototype,"facts",void 0),t}(E);t.FactSet=w;var R=function(e){function t(t,r,n,i){var o=e.call(this,t,r)||this;return o.targetVersion=t,o.name=r,o.internalName=n,o.fallbackProperty=i,o}return i(t,e),t.prototype.getInternalName=function(){return this.internalName},t.prototype.parse=function(e,t,r){var n=void 0,i=t[this.name];if(void 0===i)return this.defaultValue;var o=!1;if("string"==typeof i){try{var a=l.SizeAndUnit.parse(i,!0);a.unit===u.SizeUnit.Pixel&&(n=a.physicalSize,o=!0)}catch(e){}!o&&this.fallbackProperty&&(o=this.fallbackProperty.isValidValue(i,r))}return o||r.logParseEvent(e,u.ValidationEvent.InvalidPropertyValue,_.Strings.errors.invalidPropertyValue(i,this.name)),n},t.prototype.toJSON=function(e,t,r,n){n.serializeValue(t,this.name,"number"!=typeof r||isNaN(r)?void 0:r+"px")},t}(v.PropertyDefinition),P=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.size=u.Size.Auto,t.style=u.ImageStyle.Default,t}return i(t,e),t.prototype.populateSchema=function(t){e.prototype.populateSchema.call(this,t),t.remove(E.heightProperty)},t.prototype.applySize=function(e){if(this.pixelWidth||this.pixelHeight)this.pixelWidth&&(e.style.width=this.pixelWidth+"px"),this.pixelHeight&&(e.style.height=this.pixelHeight+"px");else if(this.maxHeight){switch(this.size){case u.Size.Small:e.style.height=this.hostConfig.imageSizes.small+"px";break;case u.Size.Large:e.style.height=this.hostConfig.imageSizes.large+"px";break;default:e.style.height=this.hostConfig.imageSizes.medium+"px"}e.style.maxHeight=this.maxHeight+"px"}else{switch(this.size){case u.Size.Stretch:e.style.width="100%";break;case u.Size.Auto:e.style.maxWidth="100%";break;case u.Size.Small:e.style.width=this.hostConfig.imageSizes.small+"px";break;case u.Size.Large:e.style.width=this.hostConfig.imageSizes.large+"px";break;case u.Size.Medium:e.style.width=this.hostConfig.imageSizes.medium+"px"}e.style.maxHeight="100%"}},Object.defineProperty(t.prototype,"useDefaultSizing",{get:function(){return!1},enumerable:!1,configurable:!0}),t.prototype.internalRender=function(){var e=this,r=void 0;if(this.url){(r=document.createElement("div")).style.display="flex",r.style.alignItems="flex-start";var n=this.hostConfig;switch(this.getEffectiveHorizontalAlignment()){case u.HorizontalAlignment.Center:r.style.justifyContent="center";break;case u.HorizontalAlignment.Right:r.style.justifyContent="flex-end";break;default:r.style.justifyContent="flex-start"}var i=document.createElement("img");this.renderedImageElement=i,i.onload=function(t){Ie(e)},i.onerror=function(t){if(e.renderedElement){var r=e.getRootElement();if(g(e.renderedElement),r&&r.designMode){var n=document.createElement("div");n.style.display="flex",n.style.alignItems="center",n.style.justifyContent="center",n.style.backgroundColor="#EEEEEE",n.style.color="black",n.innerText=":-(",n.style.padding="10px",e.applySize(n),e.renderedElement.appendChild(n)}}Ie(e)},i.style.minWidth="0",i.classList.add(n.makeCssClassName("ac-image")),this.selectAction&&n.supportsInteractivity&&(i.onkeypress=function(t){e.selectAction&&e.selectAction.isEffectivelyEnabled()&&("Enter"===t.code||"Space"===t.code)&&(t.preventDefault(),t.cancelBubble=!0,e.selectAction.execute())},i.onclick=function(t){e.selectAction&&e.selectAction.isEffectivelyEnabled()&&(t.preventDefault(),t.cancelBubble=!0,e.selectAction.execute())},this.selectAction.setupElementForAccessibility(i),this.selectAction.isEffectivelyEnabled()&&i.classList.add(n.makeCssClassName("ac-selectable"))),this.applySize(i),this.style===u.ImageStyle.Person&&(i.style.borderRadius="50%",i.style.backgroundPosition="50% 50%",i.style.backgroundRepeat="no-repeat");var o=p.stringToCssColor(this.backgroundColor);o&&(i.style.backgroundColor=o),this.setImageSource(i);var a=this.preProcessPropertyValue(t.altTextProperty);a&&(i.alt=a),r.appendChild(i)}return r},t.prototype.getJsonTypeName=function(){return"Image"},t.prototype.getAllActions=function(){var t=e.prototype.getAllActions.call(this);return this.selectAction&&t.push(this.selectAction),t},t.prototype.getActionById=function(t){var r=e.prototype.getActionById.call(this,t);return!r&&this.selectAction&&(r=this.selectAction.getActionById(t)),r},t.prototype.getResourceInformation=function(){return this.url?[{url:this.url,mimeType:"image"}]:[]},t.prototype.setImageSource=function(e){var r=new N(this.forceLoad,this.url);r.configureImage(this),e.src=this.preProcessPropertyValue(t.urlProperty),r.resetImage(this)},t.urlProperty=new v.StringProperty(v.Versions.v1_0,"url"),t.altTextProperty=new v.StringProperty(v.Versions.v1_0,"altText"),t.backgroundColorProperty=new v.StringProperty(v.Versions.v1_1,"backgroundColor"),t.styleProperty=new v.EnumProperty(v.Versions.v1_0,"style",u.ImageStyle,u.ImageStyle.Default),t.sizeProperty=new v.EnumProperty(v.Versions.v1_0,"size",u.Size,u.Size.Auto),t.pixelWidthProperty=new R(v.Versions.v1_1,"width","pixelWidth"),t.pixelHeightProperty=new R(v.Versions.v1_1,"height","pixelHeight",E.heightProperty),t.selectActionProperty=new b(v.Versions.v1_1,"selectAction",["Action.ShowCard"]),t.shouldForceLoadProperty=new v.BoolProperty(v.Versions.v1_6,"forceLoad",!1),o([(0,v.property)(t.urlProperty)],t.prototype,"url",void 0),o([(0,v.property)(t.altTextProperty)],t.prototype,"altText",void 0),o([(0,v.property)(t.backgroundColorProperty)],t.prototype,"backgroundColor",void 0),o([(0,v.property)(t.sizeProperty)],t.prototype,"size",void 0),o([(0,v.property)(t.styleProperty)],t.prototype,"style",void 0),o([(0,v.property)(t.pixelWidthProperty)],t.prototype,"pixelWidth",void 0),o([(0,v.property)(t.pixelHeightProperty)],t.prototype,"pixelHeight",void 0),o([(0,v.property)(t.selectActionProperty)],t.prototype,"selectAction",void 0),o([(0,v.property)(t.shouldForceLoadProperty)],t.prototype,"forceLoad",void 0),t}(E);t.Image=P;var N=function(){function e(e,t){this.doForceLoad=e,this.url=t,t&&t.length&&e&&(this.uniqueHash="?"+Date.now(),this.urlWithForceLoadOption=t+this.uniqueHash)}return e.prototype.configureImage=function(e){this.urlWithForceLoadOption&&this.urlWithForceLoadOption.length&&(e.url=this.urlWithForceLoadOption)},e.prototype.resetImage=function(e){e.url=this.url},e}(),x=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.allowVerticalOverflow=!1,t}return i(t,e),t.prototype.populateSchema=function(r){e.prototype.populateSchema.call(this,r),this.isSelectable||r.remove(t.selectActionProperty)},t.prototype.isElementAllowed=function(e){return this.hostConfig.supportsInteractivity||!e.isInteractive},t.prototype.applyPadding=function(){if(e.prototype.applyPadding.call(this),this.renderedElement){var t=new l.SpacingDefinition;this.getEffectivePadding()&&(t=this.hostConfig.paddingDefinitionToSpacingDefinition(this.getEffectivePadding())),this.renderedElement.style.paddingTop=t.top+"px",this.renderedElement.style.paddingRight=t.right+"px",this.renderedElement.style.paddingBottom=t.bottom+"px",this.renderedElement.style.paddingLeft=t.left+"px",this.renderedElement.style.marginRight="0",this.renderedElement.style.marginLeft="0"}},Object.defineProperty(t.prototype,"isSelectable",{get:function(){return!1},enumerable:!1,configurable:!0}),t.prototype.forbiddenChildElements=function(){return[]},t.prototype.releaseDOMResources=function(){e.prototype.releaseDOMResources.call(this);for(var t=0;t0){(e=document.createElement("div")).style.display="flex",e.style.flexWrap="wrap";for(var t=0,r=this._images;t0?this._images[0]:void 0},t.prototype.getLastVisibleRenderedItem=function(){return this._images&&this._images.length>0?this._images[this._images.length-1]:void 0},t.prototype.removeItem=function(e){if(e instanceof P){var t=this._images.indexOf(e);if(t>=0)return this._images.splice(t,1),e.setParent(void 0),this.updateLayout(),!0}return!1},t.prototype.getJsonTypeName=function(){return"ImageSet"},t.prototype.addImage=function(e){if(e.parent)throw new Error("This image already belongs to another ImageSet");this._images.push(e),e.setParent(this)},t.prototype.indexOf=function(e){return e instanceof P?this._images.indexOf(e):-1},t.imagesProperty=new v.SerializableObjectCollectionProperty(v.Versions.v1_0,"images",P,(function(e,t){t.setParent(e)})),t.imageSizeProperty=new v.EnumProperty(v.Versions.v1_0,"imageSize",u.ImageSize,u.ImageSize.Medium),t.imagePresentationStyle=new v.EnumProperty(v.Versions.v1_6,"style",u.ImageSetPresentationStyle,u.ImageSetPresentationStyle.Default),t.pixelOffset=new v.NumProperty(v.Versions.v1_6,"offset",0,void 0),o([(0,v.property)(t.imagesProperty)],t.prototype,"_images",void 0),o([(0,v.property)(t.imageSizeProperty)],t.prototype,"imageSize",void 0),o([(0,v.property)(t.imagePresentationStyle)],t.prototype,"presentationStyle",void 0),o([(0,v.property)(t.pixelOffset)],t.prototype,"pixelOffset",void 0),t}(x);t.ImageSet=L;var k=function(){function e(e,t,r){this.sign45=.7071,this.maxImageCounts=2,this.offset=0,this.normalizationConstant=0,this.border=5,this.dimension=0,this.dimension=t,this.normalizationConstant=2*(t*this.sign45-.5*t),this.offset=this.sign45*(Math.max(e,-t)-this.normalizationConstant),this.style=r||""}return e.prototype.moveImageRight=function(e){e.style.marginLeft=this.offset+"px"},e.prototype.moveImageUp=function(e){e.style.marginBottom=this.offset+this.dimension+"px"},e.prototype.moveImageDown=function(e){e.style.marginTop=this.offset+this.dimension+"px"},e.prototype.makeImageRound=function(e){e.style.borderRadius="50%",e.style.backgroundPosition="50% 50%",e.style.backgroundRepeat="no-repeat"},e.prototype.applyBorder=function(e){e.style.height=this.dimension+2*this.border+"px",e.style.border=this.border+"px solid "+this.style},e.prototype.configureImageForBottomLeft=function(e){this.moveImageDown(e),this.makeImageRound(e),this.applyBorder(e),e.style.zIndex="2"},e.prototype.configureImageForTopRight=function(e){this.moveImageUp(e),this.moveImageRight(e),this.makeImageRound(e),e.style.zIndex="1"},e.prototype.configureImagesArrayAsStackedLayout=function(e){1==e.length?e[0].renderedImageElement&&this.makeImageRound(e[0].renderedImageElement):e.length<=this.maxImageCounts&&e[0].renderedImageElement&&e[1].renderedImageElement&&(this.configureImageForBottomLeft(e[0].renderedImageElement),this.configureImageForTopRight(e[1].renderedImageElement))},e.parseNumericPixelDimension=function(e){if("px"==(null==e?void 0:e.substring(e.length-2)))return parseInt(e.substring(0,e.length-2))},e}(),D=function(e){function t(t,r){var n=e.call(this)||this;return n.url=t,n.mimeType=r,n}return i(t,e),t.prototype.isValid=function(){return!(!this.mimeType||!this.url)},t.mimeTypeProperty=new v.StringProperty(v.Versions.v1_1,"mimeType"),t.urlProperty=new v.StringProperty(v.Versions.v1_1,"url"),o([(0,v.property)(t.mimeTypeProperty)],t.prototype,"mimeType",void 0),o([(0,v.property)(t.urlProperty)],t.prototype,"url",void 0),t}(v.SerializableObject);t.ContentSource=D;var M=function(e){function t(t,r,n){var i=e.call(this,t,r)||this;return i.label=n,i}return i(t,e),t.prototype.getSchemaKey=function(){return"CaptionSource"},t.prototype.render=function(){var e=void 0;return this.isValid()&&((e=document.createElement("track")).src=this.url,e.kind="captions",e.label=this.label),e},t.labelProperty=new v.StringProperty(v.Versions.v1_6,"label"),o([(0,v.property)(t.labelProperty)],t.prototype,"label",void 0),t}(D);t.CaptionSource=M;var B=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return i(t,e),t.prototype.getSchemaKey=function(){return"MediaSource"},t.prototype.render=function(){var e=void 0;return this.isValid()&&((e=document.createElement("source")).src=this.url,e.type=this.mimeType),e},t}(D);t.MediaSource=B;var H=function(){function e(){}return e.prototype.play=function(){},Object.defineProperty(e.prototype,"posterUrl",{get:function(){return this._posterUrl},set:function(e){this._posterUrl=e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"selectedMediaType",{get:function(){},enumerable:!1,configurable:!0}),e}();t.MediaPlayer=H;var j=function(e){function t(t){var r=e.call(this)||this;return r.owner=t,r._selectedSources=[],r._captionSources=[],r.processSources(),r}return i(t,e),t.prototype.processSources=function(){var e;this._selectedSources=[],this._captionSources=[],this._selectedMediaType=void 0;for(var r=0,n=this.owner.sources;r=0&&(this._selectedMediaType=t.supportedMediaTypes[a])}o[0]===this._selectedMediaType&&this._selectedSources.push(i)}}(e=this._captionSources).push.apply(e,this.owner.captionSources)},t.prototype.canPlay=function(){return this._selectedSources.length>0},t.prototype.fetchVideoDetails=function(){return a(this,void 0,void 0,(function(){return s(this,(function(e){return[2]}))}))},t.prototype.render=function(){"video"===this._selectedMediaType?this._mediaElement=document.createElement("video"):this._mediaElement=document.createElement("audio"),this._mediaElement.setAttribute("aria-label",this.owner.altText?this.owner.altText:_.Strings.defaults.mediaPlayerAriaLabel()),this._mediaElement.setAttribute("webkit-playsinline",""),this._mediaElement.setAttribute("playsinline",""),this._mediaElement.setAttribute("crossorigin",""),this._mediaElement.autoplay=!0,this._mediaElement.controls=!0,p.isMobileOS()&&(this._mediaElement.muted=!0),this._mediaElement.preload="none",this._mediaElement.style.width="100%";for(var e=0,t=this.owner.sources;e=2&&(n._videoId=t[1]),n}return i(t,e),t.prototype.canPlay=function(){return void 0!==this._videoId},t.prototype.render=function(){var e=document.createElement("div");e.style.position="relative",e.style.width="100%",e.style.height="0",e.style.paddingBottom="56.25%";var t=document.createElement("iframe");return t.style.position="absolute",t.style.top="0",t.style.left="0",t.style.width="100%",t.style.height="100%",t.src=this.getEmbedVideoUrl(),t.frameBorder="0",this.iFrameTitle&&(t.title=this.iFrameTitle),t.allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",t.allowFullscreen=!0,e.appendChild(t),e},Object.defineProperty(t.prototype,"videoId",{get:function(){return this._videoId},enumerable:!1,configurable:!0}),t}(V);t.IFrameMediaMediaPlayer=U;var F=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return i(t,e),t.prototype.fetchVideoDetails=function(){return a(this,void 0,void 0,(function(){var e,t,r;return s(this,(function(n){switch(n.label){case 0:return e="https://vimeo.com/api/oembed.json?url=".concat(this.getEmbedVideoUrl()),[4,fetch(e)];case 1:return(t=n.sent()).ok?[4,t.json()]:[3,3];case 2:r=n.sent(),this.posterUrl=r.thumbnail_url,n.label=3;case 3:return[2]}}))}))},t.prototype.getEmbedVideoUrl=function(){return"https://player.vimeo.com/video/".concat(this.videoId,"?autoplay=1")},t}(U);t.VimeoPlayer=F;var z=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return i(t,e),t.prototype.fetchVideoDetails=function(){return a(this,void 0,void 0,(function(){var e,t,r;return s(this,(function(n){switch(n.label){case 0:return e="https://api.dailymotion.com/video/".concat(this.videoId,"?fields=thumbnail_720_url"),[4,fetch(e)];case 1:return(t=n.sent()).ok?[4,t.json()]:[3,3];case 2:r=n.sent(),this.posterUrl=r.thumbnail_720_url,n.label=3;case 3:return[2]}}))}))},t.prototype.getEmbedVideoUrl=function(){return"https://www.dailymotion.com/embed/video/".concat(this.videoId,"?autoplay=1")},t}(U);t.DailymotionPlayer=z;var Y=function(e){function t(t,r){var n=e.call(this,t,r)||this;return n.iFrameTitle=r,t.length>=3&&void 0!==t[2]&&(n._startTimeIndex=parseInt(t[2])),n}return i(t,e),t.prototype.fetchVideoDetails=function(){return a(this,void 0,void 0,(function(){return s(this,(function(e){return this.posterUrl=this.videoId?"https://img.youtube.com/vi/".concat(this.videoId,"/maxresdefault.jpg"):void 0,[2]}))}))},t.prototype.getEmbedVideoUrl=function(){var e="https://www.youtube.com/embed/".concat(this.videoId,"?autoplay=1");return void 0!==this._startTimeIndex&&(e+="&start=".concat(this._startTimeIndex)),e},t}(U);t.YouTubePlayer=Y;var G,W=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.sources=[],t.captionSources=[],t}return i(t,e),t.prototype.createMediaPlayer=function(){for(var e=0,r=t.customMediaPlayers;e0?this._renderedInputControlElement.setAttribute("aria-labelledby",e.join(" ")):this._renderedInputControlElement.removeAttribute("aria-labelledby")}},Object.defineProperty(t.prototype,"isNullable",{get:function(){return!0},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"renderedInputControlElement",{get:function(){return this._renderedInputControlElement},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"inputControlContainerElement",{get:function(){return this._inputControlContainerElement},enumerable:!1,configurable:!0}),t.prototype.overrideInternalRender=function(){var e=this,t=this.hostConfig;this._outerContainerElement=document.createElement("div"),this._outerContainerElement.style.display="flex",this.labelPosition===u.InputLabelPosition.Inline?this._outerContainerElement.style.flexDirection="row":this._outerContainerElement.style.flexDirection="column";var r=p.generateUniqueId();if(this.label){var n=new I;n.setParent(this),n.forElementId=r;var i=new C(this.label);if(n.addInline(i),this.isRequired){i.init(t.inputs.label.requiredInputs);var o=new C(t.inputs.label.requiredInputs.suffix);o.color=t.inputs.label.requiredInputs.suffixColor,o.ariaHidden=!0,n.addInline(o)}else i.init(t.inputs.label.optionalInputs);this._renderedLabelElement=n.render(),this._renderedLabelElement&&(this._renderedLabelElement.id=p.generateUniqueId(),this.labelPosition===u.InputLabelPosition.Inline?this._renderedLabelElement.style.alignSelf="center":this._renderedLabelElement.style.marginBottom=t.getEffectiveSpacing(t.inputs.label.inputSpacing)+"px",this._outerContainerElement.appendChild(this._renderedLabelElement))}if(this._inputControlContainerElement=document.createElement("div"),this._inputControlContainerElement.className=t.makeCssClassName("ac-input-container"),this._inputControlContainerElement.style.display="flex","stretch"===this.height&&(this._inputControlContainerElement.style.alignItems="stretch",this._inputControlContainerElement.style.flex="1 1 auto"),this._renderedInputControlElement=this.internalRender(),this._renderedInputControlElement){if(this._renderedInputControlElement.id=r,this._renderedInputControlElement.style.minWidth="0px",this.isNullable&&this.isRequired&&(this._renderedInputControlElement.setAttribute("aria-required","true"),this._renderedInputControlElement.classList.add(t.makeCssClassName("ac-input-required"))),this._inputControlContainerElement.appendChild(this._renderedInputControlElement),this._outerContainerElement.appendChild(this._inputControlContainerElement),this._renderedLabelElement&&this.labelPosition===u.InputLabelPosition.Inline)if(this.labelWidth){if(this.labelWidth.unit==u.SizeUnit.Weight){var a=this.labelWidth.physicalSize;this._renderedLabelElement.style.width=a.toString()+"%",this._inputControlContainerElement.style.width=(100-a).toString()+"%"}else if(this.labelWidth.unit==u.SizeUnit.Pixel){var s=this.labelWidth.physicalSize;this._renderedLabelElement.style.width=s.toString()+"px"}}else{var c=t.inputs.label.width;this._renderedLabelElement.style.width=c.toString()+"%",this._inputControlContainerElement.style.width=100-c+"%"}return this.updateVisualState(G.InitialRender),this._renderedInputControlElement&&(this._renderedInputControlElement.onblur=function(t){e.updateVisualState(G.FocusLeave)}),this.updateInputControlAriaLabelledBy(),this._outerContainerElement}this.resetDirtyState()},t.prototype.valueChanged=function(){var e,t,r;this.getRootElement().updateActionsEnabledState(),this.isValid()&&this.resetValidationFailureCue(),this.onValueChanged&&this.onValueChanged(this),t=(e=this).getRootElement(),(r=t&&t.onInputValueChanged?t.onInputValueChanged:Be.onInputValueChanged)&&r(e)},t.prototype.resetValidationFailureCue=function(){this.renderedInputControlElement&&(this instanceof Z&&this.isDynamicTypeahead()?this.removeValidationFailureCue():this.renderedInputControlElement.classList.remove(this.hostConfig.makeCssClassName("ac-input-validation-failed")),this.updateInputControlAriaLabelledBy(),this._renderedErrorMessageElement&&(this._outerContainerElement.removeChild(this._renderedErrorMessageElement),this._renderedErrorMessageElement=void 0))},t.prototype.showValidationErrorMessage=function(){if(this.renderedElement&&this.errorMessage&&l.GlobalSettings.displayInputValidationErrors){var e=new S;e.setParent(this),e.text=this.errorMessage,e.wrap=!0,e.init(this.hostConfig.inputs.errorMessage),this._renderedErrorMessageElement=e.render(),this._renderedErrorMessageElement&&(this._renderedErrorMessageElement.id=p.generateUniqueId(),this._outerContainerElement.appendChild(this._renderedErrorMessageElement),this.updateInputControlAriaLabelledBy())}},Object.defineProperty(t.prototype,"allowRevealOnHoverStyle",{get:function(){return this.hostConfig.inputs&&this.hostConfig.inputs.allowRevealOnHoverStyle},enumerable:!1,configurable:!0}),t.prototype.shouldHideInputAdornersForRevealOnHover=function(e,t){var r=e===document.activeElement,n=this.hostConfig.makeCssClassName("ac-inputStyle-revealOnHover-onhover"),i=e.classList.contains(n);return t===G.InitialRender||t===G.FocusLeave&&!i||t===G.MouseLeaveOnCard&&!r},t.prototype.updateVisualState=function(e){this.allowRevealOnHoverStyle&&this._renderedInputControlElement&&this.inputStyle===u.InputStyle.RevealOnHover&&(e===G.InitialRender?this._renderedInputControlElement.classList.add(this.hostConfig.makeCssClassName("ac-inputStyle-revealOnHover-onrender")):e===G.MouseEnterOnCard?this._renderedInputControlElement.classList.add(this.hostConfig.makeCssClassName("ac-inputStyle-revealOnHover-onhover")):e===G.MouseLeaveOnCard&&this._renderedInputControlElement.classList.remove(this.hostConfig.makeCssClassName("ac-inputStyle-revealOnHover-onhover")))},t.prototype.focus=function(){this._renderedInputControlElement&&this._renderedInputControlElement.focus()},t.prototype.isValid=function(){return!0},t.prototype.isDirty=function(){return this.value!==this._oldValue},t.prototype.resetDirtyState=function(){this._oldValue=this.value},t.prototype.internalValidateProperties=function(t){e.prototype.internalValidateProperties.call(this,t),this.id||t.addFailure(this,u.ValidationEvent.PropertyCantBeNull,_.Strings.errors.inputsMustHaveUniqueId()),this.isRequired&&(this.label||t.addFailure(this,u.ValidationEvent.RequiredInputsShouldHaveLabel,"Required inputs should have a label"),this.errorMessage||t.addFailure(this,u.ValidationEvent.RequiredInputsShouldHaveErrorMessage,"Required inputs should have an error message"))},t.prototype.validateValue=function(){this.resetValidationFailureCue();var e=this.isRequired?this.isSet()&&this.isValid():this.isValid();return!e&&this.renderedInputControlElement&&(this instanceof Z&&this.isDynamicTypeahead()?this.showValidationFailureCue():this.renderedInputControlElement.classList.add(this.hostConfig.makeCssClassName("ac-input-validation-failed")),this.showValidationErrorMessage()),e},t.prototype.getAllInputs=function(e){return void 0===e&&(e=!0),[this]},t.prototype.render=function(){var t=e.prototype.render.call(this);return this.resetDirtyState(),t},Object.defineProperty(t.prototype,"isInteractive",{get:function(){return!0},enumerable:!1,configurable:!0}),t.labelProperty=new v.StringProperty(v.Versions.v1_3,"label",!0),t.isRequiredProperty=new v.BoolProperty(v.Versions.v1_3,"isRequired",!1),t.errorMessageProperty=new v.StringProperty(v.Versions.v1_3,"errorMessage",!0),t.inputStyleProperty=new v.EnumProperty(v.Versions.v1_6,"inputStyle",u.InputStyle,u.InputStyle.Default,[{value:u.InputStyle.RevealOnHover},{value:u.InputStyle.Default}]),t.labelWidthProperty=new v.CustomProperty(v.Versions.v1_6,"labelWidth",(function(e,t,r,n){var i=t.defaultValue,o=r[t.name],a=!1;if("number"!=typeof o||isNaN(o))if("string"==typeof o)try{i=l.SizeAndUnit.parse(o)}catch(e){a=!0}else a=!0;else((i=new l.SizeAndUnit(o,u.SizeUnit.Weight)).physicalSize<0||i.physicalSize>100)&&(a=!0);return a&&(n.logParseEvent(e,u.ValidationEvent.InvalidPropertyValue,_.Strings.errors.invalidInputLabelWidth()),i=void 0),i}),(function(e,t,r,n,i){n instanceof l.SizeAndUnit&&(n.unit===u.SizeUnit.Pixel?i.serializeValue(r,"labelWidth",n.physicalSize+"px"):i.serializeNumber(r,"labelWidth",n.physicalSize))}),void 0),t.labelPositionProperty=new v.EnumProperty(v.Versions.v1_6,"labelPosition",u.InputLabelPosition,u.InputLabelPosition.Above,[{value:u.InputLabelPosition.Inline},{value:u.InputLabelPosition.Above}]),o([(0,v.property)(t.labelProperty)],t.prototype,"label",void 0),o([(0,v.property)(t.isRequiredProperty)],t.prototype,"isRequired",void 0),o([(0,v.property)(t.errorMessageProperty)],t.prototype,"errorMessage",void 0),o([(0,v.property)(t.inputStyleProperty)],t.prototype,"inputStyle",void 0),o([(0,v.property)(t.labelWidthProperty)],t.prototype,"labelWidth",void 0),o([(0,v.property)(t.labelPositionProperty)],t.prototype,"labelPosition",void 0),t}(E);t.Input=q;var K=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.isMultiline=!1,t.style=u.InputTextStyle.Text,t}return i(t,e),t.prototype.setupInput=function(e){var t=this;e.style.flex="1 1 auto",e.tabIndex=this.isDesignMode()?-1:0,this.placeholder&&(e.placeholder=this.placeholder,e.setAttribute("aria-label",this.placeholder)),this.defaultValue&&(e.value=this.defaultValue),this.maxLength&&this.maxLength>0&&(e.maxLength=this.maxLength),e.oninput=function(){t.valueChanged()},e.onkeypress=function(e){e.ctrlKey&&"Enter"===e.code&&t.inlineAction&&t.inlineAction.isEffectivelyEnabled()&&t.inlineAction.execute()}},t.prototype.internalRender=function(){var e;return this.isMultiline&&this.style!==u.InputTextStyle.Password?((e=document.createElement("textarea")).className=this.hostConfig.makeCssClassName("ac-input","ac-textInput","ac-multiline"),"stretch"===this.height&&(e.style.height="initial")):((e=document.createElement("input")).className=this.hostConfig.makeCssClassName("ac-input","ac-textInput"),e.type=u.InputTextStyle[this.style].toLowerCase()),this.setupInput(e),e},t.prototype.overrideInternalRender=function(){var t=this,r=e.prototype.overrideInternalRender.call(this);if(this.inlineAction){var n=document.createElement("button");if(n.className=this.hostConfig.makeCssClassName(this.inlineAction.isEffectivelyEnabled()?"ac-inlineActionButton":"ac-inlineActionButton-disabled"),n.onclick=function(e){t.inlineAction&&t.inlineAction.isEffectivelyEnabled()&&(e.preventDefault(),e.cancelBubble=!0,t.inlineAction.execute())},this.inlineAction.iconUrl){n.classList.add("iconOnly");var i=document.createElement("img");i.style.height="100%",i.setAttribute("role","presentation"),i.style.display="none",i.onload=function(){i.style.removeProperty("display")},i.onerror=function(){n.removeChild(i),n.classList.remove("iconOnly"),n.classList.add("textOnly"),n.textContent=t.inlineAction&&t.inlineAction.title?t.inlineAction.title:_.Strings.defaults.inlineActionTitle()},i.src=this.inlineAction.iconUrl,n.appendChild(i),n.title=this.inlineAction.title?this.inlineAction.title:_.Strings.defaults.inlineActionTitle()}else n.classList.add("textOnly"),n.textContent=this.inlineAction.title?this.inlineAction.title:_.Strings.defaults.inlineActionTitle();this.inlineAction.setupElementForAccessibility(n,!0),n.style.marginLeft="8px",this.inputControlContainerElement.appendChild(n)}return r},t.prototype.updateVisualState=function(t){this.allowRevealOnHoverStyle&&(this.inlineAction||this.isMultiline||e.prototype.updateVisualState.call(this,t))},t.prototype.getJsonTypeName=function(){return"Input.Text"},t.prototype.getAllActions=function(){var t=e.prototype.getAllActions.call(this);return this.inlineAction&&t.push(this.inlineAction),t},t.prototype.getActionById=function(t){var r=e.prototype.getActionById.call(this,t);return!r&&this.inlineAction&&(r=this.inlineAction.getActionById(t)),r},t.prototype.isSet=function(){return!!this.value},t.prototype.isValid=function(){return!this.value||(!this.regex||new RegExp(this.regex,"g").test(this.value))},Object.defineProperty(t.prototype,"value",{get:function(){return this.renderedInputControlElement?(this.isMultiline,this.renderedInputControlElement.value):void 0},enumerable:!1,configurable:!0}),t.valueProperty=new v.StringProperty(v.Versions.v1_0,"value"),t.maxLengthProperty=new v.NumProperty(v.Versions.v1_0,"maxLength"),t.isMultilineProperty=new v.BoolProperty(v.Versions.v1_0,"isMultiline",!1),t.placeholderProperty=new v.StringProperty(v.Versions.v1_0,"placeholder"),t.styleProperty=new v.EnumProperty(v.Versions.v1_0,"style",u.InputTextStyle,u.InputTextStyle.Text,[{value:u.InputTextStyle.Text},{value:u.InputTextStyle.Tel},{value:u.InputTextStyle.Url},{value:u.InputTextStyle.Email},{value:u.InputTextStyle.Password,targetVersion:v.Versions.v1_5}]),t.inlineActionProperty=new b(v.Versions.v1_0,"inlineAction",["Action.ShowCard"]),t.regexProperty=new v.StringProperty(v.Versions.v1_3,"regex",!0),o([(0,v.property)(t.valueProperty)],t.prototype,"defaultValue",void 0),o([(0,v.property)(t.maxLengthProperty)],t.prototype,"maxLength",void 0),o([(0,v.property)(t.isMultilineProperty)],t.prototype,"isMultiline",void 0),o([(0,v.property)(t.placeholderProperty)],t.prototype,"placeholder",void 0),o([(0,v.property)(t.styleProperty)],t.prototype,"style",void 0),o([(0,v.property)(t.inlineActionProperty)],t.prototype,"inlineAction",void 0),o([(0,v.property)(t.regexProperty)],t.prototype,"regex",void 0),t}(q);t.TextInput=K;var $=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.valueOn="true",t.valueOff="false",t.wrap=!1,t}return i(t,e),t.prototype.updateInputControlAriaLabelledBy=function(){if(this._checkboxInputElement){var e=this.getAllLabelIds().join(" ");this._checkboxInputLabelElement&&this._checkboxInputLabelElement.id&&(e+=" "+this._checkboxInputLabelElement.id),e?this._checkboxInputElement.setAttribute("aria-labelledby",e):this._checkboxInputElement.removeAttribute("aria-labelledby")}},t.prototype.internalRender=function(){var e=this,t=document.createElement("div");if(t.className=this.hostConfig.makeCssClassName("ac-input","ac-toggleInput"),t.style.width="100%",t.style.display="flex",t.style.alignItems="center",this._checkboxInputElement=document.createElement("input"),this._checkboxInputElement.id=p.generateUniqueId(),this._checkboxInputElement.type="checkbox",this._checkboxInputElement.style.display="inline-block",this._checkboxInputElement.style.verticalAlign="middle",this._checkboxInputElement.style.margin="0",this._checkboxInputElement.style.flex="0 0 auto",this.title&&this._checkboxInputElement.setAttribute("aria-label",this.title),this.isRequired&&this._checkboxInputElement.setAttribute("aria-required","true"),this._checkboxInputElement.tabIndex=this.isDesignMode()?-1:0,this.defaultValue===this.valueOn&&(this._checkboxInputElement.checked=!0),this._oldCheckboxValue=this._checkboxInputElement.checked,this._checkboxInputElement.onchange=function(){e.valueChanged()},p.appendChild(t,this._checkboxInputElement),this.title||this.isDesignMode()){var r=new S;if(r.setParent(this),r.forElementId=this._checkboxInputElement.id,r.hostConfig=this.hostConfig,r.text=this.title?this.title:this.getJsonTypeName(),r.useMarkdown=l.GlobalSettings.useMarkdownInRadioButtonAndCheckbox,r.wrap=this.wrap,this._checkboxInputLabelElement=r.render(),this._checkboxInputLabelElement){this._checkboxInputLabelElement.id=p.generateUniqueId(),this._checkboxInputLabelElement.style.display="inline-block",this._checkboxInputLabelElement.style.flex="1 1 auto",this._checkboxInputLabelElement.style.marginLeft="6px",this._checkboxInputLabelElement.style.verticalAlign="middle";var n=document.createElement("div");n.style.width="6px",p.appendChild(t,n),p.appendChild(t,this._checkboxInputLabelElement)}}return t},Object.defineProperty(t.prototype,"isNullable",{get:function(){return!1},enumerable:!1,configurable:!0}),t.prototype.updateVisualState=function(e){},t.prototype.getJsonTypeName=function(){return"Input.Toggle"},t.prototype.focus=function(){this._checkboxInputElement&&this._checkboxInputElement.focus()},t.prototype.isSet=function(){return this.isRequired?this.value===this.valueOn:!!this.value},t.prototype.isDirty=function(){return!!this._checkboxInputElement&&this._checkboxInputElement.checked!==this._oldCheckboxValue},Object.defineProperty(t.prototype,"value",{get:function(){return this._checkboxInputElement?this._checkboxInputElement.checked?this.valueOn:this.valueOff:void 0},enumerable:!1,configurable:!0}),t.valueProperty=new v.StringProperty(v.Versions.v1_0,"value"),t.titleProperty=new v.StringProperty(v.Versions.v1_0,"title"),t.valueOnProperty=new v.StringProperty(v.Versions.v1_0,"valueOn",!0,void 0,"true",(function(e){return"true"})),t.valueOffProperty=new v.StringProperty(v.Versions.v1_0,"valueOff",!0,void 0,"false",(function(e){return"false"})),t.wrapProperty=new v.BoolProperty(v.Versions.v1_2,"wrap",!1),o([(0,v.property)(t.valueProperty)],t.prototype,"defaultValue",void 0),o([(0,v.property)(t.titleProperty)],t.prototype,"title",void 0),o([(0,v.property)(t.valueOnProperty)],t.prototype,"valueOn",void 0),o([(0,v.property)(t.valueOffProperty)],t.prototype,"valueOff",void 0),o([(0,v.property)(t.wrapProperty)],t.prototype,"wrap",void 0),t}(q);t.ToggleInput=$;var X=function(e){function t(t,r){var n=e.call(this)||this;return n.title=t,n.value=r,n}return i(t,e),t.prototype.getSchemaKey=function(){return"Choice"},t.titleProperty=new v.StringProperty(v.Versions.v1_0,"title"),t.valueProperty=new v.StringProperty(v.Versions.v1_0,"value"),o([(0,v.property)(t.titleProperty)],t.prototype,"title",void 0),o([(0,v.property)(t.valueProperty)],t.prototype,"value",void 0),t}(v.SerializableObject);t.Choice=X;var J=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return i(t,e),t.prototype.getSchemaKey=function(){return"choices.data"},t.typeProperty=new v.StringProperty(v.Versions.v1_6,"type",!0,new RegExp("^Data.Query$")),t.datasetProperty=new v.StringProperty(v.Versions.v1_6,"dataset"),t.countProperty=new v.NumProperty(v.Versions.v1_6,"count"),t.skipProperty=new v.NumProperty(v.Versions.v1_6,"skip"),o([(0,v.property)(t.typeProperty)],t.prototype,"type",void 0),o([(0,v.property)(t.datasetProperty)],t.prototype,"dataset",void 0),o([(0,v.property)(t.countProperty)],t.prototype,"count",void 0),o([(0,v.property)(t.skipProperty)],t.prototype,"skip",void 0),t}(v.SerializableObject);t.ChoiceSetInputDataQuery=J;var Z=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.isMultiSelect=!1,t.wrap=!1,t.choices=[],t}return i(t,e),Object.defineProperty(t.prototype,"isCompact",{get:function(){return!this.style||"compact"===this.style},set:function(e){this.style=e?void 0:"expanded"},enumerable:!1,configurable:!0}),t.getUniqueCategoryName=function(){var e="__ac-category"+t._uniqueCategoryCounter;return t._uniqueCategoryCounter++,e},t.prototype.isDynamicTypeahead=function(){return this.hostConfig.inputs.allowDynamicallyFilteredChoiceSet&&!!this.choicesData&&!!this.choicesData.dataset&&"Data.Query"===this.choicesData.type},t.prototype.getFilterForDynamicSearch=function(){var e;return null===(e=this._textInput)||void 0===e?void 0:e.value},t.prototype.getDropdownElement=function(){var e;return null===(e=this._filteredChoiceSet)||void 0===e?void 0:e.dropdown},t.prototype.renderChoices=function(e,t){var r;null===(r=this._filteredChoiceSet)||void 0===r||r.processResponse(e,t)},t.prototype.showLoadingIndicator=function(){var e;null===(e=this._filteredChoiceSet)||void 0===e||e.showLoadingIndicator()},t.prototype.removeLoadingIndicator=function(){var e;null===(e=this._filteredChoiceSet)||void 0===e||e.removeLoadingIndicator()},t.prototype.showErrorIndicator=function(e,t){var r;null===(r=this._filteredChoiceSet)||void 0===r||r.showErrorIndicator(e,t)},t.prototype.showValidationFailureCue=function(){var e;null===(e=this._textInput)||void 0===e||e.classList.add(this.hostConfig.makeCssClassName("ac-input-validation-failed"))},t.prototype.removeValidationFailureCue=function(){var e;null===(e=this._textInput)||void 0===e||e.classList.remove(this.hostConfig.makeCssClassName("ac-input-validation-failed"))},t.prototype.createPlaceholderOptionWhenValueDoesNotExist=function(){if(!this.value){var e=document.createElement("option");return e.selected=!0,e.disabled=!0,e.hidden=!0,e.value="",this.placeholder&&(e.text=this.placeholder),e}},t.prototype.internalApplyAriaCurrent=function(){if(this._selectElement){var e=this._selectElement.options;if(e)for(var t=0,r=Array.from(e);t=0&&(c.checked=!0),c.onchange=function(){n.valueChanged()},this._toggleInputs.push(c);var u=document.createElement("div");u.style.display="flex",u.style.alignItems="center",p.appendChild(u,c);var d=new S;d.setParent(this),d.forElementId=c.id,d.hostConfig=this.hostConfig,d.text=s.title?s.title:"Choice "+this._toggleInputs.length,d.useMarkdown=l.GlobalSettings.useMarkdownInRadioButtonAndCheckbox,d.wrap=this.wrap;var f=d.render();if(this._labels.push(f),f){f.id=p.generateUniqueId(),f.style.display="inline-block",f.style.flex="1 1 auto",f.style.marginLeft="6px",f.style.verticalAlign="middle";var h=document.createElement("div");h.style.width="6px",p.appendChild(u,h),p.appendChild(u,f)}p.appendChild(i,u)}return i},t.prototype.updateInputControlAriaLabelledBy=function(){if((this.isMultiSelect||"expanded"===this.style)&&this._toggleInputs&&this._labels)for(var t=this.getAllLabelIds(),r=0;r0&&this._toggleInputs[0].focus():this._textInput?this._textInput.focus():e.prototype.focus.call(this)},t.prototype.internalValidateProperties=function(t){e.prototype.internalValidateProperties.call(this,t),0===this.choices.length&&t.addFailure(this,u.ValidationEvent.CollectionCantBeEmpty,_.Strings.errors.choiceSetMustHaveAtLeastOneChoice());for(var r=0,n=this.choices;r0?this._selectElement.value:void 0;if(this._textInput){for(var n=0,i=this.choices;n0)for(var a=0,s=this._toggleInputs;a".concat(t,"")),i.tabIndex=-1,i.onclick=function(){i.classList.remove(n.hostConfig.makeCssClassName("ac-choiceSetInput-choice-highlighted")),n._highlightedChoiceId=-1,n._textInput&&(n._textInput.value=i.innerText,n._textInput.focus()),n._dropdown&&n._dropdown.classList.remove(n.hostConfig.makeCssClassName("ac-choiceSetInput-filtered-dropdown-open"))},i.onmousemove=function(){n._highlightedChoiceId!==r&&n.highlightChoice(r,!1)},i},e.prototype.highlightChoice=function(e,t){if(void 0===t&&(t=!0),this._visibleChoiceCount>0){var r=document.getElementById("ac-choiceSetInput-".concat(this._choiceSetId,"-choice-").concat(this._highlightedChoiceId)),n=document.getElementById("ac-choiceSetInput-".concat(this._choiceSetId,"-choice-").concat(e));n?(null==r||r.classList.remove(this.hostConfig.makeCssClassName("ac-choiceSetInput-choice-highlighted")),n.classList.add(this.hostConfig.makeCssClassName("ac-choiceSetInput-choice-highlighted")),t&&n.scrollIntoView(),this._highlightedChoiceId=e):r&&0!==this._highlightedChoiceId?this.highlightChoice(0):this.highlightChoice(this._visibleChoiceCount-1)}},e.prototype.filterChoices=function(){for(var e,t,r=(null===(e=this._textInput)||void 0===e?void 0:e.value.toLowerCase().trim())||"",n=0,i=c(c([],this._choices,!0),this._dynamicChoices,!0);n=this.min),void 0!==this.max&&(e=e&&this.value<=this.max),e},Object.defineProperty(t.prototype,"value",{get:function(){return this._numberInputElement?this._numberInputElement.valueAsNumber:void 0},set:function(e){e&&this._numberInputElement&&(this._numberInputElement.value=e.toString())},enumerable:!1,configurable:!0}),t.valueProperty=new v.NumProperty(v.Versions.v1_0,"value"),t.placeholderProperty=new v.StringProperty(v.Versions.v1_0,"placeholder"),t.minProperty=new v.NumProperty(v.Versions.v1_0,"min"),t.maxProperty=new v.NumProperty(v.Versions.v1_0,"max"),o([(0,v.property)(t.valueProperty)],t.prototype,"defaultValue",void 0),o([(0,v.property)(t.minProperty)],t.prototype,"min",void 0),o([(0,v.property)(t.maxProperty)],t.prototype,"max",void 0),o([(0,v.property)(t.placeholderProperty)],t.prototype,"placeholder",void 0),t}(q);t.NumberInput=ee;var te=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return i(t,e),t.prototype.internalRender=function(){var e=this;return this._dateInputElement=document.createElement("input"),this._dateInputElement.setAttribute("type","date"),this.min&&this._dateInputElement.setAttribute("min",this.min),this.max&&this._dateInputElement.setAttribute("max",this.max),this.placeholder&&(this._dateInputElement.placeholder=this.placeholder,this._dateInputElement.setAttribute("aria-label",this.placeholder)),this._dateInputElement.tabIndex=this.isDesignMode()?-1:0,this._dateInputElement.className=this.hostConfig.makeCssClassName("ac-input","ac-dateInput"),this._dateInputElement.style.width="100%",this._dateInputElement.oninput=function(){e.valueChanged()},this.defaultValue&&(this._dateInputElement.value=this.defaultValue),this._dateInputElement},t.prototype.updateVisualState=function(t){if(this.allowRevealOnHoverStyle&&(e.prototype.updateVisualState.call(this,t),this._dateInputElement&&this.inputStyle===u.InputStyle.RevealOnHover)){var r=this.shouldHideInputAdornersForRevealOnHover(this._dateInputElement,t);r?this._dateInputElement.classList.remove(this.hostConfig.makeCssClassName("ac-inputStyle-revealOnHover-onfocus")):this._dateInputElement.classList.add(this.hostConfig.makeCssClassName("ac-inputStyle-revealOnHover-onfocus")),Pe(this._dateInputElement,r)}},t.prototype.getJsonTypeName=function(){return"Input.Date"},t.prototype.isSet=function(){return!!this.value},t.prototype.isValid=function(){if(!this.value)return!this.isRequired;var e=new Date(this.value),t=!0;if(this.min){var r=new Date(this.min);t=t&&e>=r}if(this.max){var n=new Date(this.max);t=t&&e<=n}return t},Object.defineProperty(t.prototype,"value",{get:function(){return this._dateInputElement?this._dateInputElement.value:void 0},enumerable:!1,configurable:!0}),t.valueProperty=new v.StringProperty(v.Versions.v1_0,"value"),t.placeholderProperty=new v.StringProperty(v.Versions.v1_0,"placeholder"),t.minProperty=new v.StringProperty(v.Versions.v1_0,"min"),t.maxProperty=new v.StringProperty(v.Versions.v1_0,"max"),o([(0,v.property)(t.valueProperty)],t.prototype,"defaultValue",void 0),o([(0,v.property)(t.minProperty)],t.prototype,"min",void 0),o([(0,v.property)(t.maxProperty)],t.prototype,"max",void 0),o([(0,v.property)(t.placeholderProperty)],t.prototype,"placeholder",void 0),t}(q);t.DateInput=te;var re=function(e){function t(t,r){var n=e.call(this,t,r,(function(e,t,r,n){var i=r[t.name];if("string"==typeof i&&i&&/^[0-9]{2}:[0-9]{2}$/.test(i))return i}),(function(e,t,r,n,i){i.serializeValue(r,t.name,n)}))||this;return n.targetVersion=t,n.name=r,n}return i(t,e),t}(v.CustomProperty);t.TimeProperty=re;var ne=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return i(t,e),t.convertTimeStringToDate=function(e){return new Date("1973-09-04T"+e+":00Z")},t.prototype.internalRender=function(){var e=this;return this._timeInputElement=document.createElement("input"),this._timeInputElement.setAttribute("type","time"),this.min&&this._timeInputElement.setAttribute("min",this.min),this.max&&this._timeInputElement.setAttribute("max",this.max),this._timeInputElement.className=this.hostConfig.makeCssClassName("ac-input","ac-timeInput"),this._timeInputElement.style.width="100%",this._timeInputElement.oninput=function(){e.valueChanged()},this.placeholder&&(this._timeInputElement.placeholder=this.placeholder,this._timeInputElement.setAttribute("aria-label",this.placeholder)),this._timeInputElement.tabIndex=this.isDesignMode()?-1:0,this.defaultValue&&(this._timeInputElement.value=this.defaultValue),this._timeInputElement},t.prototype.updateVisualState=function(t){if(this.allowRevealOnHoverStyle&&(e.prototype.updateVisualState.call(this,t),this._timeInputElement&&this.inputStyle===u.InputStyle.RevealOnHover)){var r=this.shouldHideInputAdornersForRevealOnHover(this._timeInputElement,t);r?this._timeInputElement.classList.remove(this.hostConfig.makeCssClassName("ac-inputStyle-revealOnHover-onfocus")):this._timeInputElement.classList.add(this.hostConfig.makeCssClassName("ac-inputStyle-revealOnHover-onfocus")),Pe(this._timeInputElement,r)}},t.prototype.getJsonTypeName=function(){return"Input.Time"},t.prototype.isSet=function(){return!!this.value},t.prototype.isValid=function(){if(!this.value)return!this.isRequired;var e=t.convertTimeStringToDate(this.value),r=!0;if(this.min){var n=t.convertTimeStringToDate(this.min);r=r&&e>=n}if(this.max){var i=t.convertTimeStringToDate(this.max);r=r&&e<=i}return r},Object.defineProperty(t.prototype,"value",{get:function(){return this._timeInputElement?this._timeInputElement.value:void 0},enumerable:!1,configurable:!0}),t.valueProperty=new re(v.Versions.v1_0,"value"),t.placeholderProperty=new v.StringProperty(v.Versions.v1_0,"placeholder"),t.minProperty=new re(v.Versions.v1_0,"min"),t.maxProperty=new re(v.Versions.v1_0,"max"),o([(0,v.property)(t.valueProperty)],t.prototype,"defaultValue",void 0),o([(0,v.property)(t.minProperty)],t.prototype,"min",void 0),o([(0,v.property)(t.maxProperty)],t.prototype,"max",void 0),o([(0,v.property)(t.placeholderProperty)],t.prototype,"placeholder",void 0),t}(q);t.TimeInput=ne;var ie=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.style=u.ActionStyle.Default,t.mode=u.ActionMode.Primary,t._state=0,t._isFocusable=!0,t}return i(t,e),t.prototype.renderButtonContent=function(){if(this.renderedElement){var e=this.hostConfig,t=document.createElement("div");if(t.style.overflow="hidden",t.style.textOverflow="ellipsis",e.actions.iconPlacement===u.ActionIconPlacement.AboveTitle||e.actions.allowTitleToWrap||(t.style.whiteSpace="nowrap"),this.title&&(t.innerText=this.title),this.iconUrl){var r=document.createElement("img");r.src=this.iconUrl,r.style.width=e.actions.iconSize+"px",r.style.height=e.actions.iconSize+"px",r.style.flex="0 0 auto",e.actions.iconPlacement===u.ActionIconPlacement.AboveTitle?(this.renderedElement.classList.add("iconAbove"),this.renderedElement.style.flexDirection="column",this.title&&(r.style.marginBottom="6px")):(this.renderedElement.classList.add("iconLeft"),r.style.maxHeight="100%",this.title&&(r.style.marginRight="6px")),this.renderedElement.appendChild(r),this.renderedElement.appendChild(t)}else this.renderedElement.classList.add("noIcon"),this.renderedElement.appendChild(t)}},t.prototype.getParentContainer=function(){return this.parent instanceof Ae?this.parent:this.parent?this.parent.getParentContainer():void 0},t.prototype.isDesignMode=function(){var e=this.getRootObject();return e instanceof E&&e.isDesignMode()},t.prototype.updateCssClasses=function(){var e,t;if(this.parent&&this.renderedElement){var r=this.parent.hostConfig;this.renderedElement.className=r.makeCssClassName(this.isEffectivelyEnabled()?"ac-pushButton":"ac-pushButton-disabled");var n=this.getParentContainer();if(n){var i=n.getEffectiveStyle();i&&this.renderedElement.classList.add("style-"+i)}switch(this.renderedElement.tabIndex=!this.isDesignMode()&&this.isFocusable?0:-1,this._state){case 0:break;case 1:this.renderedElement.classList.add(r.makeCssClassName("expanded"));break;case 2:this.renderedElement.classList.add(r.makeCssClassName("subdued"))}this.style&&this.isEffectivelyEnabled()&&(this.style===u.ActionStyle.Positive?(e=this.renderedElement.classList).add.apply(e,r.makeCssClassNames("primary","style-positive")):(t=this.renderedElement.classList).add.apply(t,r.makeCssClassNames("style-"+this.style.toLowerCase())))}},t.prototype.getDefaultSerializationContext=function(){return new je},t.prototype.internalGetReferencedInputs=function(){return{}},t.prototype.internalPrepareForExecution=function(e){},t.prototype.internalValidateInputs=function(e){var t=[];if(e)for(var r=0,n=Object.keys(e);r0?(t[0].focus(),!1):(this.internalPrepareForExecution(e),!0)},t.prototype.remove=function(){return!!this._actionCollection&&this._actionCollection.removeAction(this)},t.prototype.getAllInputs=function(e){return void 0===e&&(e=!0),[]},t.prototype.getAllActions=function(){return[this]},t.prototype.getResourceInformation=function(){return this.iconUrl?[{url:this.iconUrl,mimeType:"image"}]:[]},t.prototype.getActionById=function(e){return this.id===e?this:void 0},t.prototype.getReferencedInputs=function(){return this.internalGetReferencedInputs()},t.prototype.validateInputs=function(){return this.internalValidateInputs(this.getReferencedInputs())},t.prototype.updateEnabledState=function(){},t.prototype.isEffectivelyEnabled=function(){return this.isEnabled},Object.defineProperty(t.prototype,"isPrimary",{get:function(){return this.style===u.ActionStyle.Positive},set:function(e){e?this.style=u.ActionStyle.Positive:this.style===u.ActionStyle.Positive&&(this.style=u.ActionStyle.Default)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"hostConfig",{get:function(){return this.parent?this.parent.hostConfig:d.defaultHostConfig},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"parent",{get:function(){return this._parent},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"state",{get:function(){return this._state},set:function(e){this._state!==e&&(this._state=e,this.updateCssClasses())},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"isFocusable",{get:function(){return this._isFocusable},set:function(e){this._isFocusable!==e&&(this._isFocusable=e,this.updateCssClasses())},enumerable:!1,configurable:!0}),t.titleProperty=new v.StringProperty(v.Versions.v1_0,"title"),t.iconUrlProperty=new v.StringProperty(v.Versions.v1_1,"iconUrl"),t.styleProperty=new v.ValueSetProperty(v.Versions.v1_2,"style",[{value:u.ActionStyle.Default},{value:u.ActionStyle.Positive},{value:u.ActionStyle.Destructive}],u.ActionStyle.Default),t.modeProperty=new v.ValueSetProperty(v.Versions.v1_5,"mode",[{value:u.ActionMode.Primary},{value:u.ActionMode.Secondary}],u.ActionMode.Primary),t.tooltipProperty=new v.StringProperty(v.Versions.v1_5,"tooltip"),t.isEnabledProperty=new v.BoolProperty(v.Versions.v1_5,"isEnabled",!0),t.roleProperty=new v.EnumProperty(v.Versions.v1_6,"role",u.ActionRole),o([(0,v.property)(t.titleProperty)],t.prototype,"title",void 0),o([(0,v.property)(t.iconUrlProperty)],t.prototype,"iconUrl",void 0),o([(0,v.property)(t.styleProperty)],t.prototype,"style",void 0),o([(0,v.property)(t.modeProperty)],t.prototype,"mode",void 0),o([(0,v.property)(t.tooltipProperty)],t.prototype,"tooltip",void 0),o([(0,v.property)(t.isEnabledProperty)],t.prototype,"isEnabled",void 0),o([(0,v.property)(t.roleProperty)],t.prototype,"role",void 0),t}(h.CardObject);t.Action=ie;var oe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.disabledUnlessAssociatedInputsChange=!1,t._isPrepared=!1,t._areReferencedInputsDirty=!1,t}return i(t,e),t.prototype.internalGetReferencedInputs=function(){var e={};if("none"!==this.associatedInputs){for(var t=this.parent,r=[];t;)r.push.apply(r,t.getAllInputs(!1)),t=t.parent;for(var n=0,i=r;n0?this._renderedElement.setAttribute("aria-controls",e.join(" ")):this._renderedElement.removeAttribute("aria-controls"))}},t.prototype.internalValidateProperties=function(t){e.prototype.internalValidateProperties.call(this,t),this.targetElements||t.addFailure(this,u.ValidationEvent.PropertyCantBeNull,_.Strings.errors.propertyMustBeSet("targetElements"))},t.prototype.getJsonTypeName=function(){return t.JsonTypeName},t.prototype.render=function(){e.prototype.render.call(this),this.updateAriaControlsAttribute()},t.prototype.execute=function(){if(e.prototype.execute.call(this),this.parent)for(var t=0,r=Object.keys(this.targetElements);t0)for(var r=0,n=this.headers;r0?this._owner.hostConfig.actions.showCard.inlineTopMargin+"px":"0px";var e=this._owner.getEffectivePadding();this._owner.getImmediateSurroundingPadding(e);var t=this._owner.hostConfig.paddingDefinitionToSpacingDefinition(e);this._actionCard&&(this._actionCard.style.paddingLeft=t.left+"px",this._actionCard.style.paddingRight=t.right+"px",this._actionCard.style.marginLeft="-"+t.left+"px",this._actionCard.style.marginRight="-"+t.right+"px",0===t.bottom||this._owner.isDesignMode()||(this._actionCard.style.paddingBottom=t.bottom+"px",this._actionCard.style.marginBottom="-"+t.bottom+"px"),p.appendChild(this._actionCardContainer,this._actionCard))}else this._actionCardContainer.style.marginTop="0px"},e.prototype.layoutChanged=function(){this._owner.getRootElement().updateLayout()},e.prototype.showActionCard=function(e,t,r){void 0===t&&(t=!1),void 0===r&&(r=!0),e.card.suppressStyle=t;var n=e.card.renderedElement&&!this._owner.isDesignMode()?e.card.renderedElement:e.card.render();this._actionCard=n,this._expandedAction=e,this.refreshContainer(),r&&(this.layoutChanged(),we(e,!0))},e.prototype.collapseExpandedAction=function(){for(var e=0,t=this._renderedActions;ethis._owner.hostConfig.actions.maxActions&&e.addFailure(this._owner,u.ValidationEvent.TooManyActions,_.Strings.errors.tooManyActions(this._owner.hostConfig.actions.maxActions)),this._items.length>0&&!this._owner.hostConfig.supportsInteractivity&&e.addFailure(this._owner,u.ValidationEvent.InteractivityNotAllowed,_.Strings.errors.interactivityNotAllowed());for(var t=0,r=this._items;t0){this._overflowAction||(this._overflowAction=new me(s),this._overflowAction.setParent(this._owner),this._overflowAction._actionCollection=this);var f=this._owner instanceof Be&&!this._owner.parent;d=!function(e,t){var r=e.parent?e.parent.getRootElement():void 0,n=r&&r.onRenderOverflowActions?r.onRenderOverflowActions:Be.onRenderOverflowActions;return void 0!==n&&n(e.getActions(),t)}(this._overflowAction,f)}this._overflowAction&&d&&a.push(this._overflowAction)}for(var h=0;h0)){var m=document.createElement("div");e===u.Orientation.Horizontal?(m.style.flex="0 0 auto",m.style.width=t.actions.buttonSpacing+"px"):m.style.height=t.actions.buttonSpacing+"px",p.appendChild(i,m)}}var _=document.createElement("div");_.style.overflow="hidden",_.appendChild(i),p.appendChild(r,_)}p.appendChild(r,this._actionCardContainer);for(var T=0,g=this._renderedActions;T0?r:void 0}},e.prototype.addAction=function(e){if(!e)throw new Error("The action parameter cannot be null.");if(e.parent&&e.parent!==this._owner||!(this._items.indexOf(e)<0))throw new Error(_.Strings.errors.actionAlreadyParented());this._items.push(e),e.parent||e.setParent(this._owner),e._actionCollection=this},e.prototype.removeAction=function(e){this.expandedAction&&this._expandedAction===e&&this.collapseExpandedAction();var t=this._items.indexOf(e);if(t>=0){this._items.splice(t,1),e.setParent(void 0),e._actionCollection=void 0;for(var r=0;r=0&&t=this._items.length?this._items.push(e):this._items.splice(t,0,e),e.setParent(this)},t.prototype.getItemsCollectionPropertyName=function(){return"items"},t.prototype.applyBackground=function(){this.backgroundImage.isValid()&&this.renderedElement&&this.backgroundImage.apply(this),e.prototype.applyBackground.call(this)},t.prototype.applyRTL=function(e){void 0!==this.rtl&&(e.dir=this.rtl?"rtl":"ltr")},t.prototype.internalRender=function(){this._renderedItems=[];var e=this.hostConfig,t=document.createElement("div");switch(this.applyRTL(t),t.classList.add(e.makeCssClassName("ac-container")),t.style.display="flex",t.style.flexDirection="column",l.GlobalSettings.useAdvancedCardBottomTruncation&&(t.style.minHeight="-webkit-min-content"),this.getEffectiveVerticalContentAlignment()){case u.VerticalAlignment.Center:t.style.justifyContent="center";break;case u.VerticalAlignment.Bottom:t.style.justifyContent="flex-end";break;default:t.style.justifyContent="flex-start"}if(this._items.length>0)for(var r=0,n=this._items;r0&&i.separatorElement&&(i.separatorElement.style.flex="0 0 auto",p.appendChild(t,i.separatorElement)),p.appendChild(t,o),this._renderedItems.push(i))}else if(this.isDesignMode()){var a=this.createPlaceholderElement();a.style.width="100%",a.style.height="100%",t.appendChild(a)}return t},t.prototype.truncateOverflow=function(e){if(this.renderedElement){for(var t=this.renderedElement.offsetTop+e+1,r=function(e){var n=e.renderedElement;if(n)switch(p.getFitStatus(n,t)){case u.ContainerFitStatus.FullyInContainer:e.resetOverflow()&&r(e);break;case u.ContainerFitStatus.Overflowing:var i=t-n.offsetTop;e.handleOverflow(i);break;case u.ContainerFitStatus.FullyOutOfContainer:e.handleOverflow(0)}},n=0,i=this._items;n0)for(var e=0,t=this._renderedItems;e0)for(var e=this._renderedItems.length-1;e>=0;e--)if(this._renderedItems[e].isVisible)return this._renderedItems[e]},t.prototype.getJsonTypeName=function(){return"Container"},t.prototype.isFirstElement=function(e){for(var t=this.isDesignMode(),r=0,n=this._items;r=0;r--)if(this._items[r].isVisible||t)return this._items[r]===e;return!1},t.prototype.isRtl=function(){if(void 0!==this.rtl)return this.rtl;var e=this.getParentContainer();return!!e&&e.isRtl()},t.prototype.isBleedingAtTop=function(){var e=this.getFirstVisibleRenderedItem();return this.isBleeding()||!!e&&e.isBleedingAtTop()},t.prototype.isBleedingAtBottom=function(){var e=this.getLastVisibleRenderedItem();return this.isBleeding()||!!e&&(e.isBleedingAtBottom()&&e.getEffectiveStyle()===this.getEffectiveStyle())},t.prototype.indexOf=function(e){return this._items.indexOf(e)},t.prototype.addItem=function(e){this.insertItemAt(e,-1,!1)},t.prototype.insertItemBefore=function(e,t){this.insertItemAt(e,this._items.indexOf(t),!1)},t.prototype.insertItemAfter=function(e,t){this.insertItemAt(e,this._items.indexOf(t)+1,!1)},t.prototype.removeItem=function(e){var t=this._items.indexOf(e);return t>=0&&(this._items.splice(t,1),e.setParent(void 0),this.updateLayout(),!0)},t.prototype.clear=function(){this._items=[],this._renderedItems=[]},t.prototype.getResourceInformation=function(){var t=e.prototype.getResourceInformation.call(this);return this.backgroundImage.isValid()&&t.push({url:this.backgroundImage.url,mimeType:"image"}),t},t.prototype.getActionById=function(t){var r=e.prototype.getActionById.call(this,t);if(!r&&(this.selectAction&&(r=this.selectAction.getActionById(t)),!r))for(var n=0,i=this._items;n0?this._computedWeight:this.width.physicalSize)+"%")},t.prototype.shouldSerialize=function(e){return!0},Object.defineProperty(t.prototype,"separatorOrientation",{get:function(){return u.Orientation.Vertical},enumerable:!1,configurable:!0}),t.prototype.getJsonTypeName=function(){return"Column"},Object.defineProperty(t.prototype,"hasVisibleSeparator",{get:function(){return!!(this.parent&&this.parent instanceof Ce)&&(void 0!==this.separatorElement&&!this.parent.isLeftMostElement(this))},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"isStandalone",{get:function(){return!1},enumerable:!1,configurable:!0}),t.widthProperty=new v.CustomProperty(v.Versions.v1_0,"width",(function(e,t,r,n){var i=t.defaultValue,o=r[t.name],a=!1;if("number"!=typeof o||isNaN(o))if("auto"===o||"stretch"===o)i=o;else if("string"==typeof o)try{(i=l.SizeAndUnit.parse(o)).unit===u.SizeUnit.Pixel&&t.targetVersion.compareTo(n.targetVersion)>0&&(a=!0)}catch(e){a=!0}else a=!0;else i=new l.SizeAndUnit(o,u.SizeUnit.Weight);return a&&(n.logParseEvent(e,u.ValidationEvent.InvalidPropertyValue,_.Strings.errors.invalidColumnWidth(o)),i="auto"),i}),(function(e,t,r,n,i){n instanceof l.SizeAndUnit?n.unit===u.SizeUnit.Pixel?i.serializeValue(r,"width",n.physicalSize+"px"):i.serializeNumber(r,"width",n.physicalSize):i.serializeValue(r,"width",n)}),"stretch"),o([(0,v.property)(t.widthProperty)],t.prototype,"width",void 0),t}(Ae);t.Column=Se;var Ce=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t._columns=[],t}return i(t,e),t.prototype.createColumnInstance=function(e,t){return t.parseCardObject(this,e,[],!this.isDesignMode(),(function(e){return e&&"Column"!==e?void 0:new Se}),(function(e,r){t.logParseEvent(void 0,u.ValidationEvent.ElementTypeNotAllowed,_.Strings.errors.elementTypeNotAllowed(e))}))},t.prototype.internalRender=function(){if(this._renderedColumns=[],this._columns.length>0){var e=this.hostConfig,t=document.createElement("div");switch(t.className=e.makeCssClassName("ac-columnSet"),t.style.display="flex",l.GlobalSettings.useAdvancedCardBottomTruncation&&(t.style.minHeight="-webkit-min-content"),this.getEffectiveHorizontalAlignment()){case u.HorizontalAlignment.Center:t.style.justifyContent="center";break;case u.HorizontalAlignment.Right:t.style.justifyContent="flex-end";break;default:t.style.justifyContent="flex-start"}for(var r=0,n=0,i=this._columns;n0){var c=100/r*s.width.physicalSize;s._computedWeight=c}var d=s.render();d&&(this._renderedColumns.length>0&&s.separatorElement&&(s.separatorElement.style.flex="0 0 auto",p.appendChild(t,s.separatorElement)),p.appendChild(t,d),this._renderedColumns.push(s))}return this._renderedColumns.length>0?t:void 0}},t.prototype.truncateOverflow=function(e){for(var t=0,r=this._columns;t0)for(var e=0,t=this._columns;e0)for(var e=0,t=this._columns;e0?this._renderedColumns[0]:void 0},t.prototype.getLastVisibleRenderedItem=function(){return this.renderedElement&&this._renderedColumns&&this._renderedColumns.length>0?this._renderedColumns[this._renderedColumns.length-1]:void 0},t.prototype.getColumnAt=function(e){return this._columns[e]},t.prototype.getItemAt=function(e){return this.getColumnAt(e)},t.prototype.getJsonTypeName=function(){return"ColumnSet"},t.prototype.internalValidateProperties=function(t){e.prototype.internalValidateProperties.call(this,t);for(var r=0,n=0,i=0,o=this._columns;i0&&n>0&&t.addFailure(this,u.ValidationEvent.Hint,_.Strings.hints.dontUseWeightedAndStrecthedColumnsInSameSet())},t.prototype.addColumn=function(e){if(e.parent)throw new Error(_.Strings.errors.columnAlreadyBelongsToAnotherSet());this._columns.push(e),e.setParent(this)},t.prototype.removeItem=function(e){if(e instanceof Se){var t=this._columns.indexOf(e);if(t>=0)return this._columns.splice(t,1),e.setParent(void 0),this.updateLayout(),!0}return!1},t.prototype.indexOf=function(e){return e instanceof Se?this._columns.indexOf(e):-1},t.prototype.isLeftMostElement=function(e){return 0===this._columns.indexOf(e)},t.prototype.isRightMostElement=function(e){return this._columns.indexOf(e)===this._columns.length-1},t.prototype.isTopElement=function(e){return this._columns.indexOf(e)>=0},t.prototype.isBottomElement=function(e){return this._columns.indexOf(e)>=0},t.prototype.getActionById=function(e){for(var t=void 0,r=0,n=this._columns;r0?t:void 0}},t.prototype.getHasExpandedAction=function(){return 0!==this.renderedActionCount&&(1===this.renderedActionCount?void 0!==this._actionCollection.expandedAction&&!this.hostConfig.actions.preExpandSingleShowCardAction:void 0!==this._actionCollection.expandedAction)},Object.defineProperty(t.prototype,"renderedActionCount",{get:function(){return this._actionCollection.renderedActionCount},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"renderIfEmpty",{get:function(){return!1},enumerable:!1,configurable:!0}),t.prototype.releaseDOMResources=function(){e.prototype.releaseDOMResources.call(this),this._actionCollection.releaseDOMResources()},t.prototype.getActionCount=function(){return this._actionCollection.getActionCount()},t.prototype.getActionAt=function(t){return t>=0&&t=0;s--)(i=e[s])&&(a=(o<3?i(a):o>3?i(t,r,a):i(t,r))||a);return o>3&&a&&Object.defineProperty(t,r,a),a};Object.defineProperty(t,"__esModule",{value:!0}),t.CardObject=t.ValidationResults=void 0;var a=r(42408),s=r(93484),c=r(55389),u=r(23894),l=r(67406),p=function(){function e(){this.allIds={},this.validationEvents=[]}return e.prototype.addFailure=function(e,t,r){this.validationEvents.push({phase:a.ValidationPhase.Validation,source:e,event:t,message:r})},e}();t.ValidationResults=p;var d=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t._shouldFallback=!1,t}return i(t,e),t.prototype.getSchemaKey=function(){return this.getJsonTypeName()},Object.defineProperty(t.prototype,"requires",{get:function(){return this.getValue(t.requiresProperty)},enumerable:!1,configurable:!0}),t.prototype.contains=function(e){return!!this._renderedElement&&this._renderedElement.contains(e)},t.prototype.preProcessPropertyValue=function(e,t){var r=void 0===t?this.getValue(e):t;if(c.GlobalSettings.allowPreProcessingPropertyValues){for(var n=this;n&&!n.onPreProcessPropertyValue;)n=n.parent;if(n&&n.onPreProcessPropertyValue)return n.onPreProcessPropertyValue(this,e,r)}return r},t.prototype.setParent=function(e){this._parent=e},t.prototype.setShouldFallback=function(e){this._shouldFallback=e},t.prototype.shouldFallback=function(){return this._shouldFallback||!this.requires.areAllMet(this.hostConfig.hostCapabilities)},t.prototype.getRootObject=function(){for(var e=this;e.parent;)e=e.parent;return e},t.prototype.internalValidateProperties=function(e){this.id&&(e.allIds.hasOwnProperty(this.id)?(1===e.allIds[this.id]&&e.addFailure(this,a.ValidationEvent.DuplicateId,s.Strings.errors.duplicateId(this.id)),e.allIds[this.id]+=1):e.allIds[this.id]=1)},t.prototype.validateProperties=function(){var e=new p;return this.internalValidateProperties(e),e},t.prototype.findDOMNodeOwner=function(e){return this.contains(e)?this:void 0},t.prototype.releaseDOMResources=function(){},Object.defineProperty(t.prototype,"parent",{get:function(){return this._parent},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"renderedElement",{get:function(){return this._renderedElement},enumerable:!1,configurable:!0}),t.typeNameProperty=new l.StringProperty(l.Versions.v1_0,"type",void 0,void 0,void 0,(function(e){return e.getJsonTypeName()})),t.idProperty=new l.StringProperty(l.Versions.v1_0,"id"),t.requiresProperty=new l.SerializableObjectProperty(l.Versions.v1_2,"requires",u.HostCapabilities,!1,new u.HostCapabilities),o([(0,l.property)(t.idProperty)],t.prototype,"id",void 0),o([(0,l.property)(t.requiresProperty)],t.prototype,"requires",null),t}(l.SerializableObject);t.CardObject=d},83170:function(e,t,r){"use strict";var n,i=this&&this.__extends||(n=function(e,t){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])},n(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function r(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}),o=this&&this.__decorate||function(e,t,r,n){var i,o=arguments.length,a=o<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,r,n);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(a=(o<3?i(a):o>3?i(t,r,a):i(t,r))||a);return o>3&&a&&Object.defineProperty(t,r,a),a},a=this&&this.__spreadArray||function(e,t,r){if(r||2===arguments.length)for(var n,i=0,o=t.length;i0&&0<=e&&e=0)return this._pages.splice(t,1),e.setParent(void 0),this.updateLayout(),!0}return!1},t.prototype.getFirstVisibleRenderedItem=function(){var e;return this.renderedElement&&(null===(e=this._renderedPages)||void 0===e?void 0:e.length)>0?this._renderedPages[0]:void 0},t.prototype.getLastVisibleRenderedItem=function(){var e;return this.renderedElement&&(null===(e=this._renderedPages)||void 0===e?void 0:e.length)>0?this._renderedPages[this._renderedPages.length-1]:void 0},Object.defineProperty(t.prototype,"currentPageId",{get:function(){var e,t;if(null===(t=null===(e=this._carousel)||void 0===e?void 0:e.slides)||void 0===t?void 0:t.length)return this._carousel.slides[this._carousel.activeIndex].id},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"currentPageIndex",{get:function(){var e;return null===(e=this._carousel)||void 0===e?void 0:e.realIndex},enumerable:!1,configurable:!0}),t.prototype.internalParse=function(t,r){e.prototype.internalParse.call(this,t,r),this._pages=[];var n=t.pages;if(Array.isArray(n))for(var i=0,o=n;ithis.hostConfig.carousel.maxCarouselPages&&console.warn(d.Strings.errors.tooManyCarouselPages),this._pages.length>0)for(var p=0;p0?t:void 0}},t.prototype.applyRTL=function(t){e.prototype.applyRTL.call(this,this._carouselPageContainer),this.rtl&&t.classList.add(this.hostConfig.makeCssClassName("ac-carousel-pagination-rtl"))},t.prototype.validateOrientationProperties=function(){this.carouselHeight||(this.carouselOrientation=c.Orientation.Horizontal)},t.prototype.updateCssForHorizontalCarousel=function(e,t){e.classList.add(this.hostConfig.makeCssClassName("ac-carousel-left")),t.classList.add(this.hostConfig.makeCssClassName("ac-carousel-right"))},t.prototype.updateCssForVerticalCarousel=function(e,t,r){this._containerForAdorners.classList.add(this.hostConfig.makeCssClassName("ac-carousel-container-vertical")),e.classList.add(this.hostConfig.makeCssClassName("ac-carousel-navigation-vertical")),t.classList.add(this.hostConfig.makeCssClassName("ac-carousel-up")),r.classList.add(this.hostConfig.makeCssClassName("ac-carousel-down"))},t.prototype.initializeCarouselControl=function(e,t,r,n,i){var o,a,s,u=this,l=void 0!==i&&i?r:t,p=void 0!==i&&i?t:r,h=c.Orientation.Horizontal===this.carouselOrientation?p:r,v=c.Orientation.Horizontal===this.carouselOrientation?l:t,m={loop:!this.isDesignMode()&&this.carouselLoop,modules:[f.Navigation,f.Pagination,f.Scrollbar,f.A11y,f.History,f.Keyboard],pagination:{el:n,clickable:!0},navigation:{prevEl:h,nextEl:v},a11y:{enabled:!0},keyboard:{enabled:!1,onlyInViewport:!0},direction:this.carouselOrientation===c.Orientation.Horizontal?"horizontal":"vertical",resizeObserver:!1,initialSlide:this._currentIndex};this.timer&&!this.isDesignMode()&&(null===(o=m.modules)||void 0===o||o.push(f.Autoplay),m.autoplay={delay:this.timer,pauseOnMouseEnter:!0});var _=new f.Swiper(e,m);e.addEventListener("mouseenter",(function(e){var t;null===(t=_.autoplay)||void 0===t||t.stop()})),e.addEventListener("mouseleave",(function(e){var t;null===(t=_.autoplay)||void 0===t||t.start()})),_.on("navigationNext",(function(e){u.raiseCarouselEvent(c.CarouselInteractionEvent.NavigationNext)})),_.on("navigationPrev",(function(e){u.raiseCarouselEvent(c.CarouselInteractionEvent.NavigationPrevious)})),_.on("slideChangeTransitionEnd",(function(e){u.currentIndex=e.realIndex,u.raiseCarouselEvent(c.CarouselInteractionEvent.Pagination)})),_.on("autoplay",(function(){u.raiseCarouselEvent(c.CarouselInteractionEvent.Autoplay)})),_.on("paginationRender",(function(e,t){e.pagination.bullets.forEach((function(t,r){t.addEventListener("keypress",(function(t){"Enter"==t.key&&(t.preventDefault(),e.slideTo(r+1))}))}))})),_.on("destroy",(function(){u.destroyResizeObserver()})),r.title=null!==(a=r.ariaLabel)&&void 0!==a?a:d.Strings.defaults.carouselNavigationPreviousTooltip(),t.title=null!==(s=t.ariaLabel)&&void 0!==s?s:d.Strings.defaults.carouselNavigationNextTooltip(),this._carousel=_,this.createResizeObserver()},t.prototype.createCarouselPageInstance=function(e,t){return t.parseCardObject(this,e,this.forbiddenChildElements(),!this.isDesignMode(),(function(e){return e&&"CarouselPage"!==e?void 0:new m}),(function(e,r){t.logParseEvent(void 0,p.ValidationEvent.ElementTypeNotAllowed,d.Strings.errors.elementTypeNotAllowed(e))}))},t.prototype.slideTo=function(e){var t;null===(t=this._carousel)||void 0===t||t.slideTo(e)},Object.defineProperty(t.prototype,"carouselPageContainer",{get:function(){return this._carouselPageContainer},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"currentIndex",{get:function(){return this._currentIndex},set:function(e){this._currentIndex=e},enumerable:!1,configurable:!0}),t.prototype.createCarouselEvent=function(e){var t;return null!=this.currentPageIndex&&(t=this.getItemAt(this.currentPageIndex).id),new T(e,this.id,t,this.currentPageIndex)},t.prototype.raiseCarouselEvent=function(e){var t=this.parent?this.parent.getRootElement():void 0,r=t&&t.onCarouselEvent?t.onCarouselEvent:s.AdaptiveCard.onCarouselEvent;r&&e==c.CarouselInteractionEvent.Pagination&&r(this.createCarouselEvent(this.previousEventType)),this.previousEventType=e},t.prototype.createResizeObserver=function(){var e,t=this;this.checkIfCarouselInValidStateForResizeEvent()&&(this._observer=new ResizeObserver((function(e){var r,n,i,o,a=null===(r=t._carousel)||void 0===r?void 0:r.width,s=null===(n=t._carousel)||void 0===n?void 0:n.height,c=a,u=s;e.forEach((function(e){var r,n=e.contentBoxSize,i=e.contentRect,o=e.target;o&&o!==(null===(r=t._carousel)||void 0===r?void 0:r.el)||(c=i?i.width:(n[0]||n).inlineSize,u=i?i.height:(n[0]||n).blockSize)})),c===a&&u===s||t.checkIfCarouselInValidStateForResizeEvent()&&(null===(i=t._carousel)||void 0===i||i.emit("beforeResize"),null===(o=t._carousel)||void 0===o||o.emit("resize"))})),this._observer.observe(null===(e=this._carousel)||void 0===e?void 0:e.el))},t.prototype.destroyResizeObserver=function(){var e;this._observer&&this._observer.unobserve&&(null===(e=this._carousel)||void 0===e?void 0:e.el)&&(this._observer.unobserve(this._carousel.el),this._observer=null)},t.prototype.checkIfCarouselInValidStateForResizeEvent=function(){return this._carousel&&!this._carousel.destroyed},t.timerProperty=new u.NumProperty(u.Versions.v1_6,"timer",void 0),t.initialPageProperty=new u.NumProperty(u.Versions.v1_6,"initialPage",0),t.loopProperty=new u.BoolProperty(u.Versions.v1_6,"loop",!0),t.orientationProperty=new u.EnumProperty(u.Versions.v1_6,"orientation",c.Orientation,c.Orientation.Horizontal),t.carouselHeightProperty=new u.PixelSizeProperty(u.Versions.v1_6,"heightInPixels"),o([(0,u.property)(t.timerProperty)],t.prototype,"timer",null),o([(0,u.property)(t.initialPageProperty)],t.prototype,"initialPageIndex",null),o([(0,u.property)(t.loopProperty)],t.prototype,"carouselLoop",void 0),o([(0,u.property)(t.orientationProperty)],t.prototype,"carouselOrientation",void 0),o([(0,u.property)(t.carouselHeightProperty)],t.prototype,"carouselHeight",void 0),t}(s.Container);t.Carousel=_;var T=function(e,t,r,n){this.type=e,this.carouselId=t,this.activeCarouselPageId=r,this.activeCarouselPageIndex=n};t.CarouselEvent=T,l.GlobalRegistry.defaultElements.register("Carousel",_,u.Versions.v1_6)},2339:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ChannelAdapter=void 0;var r=function(){};t.ChannelAdapter=r},59409:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Collection=void 0;var r=function(){function e(){this._items=[]}return e.prototype.get=function(e){return this._items[e]},e.prototype.add=function(e){this._items.push(e),this.onItemAdded&&this.onItemAdded(e)},e.prototype.remove=function(e){var t=this._items.indexOf(e);t>=0&&(this._items=this._items.splice(t,1),this.onItemRemoved&&this.onItemRemoved(e))},e.prototype.indexOf=function(e){return this._items.indexOf(e)},Object.defineProperty(e.prototype,"length",{get:function(){return this._items.length},enumerable:!1,configurable:!0}),e}();t.Collection=r},76436:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Constants=void 0;var r=function(){function e(){}return e.keys={tab:"Tab",enter:"Enter",escape:"Escape",space:" ",up:"ArrowUp",down:"ArrowDown",delete:"Delete"},e}();t.Constants=r},32221:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(79712),t),i(r(1391),t)},79712:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.MenuItem=void 0;var n=r(20569),i=r(76436),o=function(){function e(e,t){this._isEnabled=!0,this.key=e,this._value=t}return e.prototype.click=function(){this.isEnabled&&this.onClick&&this.onClick(this)},e.prototype.updateCssClasses=function(){if(this._element){var e=this._hostConfig?this._hostConfig:n.defaultHostConfig;this._element.className=e.makeCssClassName("ac-ctrl"),this._element.classList.add(e.makeCssClassName(this.isEnabled?"ac-ctrl-dropdown-item":"ac-ctrl-dropdown-item-disabled")),this.isEnabled||this._element.classList.add(e.makeCssClassName("ac-disabled"))}},e.prototype.toString=function(){return this.value},e.prototype.render=function(e){var t=this;return this._hostConfig=e,this._element||(this._element=document.createElement("span"),this._element.innerText=this.value,this._element.setAttribute("role","menuitem"),this.isEnabled||this._element.setAttribute("aria-disabled","true"),this._element.setAttribute("aria-current","false"),this._element.onmouseup=function(e){t.click()},this._element.onkeydown=function(e){e.key===i.Constants.keys.enter&&(e.stopPropagation(),e.preventDefault(),t.click())},this.updateCssClasses()),this._element},Object.defineProperty(e.prototype,"value",{get:function(){return this._value},set:function(e){this._value=e,this._element&&(this._element.innerText=e)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"isEnabled",{get:function(){return this._isEnabled},set:function(e){this._isEnabled!==e&&(this._isEnabled=e,this.updateCssClasses())},enumerable:!1,configurable:!0}),e}();t.MenuItem=o},16943:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PopupControl=void 0;var n=r(76436),i=r(11363),o=r(20569),a=function(){function e(){this._isOpen=!1}return e.prototype.keyDown=function(e){if(e.key===n.Constants.keys.escape)this.closePopup(!0)},e.prototype.render=function(e){var t=this,r=document.createElement("div");return r.tabIndex=0,r.className=this.hostConfig.makeCssClassName("ac-ctrl","ac-ctrl-popup-container"),r.setAttribute("role","dialog"),r.setAttribute("aria-modal","true"),r.onkeydown=function(e){return t.keyDown(e),!e.cancelBubble},r.appendChild(this.renderContent()),r},e.prototype.focus=function(){this._popupElement&&this._popupElement.firstElementChild.focus()},e.prototype.popup=function(e){var t,r,n,o,a,s=this;if(!this._isOpen){this._overlayElement=document.createElement("div"),this._overlayElement.className=this.hostConfig.makeCssClassName("ac-ctrl-overlay"),this._overlayElement.tabIndex=0,this._overlayElement.style.width=document.documentElement.scrollWidth+"px",this._overlayElement.style.height=document.documentElement.scrollHeight+"px",this._overlayElement.onfocus=function(e){s.closePopup(!0)},document.body.appendChild(this._overlayElement);var c=e.getBoundingClientRect();this._popupElement=this.render(c),(t=this._popupElement.classList).remove.apply(t,this.hostConfig.makeCssClassNames("ac-ctrl-slide","ac-ctrl-slideLeftToRight","ac-ctrl-slideRightToLeft","ac-ctrl-slideTopToBottom","ac-ctrl-slideRightToLeft")),window.addEventListener("resize",(function(e){s.closePopup(!0)}));var u=e.getAttribute("aria-label");u&&this._popupElement.setAttribute("aria-label",u),this._overlayElement.appendChild(this._popupElement);var l,p=this._popupElement.getBoundingClientRect(),d=window.innerHeight-c.bottom,f=c.top,h=window.innerWidth-c.right,v=c.left,m=c.left+i.getScrollX();if(f=p.width?(m=i.getScrollX()+c.right,(r=this._popupElement.classList).add.apply(r,this.hostConfig.makeCssClassNames("ac-ctrl-slide","ac-ctrl-slideLeftToRight"))):(m=i.getScrollX()+c.left-p.width,(n=this._popupElement.classList).add.apply(n,this.hostConfig.makeCssClassNames("ac-ctrl-slide","ac-ctrl-slideRightToLeft")))}else d>=p.height?(l=i.getScrollY()+c.bottom,(o=this._popupElement.classList).add.apply(o,this.hostConfig.makeCssClassNames("ac-ctrl-slide","ac-ctrl-slideTopToBottom"))):(l=i.getScrollY()+c.top-p.height,(a=this._popupElement.classList).add.apply(a,this.hostConfig.makeCssClassNames("ac-ctrl-slide","ac-ctrl-slideBottomToTop"))),h=this._renderedItems.length&&(r=0),this.removeAriaExpanded(r)),this.selectedIndex=r,t.cancelBubble=!0}},Object.defineProperty(t.prototype,"items",{get:function(){return this._items},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"selectedIndex",{get:function(){return this._selectedIndex},set:function(e){e>=0&&e0&&(r.customStyles=t),r},e.prototype.getStyleByName=function(e,t){return e&&this._allStyles.hasOwnProperty(e)?this._allStyles[e]:t||this._allStyles[o.ContainerStyle.Default]},Object.defineProperty(e.prototype,"default",{get:function(){return this._allStyles[o.ContainerStyle.Default]},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"emphasis",{get:function(){return this._allStyles[o.ContainerStyle.Emphasis]},enumerable:!1,configurable:!0}),e}();t.ContainerStyleSet=N;var x=function(){function e(e){this.fontFamily="Segoe UI,Segoe,Segoe WP,Helvetica Neue,Helvetica,sans-serif",this.fontSizes={small:12,default:14,medium:17,large:21,extraLarge:26},this.fontWeights={lighter:200,default:400,bolder:600},e&&(this.fontFamily=e)}return e.prototype.parse=function(e){this.fontFamily=e.fontFamily||this.fontFamily,this.fontSizes={small:e.fontSizes&&e.fontSizes.small||this.fontSizes.small,default:e.fontSizes&&e.fontSizes.default||this.fontSizes.default,medium:e.fontSizes&&e.fontSizes.medium||this.fontSizes.medium,large:e.fontSizes&&e.fontSizes.large||this.fontSizes.large,extraLarge:e.fontSizes&&e.fontSizes.extraLarge||this.fontSizes.extraLarge},this.fontWeights={lighter:e.fontWeights&&e.fontWeights.lighter||this.fontWeights.lighter,default:e.fontWeights&&e.fontWeights.default||this.fontWeights.default,bolder:e.fontWeights&&e.fontWeights.bolder||this.fontWeights.bolder}},e.monospace=new e("'Courier New', Courier, monospace"),e}();t.FontTypeDefinition=x;var L=function(){function e(e){this.default=new x,this.monospace=new x("'Courier New', Courier, monospace"),e&&(this.default.parse(e.default),this.monospace.parse(e.monospace))}return e.prototype.getStyleDefinition=function(e){switch(e){case o.FontType.Monospace:return this.monospace;case o.FontType.Default:default:return this.default}},e}();t.FontTypeSet=L;var k=function(){function e(e){this.maxCarouselPages=10,this.minAutoplayDelay=5e3,e&&(this.maxCarouselPages=null!=e.maxCarouselPages?e.maxCarouselPages:this.maxCarouselPages,this.minAutoplayDelay=null!=e.minAutoplayDelay?e.minAutoplayDelay:this.minAutoplayDelay)}return e.prototype.toJSON=function(){return{maxCarouselPages:this.maxCarouselPages,minAutoplayDelay:this.minAutoplayDelay}},e}();t.CarouselConfig=k;var D=function(){function e(e){this.hostCapabilities=new c.HostCapabilities,this.choiceSetInputValueSeparator=",",this.supportsInteractivity=!0,this.spacing={small:3,default:8,medium:20,large:30,extraLarge:40,padding:15},this.separator={lineThickness:1,lineColor:"#EEEEEE"},this.imageSizes={small:40,medium:80,large:160},this.containerStyles=new N,this.inputs=new b,this.actions=new O,this.adaptiveCard=new d,this.imageSet=new f,this.media=new h,this.factSet=new C,this.table=new v,this.textStyles=new T,this.textBlock=new g,this.carousel=new k,this.alwaysAllowBleed=!1,e&&(("string"==typeof e||e instanceof String)&&(e=JSON.parse(e)),this.choiceSetInputValueSeparator=e&&"string"==typeof e.choiceSetInputValueSeparator?e.choiceSetInputValueSeparator:this.choiceSetInputValueSeparator,this.supportsInteractivity=e&&"boolean"==typeof e.supportsInteractivity?e.supportsInteractivity:this.supportsInteractivity,this._legacyFontType=new x,this._legacyFontType.parse(e),e.fontTypes&&(this.fontTypes=new L(e.fontTypes)),e.lineHeights&&(this.lineHeights={small:e.lineHeights.small,default:e.lineHeights.default,medium:e.lineHeights.medium,large:e.lineHeights.large,extraLarge:e.lineHeights.extraLarge}),this.imageSizes={small:e.imageSizes&&e.imageSizes.small||this.imageSizes.small,medium:e.imageSizes&&e.imageSizes.medium||this.imageSizes.medium,large:e.imageSizes&&e.imageSizes.large||this.imageSizes.large},this.containerStyles=new N(e.containerStyles),this.spacing={small:e.spacing&&e.spacing.small||this.spacing.small,default:e.spacing&&e.spacing.default||this.spacing.default,medium:e.spacing&&e.spacing.medium||this.spacing.medium,large:e.spacing&&e.spacing.large||this.spacing.large,extraLarge:e.spacing&&e.spacing.extraLarge||this.spacing.extraLarge,padding:e.spacing&&e.spacing.padding||this.spacing.padding},this.separator={lineThickness:e.separator&&e.separator.lineThickness||this.separator.lineThickness,lineColor:e.separator&&e.separator.lineColor||this.separator.lineColor},this.inputs=new b(e.inputs||this.inputs),this.actions=new O(e.actions||this.actions),this.adaptiveCard=new d(e.adaptiveCard||this.adaptiveCard),this.imageSet=new f(e.imageSet),this.factSet=new C(e.factSet),this.textStyles=new T(e.textStyles),this.textBlock=new g(e.textBlock),this.carousel=new k(e.carousel))}return e.prototype.getFontTypeDefinition=function(e){return this.fontTypes?this.fontTypes.getStyleDefinition(e):e===o.FontType.Monospace?x.monospace:this._legacyFontType},e.prototype.getEffectiveSpacing=function(e){switch(e){case o.Spacing.Small:return this.spacing.small;case o.Spacing.Default:return this.spacing.default;case o.Spacing.Medium:return this.spacing.medium;case o.Spacing.Large:return this.spacing.large;case o.Spacing.ExtraLarge:return this.spacing.extraLarge;case o.Spacing.Padding:return this.spacing.padding;default:return 0}},e.prototype.paddingDefinitionToSpacingDefinition=function(e){return new s.SpacingDefinition(this.getEffectiveSpacing(e.top),this.getEffectiveSpacing(e.right),this.getEffectiveSpacing(e.bottom),this.getEffectiveSpacing(e.left))},e.prototype.makeCssClassNames=function(){for(var e=[],t=0;te.major?1:this.majore.minor?1:this.minor=0)};var p=function(){function e(e){void 0===e&&(e=l.latest),this._validationEvents=[],this.targetVersion=e}return e.prototype.isTemplateString=function(e){return"string"==typeof e&&e.startsWith("${")},e.prototype.tryDeleteValue=function(e,t){o.GlobalSettings.enableFullJsonRoundTrip||delete e[t]},e.prototype.tryDeleteDefaultValue=function(e,t){o.GlobalSettings.enableFullJsonRoundTrip&&this.isTemplateString(e[t])||delete e[t]},e.prototype.serializeValue=function(e,t,r,n,i){void 0===n&&(n=void 0),void 0===i&&(i=!1),null==r?o.GlobalSettings.enableFullJsonRoundTrip&&!i||delete e[t]:r===n?o.GlobalSettings.enableFullJsonRoundTrip&&!i&&this.isTemplateString(e[t])||delete e[t]:e[t]=r},e.prototype.serializeString=function(e,t,r,n){null==r?this.tryDeleteValue(e,t):r===n?this.tryDeleteDefaultValue(e,t):e[t]=r},e.prototype.serializeBool=function(e,t,r,n){null==r?this.tryDeleteValue(e,t):r===n?this.tryDeleteDefaultValue(e,t):e[t]=r},e.prototype.serializeNumber=function(e,t,r,n){null==r||isNaN(r)?this.tryDeleteValue(e,t):r===n?this.tryDeleteDefaultValue(e,t):e[t]=r},e.prototype.serializeEnum=function(e,t,r,n,i){void 0===i&&(i=void 0),null==n?this.tryDeleteValue(t,r):n===i?this.tryDeleteDefaultValue(t,r):t[r]=e[n]},e.prototype.serializeArray=function(e,t,r){var n=[];if(r)for(var i=0,o=r;i=0&&s._values.push({value:u})}return s}return i(t,e),t.prototype.parse=function(e,t,r){var n=t[this.name];if("string"!=typeof n)return this.defaultValue;var i=a.getEnumValueByName(this.enumType,n);if(void 0!==i)for(var o=0,u=this.values;o0?n:this.onGetInitialValue?this.onGetInitialValue(e):void 0},t.prototype.toJSON=function(e,t,r,n){n.serializeArray(t,this.name,r)},t}(f);t.SerializableObjectCollectionProperty=b;var A=function(e){function t(t,r,n,i,o,a){var s=e.call(this,t,r,o,a)||this;if(s.targetVersion=t,s.name=r,s.onParse=n,s.onToJSON=i,s.defaultValue=o,s.onGetInitialValue=a,!s.onParse)throw new Error("CustomPropertyDefinition instances must have an onParse handler.");if(!s.onToJSON)throw new Error("CustomPropertyDefinition instances must have an onToJSON handler.");return s}return i(t,e),t.prototype.parse=function(e,t,r){return this.onParse(e,this,t,r)},t.prototype.toJSON=function(e,t,r,n){this.onToJSON(e,this,t,r,n)},t}(f);t.CustomProperty=A;var S=function(){function e(){this._properties=[]}return e.prototype.indexOf=function(e){for(var t=0;t=0))break;this._properties.splice(o,1)}},e.prototype.getItemAt=function(e){return this._properties[e]},e.prototype.getCount=function(){return this._properties.length},e}();t.SerializableObjectSchema=S,t.property=function(e){return function(t,r){var n=Object.getOwnPropertyDescriptor(t,r)||{};n.get||n.set||(n.get=function(){return this.getValue(e)},n.set=function(t){this.setValue(e,t)},Object.defineProperty(t,r,n))}};var C=function(){function e(){this._propertyBag={},this._rawProperties={},this.maxVersion=e.defaultMaxVersion;for(var t=this.getSchema(),r=0;r0){var a=n.sort((function(e,t){return e.sequentialNumber>t.sequentialNumber?1:e.sequentialNumber=a)return i.physicalSize=parseInt(o[1]),3===o.length&&"px"===o[2]&&(i.unit=n.SizeUnit.Pixel),i}throw new Error("Invalid size: "+t)},e}();t.SizeAndUnit=c;var u=function(){function e(){}return e.generate=function(){var t=4294967295*Math.random()|0,r=4294967295*Math.random()|0,n=4294967295*Math.random()|0,i=4294967295*Math.random()|0;return e.lut[255&t]+e.lut[t>>8&255]+e.lut[t>>16&255]+e.lut[t>>24&255]+"-"+e.lut[255&r]+e.lut[r>>8&255]+"-"+e.lut[r>>16&15|64]+e.lut[r>>24&255]+"-"+e.lut[63&n|128]+e.lut[n>>8&255]+"-"+e.lut[n>>16&255]+e.lut[n>>24&255]+e.lut[255&i]+e.lut[i>>8&255]+e.lut[i>>16&255]+e.lut[i>>24&255]},e.initialize=function(){for(var t=0;t<256;t++)e.lut[t]=(t<16?"0":"")+t.toString(16)},e.lut=[],e}();t.UUID=u,u.initialize()},93484:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Strings=void 0;var r=function(){function e(){}return e.errors={unknownElementType:function(e){return'Unknown element type "'.concat(e,'". Fallback will be used if present.')},unknownActionType:function(e){return'Unknown action type "'.concat(e,'". Fallback will be used if present.')},elementTypeNotAllowed:function(e){return'Element type "'.concat(e,'" is not allowed in this context.')},actionTypeNotAllowed:function(e){return'Action type "'.concat(e,'" is not allowed in this context.')},invalidPropertyValue:function(e,t){return'Invalid value "'.concat(e,'" for property "').concat(t,'".')},showCardMustHaveCard:function(){return'"An Action.ShowCard must have its "card" property set to a valid AdaptiveCard object.'},invalidColumnWidth:function(e){return'Invalid column width "'.concat(e,'" - defaulting to "auto".')},invalidCardVersion:function(e){return'Invalid card version. Defaulting to "'.concat(e,'".')},invalidVersionString:function(e){return'Invalid version string "'.concat(e,'".')},propertyValueNotSupported:function(e,t,r,n){return'Value "'.concat(e,'" for property "').concat(t,'" is supported in version ').concat(r,", but you are using version ").concat(n,".")},propertyNotSupported:function(e,t,r){return'Property "'.concat(e,'" is supported in version ').concat(t,", but you are using version ").concat(r,".")},indexOutOfRange:function(e){return"Index out of range (".concat(e,").")},elementCannotBeUsedAsInline:function(){return"RichTextBlock.addInline: the specified card element cannot be used as a RichTextBlock inline."},inlineAlreadyParented:function(){return"RichTextBlock.addInline: the specified inline already belongs to another RichTextBlock."},interactivityNotAllowed:function(){return"Interactivity is not allowed."},inputsMustHaveUniqueId:function(){return"All inputs must have a unique Id."},choiceSetMustHaveAtLeastOneChoice:function(){return"An Input.ChoiceSet must have at least one choice defined."},choiceSetChoicesMustHaveTitleAndValue:function(){return"All choices in an Input.ChoiceSet must have their title and value properties set."},propertyMustBeSet:function(e){return'Property "'.concat(e,'" must be set.')},actionHttpHeadersMustHaveNameAndValue:function(){return"All headers of an Action.Http must have their name and value properties set."},tooManyActions:function(e){return"Maximum number of actions exceeded (".concat(e,").")},tooLittleTimeDelay:function(e){return"Autoplay Delay is too short (".concat(e,").")},tooManyCarouselPages:function(e){return"Maximum number of Carousel pages exceeded (".concat(e,").")},invalidInitialPageIndex:function(e){return"InitialPage for carousel is invalid (".concat(e,").")},columnAlreadyBelongsToAnotherSet:function(){return"This column already belongs to another ColumnSet."},invalidCardType:function(){return'Invalid or missing card type. Make sure the card\'s type property is set to "AdaptiveCard".'},unsupportedCardVersion:function(e,t){return"The specified card version (".concat(e,") is not supported or still in preview. The latest released card version is ").concat(t,".")},duplicateId:function(e){return'Duplicate Id "'.concat(e,'".')},markdownProcessingNotEnabled:function(){return"Markdown processing isn't enabled. Please see https://www.npmjs.com/package/adaptivecards#supporting-markdown"},processMarkdownEventRemoved:function(){return"The processMarkdown event has been removed. Please update your code and set onProcessMarkdown instead."},elementAlreadyParented:function(){return"The element already belongs to another container."},actionAlreadyParented:function(){return"The action already belongs to another element."},elementTypeNotStandalone:function(e){return"Elements of type ".concat(e," cannot be used as standalone elements.")},invalidInputLabelWidth:function(){return"Invalid input label width. Defaulting to label width from host config."}},e.magicCodeInputCard={tryAgain:function(){return"That didn't work... let's try again."},pleaseLogin:function(){return'Please login in the popup. You will obtain a magic code. Paste that code below and select "Submit"'},enterMagicCode:function(){return"Enter magic code"},pleaseEnterMagicCodeYouReceived:function(){return"Please enter the magic code you received."},submit:function(){return"Submit"},cancel:function(){return"Cancel"},somethingWentWrong:function(){return"Something went wrong. This action can't be handled."},authenticationFailed:function(){return"Authentication failed."}},e.runtime={automaticRefreshPaused:function(){return"Automatic refresh paused."},clckToRestartAutomaticRefresh:function(){return"Click to restart."},refreshThisCard:function(){return"Refresh this card"}},e.hints={dontUseWeightedAndStrecthedColumnsInSameSet:function(){return"It is not recommended to use weighted and stretched columns in the same ColumnSet, because in such a situation stretched columns will always get the minimum amount of space."}},e.defaults={inlineActionTitle:function(){return"Inline Action"},overflowButtonText:function(){return"..."},overflowButtonTooltip:function(){return"More options"},emptyElementText:function(e){return"Empty ".concat(e)},mediaPlayerAriaLabel:function(){return"Media content"},mediaPlayerPlayMedia:function(){return"Play media"},youTubeVideoPlayer:function(){return"YouTube video player"},vimeoVideoPlayer:function(){return"Vimeo video player"},dailymotionVideoPlayer:function(){return"Dailymotion video player"},carouselNavigationPreviousTooltip:function(){return"Previous carousel page"},carouselNavigationNextTooltip:function(){return"Next carousel page"}},e}();t.Strings=r},34854:function(e,t,r){"use strict";var n,i=this&&this.__extends||(n=function(e,t){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])},n(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function r(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}),o=this&&this.__decorate||function(e,t,r,n){var i,o=arguments.length,a=o<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,r,n);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(a=(o<3?i(a):o>3?i(t,r,a):i(t,r))||a);return o>3&&a&&Object.defineProperty(t,r,a),a};Object.defineProperty(t,"__esModule",{value:!0}),t.Table=t.TableRow=t.TableCell=t.StylableContainer=t.TableColumnDefinition=void 0;var a=r(80722),s=r(42408),c=r(95011),u=r(67406),l=r(55389),p=r(93484),d=r(11363),f=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.width=new l.SizeAndUnit(1,s.SizeUnit.Weight),t}return i(t,e),t.prototype.getSchemaKey=function(){return"ColumnDefinition"},t.horizontalCellContentAlignmentProperty=new u.EnumProperty(u.Versions.v1_5,"horizontalCellContentAlignment",s.HorizontalAlignment),t.verticalCellContentAlignmentProperty=new u.EnumProperty(u.Versions.v1_5,"verticalCellContentAlignment",s.VerticalAlignment),t.widthProperty=new u.CustomProperty(u.Versions.v1_5,"width",(function(e,t,r,n){var i=t.defaultValue,o=r[t.name],a=!1;if("number"!=typeof o||isNaN(o))if("string"==typeof o)try{i=l.SizeAndUnit.parse(o)}catch(e){a=!0}else a=!0;else i=new l.SizeAndUnit(o,s.SizeUnit.Weight);return a&&n.logParseEvent(e,s.ValidationEvent.InvalidPropertyValue,p.Strings.errors.invalidColumnWidth(o)),i}),(function(e,t,r,n,i){n.unit===s.SizeUnit.Pixel?i.serializeValue(r,"width",n.physicalSize+"px"):i.serializeNumber(r,"width",n.physicalSize)}),new l.SizeAndUnit(1,s.SizeUnit.Weight)),o([(0,u.property)(t.horizontalCellContentAlignmentProperty)],t.prototype,"horizontalCellContentAlignment",void 0),o([(0,u.property)(t.verticalCellContentAlignmentProperty)],t.prototype,"verticalCellContentAlignment",void 0),o([(0,u.property)(t.widthProperty)],t.prototype,"width",void 0),t}(u.SerializableObject);t.TableColumnDefinition=f;var h=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t._items=[],t}return i(t,e),t.prototype.parseItem=function(e,t){var r=this;return t.parseCardObject(this,e,[],!this.isDesignMode(),(function(e){return r.createItemInstance(e)}),(function(e,r){t.logParseEvent(void 0,s.ValidationEvent.ElementTypeNotAllowed,p.Strings.errors.elementTypeNotAllowed(e))}))},t.prototype.internalAddItem=function(e){if(e.parent)throw new Error(p.Strings.errors.elementAlreadyParented());this._items.push(e),e.setParent(this)},t.prototype.internalRemoveItem=function(e){var t=this._items.indexOf(e);return t>=0&&(this._items.splice(t,1),e.setParent(void 0),this.updateLayout(),!0)},t.prototype.internalIndexOf=function(e){return this._items.indexOf(e)},t.prototype.internalParse=function(t,r){e.prototype.internalParse.call(this,t,r),this._items=[];var n=t[this.getCollectionPropertyName()];if(Array.isArray(n))for(var i=0,o=n;i0?this.getItemAt(0):void 0},t.prototype.getLastVisibleRenderedItem=function(){return this.getItemCount()>0?this.getItemAt(this.getItemCount()-1):void 0},t}(a.StylableCardElementContainer);t.StylableContainer=h;var v=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t._columnIndex=-1,t._cellType="data",t}return i(t,e),t.prototype.getHasBorder=function(){return this.parentRow.parentTable.showGridLines},t.prototype.applyBorder=function(){if(this.renderedElement&&this.getHasBorder()){var e=this.hostConfig.containerStyles.getStyleByName(this.parentRow.parentTable.gridStyle);if(e.borderColor){var t=(0,d.stringToCssColor)(e.borderColor);t&&(this.renderedElement.style.borderRight="1px solid "+t,this.renderedElement.style.borderBottom="1px solid "+t)}}},t.prototype.getDefaultPadding=function(){return this.getHasBackground()||this.getHasBorder()?new l.PaddingDefinition(s.Spacing.Small,s.Spacing.Small,s.Spacing.Small,s.Spacing.Small):e.prototype.getDefaultPadding.call(this)},t.prototype.internalRender=function(){var t=e.prototype.internalRender.call(this);return t&&(t.setAttribute("role","data"===this.cellType?"cell":"columnheader"),t.style.minWidth="0","header"===this.cellType&&t.setAttribute("scope","col")),t},t.prototype.shouldSerialize=function(e){return!0},t.prototype.getJsonTypeName=function(){return"TableCell"},t.prototype.getEffectiveTextStyleDefinition=function(){return"header"===this.cellType?this.hostConfig.textStyles.columnHeader:e.prototype.getEffectiveTextStyleDefinition.call(this)},t.prototype.getEffectiveHorizontalAlignment=function(){if(void 0!==this.horizontalAlignment)return this.horizontalAlignment;if(void 0!==this.parentRow.horizontalCellContentAlignment)return this.parentRow.horizontalCellContentAlignment;if(this.columnIndex>=0){var t=this.parentRow.parentTable.getColumnAt(this.columnIndex).horizontalCellContentAlignment;if(void 0!==t)return t}return void 0!==this.parentRow.parentTable.horizontalCellContentAlignment?this.parentRow.parentTable.horizontalCellContentAlignment:e.prototype.getEffectiveHorizontalAlignment.call(this)},t.prototype.getEffectiveVerticalContentAlignment=function(){if(void 0!==this.verticalContentAlignment)return this.verticalContentAlignment;if(void 0!==this.parentRow.verticalCellContentAlignment)return this.parentRow.verticalCellContentAlignment;if(this.columnIndex>=0){var t=this.parentRow.parentTable.getColumnAt(this.columnIndex).verticalCellContentAlignment;if(void 0!==t)return t}return void 0!==this.parentRow.parentTable.verticalCellContentAlignment?this.parentRow.parentTable.verticalCellContentAlignment:e.prototype.getEffectiveVerticalContentAlignment.call(this)},Object.defineProperty(t.prototype,"columnIndex",{get:function(){return this._columnIndex},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"cellType",{get:function(){return this._cellType},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"parentRow",{get:function(){return this.parent},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"isStandalone",{get:function(){return!1},enumerable:!1,configurable:!0}),t}(a.Container);t.TableCell=v;var m=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return i(t,e),t.prototype.getDefaultPadding=function(){return new l.PaddingDefinition(s.Spacing.None,s.Spacing.None,s.Spacing.None,s.Spacing.None)},t.prototype.applyBackground=function(){if(this.renderedElement){var e=this.hostConfig.containerStyles.getStyleByName(this.style,this.hostConfig.containerStyles.getStyleByName(this.defaultStyle));if(e.backgroundColor){var t=(0,d.stringToCssColor)(e.backgroundColor);t&&(this.renderedElement.style.backgroundColor=t)}}},t.prototype.getCollectionPropertyName=function(){return"cells"},t.prototype.createItemInstance=function(e){return e&&"TableCell"!==e?void 0:new v},t.prototype.internalRender=function(){var e=this.getIsFirstRow(),t=this.hostConfig.table.cellSpacing,r=document.createElement("div");r.setAttribute("role","row"),r.style.display="flex",r.style.flexDirection="row";for(var n=0;n0&&!this.parentTable.showGridLines&&t>0&&(o.style.marginLeft=t+"px"),r.appendChild(o)}}return r.children.length>0?r:void 0},t.prototype.shouldSerialize=function(e){return!0},t.prototype.addCell=function(e){this.internalAddItem(e)},t.prototype.removeCellAt=function(e){return e>=0&&e0){for(var e=0,t=0,r=this._columns;t0&&!this.showGridLines&&p>0){var v=document.createElement("div");v.setAttribute("aria-hidden","true"),v.style.height=p+"px",a.appendChild(v)}a.appendChild(h)}}return a}},t.prototype.addColumn=function(e){this._columns.push(e),this.ensureRowsHaveEnoughCells()},t.prototype.removeColumn=function(e){var t=this._columns.indexOf(e);t>=0&&(this.removeCellsFromColumn(t),this._columns.splice(t,1))},t.prototype.getColumnCount=function(){return this._columns.length},t.prototype.getColumnAt=function(e){return this._columns[e]},t.prototype.addRow=function(e){this.internalAddItem(e),e.ensureHasEnoughCells(this.getColumnCount())},t.prototype.indexOf=function(e){return e instanceof m?this.internalIndexOf(e):-1},t.prototype.getJsonTypeName=function(){return"Table"},t._columnsProperty=new u.SerializableObjectCollectionProperty(u.Versions.v1_5,"columns",f),t.firstRowAsHeadersProperty=new u.BoolProperty(u.Versions.v1_5,"firstRowAsHeaders",!0),t.showGridLinesProperty=new u.BoolProperty(u.Versions.v1_5,"showGridLines",!0),t.gridStyleProperty=new a.ContainerStyleProperty(u.Versions.v1_5,"gridStyle"),t.horizontalCellContentAlignmentProperty=new u.EnumProperty(u.Versions.v1_5,"horizontalCellContentAlignment",s.HorizontalAlignment),t.verticalCellContentAlignmentProperty=new u.EnumProperty(u.Versions.v1_5,"verticalCellContentAlignment",s.VerticalAlignment),o([(0,u.property)(t._columnsProperty)],t.prototype,"_columns",void 0),o([(0,u.property)(t.firstRowAsHeadersProperty)],t.prototype,"firstRowAsHeaders",void 0),o([(0,u.property)(t.showGridLinesProperty)],t.prototype,"showGridLines",void 0),o([(0,u.property)(t.gridStyleProperty)],t.prototype,"gridStyle",null),o([(0,u.property)(t.horizontalCellContentAlignmentProperty)],t.prototype,"horizontalCellContentAlignment",void 0),o([(0,u.property)(t.verticalCellContentAlignmentProperty)],t.prototype,"verticalCellContentAlignment",void 0),t}(h);t.Table=_,c.GlobalRegistry.defaultElements.register("Table",_,u.Versions.v1_5)},87995:function(e,t){"use strict";var r,n=this&&this.__extends||(r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])},r(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)});Object.defineProperty(t,"__esModule",{value:!0}),t.formatText=void 0;var i=function(){function e(e){this._regularExpression=e}return e.prototype.format=function(e,t){var r;if(t){for(var n=t;null!=(r=this._regularExpression.exec(t));)n=n.replace(r[0],this.internalFormat(e,r));return n}return t},e}(),o=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.internalFormat=function(e,t){var r=new Date(Date.parse(t[1])),n=void 0!==t[2]?t[2].toLowerCase():"compact";return"compact"!==n?r.toLocaleDateString(e,{day:"numeric",weekday:n,month:n,year:"numeric"}):r.toLocaleDateString()},t}(i),a=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.internalFormat=function(e,t){return new Date(Date.parse(t[1])).toLocaleTimeString(e,{hour:"numeric",minute:"2-digit"})},t}(i);t.formatText=function(e,t){for(var r=t,n=0,i=[new o(/\{{2}DATE\((\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:Z|(?:(?:-|\+)\d{2}:\d{2})))(?:, ?(COMPACT|LONG|SHORT))?\)\}{2}/g),new a(/\{{2}TIME\((\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:Z|(?:(?:-|\+)\d{2}:\d{2})))\)\}{2}/g)];n=0){var i=e[r];if(i&&"string"==typeof i&&i.toLowerCase()===t.toLowerCase())return n}}}function s(e,t,r,n,i){var o=function(){return t-e.scrollHeight>=-1};if(!o()){for(var a=function(e){var t=[],r=u(e,-1);for(;r=i-1){for(var d=u(r,l);d"!==e[t++];);return t}t.truncate=function(e,t,r){s(e,t,e.innerHTML,(function(t,r){var n,i=t.substring(0,r)+"...",o=null!==(n=null==c?void 0:c.createHTML(i))&&void 0!==n?n:i;e.innerHTML=o}),r)},t.getFitStatus=function(e,t){var r=e.offsetTop;return r+e.clientHeight<=t?i.ContainerFitStatus.FullyInContainer:r=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,s=!0,c=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return s=e.done,e},e:function(e){c=!0,o=e},f:function(){try{s||null==r.return||r.return()}finally{if(c)throw o}}}}function a(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r= 0x80 (not a basic code point)","invalid-input":"Invalid input"},f=Math.floor,h=String.fromCharCode;function v(e){throw new RangeError(d[e])}function m(e,t){var r=e.split("@"),n="";r.length>1&&(n=r[0]+"@",e=r[1]);var i=function(e,t){for(var r=[],n=e.length;n--;)r[n]=t(e[n]);return r}((e=e.replace(p,".")).split("."),t).join(".");return n+i}function _(e){for(var t=[],r=0,n=e.length;r=55296&&i<=56319&&r>1,e+=f(e/t);e>455;n+=c)e=f(e/35);return f(n+36*e/(e+38))},E=function(e){var t,r=[],n=e.length,i=0,o=128,a=72,u=e.lastIndexOf("-");u<0&&(u=0);for(var l=0;l=128&&v("not-basic"),r.push(e.charCodeAt(l));for(var p=u>0?u+1:0;p=n&&v("invalid-input");var _=(t=e.charCodeAt(p++))-48<10?t-22:t-65<26?t-65:t-97<26?t-97:c;(_>=c||_>f((s-i)/h))&&v("overflow"),i+=_*h;var T=m<=a?1:m>=a+26?26:m-a;if(_f(s/g)&&v("overflow"),h*=g}var E=r.length+1;a=y(i-d,E,0==d),f(i/E)>s-o&&v("overflow"),o+=f(i/E),i%=E,r.splice(i++,0,o)}return String.fromCodePoint.apply(String,r)};t.decode=E;var b=function(e){var t,r=[],n=(e=_(e)).length,i=128,a=0,u=72,l=o(e);try{for(l.s();!(t=l.n()).done;){var p=t.value;p<128&&r.push(h(p))}}catch(e){l.e(e)}finally{l.f()}var d=r.length,m=d;for(d&&r.push("-");m=i&&Af((s-a)/S)&&v("overflow"),a+=(E-i)*S,i=E;var C,I=o(e);try{for(I.s();!(C=I.n()).done;){var O=C.value;if(Os&&v("overflow"),O==i){for(var w=a,R=c;;R+=c){var P=R<=u?1:R>=u+26?26:R-u;if(w0&&i[i.length-1])||6!==s[0]&&2!==s[0])){a=0;continue}if(3===s[0]&&(!i||s[1]>i[0]&&s[1]0&&i[i.length-1])||6!==s[0]&&2!==s[0])){a=0;continue}if(3===s[0]&&(!i||s[1]>i[0]&&s[1]0&&i[i.length-1])||6!==s[0]&&2!==s[0])){a=0;continue}if(3===s[0]&&(!i||s[1]>i[0]&&s[1]0&&i[i.length-1])||6!==s[0]&&2!==s[0])){a=0;continue}if(3===s[0]&&(!i||s[1]>i[0]&&s[1]0&&i[i.length-1])||6!==s[0]&&2!==s[0])){a=0;continue}if(3===s[0]&&(!i||s[1]>i[0]&&s[1]0&&i[i.length-1])||6!==s[0]&&2!==s[0])){a=0;continue}if(3===s[0]&&(!i||s[1]>i[0]&&s[1]0&&i[i.length-1])||6!==s[0]&&2!==s[0])){a=0;continue}if(3===s[0]&&(!i||s[1]>i[0]&&s[1]0))return[3,8];u=0,l=this._getStream(r),i.label=5;case 5:return u0&&e.payload){for(var r=e.header.payloadLength;r>0;){var a=r<=i.PayloadConstants.MaxPayloadLength?r:i.PayloadConstants.MaxPayloadLength,s=e.payload.read(a),c=e.header;c.payloadLength=a,c.end=r<=i.PayloadConstants.MaxPayloadLength;var u=t.alloc(i.PayloadConstants.MaxHeaderLength);n.HeaderSerializer.serialize(c,u),this._sender.send(u),this._sender.send(s),r-=s.length}e.sentCallback&&e.sentCallback()}}catch(e){this.disconnect(new o.TransportDisconnectedEvent(e.message))}},e}();r.PayloadSender=a}).call(this)}).call(this,e("buffer").Buffer)},{"../payloads/headerSerializer":15,"../payloads/payloadConstants":18,"./transportDisconnectedEvent":13,buffer:35}],13:[function(e,t,r){Object.defineProperty(r,"__esModule",{value:!0}),r.TransportDisconnectedEvent=void 0;var n=function(){function e(e){this.reason=e}return e.Empty=new e,e}();r.TransportDisconnectedEvent=n},{}],14:[function(e,t,r){Object.defineProperty(r,"__esModule",{value:!0})},{}],15:[function(e,t,r){Object.defineProperty(r,"__esModule",{value:!0}),r.HeaderSerializer=void 0;var n=e("./payloadConstants"),i=function(){function e(){}return e.serialize=function(e,t){t.write(e.payloadType,this.TypeOffset,1,this.Encoding),t.write(this.Delimiter,this.TypeDelimiterOffset,1,this.Encoding),t.write(this.headerLengthPadder(e.payloadLength,this.LengthLength,"0"),this.LengthOffset,this.LengthLength,this.Encoding),t.write(this.Delimiter,this.LengthDelimeterOffset,1,this.Encoding),t.write(e.id,this.IdOffset),t.write(this.Delimiter,this.IdDelimeterOffset,1,this.Encoding),t.write(e.end?this.End:this.NotEnd,this.EndOffset),t.write(this.Terminator,this.TerminatorOffset)},e.deserialize=function(e){var t=e.toString(this.Encoding),r=t.split(this.Delimiter);if(4!==r.length)throw Error("Cannot parse header, header is malformed. Header: ".concat(t));var i=r[0],o=r[1],a=r[2],s=r[3],c={end:"1\n"===s,payloadLength:Number(o),payloadType:i,id:a};if(!(c.payloadLength<=n.PayloadConstants.MaxPayloadLength&&c.payloadLength>=n.PayloadConstants.MinLength))throw Error("Header length of ".concat(c.payloadLength," is missing or malformed"));if(c.payloadType.length!==this.TypeDelimiterOffset)throw Error("Header type '".concat(c.payloadType.length,"' is missing or malformed."));if(!c.id||!c.id.match(/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i)||c.id.length!==this.IdLength)throw Error("Header ID '".concat(c.id,"' is missing or malformed."));if("0\n"!==s&&"1\n"!==s)throw Error("Header End is missing or not a valid value. Header end: '".concat(s,"'"));return c},e.headerLengthPadder=function(e,t,r){var n=Array(t+1).join(r),i=e.toString();return(n+i).slice(i.length)},e.Delimiter=".",e.Terminator="\n",e.End="1",e.NotEnd="0",e.TypeOffset=0,e.TypeDelimiterOffset=1,e.LengthOffset=2,e.LengthLength=6,e.LengthDelimeterOffset=8,e.IdOffset=9,e.IdLength=36,e.IdDelimeterOffset=45,e.EndOffset=46,e.TerminatorOffset=47,e.Encoding="utf8",e}();r.HeaderSerializer=i},{"./payloadConstants":18}],16:[function(e,t,r){var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(r,"__esModule",{value:!0}),i(e("./headerSerializer"),r),i(e("./streamManager"),r),i(e("./payloadAssemblerManager"),r),i(e("./payloadTypes"),r),i(e("./requestManager"),r),i(e("./sendOperations"),r),i(e("./streamManager"),r)},{"./headerSerializer":15,"./payloadAssemblerManager":17,"./payloadTypes":19,"./requestManager":20,"./sendOperations":21,"./streamManager":22}],17:[function(e,t,r){Object.defineProperty(r,"__esModule",{value:!0}),r.PayloadAssemblerManager=void 0;var n=e("../assemblers/payloadAssembler"),i=e("./payloadTypes"),o=function(){function e(e,t,r){this.streamManager=e,this.onReceiveResponse=t,this.onReceiveRequest=r,this.activeAssemblers={}}return e.prototype.getPayloadStream=function(e){if(e.payloadType===i.PayloadTypes.stream)return this.streamManager.getPayloadStream(e);if(!this.activeAssemblers[e.id]){var t=this.createPayloadAssembler(e);if(t)return this.activeAssemblers[e.id]=t,t.getPayloadStream()}},e.prototype.onReceive=function(e,t,r){e.payloadType===i.PayloadTypes.stream?this.streamManager.onReceive(e,t,r):(this.activeAssemblers&&this.activeAssemblers[e.id]&&this.activeAssemblers[e.id].onReceive(e,t,r),e.end&&delete this.activeAssemblers[e.id])},e.prototype.createPayloadAssembler=function(e){return e.payloadType===i.PayloadTypes.request?new n.PayloadAssembler(this.streamManager,{header:e,onCompleted:this.onReceiveRequest}):e.payloadType===i.PayloadTypes.response?new n.PayloadAssembler(this.streamManager,{header:e,onCompleted:this.onReceiveResponse}):void 0},e}();r.PayloadAssemblerManager=o},{"../assemblers/payloadAssembler":1,"./payloadTypes":19}],18:[function(e,t,r){Object.defineProperty(r,"__esModule",{value:!0}),r.PayloadConstants=void 0,function(e){e[e.MaxPayloadLength=4096]="MaxPayloadLength",e[e.MaxHeaderLength=48]="MaxHeaderLength",e[e.MaxLength=999999]="MaxLength",e[e.MinLength=0]="MinLength"}(r.PayloadConstants||(r.PayloadConstants={}))},{}],19:[function(e,t,r){Object.defineProperty(r,"__esModule",{value:!0}),r.PayloadTypes=void 0,function(e){e.request="A",e.response="B",e.stream="S",e.cancelAll="X",e.cancelStream="C"}(r.PayloadTypes||(r.PayloadTypes={}))},{}],20:[function(e,t,r){var n=this&&this.__awaiter||function(e,t,r,n){return new(r||(r=Promise))((function(i,o){function a(e){try{c(n.next(e))}catch(e){o(e)}}function s(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?i(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(a,s)}c((n=n.apply(e,t||[])).next())}))},i=this&&this.__generator||function(e,t){var r,n,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function s(s){return function(c){return function(s){if(r)throw new TypeError("Generator is already executing.");for(;o&&(o=0,s[0]&&(a=0)),a;)try{if(r=1,n&&(i=2&s[0]?n.return:s[0]?n.throw||((i=n.return)&&i.call(n),0):n.next)&&!(i=i.call(n,s[1])).done)return i;switch(n=0,i&&(s=[2&s[0],i.value]),s[0]){case 0:case 1:i=s;break;case 4:return a.label++,{value:s[1],done:!1};case 5:a.label++,n=s[1],s=[0];continue;case 7:s=a.ops.pop(),a.trys.pop();continue;default:if(!((i=(i=a.trys).length>0&&i[i.length-1])||6!==s[0]&&2!==s[0])){a=0;continue}if(3===s[0]&&(!i||s[1]>i[0]&&s[1]0&&i[i.length-1])||6!==s[0]&&2!==s[0])){a=0;continue}if(3===s[0]&&(!i||s[1]>i[0]&&s[1]0&&i[i.length-1])||6!==s[0]&&2!==s[0])){a=0;continue}if(3===s[0]&&(!i||s[1]>i[0]&&s[1]0;){var r=this.bufferList[0];this.push(r),this.bufferList.splice(0,1),t+=r.length}},r.prototype.subscribe=function(e){this._onData=e},r}(e("stream").Duplex);r.SubscribableStream=o}).call(this)}).call(this,e("buffer").Buffer)},{buffer:35,stream:41}],28:[function(e,t,r){Object.defineProperty(r,"__esModule",{value:!0}),r.generateGuid=void 0;var n=e("uuid");r.generateGuid=function(){return(0,n.v4)()}},{uuid:58}],29:[function(e,t,r){var n=this&&this.__awaiter||function(e,t,r,n){return new(r||(r=Promise))((function(i,o){function a(e){try{c(n.next(e))}catch(e){o(e)}}function s(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?i(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(a,s)}c((n=n.apply(e,t||[])).next())}))},i=this&&this.__generator||function(e,t){var r,n,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function s(s){return function(c){return function(s){if(r)throw new TypeError("Generator is already executing.");for(;o&&(o=0,s[0]&&(a=0)),a;)try{if(r=1,n&&(i=2&s[0]?n.return:s[0]?n.throw||((i=n.return)&&i.call(n),0):n.next)&&!(i=i.call(n,s[1])).done)return i;switch(n=0,i&&(s=[2&s[0],i.value]),s[0]){case 0:case 1:i=s;break;case 4:return a.label++,{value:s[1],done:!1};case 5:a.label++,n=s[1],s=[0];continue;case 7:s=a.ops.pop(),a.trys.pop();continue;default:if(!((i=(i=a.trys).length>0&&i[i.length-1])||6!==s[0]&&2!==s[0])){a=0;continue}if(3===s[0]&&(!i||s[1]>i[0]&&s[1]0&&i[i.length-1])||6!==s[0]&&2!==s[0])){a=0;continue}if(3===s[0]&&(!i||s[1]>i[0]&&s[1]0&&i[i.length-1])||6!==s[0]&&2!==s[0])){a=0;continue}if(3===s[0]&&(!i||s[1]>i[0]&&s[1]0&&(this._queue.push(e.from(t)),this.trySignalData())},r.prototype.onClose=function(){this._activeReceiveReject&&this._activeReceiveReject(new Error("Socket was closed.")),this._active=null,this._activeOffset=0,this._activeReceiveResolve=null,this._activeReceiveReject=null,this._activeReceiveCount=0,this.ws=null},r.prototype.onError=function(e){this._activeReceiveReject&&this._activeReceiveReject(e),this.onClose()},r.prototype.trySignalData=function(){if(this._activeReceiveResolve&&(!this._active&&this._queue.length>0&&(this._active=this._queue.shift(),this._activeOffset=0),this._active)){if(0===this._activeOffset&&this._active.length===this._activeReceiveCount){var t=this._active;this._active=null,this._activeReceiveResolve(t)}else{var r=Math.min(this._activeReceiveCount,this._active.length-this._activeOffset);t=e.alloc(r),this._active.copy(t,0,this._activeOffset,this._activeOffset+r),this._activeOffset+=r,this._activeOffset>=this._active.length&&(this._active=null,this._activeOffset=0),this._activeReceiveResolve(t)}this._activeReceiveCount=0,this._activeReceiveReject=null,this._activeReceiveResolve=null}},r}();r.WebSocketTransport=i}).call(this)}).call(this,e("buffer").Buffer)},{buffer:35}],33:[function(e,t,r){r.byteLength=function(e){var t=c(e),r=t[0],n=t[1];return 3*(r+n)/4-n},r.toByteArray=function(e){var t,r,n=c(e),a=n[0],s=n[1],u=new o(function(e,t,r){return 3*(t+r)/4-r}(0,a,s)),l=0,p=s>0?a-4:a;for(r=0;r>16&255,u[l++]=t>>8&255,u[l++]=255&t;return 2===s&&(t=i[e.charCodeAt(r)]<<2|i[e.charCodeAt(r+1)]>>4,u[l++]=255&t),1===s&&(t=i[e.charCodeAt(r)]<<10|i[e.charCodeAt(r+1)]<<4|i[e.charCodeAt(r+2)]>>2,u[l++]=t>>8&255,u[l++]=255&t),u},r.fromByteArray=function(e){for(var t,r=e.length,i=r%3,o=[],a=16383,s=0,c=r-i;sc?c:s+a));return 1===i?(t=e[r-1],o.push(n[t>>2]+n[t<<4&63]+"==")):2===i&&(t=(e[r-2]<<8)+e[r-1],o.push(n[t>>10]+n[t>>4&63]+n[t<<2&63]+"=")),o.join("")};for(var n=[],i=[],o="undefined"!=typeof Uint8Array?Uint8Array:Array,a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",s=0;s<64;++s)n[s]=a[s],i[a.charCodeAt(s)]=s;function c(e){var t=e.length;if(t%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var r=e.indexOf("=");return-1===r&&(r=t),[r,r===t?0:4-r%4]}function u(e,t,r){for(var i,o,a=[],s=t;s>18&63]+n[o>>12&63]+n[o>>6&63]+n[63&o]);return a.join("")}i["-".charCodeAt(0)]=62,i["_".charCodeAt(0)]=63},{}],34:[function(e,t,r){},{}],35:[function(e,t,r){(function(t){(function(){var t=e("base64-js"),n=e("ieee754");r.Buffer=a,r.SlowBuffer=function(e){return+e!=e&&(e=0),a.alloc(+e)},r.INSPECT_MAX_BYTES=50;var i=2147483647;function o(e){if(e>i)throw new RangeError('The value "'+e+'" is invalid for option "size"');var t=new Uint8Array(e);return t.__proto__=a.prototype,t}function a(e,t,r){if("number"==typeof e){if("string"==typeof t)throw new TypeError('The "string" argument must be of type string. Received type number');return l(e)}return c(e,t,r)}function c(e,t,r){if("string"==typeof e)return function(e,t){if("string"==typeof t&&""!==t||(t="utf8"),!a.isEncoding(t))throw new TypeError("Unknown encoding: "+t);var r=0|f(e,t),n=o(r),i=n.write(e,t);return i!==r&&(n=n.slice(0,i)),n}(e,t);if(ArrayBuffer.isView(e))return p(e);if(null==e)throw TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+(0,s.default)(e));if(V(e,ArrayBuffer)||e&&V(e.buffer,ArrayBuffer))return function(e,t,r){if(t<0||e.byteLength=i)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+i.toString(16)+" bytes");return 0|e}function f(e,t){if(a.isBuffer(e))return e.length;if(ArrayBuffer.isView(e)||V(e,ArrayBuffer))return e.byteLength;if("string"!=typeof e)throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+(0,s.default)(e));var r=e.length,n=arguments.length>2&&!0===arguments[2];if(!n&&0===r)return 0;for(var i=!1;;)switch(t){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":return B(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return H(e).length;default:if(i)return n?-1:B(e).length;t=(""+t).toLowerCase(),i=!0}}function h(e,t,r){var n=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return"";if((r>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return R(this,t,r);case"utf8":case"utf-8":return C(this,t,r);case"ascii":return O(this,t,r);case"latin1":case"binary":return w(this,t,r);case"base64":return S(this,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return P(this,t,r);default:if(n)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),n=!0}}function v(e,t,r){var n=e[t];e[t]=e[r],e[r]=n}function m(e,t,r,n,i){if(0===e.length)return-1;if("string"==typeof r?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),U(r=+r)&&(r=i?0:e.length-1),r<0&&(r=e.length+r),r>=e.length){if(i)return-1;r=e.length-1}else if(r<0){if(!i)return-1;r=0}if("string"==typeof t&&(t=a.from(t,n)),a.isBuffer(t))return 0===t.length?-1:_(e,t,r,n,i);if("number"==typeof t)return t&=255,"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(e,t,r):Uint8Array.prototype.lastIndexOf.call(e,t,r):_(e,[t],r,n,i);throw new TypeError("val must be string, number or Buffer")}function _(e,t,r,n,i){var o,a=1,s=e.length,c=t.length;if(void 0!==n&&("ucs2"===(n=String(n).toLowerCase())||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(e.length<2||t.length<2)return-1;a=2,s/=2,c/=2,r/=2}function u(e,t){return 1===a?e[t]:e.readUInt16BE(t*a)}if(i){var l=-1;for(o=r;os&&(r=s-c),o=r;o>=0;o--){for(var p=!0,d=0;di&&(n=i):n=i;var o=t.length;n>o/2&&(n=o/2);for(var a=0;a>8,i=r%256,o.push(i),o.push(n);return o}(t,e.length-r),e,r,n)}function S(e,r,n){return 0===r&&n===e.length?t.fromByteArray(e):t.fromByteArray(e.slice(r,n))}function C(e,t,r){r=Math.min(e.length,r);for(var n=[],i=t;i239?4:u>223?3:u>191?2:1;if(i+p<=r)switch(p){case 1:u<128&&(l=u);break;case 2:128==(192&(o=e[i+1]))&&(c=(31&u)<<6|63&o)>127&&(l=c);break;case 3:o=e[i+1],a=e[i+2],128==(192&o)&&128==(192&a)&&(c=(15&u)<<12|(63&o)<<6|63&a)>2047&&(c<55296||c>57343)&&(l=c);break;case 4:o=e[i+1],a=e[i+2],s=e[i+3],128==(192&o)&&128==(192&a)&&128==(192&s)&&(c=(15&u)<<18|(63&o)<<12|(63&a)<<6|63&s)>65535&&c<1114112&&(l=c)}null===l?(l=65533,p=1):l>65535&&(l-=65536,n.push(l>>>10&1023|55296),l=56320|1023&l),n.push(l),i+=p}return function(e){var t=e.length;if(t<=I)return String.fromCharCode.apply(String,e);for(var r="",n=0;nt&&(e+=" ... "),""},a.prototype.compare=function(e,t,r,n,i){if(V(e,Uint8Array)&&(e=a.from(e,e.offset,e.byteLength)),!a.isBuffer(e))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+(0,s.default)(e));if(void 0===t&&(t=0),void 0===r&&(r=e?e.length:0),void 0===n&&(n=0),void 0===i&&(i=this.length),t<0||r>e.length||n<0||i>this.length)throw new RangeError("out of range index");if(n>=i&&t>=r)return 0;if(n>=i)return-1;if(t>=r)return 1;if(this===e)return 0;for(var o=(i>>>=0)-(n>>>=0),c=(r>>>=0)-(t>>>=0),u=Math.min(o,c),l=this.slice(n,i),p=e.slice(t,r),d=0;d>>=0,isFinite(r)?(r>>>=0,void 0===n&&(n="utf8")):(n=r,r=void 0)}var i=this.length-t;if((void 0===r||r>i)&&(r=i),e.length>0&&(r<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");for(var o=!1;;)switch(n){case"hex":return T(this,e,t,r);case"utf8":case"utf-8":return g(this,e,t,r);case"ascii":return y(this,e,t,r);case"latin1":case"binary":return E(this,e,t,r);case"base64":return b(this,e,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return A(this,e,t,r);default:if(o)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),o=!0}},a.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var I=4096;function O(e,t,r){var n="";r=Math.min(e.length,r);for(var i=t;ii)&&(r=i);for(var o="",a=t;ar)throw new RangeError("Trying to access beyond buffer length")}function x(e,t,r,n,i,o){if(!a.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>i||te.length)throw new RangeError("Index out of range")}function L(e,t,r,n,i,o){if(r+n>e.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function k(e,t,r,i,o){return t=+t,r>>>=0,o||L(e,0,r,4),n.write(e,t,r,i,23,4),r+4}function D(e,t,r,i,o){return t=+t,r>>>=0,o||L(e,0,r,8),n.write(e,t,r,i,52,8),r+8}a.prototype.slice=function(e,t){var r=this.length;(e=~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),(t=void 0===t?r:~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),t>>=0,t>>>=0,r||N(e,t,this.length);for(var n=this[e],i=1,o=0;++o>>=0,t>>>=0,r||N(e,t,this.length);for(var n=this[e+--t],i=1;t>0&&(i*=256);)n+=this[e+--t]*i;return n},a.prototype.readUInt8=function(e,t){return e>>>=0,t||N(e,1,this.length),this[e]},a.prototype.readUInt16LE=function(e,t){return e>>>=0,t||N(e,2,this.length),this[e]|this[e+1]<<8},a.prototype.readUInt16BE=function(e,t){return e>>>=0,t||N(e,2,this.length),this[e]<<8|this[e+1]},a.prototype.readUInt32LE=function(e,t){return e>>>=0,t||N(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},a.prototype.readUInt32BE=function(e,t){return e>>>=0,t||N(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},a.prototype.readIntLE=function(e,t,r){e>>>=0,t>>>=0,r||N(e,t,this.length);for(var n=this[e],i=1,o=0;++o=(i*=128)&&(n-=Math.pow(2,8*t)),n},a.prototype.readIntBE=function(e,t,r){e>>>=0,t>>>=0,r||N(e,t,this.length);for(var n=t,i=1,o=this[e+--n];n>0&&(i*=256);)o+=this[e+--n]*i;return o>=(i*=128)&&(o-=Math.pow(2,8*t)),o},a.prototype.readInt8=function(e,t){return e>>>=0,t||N(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},a.prototype.readInt16LE=function(e,t){e>>>=0,t||N(e,2,this.length);var r=this[e]|this[e+1]<<8;return 32768&r?4294901760|r:r},a.prototype.readInt16BE=function(e,t){e>>>=0,t||N(e,2,this.length);var r=this[e+1]|this[e]<<8;return 32768&r?4294901760|r:r},a.prototype.readInt32LE=function(e,t){return e>>>=0,t||N(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},a.prototype.readInt32BE=function(e,t){return e>>>=0,t||N(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},a.prototype.readFloatLE=function(e,t){return e>>>=0,t||N(e,4,this.length),n.read(this,e,!0,23,4)},a.prototype.readFloatBE=function(e,t){return e>>>=0,t||N(e,4,this.length),n.read(this,e,!1,23,4)},a.prototype.readDoubleLE=function(e,t){return e>>>=0,t||N(e,8,this.length),n.read(this,e,!0,52,8)},a.prototype.readDoubleBE=function(e,t){return e>>>=0,t||N(e,8,this.length),n.read(this,e,!1,52,8)},a.prototype.writeUIntLE=function(e,t,r,n){e=+e,t>>>=0,r>>>=0,n||x(this,e,t,r,Math.pow(2,8*r)-1,0);var i=1,o=0;for(this[t]=255&e;++o>>=0,r>>>=0,n||x(this,e,t,r,Math.pow(2,8*r)-1,0);var i=r-1,o=1;for(this[t+i]=255&e;--i>=0&&(o*=256);)this[t+i]=e/o&255;return t+r},a.prototype.writeUInt8=function(e,t,r){return e=+e,t>>>=0,r||x(this,e,t,1,255,0),this[t]=255&e,t+1},a.prototype.writeUInt16LE=function(e,t,r){return e=+e,t>>>=0,r||x(this,e,t,2,65535,0),this[t]=255&e,this[t+1]=e>>>8,t+2},a.prototype.writeUInt16BE=function(e,t,r){return e=+e,t>>>=0,r||x(this,e,t,2,65535,0),this[t]=e>>>8,this[t+1]=255&e,t+2},a.prototype.writeUInt32LE=function(e,t,r){return e=+e,t>>>=0,r||x(this,e,t,4,4294967295,0),this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e,t+4},a.prototype.writeUInt32BE=function(e,t,r){return e=+e,t>>>=0,r||x(this,e,t,4,4294967295,0),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},a.prototype.writeIntLE=function(e,t,r,n){if(e=+e,t>>>=0,!n){var i=Math.pow(2,8*r-1);x(this,e,t,r,i-1,-i)}var o=0,a=1,s=0;for(this[t]=255&e;++o>>=0,!n){var i=Math.pow(2,8*r-1);x(this,e,t,r,i-1,-i)}var o=r-1,a=1,s=0;for(this[t+o]=255&e;--o>=0&&(a*=256);)e<0&&0===s&&0!==this[t+o+1]&&(s=1),this[t+o]=(e/a|0)-s&255;return t+r},a.prototype.writeInt8=function(e,t,r){return e=+e,t>>>=0,r||x(this,e,t,1,127,-128),e<0&&(e=255+e+1),this[t]=255&e,t+1},a.prototype.writeInt16LE=function(e,t,r){return e=+e,t>>>=0,r||x(this,e,t,2,32767,-32768),this[t]=255&e,this[t+1]=e>>>8,t+2},a.prototype.writeInt16BE=function(e,t,r){return e=+e,t>>>=0,r||x(this,e,t,2,32767,-32768),this[t]=e>>>8,this[t+1]=255&e,t+2},a.prototype.writeInt32LE=function(e,t,r){return e=+e,t>>>=0,r||x(this,e,t,4,2147483647,-2147483648),this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24,t+4},a.prototype.writeInt32BE=function(e,t,r){return e=+e,t>>>=0,r||x(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},a.prototype.writeFloatLE=function(e,t,r){return k(this,e,t,!0,r)},a.prototype.writeFloatBE=function(e,t,r){return k(this,e,t,!1,r)},a.prototype.writeDoubleLE=function(e,t,r){return D(this,e,t,!0,r)},a.prototype.writeDoubleBE=function(e,t,r){return D(this,e,t,!1,r)},a.prototype.copy=function(e,t,r,n){if(!a.isBuffer(e))throw new TypeError("argument should be a Buffer");if(r||(r=0),n||0===n||(n=this.length),t>=e.length&&(t=e.length),t||(t=0),n>0&&n=this.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),e.length-t=0;--o)e[o+t]=this[o+r];else Uint8Array.prototype.set.call(e,this.subarray(r,n),t);return i},a.prototype.fill=function(e,t,r,n){if("string"==typeof e){if("string"==typeof t?(n=t,t=0,r=this.length):"string"==typeof r&&(n=r,r=this.length),void 0!==n&&"string"!=typeof n)throw new TypeError("encoding must be a string");if("string"==typeof n&&!a.isEncoding(n))throw new TypeError("Unknown encoding: "+n);if(1===e.length){var i=e.charCodeAt(0);("utf8"===n&&i<128||"latin1"===n)&&(e=i)}}else"number"==typeof e&&(e&=255);if(t<0||this.length>>=0,r=void 0===r?this.length:r>>>0,e||(e=0),"number"==typeof e)for(o=t;o55295&&r<57344){if(!i){if(r>56319){(t-=3)>-1&&o.push(239,191,189);continue}if(a+1===n){(t-=3)>-1&&o.push(239,191,189);continue}i=r;continue}if(r<56320){(t-=3)>-1&&o.push(239,191,189),i=r;continue}r=65536+(i-55296<<10|r-56320)}else i&&(t-=3)>-1&&o.push(239,191,189);if(i=null,r<128){if((t-=1)<0)break;o.push(r)}else if(r<2048){if((t-=2)<0)break;o.push(r>>6|192,63&r|128)}else if(r<65536){if((t-=3)<0)break;o.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;o.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return o}function H(e){return t.toByteArray(function(e){if((e=(e=e.split("=")[0]).trim().replace(M,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function j(e,t,r,n){for(var i=0;i=t.length||i>=e.length);++i)t[i+r]=e[i];return i}function V(e,t){return e instanceof t||null!=e&&null!=e.constructor&&null!=e.constructor.name&&e.constructor.name===t.name}function U(e){return e!=e}}).call(this)}).call(this,e("buffer").Buffer)},{"base64-js":33,buffer:35,ieee754:37}],36:[function(e,t,r){var n,i="object"===("undefined"==typeof Reflect?"undefined":(0,s.default)(Reflect))?Reflect:null,o=i&&"function"==typeof i.apply?i.apply:function(e,t,r){return Function.prototype.apply.call(e,t,r)};n=i&&"function"==typeof i.ownKeys?i.ownKeys:Object.getOwnPropertySymbols?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:function(e){return Object.getOwnPropertyNames(e)};var a=Number.isNaN||function(e){return e!=e};function c(){c.init.call(this)}t.exports=c,t.exports.once=function(e,t){return new Promise((function(r,n){function i(){void 0!==o&&e.removeListener("error",o),r([].slice.call(arguments))}var o;"error"!==t&&(o=function(r){e.removeListener(t,i),n(r)},e.once("error",o)),e.once(t,i)}))},c.EventEmitter=c,c.prototype._events=void 0,c.prototype._eventsCount=0,c.prototype._maxListeners=void 0;var u=10;function l(e){if("function"!=typeof e)throw new TypeError('The "listener" argument must be of type Function. Received type '+(0,s.default)(e))}function p(e){return void 0===e._maxListeners?c.defaultMaxListeners:e._maxListeners}function d(e,t,r,n){var i,o,a,s;if(l(r),void 0===(o=e._events)?(o=e._events=Object.create(null),e._eventsCount=0):(void 0!==o.newListener&&(e.emit("newListener",t,r.listener?r.listener:r),o=e._events),a=o[t]),void 0===a)a=o[t]=r,++e._eventsCount;else if("function"==typeof a?a=o[t]=n?[r,a]:[a,r]:n?a.unshift(r):a.push(r),(i=p(e))>0&&a.length>i&&!a.warned){a.warned=!0;var c=new Error("Possible EventEmitter memory leak detected. "+a.length+" "+String(t)+" listeners added. Use emitter.setMaxListeners() to increase limit");c.name="MaxListenersExceededWarning",c.emitter=e,c.type=t,c.count=a.length,s=c,console&&console.warn&&console.warn(s)}return e}function f(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0===arguments.length?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function h(e,t,r){var n={fired:!1,wrapFn:void 0,target:e,type:t,listener:r},i=f.bind(n);return i.listener=r,n.wrapFn=i,i}function v(e,t,r){var n=e._events;if(void 0===n)return[];var i=n[t];return void 0===i?[]:"function"==typeof i?r?[i.listener||i]:[i]:r?function(e){for(var t=new Array(e.length),r=0;r0&&(a=t[0]),a instanceof Error)throw a;var s=new Error("Unhandled error."+(a?" ("+a.message+")":""));throw s.context=a,s}var c=i[e];if(void 0===c)return!1;if("function"==typeof c)o(c,this,t);else{var u=c.length,l=_(c,u);for(r=0;r=0;o--)if(r[o]===t||r[o].listener===t){a=r[o].listener,i=o;break}if(i<0)return this;0===i?r.shift():function(e,t){for(;t+1=0;n--)this.removeListener(e,t[n]);return this},c.prototype.listeners=function(e){return v(this,e,!0)},c.prototype.rawListeners=function(e){return v(this,e,!1)},c.listenerCount=function(e,t){return"function"==typeof e.listenerCount?e.listenerCount(t):m.call(e,t)},c.prototype.listenerCount=m,c.prototype.eventNames=function(){return this._eventsCount>0?n(this._events):[]}},{}],37:[function(e,t,r){r.read=function(e,t,r,n,i){var o,a,s=8*i-n-1,c=(1<>1,l=-7,p=r?i-1:0,d=r?-1:1,f=e[t+p];for(p+=d,o=f&(1<<-l)-1,f>>=-l,l+=s;l>0;o=256*o+e[t+p],p+=d,l-=8);for(a=o&(1<<-l)-1,o>>=-l,l+=n;l>0;a=256*a+e[t+p],p+=d,l-=8);if(0===o)o=1-u;else{if(o===c)return a?NaN:1/0*(f?-1:1);a+=Math.pow(2,n),o-=u}return(f?-1:1)*a*Math.pow(2,o-n)},r.write=function(e,t,r,n,i,o){var a,s,c,u=8*o-i-1,l=(1<>1,d=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,f=n?0:o-1,h=n?1:-1,v=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(s=isNaN(t)?1:0,a=l):(a=Math.floor(Math.log(t)/Math.LN2),t*(c=Math.pow(2,-a))<1&&(a--,c*=2),(t+=a+p>=1?d/c:d*Math.pow(2,1-p))*c>=2&&(a++,c/=2),a+p>=l?(s=0,a=l):a+p>=1?(s=(t*c-1)*Math.pow(2,i),a+=p):(s=t*Math.pow(2,p-1)*Math.pow(2,i),a=0));i>=8;e[r+f]=255&s,f+=h,s/=256,i-=8);for(a=a<0;e[r+f]=255&a,f+=h,a/=256,u-=8);e[r+f-h]|=128*v}},{}],38:[function(e,t,r){"function"==typeof Object.create?t.exports=function(e,t){t&&(e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}))}:t.exports=function(e,t){if(t){e.super_=t;var r=function(){};r.prototype=t.prototype,e.prototype=new r,e.prototype.constructor=e}}},{}],39:[function(e,t,r){var n,i,o=t.exports={};function a(){throw new Error("setTimeout has not been defined")}function s(){throw new Error("clearTimeout has not been defined")}function c(e){if(n===setTimeout)return setTimeout(e,0);if((n===a||!n)&&setTimeout)return n=setTimeout,setTimeout(e,0);try{return n(e,0)}catch(t){try{return n.call(null,e,0)}catch(t){return n.call(this,e,0)}}}!function(){try{n="function"==typeof setTimeout?setTimeout:a}catch(e){n=a}try{i="function"==typeof clearTimeout?clearTimeout:s}catch(e){i=s}}();var u,l=[],p=!1,d=-1;function f(){p&&u&&(p=!1,u.length?l=u.concat(l):d=-1,l.length&&h())}function h(){if(!p){var e=c(f);p=!0;for(var t=l.length;t;){for(u=l,l=[];++d1)for(var r=1;r2?"one of ".concat(t," ").concat(e.slice(0,r-1).join(", "),", or ")+e[r-1]:2===r?"one of ".concat(t," ").concat(e[0]," or ").concat(e[1]):"of ".concat(t," ").concat(e[0])}return"of ".concat(t," ").concat(String(e))}i("ERR_INVALID_OPT_VALUE",(function(e,t){return'The value "'+t+'" is invalid for option "'+e+'"'}),TypeError),i("ERR_INVALID_ARG_TYPE",(function(e,t,r){var n,i,a,c;if("string"==typeof t&&(i="not ",t.substr(!a||a<0?0:+a,i.length)===i)?(n="must not be",t=t.replace(/^not /,"")):n="must be",function(e,t,r){return(void 0===r||r>e.length)&&(r=e.length),e.substring(r-t.length,r)===t}(e," argument"))c="The ".concat(e," ").concat(n," ").concat(o(t,"type"));else{var u=function(e,t,r){return"number"!=typeof r&&(r=0),!(r+t.length>e.length)&&-1!==e.indexOf(t,r)}(e,".")?"property":"argument";c='The "'.concat(e,'" ').concat(u," ").concat(n," ").concat(o(t,"type"))}return c+=". Received type ".concat((0,s.default)(r))}),TypeError),i("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF"),i("ERR_METHOD_NOT_IMPLEMENTED",(function(e){return"The "+e+" method is not implemented"})),i("ERR_STREAM_PREMATURE_CLOSE","Premature close"),i("ERR_STREAM_DESTROYED",(function(e){return"Cannot call "+e+" after a stream was destroyed"})),i("ERR_MULTIPLE_CALLBACK","Callback called multiple times"),i("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable"),i("ERR_STREAM_WRITE_AFTER_END","write after end"),i("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError),i("ERR_UNKNOWN_ENCODING",(function(e){return"Unknown encoding: "+e}),TypeError),i("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event"),t.exports.codes=n},{}],43:[function(e,t,r){(function(r){(function(){var n=Object.keys||function(e){var t=[];for(var r in e)t.push(r);return t};t.exports=u;var i=e("./_stream_readable"),o=e("./_stream_writable");e("inherits")(u,i);for(var a=n(o.prototype),s=0;s0)if("string"==typeof t||s.objectMode||Object.getPrototypeOf(t)===c.prototype||(t=function(e){return c.from(e)}(t)),n)s.endEmitted?b(e,new E):O(e,s,t,!0);else if(s.ended)b(e,new g);else{if(s.destroyed)return!1;s.reading=!1,s.decoder&&!r?(t=s.decoder.write(t),s.objectMode||0!==t.length?O(e,s,t,!1):x(e,s)):O(e,s,t,!1)}else n||(s.reading=!1,x(e,s));return!s.ended&&(s.lengtht.highWaterMark&&(t.highWaterMark=function(e){return e>=w?e=w:(e--,e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e++),e}(e)),e<=t.length?e:t.ended?t.length:(t.needReadable=!0,0))}function P(e){var t=e._readableState;o("emitReadable",t.needReadable,t.emittedReadable),t.needReadable=!1,t.emittedReadable||(o("emitReadable",t.flowing),t.emittedReadable=!0,r.nextTick(N,e))}function N(e){var t=e._readableState;o("emitReadable_",t.destroyed,t.length,t.ended),t.destroyed||!t.length&&!t.ended||(e.emit("readable"),t.emittedReadable=!1),t.needReadable=!t.flowing&&!t.ended&&t.length<=t.highWaterMark,B(e)}function x(e,t){t.readingMore||(t.readingMore=!0,r.nextTick(L,e,t))}function L(e,t){for(;!t.reading&&!t.ended&&(t.length0,t.resumeScheduled&&!t.paused?t.flowing=!0:e.listenerCount("data")>0&&e.resume()}function D(e){o("readable nexttick read 0"),e.read(0)}function M(e,t){o("resume",t.reading),t.reading||e.read(0),t.resumeScheduled=!1,e.emit("resume"),B(e),t.flowing&&!t.reading&&e.read(0)}function B(e){var t=e._readableState;for(o("flow",t.flowing);t.flowing&&null!==e.read(););}function H(e,t){return 0===t.length?null:(t.objectMode?r=t.buffer.shift():!e||e>=t.length?(r=t.decoder?t.buffer.join(""):1===t.buffer.length?t.buffer.first():t.buffer.concat(t.length),t.buffer.clear()):r=t.buffer.consume(e,t.decoder),r);var r}function j(e){var t=e._readableState;o("endReadable",t.endEmitted),t.endEmitted||(t.ended=!0,r.nextTick(V,t,e))}function V(e,t){if(o("endReadableNT",e.endEmitted,e.length),!e.endEmitted&&0===e.length&&(e.endEmitted=!0,t.readable=!1,t.emit("end"),e.autoDestroy)){var r=t._writableState;(!r||r.autoDestroy&&r.finished)&&t.destroy()}}function U(e,t){for(var r=0,n=e.length;r=t.highWaterMark:t.length>0)||t.ended))return o("read: emitReadable",t.length,t.ended),0===t.length&&t.ended?j(this):P(this),null;if(0===(e=R(e,t))&&t.ended)return 0===t.length&&j(this),null;var n,i=t.needReadable;return o("need readable",i),(0===t.length||t.length-e0?H(e,t):null)?(t.needReadable=t.length<=t.highWaterMark,e=0):(t.length-=e,t.awaitDrain=0),0===t.length&&(t.ended||(t.needReadable=!0),r!==e&&t.ended&&j(this)),null!==n&&this.emit("data",n),n},C.prototype._read=function(e){b(this,new y("_read()"))},C.prototype.pipe=function(e,t){var n=this,i=this._readableState;switch(i.pipesCount){case 0:i.pipes=e;break;case 1:i.pipes=[i.pipes,e];break;default:i.pipes.push(e)}i.pipesCount+=1,o("pipe count=%d opts=%j",i.pipesCount,t);var s=t&&!1===t.end||e===r.stdout||e===r.stderr?m:u;function c(t,r){o("onunpipe"),t===n&&r&&!1===r.hasUnpiped&&(r.hasUnpiped=!0,o("cleanup"),e.removeListener("close",h),e.removeListener("finish",v),e.removeListener("drain",l),e.removeListener("error",f),e.removeListener("unpipe",c),n.removeListener("end",u),n.removeListener("end",m),n.removeListener("data",d),p=!0,!i.awaitDrain||e._writableState&&!e._writableState.needDrain||l())}function u(){o("onend"),e.end()}i.endEmitted?r.nextTick(s):n.once("end",s),e.on("unpipe",c);var l=function(e){return function(){var t=e._readableState;o("pipeOnDrain",t.awaitDrain),t.awaitDrain&&t.awaitDrain--,0===t.awaitDrain&&a(e,"data")&&(t.flowing=!0,B(e))}}(n);e.on("drain",l);var p=!1;function d(t){o("ondata");var r=e.write(t);o("dest.write",r),!1===r&&((1===i.pipesCount&&i.pipes===e||i.pipesCount>1&&-1!==U(i.pipes,e))&&!p&&(o("false write response, pause",i.awaitDrain),i.awaitDrain++),n.pause())}function f(t){o("onerror",t),m(),e.removeListener("error",f),0===a(e,"error")&&b(e,t)}function h(){e.removeListener("finish",v),m()}function v(){o("onfinish"),e.removeListener("close",h),m()}function m(){o("unpipe"),n.unpipe(e)}return n.on("data",d),function(e,t,r){if("function"==typeof e.prependListener)return e.prependListener(t,r);e._events&&e._events[t]?Array.isArray(e._events[t])?e._events[t].unshift(r):e._events[t]=[r,e._events[t]]:e.on(t,r)}(e,"error",f),e.once("close",h),e.once("finish",v),e.emit("pipe",n),i.flowing||(o("pipe resume"),n.resume()),e},C.prototype.unpipe=function(e){var t=this._readableState,r={hasUnpiped:!1};if(0===t.pipesCount)return this;if(1===t.pipesCount)return e&&e!==t.pipes||(e||(e=t.pipes),t.pipes=null,t.pipesCount=0,t.flowing=!1,e&&e.emit("unpipe",this,r)),this;if(!e){var n=t.pipes,i=t.pipesCount;t.pipes=null,t.pipesCount=0,t.flowing=!1;for(var o=0;o0,!1!==i.flowing&&this.resume()):"readable"===e&&(i.endEmitted||i.readableListening||(i.readableListening=i.needReadable=!0,i.flowing=!1,i.emittedReadable=!1,o("on readable",i.length,i.reading),i.length?P(this):i.reading||r.nextTick(D,this))),n},C.prototype.addListener=C.prototype.on,C.prototype.removeListener=function(e,t){var n=s.prototype.removeListener.call(this,e,t);return"readable"===e&&r.nextTick(k,this),n},C.prototype.removeAllListeners=function(e){var t=s.prototype.removeAllListeners.apply(this,arguments);return"readable"!==e&&void 0!==e||r.nextTick(k,this),t},C.prototype.resume=function(){var e=this._readableState;return e.flowing||(o("resume"),e.flowing=!e.readableListening,function(e,t){t.resumeScheduled||(t.resumeScheduled=!0,r.nextTick(M,e,t))}(this,e)),e.paused=!1,this},C.prototype.pause=function(){return o("call pause flowing=%j",this._readableState.flowing),!1!==this._readableState.flowing&&(o("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this},C.prototype.wrap=function(e){var t=this,r=this._readableState,n=!1;for(var i in e.on("end",(function(){if(o("wrapped end"),r.decoder&&!r.ended){var e=r.decoder.end();e&&e.length&&t.push(e)}t.push(null)})),e.on("data",(function(i){o("wrapped data"),r.decoder&&(i=r.decoder.write(i)),r.objectMode&&null==i||(r.objectMode||i&&i.length)&&(t.push(i)||(n=!0,e.pause()))})),e)void 0===this[i]&&"function"==typeof e[i]&&(this[i]=function(t){return function(){return e[t].apply(e,arguments)}}(i));for(var a=0;a-1))throw new E(e);return this._writableState.defaultEncoding=e,this},Object.defineProperty(C.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(C.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),C.prototype._write=function(e,t,r){r(new v("_write()"))},C.prototype._writev=null,C.prototype.end=function(e,t,n){var i=this._writableState;return"function"==typeof e?(n=e,e=null,t=null):"function"==typeof t&&(n=t,t=null),null!=e&&this.write(e,t),i.corked&&(i.corked=1,this.uncork()),i.ending||function(e,t,n){t.ending=!0,N(e,t),n&&(t.finished?r.nextTick(n):e.once("finish",n)),t.ended=!0,e.writable=!1}(this,i,n),this},Object.defineProperty(C.prototype,"writableLength",{enumerable:!1,get:function(){return this._writableState.length}}),Object.defineProperty(C.prototype,"destroyed",{enumerable:!1,get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(e){this._writableState&&(this._writableState.destroyed=e)}}),C.prototype.destroy=p.destroy,C.prototype._undestroy=p.undestroy,C.prototype._destroy=function(e,t){t(e)}}).call(this)}).call(this,e("_process"),void 0!==r.g?r.g:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"../errors":42,"./_stream_duplex":43,"./internal/streams/destroy":50,"./internal/streams/state":54,"./internal/streams/stream":55,_process:39,buffer:35,inherits:38,"util-deprecate":57}],48:[function(e,t,r){(function(r){(function(){var n;function i(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var o=e("./end-of-stream"),a=Symbol("lastResolve"),s=Symbol("lastReject"),c=Symbol("error"),u=Symbol("ended"),l=Symbol("lastPromise"),p=Symbol("handlePromise"),d=Symbol("stream");function f(e,t){return{value:e,done:t}}function h(e){var t=e[a];if(null!==t){var r=e[d].read();null!==r&&(e[l]=null,e[a]=null,e[s]=null,t(f(r,!1)))}}function v(e){r.nextTick(h,e)}var m=Object.getPrototypeOf((function(){})),_=Object.setPrototypeOf((i(n={get stream(){return this[d]},next:function(){var e=this,t=this[c];if(null!==t)return Promise.reject(t);if(this[u])return Promise.resolve(f(void 0,!0));if(this[d].destroyed)return new Promise((function(t,n){r.nextTick((function(){e[c]?n(e[c]):t(f(void 0,!0))}))}));var n,i=this[l];if(i)n=new Promise(function(e,t){return function(r,n){e.then((function(){t[u]?r(f(void 0,!0)):t[p](r,n)}),n)}}(i,this));else{var o=this[d].read();if(null!==o)return Promise.resolve(f(o,!1));n=new Promise(this[p])}return this[l]=n,n}},Symbol.asyncIterator,(function(){return this})),i(n,"return",(function(){var e=this;return new Promise((function(t,r){e[d].destroy(null,(function(e){e?r(e):t(f(void 0,!0))}))}))})),n),m);t.exports=function(e){var t,r=Object.create(_,(i(t={},d,{value:e,writable:!0}),i(t,a,{value:null,writable:!0}),i(t,s,{value:null,writable:!0}),i(t,c,{value:null,writable:!0}),i(t,u,{value:e._readableState.endEmitted,writable:!0}),i(t,p,{value:function(e,t){var n=r[d].read();n?(r[l]=null,r[a]=null,r[s]=null,e(f(n,!1))):(r[a]=e,r[s]=t)},writable:!0}),t));return r[l]=null,o(e,(function(e){if(e&&"ERR_STREAM_PREMATURE_CLOSE"!==e.code){var t=r[s];return null!==t&&(r[l]=null,r[a]=null,r[s]=null,t(e)),void(r[c]=e)}var n=r[a];null!==n&&(r[l]=null,r[a]=null,r[s]=null,n(f(void 0,!0))),r[u]=!0})),e.on("readable",v.bind(null,r)),r}}).call(this)}).call(this,e("_process"))},{"./end-of-stream":51,_process:39}],49:[function(e,t,r){function n(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){for(var r=0;r0?this.tail.next=t:this.head=t,this.tail=t,++this.length}},{key:"unshift",value:function(e){var t={data:e,next:this.head};0===this.length&&(this.tail=t),this.head=t,++this.length}},{key:"shift",value:function(){if(0!==this.length){var e=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,e}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(e){if(0===this.length)return"";for(var t=this.head,r=""+t.data;t=t.next;)r+=e+t.data;return r}},{key:"concat",value:function(e){if(0===this.length)return a.alloc(0);for(var t,r,n,i=a.allocUnsafe(e>>>0),o=this.head,s=0;o;)t=o.data,r=i,n=s,a.prototype.copy.call(t,r,n),s+=o.data.length,o=o.next;return i}},{key:"consume",value:function(e,t){var r;return ei.length?i.length:e;if(o===i.length?n+=i:n+=i.slice(0,e),0==(e-=o)){o===i.length?(++r,t.next?this.head=t.next:this.head=this.tail=null):(this.head=t,t.data=i.slice(o));break}++r}return this.length-=r,n}},{key:"_getBuffer",value:function(e){var t=a.allocUnsafe(e),r=this.head,n=1;for(r.data.copy(t),e-=r.data.length;r=r.next;){var i=r.data,o=e>i.length?i.length:e;if(i.copy(t,t.length-e,0,o),0==(e-=o)){o===i.length?(++n,r.next?this.head=r.next:this.head=this.tail=null):(this.head=r,r.data=i.slice(o));break}++n}return this.length-=n,t}},{key:c,value:function(e,t){return s(this,function(e){for(var t=1;t0,(function(e){l||(l=e),e&&d.forEach(c),o||(d.forEach(c),p(l))}))}));return r.reduce(u)}},{"../../../errors":42,"./end-of-stream":51}],54:[function(e,t,r){var n=e("../../../errors").codes.ERR_INVALID_OPT_VALUE;t.exports={getHighWaterMark:function(e,t,r,i){var o=function(e,t,r){return null!=e.highWaterMark?e.highWaterMark:t?e[r]:null}(t,i,r);if(null!=o){if(!isFinite(o)||Math.floor(o)!==o||o<0)throw new n(i?r:"highWaterMark",o);return Math.floor(o)}return e.objectMode?16:16384}}},{"../../../errors":42}],55:[function(e,t,r){t.exports=e("events").EventEmitter},{events:36}],56:[function(e,t,r){var n=e("safe-buffer").Buffer,i=n.isEncoding||function(e){switch((e=""+e)&&e.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function o(e){var t;switch(this.encoding=function(e){var t=function(e){if(!e)return"utf8";for(var t;;)switch(e){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return e;default:if(t)return;e=(""+e).toLowerCase(),t=!0}}(e);if("string"!=typeof t&&(n.isEncoding===i||!i(e)))throw new Error("Unknown encoding: "+e);return t||e}(e),this.encoding){case"utf16le":this.text=c,this.end=u,t=4;break;case"utf8":this.fillLast=s,t=4;break;case"base64":this.text=l,this.end=p,t=3;break;default:return this.write=d,void(this.end=f)}this.lastNeed=0,this.lastTotal=0,this.lastChar=n.allocUnsafe(t)}function a(e){return e<=127?0:e>>5==6?2:e>>4==14?3:e>>3==30?4:e>>6==2?-1:-2}function s(e){var t=this.lastTotal-this.lastNeed,r=function(e,t,r){if(128!=(192&t[0]))return e.lastNeed=0,"\ufffd";if(e.lastNeed>1&&t.length>1){if(128!=(192&t[1]))return e.lastNeed=1,"\ufffd";if(e.lastNeed>2&&t.length>2&&128!=(192&t[2]))return e.lastNeed=2,"\ufffd"}}(this,e);return void 0!==r?r:this.lastNeed<=e.length?(e.copy(this.lastChar,t,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(e.copy(this.lastChar,t,0,e.length),void(this.lastNeed-=e.length))}function c(e,t){if((e.length-t)%2==0){var r=e.toString("utf16le",t);if(r){var n=r.charCodeAt(r.length-1);if(n>=55296&&n<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1],r.slice(0,-1)}return r}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=e[e.length-1],e.toString("utf16le",t,e.length-1)}function u(e){var t=e&&e.length?this.write(e):"";if(this.lastNeed){var r=this.lastTotal-this.lastNeed;return t+this.lastChar.toString("utf16le",0,r)}return t}function l(e,t){var r=(e.length-t)%3;return 0===r?e.toString("base64",t):(this.lastNeed=3-r,this.lastTotal=3,1===r?this.lastChar[0]=e[e.length-1]:(this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1]),e.toString("base64",t,e.length-r))}function p(e){var t=e&&e.length?this.write(e):"";return this.lastNeed?t+this.lastChar.toString("base64",0,3-this.lastNeed):t}function d(e){return e.toString(this.encoding)}function f(e){return e&&e.length?this.write(e):""}r.StringDecoder=o,o.prototype.write=function(e){if(0===e.length)return"";var t,r;if(this.lastNeed){if(void 0===(t=this.fillLast(e)))return"";r=this.lastNeed,this.lastNeed=0}else r=0;return r=0?(i>0&&(e.lastNeed=i-1),i):--n=0?(i>0&&(e.lastNeed=i-2),i):--n=0?(i>0&&(2===i?i=0:e.lastNeed=i-3),i):0}(this,e,t);if(!this.lastNeed)return e.toString("utf8",t);this.lastTotal=r;var n=e.length-(r-this.lastNeed);return e.copy(this.lastChar,0,n),e.toString("utf8",t,n)},o.prototype.fillLast=function(e){if(this.lastNeed<=e.length)return e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,e.length),this.lastNeed-=e.length}},{"safe-buffer":40}],57:[function(e,t,n){(function(e){(function(){function r(t){try{if(!e.localStorage)return!1}catch(e){return!1}var r=e.localStorage[t];return null!=r&&"true"===String(r).toLowerCase()}t.exports=function(e,t){if(r("noDeprecation"))return e;var n=!1;return function(){if(!n){if(r("throwDeprecation"))throw new Error(t);r("traceDeprecation")?console.trace(t):console.warn(t),n=!0}return e.apply(this,arguments)}}}).call(this)}).call(this,void 0!==r.g?r.g:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],58:[function(e,t,r){Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"v1",{enumerable:!0,get:function(){return n.default}}),Object.defineProperty(r,"v3",{enumerable:!0,get:function(){return i.default}}),Object.defineProperty(r,"v4",{enumerable:!0,get:function(){return o.default}}),Object.defineProperty(r,"v5",{enumerable:!0,get:function(){return a.default}}),Object.defineProperty(r,"NIL",{enumerable:!0,get:function(){return s.default}}),Object.defineProperty(r,"version",{enumerable:!0,get:function(){return c.default}}),Object.defineProperty(r,"validate",{enumerable:!0,get:function(){return u.default}}),Object.defineProperty(r,"stringify",{enumerable:!0,get:function(){return l.default}}),Object.defineProperty(r,"parse",{enumerable:!0,get:function(){return p.default}});var n=d(e("./v1.js")),i=d(e("./v3.js")),o=d(e("./v4.js")),a=d(e("./v5.js")),s=d(e("./nil.js")),c=d(e("./version.js")),u=d(e("./validate.js")),l=d(e("./stringify.js")),p=d(e("./parse.js"));function d(e){return e&&e.__esModule?e:{default:e}}},{"./nil.js":60,"./parse.js":61,"./stringify.js":65,"./v1.js":66,"./v3.js":67,"./v4.js":69,"./v5.js":70,"./validate.js":71,"./version.js":72}],59:[function(e,t,r){function n(e){return 14+(e+64>>>9<<4)+1}function i(e,t){var r=(65535&e)+(65535&t);return(e>>16)+(t>>16)+(r>>16)<<16|65535&r}function o(e,t,r,n,o,a){return i((s=i(i(t,e),i(n,a)))<<(c=o)|s>>>32-c,r);var s,c}function a(e,t,r,n,i,a,s){return o(t&r|~t&n,e,t,i,a,s)}function s(e,t,r,n,i,a,s){return o(t&n|r&~n,e,t,i,a,s)}function c(e,t,r,n,i,a,s){return o(t^r^n,e,t,i,a,s)}function u(e,t,r,n,i,a,s){return o(r^(t|~n),e,t,i,a,s)}Object.defineProperty(r,"__esModule",{value:!0}),r.default=void 0;var l=function(e){if("string"==typeof e){var t=unescape(encodeURIComponent(e));e=new Uint8Array(t.length);for(var r=0;r>5]>>>i%32&255,a=parseInt(n.charAt(o>>>4&15)+n.charAt(15&o),16);t.push(a)}return t}(function(e,t){e[t>>5]|=128<>5]|=(255&e[i/8])<>>24,r[1]=t>>>16&255,r[2]=t>>>8&255,r[3]=255&t,r[4]=(t=parseInt(e.slice(9,13),16))>>>8,r[5]=255&t,r[6]=(t=parseInt(e.slice(14,18),16))>>>8,r[7]=255&t,r[8]=(t=parseInt(e.slice(19,23),16))>>>8,r[9]=255&t,r[10]=(t=parseInt(e.slice(24,36),16))/1099511627776&255,r[11]=t/4294967296&255,r[12]=t>>>24&255,r[13]=t>>>16&255,r[14]=t>>>8&255,r[15]=255&t,r};r.default=o},{"./validate.js":71}],62:[function(e,t,r){Object.defineProperty(r,"__esModule",{value:!0}),r.default=void 0,r.default=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i},{}],63:[function(e,t,r){var n;Object.defineProperty(r,"__esModule",{value:!0}),r.default=function(){if(!n&&!(n="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||"undefined"!=typeof msCrypto&&"function"==typeof msCrypto.getRandomValues&&msCrypto.getRandomValues.bind(msCrypto)))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return n(i)};var i=new Uint8Array(16)},{}],64:[function(e,t,r){function n(e,t,r,n){switch(e){case 0:return t&r^~t&n;case 1:case 3:return t^r^n;case 2:return t&r^t&n^r&n}}function i(e,t){return e<>>32-t}Object.defineProperty(r,"__esModule",{value:!0}),r.default=void 0;var o=function(e){var t=[1518500249,1859775393,2400959708,3395469782],r=[1732584193,4023233417,2562383102,271733878,3285377520];if("string"==typeof e){var o=unescape(encodeURIComponent(e));e=[];for(var a=0;a>>0;E=y,y=g,g=i(T,30)>>>0,T=_,_=S}r[0]=r[0]+_>>>0,r[1]=r[1]+T>>>0,r[2]=r[2]+g>>>0,r[3]=r[3]+y>>>0,r[4]=r[4]+E>>>0}return[r[0]>>24&255,r[0]>>16&255,r[0]>>8&255,255&r[0],r[1]>>24&255,r[1]>>16&255,r[1]>>8&255,255&r[1],r[2]>>24&255,r[2]>>16&255,r[2]>>8&255,255&r[2],r[3]>>24&255,r[3]>>16&255,r[3]>>8&255,255&r[3],r[4]>>24&255,r[4]>>16&255,r[4]>>8&255,255&r[4]]};r.default=o},{}],65:[function(e,t,r){Object.defineProperty(r,"__esModule",{value:!0}),r.default=void 0;for(var n,i=(n=e("./validate.js"))&&n.__esModule?n:{default:n},o=[],a=0;a<256;++a)o.push((a+256).toString(16).substr(1));var s=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,r=(o[e[t+0]]+o[e[t+1]]+o[e[t+2]]+o[e[t+3]]+"-"+o[e[t+4]]+o[e[t+5]]+"-"+o[e[t+6]]+o[e[t+7]]+"-"+o[e[t+8]]+o[e[t+9]]+"-"+o[e[t+10]]+o[e[t+11]]+o[e[t+12]]+o[e[t+13]]+o[e[t+14]]+o[e[t+15]]).toLowerCase();if(!(0,i.default)(r))throw TypeError("Stringified UUID is invalid");return r};r.default=s},{"./validate.js":71}],66:[function(e,t,r){Object.defineProperty(r,"__esModule",{value:!0}),r.default=void 0;var n,i,o=s(e("./rng.js")),a=s(e("./stringify.js"));function s(e){return e&&e.__esModule?e:{default:e}}var c=0,u=0,l=function(e,t,r){var s=t&&r||0,l=t||new Array(16),p=(e=e||{}).node||n,d=void 0!==e.clockseq?e.clockseq:i;if(null==p||null==d){var f=e.random||(e.rng||o.default)();null==p&&(p=n=[1|f[0],f[1],f[2],f[3],f[4],f[5]]),null==d&&(d=i=16383&(f[6]<<8|f[7]))}var h=void 0!==e.msecs?e.msecs:Date.now(),v=void 0!==e.nsecs?e.nsecs:u+1,m=h-c+(v-u)/1e4;if(m<0&&void 0===e.clockseq&&(d=d+1&16383),(m<0||h>c)&&void 0===e.nsecs&&(v=0),v>=1e4)throw new Error("uuid.v1(): Can't create more than 10M uuids/sec");c=h,u=v,i=d;var _=(1e4*(268435455&(h+=122192928e5))+v)%4294967296;l[s++]=_>>>24&255,l[s++]=_>>>16&255,l[s++]=_>>>8&255,l[s++]=255&_;var T=h/4294967296*1e4&268435455;l[s++]=T>>>8&255,l[s++]=255&T,l[s++]=T>>>24&15|16,l[s++]=T>>>16&255,l[s++]=d>>>8|128,l[s++]=255&d;for(var g=0;g<6;++g)l[s+g]=p[g];return t||(0,a.default)(l)};r.default=l},{"./rng.js":63,"./stringify.js":65}],67:[function(e,t,r){Object.defineProperty(r,"__esModule",{value:!0}),r.default=void 0;var n=o(e("./v35.js")),i=o(e("./md5.js"));function o(e){return e&&e.__esModule?e:{default:e}}var a=(0,n.default)("v3",48,i.default);r.default=a},{"./md5.js":59,"./v35.js":68}],68:[function(e,t,r){Object.defineProperty(r,"__esModule",{value:!0}),r.default=function(e,t,r){function o(e,o,a,s){if("string"==typeof e&&(e=function(e){e=unescape(encodeURIComponent(e));for(var t=[],r=0;rv)throw new RangeError('The value "'+e+'" is invalid for option "size"');var t=new Uint8Array(e);return Object.setPrototypeOf(t,_.prototype),t}function _(e,t,r){if("number"==typeof e){if("string"==typeof t)throw new TypeError('The "string" argument must be of type string. Received type number');return y(e)}return T(e,t,r)}function T(e,t,r){if("string"==typeof e)return function(e,t){"string"==typeof t&&""!==t||(t="utf8");if(!_.isEncoding(t))throw new TypeError("Unknown encoding: "+t);var r=0|S(e,t),n=m(r),i=n.write(e,t);i!==r&&(n=n.slice(0,i));return n}(e,t);if(ArrayBuffer.isView(e))return function(e){if(ie(e,Uint8Array)){var t=new Uint8Array(e);return b(t.buffer,t.byteOffset,t.byteLength)}return E(e)}(e);if(null==e)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+(0,l.default)(e));if(ie(e,ArrayBuffer)||e&&ie(e.buffer,ArrayBuffer))return b(e,t,r);if("undefined"!=typeof SharedArrayBuffer&&(ie(e,SharedArrayBuffer)||e&&ie(e.buffer,SharedArrayBuffer)))return b(e,t,r);if("number"==typeof e)throw new TypeError('The "value" argument must not be of type number. Received type number');var n=e.valueOf&&e.valueOf();if(null!=n&&n!==e)return _.from(n,t,r);var i=function(e){if(_.isBuffer(e)){var t=0|A(e.length),r=m(t);return 0===r.length||e.copy(r,0,0,t),r}if(void 0!==e.length)return"number"!=typeof e.length||oe(e.length)?m(0):E(e);if("Buffer"===e.type&&Array.isArray(e.data))return E(e.data)}(e);if(i)return i;if("undefined"!=typeof Symbol&&null!=Symbol.toPrimitive&&"function"==typeof e[Symbol.toPrimitive])return _.from(e[Symbol.toPrimitive]("string"),t,r);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+(0,l.default)(e))}function g(e){if("number"!=typeof e)throw new TypeError('"size" argument must be of type number');if(e<0)throw new RangeError('The value "'+e+'" is invalid for option "size"')}function y(e){return g(e),m(e<0?0:0|A(e))}function E(e){for(var t=e.length<0?0:0|A(e.length),r=m(t),n=0;n=v)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+v.toString(16)+" bytes");return 0|e}function S(e,t){if(_.isBuffer(e))return e.length;if(ArrayBuffer.isView(e)||ie(e,ArrayBuffer))return e.byteLength;if("string"!=typeof e)throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+(0,l.default)(e));var r=e.length,n=arguments.length>2&&!0===arguments[2];if(!n&&0===r)return 0;for(var i=!1;;)switch(t){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":return te(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return re(e).length;default:if(i)return n?-1:te(e).length;t=(""+t).toLowerCase(),i=!0}}function C(e,t,r){var n=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return"";if((r>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return j(this,t,r);case"utf8":case"utf-8":return D(this,t,r);case"ascii":return B(this,t,r);case"latin1":case"binary":return H(this,t,r);case"base64":return k(this,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return V(this,t,r);default:if(n)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),n=!0}}function I(e,t,r){var n=e[t];e[t]=e[r],e[r]=n}function O(e,t,r,n,i){if(0===e.length)return-1;if("string"==typeof r?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),oe(r=+r)&&(r=i?0:e.length-1),r<0&&(r=e.length+r),r>=e.length){if(i)return-1;r=e.length-1}else if(r<0){if(!i)return-1;r=0}if("string"==typeof t&&(t=_.from(t,n)),_.isBuffer(t))return 0===t.length?-1:w(e,t,r,n,i);if("number"==typeof t)return t&=255,"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(e,t,r):Uint8Array.prototype.lastIndexOf.call(e,t,r):w(e,[t],r,n,i);throw new TypeError("val must be string, number or Buffer")}function w(e,t,r,n,i){var o,a=1,s=e.length,c=t.length;if(void 0!==n&&("ucs2"===(n=String(n).toLowerCase())||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(e.length<2||t.length<2)return-1;a=2,s/=2,c/=2,r/=2}function u(e,t){return 1===a?e[t]:e.readUInt16BE(t*a)}if(i){var l=-1;for(o=r;os&&(r=s-c),o=r;o>=0;o--){for(var p=!0,d=0;di&&(n=i):n=i;var o,a=t.length;for(n>a/2&&(n=a/2),o=0;o>8,i=r%256,o.push(i),o.push(n);return o}(t,e.length-r),e,r,n)}function k(e,t,r){return 0===t&&r===e.length?d.fromByteArray(e):d.fromByteArray(e.slice(t,r))}function D(e,t,r){r=Math.min(e.length,r);for(var n=[],i=t;i239?4:o>223?3:o>191?2:1;if(i+s<=r){var c=void 0,u=void 0,l=void 0,p=void 0;switch(s){case 1:o<128&&(a=o);break;case 2:128==(192&(c=e[i+1]))&&(p=(31&o)<<6|63&c)>127&&(a=p);break;case 3:c=e[i+1],u=e[i+2],128==(192&c)&&128==(192&u)&&(p=(15&o)<<12|(63&c)<<6|63&u)>2047&&(p<55296||p>57343)&&(a=p);break;case 4:c=e[i+1],u=e[i+2],l=e[i+3],128==(192&c)&&128==(192&u)&&128==(192&l)&&(p=(15&o)<<18|(63&c)<<12|(63&u)<<6|63&l)>65535&&p<1114112&&(a=p)}}null===a?(a=65533,s=1):a>65535&&(a-=65536,n.push(a>>>10&1023|55296),a=56320|1023&a),n.push(a),i+=s}return function(e){var t=e.length;if(t<=M)return String.fromCharCode.apply(String,e);var r="",n=0;for(;nn.length?(_.isBuffer(o)||(o=_.from(o)),o.copy(n,i)):Uint8Array.prototype.set.call(n,o,i);else{if(!_.isBuffer(o))throw new TypeError('"list" argument must be an Array of Buffers');o.copy(n,i)}i+=o.length}return n},_.byteLength=S,_.prototype._isBuffer=!0,_.prototype.swap16=function(){var e=this.length;if(e%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var t=0;tr&&(e+=" ... "),""},h&&(_.prototype[h]=_.prototype.inspect),_.prototype.compare=function(e,t,r,n,i){if(ie(e,Uint8Array)&&(e=_.from(e,e.offset,e.byteLength)),!_.isBuffer(e))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+(0,l.default)(e));if(void 0===t&&(t=0),void 0===r&&(r=e?e.length:0),void 0===n&&(n=0),void 0===i&&(i=this.length),t<0||r>e.length||n<0||i>this.length)throw new RangeError("out of range index");if(n>=i&&t>=r)return 0;if(n>=i)return-1;if(t>=r)return 1;if(this===e)return 0;for(var o=(i>>>=0)-(n>>>=0),a=(r>>>=0)-(t>>>=0),s=Math.min(o,a),c=this.slice(n,i),u=e.slice(t,r),p=0;p>>=0,isFinite(r)?(r>>>=0,void 0===n&&(n="utf8")):(n=r,r=void 0)}var i=this.length-t;if((void 0===r||r>i)&&(r=i),e.length>0&&(r<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");for(var o=!1;;)switch(n){case"hex":return R(this,e,t,r);case"utf8":case"utf-8":return P(this,e,t,r);case"ascii":case"latin1":case"binary":return N(this,e,t,r);case"base64":return x(this,e,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return L(this,e,t,r);default:if(o)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),o=!0}},_.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var M=4096;function B(e,t,r){var n="";r=Math.min(e.length,r);for(var i=t;in)&&(r=n);for(var i="",o=t;or)throw new RangeError("Trying to access beyond buffer length")}function F(e,t,r,n,i,o){if(!_.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>i||te.length)throw new RangeError("Index out of range")}function z(e,t,r,n,i){J(t,n,i,e,r,7);var o=Number(t&BigInt(4294967295));e[r++]=o,o>>=8,e[r++]=o,o>>=8,e[r++]=o,o>>=8,e[r++]=o;var a=Number(t>>BigInt(32)&BigInt(4294967295));return e[r++]=a,a>>=8,e[r++]=a,a>>=8,e[r++]=a,a>>=8,e[r++]=a,r}function Y(e,t,r,n,i){J(t,n,i,e,r,7);var o=Number(t&BigInt(4294967295));e[r+7]=o,o>>=8,e[r+6]=o,o>>=8,e[r+5]=o,o>>=8,e[r+4]=o;var a=Number(t>>BigInt(32)&BigInt(4294967295));return e[r+3]=a,a>>=8,e[r+2]=a,a>>=8,e[r+1]=a,a>>=8,e[r]=a,r+8}function G(e,t,r,n,i,o){if(r+n>e.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function W(e,t,r,n,i){return t=+t,r>>>=0,i||G(e,0,r,4),f.write(e,t,r,n,23,4),r+4}function q(e,t,r,n,i){return t=+t,r>>>=0,i||G(e,0,r,8),f.write(e,t,r,n,52,8),r+8}_.prototype.slice=function(e,t){var r=this.length;(e=~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),(t=void 0===t?r:~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),t>>=0,t>>>=0,r||U(e,t,this.length);for(var n=this[e],i=1,o=0;++o>>=0,t>>>=0,r||U(e,t,this.length);for(var n=this[e+--t],i=1;t>0&&(i*=256);)n+=this[e+--t]*i;return n},_.prototype.readUint8=_.prototype.readUInt8=function(e,t){return e>>>=0,t||U(e,1,this.length),this[e]},_.prototype.readUint16LE=_.prototype.readUInt16LE=function(e,t){return e>>>=0,t||U(e,2,this.length),this[e]|this[e+1]<<8},_.prototype.readUint16BE=_.prototype.readUInt16BE=function(e,t){return e>>>=0,t||U(e,2,this.length),this[e]<<8|this[e+1]},_.prototype.readUint32LE=_.prototype.readUInt32LE=function(e,t){return e>>>=0,t||U(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},_.prototype.readUint32BE=_.prototype.readUInt32BE=function(e,t){return e>>>=0,t||U(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},_.prototype.readBigUInt64LE=se((function(e){Z(e>>>=0,"offset");var t=this[e],r=this[e+7];void 0!==t&&void 0!==r||Q(e,this.length-8);var n=t+this[++e]*Math.pow(2,8)+this[++e]*Math.pow(2,16)+this[++e]*Math.pow(2,24),i=this[++e]+this[++e]*Math.pow(2,8)+this[++e]*Math.pow(2,16)+r*Math.pow(2,24);return BigInt(n)+(BigInt(i)<>>=0,"offset");var t=this[e],r=this[e+7];void 0!==t&&void 0!==r||Q(e,this.length-8);var n=t*Math.pow(2,24)+this[++e]*Math.pow(2,16)+this[++e]*Math.pow(2,8)+this[++e],i=this[++e]*Math.pow(2,24)+this[++e]*Math.pow(2,16)+this[++e]*Math.pow(2,8)+r;return(BigInt(n)<>>=0,t>>>=0,r||U(e,t,this.length);for(var n=this[e],i=1,o=0;++o=(i*=128)&&(n-=Math.pow(2,8*t)),n},_.prototype.readIntBE=function(e,t,r){e>>>=0,t>>>=0,r||U(e,t,this.length);for(var n=t,i=1,o=this[e+--n];n>0&&(i*=256);)o+=this[e+--n]*i;return o>=(i*=128)&&(o-=Math.pow(2,8*t)),o},_.prototype.readInt8=function(e,t){return e>>>=0,t||U(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},_.prototype.readInt16LE=function(e,t){e>>>=0,t||U(e,2,this.length);var r=this[e]|this[e+1]<<8;return 32768&r?4294901760|r:r},_.prototype.readInt16BE=function(e,t){e>>>=0,t||U(e,2,this.length);var r=this[e+1]|this[e]<<8;return 32768&r?4294901760|r:r},_.prototype.readInt32LE=function(e,t){return e>>>=0,t||U(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},_.prototype.readInt32BE=function(e,t){return e>>>=0,t||U(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},_.prototype.readBigInt64LE=se((function(e){Z(e>>>=0,"offset");var t=this[e],r=this[e+7];void 0!==t&&void 0!==r||Q(e,this.length-8);var n=this[e+4]+this[e+5]*Math.pow(2,8)+this[e+6]*Math.pow(2,16)+(r<<24);return(BigInt(n)<>>=0,"offset");var t=this[e],r=this[e+7];void 0!==t&&void 0!==r||Q(e,this.length-8);var n=(t<<24)+this[++e]*Math.pow(2,16)+this[++e]*Math.pow(2,8)+this[++e];return(BigInt(n)<>>=0,t||U(e,4,this.length),f.read(this,e,!0,23,4)},_.prototype.readFloatBE=function(e,t){return e>>>=0,t||U(e,4,this.length),f.read(this,e,!1,23,4)},_.prototype.readDoubleLE=function(e,t){return e>>>=0,t||U(e,8,this.length),f.read(this,e,!0,52,8)},_.prototype.readDoubleBE=function(e,t){return e>>>=0,t||U(e,8,this.length),f.read(this,e,!1,52,8)},_.prototype.writeUintLE=_.prototype.writeUIntLE=function(e,t,r,n){(e=+e,t>>>=0,r>>>=0,n)||F(this,e,t,r,Math.pow(2,8*r)-1,0);var i=1,o=0;for(this[t]=255&e;++o>>=0,r>>>=0,n)||F(this,e,t,r,Math.pow(2,8*r)-1,0);var i=r-1,o=1;for(this[t+i]=255&e;--i>=0&&(o*=256);)this[t+i]=e/o&255;return t+r},_.prototype.writeUint8=_.prototype.writeUInt8=function(e,t,r){return e=+e,t>>>=0,r||F(this,e,t,1,255,0),this[t]=255&e,t+1},_.prototype.writeUint16LE=_.prototype.writeUInt16LE=function(e,t,r){return e=+e,t>>>=0,r||F(this,e,t,2,65535,0),this[t]=255&e,this[t+1]=e>>>8,t+2},_.prototype.writeUint16BE=_.prototype.writeUInt16BE=function(e,t,r){return e=+e,t>>>=0,r||F(this,e,t,2,65535,0),this[t]=e>>>8,this[t+1]=255&e,t+2},_.prototype.writeUint32LE=_.prototype.writeUInt32LE=function(e,t,r){return e=+e,t>>>=0,r||F(this,e,t,4,4294967295,0),this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e,t+4},_.prototype.writeUint32BE=_.prototype.writeUInt32BE=function(e,t,r){return e=+e,t>>>=0,r||F(this,e,t,4,4294967295,0),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},_.prototype.writeBigUInt64LE=se((function(e){return z(this,e,arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,BigInt(0),BigInt("0xffffffffffffffff"))})),_.prototype.writeBigUInt64BE=se((function(e){return Y(this,e,arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,BigInt(0),BigInt("0xffffffffffffffff"))})),_.prototype.writeIntLE=function(e,t,r,n){if(e=+e,t>>>=0,!n){var i=Math.pow(2,8*r-1);F(this,e,t,r,i-1,-i)}var o=0,a=1,s=0;for(this[t]=255&e;++o>>=0,!n){var i=Math.pow(2,8*r-1);F(this,e,t,r,i-1,-i)}var o=r-1,a=1,s=0;for(this[t+o]=255&e;--o>=0&&(a*=256);)e<0&&0===s&&0!==this[t+o+1]&&(s=1),this[t+o]=(e/a|0)-s&255;return t+r},_.prototype.writeInt8=function(e,t,r){return e=+e,t>>>=0,r||F(this,e,t,1,127,-128),e<0&&(e=255+e+1),this[t]=255&e,t+1},_.prototype.writeInt16LE=function(e,t,r){return e=+e,t>>>=0,r||F(this,e,t,2,32767,-32768),this[t]=255&e,this[t+1]=e>>>8,t+2},_.prototype.writeInt16BE=function(e,t,r){return e=+e,t>>>=0,r||F(this,e,t,2,32767,-32768),this[t]=e>>>8,this[t+1]=255&e,t+2},_.prototype.writeInt32LE=function(e,t,r){return e=+e,t>>>=0,r||F(this,e,t,4,2147483647,-2147483648),this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24,t+4},_.prototype.writeInt32BE=function(e,t,r){return e=+e,t>>>=0,r||F(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},_.prototype.writeBigInt64LE=se((function(e){return z(this,e,arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),_.prototype.writeBigInt64BE=se((function(e){return Y(this,e,arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),_.prototype.writeFloatLE=function(e,t,r){return W(this,e,t,!0,r)},_.prototype.writeFloatBE=function(e,t,r){return W(this,e,t,!1,r)},_.prototype.writeDoubleLE=function(e,t,r){return q(this,e,t,!0,r)},_.prototype.writeDoubleBE=function(e,t,r){return q(this,e,t,!1,r)},_.prototype.copy=function(e,t,r,n){if(!_.isBuffer(e))throw new TypeError("argument should be a Buffer");if(r||(r=0),n||0===n||(n=this.length),t>=e.length&&(t=e.length),t||(t=0),n>0&&n=this.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),e.length-t>>=0,r=void 0===r?this.length:r>>>0,e||(e=0),"number"==typeof e)for(o=t;o=n+4;r-=3)t="_".concat(e.slice(r-3,r)).concat(t);return"".concat(e.slice(0,r)).concat(t)}function J(e,t,r,n,i,o){if(e>r||e3?0===t||t===BigInt(0)?">= 0".concat(s," and < 2").concat(s," ** ").concat(8*(o+1)).concat(s):">= -(2".concat(s," ** ").concat(8*(o+1)-1).concat(s,") and < 2 ** ")+"".concat(8*(o+1)-1).concat(s):">= ".concat(t).concat(s," and <= ").concat(r).concat(s),new K.ERR_OUT_OF_RANGE("value",a,e)}!function(e,t,r){Z(t,"offset"),void 0!==e[t]&&void 0!==e[t+r]||Q(t,e.length-(r+1))}(n,i,o)}function Z(e,t){if("number"!=typeof e)throw new K.ERR_INVALID_ARG_TYPE(t,"number",e)}function Q(e,t,r){if(Math.floor(e)!==e)throw Z(e,r),new K.ERR_OUT_OF_RANGE(r||"offset","an integer",e);if(t<0)throw new K.ERR_BUFFER_OUT_OF_BOUNDS;throw new K.ERR_OUT_OF_RANGE(r||"offset",">= ".concat(r?1:0," and <= ").concat(t),e)}$("ERR_BUFFER_OUT_OF_BOUNDS",(function(e){return e?"".concat(e," is outside of buffer bounds"):"Attempt to access memory outside buffer bounds"}),RangeError),$("ERR_INVALID_ARG_TYPE",(function(e,t){return'The "'.concat(e,'" argument must be of type number. Received type ').concat((0,l.default)(t))}),TypeError),$("ERR_OUT_OF_RANGE",(function(e,t,r){var n='The value of "'.concat(e,'" is out of range.'),i=r;return Number.isInteger(r)&&Math.abs(r)>Math.pow(2,32)?i=X(String(r)):"bigint"==typeof r&&(i=String(r),(r>Math.pow(BigInt(2),BigInt(32))||r<-Math.pow(BigInt(2),BigInt(32)))&&(i=X(i)),i+="n"),n+=" It must be ".concat(t,". Received ").concat(i)}),RangeError);var ee=/[^+/0-9A-Za-z-_]/g;function te(e,t){var r;t=t||1/0;for(var n=e.length,i=null,o=[],a=0;a55295&&r<57344){if(!i){if(r>56319){(t-=3)>-1&&o.push(239,191,189);continue}if(a+1===n){(t-=3)>-1&&o.push(239,191,189);continue}i=r;continue}if(r<56320){(t-=3)>-1&&o.push(239,191,189),i=r;continue}r=65536+(i-55296<<10|r-56320)}else i&&(t-=3)>-1&&o.push(239,191,189);if(i=null,r<128){if((t-=1)<0)break;o.push(r)}else if(r<2048){if((t-=2)<0)break;o.push(r>>6|192,63&r|128)}else if(r<65536){if((t-=3)<0)break;o.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;o.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return o}function re(e){return d.toByteArray(function(e){if((e=(e=e.split("=")[0]).trim().replace(ee,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function ne(e,t,r,n){var i;for(i=0;i=t.length||i>=e.length);++i)t[i+r]=e[i];return i}function ie(e,t){return e instanceof t||null!=e&&null!=e.constructor&&null!=e.constructor.name&&e.constructor.name===t.name}function oe(e){return e!=e}var ae=function(){for(var e="0123456789abcdef",t=new Array(256),r=0;r<16;++r)for(var n=16*r,i=0;i<16;++i)t[n+i]=e[r]+e[i];return t}();function se(e){return"undefined"==typeof BigInt?ce:e}function ce(){throw new Error("BigInt not supported")}},74686:function(e,t,r){"use strict";var n=r(24994),i=n(r(17383)),o=n(r(34579)),a=n(r(32395)),s=n(r(29511)),c=n(r(28452)),u=n(r(63072));function l(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var r,n=(0,u.default)(e);if(t){var i=(0,u.default)(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return(0,c.default)(this,r)}}var p=r(45131),d=function(e){(0,s.default)(r,e);var t=l(r);function r(e){var n;return(0,i.default)(this,r),(n=t.call(this,e)).type="atrule",n}return(0,o.default)(r,[{key:"append",value:function(){var e;this.proxyOf.nodes||(this.nodes=[]);for(var t=arguments.length,n=new Array(t),i=0;i=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,s=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return a=e.done,e},e:function(e){s=!0,o=e},f:function(){try{a||null==r.return||r.return()}finally{if(s)throw o}}}}function f(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r1?t-1:0),i=1;i=e&&(this.indexes[r]=t-1);return this.markDirty(),this}},{key:"replaceValues",value:function(e,t,r){return r||(r=t,t={}),this.walkDecls((function(n){t.props&&!t.props.includes(n.prop)||t.fast&&!n.value.includes(t.fast)||(n.value=n.value.replace(e,r))})),this.markDirty(),this}},{key:"some",value:function(e){return this.nodes.some(e)}},{key:"walk",value:function(e){return this.each((function(t,r){var n;try{n=e(t,r)}catch(e){throw t.addToError(e)}return!1!==n&&t.walk&&(n=t.walk(e)),n}))}},{key:"walkAtRules",value:function(e,t){return t?e instanceof RegExp?this.walk((function(r,n){if("atrule"===r.type&&e.test(r.name))return t(r,n)})):this.walk((function(r,n){if("atrule"===r.type&&r.name===e)return t(r,n)})):(t=e,this.walk((function(e,r){if("atrule"===e.type)return t(e,r)})))}},{key:"walkComments",value:function(e){return this.walk((function(t,r){if("comment"===t.type)return e(t,r)}))}},{key:"walkDecls",value:function(e,t){return t?e instanceof RegExp?this.walk((function(r,n){if("decl"===r.type&&e.test(r.prop))return t(r,n)})):this.walk((function(r,n){if("decl"===r.type&&r.prop===e)return t(r,n)})):(t=e,this.walk((function(e,r){if("decl"===e.type)return t(e,r)})))}},{key:"walkRules",value:function(e,t){return t?e instanceof RegExp?this.walk((function(r,n){if("rule"===r.type&&e.test(r.selector))return t(r,n)})):this.walk((function(r,n){if("rule"===r.type&&r.selector===e)return t(r,n)})):(t=e,this.walk((function(e,r){if("rule"===e.type)return t(e,r)})))}},{key:"first",get:function(){if(this.proxyOf.nodes)return this.proxyOf.nodes[0]}},{key:"last",get:function(){if(this.proxyOf.nodes)return this.proxyOf.nodes[this.proxyOf.nodes.length-1]}}]),r}(r(89346));C.registerParse=function(e){h=e},C.registerRule=function(e){v=e},C.registerAtRule=function(e){m=e},C.registerRoot=function(e){_=e},e.exports=C,C.default=C,C.rebuild=function(e){"atrule"===e.type?Object.setPrototypeOf(e,m.prototype):"rule"===e.type?Object.setPrototypeOf(e,v.prototype):"decl"===e.type?Object.setPrototypeOf(e,E.prototype):"comment"===e.type?Object.setPrototypeOf(e,b.prototype):"root"===e.type&&Object.setPrototypeOf(e,_.prototype),e[y]=!0,e.nodes&&e.nodes.forEach((function(e){C.rebuild(e)}))}},55092:function(e,t,r){"use strict";var n=r(24994),i=n(r(17383)),o=n(r(34579)),a=n(r(12475)),s=n(r(29511)),c=n(r(28452)),u=n(r(63072)),l=n(r(61837));function p(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var r,n=(0,u.default)(e);if(t){var i=(0,u.default)(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return(0,c.default)(this,r)}}var d=r(48633),f=r(49746),h=function(e){(0,s.default)(r,e);var t=p(r);function r(e,n,o,s,c,u){var l;return(0,i.default)(this,r),(l=t.call(this,e)).name="CssSyntaxError",l.reason=e,c&&(l.file=c),s&&(l.source=s),u&&(l.plugin=u),void 0!==n&&void 0!==o&&("number"==typeof n?(l.line=n,l.column=o):(l.line=n.line,l.column=n.column,l.endLine=o.line,l.endColumn=o.column)),l.setMessage(),Error.captureStackTrace&&Error.captureStackTrace((0,a.default)(l),r),l}return(0,o.default)(r,[{key:"setMessage",value:function(){this.message=this.plugin?this.plugin+": ":"",this.message+=this.file?this.file:"",void 0!==this.line&&(this.message+=":"+this.line+":"+this.column),this.message+=": "+this.reason}},{key:"showSourceCode",value:function(e){var t=this;if(!this.source)return"";var r=this.source;null==e&&(e=d.isColorSupported),f&&e&&(r=f(r));var n,i,o=r.split(/\r?\n/),a=Math.max(this.line-3,0),s=Math.min(this.line+2,o.length),c=String(s).length;if(e){var u=d.createColors(!0),l=u.bold,p=u.gray,h=u.red;n=function(e){return l(h(e))},i=function(e){return p(e)}}else n=i=function(e){return e};return o.slice(a,s).map((function(e,r){var o=a+1+r,s=" "+(" "+o).slice(-c)+" | ";if(o===t.line){var u=i(s.replace(/\d/g," "))+e.slice(0,t.column-1).replace(/[^\t]/g," ");return n(">")+i(s)+e+"\n "+u+n("^")}return" "+i(s)+e})).join("\n")}},{key:"toString",value:function(){var e=this.showSourceCode();return e&&(e="\n\n"+e+"\n"),this.name+": "+this.message+e}}]),r}((0,l.default)(Error));e.exports=h,h.default=h},79628:function(e,t,r){"use strict";var n=r(24994),i=n(r(43693)),o=n(r(17383)),a=n(r(34579)),s=n(r(29511)),c=n(r(28452)),u=n(r(63072));function l(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function p(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:{};return new d(new f,this,e).stringify()}}]),r}(r(45131));h.registerLazyResult=function(e){d=e},h.registerProcessor=function(e){f=e},e.exports=h,h.default=h},1100:function(e,t,r){"use strict";var n=r(24994),i=n(r(43693)),o=n(r(91847)),a=["inputs"],s=["inputId"];function c(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function u(e){for(var t=1;t=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,s=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return a=e.done,e},e:function(e){s=!0,o=e},f:function(){try{a||null==r.return||r.return()}finally{if(s)throw o}}}}function p(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r1&&void 0!==arguments[1]?arguments[1]:{};if((0,a.default)(this,e),null==t||"object"===(0,o.default)(t)&&!t.toString)throw new Error("PostCSS received ".concat(t," instead of CSS string"));if(this.css=t.toString(),"\ufeff"===this.css[0]||"\ufffe"===this.css[0]?(this.hasBOM=!0,this.css=this.css.slice(1)):this.hasBOM=!1,r.from&&(!S||/^\w+:\/\//.test(r.from)||m(r.from)?this.file=r.from:this.file=_(r.from)),S&&A){var n=new E(this.css,r);if(n.text){this.map=n;var i=n.consumer().file;!this.file&&i&&(this.file=this.mapResolve(i))}}this.file||(this.id=""),this.map&&(this.map.file=this.from)}return(0,s.default)(e,[{key:"error",value:function(e,t,r){var n,i,a,s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if(t&&"object"===(0,o.default)(t)){var c=t,u=r;if("number"==typeof c.offset){var l=this.fromOffset(c.offset);t=l.line,r=l.col}else t=c.line,r=c.column;if("number"==typeof u.offset){var p=this.fromOffset(u.offset);i=p.line,a=p.col}else i=u.line,a=u.column}else if(!r){var d=this.fromOffset(t);t=d.line,r=d.col}var f=this.origin(t,r,i,a);return(n=f?new y(e,void 0===f.endLine?f.line:{column:f.column,line:f.line},void 0===f.endLine?f.column:{column:f.endColumn,line:f.endLine},f.source,f.file,s.plugin):new y(e,void 0===i?t:{column:r,line:t},void 0===i?r:{column:a,line:i},this.css,this.file,s.plugin)).input={column:r,endColumn:a,endLine:i,line:t,source:this.css},this.file&&(h&&(n.input.url=h(this.file).toString()),n.input.file=this.file),n}},{key:"fromOffset",value:function(e){var t;if(this[b])t=this[b];else{var r=this.css.split("\n");t=new Array(r.length);for(var n=0,i=0,o=r.length;i=t[t.length-1])a=t.length-1;else for(var s,c=t.length-2;a>1)])c=s-1;else{if(!(e>=t[s+1])){a=s;break}a=s+1}return{col:e-t[a]+1,line:a+1}}},{key:"mapResolve",value:function(e){return/^\w+:\/\//.test(e)?e:_(this.map.consumer().sourceRoot||this.map.root||".",e)}},{key:"origin",value:function(e,t,r,n){if(!this.map)return!1;var i,o,a=this.map.consumer(),s=a.originalPositionFor({column:t,line:e});if(!s.source)return!1;"number"==typeof r&&(i=a.originalPositionFor({column:n,line:r})),o=m(s.source)?h(s.source):new URL(s.source,this.map.consumer().sourceRoot||h(this.map.mapFile));var c={column:s.column,endColumn:i&&i.column,endLine:i&&i.line,line:s.line,url:o.toString()};if("file:"===o.protocol){if(!f)throw new Error("file: protocol is not available in this PostCSS build");c.file=f(o)}var u=a.sourceContentFor(s.source);return u&&(c.source=u),c}},{key:"toJSON",value:function(){for(var e={},t=0,r=["hasBOM","css","file","id"];t=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,s=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return a=e.done,e},e:function(e){s=!0,o=e},f:function(){try{a||null==r.return||r.return()}finally{if(s)throw o}}}}function d(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r0}},{key:"runAsync",value:(r=(0,a.default)(i.default.mark((function e(){var t,r,n,a,s,c,u,l,d,f,h=this;return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:this.plugin=0,t=0;case 2:if(!(t0)){e.next=37;break}if(!R(c=this.visitTick(s))){e.next=35;break}return e.prev=26,e.next=29,c;case 29:e.next=35;break;case 31:throw e.prev=31,e.t1=e.catch(26),u=s[s.length-1].node,this.handleError(e.t1,u);case 35:e.next=23;break;case 37:e.next=20;break;case 39:if(!this.listeners.OnceExit){e.next=56;break}l=p(this.listeners.OnceExit),e.prev=41,f=i.default.mark((function e(){var t,r,n,s;return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t=(0,o.default)(d.value,2),r=t[0],n=t[1],h.result.lastPlugin=r,e.prev=2,"document"!==a.type){e.next=9;break}return s=a.nodes.map((function(e){return n(e,h.helpers)})),e.next=7,Promise.all(s);case 7:e.next=11;break;case 9:return e.next=11,n(a,h.helpers);case 11:e.next=16;break;case 13:throw e.prev=13,e.t0=e.catch(2),h.handleError(e.t0);case 16:case"end":return e.stop()}}),e,null,[[2,13]])})),l.s();case 44:if((d=l.n()).done){e.next=48;break}return e.delegateYield(f(),"t2",46);case 46:e.next=44;break;case 48:e.next=53;break;case 50:e.prev=50,e.t3=e.catch(41),l.e(e.t3);case 53:return e.prev=53,l.f(),e.finish(53);case 56:return this.processed=!0,e.abrupt("return",this.stringify());case 58:case"end":return e.stop()}}),e,this,[[6,11],[26,31],[41,50,53,56]])}))),function(){return r.apply(this,arguments)})},{key:"runOnRoot",value:function(e){var t=this;this.result.lastPlugin=e;try{if("object"===(0,l.default)(e)&&e.Once){if("document"===this.result.root.type){var r=this.result.root.nodes.map((function(r){return e.Once(r,t.helpers)}));return R(r[0])?Promise.all(r):r}return e.Once(this.result.root,this.helpers)}if("function"==typeof e)return e(this.result.root,this.result)}catch(e){throw this.handleError(e)}}},{key:"stringify",value:function(){if(this.error)throw this.error;if(this.stringified)return this.result;this.stringified=!0,this.sync();var e=this.result.opts,t=g;e.syntax&&(t=e.syntax.stringify),e.stringifier&&(t=e.stringifier),t.stringify&&(t=t.stringify);var r=new T(t,this.result.root,this.result.opts).generate();return this.result.css=r[0],this.result.map=r[1],this.result}},{key:"sync",value:function(){if(this.error)throw this.error;if(this.processed)return this.result;if(this.processed=!0,this.processing)throw this.getAsyncError();var e,t=p(this.plugins);try{for(t.s();!(e=t.n()).done;){var r=e.value;if(R(this.runOnRoot(r)))throw this.getAsyncError()}}catch(e){t.e(e)}finally{t.f()}if(this.prepareVisitors(),this.hasListener){for(var n=this.result.root;!n[m];)n[m]=!0,this.walkSync(n);if(this.listeners.OnceExit)if("document"===n.type){var i,o=p(n.nodes);try{for(o.s();!(i=o.n()).done;){var a=i.value;this.visitSync(this.listeners.OnceExit,a)}}catch(e){o.e(e)}finally{o.f()}}else this.visitSync(this.listeners.OnceExit,n)}return this.result}},{key:"then",value:function(e,t){return this.async().then(e,t)}},{key:"toString",value:function(){return this.css}},{key:"visitSync",value:function(e,t){var r,n=p(e);try{for(n.s();!(r=n.n()).done;){var i=(0,o.default)(r.value,2),a=i[0],s=i[1];this.result.lastPlugin=a;var c=void 0;try{c=s(t,this.helpers)}catch(e){throw this.handleError(e,t.proxyOf)}if("root"!==t.type&&"document"!==t.type&&!t.parent)return!0;if(R(c))throw this.getAsyncError()}}catch(e){n.e(e)}finally{n.f()}}},{key:"visitTick",value:function(e){var t=e[e.length-1],r=t.node,n=t.visitors;if("root"===r.type||"document"===r.type||r.parent){if(n.length>0&&t.visitorIndex=e.length?{done:!0}:{done:!1,value:e[i++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,s=!0,c=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return s=e.done,e},e:function(e){c=!0,a=e},f:function(){try{s||null==n.return||n.return()}finally{if(c)throw a}}}}function r(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r0&&(c-=1):0===c&&r.includes(f)&&(s=!0),s?(""!==a&&o.push(a.trim()),a="",s=!1):a+=f}}catch(e){d.e(e)}finally{d.f()}return(n||""!==a)&&o.push(a.trim()),o}};e.exports=n,n.default=n},84054:function(e,t,r){"use strict";var n=r(24994),i=n(r(17383)),o=n(r(34579));function a(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=function(e,t){if(!e)return;if("string"==typeof e)return s(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return s(e,t)}(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,i=function(){};return{s:i,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return a=e.done,e},e:function(e){c=!0,o=e},f:function(){try{a||null==r.return||r.return()}finally{if(c)throw o}}}}function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r=0;t--)"comment"===(e=this.root.nodes[t]).type&&0===e.text.indexOf("# sourceMappingURL=")&&this.root.removeChild(t);else this.css&&(this.css=this.css.replace(/(\n)?\/\*#[\S\s]*?\*\/$/gm,""))}},{key:"generate",value:function(){if(this.clearAnnotation(),g&&T&&this.isMap())return this.generateMap();var e="";return this.stringify(this.root,(function(t){e+=t})),[e]}},{key:"generateMap",value:function(){if(this.root)this.generateString();else if(1===this.previous().length){var e=this.previous()[0].consumer();e.file=this.outputFile(),this.map=l.fromSourceMap(e)}else this.map=new l({file:this.outputFile()}),this.map.addMapping({generated:{column:0,line:1},original:{column:0,line:1},source:this.opts.from?this.toUrl(this.path(this.opts.from)):""});return this.isSourcesContent()&&this.setSourcesContent(),this.root&&this.previous().length>0&&this.applyPrevMaps(),this.isAnnotation()&&this.addAnnotation(),this.isInline()?[this.css]:[this.css,this.map]}},{key:"generateString",value:function(){var e=this;this.css="",this.map=new l({file:this.outputFile()});var t,r,n=1,i=1,o="",a={generated:{column:0,line:0},original:{column:0,line:0},source:""};this.stringify(this.root,(function(s,c,u){if(e.css+=s,c&&"end"!==u&&(a.generated.line=n,a.generated.column=i-1,c.source&&c.source.start?(a.source=e.sourcePath(c),a.original.line=c.source.start.line,a.original.column=c.source.start.column-1,e.map.addMapping(a)):(a.source=o,a.original.line=1,a.original.column=0,e.map.addMapping(a))),(t=s.match(/\n/g))?(n+=t.length,r=s.lastIndexOf("\n"),i=s.length-r):i+=s.length,c&&"start"!==u){var l=c.parent||{raws:{}};("decl"===c.type||"atrule"===c.type&&!c.nodes)&&c===l.last&&!l.raws.semicolon||(c.source&&c.source.end?(a.source=e.sourcePath(c),a.original.line=c.source.end.line,a.original.column=c.source.end.column-1,a.generated.line=n,a.generated.column=i-2,e.map.addMapping(a)):(a.source=o,a.original.line=1,a.original.column=0,a.generated.line=n,a.generated.column=i-1,e.map.addMapping(a)))}}))}},{key:"isAnnotation",value:function(){return!!this.isInline()||(void 0!==this.mapOpts.annotation?this.mapOpts.annotation:!this.previous().length||this.previous().some((function(e){return e.annotation})))}},{key:"isInline",value:function(){if(void 0!==this.mapOpts.inline)return this.mapOpts.inline;var e=this.mapOpts.annotation;return(void 0===e||!0===e)&&(!this.previous().length||this.previous().some((function(e){return e.inline})))}},{key:"isMap",value:function(){return void 0!==this.opts.map?!!this.opts.map:this.previous().length>0}},{key:"isSourcesContent",value:function(){return void 0!==this.mapOpts.sourcesContent?this.mapOpts.sourcesContent:!this.previous().length||this.previous().some((function(e){return e.withContent()}))}},{key:"outputFile",value:function(){return this.opts.to?this.path(this.opts.to):this.opts.from?this.path(this.opts.from):"to.css"}},{key:"path",value:function(e){if(this.mapOpts.absolute)return e;if(60===e.charCodeAt(0))return e;if(/^\w+:\/\//.test(e))return e;var t=this.memoizedPaths.get(e);if(t)return t;var r=this.opts.to?d(this.opts.to):".";"string"==typeof this.mapOpts.annotation&&(r=d(h(r,this.mapOpts.annotation)));var n=f(r,e);return this.memoizedPaths.set(e,n),n}},{key:"previous",value:function(){var e=this;if(!this.previousMaps)if(this.previousMaps=[],this.root)this.root.walk((function(t){if(t.source&&t.source.input.map){var r=t.source.input.map;e.previousMaps.includes(r)||e.previousMaps.push(r)}}));else{var t=new _(this.css,this.opts);t.map&&this.previousMaps.push(t.map)}return this.previousMaps}},{key:"setSourcesContent",value:function(){var e=this,t={};if(this.root)this.root.walk((function(r){if(r.source){var n=r.source.input.from;if(n&&!t[n]){t[n]=!0;var i=e.usesFileUrls?e.toFileUrl(n):e.toUrl(e.path(n));e.map.setSourceContent(i,r.source.input.css)}}}));else if(this.css){var r=this.opts.from?this.toUrl(this.path(this.opts.from)):"";this.map.setSourceContent(r,this.css)}}},{key:"sourcePath",value:function(e){return this.mapOpts.from?this.toUrl(this.mapOpts.from):this.usesFileUrls?this.toFileUrl(e.source.input.from):this.toUrl(this.path(e.source.input.from))}},{key:"toBase64",value:function(e){return Buffer?Buffer.from(e).toString("base64"):window.btoa(unescape(encodeURIComponent(e)))}},{key:"toFileUrl",value:function(e){var t=this.memoizedFileURLs.get(e);if(t)return t;if(m){var r=m(e).toString();return this.memoizedFileURLs.set(e,r),r}throw new Error("`map.absolute` option is not available in this PostCSS build")}},{key:"toUrl",value:function(e){var t=this.memoizedURLs.get(e);if(t)return t;"\\"===v&&(e=e.replace(/\\/g,"/"));var r=encodeURI(e).replace(/[#?]/g,encodeURIComponent);return this.memoizedURLs.set(e,r),r}}]),e}();e.exports=y},27693:function(e,t,r){"use strict";var n=r(24994),i=n(r(85715)),o=n(r(17383)),a=n(r(34579)),s=r(84054),c=r(84025),u=(r(20338),r(33207)),l=r(45391),p=function(e){function t(e,r,n){var a;(0,o.default)(this,t),r=r.toString(),this.stringified=!1,this._processor=e,this._css=r,this._opts=n,this._map=void 0;var u=c;this.result=new l(this._processor,a,this._opts),this.result.css=r;var p=this;Object.defineProperty(this.result,"root",{get:function(){return p.root}});var d=new s(u,a,this._opts,r);if(d.isMap()){var f=d.generate(),h=(0,i.default)(f,2),v=h[0],m=h[1];v&&(this.result.css=v),m&&(this.result.map=m)}}return(0,a.default)(t,[{key:"async",value:function(){return this.error?Promise.reject(this.error):Promise.resolve(this.result)}},{key:"catch",value:function(e){return this.async().catch(e)}},{key:"finally",value:function(e){return this.async().then(e,e)}},{key:"sync",value:function(){if(this.error)throw this.error;return this.result}},{key:"then",value:function(e,t){return this.async().then(e,t)}},{key:"toString",value:function(){return this._css}},{key:"warnings",value:function(){return[]}},{key:"content",get:function(){return this.result.css}},{key:"css",get:function(){return this.result.css}},{key:"map",get:function(){return this.result.map}},{key:"messages",get:function(){return[]}},{key:"opts",get:function(){return this.result.opts}},{key:"processor",get:function(){return this.result.processor}},{key:"root",get:function(){if(this._root)return this._root;var e,t=u;try{e=t(this._css,this._opts)}catch(e){this.error=e}if(this.error)throw this.error;return this._root=e,e}},{key:e,get:function(){return"NoWorkResult"}}]),t}(Symbol.toStringTag);e.exports=p,p.default=p},89346:function(e,t,r){"use strict";var n=r(24994),i=n(r(41132)),o=n(r(17383)),a=n(r(34579)),s=n(r(73738));function c(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=function(e,t){if(!e)return;if("string"==typeof e)return u(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return u(e,t)}(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,i=function(){};return{s:i,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,s=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return a=e.done,e},e:function(e){s=!0,o=e},f:function(){try{a||null==r.return||r.return()}finally{if(s)throw o}}}}function u(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r0&&void 0!==arguments[0]?arguments[0]:{};for(var r in(0,o.default)(this,e),this.raws={},this[p]=!1,this[d]=!0,t)if("nodes"===r){this.nodes=[];var n,i=c(t[r]);try{for(i.s();!(n=i.n()).done;){var a=n.value;"function"==typeof a.clone?this.append(a.clone()):this.append(a)}}catch(e){i.e(e)}finally{i.f()}}else this[r]=t[r]}return(0,a.default)(e,[{key:"addToError",value:function(e){if(e.postcssNode=this,e.stack&&this.source&&/\n\s{4}at /.test(e.stack)){var t=this.source;e.stack=e.stack.replace(/\n\s{4}at /,"$&".concat(t.input.from,":").concat(t.start.line,":").concat(t.start.column,"$&"))}return e}},{key:"after",value:function(e){return this.parent.insertAfter(this,e),this}},{key:"assign",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};for(var t in e)this[t]=e[t];return this}},{key:"before",value:function(e){return this.parent.insertBefore(this,e),this}},{key:"cleanRaws",value:function(e){delete this.raws.before,delete this.raws.after,e||delete this.raws.between}},{key:"clone",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=m(this);for(var r in e)t[r]=e[r];return t}},{key:"cloneAfter",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=this.clone(e);return this.parent.insertAfter(this,t),t}},{key:"cloneBefore",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=this.clone(e);return this.parent.insertBefore(this,t),t}},{key:"error",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(this.source){var r=this.rangeBy(t),n=r.end,i=r.start;return this.source.input.error(e,{column:i.column,line:i.line},{column:n.column,line:n.line},t)}return new f(e)}},{key:"getProxyProcessor",value:function(){return{get:function(e,t){return"proxyOf"===t?e:"root"===t?function(){return e.root().toProxy()}:e[t]},set:function(e,t,r){return e[t]===r||(e[t]=r,"prop"!==t&&"value"!==t&&"name"!==t&&"params"!==t&&"important"!==t&&"text"!==t||e.markDirty()),!0}}}},{key:"markDirty",value:function(){if(this[p]){this[p]=!1;for(var e=this;e=e.parent;)e[p]=!1}}},{key:"next",value:function(){if(this.parent){var e=this.parent.index(this);return this.parent.nodes[e+1]}}},{key:"positionBy",value:function(e,t){var r=this.source.start;if(e.index)r=this.positionInside(e.index,t);else if(e.word){var n=(t=this.toString()).indexOf(e.word);-1!==n&&(r=this.positionInside(n,t))}return r}},{key:"positionInside",value:function(e,t){for(var r=t||this.toString(),n=this.source.start.column,i=this.source.start.line,o=0;o0&&void 0!==arguments[0]?arguments[0]:v;e.stringify&&(e=e.stringify);var t="";return e(this,(function(e){t+=e})),t}},{key:"warn",value:function(e,t,r){var n={node:this};for(var i in r)n[i]=r[i];return e.warn(t,n)}},{key:"proxyOf",get:function(){return this}}]),e}();e.exports=_,_.default=_},33207:function(e,t,r){"use strict";var n=r(45131),i=r(72625),o=r(26196);function a(e,t){var r=new o(e,t),n=new i(r);try{n.parse()}catch(e){throw e}return n.root}e.exports=a,a.default=a,n.registerParse(a)},72625:function(e,t,r){"use strict";var n=r(24994),i=n(r(85715)),o=n(r(17383)),a=n(r(34579));function s(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=function(e,t){if(!e)return;if("string"==typeof e)return c(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return c(e,t)}(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,i=function(){};return{s:i,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,s=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return a=e.done,e},e:function(e){s=!0,o=e},f:function(){try{a||null==r.return||r.return()}finally{if(s)throw o}}}}function c(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r0?c.push("}"):t===c[c.length-1]&&c.pop(),0===c.length){if(";"===t){i.source.end=this.getPosition(e[2]),i.source.end.offset++,this.semicolon=!0;break}if("{"===t){a=!0;break}if("}"===t){if(s.length>0){for(r=s[n=s.length-1];r&&"space"===r[0];)r=s[--n];r&&(i.source.end=this.getPosition(r[3]||r[2]),i.source.end.offset++)}this.end(e);break}s.push(e)}else s.push(e);if(this.tokenizer.endOfFile()){o=!0;break}}i.raws.between=this.spacesAndCommentsFromEnd(s),s.length?(i.raws.afterName=this.spacesAndCommentsFromStart(s),this.raw(i,"params",s),o&&(e=s[s.length-1],i.source.end=this.getPosition(e[3]||e[2]),i.source.end.offset++,this.spaces=i.raws.between,i.raws.between="")):(i.raws.afterName="",i.params=""),a&&(i.nodes=[],this.current=i)}},{key:"checkMissedSemicolon",value:function(e){var t=this.colon(e);if(!1!==t){for(var r,n=0,i=t-1;i>=0&&("space"===(r=e[i])[0]||2!==(n+=1));i--);throw this.input.error("Missed semicolon","word"===r[0]?r[3]+1:r[2])}}},{key:"colon",value:function(e){var t,r,n,o,a=0,c=s(e.entries());try{for(c.s();!(o=c.n()).done;){var u=(0,i.default)(o.value,2),l=u[0];if("("===(r=(t=u[1])[0])&&(a+=1),")"===r&&(a-=1),0===a&&":"===r){if(n){if("word"===n[0]&&"progid"===n[1])continue;return l}this.doubleColon(t)}n=t}}catch(e){c.e(e)}finally{c.f()}return!1}},{key:"comment",value:function(e){var t=new p;this.init(t,e[2]),t.source.end=this.getPosition(e[3]||e[2]),t.source.end.offset++;var r=e[1].slice(2,-2);if(/^\s*$/.test(r))t.text="",t.raws.left=r,t.raws.right="";else{var n=r.match(/^(\s*)([^]*\S)(\s*)$/);t.text=n[2],t.raws.left=n[1],t.raws.right=n[3]}}},{key:"createTokenizer",value:function(){this.tokenizer=l(this.input)}},{key:"decl",value:function(e,t){var r=new u;this.init(r,e[0][2]);var n,i=e[e.length-1];for(";"===i[0]&&(this.semicolon=!0,e.pop()),r.source.end=this.getPosition(i[3]||i[2]||function(e){for(var t=e.length-1;t>=0;t--){var r=e[t],n=r[3]||r[2];if(n)return n}}(e)),r.source.end.offset++;"word"!==e[0][0];)1===e.length&&this.unknownWord(e),r.raws.before+=e.shift()[1];for(r.source.start=this.getPosition(e[0][2]),r.prop="";e.length;){var o=e[0][0];if(":"===o||"space"===o||"comment"===o)break;r.prop+=e.shift()[1]}for(r.raws.between="";e.length;){if(":"===(n=e.shift())[0]){r.raws.between+=n[1];break}"word"===n[0]&&/\w/.test(n[1])&&this.unknownWord([n]),r.raws.between+=n[1]}"_"!==r.prop[0]&&"*"!==r.prop[0]||(r.raws.before+=r.prop[0],r.prop=r.prop.slice(1));for(var a,s=[];e.length&&("space"===(a=e[0][0])||"comment"===a);)s.push(e.shift());this.precheckMissedSemicolon(e);for(var c=e.length-1;c>=0;c--){if("!important"===(n=e[c])[1].toLowerCase()){r.important=!0;var l=this.stringFrom(e,c);" !important"!==(l=this.spacesFromEnd(e)+l)&&(r.raws.important=l);break}if("important"===n[1].toLowerCase()){for(var p=e.slice(0),d="",f=c;f>0;f--){var h=p[f][0];if(0===d.trim().indexOf("!")&&"space"!==h)break;d=p.pop()[1]+d}0===d.trim().indexOf("!")&&(r.important=!0,r.raws.important=d,e=p)}if("space"!==n[0]&&"comment"!==n[0])break}var v=e.some((function(e){return"space"!==e[0]&&"comment"!==e[0]}));v&&(r.raws.between+=s.map((function(e){return e[1]})).join(""),s=[]),this.raw(r,"value",s.concat(e),t),r.value.includes(":")&&!t&&this.checkMissedSemicolon(e)}},{key:"doubleColon",value:function(e){throw this.input.error("Double colon",{offset:e[2]},{offset:e[2]+e[1].length})}},{key:"emptyRule",value:function(e){var t=new h;this.init(t,e[2]),t.selector="",t.raws.between="",this.current=t}},{key:"end",value:function(e){this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.semicolon=!1,this.current.raws.after=(this.current.raws.after||"")+this.spaces,this.spaces="",this.current.parent?(this.current.source.end=this.getPosition(e[2]),this.current.source.end.offset++,this.current=this.current.parent):this.unexpectedClose(e)}},{key:"endFile",value:function(){this.current.parent&&this.unclosedBlock(),this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.current.raws.after=(this.current.raws.after||"")+this.spaces,this.root.source.end=this.getPosition(this.tokenizer.position())}},{key:"freeSemicolon",value:function(e){if(this.spaces+=e[1],this.current.nodes){var t=this.current.nodes[this.current.nodes.length-1];t&&"rule"===t.type&&!t.raws.ownSemicolon&&(t.raws.ownSemicolon=this.spaces,this.spaces="")}}},{key:"getPosition",value:function(e){var t=this.input.fromOffset(e);return{column:t.col,line:t.line,offset:e}}},{key:"init",value:function(e,t){this.current.push(e),e.source={input:this.input,start:this.getPosition(t)},e.raws.before=this.spaces,this.spaces="","comment"!==e.type&&(this.semicolon=!1)}},{key:"other",value:function(e){for(var t=!1,r=null,n=!1,i=null,o=[],a=e[1].startsWith("--"),s=[],c=e;c;){if(r=c[0],s.push(c),"("===r||"["===r)i||(i=c),o.push("("===r?")":"]");else if(a&&n&&"{"===r)i||(i=c),o.push("}");else if(0===o.length){if(";"===r){if(n)return void this.decl(s,a);break}if("{"===r)return void this.rule(s);if("}"===r){this.tokenizer.back(s.pop()),t=!0;break}":"===r&&(n=!0)}else r===o[o.length-1]&&(o.pop(),0===o.length&&(i=null));c=this.tokenizer.nextToken()}if(this.tokenizer.endOfFile()&&(t=!0),o.length>0&&this.unclosedBracket(i),t&&n){if(!a)for(;s.length&&("space"===(c=s[s.length-1][0])||"comment"===c);)this.tokenizer.back(s.pop());this.decl(s,a)}else this.unknownWord(s)}},{key:"parse",value:function(){for(var e;!this.tokenizer.endOfFile();)switch((e=this.tokenizer.nextToken())[0]){case"space":this.spaces+=e[1];break;case";":this.freeSemicolon(e);break;case"}":this.end(e);break;case"comment":this.comment(e);break;case"at-word":this.atrule(e);break;case"{":this.emptyRule(e);break;default:this.other(e)}this.endFile()}},{key:"precheckMissedSemicolon",value:function(){}},{key:"raw",value:function(e,t,r,n){for(var i,o,a,s,c=r.length,u="",l=!0,p=0;p-1&&n>-1&&(this.annotation=this.getAnnotationURL(e.substring(r,n)))}}},{key:"loadFile",value:function(e){if(this.root=h(e),p(e))return this.mapFile=e,d(e,"utf-8").toString().trim()}},{key:"loadMap",value:function(e,t){if(!1===t)return!1;if(t){if("string"==typeof t)return t;if("function"!=typeof t){if(t instanceof c)return u.fromSourceMap(t).toString();if(t instanceof u)return t.toString();if(this.isMap(t))return JSON.stringify(t);throw new Error("Unsupported previous source map format: "+t.toString())}var r=t(e);if(r){var n=this.loadFile(r);if(!n)throw new Error("Unable to load previous source map: "+r.toString());return n}}else{if(this.inline)return this.decodeInline(this.annotation);if(this.annotation){var i=this.annotation;return e&&(i=v(h(e),i)),this.loadFile(i)}}}},{key:"startWith",value:function(e,t){return!!e&&e.substr(0,t.length)===t}},{key:"withContent",value:function(){return!!(this.consumer().sourcesContent&&this.consumer().sourcesContent.length>0)}}]),e}();e.exports=m,m.default=m},61384:function(e,t,r){"use strict";var n=r(24994),i=n(r(73738)),o=n(r(17383)),a=n(r(34579));function s(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=function(e,t){if(!e)return;if("string"==typeof e)return c(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return c(e,t)}(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,i=function(){};return{s:i,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,s=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return a=e.done,e},e:function(e){s=!0,o=e},f:function(){try{a||null==r.return||r.return()}finally{if(s)throw o}}}}function c(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r0&&void 0!==arguments[0]?arguments[0]:[];(0,o.default)(this,e),this.version="8.4.32",this.plugins=this.normalize(t)}return(0,a.default)(e,[{key:"normalize",value:function(e){var t,r=[],n=s(e);try{for(n.s();!(t=n.n()).done;){var o=t.value;if(!0===o.postcss?o=o():o.postcss&&(o=o.postcss),"object"===(0,i.default)(o)&&Array.isArray(o.plugins))r=r.concat(o.plugins);else if("object"===(0,i.default)(o)&&o.postcssPlugin)r.push(o);else if("function"==typeof o)r.push(o);else{if("object"!==(0,i.default)(o)||!o.parse&&!o.stringify)throw new Error(o+" is not a PostCSS plugin")}}}catch(e){n.e(e)}finally{n.f()}return r}},{key:"process",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return 0===this.plugins.length&&void 0===t.parser&&void 0===t.stringifier&&void 0===t.syntax?new u(this,e,t):new l(this,e,t)}},{key:"use",value:function(e){return this.plugins=this.plugins.concat(this.normalize([e])),this}}]),e}();e.exports=f,f.default=f,d.registerProcessor(f),p.registerProcessor(f)},45391:function(e,t,r){"use strict";var n=r(24994),i=n(r(17383)),o=n(r(34579)),a=r(38419),s=function(){function e(t,r,n){(0,i.default)(this,e),this.processor=t,this.messages=[],this.root=r,this.opts=n,this.css=void 0,this.map=void 0}return(0,o.default)(e,[{key:"toString",value:function(){return this.css}},{key:"warn",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};t.plugin||this.lastPlugin&&this.lastPlugin.postcssPlugin&&(t.plugin=this.lastPlugin.postcssPlugin);var r=new a(e,t);return this.messages.push(r),r}},{key:"warnings",value:function(){return this.messages.filter((function(e){return"warning"===e.type}))}},{key:"content",get:function(){return this.css}}]),e}();e.exports=s,s.default=s},64474:function(e,t,r){"use strict";var n=r(24994),i=n(r(17383)),o=n(r(34579)),a=n(r(32395)),s=n(r(29511)),c=n(r(28452)),u=n(r(63072));function l(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=function(e,t){if(!e)return;if("string"==typeof e)return p(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return p(e,t)}(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,i=function(){};return{s:i,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,s=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return a=e.done,e},e:function(e){s=!0,o=e},f:function(){try{a||null==r.return||r.return()}finally{if(s)throw o}}}}function p(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r1?t.raws.before=this.nodes[1].raws.before:delete t.raws.before;else if(this.first!==t){var o,s=l(i);try{for(s.s();!(o=s.n()).done;){o.value.raws.before=t.raws.before}}catch(e){s.e(e)}finally{s.f()}}return i}},{key:"removeChild",value:function(e,t){var n=this.index(e);return!t&&0===n&&this.nodes.length>1&&(this.nodes[1].raws.before=this.nodes[n].raws.before),(0,a.default)((0,u.default)(r.prototype),"removeChild",this).call(this,e)}},{key:"toResult",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return new f(new h,this,e).stringify()}}]),r}(v);m.registerLazyResult=function(e){f=e},m.registerProcessor=function(e){h=e},e.exports=m,m.default=m,v.registerRoot(m)},34508:function(e,t,r){"use strict";var n=r(24994),i=n(r(17383)),o=n(r(34579)),a=n(r(29511)),s=n(r(28452)),c=n(r(63072));function u(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var r,n=(0,c.default)(e);if(t){var i=(0,c.default)(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return(0,s.default)(this,r)}}var l=r(45131),p=r(91758),d=function(e){(0,a.default)(r,e);var t=u(r);function r(e){var n;return(0,i.default)(this,r),(n=t.call(this,e)).type="rule",n.nodes||(n.nodes=[]),n}return(0,o.default)(r,[{key:"selectors",get:function(){return p.comma(this.selector)},set:function(e){var t=this.selector?this.selector.match(/,\s*/):null,r=t?t[0]:","+this.raw("between","beforeOpen");this.selector=e.join(r)}}]),r}(l);e.exports=d,d.default=d,l.registerRule(d)},57946:function(e,t,r){"use strict";var n=r(24994),i=n(r(17383)),o=n(r(34579)),a={after:"\n",beforeClose:"\n",beforeComment:"\n",beforeDecl:"\n",beforeOpen:" ",beforeRule:"\n",colon:": ",commentLeft:" ",commentRight:" ",emptyBody:"",indent:" ",semicolon:!1};var s=function(){function e(t){(0,i.default)(this,e),this.builder=t}return(0,o.default)(e,[{key:"atrule",value:function(e,t){var r="@"+e.name,n=e.params?this.rawValue(e,"params"):"";if(void 0!==e.raws.afterName?r+=e.raws.afterName:n&&(r+=" "),e.nodes)this.block(e,r+n);else{var i=(e.raws.between||"")+(t?";":"");this.builder(r+n+i,e)}}},{key:"beforeAfter",value:function(e,t){var r;r="decl"===e.type?this.raw(e,null,"beforeDecl"):"comment"===e.type?this.raw(e,null,"beforeComment"):"before"===t?this.raw(e,null,"beforeRule"):this.raw(e,null,"beforeClose");for(var n=e.parent,i=0;n&&"root"!==n.type;)i+=1,n=n.parent;if(r.includes("\n")){var o=this.raw(e,null,"indent");if(o.length)for(var a=0;a0&&"comment"===e.nodes[t].type;)t-=1;for(var r=this.raw(e,"semicolon"),n=0;n0&&void 0!==e.raws.after)return(t=e.raws.after).includes("\n")&&(t=t.replace(/[^\n]+$/,"")),!1})),t&&(t=t.replace(/\S/g,"")),t}},{key:"rawBeforeComment",value:function(e,t){var r;return e.walkComments((function(e){if(void 0!==e.raws.before)return(r=e.raws.before).includes("\n")&&(r=r.replace(/[^\n]+$/,"")),!1})),void 0===r?r=this.raw(t,null,"beforeDecl"):r&&(r=r.replace(/\S/g,"")),r}},{key:"rawBeforeDecl",value:function(e,t){var r;return e.walkDecls((function(e){if(void 0!==e.raws.before)return(r=e.raws.before).includes("\n")&&(r=r.replace(/[^\n]+$/,"")),!1})),void 0===r?r=this.raw(t,null,"beforeRule"):r&&(r=r.replace(/\S/g,"")),r}},{key:"rawBeforeOpen",value:function(e){var t;return e.walk((function(e){if("decl"!==e.type&&void 0!==(t=e.raws.between))return!1})),t}},{key:"rawBeforeRule",value:function(e){var t;return e.walk((function(r){if(r.nodes&&(r.parent!==e||e.first!==r)&&void 0!==r.raws.before)return(t=r.raws.before).includes("\n")&&(t=t.replace(/[^\n]+$/,"")),!1})),t&&(t=t.replace(/\S/g,"")),t}},{key:"rawColon",value:function(e){var t;return e.walkDecls((function(e){if(void 0!==e.raws.between)return t=e.raws.between.replace(/[^\s:]/g,""),!1})),t}},{key:"rawEmptyBody",value:function(e){var t;return e.walk((function(e){if(e.nodes&&0===e.nodes.length&&void 0!==(t=e.raws.after))return!1})),t}},{key:"rawIndent",value:function(e){return e.raws.indent?e.raws.indent:(e.walk((function(r){var n=r.parent;if(n&&n!==e&&n.parent&&n.parent===e&&void 0!==r.raws.before){var i=r.raws.before.split("\n");return t=(t=i[i.length-1]).replace(/\S/g,""),!1}})),t);var t}},{key:"rawSemicolon",value:function(e){var t;return e.walk((function(e){if(e.nodes&&e.nodes.length&&"decl"===e.last.type&&void 0!==(t=e.raws.semicolon))return!1})),t}},{key:"rawValue",value:function(e,t){var r=e[t],n=e.raws[t];return n&&n.value===r?n.raw:r}},{key:"root",value:function(e){this.body(e),e.raws.after&&this.builder(e.raws.after)}},{key:"rule",value:function(e){this.block(e,this.rawValue(e,"selector")),e.raws.ownSemicolon&&this.builder(e.raws.ownSemicolon,e,"end")}},{key:"stringify",value:function(e,t){if(!this[e.type])throw new Error("Unknown AST node type "+e.type+". Maybe you need to change PostCSS stringifier.");this[e.type](e,t)}}]),e}();e.exports=s,s.default=s},84025:function(e,t,r){"use strict";var n=r(57946);function i(e,t){new n(t).stringify(e)}e.exports=i,i.default=i},53:function(e){"use strict";e.exports.isClean=Symbol("isClean"),e.exports.my=Symbol("my")},62935:function(e){"use strict";var t="'".charCodeAt(0),r='"'.charCodeAt(0),n="\\".charCodeAt(0),i="/".charCodeAt(0),o="\n".charCodeAt(0),a=" ".charCodeAt(0),s="\f".charCodeAt(0),c="\t".charCodeAt(0),u="\r".charCodeAt(0),l="[".charCodeAt(0),p="]".charCodeAt(0),d="(".charCodeAt(0),f=")".charCodeAt(0),h="{".charCodeAt(0),v="}".charCodeAt(0),m=";".charCodeAt(0),_="*".charCodeAt(0),T=":".charCodeAt(0),g="@".charCodeAt(0),y=/[\t\n\f\r "#'()/;[\\\]{}]/g,E=/[\t\n\f\r !"#'():;@[\\\]{}]|\/(?=\*)/g,b=/.[\r\n"'(/\\]/,A=/[\da-f]/i;e.exports=function(e){var S,C,I,O,w,R,P,N,x,L,k=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},D=e.css.valueOf(),M=k.ignoreErrors,B=D.length,H=0,j=[],V=[];function U(t){throw e.error("Unclosed "+t,H)}return{back:function(e){V.push(e)},endOfFile:function(){return 0===V.length&&H>=B},nextToken:function(e){if(V.length)return V.pop();if(!(H>=B)){var k=!!e&&e.ignoreUnclosed;switch(S=D.charCodeAt(H)){case o:case a:case c:case u:case s:C=H;do{C+=1,S=D.charCodeAt(C)}while(S===a||S===o||S===c||S===u||S===s);L=["space",D.slice(H,C)],H=C-1;break;case l:case p:case h:case v:case T:case m:case f:var F=String.fromCharCode(S);L=[F,F,H];break;case d:if(N=j.length?j.pop()[1]:"",x=D.charCodeAt(H+1),"url"===N&&x!==t&&x!==r&&x!==a&&x!==o&&x!==c&&x!==s&&x!==u){C=H;do{if(R=!1,-1===(C=D.indexOf(")",C+1))){if(M||k){C=H;break}U("bracket")}for(P=C;D.charCodeAt(P-1)===n;)P-=1,R=!R}while(R);L=["brackets",D.slice(H,C+1),H,C],H=C}else C=D.indexOf(")",H+1),O=D.slice(H,C+1),-1===C||b.test(O)?L=["(","(",H]:(L=["brackets",O,H,C],H=C);break;case t:case r:I=S===t?"'":'"',C=H;do{if(R=!1,-1===(C=D.indexOf(I,C+1))){if(M||k){C=H+1;break}U("string")}for(P=C;D.charCodeAt(P-1)===n;)P-=1,R=!R}while(R);L=["string",D.slice(H,C+1),H,C],H=C;break;case g:y.lastIndex=H+1,y.test(D),C=0===y.lastIndex?D.length-1:y.lastIndex-2,L=["at-word",D.slice(H,C+1),H,C],H=C;break;case n:for(C=H,w=!0;D.charCodeAt(C+1)===n;)C+=1,w=!w;if(S=D.charCodeAt(C+1),w&&S!==i&&S!==a&&S!==o&&S!==c&&S!==u&&S!==s&&(C+=1,A.test(D.charAt(C)))){for(;A.test(D.charAt(C+1));)C+=1;D.charCodeAt(C+1)===a&&(C+=1)}L=["word",D.slice(H,C+1),H,C],H=C;break;default:S===i&&D.charCodeAt(H+1)===_?(0===(C=D.indexOf("*/",H+2)+1)&&(M||k?C=D.length:U("comment")),L=["comment",D.slice(H,C+1),H,C],H=C):(E.lastIndex=H+1,E.test(D),C=0===E.lastIndex?D.length-1:E.lastIndex-2,L=["word",D.slice(H,C+1),H,C],j.push(L),H=C)}return H++,L}},position:function(){return H}}}},20338:function(e){"use strict";var t={};e.exports=function(e){t[e]||(t[e]=!0,"undefined"!=typeof console&&console.warn&&console.warn(e))}},38419:function(e,t,r){"use strict";var n=r(24994),i=n(r(17383)),o=n(r(34579)),a=function(){function e(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if((0,i.default)(this,e),this.type="warning",this.text=t,r.node&&r.node.source){var n=r.node.rangeBy(r);this.line=n.start.line,this.column=n.start.column,this.endLine=n.end.line,this.endColumn=n.end.column}for(var o in r)this[o]=r[o]}return(0,o.default)(e,[{key:"toString",value:function(){return this.node?this.node.error(this.text,{index:this.index,plugin:this.plugin,word:this.word}).message:this.plugin?this.plugin+": "+this.text:this.text}}]),e}();e.exports=a,a.default=a},65865:function(e,t,r){"use strict";var n=r(24994);Object.defineProperty(t,"__esModule",{value:!0}),t.toUnicode=t.toASCII=t.encode=t.default=t.decode=void 0,t.ucs2decode=_,t.ucs2encode=void 0;var i=n(r(41132));function o(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=function(e,t){if(!e)return;if("string"==typeof e)return a(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return a(e,t)}(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,i=function(){};return{s:i,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,s=!0,c=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return s=e.done,e},e:function(e){c=!0,o=e},f:function(){try{s||null==r.return||r.return()}finally{if(c)throw o}}}}function a(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r= 0x80 (not a basic code point)","invalid-input":"Invalid input"},f=Math.floor,h=String.fromCharCode;function v(e){throw new RangeError(d[e])}function m(e,t){var r=e.split("@"),n="";r.length>1&&(n=r[0]+"@",e=r[1]);var i=function(e,t){for(var r=[],n=e.length;n--;)r[n]=t(e[n]);return r}((e=e.replace(p,".")).split("."),t).join(".");return n+i}function _(e){for(var t=[],r=0,n=e.length;r=55296&&i<=56319&&r>1,e+=f(e/t);e>455;n+=c)e=f(e/35);return f(n+36*e/(e+38))},E=function(e){var t,r=[],n=e.length,i=0,o=128,a=72,u=e.lastIndexOf("-");u<0&&(u=0);for(var l=0;l=128&&v("not-basic"),r.push(e.charCodeAt(l));for(var p=u>0?u+1:0;p=n&&v("invalid-input");var _=(t=e.charCodeAt(p++))-48<10?t-22:t-65<26?t-65:t-97<26?t-97:c;(_>=c||_>f((s-i)/h))&&v("overflow"),i+=_*h;var T=m<=a?1:m>=a+26?26:m-a;if(_f(s/g)&&v("overflow"),h*=g}var E=r.length+1;a=y(i-d,E,0==d),f(i/E)>s-o&&v("overflow"),o+=f(i/E),i%=E,r.splice(i++,0,o)}return String.fromCodePoint.apply(String,r)};t.decode=E;var b=function(e){var t,r=[],n=(e=_(e)).length,i=128,a=0,u=72,l=o(e);try{for(l.s();!(t=l.n()).done;){var p=t.value;p<128&&r.push(h(p))}}catch(e){l.e(e)}finally{l.f()}var d=r.length,m=d;for(d&&r.push("-");m=i&&Af((s-a)/S)&&v("overflow"),a+=(E-i)*S,i=E;var C,I=o(e);try{for(I.s();!(C=I.n()).done;){var O=C.value;if(Os&&v("overflow"),O==i){for(var w=a,R=c;;R+=c){var P=R<=u?1:R>=u+26?26:R-u;if(w=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,s=!0,c=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return s=e.done,e},e:function(e){c=!0,a=e},f:function(){try{s||null==r.return||r.return()}finally{if(c)throw a}}}}function i(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r]+$/;function _(e,t,r){if(null==e)return"";"number"==typeof e&&(e=e.toString());var i="",g="";function y(e,t){var r=this;this.tag=e,this.attribs=t||{},this.tagPosition=i.length,this.text="",this.mediaChildren=[],this.updateParentNodeText=function(){P.length&&(P[P.length-1].text+=r.text)},this.updateParentNodeMediaChildren=function(){P.length&&p.includes(this.tag)&&P[P.length-1].mediaChildren.push(this.tag)}}(t=Object.assign({},_.defaults,t)).parser=Object.assign({},T,t.parser);var E=function(e){return!1===t.allowedTags||(t.allowedTags||[]).indexOf(e)>-1};d.forEach((function(e){E(e)&&!t.allowVulnerableTags&&console.warn("\n\n\u26a0\ufe0f Your `allowedTags` option includes, `".concat(e,"`, which is inherently\nvulnerable to XSS attacks. Please remove it from `allowedTags`.\nOr, to disable this warning, add the `allowVulnerableTags` option\nand ensure you are accounting for this risk.\n\n"))}));var b,A,S=t.nonTextTags||["script","style","textarea","option"];t.allowedAttributes&&(b={},A={},f(t.allowedAttributes,(function(e,t){b[t]=[];var r=[];e.forEach((function(e){"string"==typeof e&&e.indexOf("*")>=0?r.push(a(e).replace(/\\\*/g,".*")):b[t].push(e)})),r.length&&(A[t]=new RegExp("^("+r.join("|")+")$"))})));var C={},I={},O={};f(t.allowedClasses,(function(e,t){if(b&&(h(b,t)||(b[t]=[]),b[t].push("class")),C[t]=e,Array.isArray(e)){var r=[];C[t]=[],O[t]=[],e.forEach((function(e){"string"==typeof e&&e.indexOf("*")>=0?r.push(a(e).replace(/\\\*/g,".*")):e instanceof RegExp?O[t].push(e):C[t].push(e)})),r.length&&(I[t]=new RegExp("^("+r.join("|")+")$"))}}));var w,R,P,N,x,L,k,D={};f(t.transformTags,(function(e,t){var r;"function"==typeof e?r=e:"string"==typeof e&&(r=_.simpleTransform(e)),"*"===t?w=r:D[t]=r}));var M=!1;H();var B=new o.Parser({onopentag:function(e,r){if(t.enforceHtmlBoundary&&"html"===e&&H(),L)k++;else{var o=new y(e,r);P.push(o);var a,p=!1,d=!!o.text;if(h(D,e)&&(a=D[e](e,r),o.attribs=r=a.attribs,void 0!==a.text&&(o.innerText=a.text),e!==a.tagName&&(o.name=e=a.tagName,x[R]=a.tagName)),w&&(a=w(e,r),o.attribs=r=a.attribs,e!==a.tagName&&(o.name=e=a.tagName,x[R]=a.tagName)),(!E(e)||"recursiveEscape"===t.disallowedTagsMode&&!function(e){for(var t in e)if(h(e,t))return!1;return!0}(N)||null!=t.nestingLimit&&R>=t.nestingLimit)&&(p=!0,N[R]=!0,"discard"===t.disallowedTagsMode&&-1!==S.indexOf(e)&&(L=!0,k=1),N[R]=!0),R++,p){if("discard"===t.disallowedTagsMode)return;g=i,i=""}i+="<"+e,"script"===e&&(t.allowedScriptHostnames||t.allowedScriptDomains)&&(o.innerText=""),(!b||h(b,e)||b["*"])&&f(r,(function(r,a){if(m.test(a))if(""!==r||!t.nonBooleanAttributes.includes(a)&&!t.nonBooleanAttributes.includes("*")){var p=!1;if(!b||h(b,e)&&-1!==b[e].indexOf(a)||b["*"]&&-1!==b["*"].indexOf(a)||h(A,e)&&A[e].test(a)||A["*"]&&A["*"].test(a))p=!0;else if(b&&b[e]){var d,f=n(b[e]);try{for(f.s();!(d=f.n()).done;){var _=d.value;if(s(_)&&_.name&&_.name===a){p=!0;var T="";if(!0===_.multiple){var g,y=n(r.split(" "));try{for(y.s();!(g=y.n()).done;){var E=g.value;-1!==_.values.indexOf(E)&&(""===T?T=E:T+=" "+E)}}catch(e){y.e(e)}finally{y.f()}}else _.values.indexOf(r)>=0&&(T=r);r=T}}}catch(e){f.e(e)}finally{f.f()}}if(p){if(-1!==t.allowedSchemesAppliedToAttributes.indexOf(a)&&V(e,r))return void delete o.attribs[a];if("script"===e&&"src"===a){var S=!0;try{var w=U(r);if(t.allowedScriptHostnames||t.allowedScriptDomains){var R=(t.allowedScriptHostnames||[]).find((function(e){return e===w.url.hostname})),P=(t.allowedScriptDomains||[]).find((function(e){return w.url.hostname===e||w.url.hostname.endsWith(".".concat(e))}));S=R||P}}catch(e){S=!1}if(!S)return void delete o.attribs[a]}if("iframe"===e&&"src"===a){var N=!0;try{var x=U(r);if(x.isRelativeUrl)N=h(t,"allowIframeRelativeUrls")?t.allowIframeRelativeUrls:!t.allowedIframeHostnames&&!t.allowedIframeDomains;else if(t.allowedIframeHostnames||t.allowedIframeDomains){var L=(t.allowedIframeHostnames||[]).find((function(e){return e===x.url.hostname})),k=(t.allowedIframeDomains||[]).find((function(e){return x.url.hostname===e||x.url.hostname.endsWith(".".concat(e))}));N=L||k}}catch(e){N=!1}if(!N)return void delete o.attribs[a]}if("srcset"===a)try{var D=u(r);if(D.forEach((function(e){V("srcset",e.url)&&(e.evil=!0)})),!(D=v(D,(function(e){return!e.evil}))).length)return void delete o.attribs[a];r=v(D,(function(e){return!e.evil})).map((function(e){if(!e.url)throw new Error("URL missing");return e.url+(e.w?" ".concat(e.w,"w"):"")+(e.h?" ".concat(e.h,"h"):"")+(e.d?" ".concat(e.d,"x"):"")})).join(", "),o.attribs[a]=r}catch(e){return void delete o.attribs[a]}if("class"===a){var M=C[e],B=C["*"],H=I[e],z=O[e],Y=[H,I["*"]].concat(z).filter((function(e){return e}));if(!(r=F(r,M&&B?c(M,B):M||B,Y)).length)return void delete o.attribs[a]}if("style"===a)if(t.parseStyleAttributes)try{var G=function(e,t){if(!t)return e;var r,n=e.nodes[0];r=t[n.selector]&&t["*"]?c(t[n.selector],t["*"]):t[n.selector]||t["*"];r&&(e.nodes[0].nodes=n.nodes.reduce(function(e){return function(t,r){h(e,r.prop)&&(e[r.prop].some((function(e){return e.test(r.value)}))&&t.push(r));return t}}(r),[]));return e}(l(e+" {"+r+"}"),t.allowedStyles);if(r=function(e){return e.nodes[0].nodes.reduce((function(e,t){return e.push("".concat(t.prop,":").concat(t.value).concat(t.important?" !important":"")),e}),[]).join(";")}(G),0===r.length)return void delete o.attribs[a]}catch(t){return"undefined"!=typeof window&&console.warn('Failed to parse "'+e+" {"+r+"}\", If you're running this in a browser, we recommend to disable style parsing: options.parseStyleAttributes: false, since this only works in a node environment due to a postcss dependency, More info: https://github.com/apostrophecms/sanitize-html/issues/547"),void delete o.attribs[a]}else if(t.allowedStyles)throw new Error("allowedStyles option cannot be used together with parseStyleAttributes: false.");i+=" "+a,r&&r.length&&(i+='="'+j(r,!0)+'"')}else delete o.attribs[a]}else delete o.attribs[a];else delete o.attribs[a]})),-1!==t.selfClosing.indexOf(e)?i+=" />":(i+=">",!o.innerText||d||t.textFilter||(i+=j(o.innerText),M=!0)),p&&(i=g+j(i),g="")}},ontext:function(e){if(!L){var r,n=P[P.length-1];if(n&&(r=n.tag,e=void 0!==n.innerText?n.innerText:e),"discard"!==t.disallowedTagsMode||"script"!==r&&"style"!==r){var o=j(e,!1);t.textFilter&&!M?i+=t.textFilter(o,r):M||(i+=o)}else i+=e;if(P.length)P[P.length-1].text+=e}},onclosetag:function(e,r){if(L){if(--k)return;L=!1}var n=P.pop();if(n)if(n.tag===e){L=!!t.enforceHtmlBoundary&&"html"===e,R--;var o=N[R];if(o){if(delete N[R],"discard"===t.disallowedTagsMode)return void n.updateParentNodeText();g=i,i=""}x[R]&&(e=x[R],delete x[R]),t.exclusiveFilter&&t.exclusiveFilter(n)?i=i.substr(0,n.tagPosition):(n.updateParentNodeMediaChildren(),n.updateParentNodeText(),-1!==t.selfClosing.indexOf(e)||r&&!E(e)&&["escape","recursiveEscape"].indexOf(t.disallowedTagsMode)>=0?o&&(i=g,g=""):(i+="",o&&(i=g+j(i),g=""),M=!1))}else P.push(n)}},t.parser);return B.write(e),B.end(),i;function H(){i="",R=0,P=[],N={},x={},L=!1,k=0}function j(e,r){return"string"!=typeof e&&(e+=""),t.parser.decodeEntities&&(e=e.replace(/&/g,"&").replace(//g,">"),r&&(e=e.replace(/"/g,"""))),e=e.replace(/&(?![a-zA-Z0-9#]{1,20};)/g,"&").replace(//g,">"),r&&(e=e.replace(/"/g,""")),e}function V(e,r){for(r=r.replace(/[\x00-\x20]+/g,"");;){var n=r.indexOf("\x3c!--");if(-1===n)break;var i=r.indexOf("--\x3e",n+4);if(-1===i)break;r=r.substring(0,n)+r.substring(i+3)}var o=r.match(/^([a-zA-Z][a-zA-Z0-9.\-+]*):/);if(!o)return!!r.match(/^[/\\]{2}/)&&!t.allowProtocolRelative;var a=o[1].toLowerCase();return h(t.allowedSchemesByTag,e)?-1===t.allowedSchemesByTag[e].indexOf(a):!t.allowedSchemes||-1===t.allowedSchemes.indexOf(a)}function U(e){if((e=e.replace(/^(\w+:)?\s*[\\/]\s*[\\/]/,"$1//")).startsWith("relative:"))throw new Error("relative: exploit attempt");for(var t="relative://relative-site",r=0;r<100;r++)t+="/".concat(r);var n=new URL(e,t);return{isRelativeUrl:n&&"relative-site"===n.hostname&&"relative:"===n.protocol,url:n}}function F(e,t,r){return t?(e=e.split(/\s+/)).filter((function(e){return-1!==t.indexOf(e)||r.some((function(t){return t.test(e)}))})).join(" "):e}}var T={decodeEntities:!0};_.defaults={allowedTags:["address","article","aside","footer","header","h1","h2","h3","h4","h5","h6","hgroup","main","nav","section","blockquote","dd","div","dl","dt","figcaption","figure","hr","li","main","ol","p","pre","ul","a","abbr","b","bdi","bdo","br","cite","code","data","dfn","em","i","kbd","mark","q","rb","rp","rt","rtc","ruby","s","samp","small","span","strong","sub","sup","time","u","var","wbr","caption","col","colgroup","table","tbody","td","tfoot","th","thead","tr"],nonBooleanAttributes:["abbr","accept","accept-charset","accesskey","action","allow","alt","as","autocapitalize","autocomplete","blocking","charset","cite","class","color","cols","colspan","content","contenteditable","coords","crossorigin","data","datetime","decoding","dir","dirname","download","draggable","enctype","enterkeyhint","fetchpriority","for","form","formaction","formenctype","formmethod","formtarget","headers","height","hidden","high","href","hreflang","http-equiv","id","imagesizes","imagesrcset","inputmode","integrity","is","itemid","itemprop","itemref","itemtype","kind","label","lang","list","loading","low","max","maxlength","media","method","min","minlength","name","nonce","optimum","pattern","ping","placeholder","popover","popovertarget","popovertargetaction","poster","preload","referrerpolicy","rel","rows","rowspan","sandbox","scope","shape","size","sizes","slot","span","spellcheck","src","srcdoc","srclang","srcset","start","step","style","tabindex","target","title","translate","type","usemap","value","width","wrap","onauxclick","onafterprint","onbeforematch","onbeforeprint","onbeforeunload","onbeforetoggle","onblur","oncancel","oncanplay","oncanplaythrough","onchange","onclick","onclose","oncontextlost","oncontextmenu","oncontextrestored","oncopy","oncuechange","oncut","ondblclick","ondrag","ondragend","ondragenter","ondragleave","ondragover","ondragstart","ondrop","ondurationchange","onemptied","onended","onerror","onfocus","onformdata","onhashchange","oninput","oninvalid","onkeydown","onkeypress","onkeyup","onlanguagechange","onload","onloadeddata","onloadedmetadata","onloadstart","onmessage","onmessageerror","onmousedown","onmouseenter","onmouseleave","onmousemove","onmouseout","onmouseover","onmouseup","onoffline","ononline","onpagehide","onpageshow","onpaste","onpause","onplay","onplaying","onpopstate","onprogress","onratechange","onreset","onresize","onrejectionhandled","onscroll","onscrollend","onsecuritypolicyviolation","onseeked","onseeking","onselect","onslotchange","onstalled","onstorage","onsubmit","onsuspend","ontimeupdate","ontoggle","onunhandledrejection","onunload","onvolumechange","onwaiting","onwheel"],disallowedTagsMode:"discard",allowedAttributes:{a:["href","name","target"],img:["src","srcset","alt","title","width","height","loading"]},selfClosing:["img","br","hr","area","base","basefont","input","link","meta"],allowedSchemes:["http","https","ftp","mailto","tel"],allowedSchemesByTag:{},allowedSchemesAppliedToAttributes:["href","src","cite"],allowProtocolRelative:!0,enforceHtmlBoundary:!1,parseStyleAttributes:!0},_.simpleTransform=function(e,t,r){return r=void 0===r||r,t=t||{},function(n,i){var o;if(r)for(o in t)i[o]=t[o];else i=t;return{tagName:e,attribs:i}}}},48485:function(e){"use strict";e.exports=function(e){if("string"!=typeof e)throw new TypeError("Expected a string");return e.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d")}},50553:function(e,t){"use strict";function r(e){return"[object Object]"===Object.prototype.toString.call(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.isPlainObject=function(e){var t,n;return!1!==r(e)&&(void 0===(t=e.constructor)||!1!==r(n=t.prototype)&&!1!==n.hasOwnProperty("isPrototypeOf"))}},67526:function(e,t){"use strict";t.byteLength=function(e){var t=s(e),r=t[0],n=t[1];return 3*(r+n)/4-n},t.toByteArray=function(e){var t,r,o=s(e),a=o[0],c=o[1],u=new i(function(e,t,r){return 3*(t+r)/4-r}(0,a,c)),l=0,p=c>0?a-4:a;for(r=0;r>16&255,u[l++]=t>>8&255,u[l++]=255&t;2===c&&(t=n[e.charCodeAt(r)]<<2|n[e.charCodeAt(r+1)]>>4,u[l++]=255&t);1===c&&(t=n[e.charCodeAt(r)]<<10|n[e.charCodeAt(r+1)]<<4|n[e.charCodeAt(r+2)]>>2,u[l++]=t>>8&255,u[l++]=255&t);return u},t.fromByteArray=function(e){for(var t,n=e.length,i=n%3,o=[],a=16383,s=0,u=n-i;su?u:s+a));1===i?(t=e[n-1],o.push(r[t>>2]+r[t<<4&63]+"==")):2===i&&(t=(e[n-2]<<8)+e[n-1],o.push(r[t>>10]+r[t>>4&63]+r[t<<2&63]+"="));return o.join("")};for(var r=[],n=[],i="undefined"!=typeof Uint8Array?Uint8Array:Array,o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",a=0;a<64;++a)r[a]=o[a],n[o.charCodeAt(a)]=a;function s(e){var t=e.length;if(t%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var r=e.indexOf("=");return-1===r&&(r=t),[r,r===t?0:4-r%4]}function c(e,t,n){for(var i,o,a=[],s=t;s>18&63]+r[o>>12&63]+r[o>>6&63]+r[63&o]);return a.join("")}n["-".charCodeAt(0)]=62,n["_".charCodeAt(0)]=63},33674:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=function(){var e={};return e.promise=new Promise((function(t,r){e.reject=r,e.resolve=t})),e};t.default=r},57186:function(e,t,r){"use strict";var n=r(55925);Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){var t=[];return e.forEach((function(e){for(var r=(0,i.default)(e),n=r.extname,o=r.name,a=0,s=e;t.includes(s);)s=[o,"(".concat(++a,")")].filter((function(e){return e})).join(" ")+n;t.push(s)})),t};var i=n(r(48107))},12998:function(e,t,r){"use strict";var n=r(55925),i=r(78207);Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"DirectLineStreaming",{enumerable:!0,get:function(){return h.DirectLineStreaming}}),t.DirectLine=t.ConnectionStatus=void 0;var o=n(r(91852)),a=n(r(70346)),s=n(r(53484)),c=n(r(42420));r(97954),r(21558);var u=r(53362),l=r(15907),p=r(78086),d=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!==i(e)&&"function"!=typeof e)return{default:e};var r=m(t);if(r&&r.has(e))return r.get(e);var n={},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&Object.prototype.hasOwnProperty.call(e,a)){var s=o?Object.getOwnPropertyDescriptor(e,a):null;s&&(s.get||s.set)?Object.defineProperty(n,a,s):n[a]=e[a]}n.default=e,r&&r.set(e,n);return n}(r(6765));r(61810),r(30279),r(67486),r(52274),r(84480),r(11167),r(30223),r(14647),r(40111),r(65011),r(81358),r(77278),r(87665),r(33985),r(86838),r(70567),r(96607),r(88164);var f=n(r(57186)),h=r(62e3),v=["contentUrl"];function m(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(m=function(e){return e?r:t})(e)}function _(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function T(e){for(var t=1;t1?r-1:0),i=1;i0&&void 0!==arguments[0]&&arguments[0],r=this.connectionStatus$.flatMap((function(t){return t===g.Uninitialized?(e.connectionStatus$.next(g.Connecting),e.token&&e.streamUrl?(e.connectionStatus$.next(g.Online),l.Observable.of(t,e.services.scheduler)):e.startConversation().do((function(t){e.conversationId=t.conversationId,e.token=e.secret||t.token,e.streamUrl=t.streamUrl,e.referenceGrammarId=t.referenceGrammarId,e.secret||e.refreshTokenLoop(),e.connectionStatus$.next(g.Online)}),(function(t){e.connectionStatus$.next(g.FailedToConnect)})).map((function(e){return t}))):l.Observable.of(t,e.services.scheduler)})).filter((function(e){return e!=g.Uninitialized&&e!=g.Connecting})).flatMap((function(t){switch(t){case g.Ended:return l.Observable.throw(A,e.services.scheduler);case g.FailedToConnect:return l.Observable.throw(S,e.services.scheduler);case g.ExpiredToken:default:return l.Observable.of(t,e.services.scheduler)}}));return t?r.take(1):r}},{key:"setConnectionStatusFallback",value:function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:5;r--;var n=0,i=null;return function(o){return o===e&&i===o&&n>=r?(n=0,t):(n++,i=o,o)}}},{key:"expiredToken",value:function(){var e=this.connectionStatus$.getValue();e!=g.Ended&&e!=g.FailedToConnect&&this.connectionStatus$.next(g.ExpiredToken);var t=this.expiredTokenExhaustion(this.connectionStatus$.getValue());this.connectionStatus$.next(t)}},{key:"startConversation",value:function(){var e=this,t=this.conversationId?"".concat(this.domain,"/conversations/").concat(this.conversationId,"?watermark=").concat(this.watermark):"".concat(this.domain,"/conversations"),r=this.conversationId?"GET":"POST",n=this.conversationId?void 0:{user:{id:this.userIdOnStartConversation},locale:this.localeOnStartConversation};return this.services.ajax({method:r,url:t,body:n,timeout:this.timeout,headers:T({Accept:"application/json","Content-Type":"application/json"},this.commonHeaders())}).map((function(e){return e.response})).retryWhen((function(t){return t.mergeMap((function(t){return t.status>=400&&t.status<600?l.Observable.throw(t,e.services.scheduler):l.Observable.of(t,e.services.scheduler)})).delay(e.timeout,e.services.scheduler).take(e.retries)}))}},{key:"refreshTokenLoop",value:function(){var e=this;this.tokenRefreshSubscription=l.Observable.interval(E,this.services.scheduler).flatMap((function(t){return e.refreshToken()})).subscribe((function(t){C("refreshing token",t,"at",new Date),e.token=t}))}},{key:"refreshToken",value:function(){var e=this;return this.checkConnection(!0).flatMap((function(t){return e.services.ajax({method:"POST",url:"".concat(e.domain,"/tokens/refresh"),timeout:e.timeout,headers:T({},e.commonHeaders())}).map((function(e){return e.response.token})).retryWhen((function(t){return t.mergeMap((function(t){return 403===t.status?(e.expiredToken(),l.Observable.throw(t,e.services.scheduler)):404===t.status?l.Observable.throw(t,e.services.scheduler):l.Observable.of(t,e.services.scheduler)})).delay(e.timeout,e.services.scheduler).take(e.retries)}))}))}},{key:"reconnect",value:function(e){this.token=e.token,this.streamUrl=e.streamUrl,this.connectionStatus$.getValue()===g.ExpiredToken&&this.connectionStatus$.next(g.Online)}},{key:"end",value:function(){this.tokenRefreshSubscription&&this.tokenRefreshSubscription.unsubscribe();try{this.connectionStatus$.next(g.Ended)}catch(e){if(e===A)return;throw e}}},{key:"getSessionId",value:function(){var e=this;return C("getSessionId"),this.checkConnection(!0).flatMap((function(t){return e.services.ajax({method:"GET",url:"".concat(e.domain,"/session/getsessionid"),withCredentials:!0,timeout:e.timeout,headers:T({"Content-Type":"application/json"},e.commonHeaders())}).map((function(e){return e&&e.response&&e.response.sessionId?(C("getSessionId response: "+e.response.sessionId),e.response.sessionId):""})).catch((function(t){return C("getSessionId error: "+t.status),l.Observable.of("",e.services.scheduler)}))})).catch((function(t){return e.catchExpiredToken(t)}))}},{key:"postActivity",value:function(e){var t=this;return this.userIdOnStartConversation&&e.from&&e.from.id!==this.userIdOnStartConversation&&(console.warn("DirectLineJS: Activity.from.id does not match with user id, ignoring activity.from.id"),e.from.id=this.userIdOnStartConversation),"message"===e.type&&e.attachments&&e.attachments.length>0?this.postMessageWithAttachments(e):(C("postActivity",e),this.checkConnection(!0).flatMap((function(r){return t.services.ajax({method:"POST",url:"".concat(t.domain,"/conversations/").concat(t.conversationId,"/activities"),body:e,timeout:t.timeout,headers:T({"Content-Type":"application/json"},t.commonHeaders())}).map((function(e){return e.response.id})).catch((function(e){return t.catchPostError(e)}))})).catch((function(e){return t.catchExpiredToken(e)})))}},{key:"postMessageWithAttachments",value:function(e){var t,r=this,n=e.attachments,i=(0,f.default)(n.map((function(e){return e.name||"blob"}))),a=n.map((function(e,t){return T(T({},e),{},{name:i[t]})}));return this.checkConnection(!0).flatMap((function(n){return(t=new FormData).append("activity",new Blob([JSON.stringify(T(T({},e),{},{attachments:a.map((function(e){e.contentUrl;return T({},(0,o.default)(e,v))}))}))],{type:"application/vnd.microsoft.activity"})),l.Observable.from(a,r.services.scheduler).flatMap((function(e){return r.services.ajax({method:"GET",url:e.contentUrl,responseType:"arraybuffer"}).do((function(r){return t.append("file",new Blob([r.response],{type:e.contentType}),e.name)}))})).count()})).flatMap((function(n){return r.services.ajax({method:"POST",url:"".concat(r.domain,"/conversations/").concat(r.conversationId,"/upload?userId=").concat(e.from.id),body:t,timeout:r.timeout,headers:T({},r.commonHeaders())}).map((function(e){return e.response.id})).catch((function(e){return r.catchPostError(e)}))})).catch((function(e){return r.catchPostError(e)}))}},{key:"catchPostError",value:function(e){if(403===e.status)this.expiredToken();else if(e.status>=400&&e.status<500)return l.Observable.throw(e,this.services.scheduler);return l.Observable.of("retry",this.services.scheduler)}},{key:"catchExpiredToken",value:function(e){return e===b?l.Observable.of("retry",this.services.scheduler):l.Observable.throw(e,this.services.scheduler)}},{key:"pollingGetActivity$",value:function(){var e=this,t=l.Observable.create((function(t){var r=new u.BehaviorSubject({});r.subscribe((function(){if(e.connectionStatus$.getValue()===g.Online){var n=Date.now();e.services.ajax({headers:T({Accept:"application/json"},e.commonHeaders()),method:"GET",url:"".concat(e.domain,"/conversations/").concat(e.conversationId,"/activities?watermark=").concat(e.watermark),timeout:e.timeout}).subscribe((function(i){t.next(i),setTimeout((function(){return r.next(null)}),Math.max(0,e.pollingInterval-Date.now()+n))}),(function(n){switch(n.status){case 403:e.connectionStatus$.next(g.ExpiredToken),setTimeout((function(){return r.next(null)}),e.pollingInterval);break;case 404:e.connectionStatus$.next(g.Ended);break;default:t.error(n)}}))}}))}));return this.checkConnection().flatMap((function(r){return t.catch((function(){return l.Observable.empty()})).map((function(e){return e.response})).flatMap((function(t){return e.observableFromActivityGroup(t)}))}))}},{key:"observableFromActivityGroup",value:function(e){return e.watermark&&(this.watermark=e.watermark),l.Observable.from(e.activities,this.services.scheduler)}},{key:"webSocketActivity$",value:function(){var e=this;return this.checkConnection().flatMap((function(t){return e.observableWebSocket().retryWhen((function(t){return t.delay(e.getRetryDelay(),e.services.scheduler).mergeMap((function(t){return e.reconnectToConversation()}))}))})).flatMap((function(t){return e.observableFromActivityGroup(t)}))}},{key:"getRetryDelay",value:function(){return Math.floor(3e3+12e3*this.services.random())}},{key:"observableWebSocket",value:function(){var e=this;return l.Observable.create((function(t){C("creating WebSocket",e.streamUrl);var r,n,i=new e.services.WebSocket(e.streamUrl);return i.onopen=function(t){C("WebSocket open",t),r=l.Observable.interval(e.timeout,e.services.scheduler).subscribe((function(e){try{i.send("")}catch(e){C("Ping error",e)}}))},i.onclose=function(e){C("WebSocket close",e),r&&r.unsubscribe(),n||t.error(e),n=!0},i.onerror=function(e){C("WebSocket error",e),r&&r.unsubscribe(),n||t.error(e),n=!0},i.onmessage=function(e){return e.data&&t.next(JSON.parse(e.data))},function(){0!==i.readyState&&1!==i.readyState||i.close()}}))}},{key:"reconnectToConversation",value:function(){var e=this;return this.checkConnection(!0).flatMap((function(t){return e.services.ajax({method:"GET",url:"".concat(e.domain,"/conversations/").concat(e.conversationId,"?watermark=").concat(e.watermark),timeout:e.timeout,headers:T({Accept:"application/json"},e.commonHeaders())}).do((function(t){e.secret||(e.token=t.response.token),e.streamUrl=t.response.streamUrl})).map((function(e){return null})).retryWhen((function(t){return t.mergeMap((function(t){if(403===t.status)e.expiredToken();else if(404===t.status)return l.Observable.throw(A,e.services.scheduler);return l.Observable.of(t,e.services.scheduler)})).delay(e.timeout,e.services.scheduler).take(e.retries)}))}))}},{key:"commonHeaders",value:function(){return{Authorization:"Bearer ".concat(this.token),"x-ms-bot-agent":this._botAgent}}},{key:"getBotAgent",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t="directlinejs";return e&&(t+="; ".concat(e)),"".concat("DirectLine/3.0"," (").concat(t," ").concat("0.15.5",")")}},{key:"setUserId",value:function(e){if(this.connectionStatus$.getValue()===g.Online)throw new Error("DirectLineJS: It is connected, we cannot set user id.");return this.parseToken(this.token)?console.warn("DirectLineJS: user id is already set in token, will ignore this user id."):/^dl_/.test(e)?console.warn('DirectLineJS: user id prefixed with "dl_" is reserved and must be embedded into the Direct Line token to prevent forgery.'):void(this.userIdOnStartConversation=e)}},{key:"parseToken",value:function(e){try{return(0,d.default)(e).user}catch(e){if(e instanceof d.InvalidTokenError)return}}}]),e}();t.DirectLine=I},62e3:function(e,t,r){"use strict";var n=r(55925),i=r(78207);Object.defineProperty(t,"__esModule",{value:!0}),t.DirectLineStreaming=void 0;var o=n(r(91852)),a=n(r(3335)),s=n(r(53381)),c=n(r(84353)),u=n(r(73587)),l=n(r(96860)),p=n(r(70346)),d=n(r(53484)),f=n(r(42420)),h=r(53362),v=r(81545),m=r(15907),_=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!==i(e)&&"function"!=typeof e)return{default:e};var r=A(t);if(r&&r.has(e))return r.get(e);var n={},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&Object.prototype.hasOwnProperty.call(e,a)){var s=o?Object.getOwnPropertyDescriptor(e,a):null;s&&(s.get||s.set)?Object.defineProperty(n,a,s):n[a]=e[a]}n.default=e,r&&r.set(e,n);return n}(r(38296)),T=n(r(33674)),g=n(r(74945)),y=r(12998),E=n(r(98474)),b=["attachments"];function A(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(A=function(e){return e?r:t})(e)}var S=function(){function e(t,r,n){(0,p.default)(this,e),(0,f.default)(this,"activityQueue",[]),this.subscriber=t,this.connectionStatus$=r,this.shouldQueue=n}var t;return(0,d.default)(e,[{key:"setSubscriber",value:function(e){this.subscriber=e}},{key:"processRequest",value:(t=(0,l.default)(a.default.mark((function e(t,r){var n,i,o,s,c,l,p,d,f;return a.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=(0,u.default)(t.streams),i=n.shift(),e.next=4,i.readAsString();case 4:if(o=e.sent,1===(s=JSON.parse(o)).activities.length){e.next=9;break}return this.subscriber.error(new Error("there should be exactly one activity")),e.abrupt("return",_.StreamingResponse.create(500));case 9:if(c=s.activities[0],!(n.length>0)){e.next=21;break}l=(0,u.default)(c.attachments);case 12:if(!(p=n.shift())){e.next=20;break}return e.next=15,p.readAsString();case 15:d=e.sent,f="data:text/plain;base64,"+d,l.push({contentType:p.contentType,contentUrl:f}),e.next=12;break;case 20:c.attachments=l;case 21:return this.shouldQueue()?this.activityQueue.push(c):this.subscriber.next(c),e.abrupt("return",_.StreamingResponse.create(200));case 23:case"end":return e.stop()}}),e,this)}))),function(e,r){return t.apply(this,arguments)})},{key:"flush",value:function(){var e=this;this.connectionStatus$.subscribe((function(){})),this.activityQueue.forEach((function(t){return e.subscriber.next(t)})),this.activityQueue=[]}},{key:"end",value:function(){this.subscriber.complete()}}]),e}(),C=new WeakMap,I=function(){function e(t){var r=this;(0,p.default)(this,e),(0,f.default)(this,"connectionStatus$",new h.BehaviorSubject(y.ConnectionStatus.Uninitialized)),(0,f.default)(this,"_botAgent",""),C.set(this,{writable:!0,value:void 0});var n=null==t?void 0:t.networkInformation;void 0===n||"function"==typeof n.addEventListener&&"function"==typeof n.removeEventListener&&"string"==typeof n.type?(0,c.default)(this,C,n):console.warn('botframework-directlinejs: "networkInformation" option specified must be a `NetworkInformation`-like instance extending `EventTarget` interface with a `type` property returning a string.'),this.token=t.token,this.refreshToken().catch((function(){r.connectionStatus$.next(y.ConnectionStatus.ExpiredToken)})),this.domain=t.domain,t.conversationId&&(this.conversationId=t.conversationId),this._botAgent=this.getBotAgent(t.botAgent),this.queueActivities=!0,this.activity$=m.Observable.create(function(){var e=(0,l.default)(a.default.mark((function e(t){return a.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:r.activitySubscriber=t,r.theStreamHandler=new S(t,r.connectionStatus$,(function(){return r.queueActivities})),r.connectDeferred.resolve();case 3:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()).share(),this.connectWithRetryAsync()}var t,r,n,i;return(0,d.default)(e,[{key:"reconnect",value:function(e){var t=e.conversationId,r=e.token;if(this.connectionStatus$.getValue()===y.ConnectionStatus.Ended)throw new Error("Connection has ended.");this.conversationId=t,this.token=r,this.connectDeferred.resolve()}},{key:"end",value:function(){this.activitySubscriber.complete(),this.connectionStatus$.next(y.ConnectionStatus.Ended),this.connectionStatus$.complete(),this.streamConnection.disconnect()}},{key:"commonHeaders",value:function(){return{Authorization:"Bearer ".concat(this.token),"x-ms-bot-agent":this._botAgent}}},{key:"getBotAgent",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t="directlineStreaming";return e&&(t+="; ".concat(e)),"".concat("DirectLine/3.0"," (").concat(t,")")}},{key:"refreshToken",value:(i=(0,l.default)(a.default.mark((function e(){var t,r,n,i;return a.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=4,this.waitUntilOnline();case 4:t=0;case 5:if(!(t<3)){e.next=30;break}return t++,e.next=9,new Promise((function(e){return setTimeout(e,9e5)}));case 9:return e.prev=9,e.next=12,(0,g.default)("".concat(this.domain,"/tokens/refresh"),{method:"POST",headers:this.commonHeaders()});case 12:if(!(r=e.sent).ok){e.next=22;break}return t=0,e.next=17,r.json();case 17:n=e.sent,i=n.token,this.token=i,e.next=23;break;case 22:403===r.status||403===r.status?(console.error("Fatal error while refreshing the token: ".concat(r.status," ").concat(r.statusText)),this.streamConnection.disconnect()):console.warn("Refresh attempt #".concat(t," failed: ").concat(r.status," ").concat(r.statusText));case 23:e.next=28;break;case 25:e.prev=25,e.t0=e.catch(9),console.warn("Refresh attempt #".concat(t," threw an exception: ").concat(e.t0));case 28:e.next=5;break;case 30:console.error("Retries exhausted"),this.streamConnection.disconnect();case 32:case"end":return e.stop()}}),e,this,[[9,25]])}))),function(){return i.apply(this,arguments)})},{key:"postActivity",value:function(e){var t=this;if(this.connectionStatus$.value===y.ConnectionStatus.Ended||this.connectionStatus$.value===y.ConnectionStatus.FailedToConnect)return m.Observable.throw(new Error("Connection is closed"));if("message"===e.type&&e.attachments&&e.attachments.length>0)return this.postMessageWithAttachments(e);var r=m.Observable.create(function(){var r=(0,l.default)(a.default.mark((function r(n){var i,o,s,c,u,l;return a.default.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return(i=_.StreamingRequest.create("POST","/v3/directline/conversations/"+t.conversationId+"/activities")).setBody(JSON.stringify(e)),r.prev=2,r.next=5,t.streamConnection.send(i);case 5:if(200===(o=r.sent).statusCode){r.next=8;break}throw new Error("PostActivity returned "+o.statusCode);case 8:if(1===(s=o.streams.length)){r.next=11;break}throw new Error("Expected one stream but got "+s);case 11:return r.next=13,o.streams[0].readAsString();case 13:return c=r.sent,u=JSON.parse(c),l=u.Id,n.next(l),r.abrupt("return",n.complete());case 19:return r.prev=19,r.t0=r.catch(2),console.warn(r.t0),t.streamConnection.disconnect(),r.abrupt("return",n.error(r.t0));case 24:case"end":return r.stop()}}),r,null,[[2,19]])})));return function(e){return r.apply(this,arguments)}}());return r}},{key:"postMessageWithAttachments",value:function(e){var t=this,r=e.attachments,n=(0,o.default)(e,b);return m.Observable.create((function(e){var i=[];(0,l.default)(a.default.mark((function o(){var s,c,u,p,d,f;return a.default.wrap((function(o){for(;;)switch(o.prev=o.next){case 0:return o.prev=0,o.next=3,Promise.all(r.map(function(){var e=(0,l.default)(a.default.mark((function e(t){var r,n;return a.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=t,e.next=3,(0,g.default)(r.contentUrl);case 3:if(!(n=e.sent).ok){e.next=12;break}return e.next=7,n.arrayBuffer();case 7:return e.t0=e.sent,e.t1=r,e.abrupt("return",{arrayBuffer:e.t0,media:e.t1});case 12:throw new Error("...");case 13:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()));case 3:return o.sent.forEach((function(e){var t=e.arrayBuffer,r=e.media,n=v.Buffer.from(t),o=new _.SubscribableStream;o.write(n);var a=new _.HttpContent({type:r.contentType,contentLength:n.length},o);i.push(a)})),s="/v3/directline/conversations/".concat(t.conversationId,"/users/").concat(n.from.id,"/upload"),c=_.StreamingRequest.create("PUT",s),(u=new _.SubscribableStream).write(JSON.stringify(n),"utf-8"),c.addStream(new _.HttpContent({type:"application/vnd.microsoft.activity",contentLength:u.length},u)),i.forEach((function(e){return c.addStream(e)})),o.next=13,t.streamConnection.send(c);case 13:if(!(p=o.sent).streams||1===p.streams.length){o.next=18;break}e.error(new Error("Invalid stream count ".concat(p.streams.length))),o.next=24;break;case 18:return o.next=20,p.streams[0].readAsJson();case 20:d=o.sent,f=d.Id,e.next(f),e.complete();case 24:o.next=29;break;case 26:o.prev=26,o.t0=o.catch(0),e.error(o.t0);case 29:case"end":return o.stop()}}),o,null,[[0,26]])})))()}))}},{key:"waitUntilOnline",value:(n=(0,l.default)(a.default.mark((function e(){var t=this;return a.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,r){t.connectionStatus$.subscribe((function(t){if(t===y.ConnectionStatus.Online)return e()}),(function(e){return r(e)}))})));case 1:case"end":return e.stop()}}),e)}))),function(){return n.apply(this,arguments)})},{key:"connectAsync",value:(r=(0,l.default)(a.default.mark((function e(){var t,r,n,i,o,c=this;return a.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if((t=new RegExp("^http(s?)")).test(this.domain)){e.next=3;break}throw"Domain must begin with http or https";case 3:return r={token:this.token},this.conversationId&&(r.conversationId=this.conversationId),n=new AbortController,i=new URLSearchParams(r).toString(),o="".concat(this.domain.replace(t,"ws$1"),"/conversations/connect?").concat(i),e.abrupt("return",new Promise(function(){var e=(0,l.default)(a.default.mark((function e(t,r){var i,u,l,p;return a.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,c.streamConnection=new E.default({disconnectionHandler:t,networkInformation:(0,s.default)(c,C),requestHandler:{processRequest:function(e){if(n.signal.aborted)throw new Error("Cannot process streaming request, `streamingConnection` should be disconnected.");return c.theStreamHandler.processRequest(e)}},url:o}),c.queueActivities=!0,e.next=5,c.streamConnection.connect();case 5:return i=_.StreamingRequest.create("POST","/v3/directline/conversations"),e.next=8,c.streamConnection.send(i);case 8:if(200===(u=e.sent).statusCode){e.next=11;break}throw new Error("Connection response code "+u.statusCode);case 11:if(1===u.streams.length){e.next=13;break}throw new Error("Expected 1 stream but got "+u.streams.length);case 13:return e.next=15,u.streams[0].readAsString();case 15:return l=e.sent,p=JSON.parse(l),c.conversationId=p.conversationId,c.connectionStatus$.next(y.ConnectionStatus.Online),e.next=21,c.waitUntilOnline();case 21:c.theStreamHandler.flush(),c.queueActivities=!1,e.next=28;break;case 25:e.prev=25,e.t0=e.catch(0),r(e.t0);case 28:case"end":return e.stop()}}),e,null,[[0,25]])})));return function(t,r){return e.apply(this,arguments)}}()).finally((function(){return n.abort()})));case 9:case"end":return e.stop()}}),e,this)}))),function(){return r.apply(this,arguments)})},{key:"connectWithRetryAsync",value:(t=(0,l.default)(a.default.mark((function e(){var t,r,n=this;return a.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,(this.connectDeferred=(0,T.default)()).promise;case 2:t=3,this.connectionStatus$.next(y.ConnectionStatus.Connecting);case 4:if(!(t>0)){e.next=27;break}return t--,r=Date.now(),e.prev=7,e.next=10,this.connectAsync();case 10:e.next=15;break;case 12:e.prev=12,e.t0=e.catch(7),console.error(e.t0);case 15:if(this.connectionStatus$.getValue()!==y.ConnectionStatus.Ended){e.next=17;break}return e.abrupt("return");case 17:if(this.connectionStatus$.getValue()!==y.ConnectionStatus.Connecting&&this.connectionStatus$.next(y.ConnectionStatus.Connecting),!(6e40)){e.next=25;break}return e.next=25,new Promise((function(e){return setTimeout(e,n.getRetryDelay())}));case 25:e.next=4;break;case 27:this.connectionStatus$.next(y.ConnectionStatus.FailedToConnect);case 28:e.next=0;break;case 30:case"end":return e.stop()}}),e,this,[[7,12]])}))),function(){return t.apply(this,arguments)})},{key:"getRetryDelay",value:function(){return Math.floor(3e3+12e3*Math.random())}}]),e}();t.DirectLineStreaming=I},48107:function(e,t,r){"use strict";var n=r(55925);Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){if(e){if(~e.indexOf(".")){var t=e.split(".").reverse(),r=(0,i.default)(t);return{extname:"."+r[0],name:r.slice(1).reverse().join(".")}}return{extname:"",name:e}}return{extname:"",name:""}};var i=n(r(82810))},98474:function(e,t,r){"use strict";var n=r(55925);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=n(r(70346)),o=n(r(53484)),a=n(r(21964)),s=n(r(29156)),c=n(r(81178)),u=n(r(68419)),l=n(r(2745)),p=n(r(53381)),d=n(r(84353)),f=r(38296);function h(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var r,n=(0,l.default)(e);if(t){var i=(0,l.default)(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return(0,u.default)(this,r)}}var v=new WeakMap,m=new WeakMap,_=new WeakMap,T=new WeakMap,g=function(e){(0,c.default)(r,e);var t=h(r);function r(e){var n,o=e.disconnectionHandler,s=e.networkInformation,c=e.requestHandler,u=e.url;return(0,i.default)(this,r),n=t.call(this,{disconnectionHandler:o,requestHandler:c,url:u}),v.set((0,a.default)(n),{writable:!0,value:!1}),m.set((0,a.default)(n),{writable:!0,value:function(){return(0,p.default)((0,a.default)(n),_)===(0,p.default)((0,a.default)(n),T).type||n.disconnect()}}),_.set((0,a.default)(n),{writable:!0,value:void 0}),T.set((0,a.default)(n),{writable:!0,value:void 0}),(0,d.default)((0,a.default)(n),T,s),n}return(0,o.default)(r,[{key:"connect",value:function(){if((0,p.default)(this,v))return console.warn("botframework-directlinejs: connect() can only be called once."),Promise.resolve();if((0,d.default)(this,v,!0),(0,p.default)(this,T)){var e=(0,p.default)(this,T).type;if((0,d.default)(this,_,e),"none"===e)return console.warn("botframework-directlinejs: Failed to connect while offline."),Promise.reject(new Error("botframework-directlinejs: Failed to connect while offline."));(0,p.default)(this,T).addEventListener("change",(0,p.default)(this,m))}return(0,s.default)((0,l.default)(r.prototype),"connect",this).call(this)}},{key:"disconnect",value:function(){var e;null===(e=(0,p.default)(this,T))||void 0===e||e.removeEventListener("change",(0,p.default)(this,m)),(0,s.default)((0,l.default)(r.prototype),"disconnect",this).call(this)}}]),r}(f.WebSocketClient);t.default=g},93818:function(e){e.exports=function(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o},e.exports.default=e.exports,e.exports.__esModule=!0},64856:function(e){e.exports=function(e,t){if(null==e)return{};var r,n,i={},o=Object.keys(e);for(n=0;n=0||(i[r]=e[r]);return i},e.exports.default=e.exports,e.exports.__esModule=!0},68419:function(e,t,r){var n=r(78207).default,i=r(21964);e.exports=function(e,t){return!t||"object"!==n(t)&&"function"!=typeof t?i(e):t},e.exports.default=e.exports,e.exports.__esModule=!0},32565:function(e){function t(r,n){return e.exports=t=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},e.exports.default=e.exports,e.exports.__esModule=!0,t(r,n)}e.exports=t,e.exports.default=e.exports,e.exports.__esModule=!0},48071:function(e,t,r){var n=r(2745);e.exports=function(e,t){for(;!Object.prototype.hasOwnProperty.call(e,t)&&null!==(e=n(e)););return e},e.exports.default=e.exports,e.exports.__esModule=!0},82810:function(e,t,r){var n=r(14082),i=r(66748),o=r(83699),a=r(7427);e.exports=function(e){return n(e)||i(e)||o(e)||a()},e.exports.default=e.exports,e.exports.__esModule=!0},73587:function(e,t,r){var n=r(73934),i=r(66748),o=r(83699),a=r(44182);e.exports=function(e){return n(e)||i(e)||o(e)||a()},e.exports.default=e.exports,e.exports.__esModule=!0},78207:function(e){function t(r){return"function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?(e.exports=t=function(e){return typeof e},e.exports.default=e.exports,e.exports.__esModule=!0):(e.exports=t=function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},e.exports.default=e.exports,e.exports.__esModule=!0),t(r)}e.exports=t,e.exports.default=e.exports,e.exports.__esModule=!0},83699:function(e,t,r){var n=r(93818);e.exports=function(e,t){if(e){if("string"==typeof e)return n(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?n(e,t):void 0}},e.exports.default=e.exports,e.exports.__esModule=!0},3335:function(e,t,r){e.exports=r(7452)},7813:function(e,t,r){r(90984),r(76902),r(87233),r(66176),r(65397),r(9340),r(15187),r(80306);var n=r(77616);e.exports=n.Promise},97954:function(e,t,r){var n=r(7813);r(30421),r(95269),r(78679),r(33252),e.exports=n},51461:function(e){e.exports=function(e){if("function"!=typeof e)throw TypeError(String(e)+" is not a function");return e}},49849:function(e,t,r){var n=r(35503);e.exports=function(e){if(!n(e)&&null!==e)throw TypeError("Can't set "+String(e)+" as a prototype");return e}},34418:function(e,t,r){var n=r(95018),i=r(88345),o=r(98),a=n("unscopables"),s=Array.prototype;null==s[a]&&o.f(s,a,{configurable:!0,value:i(null)}),e.exports=function(e){s[a][e]=!0}},79406:function(e){e.exports=function(e,t,r){if(!(e instanceof t))throw TypeError("Incorrect "+(r?r+" ":"")+"invocation");return e}},81450:function(e,t,r){var n=r(35503);e.exports=function(e){if(!n(e))throw TypeError(String(e)+" is not an object");return e}},95202:function(e,t,r){var n=r(12284),i=r(99515),o=r(5507),a=function(e){return function(t,r,a){var s,c=n(t),u=i(c.length),l=o(a,u);if(e&&r!=r){for(;u>l;)if((s=c[l++])!=s)return!0}else for(;u>l;l++)if((e||l in c)&&c[l]===r)return e||l||0;return!e&&-1}};e.exports={includes:a(!0),indexOf:a(!1)}},83971:function(e,t,r){var n=r(95018)("iterator"),i=!1;try{var o=0,a={next:function(){return{done:!!o++}},return:function(){i=!0}};a[n]=function(){return this},Array.from(a,(function(){throw 2}))}catch(e){}e.exports=function(e,t){if(!t&&!i)return!1;var r=!1;try{var o={};o[n]=function(){return{next:function(){return{done:r=!0}}}},e(o)}catch(e){}return r}},17297:function(e){var t={}.toString;e.exports=function(e){return t.call(e).slice(8,-1)}},15406:function(e,t,r){var n=r(3809),i=r(17297),o=r(95018)("toStringTag"),a="Arguments"==i(function(){return arguments}());e.exports=n?i:function(e){var t,r,n;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(r=function(e,t){try{return e[t]}catch(e){}}(t=Object(e),o))?r:a?i(t):"Object"==(n=i(t))&&"function"==typeof t.callee?"Arguments":n}},84817:function(e,t,r){var n=r(58707),i=r(36704),o=r(21160),a=r(98);e.exports=function(e,t){for(var r=i(t),s=a.f,c=o.f,u=0;u=74)&&(n=a.match(/Chrome\/(\d+)/))&&(i=n[1]),e.exports=i&&+i},80426:function(e){e.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},15133:function(e,t,r){var n=r(39760),i=r(21160).f,o=r(84776),a=r(53557),s=r(3823),c=r(84817),u=r(77497);e.exports=function(e,t){var r,l,p,d,f,h=e.target,v=e.global,m=e.stat;if(r=v?n:m?n[h]||s(h,{}):(n[h]||{}).prototype)for(l in t){if(d=t[l],p=e.noTargetGet?(f=i(r,l))&&f.value:r[l],!u(v?l:h+(m?".":"#")+l,e.forced)&&void 0!==p){if(typeof d==typeof p)continue;c(d,p)}(e.sham||p&&p.sham)&&o(d,"sham",!0),a(r,l,d,e)}}},54082:function(e){e.exports=function(e){try{return!!e()}catch(e){return!0}}},88685:function(e,t,r){var n=r(51461);e.exports=function(e,t,r){if(n(e),void 0===t)return e;switch(r){case 0:return function(){return e.call(t)};case 1:return function(r){return e.call(t,r)};case 2:return function(r,n){return e.call(t,r,n)};case 3:return function(r,n,i){return e.call(t,r,n,i)}}return function(){return e.apply(t,arguments)}}},74516:function(e,t,r){var n=r(77616),i=r(39760),o=function(e){return"function"==typeof e?e:void 0};e.exports=function(e,t){return arguments.length<2?o(n[e])||o(i[e]):n[e]&&n[e][t]||i[e]&&i[e][t]}},5762:function(e,t,r){var n=r(15406),i=r(89500),o=r(95018)("iterator");e.exports=function(e){if(null!=e)return e[o]||e["@@iterator"]||i[n(e)]}},39760:function(e,t,r){var n=function(e){return e&&e.Math==Math&&e};e.exports=n("object"==typeof globalThis&&globalThis)||n("object"==typeof window&&window)||n("object"==typeof self&&self)||n("object"==typeof r.g&&r.g)||function(){return this}()||Function("return this")()},58707:function(e,t,r){var n=r(64924),i={}.hasOwnProperty;e.exports=Object.hasOwn||function(e,t){return i.call(n(e),t)}},78644:function(e){e.exports={}},62970:function(e,t,r){var n=r(39760);e.exports=function(e,t){var r=n.console;r&&r.error&&(1===arguments.length?r.error(e):r.error(e,t))}},48274:function(e,t,r){var n=r(74516);e.exports=n("document","documentElement")},76662:function(e,t,r){var n=r(96077),i=r(54082),o=r(34678);e.exports=!n&&!i((function(){return 7!=Object.defineProperty(o("div"),"a",{get:function(){return 7}}).a}))},71040:function(e,t,r){var n=r(54082),i=r(17297),o="".split;e.exports=n((function(){return!Object("z").propertyIsEnumerable(0)}))?function(e){return"String"==i(e)?o.call(e,""):Object(e)}:Object},12930:function(e,t,r){var n=r(25878),i=Function.toString;"function"!=typeof n.inspectSource&&(n.inspectSource=function(e){return i.call(e)}),e.exports=n.inspectSource},26545:function(e,t,r){var n,i,o,a=r(96958),s=r(39760),c=r(35503),u=r(84776),l=r(58707),p=r(25878),d=r(67192),f=r(78644),h="Object already initialized",v=s.WeakMap;if(a||p.state){var m=p.state||(p.state=new v),_=m.get,T=m.has,g=m.set;n=function(e,t){if(T.call(m,e))throw new TypeError(h);return t.facade=e,g.call(m,e,t),t},i=function(e){return _.call(m,e)||{}},o=function(e){return T.call(m,e)}}else{var y=d("state");f[y]=!0,n=function(e,t){if(l(e,y))throw new TypeError(h);return t.facade=e,u(e,y,t),t},i=function(e){return l(e,y)?e[y]:{}},o=function(e){return l(e,y)}}e.exports={set:n,get:i,has:o,enforce:function(e){return o(e)?i(e):n(e,{})},getterFor:function(e){return function(t){var r;if(!c(t)||(r=i(t)).type!==e)throw TypeError("Incompatible receiver, "+e+" required");return r}}}},49346:function(e,t,r){var n=r(95018),i=r(89500),o=n("iterator"),a=Array.prototype;e.exports=function(e){return void 0!==e&&(i.Array===e||a[o]===e)}},77497:function(e,t,r){var n=r(54082),i=/#|\.prototype\./,o=function(e,t){var r=s[a(e)];return r==u||r!=c&&("function"==typeof t?n(t):!!t)},a=o.normalize=function(e){return String(e).replace(i,".").toLowerCase()},s=o.data={},c=o.NATIVE="N",u=o.POLYFILL="P";e.exports=o},35503:function(e){e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},15654:function(e){e.exports=!1},6089:function(e,t,r){var n=r(81450),i=r(49346),o=r(99515),a=r(88685),s=r(5762),c=r(85604),u=function(e,t){this.stopped=e,this.result=t};e.exports=function(e,t,r){var l,p,d,f,h,v,m,_=r&&r.that,T=!(!r||!r.AS_ENTRIES),g=!(!r||!r.IS_ITERATOR),y=!(!r||!r.INTERRUPTED),E=a(t,_,1+T+y),b=function(e){return l&&c(l),new u(!0,e)},A=function(e){return T?(n(e),y?E(e[0],e[1],b):E(e[0],e[1])):y?E(e,b):E(e)};if(g)l=e;else{if("function"!=typeof(p=s(e)))throw TypeError("Target is not iterable");if(i(p)){for(d=0,f=o(e.length);f>d;d++)if((h=A(e[d]))&&h instanceof u)return h;return new u(!1)}l=p.call(e)}for(v=l.next;!(m=v.call(l)).done;){try{h=A(m.value)}catch(e){throw c(l),e}if("object"==typeof h&&h&&h instanceof u)return h}return new u(!1)}},85604:function(e,t,r){var n=r(81450);e.exports=function(e){var t=e.return;if(void 0!==t)return n(t.call(e)).value}},80290:function(e,t,r){"use strict";var n,i,o,a=r(54082),s=r(42234),c=r(84776),u=r(58707),l=r(95018),p=r(15654),d=l("iterator"),f=!1;[].keys&&("next"in(o=[].keys())?(i=s(s(o)))!==Object.prototype&&(n=i):f=!0);var h=null==n||a((function(){var e={};return n[d].call(e)!==e}));h&&(n={}),p&&!h||u(n,d)||c(n,d,(function(){return this})),e.exports={IteratorPrototype:n,BUGGY_SAFARI_ITERATORS:f}},89500:function(e){e.exports={}},57022:function(e,t,r){var n,i,o,a,s,c,u,l,p=r(39760),d=r(21160).f,f=r(71106).set,h=r(52986),v=r(79830),m=r(98463),_=p.MutationObserver||p.WebKitMutationObserver,T=p.document,g=p.process,y=p.Promise,E=d(p,"queueMicrotask"),b=E&&E.value;b||(n=function(){var e,t;for(m&&(e=g.domain)&&e.exit();i;){t=i.fn,i=i.next;try{t()}catch(e){throw i?a():o=void 0,e}}o=void 0,e&&e.enter()},h||m||v||!_||!T?y&&y.resolve?((u=y.resolve(void 0)).constructor=y,l=u.then,a=function(){l.call(u,n)}):a=m?function(){g.nextTick(n)}:function(){f.call(p,n)}:(s=!0,c=T.createTextNode(""),new _(n).observe(c,{characterData:!0}),a=function(){c.data=s=!s})),e.exports=b||function(e){var t={fn:e,next:void 0};o&&(o.next=t),i||(i=t,a()),o=t}},45921:function(e,t,r){var n=r(39760);e.exports=n.Promise},20129:function(e,t,r){var n=r(35813),i=r(54082);e.exports=!!Object.getOwnPropertySymbols&&!i((function(){var e=Symbol();return!String(e)||!(Object(e)instanceof Symbol)||!Symbol.sham&&n&&n<41}))},96958:function(e,t,r){var n=r(39760),i=r(12930),o=n.WeakMap;e.exports="function"==typeof o&&/native code/.test(i(o))},3492:function(e,t,r){"use strict";var n=r(51461),i=function(e){var t,r;this.promise=new e((function(e,n){if(void 0!==t||void 0!==r)throw TypeError("Bad Promise constructor");t=e,r=n})),this.resolve=n(t),this.reject=n(r)};e.exports.f=function(e){return new i(e)}},88345:function(e,t,r){var n,i=r(81450),o=r(72974),a=r(80426),s=r(78644),c=r(48274),u=r(34678),l=r(67192),p="prototype",d="script",f=l("IE_PROTO"),h=function(){},v=function(e){return"<"+d+">"+e+""},m=function(){try{n=document.domain&&new ActiveXObject("htmlfile")}catch(e){}var e,t,r;m=n?function(e){e.write(v("")),e.close();var t=e.parentWindow.Object;return e=null,t}(n):(t=u("iframe"),r="java"+d+":",t.style.display="none",c.appendChild(t),t.src=String(r),(e=t.contentWindow.document).open(),e.write(v("document.F=Object")),e.close(),e.F);for(var i=a.length;i--;)delete m[p][a[i]];return m()};s[f]=!0,e.exports=Object.create||function(e,t){var r;return null!==e?(h[p]=i(e),r=new h,h[p]=null,r[f]=e):r=m(),void 0===t?r:o(r,t)}},72974:function(e,t,r){var n=r(96077),i=r(98),o=r(81450),a=r(97153);e.exports=n?Object.defineProperties:function(e,t){o(e);for(var r,n=a(t),s=n.length,c=0;s>c;)i.f(e,r=n[c++],t[r]);return e}},98:function(e,t,r){var n=r(96077),i=r(76662),o=r(81450),a=r(37922),s=Object.defineProperty;t.f=n?s:function(e,t,r){if(o(e),t=a(t,!0),o(r),i)try{return s(e,t,r)}catch(e){}if("get"in r||"set"in r)throw TypeError("Accessors not supported");return"value"in r&&(e[t]=r.value),e}},21160:function(e,t,r){var n=r(96077),i=r(15136),o=r(81507),a=r(12284),s=r(37922),c=r(58707),u=r(76662),l=Object.getOwnPropertyDescriptor;t.f=n?l:function(e,t){if(e=a(e),t=s(t,!0),u)try{return l(e,t)}catch(e){}if(c(e,t))return o(!i.f.call(e,t),e[t])}},28045:function(e,t,r){var n=r(19555),i=r(80426).concat("length","prototype");t.f=Object.getOwnPropertyNames||function(e){return n(e,i)}},79132:function(e,t){t.f=Object.getOwnPropertySymbols},42234:function(e,t,r){var n=r(58707),i=r(64924),o=r(67192),a=r(48680),s=o("IE_PROTO"),c=Object.prototype;e.exports=a?Object.getPrototypeOf:function(e){return e=i(e),n(e,s)?e[s]:"function"==typeof e.constructor&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?c:null}},19555:function(e,t,r){var n=r(58707),i=r(12284),o=r(95202).indexOf,a=r(78644);e.exports=function(e,t){var r,s=i(e),c=0,u=[];for(r in s)!n(a,r)&&n(s,r)&&u.push(r);for(;t.length>c;)n(s,r=t[c++])&&(~o(u,r)||u.push(r));return u}},97153:function(e,t,r){var n=r(19555),i=r(80426);e.exports=Object.keys||function(e){return n(e,i)}},15136:function(e,t){"use strict";var r={}.propertyIsEnumerable,n=Object.getOwnPropertyDescriptor,i=n&&!r.call({1:2},1);t.f=i?function(e){var t=n(this,e);return!!t&&t.enumerable}:r},21390:function(e,t,r){var n=r(81450),i=r(49849);e.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var e,t=!1,r={};try{(e=Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set).call(r,[]),t=r instanceof Array}catch(e){}return function(r,o){return n(r),i(o),t?e.call(r,o):r.__proto__=o,r}}():void 0)},26420:function(e,t,r){"use strict";var n=r(3809),i=r(15406);e.exports=n?{}.toString:function(){return"[object "+i(this)+"]"}},36704:function(e,t,r){var n=r(74516),i=r(28045),o=r(79132),a=r(81450);e.exports=n("Reflect","ownKeys")||function(e){var t=i.f(a(e)),r=o.f;return r?t.concat(r(e)):t}},77616:function(e,t,r){var n=r(39760);e.exports=n},72218:function(e){e.exports=function(e){try{return{error:!1,value:e()}}catch(e){return{error:!0,value:e}}}},77507:function(e,t,r){var n=r(81450),i=r(35503),o=r(3492);e.exports=function(e,t){if(n(e),i(t)&&t.constructor===e)return t;var r=o.f(e);return(0,r.resolve)(t),r.promise}},42987:function(e,t,r){var n=r(53557);e.exports=function(e,t,r){for(var i in t)n(e,i,t[i],r);return e}},53557:function(e,t,r){var n=r(39760),i=r(84776),o=r(58707),a=r(3823),s=r(12930),c=r(26545),u=c.get,l=c.enforce,p=String(String).split("String");(e.exports=function(e,t,r,s){var c,u=!!s&&!!s.unsafe,d=!!s&&!!s.enumerable,f=!!s&&!!s.noTargetGet;"function"==typeof r&&("string"!=typeof t||o(r,"name")||i(r,"name",t),(c=l(r)).source||(c.source=p.join("string"==typeof t?t:""))),e!==n?(u?!f&&e[t]&&(d=!0):delete e[t],d?e[t]=r:i(e,t,r)):d?e[t]=r:a(t,r)})(Function.prototype,"toString",(function(){return"function"==typeof this&&u(this).source||s(this)}))},43493:function(e){e.exports=function(e){if(null==e)throw TypeError("Can't call method on "+e);return e}},3823:function(e,t,r){var n=r(39760),i=r(84776);e.exports=function(e,t){try{i(n,e,t)}catch(r){n[e]=t}return t}},15468:function(e,t,r){"use strict";var n=r(74516),i=r(98),o=r(95018),a=r(96077),s=o("species");e.exports=function(e){var t=n(e),r=i.f;a&&t&&!t[s]&&r(t,s,{configurable:!0,get:function(){return this}})}},26250:function(e,t,r){var n=r(98).f,i=r(58707),o=r(95018)("toStringTag");e.exports=function(e,t,r){e&&!i(e=r?e:e.prototype,o)&&n(e,o,{configurable:!0,value:t})}},67192:function(e,t,r){var n=r(58090),i=r(15569),o=n("keys");e.exports=function(e){return o[e]||(o[e]=i(e))}},25878:function(e,t,r){var n=r(39760),i=r(3823),o="__core-js_shared__",a=n[o]||i(o,{});e.exports=a},58090:function(e,t,r){var n=r(15654),i=r(25878);(e.exports=function(e,t){return i[e]||(i[e]=void 0!==t?t:{})})("versions",[]).push({version:"3.15.2",mode:n?"pure":"global",copyright:"\xa9 2021 Denis Pushkarev (zloirock.ru)"})},44188:function(e,t,r){var n=r(81450),i=r(51461),o=r(95018)("species");e.exports=function(e,t){var r,a=n(e).constructor;return void 0===a||null==(r=n(a)[o])?t:i(r)}},25124:function(e,t,r){var n=r(52477),i=r(43493),o=function(e){return function(t,r){var o,a,s=String(i(t)),c=n(r),u=s.length;return c<0||c>=u?e?"":void 0:(o=s.charCodeAt(c))<55296||o>56319||c+1===u||(a=s.charCodeAt(c+1))<56320||a>57343?e?s.charAt(c):o:e?s.slice(c,c+2):a-56320+(o-55296<<10)+65536}};e.exports={codeAt:o(!1),charAt:o(!0)}},71106:function(e,t,r){var n,i,o,a=r(39760),s=r(54082),c=r(88685),u=r(48274),l=r(34678),p=r(52986),d=r(98463),f=a.location,h=a.setImmediate,v=a.clearImmediate,m=a.process,_=a.MessageChannel,T=a.Dispatch,g=0,y={},E="onreadystatechange",b=function(e){if(y.hasOwnProperty(e)){var t=y[e];delete y[e],t()}},A=function(e){return function(){b(e)}},S=function(e){b(e.data)},C=function(e){a.postMessage(e+"",f.protocol+"//"+f.host)};h&&v||(h=function(e){for(var t=[],r=1;arguments.length>r;)t.push(arguments[r++]);return y[++g]=function(){("function"==typeof e?e:Function(e)).apply(void 0,t)},n(g),g},v=function(e){delete y[e]},d?n=function(e){m.nextTick(A(e))}:T&&T.now?n=function(e){T.now(A(e))}:_&&!p?(o=(i=new _).port2,i.port1.onmessage=S,n=c(o.postMessage,o,1)):a.addEventListener&&"function"==typeof postMessage&&!a.importScripts&&f&&"file:"!==f.protocol&&!s(C)?(n=C,a.addEventListener("message",S,!1)):n=E in l("script")?function(e){u.appendChild(l("script"))[E]=function(){u.removeChild(this),b(e)}}:function(e){setTimeout(A(e),0)}),e.exports={set:h,clear:v}},5507:function(e,t,r){var n=r(52477),i=Math.max,o=Math.min;e.exports=function(e,t){var r=n(e);return r<0?i(r+t,0):o(r,t)}},12284:function(e,t,r){var n=r(71040),i=r(43493);e.exports=function(e){return n(i(e))}},52477:function(e){var t=Math.ceil,r=Math.floor;e.exports=function(e){return isNaN(e=+e)?0:(e>0?r:t)(e)}},99515:function(e,t,r){var n=r(52477),i=Math.min;e.exports=function(e){return e>0?i(n(e),9007199254740991):0}},64924:function(e,t,r){var n=r(43493);e.exports=function(e){return Object(n(e))}},37922:function(e,t,r){var n=r(35503);e.exports=function(e,t){if(!n(e))return e;var r,i;if(t&&"function"==typeof(r=e.toString)&&!n(i=r.call(e)))return i;if("function"==typeof(r=e.valueOf)&&!n(i=r.call(e)))return i;if(!t&&"function"==typeof(r=e.toString)&&!n(i=r.call(e)))return i;throw TypeError("Can't convert object to primitive value")}},3809:function(e,t,r){var n={};n[r(95018)("toStringTag")]="z",e.exports="[object z]"===String(n)},15569:function(e){var t=0,r=Math.random();e.exports=function(e){return"Symbol("+String(void 0===e?"":e)+")_"+(++t+r).toString(36)}},98337:function(e,t,r){var n=r(20129);e.exports=n&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},95018:function(e,t,r){var n=r(39760),i=r(58090),o=r(58707),a=r(15569),s=r(20129),c=r(98337),u=i("wks"),l=n.Symbol,p=c?l:l&&l.withoutSetter||a;e.exports=function(e){return o(u,e)&&(s||"string"==typeof u[e])||(s&&o(l,e)?u[e]=l[e]:u[e]=p("Symbol."+e)),u[e]}},90984:function(e,t,r){"use strict";var n=r(15133),i=r(42234),o=r(21390),a=r(88345),s=r(84776),c=r(81507),u=r(6089),l=function(e,t){var r=this;if(!(r instanceof l))return new l(e,t);o&&(r=o(new Error(void 0),i(r))),void 0!==t&&s(r,"message",String(t));var n=[];return u(e,n.push,{that:n}),s(r,"errors",n),r};l.prototype=a(Error.prototype,{constructor:c(5,l),message:c(5,""),name:c(5,"AggregateError")}),n({global:!0},{AggregateError:l})},36654:function(e,t,r){"use strict";var n=r(12284),i=r(34418),o=r(89500),a=r(26545),s=r(55971),c="Array Iterator",u=a.set,l=a.getterFor(c);e.exports=s(Array,"Array",(function(e,t){u(this,{type:c,target:n(e),index:0,kind:t})}),(function(){var e=l(this),t=e.target,r=e.kind,n=e.index++;return!t||n>=t.length?(e.target=void 0,{value:void 0,done:!0}):"keys"==r?{value:n,done:!1}:"values"==r?{value:t[n],done:!1}:{value:[n,t[n]],done:!1}}),"values"),o.Arguments=o.Array,i("keys"),i("values"),i("entries")},76902:function(e,t,r){var n=r(3809),i=r(53557),o=r(26420);n||i(Object.prototype,"toString",o,{unsafe:!0})},66176:function(e,t,r){"use strict";var n=r(15133),i=r(51461),o=r(3492),a=r(72218),s=r(6089);n({target:"Promise",stat:!0},{allSettled:function(e){var t=this,r=o.f(t),n=r.resolve,c=r.reject,u=a((function(){var r=i(t.resolve),o=[],a=0,c=1;s(e,(function(e){var i=a++,s=!1;o.push(void 0),c++,r.call(t,e).then((function(e){s||(s=!0,o[i]={status:"fulfilled",value:e},--c||n(o))}),(function(e){s||(s=!0,o[i]={status:"rejected",reason:e},--c||n(o))}))})),--c||n(o)}));return u.error&&c(u.value),r.promise}})},65397:function(e,t,r){"use strict";var n=r(15133),i=r(51461),o=r(74516),a=r(3492),s=r(72218),c=r(6089),u="No one promise resolved";n({target:"Promise",stat:!0},{any:function(e){var t=this,r=a.f(t),n=r.resolve,l=r.reject,p=s((function(){var r=i(t.resolve),a=[],s=0,p=1,d=!1;c(e,(function(e){var i=s++,c=!1;a.push(void 0),p++,r.call(t,e).then((function(e){c||d||(d=!0,n(e))}),(function(e){c||d||(c=!0,a[i]=e,--p||l(new(o("AggregateError"))(a,u)))}))})),--p||l(new(o("AggregateError"))(a,u))}));return p.error&&l(p.value),r.promise}})},9340:function(e,t,r){"use strict";var n=r(15133),i=r(15654),o=r(45921),a=r(54082),s=r(74516),c=r(44188),u=r(77507),l=r(53557);if(n({target:"Promise",proto:!0,real:!0,forced:!!o&&a((function(){o.prototype.finally.call({then:function(){}},(function(){}))}))},{finally:function(e){var t=c(this,s("Promise")),r="function"==typeof e;return this.then(r?function(r){return u(t,e()).then((function(){return r}))}:e,r?function(r){return u(t,e()).then((function(){throw r}))}:e)}}),!i&&"function"==typeof o){var p=s("Promise").prototype.finally;o.prototype.finally!==p&&l(o.prototype,"finally",p,{unsafe:!0})}},87233:function(e,t,r){"use strict";var n,i,o,a,s=r(15133),c=r(15654),u=r(39760),l=r(74516),p=r(45921),d=r(53557),f=r(42987),h=r(21390),v=r(26250),m=r(15468),_=r(35503),T=r(51461),g=r(79406),y=r(12930),E=r(6089),b=r(83971),A=r(44188),S=r(71106).set,C=r(57022),I=r(77507),O=r(62970),w=r(3492),R=r(72218),P=r(26545),N=r(77497),x=r(95018),L=r(88547),k=r(98463),D=r(35813),M=x("species"),B="Promise",H=P.get,j=P.set,V=P.getterFor(B),U=p&&p.prototype,F=p,z=U,Y=u.TypeError,G=u.document,W=u.process,q=w.f,K=q,$=!!(G&&G.createEvent&&u.dispatchEvent),X="function"==typeof PromiseRejectionEvent,J="unhandledrejection",Z=!1,Q=N(B,(function(){var e=y(F),t=e!==String(F);if(!t&&66===D)return!0;if(c&&!z.finally)return!0;if(D>=51&&/native code/.test(e))return!1;var r=new F((function(e){e(1)})),n=function(e){e((function(){}),(function(){}))};return(r.constructor={})[M]=n,!(Z=r.then((function(){}))instanceof n)||!t&&L&&!X})),ee=Q||!b((function(e){F.all(e).catch((function(){}))})),te=function(e){var t;return!(!_(e)||"function"!=typeof(t=e.then))&&t},re=function(e,t){if(!e.notified){e.notified=!0;var r=e.reactions;C((function(){for(var n=e.value,i=1==e.state,o=0;r.length>o;){var a,s,c,u=r[o++],l=i?u.ok:u.fail,p=u.resolve,d=u.reject,f=u.domain;try{l?(i||(2===e.rejection&&ae(e),e.rejection=1),!0===l?a=n:(f&&f.enter(),a=l(n),f&&(f.exit(),c=!0)),a===u.promise?d(Y("Promise-chain cycle")):(s=te(a))?s.call(a,p,d):p(a)):d(n)}catch(e){f&&!c&&f.exit(),d(e)}}e.reactions=[],e.notified=!1,t&&!e.rejection&&ie(e)}))}},ne=function(e,t,r){var n,i;$?((n=G.createEvent("Event")).promise=t,n.reason=r,n.initEvent(e,!1,!0),u.dispatchEvent(n)):n={promise:t,reason:r},!X&&(i=u["on"+e])?i(n):e===J&&O("Unhandled promise rejection",r)},ie=function(e){S.call(u,(function(){var t,r=e.facade,n=e.value;if(oe(e)&&(t=R((function(){k?W.emit("unhandledRejection",n,r):ne(J,r,n)})),e.rejection=k||oe(e)?2:1,t.error))throw t.value}))},oe=function(e){return 1!==e.rejection&&!e.parent},ae=function(e){S.call(u,(function(){var t=e.facade;k?W.emit("rejectionHandled",t):ne("rejectionhandled",t,e.value)}))},se=function(e,t,r){return function(n){e(t,n,r)}},ce=function(e,t,r){e.done||(e.done=!0,r&&(e=r),e.value=t,e.state=2,re(e,!0))},ue=function(e,t,r){if(!e.done){e.done=!0,r&&(e=r);try{if(e.facade===t)throw Y("Promise can't be resolved itself");var n=te(t);n?C((function(){var r={done:!1};try{n.call(t,se(ue,r,e),se(ce,r,e))}catch(t){ce(r,t,e)}})):(e.value=t,e.state=1,re(e,!1))}catch(t){ce({done:!1},t,e)}}};if(Q&&(z=(F=function(e){g(this,F,B),T(e),n.call(this);var t=H(this);try{e(se(ue,t),se(ce,t))}catch(e){ce(t,e)}}).prototype,(n=function(e){j(this,{type:B,done:!1,notified:!1,parent:!1,reactions:[],rejection:!1,state:0,value:void 0})}).prototype=f(z,{then:function(e,t){var r=V(this),n=q(A(this,F));return n.ok="function"!=typeof e||e,n.fail="function"==typeof t&&t,n.domain=k?W.domain:void 0,r.parent=!0,r.reactions.push(n),0!=r.state&&re(r,!1),n.promise},catch:function(e){return this.then(void 0,e)}}),i=function(){var e=new n,t=H(e);this.promise=e,this.resolve=se(ue,t),this.reject=se(ce,t)},w.f=q=function(e){return e===F||e===o?new i(e):K(e)},!c&&"function"==typeof p&&U!==Object.prototype)){a=U.then,Z||(d(U,"then",(function(e,t){var r=this;return new F((function(e,t){a.call(r,e,t)})).then(e,t)}),{unsafe:!0}),d(U,"catch",z.catch,{unsafe:!0}));try{delete U.constructor}catch(e){}h&&h(U,z)}s({global:!0,wrap:!0,forced:Q},{Promise:F}),v(F,B,!1,!0),m(B),o=l(B),s({target:B,stat:!0,forced:Q},{reject:function(e){var t=q(this);return t.reject.call(void 0,e),t.promise}}),s({target:B,stat:!0,forced:c||Q},{resolve:function(e){return I(c&&this===o?F:this,e)}}),s({target:B,stat:!0,forced:ee},{all:function(e){var t=this,r=q(t),n=r.resolve,i=r.reject,o=R((function(){var r=T(t.resolve),o=[],a=0,s=1;E(e,(function(e){var c=a++,u=!1;o.push(void 0),s++,r.call(t,e).then((function(e){u||(u=!0,o[c]=e,--s||n(o))}),i)})),--s||n(o)}));return o.error&&i(o.value),r.promise},race:function(e){var t=this,r=q(t),n=r.reject,i=R((function(){var i=T(t.resolve);E(e,(function(e){i.call(t,e).then(r.resolve,n)}))}));return i.error&&n(i.value),r.promise}})},15187:function(e,t,r){"use strict";var n=r(25124).charAt,i=r(26545),o=r(55971),a="String Iterator",s=i.set,c=i.getterFor(a);o(String,"String",(function(e){s(this,{type:a,string:String(e),index:0})}),(function(){var e,t=c(this),r=t.string,i=t.index;return i>=r.length?{value:void 0,done:!0}:(e=n(r,i),t.index+=e.length,{value:e,done:!1})}))},30421:function(e,t,r){r(90984)},95269:function(e,t,r){r(66176)},33252:function(e,t,r){r(65397)},78679:function(e,t,r){"use strict";var n=r(15133),i=r(3492),o=r(72218);n({target:"Promise",stat:!0},{try:function(e){var t=i.f(this),r=o(e);return(r.error?t.reject:t.resolve)(r.value),t.promise}})},80306:function(e,t,r){var n=r(39760),i=r(65877),o=r(36654),a=r(84776),s=r(95018),c=s("iterator"),u=s("toStringTag"),l=o.values;for(var p in i){var d=n[p],f=d&&d.prototype;if(f){if(f[c]!==l)try{a(f,c,l)}catch(e){f[c]=l}if(f[u]||a(f,u,p),i[p])for(var h in o)if(f[h]!==o[h])try{a(f,h,o[h])}catch(e){f[h]=o[h]}}}},53362:function(e,t,r){"use strict";var n=this&&this.__extends||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r]);function n(){this.constructor=e}e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)},i=r(37592),o=r(62580),a=function(e){function t(t){e.call(this),this._value=t}return n(t,e),Object.defineProperty(t.prototype,"value",{get:function(){return this.getValue()},enumerable:!0,configurable:!0}),t.prototype._subscribe=function(t){var r=e.prototype._subscribe.call(this,t);return r&&!r.closed&&t.next(this._value),r},t.prototype.getValue=function(){if(this.hasError)throw this.thrownError;if(this.closed)throw new o.ObjectUnsubscribedError;return this._value},t.prototype.next=function(t){e.prototype.next.call(this,this._value=t)},t}(i.Subject);t.BehaviorSubject=a},84985:function(e,t,r){"use strict";var n=this&&this.__extends||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r]);function n(){this.constructor=e}e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)},i=function(e){function t(t,r,n){e.call(this),this.parent=t,this.outerValue=r,this.outerIndex=n,this.index=0}return n(t,e),t.prototype._next=function(e){this.parent.notifyNext(this.outerValue,e,this.outerIndex,this.index++,this)},t.prototype._error=function(e){this.parent.notifyError(e,this),this.unsubscribe()},t.prototype._complete=function(){this.parent.notifyComplete(this),this.unsubscribe()},t}(r(94788).Subscriber);t.InnerSubscriber=i},25053:function(e,t,r){"use strict";var n=r(15907),i=function(){function e(e,t,r){this.kind=e,this.value=t,this.error=r,this.hasValue="N"===e}return e.prototype.observe=function(e){switch(this.kind){case"N":return e.next&&e.next(this.value);case"E":return e.error&&e.error(this.error);case"C":return e.complete&&e.complete()}},e.prototype.do=function(e,t,r){switch(this.kind){case"N":return e&&e(this.value);case"E":return t&&t(this.error);case"C":return r&&r()}},e.prototype.accept=function(e,t,r){return e&&"function"==typeof e.next?this.observe(e):this.do(e,t,r)},e.prototype.toObservable=function(){switch(this.kind){case"N":return n.Observable.of(this.value);case"E":return n.Observable.throw(this.error);case"C":return n.Observable.empty()}throw new Error("unexpected notification kind value")},e.createNext=function(t){return void 0!==t?new e("N",t):e.undefinedValueNotification},e.createError=function(t){return new e("E",void 0,t)},e.createComplete=function(){return e.completeNotification},e.completeNotification=new e("C"),e.undefinedValueNotification=new e("N",void 0),e}();t.Notification=i},15907:function(e,t,r){"use strict";var n=r(50557),i=r(82566),o=r(44084),a=r(72205),s=function(){function e(e){this._isScalar=!1,e&&(this._subscribe=e)}return e.prototype.lift=function(t){var r=new e;return r.source=this,r.operator=t,r},e.prototype.subscribe=function(e,t,r){var n=this.operator,o=i.toSubscriber(e,t,r);if(n?n.call(o,this.source):o.add(this.source||!o.syncErrorThrowable?this._subscribe(o):this._trySubscribe(o)),o.syncErrorThrowable&&(o.syncErrorThrowable=!1,o.syncErrorThrown))throw o.syncErrorValue;return o},e.prototype._trySubscribe=function(e){try{return this._subscribe(e)}catch(t){e.syncErrorThrown=!0,e.syncErrorValue=t,e.error(t)}},e.prototype.forEach=function(e,t){var r=this;if(t||(n.root.Rx&&n.root.Rx.config&&n.root.Rx.config.Promise?t=n.root.Rx.config.Promise:n.root.Promise&&(t=n.root.Promise)),!t)throw new Error("no Promise impl found");return new t((function(t,n){var i;i=r.subscribe((function(t){if(i)try{e(t)}catch(e){n(e),i.unsubscribe()}else e(t)}),n,t)}))},e.prototype._subscribe=function(e){return this.source.subscribe(e)},e.prototype[o.observable]=function(){return this},e.prototype.pipe=function(){for(var e=[],t=0;t=n?i.complete():(i.next(t[r]),e.index=r+1,this.schedule(e)))},t.prototype._subscribe=function(e){var r=this.arrayLike,n=this.scheduler,i=r.length;if(n)return n.schedule(t.dispatch,0,{arrayLike:r,index:0,length:i,subscriber:e});for(var o=0;o1?new t(e,n):1===i?new o.ScalarObservable(e[0],n):new a.EmptyObservable(n)},t.dispatch=function(e){var t=e.array,r=e.index,n=e.count,i=e.subscriber;r>=n?i.complete():(i.next(t[r]),i.closed||(e.index=r+1,this.schedule(e)))},t.prototype._subscribe=function(e){var r=this.array,n=r.length,i=this.scheduler;if(i)return i.schedule(t.dispatch,0,{array:r,index:0,count:n,subscriber:e});for(var o=0;o1)this.connection=null;else{var r=this.connection,n=e._connection;this.connection=null,!n||r&&n!==r||n.unsubscribe()}}else this.connection=null},t}(a.Subscriber))},94536:function(e,t,r){"use strict";var n=this&&this.__extends||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r]);function n(){this.constructor=e}e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)},i=function(e){function t(t){e.call(this),this.scheduler=t}return n(t,e),t.create=function(e){return new t(e)},t.dispatch=function(e){e.subscriber.complete()},t.prototype._subscribe=function(e){var r=this.scheduler;if(r)return r.schedule(t.dispatch,0,{subscriber:e});e.complete()},t}(r(15907).Observable);t.EmptyObservable=i},73327:function(e,t,r){"use strict";var n=this&&this.__extends||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r]);function n(){this.constructor=e}e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)},i=function(e){function t(t,r){e.call(this),this.error=t,this.scheduler=r}return n(t,e),t.create=function(e,r){return new t(e,r)},t.dispatch=function(e){var t=e.error;e.subscriber.error(t)},t.prototype._subscribe=function(e){var r=this.error,n=this.scheduler;if(e.syncErrorThrowable=!0,n)return n.schedule(t.dispatch,0,{error:r,subscriber:e});e.error(r)},t}(r(15907).Observable);t.ErrorObservable=i},70515:function(e,t,r){"use strict";var n=this&&this.__extends||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r]);function n(){this.constructor=e}e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)},i=r(83016),o=r(90799),a=r(98576),s=r(62012),c=r(76553),u=r(62944),l=r(61643),p=r(10107),d=r(15907),f=r(54231),h=r(44084),v=function(e){function t(t,r){e.call(this,null),this.ish=t,this.scheduler=r}return n(t,e),t.create=function(e,r){if(null!=e){if("function"==typeof e[h.observable])return e instanceof d.Observable&&!r?e:new t(e,r);if(i.isArray(e))return new u.ArrayObservable(e,r);if(a.isPromise(e))return new s.PromiseObservable(e,r);if("function"==typeof e[p.iterator]||"string"==typeof e)return new c.IteratorObservable(e,r);if(o.isArrayLike(e))return new l.ArrayLikeObservable(e,r)}throw new TypeError((null!==e&&typeof e||e)+" is not observable")},t.prototype._subscribe=function(e){var t=this.ish,r=this.scheduler;return null==r?t[h.observable]().subscribe(e):t[h.observable]().subscribe(new f.ObserveOnSubscriber(e,r,0))},t}(d.Observable);t.FromObservable=v},74750:function(e,t,r){"use strict";var n=this&&this.__extends||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r]);function n(){this.constructor=e}e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)},i=r(36638),o=r(15907),a=r(78086),s=function(e){function t(t,r){void 0===t&&(t=0),void 0===r&&(r=a.async),e.call(this),this.period=t,this.scheduler=r,(!i.isNumeric(t)||t<0)&&(this.period=0),r&&"function"==typeof r.schedule||(this.scheduler=a.async)}return n(t,e),t.create=function(e,r){return void 0===e&&(e=0),void 0===r&&(r=a.async),new t(e,r)},t.dispatch=function(e){var t=e.index,r=e.subscriber,n=e.period;r.next(t),r.closed||(e.index+=1,this.schedule(e,n))},t.prototype._subscribe=function(e){var r=this.period,n=this.scheduler;e.add(n.schedule(t.dispatch,r,{index:0,subscriber:e,period:r}))},t}(o.Observable);t.IntervalObservable=s},76553:function(e,t,r){"use strict";var n=this&&this.__extends||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r]);function n(){this.constructor=e}e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)},i=r(50557),o=r(15907),a=r(10107),s=function(e){function t(t,r){if(e.call(this),this.scheduler=r,null==t)throw new Error("iterator cannot be null.");this.iterator=function(e){var t=e[a.iterator];if(!t&&"string"==typeof e)return new c(e);if(!t&&void 0!==e.length)return new u(e);if(!t)throw new TypeError("object is not iterable");return e[a.iterator]()}(t)}return n(t,e),t.create=function(e,r){return new t(e,r)},t.dispatch=function(e){var t=e.index,r=e.hasError,n=e.iterator,i=e.subscriber;if(r)i.error(e.error);else{var o=n.next();o.done?i.complete():(i.next(o.value),e.index=t+1,i.closed?"function"==typeof n.return&&n.return():this.schedule(e))}},t.prototype._subscribe=function(e){var r=this.iterator,n=this.scheduler;if(n)return n.schedule(t.dispatch,0,{index:0,iterator:r,subscriber:e});for(;;){var i=r.next();if(i.done){e.complete();break}if(e.next(i.value),e.closed){"function"==typeof r.return&&r.return();break}}},t}(o.Observable);t.IteratorObservable=s;var c=function(){function e(e,t,r){void 0===t&&(t=0),void 0===r&&(r=e.length),this.str=e,this.idx=t,this.len=r}return e.prototype[a.iterator]=function(){return this},e.prototype.next=function(){return this.idxl)return l;return t}(e)),this.arr=e,this.idx=t,this.len=r}return e.prototype[a.iterator]=function(){return this},e.prototype.next=function(){return this.idx0&&r[0].time-n.now()<=0;)r.shift().notification.observe(i);if(r.length>0){var o=Math.max(0,r[0].time-n.now());this.schedule(e,o)}else this.unsubscribe(),t.active=!1},t.prototype._schedule=function(e){this.active=!0,this.add(e.schedule(t.dispatch,this.delay,{source:this,destination:this.destination,scheduler:e}))},t.prototype.scheduleNotification=function(e){if(!0!==this.errored){var t=this.scheduler,r=new l(t.now()+this.delay,e);this.queue.push(r),!1===this.active&&this._schedule(t)}},t.prototype._next=function(e){this.scheduleNotification(s.Notification.createNext(e))},t.prototype._error=function(e){this.errored=!0,this.queue=[],this.destination.error(e)},t.prototype._complete=function(){this.scheduleNotification(s.Notification.createComplete())},t}(a.Subscriber),l=function(e,t){this.time=e,this.notification=t}},52382:function(e,t,r){"use strict";var n=this&&this.__extends||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r]);function n(){this.constructor=e}e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)},i=r(94788);t.filter=function(e,t){return function(r){return r.lift(new o(e,t))}};var o=function(){function e(e,t){this.predicate=e,this.thisArg=t}return e.prototype.call=function(e,t){return t.subscribe(new a(e,this.predicate,this.thisArg))},e}(),a=function(e){function t(t,r,n){e.call(this,t),this.predicate=r,this.thisArg=n,this.count=0}return n(t,e),t.prototype._next=function(e){var t;try{t=this.predicate.call(this.thisArg,e,this.count++)}catch(e){return void this.destination.error(e)}t&&this.destination.next(e)},t}(i.Subscriber)},26824:function(e,t,r){"use strict";var n=this&&this.__extends||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r]);function n(){this.constructor=e}e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)},i=r(94788);t.map=function(e,t){return function(r){if("function"!=typeof e)throw new TypeError("argument is not a function. Are you looking for `mapTo()`?");return r.lift(new o(e,t))}};var o=function(){function e(e,t){this.project=e,this.thisArg=t}return e.prototype.call=function(e,t){return t.subscribe(new a(e,this.project,this.thisArg))},e}();t.MapOperator=o;var a=function(e){function t(t,r,n){e.call(this,t),this.project=r,this.count=0,this.thisArg=n||this}return n(t,e),t.prototype._next=function(e){var t;try{t=this.project.call(this.thisArg,e,this.count++)}catch(e){return void this.destination.error(e)}this.destination.next(t)},t}(i.Subscriber)},58438:function(e,t,r){"use strict";var n=this&&this.__extends||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r]);function n(){this.constructor=e}e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)},i=r(39913),o=r(68801);t.mergeMap=function(e,t,r){return void 0===r&&(r=Number.POSITIVE_INFINITY),function(n){return"number"==typeof t&&(r=t,t=null),n.lift(new a(e,t,r))}};var a=function(){function e(e,t,r){void 0===r&&(r=Number.POSITIVE_INFINITY),this.project=e,this.resultSelector=t,this.concurrent=r}return e.prototype.call=function(e,t){return t.subscribe(new s(e,this.project,this.resultSelector,this.concurrent))},e}();t.MergeMapOperator=a;var s=function(e){function t(t,r,n,i){void 0===i&&(i=Number.POSITIVE_INFINITY),e.call(this,t),this.project=r,this.resultSelector=n,this.concurrent=i,this.hasCompleted=!1,this.buffer=[],this.active=0,this.index=0}return n(t,e),t.prototype._next=function(e){this.active0?this._next(t.shift()):0===this.active&&this.hasCompleted&&this.destination.complete()},t}(o.OuterSubscriber);t.MergeMapSubscriber=s},3600:function(e,t,r){"use strict";var n=r(88263);t.multicast=function(e,t){return function(r){var o;if(o="function"==typeof e?e:function(){return e},"function"==typeof t)return r.lift(new i(o,t));var a=Object.create(r,n.connectableObservableDescriptor);return a.source=r,a.subjectFactory=o,a}};var i=function(){function e(e,t){this.subjectFactory=e,this.selector=t}return e.prototype.call=function(e,t){var r=this.selector,n=this.subjectFactory(),i=r(n).subscribe(e);return i.add(t.subscribe(n)),i},e}();t.MulticastOperator=i},54231:function(e,t,r){"use strict";var n=this&&this.__extends||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r]);function n(){this.constructor=e}e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)},i=r(94788),o=r(25053);t.observeOn=function(e,t){return void 0===t&&(t=0),function(r){return r.lift(new a(e,t))}};var a=function(){function e(e,t){void 0===t&&(t=0),this.scheduler=e,this.delay=t}return e.prototype.call=function(e,t){return t.subscribe(new s(e,this.scheduler,this.delay))},e}();t.ObserveOnOperator=a;var s=function(e){function t(t,r,n){void 0===n&&(n=0),e.call(this,t),this.scheduler=r,this.delay=n}return n(t,e),t.dispatch=function(e){var t=e.notification,r=e.destination;t.observe(r),this.unsubscribe()},t.prototype.scheduleMessage=function(e){this.add(this.scheduler.schedule(t.dispatch,this.delay,new c(e,this.destination)))},t.prototype._next=function(e){this.scheduleMessage(o.Notification.createNext(e))},t.prototype._error=function(e){this.scheduleMessage(o.Notification.createError(e))},t.prototype._complete=function(){this.scheduleMessage(o.Notification.createComplete())},t}(i.Subscriber);t.ObserveOnSubscriber=s;var c=function(e,t){this.notification=e,this.destination=t};t.ObserveOnMessage=c},13768:function(e,t,r){"use strict";var n=this&&this.__extends||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r]);function n(){this.constructor=e}e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)},i=r(94788);t.refCount=function(){return function(e){return e.lift(new o(e))}};var o=function(){function e(e){this.connectable=e}return e.prototype.call=function(e,t){var r=this.connectable;r._refCount++;var n=new a(e,r),i=t.subscribe(n);return n.closed||(n.connection=r.connect()),i},e}(),a=function(e){function t(t,r){e.call(this,t),this.connectable=r}return n(t,e),t.prototype._unsubscribe=function(){var e=this.connectable;if(e){this.connectable=null;var t=e._refCount;if(t<=0)this.connection=null;else if(e._refCount=t-1,t>1)this.connection=null;else{var r=this.connection,n=e._connection;this.connection=null,!n||r&&n!==r||n.unsubscribe()}}else this.connection=null},t}(i.Subscriber)},20596:function(e,t,r){"use strict";var n=this&&this.__extends||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r]);function n(){this.constructor=e}e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)},i=r(37592),o=r(39645),a=r(57892),s=r(68801),c=r(39913);t.retryWhen=function(e){return function(t){return t.lift(new u(e,t))}};var u=function(){function e(e,t){this.notifier=e,this.source=t}return e.prototype.call=function(e,t){return t.subscribe(new l(e,this.notifier,this.source))},e}(),l=function(e){function t(t,r,n){e.call(this,t),this.notifier=r,this.source=n}return n(t,e),t.prototype.error=function(t){if(!this.isStopped){var r=this.errors,n=this.retries,s=this.retriesSubscription;if(n)this.errors=null,this.retriesSubscription=null;else{if(r=new i.Subject,(n=o.tryCatch(this.notifier)(r))===a.errorObject)return e.prototype.error.call(this,a.errorObject.e);s=c.subscribeToResult(this,n)}this._unsubscribeAndRecycle(),this.errors=r,this.retries=n,this.retriesSubscription=s,r.next(t)}},t.prototype._unsubscribe=function(){var e=this.errors,t=this.retriesSubscription;e&&(e.unsubscribe(),this.errors=null),t&&(t.unsubscribe(),this.retriesSubscription=null),this.retries=null},t.prototype.notifyNext=function(e,t,r,n,i){var o=this,a=o.errors,s=o.retries,c=o.retriesSubscription;this.errors=null,this.retries=null,this.retriesSubscription=null,this._unsubscribeAndRecycle(),this.errors=a,this.retries=s,this.retriesSubscription=c,this.source.subscribe(this)},t}(s.OuterSubscriber)},52461:function(e,t,r){"use strict";var n=r(3600),i=r(13768),o=r(37592);function a(){return new o.Subject}t.share=function(){return function(e){return i.refCount()(n.multicast(a)(e))}}},32479:function(e,t,r){"use strict";var n=this&&this.__extends||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r]);function n(){this.constructor=e}e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)},i=r(94788),o=r(60800),a=r(94536);t.take=function(e){return function(t){return 0===e?new a.EmptyObservable:t.lift(new s(e))}};var s=function(){function e(e){if(this.total=e,this.total<0)throw new o.ArgumentOutOfRangeError}return e.prototype.call=function(e,t){return t.subscribe(new c(e,this.total))},e}(),c=function(e){function t(t,r){e.call(this,t),this.total=r,this.count=0}return n(t,e),t.prototype._next=function(e){var t=this.total,r=++this.count;r<=t&&(this.destination.next(e),r===t&&(this.destination.complete(),this.unsubscribe()))},t}(i.Subscriber)},65115:function(e,t,r){"use strict";var n=this&&this.__extends||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r]);function n(){this.constructor=e}e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)},i=r(94788);t.tap=function(e,t,r){return function(n){return n.lift(new o(e,t,r))}};var o=function(){function e(e,t,r){this.nextOrObserver=e,this.error=t,this.complete=r}return e.prototype.call=function(e,t){return t.subscribe(new a(e,this.nextOrObserver,this.error,this.complete))},e}(),a=function(e){function t(t,r,n,o){e.call(this,t);var a=new i.Subscriber(r,n,o);a.syncErrorThrowable=!0,this.add(a),this.safeSubscriber=a}return n(t,e),t.prototype._next=function(e){var t=this.safeSubscriber;t.next(e),t.syncErrorThrown?this.destination.error(t.syncErrorValue):this.destination.next(e)},t.prototype._error=function(e){var t=this.safeSubscriber;t.error(e),t.syncErrorThrown?this.destination.error(t.syncErrorValue):this.destination.error(e)},t.prototype._complete=function(){var e=this.safeSubscriber;e.complete(),e.syncErrorThrown?this.destination.error(e.syncErrorValue):this.destination.complete()},t}(i.Subscriber)},85378:function(e,t,r){"use strict";var n=this&&this.__extends||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r]);function n(){this.constructor=e}e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)},i=function(e){function t(t,r){e.call(this)}return n(t,e),t.prototype.schedule=function(e,t){return void 0===t&&(t=0),this},t}(r(15143).Subscription);t.Action=i},30228:function(e,t,r){"use strict";var n=this&&this.__extends||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r]);function n(){this.constructor=e}e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)},i=r(50557),o=function(e){function t(t,r){e.call(this,t,r),this.scheduler=t,this.pending=!1,this.work=r}return n(t,e),t.prototype.schedule=function(e,t){if(void 0===t&&(t=0),this.closed)return this;this.state=e,this.pending=!0;var r=this.id,n=this.scheduler;return null!=r&&(this.id=this.recycleAsyncId(n,r,t)),this.delay=t,this.id=this.id||this.requestAsyncId(n,this.id,t),this},t.prototype.requestAsyncId=function(e,t,r){return void 0===r&&(r=0),i.root.setInterval(e.flush.bind(e,this),r)},t.prototype.recycleAsyncId=function(e,t,r){if(void 0===r&&(r=0),null!==r&&this.delay===r&&!1===this.pending)return t;i.root.clearInterval(t)},t.prototype.execute=function(e,t){if(this.closed)return new Error("executing a cancelled action");this.pending=!1;var r=this._execute(e,t);if(r)return r;!1===this.pending&&null!=this.id&&(this.id=this.recycleAsyncId(this.scheduler,this.id,null))},t.prototype._execute=function(e,t){var r=!1,n=void 0;try{this.work(e)}catch(e){r=!0,n=!!e&&e||new Error(e)}if(r)return this.unsubscribe(),n},t.prototype._unsubscribe=function(){var e=this.id,t=this.scheduler,r=t.actions,n=r.indexOf(this);this.work=null,this.state=null,this.pending=!1,this.scheduler=null,-1!==n&&r.splice(n,1),null!=e&&(this.id=this.recycleAsyncId(t,e,null)),this.delay=null},t}(r(85378).Action);t.AsyncAction=o},51805:function(e,t,r){"use strict";var n=this&&this.__extends||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r]);function n(){this.constructor=e}e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)},i=function(e){function t(){e.apply(this,arguments),this.actions=[],this.active=!1,this.scheduled=void 0}return n(t,e),t.prototype.flush=function(e){var t=this.actions;if(this.active)t.push(e);else{var r;this.active=!0;do{if(r=e.execute(e.state,e.delay))break}while(e=t.shift());if(this.active=!1,r){for(;e=t.shift();)e.unsubscribe();throw r}}},t}(r(47881).Scheduler);t.AsyncScheduler=i},78086:function(e,t,r){"use strict";var n=r(30228),i=r(51805);t.async=new i.AsyncScheduler(n.AsyncAction)},10107:function(e,t,r){"use strict";var n=r(50557);function i(e){var t=e.Symbol;if("function"==typeof t)return t.iterator||(t.iterator=t("iterator polyfill")),t.iterator;var r=e.Set;if(r&&"function"==typeof(new r)["@@iterator"])return"@@iterator";var n=e.Map;if(n)for(var i=Object.getOwnPropertyNames(n.prototype),o=0;o=0}},10210:function(e,t){"use strict";t.isObject=function(e){return null!=e&&"object"==typeof e}},98576:function(e,t){"use strict";t.isPromise=function(e){return e&&"function"!=typeof e.subscribe&&"function"==typeof e.then}},57956:function(e,t){"use strict";t.isScheduler=function(e){return e&&"function"==typeof e.schedule}},71685:function(e,t){"use strict";t.noop=function(){}},72205:function(e,t,r){"use strict";var n=r(71685);function i(e){return e?1===e.length?e[0]:function(t){return e.reduce((function(e,t){return t(e)}),t)}:n.noop}t.pipe=function(){for(var e=[],t=0;t1?arguments[1]:void 0,m=void 0!==v;m&&(v=n(v,h>2?arguments[2]:void 0));var _,T,g,y,E,b,A=d(t),S=0;if(!A||this===f&&s(A))for(_=u(t),T=r?new this(_):f(_);_>S;S++)b=m?v(t[S],S):t[S],l(T,S,b);else for(E=(y=p(t,A)).next,T=r?new this:[];!(g=i(E,y)).done;S++)b=m?a(y,v,[g.value,S],!0):g.value,l(T,S,b);return T.length=S,T}},44581:function(e,t,r){var n=r(69441),i=r(28630),o=r(40954),a=function(e){return function(t,r,a){var s,c=n(t),u=o(c),l=i(a,u);if(e&&r!=r){for(;u>l;)if((s=c[l++])!=s)return!0}else for(;u>l;l++)if((e||l in c)&&c[l]===r)return e||l||0;return!e&&-1}};e.exports={includes:a(!0),indexOf:a(!1)}},82217:function(e,t,r){var n=r(52116),i=r(26655),o=r(16731),a=r(55809),s=r(40954),c=r(6601),u=i([].push),l=function(e){var t=1==e,r=2==e,i=3==e,l=4==e,p=6==e,d=7==e,f=5==e||p;return function(h,v,m,_){for(var T,g,y=a(h),E=o(y),b=n(v,m),A=s(E),S=0,C=_||c,I=t?C(h,A):r||d?C(h,0):void 0;A>S;S++)if((f||S in E)&&(g=b(T=E[S],S,y),e))if(t)I[S]=g;else if(g)switch(e){case 3:return!0;case 5:return T;case 6:return S;case 2:u(I,T)}else switch(e){case 4:return!1;case 7:u(I,T)}return p?-1:i||l?l:I}};e.exports={forEach:l(0),map:l(1),filter:l(2),some:l(3),every:l(4),find:l(5),findIndex:l(6),filterReject:l(7)}},4071:function(e,t,r){"use strict";var n=r(51981),i=r(69441),o=r(96759),a=r(40954),s=r(90538),c=Math.min,u=[].lastIndexOf,l=!!u&&1/[1].lastIndexOf(1,-0)<0,p=s("lastIndexOf"),d=l||!p;e.exports=d?function(e){if(l)return n(u,this,arguments)||0;var t=i(this),r=a(t),s=r-1;for(arguments.length>1&&(s=c(s,o(arguments[1]))),s<0&&(s=r+s);s>=0;s--)if(s in t&&t[s]===e)return s||0;return-1}:u},91225:function(e,t,r){var n=r(97131),i=r(26615),o=r(16312),a=i("species");e.exports=function(e){return o>=51||!n((function(){var t=[];return(t.constructor={})[a]=function(){return{foo:1}},1!==t[e](Boolean).foo}))}},90538:function(e,t,r){"use strict";var n=r(97131);e.exports=function(e,t){var r=[][e];return!!r&&n((function(){r.call(null,t||function(){return 1},1)}))}},76219:function(e,t,r){"use strict";var n=r(85560),i=r(61972),o=TypeError,a=Object.getOwnPropertyDescriptor,s=n&&!function(){if(void 0!==this)return!0;try{Object.defineProperty([],"length",{writable:!1}).length=1}catch(e){return e instanceof TypeError}}();e.exports=s?function(e,t){if(i(e)&&!a(e,"length").writable)throw o("Cannot set read only .length");return e.length=t}:function(e,t){return e.length=t}},98067:function(e,t,r){var n=r(28630),i=r(40954),o=r(58724),a=Array,s=Math.max;e.exports=function(e,t,r){for(var c=i(e),u=n(t,c),l=n(void 0===r?c:r,c),p=a(s(l-u,0)),d=0;u9007199254740991)throw t("Maximum allowed index exceeded");return e}},14740:function(e){e.exports={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0}},84084:function(e,t,r){var n=r(47827);e.exports=n("navigator","userAgent")||""},16312:function(e,t,r){var n,i,o=r(35391),a=r(84084),s=o.process,c=o.Deno,u=s&&s.versions||c&&c.version,l=u&&u.v8;l&&(i=(n=l.split("."))[0]>0&&n[0]<4?1:+(n[0]+n[1])),!i&&a&&(!(n=a.match(/Edge\/(\d+)/))||n[1]>=74)&&(n=a.match(/Chrome\/(\d+)/))&&(i=+n[1]),e.exports=i},15296:function(e,t,r){var n=r(87675);e.exports=function(e){return n[e+"Prototype"]}},347:function(e){e.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},61938:function(e,t,r){"use strict";var n=r(35391),i=r(51981),o=r(26655),a=r(12073),s=r(45687).f,c=r(33488),u=r(87675),l=r(52116),p=r(98471),d=r(14373),f=function(e){var t=function(r,n,o){if(this instanceof t){switch(arguments.length){case 0:return new e;case 1:return new e(r);case 2:return new e(r,n)}return new e(r,n,o)}return i(e,this,arguments)};return t.prototype=e.prototype,t};e.exports=function(e,t){var r,i,h,v,m,_,T,g,y=e.target,E=e.global,b=e.stat,A=e.proto,S=E?n:b?n[y]:(n[y]||{}).prototype,C=E?u:u[y]||p(u,y,{})[y],I=C.prototype;for(h in t)r=!c(E?h:y+(b?".":"#")+h,e.forced)&&S&&d(S,h),m=C[h],r&&(_=e.dontCallGetSet?(g=s(S,h))&&g.value:S[h]),v=r&&_?_:t[h],r&&typeof m==typeof v||(T=e.bind&&r?l(v,n):e.wrap&&r?f(v):A&&a(v)?o(v):v,(e.sham||v&&v.sham||m&&m.sham)&&p(T,"sham",!0),p(C,h,T),A&&(d(u,i=y+"Prototype")||p(u,i,{}),p(u[i],h,v),e.real&&I&&!I[h]&&p(I,h,v)))}},97131:function(e){e.exports=function(e){try{return!!e()}catch(e){return!0}}},51981:function(e,t,r){var n=r(35164),i=Function.prototype,o=i.apply,a=i.call;e.exports="object"==typeof Reflect&&Reflect.apply||(n?a.bind(o):function(){return a.apply(o,arguments)})},52116:function(e,t,r){var n=r(26655),i=r(30182),o=r(35164),a=n(n.bind);e.exports=function(e,t){return i(e),void 0===t?e:o?a(e,t):function(){return e.apply(t,arguments)}}},35164:function(e,t,r){var n=r(97131);e.exports=!n((function(){var e=function(){}.bind();return"function"!=typeof e||e.hasOwnProperty("prototype")}))},13057:function(e,t,r){var n=r(35164),i=Function.prototype.call;e.exports=n?i.bind(i):function(){return i.apply(i,arguments)}},14970:function(e,t,r){var n=r(85560),i=r(14373),o=Function.prototype,a=n&&Object.getOwnPropertyDescriptor,s=i(o,"name"),c=s&&"something"===function(){}.name,u=s&&(!n||n&&a(o,"name").configurable);e.exports={EXISTS:s,PROPER:c,CONFIGURABLE:u}},26655:function(e,t,r){var n=r(35164),i=Function.prototype,o=i.bind,a=i.call,s=n&&o.bind(a,a);e.exports=n?function(e){return e&&s(e)}:function(e){return e&&function(){return a.apply(e,arguments)}}},47827:function(e,t,r){var n=r(87675),i=r(35391),o=r(12073),a=function(e){return o(e)?e:void 0};e.exports=function(e,t){return arguments.length<2?a(n[e])||a(i[e]):n[e]&&n[e][t]||i[e]&&i[e][t]}},76399:function(e,t,r){var n=r(5663),i=r(43514),o=r(66153),a=r(41113),s=r(26615)("iterator");e.exports=function(e){if(!o(e))return i(e,s)||i(e,"@@iterator")||a[n(e)]}},97013:function(e,t,r){var n=r(13057),i=r(30182),o=r(48347),a=r(14003),s=r(76399),c=TypeError;e.exports=function(e,t){var r=arguments.length<2?s(e):t;if(i(r))return o(n(r,e));throw c(a(e)+" is not iterable")}},43514:function(e,t,r){var n=r(30182),i=r(66153);e.exports=function(e,t){var r=e[t];return i(r)?void 0:n(r)}},35391:function(e,t,r){var n=function(e){return e&&e.Math==Math&&e};e.exports=n("object"==typeof globalThis&&globalThis)||n("object"==typeof window&&window)||n("object"==typeof self&&self)||n("object"==typeof r.g&&r.g)||function(){return this}()||Function("return this")()},14373:function(e,t,r){var n=r(26655),i=r(55809),o=n({}.hasOwnProperty);e.exports=Object.hasOwn||function(e,t){return o(i(e),t)}},86145:function(e){e.exports={}},39417:function(e,t,r){var n=r(47827);e.exports=n("document","documentElement")},62633:function(e,t,r){var n=r(85560),i=r(97131),o=r(46171);e.exports=!n&&!i((function(){return 7!=Object.defineProperty(o("div"),"a",{get:function(){return 7}}).a}))},16731:function(e,t,r){var n=r(26655),i=r(97131),o=r(20244),a=Object,s=n("".split);e.exports=i((function(){return!a("z").propertyIsEnumerable(0)}))?function(e){return"String"==o(e)?s(e,""):a(e)}:a},96678:function(e,t,r){var n=r(26655),i=r(12073),o=r(94993),a=n(Function.toString);i(o.inspectSource)||(o.inspectSource=function(e){return a(e)}),e.exports=o.inspectSource},29257:function(e,t,r){var n,i,o,a=r(58698),s=r(35391),c=r(26655),u=r(45774),l=r(98471),p=r(14373),d=r(94993),f=r(70651),h=r(86145),v="Object already initialized",m=s.TypeError,_=s.WeakMap;if(a||d.state){var T=d.state||(d.state=new _),g=c(T.get),y=c(T.has),E=c(T.set);n=function(e,t){if(y(T,e))throw m(v);return t.facade=e,E(T,e,t),t},i=function(e){return g(T,e)||{}},o=function(e){return y(T,e)}}else{var b=f("state");h[b]=!0,n=function(e,t){if(p(e,b))throw m(v);return t.facade=e,l(e,b,t),t},i=function(e){return p(e,b)?e[b]:{}},o=function(e){return p(e,b)}}e.exports={set:n,get:i,has:o,enforce:function(e){return o(e)?i(e):n(e,{})},getterFor:function(e){return function(t){var r;if(!u(t)||(r=i(t)).type!==e)throw m("Incompatible receiver, "+e+" required");return r}}}},35669:function(e,t,r){var n=r(26615),i=r(41113),o=n("iterator"),a=Array.prototype;e.exports=function(e){return void 0!==e&&(i.Array===e||a[o]===e)}},61972:function(e,t,r){var n=r(20244);e.exports=Array.isArray||function(e){return"Array"==n(e)}},12073:function(e,t,r){var n=r(7023),i=n.all;e.exports=n.IS_HTMLDDA?function(e){return"function"==typeof e||e===i}:function(e){return"function"==typeof e}},98934:function(e,t,r){var n=r(26655),i=r(97131),o=r(12073),a=r(5663),s=r(47827),c=r(96678),u=function(){},l=[],p=s("Reflect","construct"),d=/^\s*(?:class|function)\b/,f=n(d.exec),h=!d.exec(u),v=function(e){if(!o(e))return!1;try{return p(u,l,e),!0}catch(e){return!1}},m=function(e){if(!o(e))return!1;switch(a(e)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}try{return h||!!f(d,c(e))}catch(e){return!0}};m.sham=!0,e.exports=!p||i((function(){var e;return v(v.call)||!v(Object)||!v((function(){e=!0}))||e}))?m:v},33488:function(e,t,r){var n=r(97131),i=r(12073),o=/#|\.prototype\./,a=function(e,t){var r=c[s(e)];return r==l||r!=u&&(i(t)?n(t):!!t)},s=a.normalize=function(e){return String(e).replace(o,".").toLowerCase()},c=a.data={},u=a.NATIVE="N",l=a.POLYFILL="P";e.exports=a},66153:function(e){e.exports=function(e){return null==e}},45774:function(e,t,r){var n=r(12073),i=r(7023),o=i.all;e.exports=i.IS_HTMLDDA?function(e){return"object"==typeof e?null!==e:n(e)||e===o}:function(e){return"object"==typeof e?null!==e:n(e)}},53599:function(e){e.exports=!0},53969:function(e,t,r){var n=r(47827),i=r(12073),o=r(63381),a=r(21004),s=Object;e.exports=a?function(e){return"symbol"==typeof e}:function(e){var t=n("Symbol");return i(t)&&o(t.prototype,s(e))}},77959:function(e,t,r){var n=r(13057),i=r(48347),o=r(43514);e.exports=function(e,t,r){var a,s;i(e);try{if(!(a=o(e,"return"))){if("throw"===t)throw r;return r}a=n(a,e)}catch(e){s=!0,a=e}if("throw"===t)throw r;if(s)throw a;return i(a),r}},57102:function(e,t,r){"use strict";var n=r(12373).IteratorPrototype,i=r(83628),o=r(63768),a=r(5051),s=r(41113),c=function(){return this};e.exports=function(e,t,r,u){var l=t+" Iterator";return e.prototype=i(n,{next:o(+!u,r)}),a(e,l,!1,!0),s[l]=c,e}},46188:function(e,t,r){"use strict";var n=r(61938),i=r(13057),o=r(53599),a=r(14970),s=r(12073),c=r(57102),u=r(3439),l=r(64619),p=r(5051),d=r(98471),f=r(60492),h=r(26615),v=r(41113),m=r(12373),_=a.PROPER,T=a.CONFIGURABLE,g=m.IteratorPrototype,y=m.BUGGY_SAFARI_ITERATORS,E=h("iterator"),b="keys",A="values",S="entries",C=function(){return this};e.exports=function(e,t,r,a,h,m,I){c(r,t,a);var O,w,R,P=function(e){if(e===h&&D)return D;if(!y&&e in L)return L[e];switch(e){case b:case A:case S:return function(){return new r(this,e)}}return function(){return new r(this)}},N=t+" Iterator",x=!1,L=e.prototype,k=L[E]||L["@@iterator"]||h&&L[h],D=!y&&k||P(h),M="Array"==t&&L.entries||k;if(M&&(O=u(M.call(new e)))!==Object.prototype&&O.next&&(o||u(O)===g||(l?l(O,g):s(O[E])||f(O,E,C)),p(O,N,!0,!0),o&&(v[N]=C)),_&&h==A&&k&&k.name!==A&&(!o&&T?d(L,"name",A):(x=!0,D=function(){return i(k,this)})),h)if(w={values:P(A),keys:m?D:P(b),entries:P(S)},I)for(R in w)(y||x||!(R in L))&&f(L,R,w[R]);else n({target:t,proto:!0,forced:y||x},w);return o&&!I||L[E]===D||f(L,E,D,{name:h}),v[t]=D,w}},12373:function(e,t,r){"use strict";var n,i,o,a=r(97131),s=r(12073),c=r(45774),u=r(83628),l=r(3439),p=r(60492),d=r(26615),f=r(53599),h=d("iterator"),v=!1;[].keys&&("next"in(o=[].keys())?(i=l(l(o)))!==Object.prototype&&(n=i):v=!0),!c(n)||a((function(){var e={};return n[h].call(e)!==e}))?n={}:f&&(n=u(n)),s(n[h])||p(n,h,(function(){return this})),e.exports={IteratorPrototype:n,BUGGY_SAFARI_ITERATORS:v}},41113:function(e){e.exports={}},40954:function(e,t,r){var n=r(2954);e.exports=function(e){return n(e.length)}},1049:function(e){var t=Math.ceil,r=Math.floor;e.exports=Math.trunc||function(e){var n=+e;return(n>0?r:t)(n)}},48593:function(e,t,r){"use strict";var n=r(85560),i=r(26655),o=r(13057),a=r(97131),s=r(55556),c=r(56841),u=r(66337),l=r(55809),p=r(16731),d=Object.assign,f=Object.defineProperty,h=i([].concat);e.exports=!d||a((function(){if(n&&1!==d({b:1},d(f({},"a",{enumerable:!0,get:function(){f(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var e={},t={},r=Symbol(),i="abcdefghijklmnopqrst";return e[r]=7,i.split("").forEach((function(e){t[e]=e})),7!=d({},e)[r]||s(d({},t)).join("")!=i}))?function(e,t){for(var r=l(e),i=arguments.length,a=1,d=c.f,f=u.f;i>a;)for(var v,m=p(arguments[a++]),_=d?h(s(m),d(m)):s(m),T=_.length,g=0;T>g;)v=_[g++],n&&!o(f,m,v)||(r[v]=m[v]);return r}:d},83628:function(e,t,r){var n,i=r(48347),o=r(9157),a=r(347),s=r(86145),c=r(39417),u=r(46171),l=r(70651),p="prototype",d="script",f=l("IE_PROTO"),h=function(){},v=function(e){return"<"+d+">"+e+""},m=function(e){e.write(v("")),e.close();var t=e.parentWindow.Object;return e=null,t},_=function(){try{n=new ActiveXObject("htmlfile")}catch(e){}var e,t,r;_="undefined"!=typeof document?document.domain&&n?m(n):(t=u("iframe"),r="java"+d+":",t.style.display="none",c.appendChild(t),t.src=String(r),(e=t.contentWindow.document).open(),e.write(v("document.F=Object")),e.close(),e.F):m(n);for(var i=a.length;i--;)delete _[p][a[i]];return _()};s[f]=!0,e.exports=Object.create||function(e,t){var r;return null!==e?(h[p]=i(e),r=new h,h[p]=null,r[f]=e):r=_(),void 0===t?r:o.f(r,t)}},9157:function(e,t,r){var n=r(85560),i=r(72506),o=r(56381),a=r(48347),s=r(69441),c=r(55556);t.f=n&&!i?Object.defineProperties:function(e,t){a(e);for(var r,n=s(t),i=c(t),u=i.length,l=0;u>l;)o.f(e,r=i[l++],n[r]);return e}},56381:function(e,t,r){var n=r(85560),i=r(62633),o=r(72506),a=r(48347),s=r(97522),c=TypeError,u=Object.defineProperty,l=Object.getOwnPropertyDescriptor,p="enumerable",d="configurable",f="writable";t.f=n?o?function(e,t,r){if(a(e),t=s(t),a(r),"function"==typeof e&&"prototype"===t&&"value"in r&&f in r&&!r[f]){var n=l(e,t);n&&n[f]&&(e[t]=r.value,r={configurable:d in r?r[d]:n[d],enumerable:p in r?r[p]:n[p],writable:!1})}return u(e,t,r)}:u:function(e,t,r){if(a(e),t=s(t),a(r),i)try{return u(e,t,r)}catch(e){}if("get"in r||"set"in r)throw c("Accessors not supported");return"value"in r&&(e[t]=r.value),e}},45687:function(e,t,r){var n=r(85560),i=r(13057),o=r(66337),a=r(63768),s=r(69441),c=r(97522),u=r(14373),l=r(62633),p=Object.getOwnPropertyDescriptor;t.f=n?p:function(e,t){if(e=s(e),t=c(t),l)try{return p(e,t)}catch(e){}if(u(e,t))return a(!i(o.f,e,t),e[t])}},3126:function(e,t,r){var n=r(20244),i=r(69441),o=r(2036).f,a=r(98067),s="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];e.exports.f=function(e){return s&&"Window"==n(e)?function(e){try{return o(e)}catch(e){return a(s)}}(e):o(i(e))}},2036:function(e,t,r){var n=r(44512),i=r(347).concat("length","prototype");t.f=Object.getOwnPropertyNames||function(e){return n(e,i)}},56841:function(e,t){t.f=Object.getOwnPropertySymbols},3439:function(e,t,r){var n=r(14373),i=r(12073),o=r(55809),a=r(70651),s=r(67007),c=a("IE_PROTO"),u=Object,l=u.prototype;e.exports=s?u.getPrototypeOf:function(e){var t=o(e);if(n(t,c))return t[c];var r=t.constructor;return i(r)&&t instanceof r?r.prototype:t instanceof u?l:null}},63381:function(e,t,r){var n=r(26655);e.exports=n({}.isPrototypeOf)},44512:function(e,t,r){var n=r(26655),i=r(14373),o=r(69441),a=r(44581).indexOf,s=r(86145),c=n([].push);e.exports=function(e,t){var r,n=o(e),u=0,l=[];for(r in n)!i(s,r)&&i(n,r)&&c(l,r);for(;t.length>u;)i(n,r=t[u++])&&(~a(l,r)||c(l,r));return l}},55556:function(e,t,r){var n=r(44512),i=r(347);e.exports=Object.keys||function(e){return n(e,i)}},66337:function(e,t){"use strict";var r={}.propertyIsEnumerable,n=Object.getOwnPropertyDescriptor,i=n&&!r.call({1:2},1);t.f=i?function(e){var t=n(this,e);return!!t&&t.enumerable}:r},64619:function(e,t,r){var n=r(26655),i=r(48347),o=r(8934);e.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var e,t=!1,r={};try{(e=n(Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set))(r,[]),t=r instanceof Array}catch(e){}return function(r,n){return i(r),o(n),t?e(r,n):r.__proto__=n,r}}():void 0)},95759:function(e,t,r){"use strict";var n=r(57104),i=r(5663);e.exports=n?{}.toString:function(){return"[object "+i(this)+"]"}},6034:function(e,t,r){var n=r(13057),i=r(12073),o=r(45774),a=TypeError;e.exports=function(e,t){var r,s;if("string"===t&&i(r=e.toString)&&!o(s=n(r,e)))return s;if(i(r=e.valueOf)&&!o(s=n(r,e)))return s;if("string"!==t&&i(r=e.toString)&&!o(s=n(r,e)))return s;throw a("Can't convert object to primitive value")}},87675:function(e){e.exports={}},98890:function(e,t,r){var n=r(66153),i=TypeError;e.exports=function(e){if(n(e))throw i("Can't call method on "+e);return e}},5051:function(e,t,r){var n=r(57104),i=r(56381).f,o=r(98471),a=r(14373),s=r(95759),c=r(26615)("toStringTag");e.exports=function(e,t,r,u){if(e){var l=r?e:e.prototype;a(l,c)||i(l,c,{configurable:!0,value:t}),u&&!n&&o(l,"toString",s)}}},70651:function(e,t,r){var n=r(33557),i=r(57980),o=n("keys");e.exports=function(e){return o[e]||(o[e]=i(e))}},94993:function(e,t,r){var n=r(35391),i=r(40909),o="__core-js_shared__",a=n[o]||i(o,{});e.exports=a},33557:function(e,t,r){var n=r(53599),i=r(94993);(e.exports=function(e,t){return i[e]||(i[e]=void 0!==t?t:{})})("versions",[]).push({version:"3.25.3",mode:n?"pure":"global",copyright:"\xa9 2014-2022 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.25.3/LICENSE",source:"https://github.com/zloirock/core-js"})},30235:function(e,t,r){var n=r(26655),i=r(96759),o=r(37803),a=r(98890),s=n("".charAt),c=n("".charCodeAt),u=n("".slice),l=function(e){return function(t,r){var n,l,p=o(a(t)),d=i(r),f=p.length;return d<0||d>=f?e?"":void 0:(n=c(p,d))<55296||n>56319||d+1===f||(l=c(p,d+1))<56320||l>57343?e?s(p,d):n:e?u(p,d,d+2):l-56320+(n-55296<<10)+65536}};e.exports={codeAt:l(!1),charAt:l(!0)}},37235:function(e,t,r){var n=r(16312),i=r(97131);e.exports=!!Object.getOwnPropertySymbols&&!i((function(){var e=Symbol();return!String(e)||!(Object(e)instanceof Symbol)||!Symbol.sham&&n&&n<41}))},83966:function(e,t,r){var n=r(13057),i=r(47827),o=r(26615),a=r(60492);e.exports=function(){var e=i("Symbol"),t=e&&e.prototype,r=t&&t.valueOf,s=o("toPrimitive");t&&!t[s]&&a(t,s,(function(e){return n(r,this)}),{arity:1})}},37700:function(e,t,r){var n=r(37235);e.exports=n&&!!Symbol.for&&!!Symbol.keyFor},28630:function(e,t,r){var n=r(96759),i=Math.max,o=Math.min;e.exports=function(e,t){var r=n(e);return r<0?i(r+t,0):o(r,t)}},69441:function(e,t,r){var n=r(16731),i=r(98890);e.exports=function(e){return n(i(e))}},96759:function(e,t,r){var n=r(1049);e.exports=function(e){var t=+e;return t!=t||0===t?0:n(t)}},2954:function(e,t,r){var n=r(96759),i=Math.min;e.exports=function(e){return e>0?i(n(e),9007199254740991):0}},55809:function(e,t,r){var n=r(98890),i=Object;e.exports=function(e){return i(n(e))}},87426:function(e,t,r){var n=r(13057),i=r(45774),o=r(53969),a=r(43514),s=r(6034),c=r(26615),u=TypeError,l=c("toPrimitive");e.exports=function(e,t){if(!i(e)||o(e))return e;var r,c=a(e,l);if(c){if(void 0===t&&(t="default"),r=n(c,e,t),!i(r)||o(r))return r;throw u("Can't convert object to primitive value")}return void 0===t&&(t="number"),s(e,t)}},97522:function(e,t,r){var n=r(87426),i=r(53969);e.exports=function(e){var t=n(e,"string");return i(t)?t:t+""}},57104:function(e,t,r){var n={};n[r(26615)("toStringTag")]="z",e.exports="[object z]"===String(n)},37803:function(e,t,r){var n=r(5663),i=String;e.exports=function(e){if("Symbol"===n(e))throw TypeError("Cannot convert a Symbol value to a string");return i(e)}},14003:function(e){var t=String;e.exports=function(e){try{return t(e)}catch(e){return"Object"}}},57980:function(e,t,r){var n=r(26655),i=0,o=Math.random(),a=n(1..toString);e.exports=function(e){return"Symbol("+(void 0===e?"":e)+")_"+a(++i+o,36)}},21004:function(e,t,r){var n=r(37235);e.exports=n&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},72506:function(e,t,r){var n=r(85560),i=r(97131);e.exports=n&&i((function(){return 42!=Object.defineProperty((function(){}),"prototype",{value:42,writable:!1}).prototype}))},58698:function(e,t,r){var n=r(35391),i=r(12073),o=n.WeakMap;e.exports=i(o)&&/native code/.test(String(o))},90923:function(e,t,r){var n=r(87675),i=r(14373),o=r(1635),a=r(56381).f;e.exports=function(e){var t=n.Symbol||(n.Symbol={});i(t,e)||a(t,e,{value:o.f(e)})}},1635:function(e,t,r){var n=r(26615);t.f=n},26615:function(e,t,r){var n=r(35391),i=r(33557),o=r(14373),a=r(57980),s=r(37235),c=r(21004),u=i("wks"),l=n.Symbol,p=l&&l.for,d=c?l:l&&l.withoutSetter||a;e.exports=function(e){if(!o(u,e)||!s&&"string"!=typeof u[e]){var t="Symbol."+e;s&&o(l,e)?u[e]=l[e]:u[e]=c&&p?p(t):d(t)}return u[e]}},99958:function(e,t,r){"use strict";var n=r(61938),i=r(97131),o=r(61972),a=r(45774),s=r(55809),c=r(40954),u=r(96929),l=r(58724),p=r(6601),d=r(91225),f=r(26615),h=r(16312),v=f("isConcatSpreadable"),m=h>=51||!i((function(){var e=[];return e[v]=!1,e.concat()[0]!==e})),_=d("concat"),T=function(e){if(!a(e))return!1;var t=e[v];return void 0!==t?!!t:o(e)};n({target:"Array",proto:!0,arity:1,forced:!m||!_},{concat:function(e){var t,r,n,i,o,a=s(this),d=p(a,0),f=0;for(t=-1,n=arguments.length;t1?arguments[1]:void 0)}})},21284:function(e,t,r){"use strict";var n=r(61938),i=r(82217).filter;n({target:"Array",proto:!0,forced:!r(91225)("filter")},{filter:function(e){return i(this,e,arguments.length>1?arguments[1]:void 0)}})},96206:function(e,t,r){var n=r(61938),i=r(36864);n({target:"Array",stat:!0,forced:!r(98224)((function(e){Array.from(e)}))},{from:i})},77640:function(e,t,r){"use strict";var n=r(61938),i=r(26655),o=r(44581).indexOf,a=r(90538),s=i([].indexOf),c=!!s&&1/s([1],1,-0)<0,u=a("indexOf");n({target:"Array",proto:!0,forced:c||!u},{indexOf:function(e){var t=arguments.length>1?arguments[1]:void 0;return c?s(this,e,t)||0:o(this,e,t)}})},27806:function(e,t,r){r(61938)({target:"Array",stat:!0},{isArray:r(61972)})},36396:function(e,t,r){"use strict";var n=r(69441),i=r(66065),o=r(41113),a=r(29257),s=r(56381).f,c=r(46188),u=r(40789),l=r(53599),p=r(85560),d="Array Iterator",f=a.set,h=a.getterFor(d);e.exports=c(Array,"Array",(function(e,t){f(this,{type:d,target:n(e),index:0,kind:t})}),(function(){var e=h(this),t=e.target,r=e.kind,n=e.index++;return!t||n>=t.length?(e.target=void 0,u(void 0,!0)):u("keys"==r?n:"values"==r?t[n]:[n,t[n]],!1)}),"values");var v=o.Arguments=o.Array;if(i("keys"),i("values"),i("entries"),!l&&p&&"values"!==v.name)try{s(v,"name",{value:"values"})}catch(e){}},15973:function(e,t,r){var n=r(61938),i=r(4071);n({target:"Array",proto:!0,forced:i!==[].lastIndexOf},{lastIndexOf:i})},69778:function(e,t,r){"use strict";var n=r(61938),i=r(61972),o=r(98934),a=r(45774),s=r(28630),c=r(40954),u=r(69441),l=r(58724),p=r(26615),d=r(91225),f=r(20820),h=d("slice"),v=p("species"),m=Array,_=Math.max;n({target:"Array",proto:!0,forced:!h},{slice:function(e,t){var r,n,p,d=u(this),h=c(d),T=s(e,h),g=s(void 0===t?h:t,h);if(i(d)&&(r=d.constructor,(o(r)&&(r===m||i(r.prototype))||a(r)&&null===(r=r[v]))&&(r=void 0),r===m||void 0===r))return f(d,T,g);for(n=new(void 0===r?m:r)(_(g-T,0)),p=0;T1?arguments[1]:void 0)}})},71350:function(e,t,r){"use strict";var n=r(61938),i=r(55809),o=r(28630),a=r(96759),s=r(40954),c=r(76219),u=r(96929),l=r(6601),p=r(58724),d=r(42850),f=r(91225)("splice"),h=Math.max,v=Math.min;n({target:"Array",proto:!0,forced:!f},{splice:function(e,t){var r,n,f,m,_,T,g=i(this),y=s(g),E=o(e,y),b=arguments.length;for(0===b?r=n=0:1===b?(r=0,n=y-E):(r=b-2,n=v(h(a(t),0),y-E)),u(y+r-n),f=l(g,n),m=0;my-n+r;m--)d(g,m-1)}else if(r>n)for(m=y-n;m>E;m--)T=m+r-1,(_=m+n-1)in g?g[T]=g[_]:d(g,T);for(m=0;m=r.length?s(void 0,!0):(e=n(r,i),t.index+=e.length,s(e,!1))}))},63128:function(e,t,r){r(90923)("asyncIterator")},53805:function(e,t,r){"use strict";var n=r(61938),i=r(35391),o=r(13057),a=r(26655),s=r(53599),c=r(85560),u=r(37235),l=r(97131),p=r(14373),d=r(63381),f=r(48347),h=r(69441),v=r(97522),m=r(37803),_=r(63768),T=r(83628),g=r(55556),y=r(2036),E=r(3126),b=r(56841),A=r(45687),S=r(56381),C=r(9157),I=r(66337),O=r(60492),w=r(33557),R=r(70651),P=r(86145),N=r(57980),x=r(26615),L=r(1635),k=r(90923),D=r(83966),M=r(5051),B=r(29257),H=r(82217).forEach,j=R("hidden"),V="Symbol",U="prototype",F=B.set,z=B.getterFor(V),Y=Object[U],G=i.Symbol,W=G&&G[U],q=i.TypeError,K=i.QObject,$=A.f,X=S.f,J=E.f,Z=I.f,Q=a([].push),ee=w("symbols"),te=w("op-symbols"),re=w("wks"),ne=!K||!K[U]||!K[U].findChild,ie=c&&l((function(){return 7!=T(X({},"a",{get:function(){return X(this,"a",{value:7}).a}})).a}))?function(e,t,r){var n=$(Y,t);n&&delete Y[t],X(e,t,r),n&&e!==Y&&X(Y,t,n)}:X,oe=function(e,t){var r=ee[e]=T(W);return F(r,{type:V,tag:e,description:t}),c||(r.description=t),r},ae=function(e,t,r){e===Y&&ae(te,t,r),f(e);var n=v(t);return f(r),p(ee,n)?(r.enumerable?(p(e,j)&&e[j][n]&&(e[j][n]=!1),r=T(r,{enumerable:_(0,!1)})):(p(e,j)||X(e,j,_(1,{})),e[j][n]=!0),ie(e,n,r)):X(e,n,r)},se=function(e,t){f(e);var r=h(t),n=g(r).concat(pe(r));return H(n,(function(t){c&&!o(ce,r,t)||ae(e,t,r[t])})),e},ce=function(e){var t=v(e),r=o(Z,this,t);return!(this===Y&&p(ee,t)&&!p(te,t))&&(!(r||!p(this,t)||!p(ee,t)||p(this,j)&&this[j][t])||r)},ue=function(e,t){var r=h(e),n=v(t);if(r!==Y||!p(ee,n)||p(te,n)){var i=$(r,n);return!i||!p(ee,n)||p(r,j)&&r[j][n]||(i.enumerable=!0),i}},le=function(e){var t=J(h(e)),r=[];return H(t,(function(e){p(ee,e)||p(P,e)||Q(r,e)})),r},pe=function(e){var t=e===Y,r=J(t?te:h(e)),n=[];return H(r,(function(e){!p(ee,e)||t&&!p(Y,e)||Q(n,ee[e])})),n};u||(G=function(){if(d(W,this))throw q("Symbol is not a constructor");var e=arguments.length&&void 0!==arguments[0]?m(arguments[0]):void 0,t=N(e),r=function(e){this===Y&&o(r,te,e),p(this,j)&&p(this[j],t)&&(this[j][t]=!1),ie(this,t,_(1,e))};return c&&ne&&ie(Y,t,{configurable:!0,set:r}),oe(t,e)},O(W=G[U],"toString",(function(){return z(this).tag})),O(G,"withoutSetter",(function(e){return oe(N(e),e)})),I.f=ce,S.f=ae,C.f=se,A.f=ue,y.f=E.f=le,b.f=pe,L.f=function(e){return oe(x(e),e)},c&&(X(W,"description",{configurable:!0,get:function(){return z(this).description}}),s||O(Y,"propertyIsEnumerable",ce,{unsafe:!0}))),n({global:!0,constructor:!0,wrap:!0,forced:!u,sham:!u},{Symbol:G}),H(g(re),(function(e){k(e)})),n({target:V,stat:!0,forced:!u},{useSetter:function(){ne=!0},useSimple:function(){ne=!1}}),n({target:"Object",stat:!0,forced:!u,sham:!c},{create:function(e,t){return void 0===t?T(e):se(T(e),t)},defineProperty:ae,defineProperties:se,getOwnPropertyDescriptor:ue}),n({target:"Object",stat:!0,forced:!u},{getOwnPropertyNames:le}),D(),M(G,V),P[j]=!0},91555:function(){},22042:function(e,t,r){var n=r(61938),i=r(47827),o=r(14373),a=r(37803),s=r(33557),c=r(37700),u=s("string-to-symbol-registry"),l=s("symbol-to-string-registry");n({target:"Symbol",stat:!0,forced:!c},{for:function(e){var t=a(e);if(o(u,t))return u[t];var r=i("Symbol")(t);return u[t]=r,l[r]=t,r}})},30101:function(e,t,r){r(90923)("hasInstance")},4719:function(e,t,r){r(90923)("isConcatSpreadable")},43391:function(e,t,r){r(90923)("iterator")},87375:function(e,t,r){r(53805),r(22042),r(18552),r(41522),r(80065)},18552:function(e,t,r){var n=r(61938),i=r(14373),o=r(53969),a=r(14003),s=r(33557),c=r(37700),u=s("symbol-to-string-registry");n({target:"Symbol",stat:!0,forced:!c},{keyFor:function(e){if(!o(e))throw TypeError(a(e)+" is not a symbol");if(i(u,e))return u[e]}})},83714:function(e,t,r){r(90923)("matchAll")},32712:function(e,t,r){r(90923)("match")},41713:function(e,t,r){r(90923)("replace")},69357:function(e,t,r){r(90923)("search")},50047:function(e,t,r){r(90923)("species")},47253:function(e,t,r){r(90923)("split")},2136:function(e,t,r){var n=r(90923),i=r(83966);n("toPrimitive"),i()},67193:function(e,t,r){var n=r(47827),i=r(90923),o=r(5051);i("toStringTag"),o(n("Symbol"),"Symbol")},14850:function(e,t,r){r(90923)("unscopables")},24182:function(e,t,r){r(90923)("asyncDispose")},90639:function(e,t,r){r(90923)("dispose")},63692:function(e,t,r){r(90923)("matcher")},62643:function(e,t,r){r(90923)("metadataKey")},61693:function(e,t,r){r(90923)("metadata")},17269:function(e,t,r){r(90923)("observable")},96188:function(e,t,r){r(90923)("patternMatch")},90220:function(e,t,r){r(90923)("replaceAll")},90813:function(e,t,r){r(36396);var n=r(14740),i=r(35391),o=r(5663),a=r(98471),s=r(41113),c=r(26615)("toStringTag");for(var u in n){var l=i[u],p=l&&l.prototype;p&&o(p)!==c&&a(p,c,u),s[u]=s.Array}},17481:function(e,t,r){var n=r(77888);e.exports=n},2437:function(e,t,r){var n=r(17864);e.exports=n},63306:function(e,t,r){var n=r(69225);r(90813),e.exports=n},23056:function(e,t,r){var n=r(17817);e.exports=n},21261:function(e,t,r){var n=r(97654);e.exports=n},66473:function(e,t,r){var n=r(52342);e.exports=n},64498:function(e,t,r){var n=r(71691);e.exports=n},8485:function(e,t,r){var n=r(61328);e.exports=n},15479:function(e,t,r){var n=r(88892);e.exports=n},27780:function(e,t,r){var n=r(75992);e.exports=n},5926:function(e,t,r){var n=r(5933);e.exports=n},44519:function(e,t,r){var n=r(42096);e.exports=n},36368:function(e,t,r){var n=r(18825);e.exports=n},5234:function(e,t,r){var n=r(14299);e.exports=n},58535:function(e,t,r){var n=r(56696);e.exports=n},41288:function(e,t,r){var n=r(36859);e.exports=n},13959:function(e,t,r){var n=r(99768);e.exports=n},31208:function(e,t,r){var n=r(36309);r(90813),e.exports=n},14404:function(e,t,r){var n=r(16075);r(90813),e.exports=n},74945:function(e,t){var r="undefined"!=typeof self?self:this,n=function(){function e(){this.fetch=!1,this.DOMException=r.DOMException}return e.prototype=r,new e}();!function(e){!function(t){var r="URLSearchParams"in e,n="Symbol"in e&&"iterator"in Symbol,i="FileReader"in e&&"Blob"in e&&function(){try{return new Blob,!0}catch(e){return!1}}(),o="FormData"in e,a="ArrayBuffer"in e;if(a)var s=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]"],c=ArrayBuffer.isView||function(e){return e&&s.indexOf(Object.prototype.toString.call(e))>-1};function u(e){if("string"!=typeof e&&(e=String(e)),/[^a-z0-9\-#$%&'*+.^_`|~]/i.test(e))throw new TypeError("Invalid character in header field name");return e.toLowerCase()}function l(e){return"string"!=typeof e&&(e=String(e)),e}function p(e){var t={next:function(){var t=e.shift();return{done:void 0===t,value:t}}};return n&&(t[Symbol.iterator]=function(){return t}),t}function d(e){this.map={},e instanceof d?e.forEach((function(e,t){this.append(t,e)}),this):Array.isArray(e)?e.forEach((function(e){this.append(e[0],e[1])}),this):e&&Object.getOwnPropertyNames(e).forEach((function(t){this.append(t,e[t])}),this)}function f(e){if(e.bodyUsed)return Promise.reject(new TypeError("Already read"));e.bodyUsed=!0}function h(e){return new Promise((function(t,r){e.onload=function(){t(e.result)},e.onerror=function(){r(e.error)}}))}function v(e){var t=new FileReader,r=h(t);return t.readAsArrayBuffer(e),r}function m(e){if(e.slice)return e.slice(0);var t=new Uint8Array(e.byteLength);return t.set(new Uint8Array(e)),t.buffer}function _(){return this.bodyUsed=!1,this._initBody=function(e){var t;this._bodyInit=e,e?"string"==typeof e?this._bodyText=e:i&&Blob.prototype.isPrototypeOf(e)?this._bodyBlob=e:o&&FormData.prototype.isPrototypeOf(e)?this._bodyFormData=e:r&&URLSearchParams.prototype.isPrototypeOf(e)?this._bodyText=e.toString():a&&i&&((t=e)&&DataView.prototype.isPrototypeOf(t))?(this._bodyArrayBuffer=m(e.buffer),this._bodyInit=new Blob([this._bodyArrayBuffer])):a&&(ArrayBuffer.prototype.isPrototypeOf(e)||c(e))?this._bodyArrayBuffer=m(e):this._bodyText=e=Object.prototype.toString.call(e):this._bodyText="",this.headers.get("content-type")||("string"==typeof e?this.headers.set("content-type","text/plain;charset=UTF-8"):this._bodyBlob&&this._bodyBlob.type?this.headers.set("content-type",this._bodyBlob.type):r&&URLSearchParams.prototype.isPrototypeOf(e)&&this.headers.set("content-type","application/x-www-form-urlencoded;charset=UTF-8"))},i&&(this.blob=function(){var e=f(this);if(e)return e;if(this._bodyBlob)return Promise.resolve(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(new Blob([this._bodyArrayBuffer]));if(this._bodyFormData)throw new Error("could not read FormData body as blob");return Promise.resolve(new Blob([this._bodyText]))},this.arrayBuffer=function(){return this._bodyArrayBuffer?f(this)||Promise.resolve(this._bodyArrayBuffer):this.blob().then(v)}),this.text=function(){var e,t,r,n=f(this);if(n)return n;if(this._bodyBlob)return e=this._bodyBlob,t=new FileReader,r=h(t),t.readAsText(e),r;if(this._bodyArrayBuffer)return Promise.resolve(function(e){for(var t=new Uint8Array(e),r=new Array(t.length),n=0;n-1?n:r),this.mode=t.mode||this.mode||null,this.signal=t.signal||this.signal,this.referrer=null,("GET"===this.method||"HEAD"===this.method)&&i)throw new TypeError("Body not allowed for GET or HEAD requests");this._initBody(i)}function y(e){var t=new FormData;return e.trim().split("&").forEach((function(e){if(e){var r=e.split("="),n=r.shift().replace(/\+/g," "),i=r.join("=").replace(/\+/g," ");t.append(decodeURIComponent(n),decodeURIComponent(i))}})),t}function E(e,t){t||(t={}),this.type="default",this.status=void 0===t.status?200:t.status,this.ok=this.status>=200&&this.status<300,this.statusText="statusText"in t?t.statusText:"OK",this.headers=new d(t.headers),this.url=t.url||"",this._initBody(e)}g.prototype.clone=function(){return new g(this,{body:this._bodyInit})},_.call(g.prototype),_.call(E.prototype),E.prototype.clone=function(){return new E(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new d(this.headers),url:this.url})},E.error=function(){var e=new E(null,{status:0,statusText:""});return e.type="error",e};var b=[301,302,303,307,308];E.redirect=function(e,t){if(-1===b.indexOf(t))throw new RangeError("Invalid status code");return new E(null,{status:t,headers:{location:e}})},t.DOMException=e.DOMException;try{new t.DOMException}catch(e){t.DOMException=function(e,t){this.message=e,this.name=t;var r=Error(e);this.stack=r.stack},t.DOMException.prototype=Object.create(Error.prototype),t.DOMException.prototype.constructor=t.DOMException}function A(e,r){return new Promise((function(n,o){var a=new g(e,r);if(a.signal&&a.signal.aborted)return o(new t.DOMException("Aborted","AbortError"));var s=new XMLHttpRequest;function c(){s.abort()}s.onload=function(){var e,t,r={status:s.status,statusText:s.statusText,headers:(e=s.getAllResponseHeaders()||"",t=new d,e.replace(/\r?\n[\t ]+/g," ").split(/\r?\n/).forEach((function(e){var r=e.split(":"),n=r.shift().trim();if(n){var i=r.join(":").trim();t.append(n,i)}})),t)};r.url="responseURL"in s?s.responseURL:r.headers.get("X-Request-URL");var i="response"in s?s.response:s.responseText;n(new E(i,r))},s.onerror=function(){o(new TypeError("Network request failed"))},s.ontimeout=function(){o(new TypeError("Network request failed"))},s.onabort=function(){o(new t.DOMException("Aborted","AbortError"))},s.open(a.method,a.url,!0),"include"===a.credentials?s.withCredentials=!0:"omit"===a.credentials&&(s.withCredentials=!1),"responseType"in s&&i&&(s.responseType="blob"),a.headers.forEach((function(e,t){s.setRequestHeader(t,e)})),a.signal&&(a.signal.addEventListener("abort",c),s.onreadystatechange=function(){4===s.readyState&&a.signal.removeEventListener("abort",c)}),s.send(void 0===a._bodyInit?null:a._bodyInit)}))}A.polyfill=!0,e.fetch||(e.fetch=A,e.Headers=d,e.Request=g,e.Response=E),t.Headers=d,t.Request=g,t.Response=E,t.fetch=A,Object.defineProperty(t,"__esModule",{value:!0})}({})}(n),n.fetch.ponyfill=!0,delete n.fetch.polyfill;var i=n;(t=i.fetch).default=i.fetch,t.fetch=i.fetch,t.Headers=i.Headers,t.Request=i.Request,t.Response=i.Response,e.exports=t},14744:function(e){"use strict";var t=function(e){return function(e){return!!e&&"object"==typeof e}(e)&&!function(e){var t=Object.prototype.toString.call(e);return"[object RegExp]"===t||"[object Date]"===t||function(e){return e.$$typeof===r}(e)}(e)};var r="function"==typeof Symbol&&Symbol.for?Symbol.for("react.element"):60103;function n(e,t){return!1!==t.clone&&t.isMergeableObject(e)?c((r=e,Array.isArray(r)?[]:{}),e,t):e;var r}function i(e,t,r){return e.concat(t).map((function(e){return n(e,r)}))}function o(e){return Object.keys(e).concat(function(e){return Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(e).filter((function(t){return e.propertyIsEnumerable(t)})):[]}(e))}function a(e,t){try{return t in e}catch(e){return!1}}function s(e,t,r){var i={};return r.isMergeableObject(e)&&o(e).forEach((function(t){i[t]=n(e[t],r)})),o(t).forEach((function(o){(function(e,t){return a(e,t)&&!(Object.hasOwnProperty.call(e,t)&&Object.propertyIsEnumerable.call(e,t))})(e,o)||(a(e,o)&&r.isMergeableObject(t[o])?i[o]=function(e,t){if(!t.customMerge)return c;var r=t.customMerge(e);return"function"==typeof r?r:c}(o,r)(e[o],t[o],r):i[o]=n(t[o],r))})),i}function c(e,r,o){(o=o||{}).arrayMerge=o.arrayMerge||i,o.isMergeableObject=o.isMergeableObject||t,o.cloneUnlessOtherwiseSpecified=n;var a=Array.isArray(r);return a===Array.isArray(e)?a?o.arrayMerge(e,r,o):s(e,r,o):n(r,o)}c.all=function(e,t){if(!Array.isArray(e))throw new Error("first argument should be an array");return e.reduce((function(e,r){return c(e,r,t)}),{})};var u=c;e.exports=u},94460:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.attributeNames=t.elementNames=void 0,t.elementNames=new Map(["altGlyph","altGlyphDef","altGlyphItem","animateColor","animateMotion","animateTransform","clipPath","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence","foreignObject","glyphRef","linearGradient","radialGradient","textPath"].map((function(e){return[e.toLowerCase(),e]}))),t.attributeNames=new Map(["definitionURL","attributeName","attributeType","baseFrequency","baseProfile","calcMode","clipPathUnits","diffuseConstant","edgeMode","filterUnits","glyphRef","gradientTransform","gradientUnits","kernelMatrix","kernelUnitLength","keyPoints","keySplines","keyTimes","lengthAdjust","limitingConeAngle","markerHeight","markerUnits","markerWidth","maskContentUnits","maskUnits","numOctaves","pathLength","patternContentUnits","patternTransform","patternUnits","pointsAtX","pointsAtY","pointsAtZ","preserveAlpha","preserveAspectRatio","primitiveUnits","refX","refY","repeatCount","repeatDur","requiredExtensions","requiredFeatures","specularConstant","specularExponent","spreadMethod","startOffset","stdDeviation","stitchTiles","surfaceScale","systemLanguage","tableValues","targetX","targetY","textLength","viewBox","viewTarget","xChannelSelector","yChannelSelector","zoomAndPan"].map((function(e){return[e.toLowerCase(),e]})))},53806:function(e,t,r){"use strict";var n=this&&this.__assign||function(){return n=Object.assign||function(e){for(var t,r=1,n=arguments.length;r");case s.Comment:return function(e){return"\x3c!--".concat(e.data,"--\x3e")}(e);case s.CDATA:return function(e){return"")}(e);case s.Script:case s.Style:case s.Tag:return function(e,t){var r;"foreign"===t.xmlMode&&(e.name=null!==(r=u.elementNames.get(e.name))&&void 0!==r?r:e.name,e.parent&&v.has(e.parent.name)&&(t=n(n({},t),{xmlMode:!1})));!t.xmlMode&&m.has(e.name)&&(t=n(n({},t),{xmlMode:"foreign"}));var i="<".concat(e.name),o=function(e,t){var r;if(e){var n=!1===(null!==(r=t.encodeEntities)&&void 0!==r?r:t.decodeEntities)?p:t.xmlMode||"utf8"!==t.encodeEntities?c.encodeXML:c.escapeAttribute;return Object.keys(e).map((function(r){var i,o,a=null!==(i=e[r])&&void 0!==i?i:"";return"foreign"===t.xmlMode&&(r=null!==(o=u.attributeNames.get(r))&&void 0!==o?o:r),t.emptyAttrs||t.xmlMode||""!==a?"".concat(r,'="').concat(n(a),'"'):r})).join(" ")}}(e.attribs,t);o&&(i+=" ".concat(o));0===e.children.length&&(t.xmlMode?!1!==t.selfClosingTags:t.selfClosingTags&&d.has(e.name))?(t.xmlMode||(i+=" "),i+="/>"):(i+=">",e.children.length>0&&(i+=f(e.children,t)),!t.xmlMode&&d.has(e.name)||(i+="")));return i}(e,t);case s.Text:return function(e,t){var r,n=e.data||"";!1===(null!==(r=t.encodeEntities)&&void 0!==r?r:t.decodeEntities)||!t.xmlMode&&e.parent&&l.has(e.parent.name)||(n=t.xmlMode||"utf8"!==t.encodeEntities?(0,c.encodeXML)(n):(0,c.escapeText)(n));return n}(e,t)}}t.render=f,t.default=f;var v=new Set(["mi","mo","mn","ms","mtext","annotation-xml","foreignObject","desc","title"]),m=new Set(["svg","math"])},45413:function(e,t){"use strict";var r;Object.defineProperty(t,"__esModule",{value:!0}),t.Doctype=t.CDATA=t.Tag=t.Style=t.Script=t.Comment=t.Directive=t.Text=t.Root=t.isTag=t.ElementType=void 0,function(e){e.Root="root",e.Text="text",e.Directive="directive",e.Comment="comment",e.Script="script",e.Style="style",e.Tag="tag",e.CDATA="cdata",e.Doctype="doctype"}(r=t.ElementType||(t.ElementType={})),t.isTag=function(e){return e.type===r.Tag||e.type===r.Script||e.type===r.Style},t.Root=r.Root,t.Text=r.Text,t.Directive=r.Directive,t.Comment=r.Comment,t.Script=r.Script,t.Style=r.Style,t.Tag=r.Tag,t.CDATA=r.CDATA,t.Doctype=r.Doctype},41141:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),t.DomHandler=void 0;var o=r(45413),a=r(36957);i(r(36957),t);var s={withStartIndices:!1,withEndIndices:!1,xmlMode:!1},c=function(){function e(e,t,r){this.dom=[],this.root=new a.Document(this.dom),this.done=!1,this.tagStack=[this.root],this.lastNode=null,this.parser=null,"function"==typeof t&&(r=t,t=s),"object"==typeof e&&(t=e,e=void 0),this.callback=null!=e?e:null,this.options=null!=t?t:s,this.elementCB=null!=r?r:null}return e.prototype.onparserinit=function(e){this.parser=e},e.prototype.onreset=function(){this.dom=[],this.root=new a.Document(this.dom),this.done=!1,this.tagStack=[this.root],this.lastNode=null,this.parser=null},e.prototype.onend=function(){this.done||(this.done=!0,this.parser=null,this.handleCallback(null))},e.prototype.onerror=function(e){this.handleCallback(e)},e.prototype.onclosetag=function(){this.lastNode=null;var e=this.tagStack.pop();this.options.withEndIndices&&(e.endIndex=this.parser.endIndex),this.elementCB&&this.elementCB(e)},e.prototype.onopentag=function(e,t){var r=this.options.xmlMode?o.ElementType.Tag:void 0,n=new a.Element(e,t,void 0,r);this.addNode(n),this.tagStack.push(n)},e.prototype.ontext=function(e){var t=this.lastNode;if(t&&t.type===o.ElementType.Text)t.data+=e,this.options.withEndIndices&&(t.endIndex=this.parser.endIndex);else{var r=new a.Text(e);this.addNode(r),this.lastNode=r}},e.prototype.oncomment=function(e){if(this.lastNode&&this.lastNode.type===o.ElementType.Comment)this.lastNode.data+=e;else{var t=new a.Comment(e);this.addNode(t),this.lastNode=t}},e.prototype.oncommentend=function(){this.lastNode=null},e.prototype.oncdatastart=function(){var e=new a.Text(""),t=new a.CDATA([e]);this.addNode(t),e.parent=t,this.lastNode=e},e.prototype.oncdataend=function(){this.lastNode=null},e.prototype.onprocessinginstruction=function(e,t){var r=new a.ProcessingInstruction(e,t);this.addNode(r)},e.prototype.handleCallback=function(e){if("function"==typeof this.callback)this.callback(e,this.dom);else if(e)throw e},e.prototype.addNode=function(e){var t=this.tagStack[this.tagStack.length-1],r=t.children[t.children.length-1];this.options.withStartIndices&&(e.startIndex=this.parser.startIndex),this.options.withEndIndices&&(e.endIndex=this.parser.endIndex),t.children.push(e),r&&(e.prev=r,r.next=e),e.parent=t,this.lastNode=null},e}();t.DomHandler=c,t.default=c},36957:function(e,t,r){"use strict";var n,i=this&&this.__extends||(n=function(e,t){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])},n(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function r(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}),o=this&&this.__assign||function(){return o=Object.assign||function(e){for(var t,r=1,n=arguments.length;r0?this.children[this.children.length-1]:null},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"childNodes",{get:function(){return this.children},set:function(e){this.children=e},enumerable:!1,configurable:!0}),t}(s);t.NodeWithChildren=d;var f=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.type=a.ElementType.CDATA,t}return i(t,e),Object.defineProperty(t.prototype,"nodeType",{get:function(){return 4},enumerable:!1,configurable:!0}),t}(d);t.CDATA=f;var h=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.type=a.ElementType.Root,t}return i(t,e),Object.defineProperty(t.prototype,"nodeType",{get:function(){return 9},enumerable:!1,configurable:!0}),t}(d);t.Document=h;var v=function(e){function t(t,r,n,i){void 0===n&&(n=[]),void 0===i&&(i="script"===t?a.ElementType.Script:"style"===t?a.ElementType.Style:a.ElementType.Tag);var o=e.call(this,n)||this;return o.name=t,o.attribs=r,o.type=i,o}return i(t,e),Object.defineProperty(t.prototype,"nodeType",{get:function(){return 1},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"tagName",{get:function(){return this.name},set:function(e){this.name=e},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"attributes",{get:function(){var e=this;return Object.keys(this.attribs).map((function(t){var r,n;return{name:t,value:e.attribs[t],namespace:null===(r=e["x-attribsNamespace"])||void 0===r?void 0:r[t],prefix:null===(n=e["x-attribsPrefix"])||void 0===n?void 0:n[t]}}))},enumerable:!1,configurable:!0}),t}(d);function m(e){return(0,a.isTag)(e)}function _(e){return e.type===a.ElementType.CDATA}function T(e){return e.type===a.ElementType.Text}function g(e){return e.type===a.ElementType.Comment}function y(e){return e.type===a.ElementType.Directive}function E(e){return e.type===a.ElementType.Root}function b(e,t){var r;if(void 0===t&&(t=!1),T(e))r=new u(e.data);else if(g(e))r=new l(e.data);else if(m(e)){var n=t?A(e.children):[],i=new v(e.name,o({},e.attribs),n);n.forEach((function(e){return e.parent=i})),null!=e.namespace&&(i.namespace=e.namespace),e["x-attribsNamespace"]&&(i["x-attribsNamespace"]=o({},e["x-attribsNamespace"])),e["x-attribsPrefix"]&&(i["x-attribsPrefix"]=o({},e["x-attribsPrefix"])),r=i}else if(_(e)){n=t?A(e.children):[];var a=new f(n);n.forEach((function(e){return e.parent=a})),r=a}else if(E(e)){n=t?A(e.children):[];var s=new h(n);n.forEach((function(e){return e.parent=s})),e["x-mode"]&&(s["x-mode"]=e["x-mode"]),r=s}else{if(!y(e))throw new Error("Not implemented yet: ".concat(e.type));var c=new p(e.name,e.data);null!=e["x-name"]&&(c["x-name"]=e["x-name"],c["x-publicId"]=e["x-publicId"],c["x-systemId"]=e["x-systemId"]),r=c}return r.startIndex=e.startIndex,r.endIndex=e.endIndex,null!=e.sourceCodeLocation&&(r.sourceCodeLocation=e.sourceCodeLocation),r}function A(e){for(var t=e.map((function(e){return b(e,!0)})),r=1;rl.indexOf(d)?u===t?n.FOLLOWING|n.CONTAINED_BY:n.FOLLOWING:u===e?n.PRECEDING|n.CONTAINS:n.PRECEDING}t.removeSubsets=function(e){for(var t=e.length;--t>=0;){var r=e[t];if(t>0&&e.lastIndexOf(r,t-1)>=0)e.splice(t,1);else for(var n=r.parent;n;n=n.parent)if(e.includes(n)){e.splice(t,1);break}}return e},function(e){e[e.DISCONNECTED=1]="DISCONNECTED",e[e.PRECEDING=2]="PRECEDING",e[e.FOLLOWING=4]="FOLLOWING",e[e.CONTAINS=8]="CONTAINS",e[e.CONTAINED_BY=16]="CONTAINED_BY"}(n=t.DocumentPosition||(t.DocumentPosition={})),t.compareDocumentPosition=o,t.uniqueSort=function(e){return(e=e.filter((function(e,t,r){return!r.includes(e,t+1)}))).sort((function(e,t){var r=o(e,t);return r&n.PRECEDING?-1:r&n.FOLLOWING?1:0})),e}},98888:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),t.hasChildren=t.isDocument=t.isComment=t.isText=t.isCDATA=t.isTag=void 0,i(r(76037),t),i(r(8938),t),i(r(73403),t),i(r(90718),t),i(r(43209),t),i(r(45397),t),i(r(54437),t);var o=r(41141);Object.defineProperty(t,"isTag",{enumerable:!0,get:function(){return o.isTag}}),Object.defineProperty(t,"isCDATA",{enumerable:!0,get:function(){return o.isCDATA}}),Object.defineProperty(t,"isText",{enumerable:!0,get:function(){return o.isText}}),Object.defineProperty(t,"isComment",{enumerable:!0,get:function(){return o.isComment}}),Object.defineProperty(t,"isDocument",{enumerable:!0,get:function(){return o.isDocument}}),Object.defineProperty(t,"hasChildren",{enumerable:!0,get:function(){return o.hasChildren}})},43209:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getElementsByTagType=t.getElementsByTagName=t.getElementById=t.getElements=t.testElement=void 0;var n=r(41141),i=r(90718),o={tag_name:function(e){return"function"==typeof e?function(t){return(0,n.isTag)(t)&&e(t.name)}:"*"===e?n.isTag:function(t){return(0,n.isTag)(t)&&t.name===e}},tag_type:function(e){return"function"==typeof e?function(t){return e(t.type)}:function(t){return t.type===e}},tag_contains:function(e){return"function"==typeof e?function(t){return(0,n.isText)(t)&&e(t.data)}:function(t){return(0,n.isText)(t)&&t.data===e}}};function a(e,t){return"function"==typeof t?function(r){return(0,n.isTag)(r)&&t(r.attribs[e])}:function(r){return(0,n.isTag)(r)&&r.attribs[e]===t}}function s(e,t){return function(r){return e(r)||t(r)}}function c(e){var t=Object.keys(e).map((function(t){var r=e[t];return Object.prototype.hasOwnProperty.call(o,t)?o[t](r):a(t,r)}));return 0===t.length?null:t.reduce(s)}t.testElement=function(e,t){var r=c(e);return!r||r(t)},t.getElements=function(e,t,r,n){void 0===n&&(n=1/0);var o=c(e);return o?(0,i.filter)(o,t,r,n):[]},t.getElementById=function(e,t,r){return void 0===r&&(r=!0),Array.isArray(t)||(t=[t]),(0,i.findOne)(a("id",e),t,r)},t.getElementsByTagName=function(e,t,r,n){return void 0===r&&(r=!0),void 0===n&&(n=1/0),(0,i.filter)(o.tag_name(e),t,r,n)},t.getElementsByTagType=function(e,t,r,n){return void 0===r&&(r=!0),void 0===n&&(n=1/0),(0,i.filter)(o.tag_type(e),t,r,n)}},73403:function(e,t){"use strict";function r(e){if(e.prev&&(e.prev.next=e.next),e.next&&(e.next.prev=e.prev),e.parent){var t=e.parent.children;t.splice(t.lastIndexOf(e),1)}}Object.defineProperty(t,"__esModule",{value:!0}),t.prepend=t.prependChild=t.append=t.appendChild=t.replaceElement=t.removeElement=void 0,t.removeElement=r,t.replaceElement=function(e,t){var r=t.prev=e.prev;r&&(r.next=t);var n=t.next=e.next;n&&(n.prev=t);var i=t.parent=e.parent;if(i){var o=i.children;o[o.lastIndexOf(e)]=t,e.parent=null}},t.appendChild=function(e,t){if(r(t),t.next=null,t.parent=e,e.children.push(t)>1){var n=e.children[e.children.length-2];n.next=t,t.prev=n}else t.prev=null},t.append=function(e,t){r(t);var n=e.parent,i=e.next;if(t.next=i,t.prev=e,e.next=t,t.parent=n,i){if(i.prev=t,n){var o=n.children;o.splice(o.lastIndexOf(i),0,t)}}else n&&n.children.push(t)},t.prependChild=function(e,t){if(r(t),t.parent=e,t.prev=null,1!==e.children.unshift(t)){var n=e.children[1];n.prev=t,t.next=n}else t.next=null},t.prepend=function(e,t){r(t);var n=e.parent;if(n){var i=n.children;i.splice(i.indexOf(e),0,t)}e.prev&&(e.prev.next=t),t.parent=n,t.prev=e.prev,t.next=e,e.prev=t}},90718:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.findAll=t.existsOne=t.findOne=t.findOneChild=t.find=t.filter=void 0;var n=r(41141);function i(e,t,r,o){for(var a=[],s=0,c=t;s0){var l=i(e,u.children,r,o);if(a.push.apply(a,l),(o-=l.length)<=0)break}}return a}t.filter=function(e,t,r,n){return void 0===r&&(r=!0),void 0===n&&(n=1/0),Array.isArray(t)||(t=[t]),i(e,t,r,n)},t.find=i,t.findOneChild=function(e,t){return t.find(e)},t.findOne=function e(t,r,i){void 0===i&&(i=!0);for(var o=null,a=0;a0&&(o=e(t,s.children,!0)))}return o},t.existsOne=function e(t,r){return r.some((function(r){return(0,n.isTag)(r)&&(t(r)||r.children.length>0&&e(t,r.children))}))},t.findAll=function(e,t){for(var r,i,o=[],a=t.filter(n.isTag);i=a.shift();){var s=null===(r=i.children)||void 0===r?void 0:r.filter(n.isTag);s&&s.length>0&&a.unshift.apply(a,s),e(i)&&o.push(i)}return o}},76037:function(e,t,r){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.innerText=t.textContent=t.getText=t.getInnerHTML=t.getOuterHTML=void 0;var i=r(41141),o=n(r(53806)),a=r(45413);function s(e,t){return(0,o.default)(e,t)}t.getOuterHTML=s,t.getInnerHTML=function(e,t){return(0,i.hasChildren)(e)?e.children.map((function(e){return s(e,t)})).join(""):""},t.getText=function e(t){return Array.isArray(t)?t.map(e).join(""):(0,i.isTag)(t)?"br"===t.name?"\n":e(t.children):(0,i.isCDATA)(t)?e(t.children):(0,i.isText)(t)?t.data:""},t.textContent=function e(t){return Array.isArray(t)?t.map(e).join(""):(0,i.hasChildren)(t)&&!(0,i.isComment)(t)?e(t.children):(0,i.isText)(t)?t.data:""},t.innerText=function e(t){return Array.isArray(t)?t.map(e).join(""):(0,i.hasChildren)(t)&&(t.type===a.ElementType.Tag||(0,i.isCDATA)(t))?e(t.children):(0,i.isText)(t)?t.data:""}},8938:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.prevElementSibling=t.nextElementSibling=t.getName=t.hasAttrib=t.getAttributeValue=t.getSiblings=t.getParent=t.getChildren=void 0;var n=r(41141);function i(e){return(0,n.hasChildren)(e)?e.children:[]}function o(e){return e.parent||null}t.getChildren=i,t.getParent=o,t.getSiblings=function(e){var t=o(e);if(null!=t)return i(t);for(var r=[e],n=e.prev,a=e.next;null!=n;)r.unshift(n),n=n.prev;for(;null!=a;)r.push(a),a=a.next;return r},t.getAttributeValue=function(e,t){var r;return null===(r=e.attribs)||void 0===r?void 0:r[t]},t.hasAttrib=function(e,t){return null!=e.attribs&&Object.prototype.hasOwnProperty.call(e.attribs,t)&&null!=e.attribs[t]},t.getName=function(e){return e.name},t.nextElementSibling=function(e){for(var t=e.next;null!==t&&!(0,n.isTag)(t);)t=t.next;return t},t.prevElementSibling=function(e){for(var t=e.prev;null!==t&&!(0,n.isTag)(t);)t=t.prev;return t}},79878:function(e,t,r){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.decodeXML=t.decodeHTMLStrict=t.decodeHTML=t.determineBranch=t.BinTrieFlags=t.fromCodePoint=t.replaceCodePoint=t.decodeCodePoint=t.xmlDecodeTree=t.htmlDecodeTree=void 0;var i=n(r(13603));t.htmlDecodeTree=i.default;var o=n(r(22517));t.xmlDecodeTree=o.default;var a=n(r(55096));t.decodeCodePoint=a.default;var s,c,u=r(55096);function l(e){return function(t,r){for(var n="",i=0,o=0;(o=t.indexOf("&",o))>=0;)if(n+=t.slice(i,o),i=o,o+=1,t.charCodeAt(o)!==s.NUM){for(var u=0,l=1,d=0,f=e[d];o>14)-1))break;d+=v}}if(0!==u)n+=1===(v=(e[u]&c.VALUE_LENGTH)>>14)?String.fromCharCode(e[u]&~c.VALUE_LENGTH):2===v?String.fromCharCode(e[u+1]):String.fromCharCode(e[u+1],e[u+2]),i=o-l+1}else{var m=o+1,_=10,T=t.charCodeAt(m);(T|s.To_LOWER_BIT)===s.LOWER_X&&(_=16,o+=1,m+=1);do{T=t.charCodeAt(++o)}while(T>=s.ZERO&&T<=s.NINE||16===_&&(T|s.To_LOWER_BIT)>=s.LOWER_A&&(T|s.To_LOWER_BIT)<=s.LOWER_F);if(m!==o){var g=t.substring(m,o),y=parseInt(g,_);if(t.charCodeAt(o)===s.SEMI)o+=1;else if(r)continue;n+=(0,a.default)(y),i=o}}return n+t.slice(i)}}function p(e,t,r,n){var i=(t&c.BRANCH_LENGTH)>>7,o=t&c.JUMP_TABLE;if(0===i)return 0!==o&&n===o?r:-1;if(o){var a=n-o;return a<0||a>=i?-1:e[r+a]-1}for(var s=r,u=s+i-1;s<=u;){var l=s+u>>>1,p=e[l];if(pn))return e[l+i];u=l-1}}return-1}Object.defineProperty(t,"replaceCodePoint",{enumerable:!0,get:function(){return u.replaceCodePoint}}),Object.defineProperty(t,"fromCodePoint",{enumerable:!0,get:function(){return u.fromCodePoint}}),function(e){e[e.NUM=35]="NUM",e[e.SEMI=59]="SEMI",e[e.ZERO=48]="ZERO",e[e.NINE=57]="NINE",e[e.LOWER_A=97]="LOWER_A",e[e.LOWER_F=102]="LOWER_F",e[e.LOWER_X=120]="LOWER_X",e[e.To_LOWER_BIT=32]="To_LOWER_BIT"}(s||(s={})),function(e){e[e.VALUE_LENGTH=49152]="VALUE_LENGTH",e[e.BRANCH_LENGTH=16256]="BRANCH_LENGTH",e[e.JUMP_TABLE=127]="JUMP_TABLE"}(c=t.BinTrieFlags||(t.BinTrieFlags={})),t.determineBranch=p;var d=l(i.default),f=l(o.default);t.decodeHTML=function(e){return d(e,!1)},t.decodeHTMLStrict=function(e){return d(e,!0)},t.decodeXML=function(e){return f(e,!0)}},55096:function(e,t){"use strict";var r;Object.defineProperty(t,"__esModule",{value:!0}),t.replaceCodePoint=t.fromCodePoint=void 0;var n=new Map([[0,65533],[128,8364],[130,8218],[131,402],[132,8222],[133,8230],[134,8224],[135,8225],[136,710],[137,8240],[138,352],[139,8249],[140,338],[142,381],[145,8216],[146,8217],[147,8220],[148,8221],[149,8226],[150,8211],[151,8212],[152,732],[153,8482],[154,353],[155,8250],[156,339],[158,382],[159,376]]);function i(e){var t;return e>=55296&&e<=57343||e>1114111?65533:null!==(t=n.get(e))&&void 0!==t?t:e}t.fromCodePoint=null!==(r=String.fromCodePoint)&&void 0!==r?r:function(e){var t="";return e>65535&&(e-=65536,t+=String.fromCharCode(e>>>10&1023|55296),e=56320|1023&e),t+=String.fromCharCode(e)},t.replaceCodePoint=i,t.default=function(e){return(0,t.fromCodePoint)(i(e))}},71818:function(e,t,r){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.encodeNonAsciiHTML=t.encodeHTML=void 0;var i=n(r(35504)),o=r(5987),a=/[\t\n!-,./:-@[-`\f{-}$\x80-\uFFFF]/g;function s(e,t){for(var r,n="",a=0;null!==(r=e.exec(t));){var s=r.index;n+=t.substring(a,s);var c=t.charCodeAt(s),u=i.default.get(c);if("object"==typeof u){if(s+1$\x80-\uFFFF]/g;var r=new Map([[34,"""],[38,"&"],[39,"'"],[60,"<"],[62,">"]]);function n(e){for(var n,i="",o=0;null!==(n=t.xmlReplacer.exec(e));){var a=n.index,s=e.charCodeAt(a),c=r.get(s);void 0!==c?(i+=e.substring(o,a)+c,o=a+1):(i+="".concat(e.substring(o,a),"&#x").concat((0,t.getCodePoint)(e,a).toString(16),";"),o=t.xmlReplacer.lastIndex+=Number(55296==(64512&s)))}return i+e.substr(o)}function i(e,t){return function(r){for(var n,i=0,o="";n=e.exec(r);)i!==n.index&&(o+=r.substring(i,n.index)),o+=t.get(n[0].charCodeAt(0)),i=n.index+1;return o+r.substring(i)}}t.getCodePoint=null!=String.prototype.codePointAt?function(e,t){return e.codePointAt(t)}:function(e,t){return 55296==(64512&e.charCodeAt(t))?1024*(e.charCodeAt(t)-55296)+e.charCodeAt(t+1)-56320+65536:e.charCodeAt(t)},t.encodeXML=n,t.escape=n,t.escapeUTF8=i(/[&<>'"]/g,r),t.escapeAttribute=i(/["&\u00A0]/g,new Map([[34,"""],[38,"&"],[160," "]])),t.escapeText=i(/[&<>\u00A0]/g,new Map([[38,"&"],[60,"<"],[62,">"],[160," "]]))},13603:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=new Uint16Array('\u1d41<\xd5\u0131\u028a\u049d\u057b\u05d0\u0675\u06de\u07a2\u07d6\u080f\u0a4a\u0a91\u0da1\u0e6d\u0f09\u0f26\u10ca\u1228\u12e1\u1415\u149d\u14c3\u14df\u1525\0\0\0\0\0\0\u156b\u16cd\u198d\u1c12\u1ddd\u1f7e\u2060\u21b0\u228d\u23c0\u23fb\u2442\u2824\u2912\u2d08\u2e48\u2fce\u3016\u32ba\u3639\u37ac\u38fe\u3a28\u3a71\u3ae0\u3b2e\u0800EMabcfglmnoprstu\\bfms\x7f\x84\x8b\x90\x95\x98\xa6\xb3\xb9\xc8\xcflig\u803b\xc6\u40c6P\u803b&\u4026cute\u803b\xc1\u40c1reve;\u4102\u0100iyx}rc\u803b\xc2\u40c2;\u4410r;\uc000\ud835\udd04rave\u803b\xc0\u40c0pha;\u4391acr;\u4100d;\u6a53\u0100gp\x9d\xa1on;\u4104f;\uc000\ud835\udd38plyFunction;\u6061ing\u803b\xc5\u40c5\u0100cs\xbe\xc3r;\uc000\ud835\udc9cign;\u6254ilde\u803b\xc3\u40c3ml\u803b\xc4\u40c4\u0400aceforsu\xe5\xfb\xfe\u0117\u011c\u0122\u0127\u012a\u0100cr\xea\xf2kslash;\u6216\u0176\xf6\xf8;\u6ae7ed;\u6306y;\u4411\u0180crt\u0105\u010b\u0114ause;\u6235noullis;\u612ca;\u4392r;\uc000\ud835\udd05pf;\uc000\ud835\udd39eve;\u42d8c\xf2\u0113mpeq;\u624e\u0700HOacdefhilorsu\u014d\u0151\u0156\u0180\u019e\u01a2\u01b5\u01b7\u01ba\u01dc\u0215\u0273\u0278\u027ecy;\u4427PY\u803b\xa9\u40a9\u0180cpy\u015d\u0162\u017aute;\u4106\u0100;i\u0167\u0168\u62d2talDifferentialD;\u6145leys;\u612d\u0200aeio\u0189\u018e\u0194\u0198ron;\u410cdil\u803b\xc7\u40c7rc;\u4108nint;\u6230ot;\u410a\u0100dn\u01a7\u01adilla;\u40b8terDot;\u40b7\xf2\u017fi;\u43a7rcle\u0200DMPT\u01c7\u01cb\u01d1\u01d6ot;\u6299inus;\u6296lus;\u6295imes;\u6297o\u0100cs\u01e2\u01f8kwiseContourIntegral;\u6232eCurly\u0100DQ\u0203\u020foubleQuote;\u601duote;\u6019\u0200lnpu\u021e\u0228\u0247\u0255on\u0100;e\u0225\u0226\u6237;\u6a74\u0180git\u022f\u0236\u023aruent;\u6261nt;\u622fourIntegral;\u622e\u0100fr\u024c\u024e;\u6102oduct;\u6210nterClockwiseContourIntegral;\u6233oss;\u6a2fcr;\uc000\ud835\udc9ep\u0100;C\u0284\u0285\u62d3ap;\u624d\u0580DJSZacefios\u02a0\u02ac\u02b0\u02b4\u02b8\u02cb\u02d7\u02e1\u02e6\u0333\u048d\u0100;o\u0179\u02a5trahd;\u6911cy;\u4402cy;\u4405cy;\u440f\u0180grs\u02bf\u02c4\u02c7ger;\u6021r;\u61a1hv;\u6ae4\u0100ay\u02d0\u02d5ron;\u410e;\u4414l\u0100;t\u02dd\u02de\u6207a;\u4394r;\uc000\ud835\udd07\u0100af\u02eb\u0327\u0100cm\u02f0\u0322ritical\u0200ADGT\u0300\u0306\u0316\u031ccute;\u40b4o\u0174\u030b\u030d;\u42d9bleAcute;\u42ddrave;\u4060ilde;\u42dcond;\u62c4ferentialD;\u6146\u0470\u033d\0\0\0\u0342\u0354\0\u0405f;\uc000\ud835\udd3b\u0180;DE\u0348\u0349\u034d\u40a8ot;\u60dcqual;\u6250ble\u0300CDLRUV\u0363\u0372\u0382\u03cf\u03e2\u03f8ontourIntegra\xec\u0239o\u0274\u0379\0\0\u037b\xbb\u0349nArrow;\u61d3\u0100eo\u0387\u03a4ft\u0180ART\u0390\u0396\u03a1rrow;\u61d0ightArrow;\u61d4e\xe5\u02cang\u0100LR\u03ab\u03c4eft\u0100AR\u03b3\u03b9rrow;\u67f8ightArrow;\u67faightArrow;\u67f9ight\u0100AT\u03d8\u03derrow;\u61d2ee;\u62a8p\u0241\u03e9\0\0\u03efrrow;\u61d1ownArrow;\u61d5erticalBar;\u6225n\u0300ABLRTa\u0412\u042a\u0430\u045e\u047f\u037crrow\u0180;BU\u041d\u041e\u0422\u6193ar;\u6913pArrow;\u61f5reve;\u4311eft\u02d2\u043a\0\u0446\0\u0450ightVector;\u6950eeVector;\u695eector\u0100;B\u0459\u045a\u61bdar;\u6956ight\u01d4\u0467\0\u0471eeVector;\u695fector\u0100;B\u047a\u047b\u61c1ar;\u6957ee\u0100;A\u0486\u0487\u62a4rrow;\u61a7\u0100ct\u0492\u0497r;\uc000\ud835\udc9frok;\u4110\u0800NTacdfglmopqstux\u04bd\u04c0\u04c4\u04cb\u04de\u04e2\u04e7\u04ee\u04f5\u0521\u052f\u0536\u0552\u055d\u0560\u0565G;\u414aH\u803b\xd0\u40d0cute\u803b\xc9\u40c9\u0180aiy\u04d2\u04d7\u04dcron;\u411arc\u803b\xca\u40ca;\u442dot;\u4116r;\uc000\ud835\udd08rave\u803b\xc8\u40c8ement;\u6208\u0100ap\u04fa\u04fecr;\u4112ty\u0253\u0506\0\0\u0512mallSquare;\u65fberySmallSquare;\u65ab\u0100gp\u0526\u052aon;\u4118f;\uc000\ud835\udd3csilon;\u4395u\u0100ai\u053c\u0549l\u0100;T\u0542\u0543\u6a75ilde;\u6242librium;\u61cc\u0100ci\u0557\u055ar;\u6130m;\u6a73a;\u4397ml\u803b\xcb\u40cb\u0100ip\u056a\u056fsts;\u6203onentialE;\u6147\u0280cfios\u0585\u0588\u058d\u05b2\u05ccy;\u4424r;\uc000\ud835\udd09lled\u0253\u0597\0\0\u05a3mallSquare;\u65fcerySmallSquare;\u65aa\u0370\u05ba\0\u05bf\0\0\u05c4f;\uc000\ud835\udd3dAll;\u6200riertrf;\u6131c\xf2\u05cb\u0600JTabcdfgorst\u05e8\u05ec\u05ef\u05fa\u0600\u0612\u0616\u061b\u061d\u0623\u066c\u0672cy;\u4403\u803b>\u403emma\u0100;d\u05f7\u05f8\u4393;\u43dcreve;\u411e\u0180eiy\u0607\u060c\u0610dil;\u4122rc;\u411c;\u4413ot;\u4120r;\uc000\ud835\udd0a;\u62d9pf;\uc000\ud835\udd3eeater\u0300EFGLST\u0635\u0644\u064e\u0656\u065b\u0666qual\u0100;L\u063e\u063f\u6265ess;\u62dbullEqual;\u6267reater;\u6aa2ess;\u6277lantEqual;\u6a7eilde;\u6273cr;\uc000\ud835\udca2;\u626b\u0400Aacfiosu\u0685\u068b\u0696\u069b\u069e\u06aa\u06be\u06caRDcy;\u442a\u0100ct\u0690\u0694ek;\u42c7;\u405eirc;\u4124r;\u610clbertSpace;\u610b\u01f0\u06af\0\u06b2f;\u610dizontalLine;\u6500\u0100ct\u06c3\u06c5\xf2\u06a9rok;\u4126mp\u0144\u06d0\u06d8ownHum\xf0\u012fqual;\u624f\u0700EJOacdfgmnostu\u06fa\u06fe\u0703\u0707\u070e\u071a\u071e\u0721\u0728\u0744\u0778\u078b\u078f\u0795cy;\u4415lig;\u4132cy;\u4401cute\u803b\xcd\u40cd\u0100iy\u0713\u0718rc\u803b\xce\u40ce;\u4418ot;\u4130r;\u6111rave\u803b\xcc\u40cc\u0180;ap\u0720\u072f\u073f\u0100cg\u0734\u0737r;\u412ainaryI;\u6148lie\xf3\u03dd\u01f4\u0749\0\u0762\u0100;e\u074d\u074e\u622c\u0100gr\u0753\u0758ral;\u622bsection;\u62c2isible\u0100CT\u076c\u0772omma;\u6063imes;\u6062\u0180gpt\u077f\u0783\u0788on;\u412ef;\uc000\ud835\udd40a;\u4399cr;\u6110ilde;\u4128\u01eb\u079a\0\u079ecy;\u4406l\u803b\xcf\u40cf\u0280cfosu\u07ac\u07b7\u07bc\u07c2\u07d0\u0100iy\u07b1\u07b5rc;\u4134;\u4419r;\uc000\ud835\udd0dpf;\uc000\ud835\udd41\u01e3\u07c7\0\u07ccr;\uc000\ud835\udca5rcy;\u4408kcy;\u4404\u0380HJacfos\u07e4\u07e8\u07ec\u07f1\u07fd\u0802\u0808cy;\u4425cy;\u440cppa;\u439a\u0100ey\u07f6\u07fbdil;\u4136;\u441ar;\uc000\ud835\udd0epf;\uc000\ud835\udd42cr;\uc000\ud835\udca6\u0580JTaceflmost\u0825\u0829\u082c\u0850\u0863\u09b3\u09b8\u09c7\u09cd\u0a37\u0a47cy;\u4409\u803b<\u403c\u0280cmnpr\u0837\u083c\u0841\u0844\u084dute;\u4139bda;\u439bg;\u67ealacetrf;\u6112r;\u619e\u0180aey\u0857\u085c\u0861ron;\u413ddil;\u413b;\u441b\u0100fs\u0868\u0970t\u0500ACDFRTUVar\u087e\u08a9\u08b1\u08e0\u08e6\u08fc\u092f\u095b\u0390\u096a\u0100nr\u0883\u088fgleBracket;\u67e8row\u0180;BR\u0899\u089a\u089e\u6190ar;\u61e4ightArrow;\u61c6eiling;\u6308o\u01f5\u08b7\0\u08c3bleBracket;\u67e6n\u01d4\u08c8\0\u08d2eeVector;\u6961ector\u0100;B\u08db\u08dc\u61c3ar;\u6959loor;\u630aight\u0100AV\u08ef\u08f5rrow;\u6194ector;\u694e\u0100er\u0901\u0917e\u0180;AV\u0909\u090a\u0910\u62a3rrow;\u61a4ector;\u695aiangle\u0180;BE\u0924\u0925\u0929\u62b2ar;\u69cfqual;\u62b4p\u0180DTV\u0937\u0942\u094cownVector;\u6951eeVector;\u6960ector\u0100;B\u0956\u0957\u61bfar;\u6958ector\u0100;B\u0965\u0966\u61bcar;\u6952ight\xe1\u039cs\u0300EFGLST\u097e\u098b\u0995\u099d\u09a2\u09adqualGreater;\u62daullEqual;\u6266reater;\u6276ess;\u6aa1lantEqual;\u6a7dilde;\u6272r;\uc000\ud835\udd0f\u0100;e\u09bd\u09be\u62d8ftarrow;\u61daidot;\u413f\u0180npw\u09d4\u0a16\u0a1bg\u0200LRlr\u09de\u09f7\u0a02\u0a10eft\u0100AR\u09e6\u09ecrrow;\u67f5ightArrow;\u67f7ightArrow;\u67f6eft\u0100ar\u03b3\u0a0aight\xe1\u03bfight\xe1\u03caf;\uc000\ud835\udd43er\u0100LR\u0a22\u0a2ceftArrow;\u6199ightArrow;\u6198\u0180cht\u0a3e\u0a40\u0a42\xf2\u084c;\u61b0rok;\u4141;\u626a\u0400acefiosu\u0a5a\u0a5d\u0a60\u0a77\u0a7c\u0a85\u0a8b\u0a8ep;\u6905y;\u441c\u0100dl\u0a65\u0a6fiumSpace;\u605flintrf;\u6133r;\uc000\ud835\udd10nusPlus;\u6213pf;\uc000\ud835\udd44c\xf2\u0a76;\u439c\u0480Jacefostu\u0aa3\u0aa7\u0aad\u0ac0\u0b14\u0b19\u0d91\u0d97\u0d9ecy;\u440acute;\u4143\u0180aey\u0ab4\u0ab9\u0aberon;\u4147dil;\u4145;\u441d\u0180gsw\u0ac7\u0af0\u0b0eative\u0180MTV\u0ad3\u0adf\u0ae8ediumSpace;\u600bhi\u0100cn\u0ae6\u0ad8\xeb\u0ad9eryThi\xee\u0ad9ted\u0100GL\u0af8\u0b06reaterGreate\xf2\u0673essLes\xf3\u0a48Line;\u400ar;\uc000\ud835\udd11\u0200Bnpt\u0b22\u0b28\u0b37\u0b3areak;\u6060BreakingSpace;\u40a0f;\u6115\u0680;CDEGHLNPRSTV\u0b55\u0b56\u0b6a\u0b7c\u0ba1\u0beb\u0c04\u0c5e\u0c84\u0ca6\u0cd8\u0d61\u0d85\u6aec\u0100ou\u0b5b\u0b64ngruent;\u6262pCap;\u626doubleVerticalBar;\u6226\u0180lqx\u0b83\u0b8a\u0b9bement;\u6209ual\u0100;T\u0b92\u0b93\u6260ilde;\uc000\u2242\u0338ists;\u6204reater\u0380;EFGLST\u0bb6\u0bb7\u0bbd\u0bc9\u0bd3\u0bd8\u0be5\u626fqual;\u6271ullEqual;\uc000\u2267\u0338reater;\uc000\u226b\u0338ess;\u6279lantEqual;\uc000\u2a7e\u0338ilde;\u6275ump\u0144\u0bf2\u0bfdownHump;\uc000\u224e\u0338qual;\uc000\u224f\u0338e\u0100fs\u0c0a\u0c27tTriangle\u0180;BE\u0c1a\u0c1b\u0c21\u62eaar;\uc000\u29cf\u0338qual;\u62ecs\u0300;EGLST\u0c35\u0c36\u0c3c\u0c44\u0c4b\u0c58\u626equal;\u6270reater;\u6278ess;\uc000\u226a\u0338lantEqual;\uc000\u2a7d\u0338ilde;\u6274ested\u0100GL\u0c68\u0c79reaterGreater;\uc000\u2aa2\u0338essLess;\uc000\u2aa1\u0338recedes\u0180;ES\u0c92\u0c93\u0c9b\u6280qual;\uc000\u2aaf\u0338lantEqual;\u62e0\u0100ei\u0cab\u0cb9verseElement;\u620cghtTriangle\u0180;BE\u0ccb\u0ccc\u0cd2\u62ebar;\uc000\u29d0\u0338qual;\u62ed\u0100qu\u0cdd\u0d0cuareSu\u0100bp\u0ce8\u0cf9set\u0100;E\u0cf0\u0cf3\uc000\u228f\u0338qual;\u62e2erset\u0100;E\u0d03\u0d06\uc000\u2290\u0338qual;\u62e3\u0180bcp\u0d13\u0d24\u0d4eset\u0100;E\u0d1b\u0d1e\uc000\u2282\u20d2qual;\u6288ceeds\u0200;EST\u0d32\u0d33\u0d3b\u0d46\u6281qual;\uc000\u2ab0\u0338lantEqual;\u62e1ilde;\uc000\u227f\u0338erset\u0100;E\u0d58\u0d5b\uc000\u2283\u20d2qual;\u6289ilde\u0200;EFT\u0d6e\u0d6f\u0d75\u0d7f\u6241qual;\u6244ullEqual;\u6247ilde;\u6249erticalBar;\u6224cr;\uc000\ud835\udca9ilde\u803b\xd1\u40d1;\u439d\u0700Eacdfgmoprstuv\u0dbd\u0dc2\u0dc9\u0dd5\u0ddb\u0de0\u0de7\u0dfc\u0e02\u0e20\u0e22\u0e32\u0e3f\u0e44lig;\u4152cute\u803b\xd3\u40d3\u0100iy\u0dce\u0dd3rc\u803b\xd4\u40d4;\u441eblac;\u4150r;\uc000\ud835\udd12rave\u803b\xd2\u40d2\u0180aei\u0dee\u0df2\u0df6cr;\u414cga;\u43a9cron;\u439fpf;\uc000\ud835\udd46enCurly\u0100DQ\u0e0e\u0e1aoubleQuote;\u601cuote;\u6018;\u6a54\u0100cl\u0e27\u0e2cr;\uc000\ud835\udcaaash\u803b\xd8\u40d8i\u016c\u0e37\u0e3cde\u803b\xd5\u40d5es;\u6a37ml\u803b\xd6\u40d6er\u0100BP\u0e4b\u0e60\u0100ar\u0e50\u0e53r;\u603eac\u0100ek\u0e5a\u0e5c;\u63deet;\u63b4arenthesis;\u63dc\u0480acfhilors\u0e7f\u0e87\u0e8a\u0e8f\u0e92\u0e94\u0e9d\u0eb0\u0efcrtialD;\u6202y;\u441fr;\uc000\ud835\udd13i;\u43a6;\u43a0usMinus;\u40b1\u0100ip\u0ea2\u0eadncareplan\xe5\u069df;\u6119\u0200;eio\u0eb9\u0eba\u0ee0\u0ee4\u6abbcedes\u0200;EST\u0ec8\u0ec9\u0ecf\u0eda\u627aqual;\u6aaflantEqual;\u627cilde;\u627eme;\u6033\u0100dp\u0ee9\u0eeeuct;\u620fortion\u0100;a\u0225\u0ef9l;\u621d\u0100ci\u0f01\u0f06r;\uc000\ud835\udcab;\u43a8\u0200Ufos\u0f11\u0f16\u0f1b\u0f1fOT\u803b"\u4022r;\uc000\ud835\udd14pf;\u611acr;\uc000\ud835\udcac\u0600BEacefhiorsu\u0f3e\u0f43\u0f47\u0f60\u0f73\u0fa7\u0faa\u0fad\u1096\u10a9\u10b4\u10bearr;\u6910G\u803b\xae\u40ae\u0180cnr\u0f4e\u0f53\u0f56ute;\u4154g;\u67ebr\u0100;t\u0f5c\u0f5d\u61a0l;\u6916\u0180aey\u0f67\u0f6c\u0f71ron;\u4158dil;\u4156;\u4420\u0100;v\u0f78\u0f79\u611cerse\u0100EU\u0f82\u0f99\u0100lq\u0f87\u0f8eement;\u620builibrium;\u61cbpEquilibrium;\u696fr\xbb\u0f79o;\u43a1ght\u0400ACDFTUVa\u0fc1\u0feb\u0ff3\u1022\u1028\u105b\u1087\u03d8\u0100nr\u0fc6\u0fd2gleBracket;\u67e9row\u0180;BL\u0fdc\u0fdd\u0fe1\u6192ar;\u61e5eftArrow;\u61c4eiling;\u6309o\u01f5\u0ff9\0\u1005bleBracket;\u67e7n\u01d4\u100a\0\u1014eeVector;\u695dector\u0100;B\u101d\u101e\u61c2ar;\u6955loor;\u630b\u0100er\u102d\u1043e\u0180;AV\u1035\u1036\u103c\u62a2rrow;\u61a6ector;\u695biangle\u0180;BE\u1050\u1051\u1055\u62b3ar;\u69d0qual;\u62b5p\u0180DTV\u1063\u106e\u1078ownVector;\u694feeVector;\u695cector\u0100;B\u1082\u1083\u61bear;\u6954ector\u0100;B\u1091\u1092\u61c0ar;\u6953\u0100pu\u109b\u109ef;\u611dndImplies;\u6970ightarrow;\u61db\u0100ch\u10b9\u10bcr;\u611b;\u61b1leDelayed;\u69f4\u0680HOacfhimoqstu\u10e4\u10f1\u10f7\u10fd\u1119\u111e\u1151\u1156\u1161\u1167\u11b5\u11bb\u11bf\u0100Cc\u10e9\u10eeHcy;\u4429y;\u4428FTcy;\u442ccute;\u415a\u0280;aeiy\u1108\u1109\u110e\u1113\u1117\u6abcron;\u4160dil;\u415erc;\u415c;\u4421r;\uc000\ud835\udd16ort\u0200DLRU\u112a\u1134\u113e\u1149ownArrow\xbb\u041eeftArrow\xbb\u089aightArrow\xbb\u0fddpArrow;\u6191gma;\u43a3allCircle;\u6218pf;\uc000\ud835\udd4a\u0272\u116d\0\0\u1170t;\u621aare\u0200;ISU\u117b\u117c\u1189\u11af\u65a1ntersection;\u6293u\u0100bp\u118f\u119eset\u0100;E\u1197\u1198\u628fqual;\u6291erset\u0100;E\u11a8\u11a9\u6290qual;\u6292nion;\u6294cr;\uc000\ud835\udcaear;\u62c6\u0200bcmp\u11c8\u11db\u1209\u120b\u0100;s\u11cd\u11ce\u62d0et\u0100;E\u11cd\u11d5qual;\u6286\u0100ch\u11e0\u1205eeds\u0200;EST\u11ed\u11ee\u11f4\u11ff\u627bqual;\u6ab0lantEqual;\u627dilde;\u627fTh\xe1\u0f8c;\u6211\u0180;es\u1212\u1213\u1223\u62d1rset\u0100;E\u121c\u121d\u6283qual;\u6287et\xbb\u1213\u0580HRSacfhiors\u123e\u1244\u1249\u1255\u125e\u1271\u1276\u129f\u12c2\u12c8\u12d1ORN\u803b\xde\u40deADE;\u6122\u0100Hc\u124e\u1252cy;\u440by;\u4426\u0100bu\u125a\u125c;\u4009;\u43a4\u0180aey\u1265\u126a\u126fron;\u4164dil;\u4162;\u4422r;\uc000\ud835\udd17\u0100ei\u127b\u1289\u01f2\u1280\0\u1287efore;\u6234a;\u4398\u0100cn\u128e\u1298kSpace;\uc000\u205f\u200aSpace;\u6009lde\u0200;EFT\u12ab\u12ac\u12b2\u12bc\u623cqual;\u6243ullEqual;\u6245ilde;\u6248pf;\uc000\ud835\udd4bipleDot;\u60db\u0100ct\u12d6\u12dbr;\uc000\ud835\udcafrok;\u4166\u0ae1\u12f7\u130e\u131a\u1326\0\u132c\u1331\0\0\0\0\0\u1338\u133d\u1377\u1385\0\u13ff\u1404\u140a\u1410\u0100cr\u12fb\u1301ute\u803b\xda\u40dar\u0100;o\u1307\u1308\u619fcir;\u6949r\u01e3\u1313\0\u1316y;\u440eve;\u416c\u0100iy\u131e\u1323rc\u803b\xdb\u40db;\u4423blac;\u4170r;\uc000\ud835\udd18rave\u803b\xd9\u40d9acr;\u416a\u0100di\u1341\u1369er\u0100BP\u1348\u135d\u0100ar\u134d\u1350r;\u405fac\u0100ek\u1357\u1359;\u63dfet;\u63b5arenthesis;\u63ddon\u0100;P\u1370\u1371\u62c3lus;\u628e\u0100gp\u137b\u137fon;\u4172f;\uc000\ud835\udd4c\u0400ADETadps\u1395\u13ae\u13b8\u13c4\u03e8\u13d2\u13d7\u13f3rrow\u0180;BD\u1150\u13a0\u13a4ar;\u6912ownArrow;\u61c5ownArrow;\u6195quilibrium;\u696eee\u0100;A\u13cb\u13cc\u62a5rrow;\u61a5own\xe1\u03f3er\u0100LR\u13de\u13e8eftArrow;\u6196ightArrow;\u6197i\u0100;l\u13f9\u13fa\u43d2on;\u43a5ing;\u416ecr;\uc000\ud835\udcb0ilde;\u4168ml\u803b\xdc\u40dc\u0480Dbcdefosv\u1427\u142c\u1430\u1433\u143e\u1485\u148a\u1490\u1496ash;\u62abar;\u6aeby;\u4412ash\u0100;l\u143b\u143c\u62a9;\u6ae6\u0100er\u1443\u1445;\u62c1\u0180bty\u144c\u1450\u147aar;\u6016\u0100;i\u144f\u1455cal\u0200BLST\u1461\u1465\u146a\u1474ar;\u6223ine;\u407ceparator;\u6758ilde;\u6240ThinSpace;\u600ar;\uc000\ud835\udd19pf;\uc000\ud835\udd4dcr;\uc000\ud835\udcb1dash;\u62aa\u0280cefos\u14a7\u14ac\u14b1\u14b6\u14bcirc;\u4174dge;\u62c0r;\uc000\ud835\udd1apf;\uc000\ud835\udd4ecr;\uc000\ud835\udcb2\u0200fios\u14cb\u14d0\u14d2\u14d8r;\uc000\ud835\udd1b;\u439epf;\uc000\ud835\udd4fcr;\uc000\ud835\udcb3\u0480AIUacfosu\u14f1\u14f5\u14f9\u14fd\u1504\u150f\u1514\u151a\u1520cy;\u442fcy;\u4407cy;\u442ecute\u803b\xdd\u40dd\u0100iy\u1509\u150drc;\u4176;\u442br;\uc000\ud835\udd1cpf;\uc000\ud835\udd50cr;\uc000\ud835\udcb4ml;\u4178\u0400Hacdefos\u1535\u1539\u153f\u154b\u154f\u155d\u1560\u1564cy;\u4416cute;\u4179\u0100ay\u1544\u1549ron;\u417d;\u4417ot;\u417b\u01f2\u1554\0\u155boWidt\xe8\u0ad9a;\u4396r;\u6128pf;\u6124cr;\uc000\ud835\udcb5\u0be1\u1583\u158a\u1590\0\u15b0\u15b6\u15bf\0\0\0\0\u15c6\u15db\u15eb\u165f\u166d\0\u1695\u169b\u16b2\u16b9\0\u16becute\u803b\xe1\u40e1reve;\u4103\u0300;Ediuy\u159c\u159d\u15a1\u15a3\u15a8\u15ad\u623e;\uc000\u223e\u0333;\u623frc\u803b\xe2\u40e2te\u80bb\xb4\u0306;\u4430lig\u803b\xe6\u40e6\u0100;r\xb2\u15ba;\uc000\ud835\udd1erave\u803b\xe0\u40e0\u0100ep\u15ca\u15d6\u0100fp\u15cf\u15d4sym;\u6135\xe8\u15d3ha;\u43b1\u0100ap\u15dfc\u0100cl\u15e4\u15e7r;\u4101g;\u6a3f\u0264\u15f0\0\0\u160a\u0280;adsv\u15fa\u15fb\u15ff\u1601\u1607\u6227nd;\u6a55;\u6a5clope;\u6a58;\u6a5a\u0380;elmrsz\u1618\u1619\u161b\u161e\u163f\u164f\u1659\u6220;\u69a4e\xbb\u1619sd\u0100;a\u1625\u1626\u6221\u0461\u1630\u1632\u1634\u1636\u1638\u163a\u163c\u163e;\u69a8;\u69a9;\u69aa;\u69ab;\u69ac;\u69ad;\u69ae;\u69aft\u0100;v\u1645\u1646\u621fb\u0100;d\u164c\u164d\u62be;\u699d\u0100pt\u1654\u1657h;\u6222\xbb\xb9arr;\u637c\u0100gp\u1663\u1667on;\u4105f;\uc000\ud835\udd52\u0380;Eaeiop\u12c1\u167b\u167d\u1682\u1684\u1687\u168a;\u6a70cir;\u6a6f;\u624ad;\u624bs;\u4027rox\u0100;e\u12c1\u1692\xf1\u1683ing\u803b\xe5\u40e5\u0180cty\u16a1\u16a6\u16a8r;\uc000\ud835\udcb6;\u402amp\u0100;e\u12c1\u16af\xf1\u0288ilde\u803b\xe3\u40e3ml\u803b\xe4\u40e4\u0100ci\u16c2\u16c8onin\xf4\u0272nt;\u6a11\u0800Nabcdefiklnoprsu\u16ed\u16f1\u1730\u173c\u1743\u1748\u1778\u177d\u17e0\u17e6\u1839\u1850\u170d\u193d\u1948\u1970ot;\u6aed\u0100cr\u16f6\u171ek\u0200ceps\u1700\u1705\u170d\u1713ong;\u624cpsilon;\u43f6rime;\u6035im\u0100;e\u171a\u171b\u623dq;\u62cd\u0176\u1722\u1726ee;\u62bded\u0100;g\u172c\u172d\u6305e\xbb\u172drk\u0100;t\u135c\u1737brk;\u63b6\u0100oy\u1701\u1741;\u4431quo;\u601e\u0280cmprt\u1753\u175b\u1761\u1764\u1768aus\u0100;e\u010a\u0109ptyv;\u69b0s\xe9\u170cno\xf5\u0113\u0180ahw\u176f\u1771\u1773;\u43b2;\u6136een;\u626cr;\uc000\ud835\udd1fg\u0380costuvw\u178d\u179d\u17b3\u17c1\u17d5\u17db\u17de\u0180aiu\u1794\u1796\u179a\xf0\u0760rc;\u65efp\xbb\u1371\u0180dpt\u17a4\u17a8\u17adot;\u6a00lus;\u6a01imes;\u6a02\u0271\u17b9\0\0\u17becup;\u6a06ar;\u6605riangle\u0100du\u17cd\u17d2own;\u65bdp;\u65b3plus;\u6a04e\xe5\u1444\xe5\u14adarow;\u690d\u0180ako\u17ed\u1826\u1835\u0100cn\u17f2\u1823k\u0180lst\u17fa\u05ab\u1802ozenge;\u69ebriangle\u0200;dlr\u1812\u1813\u1818\u181d\u65b4own;\u65beeft;\u65c2ight;\u65b8k;\u6423\u01b1\u182b\0\u1833\u01b2\u182f\0\u1831;\u6592;\u65914;\u6593ck;\u6588\u0100eo\u183e\u184d\u0100;q\u1843\u1846\uc000=\u20e5uiv;\uc000\u2261\u20e5t;\u6310\u0200ptwx\u1859\u185e\u1867\u186cf;\uc000\ud835\udd53\u0100;t\u13cb\u1863om\xbb\u13cctie;\u62c8\u0600DHUVbdhmptuv\u1885\u1896\u18aa\u18bb\u18d7\u18db\u18ec\u18ff\u1905\u190a\u1910\u1921\u0200LRlr\u188e\u1890\u1892\u1894;\u6557;\u6554;\u6556;\u6553\u0280;DUdu\u18a1\u18a2\u18a4\u18a6\u18a8\u6550;\u6566;\u6569;\u6564;\u6567\u0200LRlr\u18b3\u18b5\u18b7\u18b9;\u655d;\u655a;\u655c;\u6559\u0380;HLRhlr\u18ca\u18cb\u18cd\u18cf\u18d1\u18d3\u18d5\u6551;\u656c;\u6563;\u6560;\u656b;\u6562;\u655fox;\u69c9\u0200LRlr\u18e4\u18e6\u18e8\u18ea;\u6555;\u6552;\u6510;\u650c\u0280;DUdu\u06bd\u18f7\u18f9\u18fb\u18fd;\u6565;\u6568;\u652c;\u6534inus;\u629flus;\u629eimes;\u62a0\u0200LRlr\u1919\u191b\u191d\u191f;\u655b;\u6558;\u6518;\u6514\u0380;HLRhlr\u1930\u1931\u1933\u1935\u1937\u1939\u193b\u6502;\u656a;\u6561;\u655e;\u653c;\u6524;\u651c\u0100ev\u0123\u1942bar\u803b\xa6\u40a6\u0200ceio\u1951\u1956\u195a\u1960r;\uc000\ud835\udcb7mi;\u604fm\u0100;e\u171a\u171cl\u0180;bh\u1968\u1969\u196b\u405c;\u69c5sub;\u67c8\u016c\u1974\u197el\u0100;e\u1979\u197a\u6022t\xbb\u197ap\u0180;Ee\u012f\u1985\u1987;\u6aae\u0100;q\u06dc\u06db\u0ce1\u19a7\0\u19e8\u1a11\u1a15\u1a32\0\u1a37\u1a50\0\0\u1ab4\0\0\u1ac1\0\0\u1b21\u1b2e\u1b4d\u1b52\0\u1bfd\0\u1c0c\u0180cpr\u19ad\u19b2\u19ddute;\u4107\u0300;abcds\u19bf\u19c0\u19c4\u19ca\u19d5\u19d9\u6229nd;\u6a44rcup;\u6a49\u0100au\u19cf\u19d2p;\u6a4bp;\u6a47ot;\u6a40;\uc000\u2229\ufe00\u0100eo\u19e2\u19e5t;\u6041\xee\u0693\u0200aeiu\u19f0\u19fb\u1a01\u1a05\u01f0\u19f5\0\u19f8s;\u6a4don;\u410ddil\u803b\xe7\u40e7rc;\u4109ps\u0100;s\u1a0c\u1a0d\u6a4cm;\u6a50ot;\u410b\u0180dmn\u1a1b\u1a20\u1a26il\u80bb\xb8\u01adptyv;\u69b2t\u8100\xa2;e\u1a2d\u1a2e\u40a2r\xe4\u01b2r;\uc000\ud835\udd20\u0180cei\u1a3d\u1a40\u1a4dy;\u4447ck\u0100;m\u1a47\u1a48\u6713ark\xbb\u1a48;\u43c7r\u0380;Ecefms\u1a5f\u1a60\u1a62\u1a6b\u1aa4\u1aaa\u1aae\u65cb;\u69c3\u0180;el\u1a69\u1a6a\u1a6d\u42c6q;\u6257e\u0261\u1a74\0\0\u1a88rrow\u0100lr\u1a7c\u1a81eft;\u61baight;\u61bb\u0280RSacd\u1a92\u1a94\u1a96\u1a9a\u1a9f\xbb\u0f47;\u64c8st;\u629birc;\u629aash;\u629dnint;\u6a10id;\u6aefcir;\u69c2ubs\u0100;u\u1abb\u1abc\u6663it\xbb\u1abc\u02ec\u1ac7\u1ad4\u1afa\0\u1b0aon\u0100;e\u1acd\u1ace\u403a\u0100;q\xc7\xc6\u026d\u1ad9\0\0\u1ae2a\u0100;t\u1ade\u1adf\u402c;\u4040\u0180;fl\u1ae8\u1ae9\u1aeb\u6201\xee\u1160e\u0100mx\u1af1\u1af6ent\xbb\u1ae9e\xf3\u024d\u01e7\u1afe\0\u1b07\u0100;d\u12bb\u1b02ot;\u6a6dn\xf4\u0246\u0180fry\u1b10\u1b14\u1b17;\uc000\ud835\udd54o\xe4\u0254\u8100\xa9;s\u0155\u1b1dr;\u6117\u0100ao\u1b25\u1b29rr;\u61b5ss;\u6717\u0100cu\u1b32\u1b37r;\uc000\ud835\udcb8\u0100bp\u1b3c\u1b44\u0100;e\u1b41\u1b42\u6acf;\u6ad1\u0100;e\u1b49\u1b4a\u6ad0;\u6ad2dot;\u62ef\u0380delprvw\u1b60\u1b6c\u1b77\u1b82\u1bac\u1bd4\u1bf9arr\u0100lr\u1b68\u1b6a;\u6938;\u6935\u0270\u1b72\0\0\u1b75r;\u62dec;\u62dfarr\u0100;p\u1b7f\u1b80\u61b6;\u693d\u0300;bcdos\u1b8f\u1b90\u1b96\u1ba1\u1ba5\u1ba8\u622arcap;\u6a48\u0100au\u1b9b\u1b9ep;\u6a46p;\u6a4aot;\u628dr;\u6a45;\uc000\u222a\ufe00\u0200alrv\u1bb5\u1bbf\u1bde\u1be3rr\u0100;m\u1bbc\u1bbd\u61b7;\u693cy\u0180evw\u1bc7\u1bd4\u1bd8q\u0270\u1bce\0\0\u1bd2re\xe3\u1b73u\xe3\u1b75ee;\u62ceedge;\u62cfen\u803b\xa4\u40a4earrow\u0100lr\u1bee\u1bf3eft\xbb\u1b80ight\xbb\u1bbde\xe4\u1bdd\u0100ci\u1c01\u1c07onin\xf4\u01f7nt;\u6231lcty;\u632d\u0980AHabcdefhijlorstuwz\u1c38\u1c3b\u1c3f\u1c5d\u1c69\u1c75\u1c8a\u1c9e\u1cac\u1cb7\u1cfb\u1cff\u1d0d\u1d7b\u1d91\u1dab\u1dbb\u1dc6\u1dcdr\xf2\u0381ar;\u6965\u0200glrs\u1c48\u1c4d\u1c52\u1c54ger;\u6020eth;\u6138\xf2\u1133h\u0100;v\u1c5a\u1c5b\u6010\xbb\u090a\u016b\u1c61\u1c67arow;\u690fa\xe3\u0315\u0100ay\u1c6e\u1c73ron;\u410f;\u4434\u0180;ao\u0332\u1c7c\u1c84\u0100gr\u02bf\u1c81r;\u61catseq;\u6a77\u0180glm\u1c91\u1c94\u1c98\u803b\xb0\u40b0ta;\u43b4ptyv;\u69b1\u0100ir\u1ca3\u1ca8sht;\u697f;\uc000\ud835\udd21ar\u0100lr\u1cb3\u1cb5\xbb\u08dc\xbb\u101e\u0280aegsv\u1cc2\u0378\u1cd6\u1cdc\u1ce0m\u0180;os\u0326\u1cca\u1cd4nd\u0100;s\u0326\u1cd1uit;\u6666amma;\u43ddin;\u62f2\u0180;io\u1ce7\u1ce8\u1cf8\u40f7de\u8100\xf7;o\u1ce7\u1cf0ntimes;\u62c7n\xf8\u1cf7cy;\u4452c\u026f\u1d06\0\0\u1d0arn;\u631eop;\u630d\u0280lptuw\u1d18\u1d1d\u1d22\u1d49\u1d55lar;\u4024f;\uc000\ud835\udd55\u0280;emps\u030b\u1d2d\u1d37\u1d3d\u1d42q\u0100;d\u0352\u1d33ot;\u6251inus;\u6238lus;\u6214quare;\u62a1blebarwedg\xe5\xfan\u0180adh\u112e\u1d5d\u1d67ownarrow\xf3\u1c83arpoon\u0100lr\u1d72\u1d76ef\xf4\u1cb4igh\xf4\u1cb6\u0162\u1d7f\u1d85karo\xf7\u0f42\u026f\u1d8a\0\0\u1d8ern;\u631fop;\u630c\u0180cot\u1d98\u1da3\u1da6\u0100ry\u1d9d\u1da1;\uc000\ud835\udcb9;\u4455l;\u69f6rok;\u4111\u0100dr\u1db0\u1db4ot;\u62f1i\u0100;f\u1dba\u1816\u65bf\u0100ah\u1dc0\u1dc3r\xf2\u0429a\xf2\u0fa6angle;\u69a6\u0100ci\u1dd2\u1dd5y;\u445fgrarr;\u67ff\u0900Dacdefglmnopqrstux\u1e01\u1e09\u1e19\u1e38\u0578\u1e3c\u1e49\u1e61\u1e7e\u1ea5\u1eaf\u1ebd\u1ee1\u1f2a\u1f37\u1f44\u1f4e\u1f5a\u0100Do\u1e06\u1d34o\xf4\u1c89\u0100cs\u1e0e\u1e14ute\u803b\xe9\u40e9ter;\u6a6e\u0200aioy\u1e22\u1e27\u1e31\u1e36ron;\u411br\u0100;c\u1e2d\u1e2e\u6256\u803b\xea\u40ealon;\u6255;\u444dot;\u4117\u0100Dr\u1e41\u1e45ot;\u6252;\uc000\ud835\udd22\u0180;rs\u1e50\u1e51\u1e57\u6a9aave\u803b\xe8\u40e8\u0100;d\u1e5c\u1e5d\u6a96ot;\u6a98\u0200;ils\u1e6a\u1e6b\u1e72\u1e74\u6a99nters;\u63e7;\u6113\u0100;d\u1e79\u1e7a\u6a95ot;\u6a97\u0180aps\u1e85\u1e89\u1e97cr;\u4113ty\u0180;sv\u1e92\u1e93\u1e95\u6205et\xbb\u1e93p\u01001;\u1e9d\u1ea4\u0133\u1ea1\u1ea3;\u6004;\u6005\u6003\u0100gs\u1eaa\u1eac;\u414bp;\u6002\u0100gp\u1eb4\u1eb8on;\u4119f;\uc000\ud835\udd56\u0180als\u1ec4\u1ece\u1ed2r\u0100;s\u1eca\u1ecb\u62d5l;\u69e3us;\u6a71i\u0180;lv\u1eda\u1edb\u1edf\u43b5on\xbb\u1edb;\u43f5\u0200csuv\u1eea\u1ef3\u1f0b\u1f23\u0100io\u1eef\u1e31rc\xbb\u1e2e\u0269\u1ef9\0\0\u1efb\xed\u0548ant\u0100gl\u1f02\u1f06tr\xbb\u1e5dess\xbb\u1e7a\u0180aei\u1f12\u1f16\u1f1als;\u403dst;\u625fv\u0100;D\u0235\u1f20D;\u6a78parsl;\u69e5\u0100Da\u1f2f\u1f33ot;\u6253rr;\u6971\u0180cdi\u1f3e\u1f41\u1ef8r;\u612fo\xf4\u0352\u0100ah\u1f49\u1f4b;\u43b7\u803b\xf0\u40f0\u0100mr\u1f53\u1f57l\u803b\xeb\u40ebo;\u60ac\u0180cip\u1f61\u1f64\u1f67l;\u4021s\xf4\u056e\u0100eo\u1f6c\u1f74ctatio\xee\u0559nential\xe5\u0579\u09e1\u1f92\0\u1f9e\0\u1fa1\u1fa7\0\0\u1fc6\u1fcc\0\u1fd3\0\u1fe6\u1fea\u2000\0\u2008\u205allingdotse\xf1\u1e44y;\u4444male;\u6640\u0180ilr\u1fad\u1fb3\u1fc1lig;\u8000\ufb03\u0269\u1fb9\0\0\u1fbdg;\u8000\ufb00ig;\u8000\ufb04;\uc000\ud835\udd23lig;\u8000\ufb01lig;\uc000fj\u0180alt\u1fd9\u1fdc\u1fe1t;\u666dig;\u8000\ufb02ns;\u65b1of;\u4192\u01f0\u1fee\0\u1ff3f;\uc000\ud835\udd57\u0100ak\u05bf\u1ff7\u0100;v\u1ffc\u1ffd\u62d4;\u6ad9artint;\u6a0d\u0100ao\u200c\u2055\u0100cs\u2011\u2052\u03b1\u201a\u2030\u2038\u2045\u2048\0\u2050\u03b2\u2022\u2025\u2027\u202a\u202c\0\u202e\u803b\xbd\u40bd;\u6153\u803b\xbc\u40bc;\u6155;\u6159;\u615b\u01b3\u2034\0\u2036;\u6154;\u6156\u02b4\u203e\u2041\0\0\u2043\u803b\xbe\u40be;\u6157;\u615c5;\u6158\u01b6\u204c\0\u204e;\u615a;\u615d8;\u615el;\u6044wn;\u6322cr;\uc000\ud835\udcbb\u0880Eabcdefgijlnorstv\u2082\u2089\u209f\u20a5\u20b0\u20b4\u20f0\u20f5\u20fa\u20ff\u2103\u2112\u2138\u0317\u213e\u2152\u219e\u0100;l\u064d\u2087;\u6a8c\u0180cmp\u2090\u2095\u209dute;\u41f5ma\u0100;d\u209c\u1cda\u43b3;\u6a86reve;\u411f\u0100iy\u20aa\u20aerc;\u411d;\u4433ot;\u4121\u0200;lqs\u063e\u0642\u20bd\u20c9\u0180;qs\u063e\u064c\u20c4lan\xf4\u0665\u0200;cdl\u0665\u20d2\u20d5\u20e5c;\u6aa9ot\u0100;o\u20dc\u20dd\u6a80\u0100;l\u20e2\u20e3\u6a82;\u6a84\u0100;e\u20ea\u20ed\uc000\u22db\ufe00s;\u6a94r;\uc000\ud835\udd24\u0100;g\u0673\u061bmel;\u6137cy;\u4453\u0200;Eaj\u065a\u210c\u210e\u2110;\u6a92;\u6aa5;\u6aa4\u0200Eaes\u211b\u211d\u2129\u2134;\u6269p\u0100;p\u2123\u2124\u6a8arox\xbb\u2124\u0100;q\u212e\u212f\u6a88\u0100;q\u212e\u211bim;\u62e7pf;\uc000\ud835\udd58\u0100ci\u2143\u2146r;\u610am\u0180;el\u066b\u214e\u2150;\u6a8e;\u6a90\u8300>;cdlqr\u05ee\u2160\u216a\u216e\u2173\u2179\u0100ci\u2165\u2167;\u6aa7r;\u6a7aot;\u62d7Par;\u6995uest;\u6a7c\u0280adels\u2184\u216a\u2190\u0656\u219b\u01f0\u2189\0\u218epro\xf8\u209er;\u6978q\u0100lq\u063f\u2196les\xf3\u2088i\xed\u066b\u0100en\u21a3\u21adrtneqq;\uc000\u2269\ufe00\xc5\u21aa\u0500Aabcefkosy\u21c4\u21c7\u21f1\u21f5\u21fa\u2218\u221d\u222f\u2268\u227dr\xf2\u03a0\u0200ilmr\u21d0\u21d4\u21d7\u21dbrs\xf0\u1484f\xbb\u2024il\xf4\u06a9\u0100dr\u21e0\u21e4cy;\u444a\u0180;cw\u08f4\u21eb\u21efir;\u6948;\u61adar;\u610firc;\u4125\u0180alr\u2201\u220e\u2213rts\u0100;u\u2209\u220a\u6665it\xbb\u220alip;\u6026con;\u62b9r;\uc000\ud835\udd25s\u0100ew\u2223\u2229arow;\u6925arow;\u6926\u0280amopr\u223a\u223e\u2243\u225e\u2263rr;\u61fftht;\u623bk\u0100lr\u2249\u2253eftarrow;\u61a9ightarrow;\u61aaf;\uc000\ud835\udd59bar;\u6015\u0180clt\u226f\u2274\u2278r;\uc000\ud835\udcbdas\xe8\u21f4rok;\u4127\u0100bp\u2282\u2287ull;\u6043hen\xbb\u1c5b\u0ae1\u22a3\0\u22aa\0\u22b8\u22c5\u22ce\0\u22d5\u22f3\0\0\u22f8\u2322\u2367\u2362\u237f\0\u2386\u23aa\u23b4cute\u803b\xed\u40ed\u0180;iy\u0771\u22b0\u22b5rc\u803b\xee\u40ee;\u4438\u0100cx\u22bc\u22bfy;\u4435cl\u803b\xa1\u40a1\u0100fr\u039f\u22c9;\uc000\ud835\udd26rave\u803b\xec\u40ec\u0200;ino\u073e\u22dd\u22e9\u22ee\u0100in\u22e2\u22e6nt;\u6a0ct;\u622dfin;\u69dcta;\u6129lig;\u4133\u0180aop\u22fe\u231a\u231d\u0180cgt\u2305\u2308\u2317r;\u412b\u0180elp\u071f\u230f\u2313in\xe5\u078ear\xf4\u0720h;\u4131f;\u62b7ed;\u41b5\u0280;cfot\u04f4\u232c\u2331\u233d\u2341are;\u6105in\u0100;t\u2338\u2339\u621eie;\u69dddo\xf4\u2319\u0280;celp\u0757\u234c\u2350\u235b\u2361al;\u62ba\u0100gr\u2355\u2359er\xf3\u1563\xe3\u234darhk;\u6a17rod;\u6a3c\u0200cgpt\u236f\u2372\u2376\u237by;\u4451on;\u412ff;\uc000\ud835\udd5aa;\u43b9uest\u803b\xbf\u40bf\u0100ci\u238a\u238fr;\uc000\ud835\udcben\u0280;Edsv\u04f4\u239b\u239d\u23a1\u04f3;\u62f9ot;\u62f5\u0100;v\u23a6\u23a7\u62f4;\u62f3\u0100;i\u0777\u23aelde;\u4129\u01eb\u23b8\0\u23bccy;\u4456l\u803b\xef\u40ef\u0300cfmosu\u23cc\u23d7\u23dc\u23e1\u23e7\u23f5\u0100iy\u23d1\u23d5rc;\u4135;\u4439r;\uc000\ud835\udd27ath;\u4237pf;\uc000\ud835\udd5b\u01e3\u23ec\0\u23f1r;\uc000\ud835\udcbfrcy;\u4458kcy;\u4454\u0400acfghjos\u240b\u2416\u2422\u2427\u242d\u2431\u2435\u243bppa\u0100;v\u2413\u2414\u43ba;\u43f0\u0100ey\u241b\u2420dil;\u4137;\u443ar;\uc000\ud835\udd28reen;\u4138cy;\u4445cy;\u445cpf;\uc000\ud835\udd5ccr;\uc000\ud835\udcc0\u0b80ABEHabcdefghjlmnoprstuv\u2470\u2481\u2486\u248d\u2491\u250e\u253d\u255a\u2580\u264e\u265e\u2665\u2679\u267d\u269a\u26b2\u26d8\u275d\u2768\u278b\u27c0\u2801\u2812\u0180art\u2477\u247a\u247cr\xf2\u09c6\xf2\u0395ail;\u691barr;\u690e\u0100;g\u0994\u248b;\u6a8bar;\u6962\u0963\u24a5\0\u24aa\0\u24b1\0\0\0\0\0\u24b5\u24ba\0\u24c6\u24c8\u24cd\0\u24f9ute;\u413amptyv;\u69b4ra\xee\u084cbda;\u43bbg\u0180;dl\u088e\u24c1\u24c3;\u6991\xe5\u088e;\u6a85uo\u803b\xab\u40abr\u0400;bfhlpst\u0899\u24de\u24e6\u24e9\u24eb\u24ee\u24f1\u24f5\u0100;f\u089d\u24e3s;\u691fs;\u691d\xeb\u2252p;\u61abl;\u6939im;\u6973l;\u61a2\u0180;ae\u24ff\u2500\u2504\u6aabil;\u6919\u0100;s\u2509\u250a\u6aad;\uc000\u2aad\ufe00\u0180abr\u2515\u2519\u251drr;\u690crk;\u6772\u0100ak\u2522\u252cc\u0100ek\u2528\u252a;\u407b;\u405b\u0100es\u2531\u2533;\u698bl\u0100du\u2539\u253b;\u698f;\u698d\u0200aeuy\u2546\u254b\u2556\u2558ron;\u413e\u0100di\u2550\u2554il;\u413c\xec\u08b0\xe2\u2529;\u443b\u0200cqrs\u2563\u2566\u256d\u257da;\u6936uo\u0100;r\u0e19\u1746\u0100du\u2572\u2577har;\u6967shar;\u694bh;\u61b2\u0280;fgqs\u258b\u258c\u0989\u25f3\u25ff\u6264t\u0280ahlrt\u2598\u25a4\u25b7\u25c2\u25e8rrow\u0100;t\u0899\u25a1a\xe9\u24f6arpoon\u0100du\u25af\u25b4own\xbb\u045ap\xbb\u0966eftarrows;\u61c7ight\u0180ahs\u25cd\u25d6\u25derrow\u0100;s\u08f4\u08a7arpoon\xf3\u0f98quigarro\xf7\u21f0hreetimes;\u62cb\u0180;qs\u258b\u0993\u25falan\xf4\u09ac\u0280;cdgs\u09ac\u260a\u260d\u261d\u2628c;\u6aa8ot\u0100;o\u2614\u2615\u6a7f\u0100;r\u261a\u261b\u6a81;\u6a83\u0100;e\u2622\u2625\uc000\u22da\ufe00s;\u6a93\u0280adegs\u2633\u2639\u263d\u2649\u264bppro\xf8\u24c6ot;\u62d6q\u0100gq\u2643\u2645\xf4\u0989gt\xf2\u248c\xf4\u099bi\xed\u09b2\u0180ilr\u2655\u08e1\u265asht;\u697c;\uc000\ud835\udd29\u0100;E\u099c\u2663;\u6a91\u0161\u2669\u2676r\u0100du\u25b2\u266e\u0100;l\u0965\u2673;\u696alk;\u6584cy;\u4459\u0280;acht\u0a48\u2688\u268b\u2691\u2696r\xf2\u25c1orne\xf2\u1d08ard;\u696bri;\u65fa\u0100io\u269f\u26a4dot;\u4140ust\u0100;a\u26ac\u26ad\u63b0che\xbb\u26ad\u0200Eaes\u26bb\u26bd\u26c9\u26d4;\u6268p\u0100;p\u26c3\u26c4\u6a89rox\xbb\u26c4\u0100;q\u26ce\u26cf\u6a87\u0100;q\u26ce\u26bbim;\u62e6\u0400abnoptwz\u26e9\u26f4\u26f7\u271a\u272f\u2741\u2747\u2750\u0100nr\u26ee\u26f1g;\u67ecr;\u61fdr\xeb\u08c1g\u0180lmr\u26ff\u270d\u2714eft\u0100ar\u09e6\u2707ight\xe1\u09f2apsto;\u67fcight\xe1\u09fdparrow\u0100lr\u2725\u2729ef\xf4\u24edight;\u61ac\u0180afl\u2736\u2739\u273dr;\u6985;\uc000\ud835\udd5dus;\u6a2dimes;\u6a34\u0161\u274b\u274fst;\u6217\xe1\u134e\u0180;ef\u2757\u2758\u1800\u65cange\xbb\u2758ar\u0100;l\u2764\u2765\u4028t;\u6993\u0280achmt\u2773\u2776\u277c\u2785\u2787r\xf2\u08a8orne\xf2\u1d8car\u0100;d\u0f98\u2783;\u696d;\u600eri;\u62bf\u0300achiqt\u2798\u279d\u0a40\u27a2\u27ae\u27bbquo;\u6039r;\uc000\ud835\udcc1m\u0180;eg\u09b2\u27aa\u27ac;\u6a8d;\u6a8f\u0100bu\u252a\u27b3o\u0100;r\u0e1f\u27b9;\u601arok;\u4142\u8400<;cdhilqr\u082b\u27d2\u2639\u27dc\u27e0\u27e5\u27ea\u27f0\u0100ci\u27d7\u27d9;\u6aa6r;\u6a79re\xe5\u25f2mes;\u62c9arr;\u6976uest;\u6a7b\u0100Pi\u27f5\u27f9ar;\u6996\u0180;ef\u2800\u092d\u181b\u65c3r\u0100du\u2807\u280dshar;\u694ahar;\u6966\u0100en\u2817\u2821rtneqq;\uc000\u2268\ufe00\xc5\u281e\u0700Dacdefhilnopsu\u2840\u2845\u2882\u288e\u2893\u28a0\u28a5\u28a8\u28da\u28e2\u28e4\u0a83\u28f3\u2902Dot;\u623a\u0200clpr\u284e\u2852\u2863\u287dr\u803b\xaf\u40af\u0100et\u2857\u2859;\u6642\u0100;e\u285e\u285f\u6720se\xbb\u285f\u0100;s\u103b\u2868to\u0200;dlu\u103b\u2873\u2877\u287bow\xee\u048cef\xf4\u090f\xf0\u13d1ker;\u65ae\u0100oy\u2887\u288cmma;\u6a29;\u443cash;\u6014asuredangle\xbb\u1626r;\uc000\ud835\udd2ao;\u6127\u0180cdn\u28af\u28b4\u28c9ro\u803b\xb5\u40b5\u0200;acd\u1464\u28bd\u28c0\u28c4s\xf4\u16a7ir;\u6af0ot\u80bb\xb7\u01b5us\u0180;bd\u28d2\u1903\u28d3\u6212\u0100;u\u1d3c\u28d8;\u6a2a\u0163\u28de\u28e1p;\u6adb\xf2\u2212\xf0\u0a81\u0100dp\u28e9\u28eeels;\u62a7f;\uc000\ud835\udd5e\u0100ct\u28f8\u28fdr;\uc000\ud835\udcc2pos\xbb\u159d\u0180;lm\u2909\u290a\u290d\u43bctimap;\u62b8\u0c00GLRVabcdefghijlmoprstuvw\u2942\u2953\u297e\u2989\u2998\u29da\u29e9\u2a15\u2a1a\u2a58\u2a5d\u2a83\u2a95\u2aa4\u2aa8\u2b04\u2b07\u2b44\u2b7f\u2bae\u2c34\u2c67\u2c7c\u2ce9\u0100gt\u2947\u294b;\uc000\u22d9\u0338\u0100;v\u2950\u0bcf\uc000\u226b\u20d2\u0180elt\u295a\u2972\u2976ft\u0100ar\u2961\u2967rrow;\u61cdightarrow;\u61ce;\uc000\u22d8\u0338\u0100;v\u297b\u0c47\uc000\u226a\u20d2ightarrow;\u61cf\u0100Dd\u298e\u2993ash;\u62afash;\u62ae\u0280bcnpt\u29a3\u29a7\u29ac\u29b1\u29ccla\xbb\u02deute;\u4144g;\uc000\u2220\u20d2\u0280;Eiop\u0d84\u29bc\u29c0\u29c5\u29c8;\uc000\u2a70\u0338d;\uc000\u224b\u0338s;\u4149ro\xf8\u0d84ur\u0100;a\u29d3\u29d4\u666el\u0100;s\u29d3\u0b38\u01f3\u29df\0\u29e3p\u80bb\xa0\u0b37mp\u0100;e\u0bf9\u0c00\u0280aeouy\u29f4\u29fe\u2a03\u2a10\u2a13\u01f0\u29f9\0\u29fb;\u6a43on;\u4148dil;\u4146ng\u0100;d\u0d7e\u2a0aot;\uc000\u2a6d\u0338p;\u6a42;\u443dash;\u6013\u0380;Aadqsx\u0b92\u2a29\u2a2d\u2a3b\u2a41\u2a45\u2a50rr;\u61d7r\u0100hr\u2a33\u2a36k;\u6924\u0100;o\u13f2\u13f0ot;\uc000\u2250\u0338ui\xf6\u0b63\u0100ei\u2a4a\u2a4ear;\u6928\xed\u0b98ist\u0100;s\u0ba0\u0b9fr;\uc000\ud835\udd2b\u0200Eest\u0bc5\u2a66\u2a79\u2a7c\u0180;qs\u0bbc\u2a6d\u0be1\u0180;qs\u0bbc\u0bc5\u2a74lan\xf4\u0be2i\xed\u0bea\u0100;r\u0bb6\u2a81\xbb\u0bb7\u0180Aap\u2a8a\u2a8d\u2a91r\xf2\u2971rr;\u61aear;\u6af2\u0180;sv\u0f8d\u2a9c\u0f8c\u0100;d\u2aa1\u2aa2\u62fc;\u62facy;\u445a\u0380AEadest\u2ab7\u2aba\u2abe\u2ac2\u2ac5\u2af6\u2af9r\xf2\u2966;\uc000\u2266\u0338rr;\u619ar;\u6025\u0200;fqs\u0c3b\u2ace\u2ae3\u2aeft\u0100ar\u2ad4\u2ad9rro\xf7\u2ac1ightarro\xf7\u2a90\u0180;qs\u0c3b\u2aba\u2aealan\xf4\u0c55\u0100;s\u0c55\u2af4\xbb\u0c36i\xed\u0c5d\u0100;r\u0c35\u2afei\u0100;e\u0c1a\u0c25i\xe4\u0d90\u0100pt\u2b0c\u2b11f;\uc000\ud835\udd5f\u8180\xac;in\u2b19\u2b1a\u2b36\u40acn\u0200;Edv\u0b89\u2b24\u2b28\u2b2e;\uc000\u22f9\u0338ot;\uc000\u22f5\u0338\u01e1\u0b89\u2b33\u2b35;\u62f7;\u62f6i\u0100;v\u0cb8\u2b3c\u01e1\u0cb8\u2b41\u2b43;\u62fe;\u62fd\u0180aor\u2b4b\u2b63\u2b69r\u0200;ast\u0b7b\u2b55\u2b5a\u2b5flle\xec\u0b7bl;\uc000\u2afd\u20e5;\uc000\u2202\u0338lint;\u6a14\u0180;ce\u0c92\u2b70\u2b73u\xe5\u0ca5\u0100;c\u0c98\u2b78\u0100;e\u0c92\u2b7d\xf1\u0c98\u0200Aait\u2b88\u2b8b\u2b9d\u2ba7r\xf2\u2988rr\u0180;cw\u2b94\u2b95\u2b99\u619b;\uc000\u2933\u0338;\uc000\u219d\u0338ghtarrow\xbb\u2b95ri\u0100;e\u0ccb\u0cd6\u0380chimpqu\u2bbd\u2bcd\u2bd9\u2b04\u0b78\u2be4\u2bef\u0200;cer\u0d32\u2bc6\u0d37\u2bc9u\xe5\u0d45;\uc000\ud835\udcc3ort\u026d\u2b05\0\0\u2bd6ar\xe1\u2b56m\u0100;e\u0d6e\u2bdf\u0100;q\u0d74\u0d73su\u0100bp\u2beb\u2bed\xe5\u0cf8\xe5\u0d0b\u0180bcp\u2bf6\u2c11\u2c19\u0200;Ees\u2bff\u2c00\u0d22\u2c04\u6284;\uc000\u2ac5\u0338et\u0100;e\u0d1b\u2c0bq\u0100;q\u0d23\u2c00c\u0100;e\u0d32\u2c17\xf1\u0d38\u0200;Ees\u2c22\u2c23\u0d5f\u2c27\u6285;\uc000\u2ac6\u0338et\u0100;e\u0d58\u2c2eq\u0100;q\u0d60\u2c23\u0200gilr\u2c3d\u2c3f\u2c45\u2c47\xec\u0bd7lde\u803b\xf1\u40f1\xe7\u0c43iangle\u0100lr\u2c52\u2c5ceft\u0100;e\u0c1a\u2c5a\xf1\u0c26ight\u0100;e\u0ccb\u2c65\xf1\u0cd7\u0100;m\u2c6c\u2c6d\u43bd\u0180;es\u2c74\u2c75\u2c79\u4023ro;\u6116p;\u6007\u0480DHadgilrs\u2c8f\u2c94\u2c99\u2c9e\u2ca3\u2cb0\u2cb6\u2cd3\u2ce3ash;\u62adarr;\u6904p;\uc000\u224d\u20d2ash;\u62ac\u0100et\u2ca8\u2cac;\uc000\u2265\u20d2;\uc000>\u20d2nfin;\u69de\u0180Aet\u2cbd\u2cc1\u2cc5rr;\u6902;\uc000\u2264\u20d2\u0100;r\u2cca\u2ccd\uc000<\u20d2ie;\uc000\u22b4\u20d2\u0100At\u2cd8\u2cdcrr;\u6903rie;\uc000\u22b5\u20d2im;\uc000\u223c\u20d2\u0180Aan\u2cf0\u2cf4\u2d02rr;\u61d6r\u0100hr\u2cfa\u2cfdk;\u6923\u0100;o\u13e7\u13e5ear;\u6927\u1253\u1a95\0\0\0\0\0\0\0\0\0\0\0\0\0\u2d2d\0\u2d38\u2d48\u2d60\u2d65\u2d72\u2d84\u1b07\0\0\u2d8d\u2dab\0\u2dc8\u2dce\0\u2ddc\u2e19\u2e2b\u2e3e\u2e43\u0100cs\u2d31\u1a97ute\u803b\xf3\u40f3\u0100iy\u2d3c\u2d45r\u0100;c\u1a9e\u2d42\u803b\xf4\u40f4;\u443e\u0280abios\u1aa0\u2d52\u2d57\u01c8\u2d5alac;\u4151v;\u6a38old;\u69bclig;\u4153\u0100cr\u2d69\u2d6dir;\u69bf;\uc000\ud835\udd2c\u036f\u2d79\0\0\u2d7c\0\u2d82n;\u42dbave\u803b\xf2\u40f2;\u69c1\u0100bm\u2d88\u0df4ar;\u69b5\u0200acit\u2d95\u2d98\u2da5\u2da8r\xf2\u1a80\u0100ir\u2d9d\u2da0r;\u69beoss;\u69bbn\xe5\u0e52;\u69c0\u0180aei\u2db1\u2db5\u2db9cr;\u414dga;\u43c9\u0180cdn\u2dc0\u2dc5\u01cdron;\u43bf;\u69b6pf;\uc000\ud835\udd60\u0180ael\u2dd4\u2dd7\u01d2r;\u69b7rp;\u69b9\u0380;adiosv\u2dea\u2deb\u2dee\u2e08\u2e0d\u2e10\u2e16\u6228r\xf2\u1a86\u0200;efm\u2df7\u2df8\u2e02\u2e05\u6a5dr\u0100;o\u2dfe\u2dff\u6134f\xbb\u2dff\u803b\xaa\u40aa\u803b\xba\u40bagof;\u62b6r;\u6a56lope;\u6a57;\u6a5b\u0180clo\u2e1f\u2e21\u2e27\xf2\u2e01ash\u803b\xf8\u40f8l;\u6298i\u016c\u2e2f\u2e34de\u803b\xf5\u40f5es\u0100;a\u01db\u2e3as;\u6a36ml\u803b\xf6\u40f6bar;\u633d\u0ae1\u2e5e\0\u2e7d\0\u2e80\u2e9d\0\u2ea2\u2eb9\0\0\u2ecb\u0e9c\0\u2f13\0\0\u2f2b\u2fbc\0\u2fc8r\u0200;ast\u0403\u2e67\u2e72\u0e85\u8100\xb6;l\u2e6d\u2e6e\u40b6le\xec\u0403\u0269\u2e78\0\0\u2e7bm;\u6af3;\u6afdy;\u443fr\u0280cimpt\u2e8b\u2e8f\u2e93\u1865\u2e97nt;\u4025od;\u402eil;\u6030enk;\u6031r;\uc000\ud835\udd2d\u0180imo\u2ea8\u2eb0\u2eb4\u0100;v\u2ead\u2eae\u43c6;\u43d5ma\xf4\u0a76ne;\u660e\u0180;tv\u2ebf\u2ec0\u2ec8\u43c0chfork\xbb\u1ffd;\u43d6\u0100au\u2ecf\u2edfn\u0100ck\u2ed5\u2eddk\u0100;h\u21f4\u2edb;\u610e\xf6\u21f4s\u0480;abcdemst\u2ef3\u2ef4\u1908\u2ef9\u2efd\u2f04\u2f06\u2f0a\u2f0e\u402bcir;\u6a23ir;\u6a22\u0100ou\u1d40\u2f02;\u6a25;\u6a72n\u80bb\xb1\u0e9dim;\u6a26wo;\u6a27\u0180ipu\u2f19\u2f20\u2f25ntint;\u6a15f;\uc000\ud835\udd61nd\u803b\xa3\u40a3\u0500;Eaceinosu\u0ec8\u2f3f\u2f41\u2f44\u2f47\u2f81\u2f89\u2f92\u2f7e\u2fb6;\u6ab3p;\u6ab7u\xe5\u0ed9\u0100;c\u0ece\u2f4c\u0300;acens\u0ec8\u2f59\u2f5f\u2f66\u2f68\u2f7eppro\xf8\u2f43urlye\xf1\u0ed9\xf1\u0ece\u0180aes\u2f6f\u2f76\u2f7approx;\u6ab9qq;\u6ab5im;\u62e8i\xed\u0edfme\u0100;s\u2f88\u0eae\u6032\u0180Eas\u2f78\u2f90\u2f7a\xf0\u2f75\u0180dfp\u0eec\u2f99\u2faf\u0180als\u2fa0\u2fa5\u2faalar;\u632eine;\u6312urf;\u6313\u0100;t\u0efb\u2fb4\xef\u0efbrel;\u62b0\u0100ci\u2fc0\u2fc5r;\uc000\ud835\udcc5;\u43c8ncsp;\u6008\u0300fiopsu\u2fda\u22e2\u2fdf\u2fe5\u2feb\u2ff1r;\uc000\ud835\udd2epf;\uc000\ud835\udd62rime;\u6057cr;\uc000\ud835\udcc6\u0180aeo\u2ff8\u3009\u3013t\u0100ei\u2ffe\u3005rnion\xf3\u06b0nt;\u6a16st\u0100;e\u3010\u3011\u403f\xf1\u1f19\xf4\u0f14\u0a80ABHabcdefhilmnoprstux\u3040\u3051\u3055\u3059\u30e0\u310e\u312b\u3147\u3162\u3172\u318e\u3206\u3215\u3224\u3229\u3258\u326e\u3272\u3290\u32b0\u32b7\u0180art\u3047\u304a\u304cr\xf2\u10b3\xf2\u03ddail;\u691car\xf2\u1c65ar;\u6964\u0380cdenqrt\u3068\u3075\u3078\u307f\u308f\u3094\u30cc\u0100eu\u306d\u3071;\uc000\u223d\u0331te;\u4155i\xe3\u116emptyv;\u69b3g\u0200;del\u0fd1\u3089\u308b\u308d;\u6992;\u69a5\xe5\u0fd1uo\u803b\xbb\u40bbr\u0580;abcfhlpstw\u0fdc\u30ac\u30af\u30b7\u30b9\u30bc\u30be\u30c0\u30c3\u30c7\u30cap;\u6975\u0100;f\u0fe0\u30b4s;\u6920;\u6933s;\u691e\xeb\u225d\xf0\u272el;\u6945im;\u6974l;\u61a3;\u619d\u0100ai\u30d1\u30d5il;\u691ao\u0100;n\u30db\u30dc\u6236al\xf3\u0f1e\u0180abr\u30e7\u30ea\u30eer\xf2\u17e5rk;\u6773\u0100ak\u30f3\u30fdc\u0100ek\u30f9\u30fb;\u407d;\u405d\u0100es\u3102\u3104;\u698cl\u0100du\u310a\u310c;\u698e;\u6990\u0200aeuy\u3117\u311c\u3127\u3129ron;\u4159\u0100di\u3121\u3125il;\u4157\xec\u0ff2\xe2\u30fa;\u4440\u0200clqs\u3134\u3137\u313d\u3144a;\u6937dhar;\u6969uo\u0100;r\u020e\u020dh;\u61b3\u0180acg\u314e\u315f\u0f44l\u0200;ips\u0f78\u3158\u315b\u109cn\xe5\u10bbar\xf4\u0fa9t;\u65ad\u0180ilr\u3169\u1023\u316esht;\u697d;\uc000\ud835\udd2f\u0100ao\u3177\u3186r\u0100du\u317d\u317f\xbb\u047b\u0100;l\u1091\u3184;\u696c\u0100;v\u318b\u318c\u43c1;\u43f1\u0180gns\u3195\u31f9\u31fcht\u0300ahlrst\u31a4\u31b0\u31c2\u31d8\u31e4\u31eerrow\u0100;t\u0fdc\u31ada\xe9\u30c8arpoon\u0100du\u31bb\u31bfow\xee\u317ep\xbb\u1092eft\u0100ah\u31ca\u31d0rrow\xf3\u0feaarpoon\xf3\u0551ightarrows;\u61c9quigarro\xf7\u30cbhreetimes;\u62ccg;\u42daingdotse\xf1\u1f32\u0180ahm\u320d\u3210\u3213r\xf2\u0feaa\xf2\u0551;\u600foust\u0100;a\u321e\u321f\u63b1che\xbb\u321fmid;\u6aee\u0200abpt\u3232\u323d\u3240\u3252\u0100nr\u3237\u323ag;\u67edr;\u61fer\xeb\u1003\u0180afl\u3247\u324a\u324er;\u6986;\uc000\ud835\udd63us;\u6a2eimes;\u6a35\u0100ap\u325d\u3267r\u0100;g\u3263\u3264\u4029t;\u6994olint;\u6a12ar\xf2\u31e3\u0200achq\u327b\u3280\u10bc\u3285quo;\u603ar;\uc000\ud835\udcc7\u0100bu\u30fb\u328ao\u0100;r\u0214\u0213\u0180hir\u3297\u329b\u32a0re\xe5\u31f8mes;\u62cai\u0200;efl\u32aa\u1059\u1821\u32ab\u65b9tri;\u69celuhar;\u6968;\u611e\u0d61\u32d5\u32db\u32df\u332c\u3338\u3371\0\u337a\u33a4\0\0\u33ec\u33f0\0\u3428\u3448\u345a\u34ad\u34b1\u34ca\u34f1\0\u3616\0\0\u3633cute;\u415bqu\xef\u27ba\u0500;Eaceinpsy\u11ed\u32f3\u32f5\u32ff\u3302\u330b\u330f\u331f\u3326\u3329;\u6ab4\u01f0\u32fa\0\u32fc;\u6ab8on;\u4161u\xe5\u11fe\u0100;d\u11f3\u3307il;\u415frc;\u415d\u0180Eas\u3316\u3318\u331b;\u6ab6p;\u6abaim;\u62e9olint;\u6a13i\xed\u1204;\u4441ot\u0180;be\u3334\u1d47\u3335\u62c5;\u6a66\u0380Aacmstx\u3346\u334a\u3357\u335b\u335e\u3363\u336drr;\u61d8r\u0100hr\u3350\u3352\xeb\u2228\u0100;o\u0a36\u0a34t\u803b\xa7\u40a7i;\u403bwar;\u6929m\u0100in\u3369\xf0nu\xf3\xf1t;\u6736r\u0100;o\u3376\u2055\uc000\ud835\udd30\u0200acoy\u3382\u3386\u3391\u33a0rp;\u666f\u0100hy\u338b\u338fcy;\u4449;\u4448rt\u026d\u3399\0\0\u339ci\xe4\u1464ara\xec\u2e6f\u803b\xad\u40ad\u0100gm\u33a8\u33b4ma\u0180;fv\u33b1\u33b2\u33b2\u43c3;\u43c2\u0400;deglnpr\u12ab\u33c5\u33c9\u33ce\u33d6\u33de\u33e1\u33e6ot;\u6a6a\u0100;q\u12b1\u12b0\u0100;E\u33d3\u33d4\u6a9e;\u6aa0\u0100;E\u33db\u33dc\u6a9d;\u6a9fe;\u6246lus;\u6a24arr;\u6972ar\xf2\u113d\u0200aeit\u33f8\u3408\u340f\u3417\u0100ls\u33fd\u3404lsetm\xe9\u336ahp;\u6a33parsl;\u69e4\u0100dl\u1463\u3414e;\u6323\u0100;e\u341c\u341d\u6aaa\u0100;s\u3422\u3423\u6aac;\uc000\u2aac\ufe00\u0180flp\u342e\u3433\u3442tcy;\u444c\u0100;b\u3438\u3439\u402f\u0100;a\u343e\u343f\u69c4r;\u633ff;\uc000\ud835\udd64a\u0100dr\u344d\u0402es\u0100;u\u3454\u3455\u6660it\xbb\u3455\u0180csu\u3460\u3479\u349f\u0100au\u3465\u346fp\u0100;s\u1188\u346b;\uc000\u2293\ufe00p\u0100;s\u11b4\u3475;\uc000\u2294\ufe00u\u0100bp\u347f\u348f\u0180;es\u1197\u119c\u3486et\u0100;e\u1197\u348d\xf1\u119d\u0180;es\u11a8\u11ad\u3496et\u0100;e\u11a8\u349d\xf1\u11ae\u0180;af\u117b\u34a6\u05b0r\u0165\u34ab\u05b1\xbb\u117car\xf2\u1148\u0200cemt\u34b9\u34be\u34c2\u34c5r;\uc000\ud835\udcc8tm\xee\xf1i\xec\u3415ar\xe6\u11be\u0100ar\u34ce\u34d5r\u0100;f\u34d4\u17bf\u6606\u0100an\u34da\u34edight\u0100ep\u34e3\u34eapsilo\xee\u1ee0h\xe9\u2eafs\xbb\u2852\u0280bcmnp\u34fb\u355e\u1209\u358b\u358e\u0480;Edemnprs\u350e\u350f\u3511\u3515\u351e\u3523\u352c\u3531\u3536\u6282;\u6ac5ot;\u6abd\u0100;d\u11da\u351aot;\u6ac3ult;\u6ac1\u0100Ee\u3528\u352a;\u6acb;\u628alus;\u6abfarr;\u6979\u0180eiu\u353d\u3552\u3555t\u0180;en\u350e\u3545\u354bq\u0100;q\u11da\u350feq\u0100;q\u352b\u3528m;\u6ac7\u0100bp\u355a\u355c;\u6ad5;\u6ad3c\u0300;acens\u11ed\u356c\u3572\u3579\u357b\u3326ppro\xf8\u32faurlye\xf1\u11fe\xf1\u11f3\u0180aes\u3582\u3588\u331bppro\xf8\u331aq\xf1\u3317g;\u666a\u0680123;Edehlmnps\u35a9\u35ac\u35af\u121c\u35b2\u35b4\u35c0\u35c9\u35d5\u35da\u35df\u35e8\u35ed\u803b\xb9\u40b9\u803b\xb2\u40b2\u803b\xb3\u40b3;\u6ac6\u0100os\u35b9\u35bct;\u6abeub;\u6ad8\u0100;d\u1222\u35c5ot;\u6ac4s\u0100ou\u35cf\u35d2l;\u67c9b;\u6ad7arr;\u697bult;\u6ac2\u0100Ee\u35e4\u35e6;\u6acc;\u628blus;\u6ac0\u0180eiu\u35f4\u3609\u360ct\u0180;en\u121c\u35fc\u3602q\u0100;q\u1222\u35b2eq\u0100;q\u35e7\u35e4m;\u6ac8\u0100bp\u3611\u3613;\u6ad4;\u6ad6\u0180Aan\u361c\u3620\u362drr;\u61d9r\u0100hr\u3626\u3628\xeb\u222e\u0100;o\u0a2b\u0a29war;\u692alig\u803b\xdf\u40df\u0be1\u3651\u365d\u3660\u12ce\u3673\u3679\0\u367e\u36c2\0\0\0\0\0\u36db\u3703\0\u3709\u376c\0\0\0\u3787\u0272\u3656\0\0\u365bget;\u6316;\u43c4r\xeb\u0e5f\u0180aey\u3666\u366b\u3670ron;\u4165dil;\u4163;\u4442lrec;\u6315r;\uc000\ud835\udd31\u0200eiko\u3686\u369d\u36b5\u36bc\u01f2\u368b\0\u3691e\u01004f\u1284\u1281a\u0180;sv\u3698\u3699\u369b\u43b8ym;\u43d1\u0100cn\u36a2\u36b2k\u0100as\u36a8\u36aeppro\xf8\u12c1im\xbb\u12acs\xf0\u129e\u0100as\u36ba\u36ae\xf0\u12c1rn\u803b\xfe\u40fe\u01ec\u031f\u36c6\u22e7es\u8180\xd7;bd\u36cf\u36d0\u36d8\u40d7\u0100;a\u190f\u36d5r;\u6a31;\u6a30\u0180eps\u36e1\u36e3\u3700\xe1\u2a4d\u0200;bcf\u0486\u36ec\u36f0\u36f4ot;\u6336ir;\u6af1\u0100;o\u36f9\u36fc\uc000\ud835\udd65rk;\u6ada\xe1\u3362rime;\u6034\u0180aip\u370f\u3712\u3764d\xe5\u1248\u0380adempst\u3721\u374d\u3740\u3751\u3757\u375c\u375fngle\u0280;dlqr\u3730\u3731\u3736\u3740\u3742\u65b5own\xbb\u1dbbeft\u0100;e\u2800\u373e\xf1\u092e;\u625cight\u0100;e\u32aa\u374b\xf1\u105aot;\u65ecinus;\u6a3alus;\u6a39b;\u69cdime;\u6a3bezium;\u63e2\u0180cht\u3772\u377d\u3781\u0100ry\u3777\u377b;\uc000\ud835\udcc9;\u4446cy;\u445brok;\u4167\u0100io\u378b\u378ex\xf4\u1777head\u0100lr\u3797\u37a0eftarro\xf7\u084fightarrow\xbb\u0f5d\u0900AHabcdfghlmoprstuw\u37d0\u37d3\u37d7\u37e4\u37f0\u37fc\u380e\u381c\u3823\u3834\u3851\u385d\u386b\u38a9\u38cc\u38d2\u38ea\u38f6r\xf2\u03edar;\u6963\u0100cr\u37dc\u37e2ute\u803b\xfa\u40fa\xf2\u1150r\u01e3\u37ea\0\u37edy;\u445eve;\u416d\u0100iy\u37f5\u37farc\u803b\xfb\u40fb;\u4443\u0180abh\u3803\u3806\u380br\xf2\u13adlac;\u4171a\xf2\u13c3\u0100ir\u3813\u3818sht;\u697e;\uc000\ud835\udd32rave\u803b\xf9\u40f9\u0161\u3827\u3831r\u0100lr\u382c\u382e\xbb\u0957\xbb\u1083lk;\u6580\u0100ct\u3839\u384d\u026f\u383f\0\0\u384arn\u0100;e\u3845\u3846\u631cr\xbb\u3846op;\u630fri;\u65f8\u0100al\u3856\u385acr;\u416b\u80bb\xa8\u0349\u0100gp\u3862\u3866on;\u4173f;\uc000\ud835\udd66\u0300adhlsu\u114b\u3878\u387d\u1372\u3891\u38a0own\xe1\u13b3arpoon\u0100lr\u3888\u388cef\xf4\u382digh\xf4\u382fi\u0180;hl\u3899\u389a\u389c\u43c5\xbb\u13faon\xbb\u389aparrows;\u61c8\u0180cit\u38b0\u38c4\u38c8\u026f\u38b6\0\0\u38c1rn\u0100;e\u38bc\u38bd\u631dr\xbb\u38bdop;\u630eng;\u416fri;\u65f9cr;\uc000\ud835\udcca\u0180dir\u38d9\u38dd\u38e2ot;\u62f0lde;\u4169i\u0100;f\u3730\u38e8\xbb\u1813\u0100am\u38ef\u38f2r\xf2\u38a8l\u803b\xfc\u40fcangle;\u69a7\u0780ABDacdeflnoprsz\u391c\u391f\u3929\u392d\u39b5\u39b8\u39bd\u39df\u39e4\u39e8\u39f3\u39f9\u39fd\u3a01\u3a20r\xf2\u03f7ar\u0100;v\u3926\u3927\u6ae8;\u6ae9as\xe8\u03e1\u0100nr\u3932\u3937grt;\u699c\u0380eknprst\u34e3\u3946\u394b\u3952\u395d\u3964\u3996app\xe1\u2415othin\xe7\u1e96\u0180hir\u34eb\u2ec8\u3959op\xf4\u2fb5\u0100;h\u13b7\u3962\xef\u318d\u0100iu\u3969\u396dgm\xe1\u33b3\u0100bp\u3972\u3984setneq\u0100;q\u397d\u3980\uc000\u228a\ufe00;\uc000\u2acb\ufe00setneq\u0100;q\u398f\u3992\uc000\u228b\ufe00;\uc000\u2acc\ufe00\u0100hr\u399b\u399fet\xe1\u369ciangle\u0100lr\u39aa\u39afeft\xbb\u0925ight\xbb\u1051y;\u4432ash\xbb\u1036\u0180elr\u39c4\u39d2\u39d7\u0180;be\u2dea\u39cb\u39cfar;\u62bbq;\u625alip;\u62ee\u0100bt\u39dc\u1468a\xf2\u1469r;\uc000\ud835\udd33tr\xe9\u39aesu\u0100bp\u39ef\u39f1\xbb\u0d1c\xbb\u0d59pf;\uc000\ud835\udd67ro\xf0\u0efbtr\xe9\u39b4\u0100cu\u3a06\u3a0br;\uc000\ud835\udccb\u0100bp\u3a10\u3a18n\u0100Ee\u3980\u3a16\xbb\u397en\u0100Ee\u3992\u3a1e\xbb\u3990igzag;\u699a\u0380cefoprs\u3a36\u3a3b\u3a56\u3a5b\u3a54\u3a61\u3a6airc;\u4175\u0100di\u3a40\u3a51\u0100bg\u3a45\u3a49ar;\u6a5fe\u0100;q\u15fa\u3a4f;\u6259erp;\u6118r;\uc000\ud835\udd34pf;\uc000\ud835\udd68\u0100;e\u1479\u3a66at\xe8\u1479cr;\uc000\ud835\udccc\u0ae3\u178e\u3a87\0\u3a8b\0\u3a90\u3a9b\0\0\u3a9d\u3aa8\u3aab\u3aaf\0\0\u3ac3\u3ace\0\u3ad8\u17dc\u17dftr\xe9\u17d1r;\uc000\ud835\udd35\u0100Aa\u3a94\u3a97r\xf2\u03c3r\xf2\u09f6;\u43be\u0100Aa\u3aa1\u3aa4r\xf2\u03b8r\xf2\u09eba\xf0\u2713is;\u62fb\u0180dpt\u17a4\u3ab5\u3abe\u0100fl\u3aba\u17a9;\uc000\ud835\udd69im\xe5\u17b2\u0100Aa\u3ac7\u3acar\xf2\u03cer\xf2\u0a01\u0100cq\u3ad2\u17b8r;\uc000\ud835\udccd\u0100pt\u17d6\u3adcr\xe9\u17d4\u0400acefiosu\u3af0\u3afd\u3b08\u3b0c\u3b11\u3b15\u3b1b\u3b21c\u0100uy\u3af6\u3afbte\u803b\xfd\u40fd;\u444f\u0100iy\u3b02\u3b06rc;\u4177;\u444bn\u803b\xa5\u40a5r;\uc000\ud835\udd36cy;\u4457pf;\uc000\ud835\udd6acr;\uc000\ud835\udcce\u0100cm\u3b26\u3b29y;\u444el\u803b\xff\u40ff\u0500acdefhiosw\u3b42\u3b48\u3b54\u3b58\u3b64\u3b69\u3b6d\u3b74\u3b7a\u3b80cute;\u417a\u0100ay\u3b4d\u3b52ron;\u417e;\u4437ot;\u417c\u0100et\u3b5d\u3b61tr\xe6\u155fa;\u43b6r;\uc000\ud835\udd37cy;\u4436grarr;\u61ddpf;\uc000\ud835\udd6bcr;\uc000\ud835\udccf\u0100jn\u3b85\u3b87;\u600dj;\u600c'.split("").map((function(e){return e.charCodeAt(0)})))},22517:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=new Uint16Array("\u0200aglq\t\x15\x18\x1b\u026d\x0f\0\0\x12p;\u4026os;\u4027t;\u403et;\u403cuot;\u4022".split("").map((function(e){return e.charCodeAt(0)})))},35504:function(e,t){"use strict";function r(e){for(var t=1;t0&&o.has(this.stack[this.stack.length-1]);){var a=this.stack.pop();null===(r=(t=this.cbs).onclosetag)||void 0===r||r.call(t,a,!0)}this.isVoidElement(e)||(this.stack.push(e),v.has(e)?this.foreignContext.push(!0):m.has(e)&&this.foreignContext.push(!1)),null===(i=(n=this.cbs).onopentagname)||void 0===i||i.call(n,e),this.cbs.onopentag&&(this.attribs={})},e.prototype.endOpenTag=function(e){var t,r;this.startIndex=this.openTagStart,this.attribs&&(null===(r=(t=this.cbs).onopentag)||void 0===r||r.call(t,this.tagname,this.attribs,e),this.attribs=null),this.cbs.onclosetag&&this.isVoidElement(this.tagname)&&this.cbs.onclosetag(this.tagname,!0),this.tagname=""},e.prototype.onopentagend=function(e){this.endIndex=e,this.endOpenTag(!1),this.startIndex=e+1},e.prototype.onclosetag=function(e,t){var r,n,i,o,a,s;this.endIndex=t;var c=this.getSlice(e,t);if(this.lowerCaseTagNames&&(c=c.toLowerCase()),(v.has(c)||m.has(c))&&this.foreignContext.pop(),this.isVoidElement(c))this.options.xmlMode||"br"!==c||(null===(n=(r=this.cbs).onopentagname)||void 0===n||n.call(r,"br"),null===(o=(i=this.cbs).onopentag)||void 0===o||o.call(i,"br",{},!0),null===(s=(a=this.cbs).onclosetag)||void 0===s||s.call(a,"br",!1));else{var u=this.stack.lastIndexOf(c);if(-1!==u)if(this.cbs.onclosetag)for(var l=this.stack.length-u;l--;)this.cbs.onclosetag(this.stack.pop(),0!==l);else this.stack.length=u;else this.options.xmlMode||"p"!==c||(this.emitOpenTag("p"),this.closeCurrentTag(!0))}this.startIndex=t+1},e.prototype.onselfclosingtag=function(e){this.endIndex=e,this.options.xmlMode||this.options.recognizeSelfClosing||this.foreignContext[this.foreignContext.length-1]?(this.closeCurrentTag(!1),this.startIndex=e+1):this.onopentagend(e)},e.prototype.closeCurrentTag=function(e){var t,r,n=this.tagname;this.endOpenTag(e),this.stack[this.stack.length-1]===n&&(null===(r=(t=this.cbs).onclosetag)||void 0===r||r.call(t,n,!e),this.stack.pop())},e.prototype.onattribname=function(e,t){this.startIndex=e;var r=this.getSlice(e,t);this.attribname=this.lowerCaseAttributeNames?r.toLowerCase():r},e.prototype.onattribdata=function(e,t){this.attribvalue+=this.getSlice(e,t)},e.prototype.onattribentity=function(e){this.attribvalue+=(0,s.fromCodePoint)(e)},e.prototype.onattribend=function(e,t){var r,n;this.endIndex=t,null===(n=(r=this.cbs).onattribute)||void 0===n||n.call(r,this.attribname,this.attribvalue,e===a.QuoteType.Double?'"':e===a.QuoteType.Single?"'":e===a.QuoteType.NoValue?void 0:null),this.attribs&&!Object.prototype.hasOwnProperty.call(this.attribs,this.attribname)&&(this.attribs[this.attribname]=this.attribvalue),this.attribvalue=""},e.prototype.getInstructionName=function(e){var t=e.search(_),r=t<0?e:e.substr(0,t);return this.lowerCaseTagNames&&(r=r.toLowerCase()),r},e.prototype.ondeclaration=function(e,t){this.endIndex=t;var r=this.getSlice(e,t);if(this.cbs.onprocessinginstruction){var n=this.getInstructionName(r);this.cbs.onprocessinginstruction("!".concat(n),"!".concat(r))}this.startIndex=t+1},e.prototype.onprocessinginstruction=function(e,t){this.endIndex=t;var r=this.getSlice(e,t);if(this.cbs.onprocessinginstruction){var n=this.getInstructionName(r);this.cbs.onprocessinginstruction("?".concat(n),"?".concat(r))}this.startIndex=t+1},e.prototype.oncomment=function(e,t,r){var n,i,o,a;this.endIndex=t,null===(i=(n=this.cbs).oncomment)||void 0===i||i.call(n,this.getSlice(e,t-r)),null===(a=(o=this.cbs).oncommentend)||void 0===a||a.call(o),this.startIndex=t+1},e.prototype.oncdata=function(e,t,r){var n,i,o,a,s,c,u,l,p,d;this.endIndex=t;var f=this.getSlice(e,t-r);this.options.xmlMode||this.options.recognizeCDATA?(null===(i=(n=this.cbs).oncdatastart)||void 0===i||i.call(n),null===(a=(o=this.cbs).ontext)||void 0===a||a.call(o,f),null===(c=(s=this.cbs).oncdataend)||void 0===c||c.call(s)):(null===(l=(u=this.cbs).oncomment)||void 0===l||l.call(u,"[CDATA[".concat(f,"]]")),null===(d=(p=this.cbs).oncommentend)||void 0===d||d.call(p)),this.startIndex=t+1},e.prototype.onend=function(){var e,t;if(this.cbs.onclosetag){this.endIndex=this.startIndex;for(var r=this.stack.length;r>0;this.cbs.onclosetag(this.stack[--r],!0));}null===(t=(e=this.cbs).onend)||void 0===t||t.call(e)},e.prototype.reset=function(){var e,t,r,n;null===(t=(e=this.cbs).onreset)||void 0===t||t.call(e),this.tokenizer.reset(),this.tagname="",this.attribname="",this.attribs=null,this.stack.length=0,this.startIndex=0,this.endIndex=0,null===(n=(r=this.cbs).onparserinit)||void 0===n||n.call(r,this),this.buffers.length=0,this.bufferOffset=0,this.writeIndex=0,this.ended=!1},e.prototype.parseComplete=function(e){this.reset(),this.end(e)},e.prototype.getSlice=function(e,t){for(;e-this.bufferOffset>=this.buffers[0].length;)this.shiftBuffer();for(var r=this.buffers[0].slice(e-this.bufferOffset,t-this.bufferOffset);t-this.bufferOffset>this.buffers[0].length;)this.shiftBuffer(),r+=this.buffers[0].slice(0,t-this.bufferOffset);return r},e.prototype.shiftBuffer=function(){this.bufferOffset+=this.buffers[0].length,this.writeIndex--,this.buffers.shift()},e.prototype.write=function(e){var t,r;this.ended?null===(r=(t=this.cbs).onerror)||void 0===r||r.call(t,new Error(".write() after done!")):(this.buffers.push(e),this.tokenizer.running&&(this.tokenizer.write(e),this.writeIndex++))},e.prototype.end=function(e){var t,r;this.ended?null===(r=(t=this.cbs).onerror)||void 0===r||r.call(t,Error(".end() after done!")):(e&&this.write(e),this.ended=!0,this.tokenizer.end())},e.prototype.pause=function(){this.tokenizer.pause()},e.prototype.resume=function(){for(this.tokenizer.resume();this.tokenizer.running&&this.writeIndex=n.Zero&&e<=n.Nine}!function(e){e[e.Tab=9]="Tab",e[e.NewLine=10]="NewLine",e[e.FormFeed=12]="FormFeed",e[e.CarriageReturn=13]="CarriageReturn",e[e.Space=32]="Space",e[e.ExclamationMark=33]="ExclamationMark",e[e.Num=35]="Num",e[e.Amp=38]="Amp",e[e.SingleQuote=39]="SingleQuote",e[e.DoubleQuote=34]="DoubleQuote",e[e.Dash=45]="Dash",e[e.Slash=47]="Slash",e[e.Zero=48]="Zero",e[e.Nine=57]="Nine",e[e.Semi=59]="Semi",e[e.Lt=60]="Lt",e[e.Eq=61]="Eq",e[e.Gt=62]="Gt",e[e.Questionmark=63]="Questionmark",e[e.UpperA=65]="UpperA",e[e.LowerA=97]="LowerA",e[e.UpperF=70]="UpperF",e[e.LowerF=102]="LowerF",e[e.UpperZ=90]="UpperZ",e[e.LowerZ=122]="LowerZ",e[e.LowerX=120]="LowerX",e[e.OpeningSquareBracket=91]="OpeningSquareBracket"}(n||(n={})),function(e){e[e.Text=1]="Text",e[e.BeforeTagName=2]="BeforeTagName",e[e.InTagName=3]="InTagName",e[e.InSelfClosingTag=4]="InSelfClosingTag",e[e.BeforeClosingTagName=5]="BeforeClosingTagName",e[e.InClosingTagName=6]="InClosingTagName",e[e.AfterClosingTagName=7]="AfterClosingTagName",e[e.BeforeAttributeName=8]="BeforeAttributeName",e[e.InAttributeName=9]="InAttributeName",e[e.AfterAttributeName=10]="AfterAttributeName",e[e.BeforeAttributeValue=11]="BeforeAttributeValue",e[e.InAttributeValueDq=12]="InAttributeValueDq",e[e.InAttributeValueSq=13]="InAttributeValueSq",e[e.InAttributeValueNq=14]="InAttributeValueNq",e[e.BeforeDeclaration=15]="BeforeDeclaration",e[e.InDeclaration=16]="InDeclaration",e[e.InProcessingInstruction=17]="InProcessingInstruction",e[e.BeforeComment=18]="BeforeComment",e[e.CDATASequence=19]="CDATASequence",e[e.InSpecialComment=20]="InSpecialComment",e[e.InCommentLike=21]="InCommentLike",e[e.BeforeSpecialS=22]="BeforeSpecialS",e[e.SpecialStartSequence=23]="SpecialStartSequence",e[e.InSpecialTag=24]="InSpecialTag",e[e.BeforeEntity=25]="BeforeEntity",e[e.BeforeNumericEntity=26]="BeforeNumericEntity",e[e.InNamedEntity=27]="InNamedEntity",e[e.InNumericEntity=28]="InNumericEntity",e[e.InHexEntity=29]="InHexEntity"}(i||(i={})),function(e){e[e.NoValue=0]="NoValue",e[e.Unquoted=1]="Unquoted",e[e.Single=2]="Single",e[e.Double=3]="Double"}(o=t.QuoteType||(t.QuoteType={}));var l={Cdata:new Uint8Array([67,68,65,84,65,91]),CdataEnd:new Uint8Array([93,93,62]),CommentEnd:new Uint8Array([45,45,62]),ScriptEnd:new Uint8Array([60,47,115,99,114,105,112,116]),StyleEnd:new Uint8Array([60,47,115,116,121,108,101]),TitleEnd:new Uint8Array([60,47,116,105,116,108,101])},p=function(){function e(e,t){var r=e.xmlMode,n=void 0!==r&&r,o=e.decodeEntities,s=void 0===o||o;this.cbs=t,this.state=i.Text,this.buffer="",this.sectionStart=0,this.index=0,this.baseState=i.Text,this.isSpecial=!1,this.running=!0,this.offset=0,this.sequenceIndex=0,this.trieIndex=0,this.trieCurrent=0,this.entityResult=0,this.entityExcess=0,this.xmlMode=n,this.decodeEntities=s,this.entityTrie=n?a.xmlDecodeTree:a.htmlDecodeTree}return e.prototype.reset=function(){this.state=i.Text,this.buffer="",this.sectionStart=0,this.index=0,this.baseState=i.Text,this.currentSequence=void 0,this.running=!0,this.offset=0},e.prototype.write=function(e){this.offset+=this.buffer.length,this.buffer=e,this.parse()},e.prototype.end=function(){this.running&&this.finish()},e.prototype.pause=function(){this.running=!1},e.prototype.resume=function(){this.running=!0,this.indexthis.sectionStart&&this.cbs.ontext(this.sectionStart,this.index),this.state=i.BeforeTagName,this.sectionStart=this.index):this.decodeEntities&&e===n.Amp&&(this.state=i.BeforeEntity)},e.prototype.stateSpecialStartSequence=function(e){var t=this.sequenceIndex===this.currentSequence.length;if(t?c(e):(32|e)===this.currentSequence[this.sequenceIndex]){if(!t)return void this.sequenceIndex++}else this.isSpecial=!1;this.sequenceIndex=0,this.state=i.InTagName,this.stateInTagName(e)},e.prototype.stateInSpecialTag=function(e){if(this.sequenceIndex===this.currentSequence.length){if(e===n.Gt||s(e)){var t=this.index-this.currentSequence.length;if(this.sectionStart=n.LowerA&&e<=n.LowerZ||e>=n.UpperA&&e<=n.UpperZ}(e)},e.prototype.startSpecial=function(e,t){this.isSpecial=!0,this.currentSequence=e,this.sequenceIndex=t,this.state=i.SpecialStartSequence},e.prototype.stateBeforeTagName=function(e){if(e===n.ExclamationMark)this.state=i.BeforeDeclaration,this.sectionStart=this.index+1;else if(e===n.Questionmark)this.state=i.InProcessingInstruction,this.sectionStart=this.index+1;else if(this.isTagStartChar(e)){var t=32|e;this.sectionStart=this.index,this.xmlMode||t!==l.TitleEnd[2]?this.state=this.xmlMode||t!==l.ScriptEnd[2]?i.InTagName:i.BeforeSpecialS:this.startSpecial(l.TitleEnd,3)}else e===n.Slash?this.state=i.BeforeClosingTagName:(this.state=i.Text,this.stateText(e))},e.prototype.stateInTagName=function(e){c(e)&&(this.cbs.onopentagname(this.sectionStart,this.index),this.sectionStart=-1,this.state=i.BeforeAttributeName,this.stateBeforeAttributeName(e))},e.prototype.stateBeforeClosingTagName=function(e){s(e)||(e===n.Gt?this.state=i.Text:(this.state=this.isTagStartChar(e)?i.InClosingTagName:i.InSpecialComment,this.sectionStart=this.index))},e.prototype.stateInClosingTagName=function(e){(e===n.Gt||s(e))&&(this.cbs.onclosetag(this.sectionStart,this.index),this.sectionStart=-1,this.state=i.AfterClosingTagName,this.stateAfterClosingTagName(e))},e.prototype.stateAfterClosingTagName=function(e){(e===n.Gt||this.fastForwardTo(n.Gt))&&(this.state=i.Text,this.sectionStart=this.index+1)},e.prototype.stateBeforeAttributeName=function(e){e===n.Gt?(this.cbs.onopentagend(this.index),this.isSpecial?(this.state=i.InSpecialTag,this.sequenceIndex=0):this.state=i.Text,this.baseState=this.state,this.sectionStart=this.index+1):e===n.Slash?this.state=i.InSelfClosingTag:s(e)||(this.state=i.InAttributeName,this.sectionStart=this.index)},e.prototype.stateInSelfClosingTag=function(e){e===n.Gt?(this.cbs.onselfclosingtag(this.index),this.state=i.Text,this.baseState=i.Text,this.sectionStart=this.index+1,this.isSpecial=!1):s(e)||(this.state=i.BeforeAttributeName,this.stateBeforeAttributeName(e))},e.prototype.stateInAttributeName=function(e){(e===n.Eq||c(e))&&(this.cbs.onattribname(this.sectionStart,this.index),this.sectionStart=-1,this.state=i.AfterAttributeName,this.stateAfterAttributeName(e))},e.prototype.stateAfterAttributeName=function(e){e===n.Eq?this.state=i.BeforeAttributeValue:e===n.Slash||e===n.Gt?(this.cbs.onattribend(o.NoValue,this.index),this.state=i.BeforeAttributeName,this.stateBeforeAttributeName(e)):s(e)||(this.cbs.onattribend(o.NoValue,this.index),this.state=i.InAttributeName,this.sectionStart=this.index)},e.prototype.stateBeforeAttributeValue=function(e){e===n.DoubleQuote?(this.state=i.InAttributeValueDq,this.sectionStart=this.index+1):e===n.SingleQuote?(this.state=i.InAttributeValueSq,this.sectionStart=this.index+1):s(e)||(this.sectionStart=this.index,this.state=i.InAttributeValueNq,this.stateInAttributeValueNoQuotes(e))},e.prototype.handleInAttributeValue=function(e,t){e===t||!this.decodeEntities&&this.fastForwardTo(t)?(this.cbs.onattribdata(this.sectionStart,this.index),this.sectionStart=-1,this.cbs.onattribend(t===n.DoubleQuote?o.Double:o.Single,this.index),this.state=i.BeforeAttributeName):this.decodeEntities&&e===n.Amp&&(this.baseState=this.state,this.state=i.BeforeEntity)},e.prototype.stateInAttributeValueDoubleQuotes=function(e){this.handleInAttributeValue(e,n.DoubleQuote)},e.prototype.stateInAttributeValueSingleQuotes=function(e){this.handleInAttributeValue(e,n.SingleQuote)},e.prototype.stateInAttributeValueNoQuotes=function(e){s(e)||e===n.Gt?(this.cbs.onattribdata(this.sectionStart,this.index),this.sectionStart=-1,this.cbs.onattribend(o.Unquoted,this.index),this.state=i.BeforeAttributeName,this.stateBeforeAttributeName(e)):this.decodeEntities&&e===n.Amp&&(this.baseState=this.state,this.state=i.BeforeEntity)},e.prototype.stateBeforeDeclaration=function(e){e===n.OpeningSquareBracket?(this.state=i.CDATASequence,this.sequenceIndex=0):this.state=e===n.Dash?i.BeforeComment:i.InDeclaration},e.prototype.stateInDeclaration=function(e){(e===n.Gt||this.fastForwardTo(n.Gt))&&(this.cbs.ondeclaration(this.sectionStart,this.index),this.state=i.Text,this.sectionStart=this.index+1)},e.prototype.stateInProcessingInstruction=function(e){(e===n.Gt||this.fastForwardTo(n.Gt))&&(this.cbs.onprocessinginstruction(this.sectionStart,this.index),this.state=i.Text,this.sectionStart=this.index+1)},e.prototype.stateBeforeComment=function(e){e===n.Dash?(this.state=i.InCommentLike,this.currentSequence=l.CommentEnd,this.sequenceIndex=2,this.sectionStart=this.index+1):this.state=i.InDeclaration},e.prototype.stateInSpecialComment=function(e){(e===n.Gt||this.fastForwardTo(n.Gt))&&(this.cbs.oncomment(this.sectionStart,this.index,0),this.state=i.Text,this.sectionStart=this.index+1)},e.prototype.stateBeforeSpecialS=function(e){var t=32|e;t===l.ScriptEnd[3]?this.startSpecial(l.ScriptEnd,4):t===l.StyleEnd[3]?this.startSpecial(l.StyleEnd,4):(this.state=i.InTagName,this.stateInTagName(e))},e.prototype.stateBeforeEntity=function(e){this.entityExcess=1,this.entityResult=0,e===n.Num?this.state=i.BeforeNumericEntity:e===n.Amp||(this.trieIndex=0,this.trieCurrent=this.entityTrie[0],this.state=i.InNamedEntity,this.stateInNamedEntity(e))},e.prototype.stateInNamedEntity=function(e){if(this.entityExcess+=1,this.trieIndex=(0,a.determineBranch)(this.entityTrie,this.trieCurrent,this.trieIndex+1,e),this.trieIndex<0)return this.emitNamedEntity(),void this.index--;this.trieCurrent=this.entityTrie[this.trieIndex];var t=this.trieCurrent&a.BinTrieFlags.VALUE_LENGTH;if(t){var r=(t>>14)-1;if(this.allowLegacyEntity()||e===n.Semi){var i=this.index-this.entityExcess+1;i>this.sectionStart&&this.emitPartial(this.sectionStart,i),this.entityResult=this.trieIndex,this.trieIndex+=r,this.entityExcess=0,this.sectionStart=this.index+1,0===r&&this.emitNamedEntity()}else this.trieIndex+=r}},e.prototype.emitNamedEntity=function(){if(this.state=this.baseState,0!==this.entityResult)switch((this.entityTrie[this.entityResult]&a.BinTrieFlags.VALUE_LENGTH)>>14){case 1:this.emitCodePoint(this.entityTrie[this.entityResult]&~a.BinTrieFlags.VALUE_LENGTH);break;case 2:this.emitCodePoint(this.entityTrie[this.entityResult+1]);break;case 3:this.emitCodePoint(this.entityTrie[this.entityResult+1]),this.emitCodePoint(this.entityTrie[this.entityResult+2])}},e.prototype.stateBeforeNumericEntity=function(e){(32|e)===n.LowerX?(this.entityExcess++,this.state=i.InHexEntity):(this.state=i.InNumericEntity,this.stateInNumericEntity(e))},e.prototype.emitNumericEntity=function(e){var t=this.index-this.entityExcess-1;t+2+Number(this.state===i.InHexEntity)!==this.index&&(t>this.sectionStart&&this.emitPartial(this.sectionStart,t),this.sectionStart=this.index+Number(e),this.emitCodePoint((0,a.replaceCodePoint)(this.entityResult))),this.state=this.baseState},e.prototype.stateInNumericEntity=function(e){e===n.Semi?this.emitNumericEntity(!0):u(e)?(this.entityResult=10*this.entityResult+(e-n.Zero),this.entityExcess++):(this.allowLegacyEntity()?this.emitNumericEntity(!1):this.state=this.baseState,this.index--)},e.prototype.stateInHexEntity=function(e){e===n.Semi?this.emitNumericEntity(!0):u(e)?(this.entityResult=16*this.entityResult+(e-n.Zero),this.entityExcess++):!function(e){return e>=n.UpperA&&e<=n.UpperF||e>=n.LowerA&&e<=n.LowerF}(e)?(this.allowLegacyEntity()?this.emitNumericEntity(!1):this.state=this.baseState,this.index--):(this.entityResult=16*this.entityResult+((32|e)-n.LowerA+10),this.entityExcess++)},e.prototype.allowLegacyEntity=function(){return!this.xmlMode&&(this.baseState===i.Text||this.baseState===i.InSpecialTag)},e.prototype.cleanup=function(){this.running&&this.sectionStart!==this.index&&(this.state===i.Text||this.state===i.InSpecialTag&&0===this.sequenceIndex?(this.cbs.ontext(this.sectionStart,this.index),this.sectionStart=this.index):this.state!==i.InAttributeValueDq&&this.state!==i.InAttributeValueSq&&this.state!==i.InAttributeValueNq||(this.cbs.onattribdata(this.sectionStart,this.index),this.sectionStart=this.index))},e.prototype.shouldContinue=function(){return this.index>1,l=-7,p=r?i-1:0,d=r?-1:1,f=e[t+p];for(p+=d,o=f&(1<<-l)-1,f>>=-l,l+=s;l>0;o=256*o+e[t+p],p+=d,l-=8);for(a=o&(1<<-l)-1,o>>=-l,l+=n;l>0;a=256*a+e[t+p],p+=d,l-=8);if(0===o)o=1-u;else{if(o===c)return a?NaN:1/0*(f?-1:1);a+=Math.pow(2,n),o-=u}return(f?-1:1)*a*Math.pow(2,o-n)},t.write=function(e,t,r,n,i,o){var a,s,c,u=8*o-i-1,l=(1<>1,d=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,f=n?0:o-1,h=n?1:-1,v=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(s=isNaN(t)?1:0,a=l):(a=Math.floor(Math.log(t)/Math.LN2),t*(c=Math.pow(2,-a))<1&&(a--,c*=2),(t+=a+p>=1?d/c:d*Math.pow(2,1-p))*c>=2&&(a++,c/=2),a+p>=l?(s=0,a=l):a+p>=1?(s=(t*c-1)*Math.pow(2,i),a+=p):(s=t*Math.pow(2,p-1)*Math.pow(2,i),a=0));i>=8;e[r+f]=255&s,f+=h,s/=256,i-=8);for(a=a<0;e[r+f]=255&a,f+=h,a/=256,u-=8);e[r+f-h]|=128*v}},6765:function(e,t,r){"use strict";function n(e){this.message=e}r.r(t),r.d(t,{InvalidTokenError:function(){return a}}),n.prototype=new Error,n.prototype.name="InvalidCharacterError";var i="undefined"!=typeof window&&window.atob&&window.atob.bind(window)||function(e){var t=String(e).replace(/=+$/,"");if(t.length%4==1)throw new n("'atob' failed: The string to be decoded is not correctly encoded.");for(var r,i,o=0,a=0,s="";i=t.charAt(a++);~i&&(r=o%4?64*r+i:i,o++%4)?s+=String.fromCharCode(255&r>>(-2*o&6)):0)i="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(i);return s};function o(e){var t=e.replace(/-/g,"+").replace(/_/g,"/");switch(t.length%4){case 0:break;case 2:t+="==";break;case 3:t+="=";break;default:throw"Illegal base64url string!"}try{return function(e){return decodeURIComponent(i(e).replace(/(.)/g,(function(e,t){var r=t.charCodeAt(0).toString(16).toUpperCase();return r.length<2&&(r="0"+r),"%"+r})))}(t)}catch(e){return i(t)}}function a(e){this.message=e}a.prototype=new Error,a.prototype.name="InvalidTokenError",t.default=function(e,t){if("string"!=typeof e)throw new a("Invalid token specified");var r=!0===(t=t||{}).header?0:1;try{return JSON.parse(o(e.split(".")[r]))}catch(e){throw new a("Invalid token specified: "+e.message)}}},42833:function(e,t,r){"use strict";function n(e){return Array.prototype.slice.call(arguments,1).forEach((function(t){t&&Object.keys(t).forEach((function(r){e[r]=t[r]}))})),e}function i(e){return Object.prototype.toString.call(e)}function o(e){return"[object Function]"===i(e)}function a(e){return e.replace(/[.?*+^$[\]\\(){}|-]/g,"\\$&")}var s={fuzzyLink:!0,fuzzyEmail:!0,fuzzyIP:!1};var c={"http:":{validate:function(e,t,r){var n=e.slice(t);return r.re.http||(r.re.http=new RegExp("^\\/\\/"+r.re.src_auth+r.re.src_host_port_strict+r.re.src_path,"i")),r.re.http.test(n)?n.match(r.re.http)[0].length:0}},"https:":"http:","ftp:":"http:","//":{validate:function(e,t,r){var n=e.slice(t);return r.re.no_http||(r.re.no_http=new RegExp("^"+r.re.src_auth+"(?:localhost|(?:(?:"+r.re.src_domain+")\\.)+"+r.re.src_domain_root+")"+r.re.src_port+r.re.src_host_terminator+r.re.src_path,"i")),r.re.no_http.test(n)?t>=3&&":"===e[t-3]||t>=3&&"/"===e[t-3]?0:n.match(r.re.no_http)[0].length:0}},"mailto:":{validate:function(e,t,r){var n=e.slice(t);return r.re.mailto||(r.re.mailto=new RegExp("^"+r.re.src_email_name+"@"+r.re.src_host_strict,"i")),r.re.mailto.test(n)?n.match(r.re.mailto)[0].length:0}}},u="a[cdefgilmnoqrstuwxz]|b[abdefghijmnorstvwyz]|c[acdfghiklmnoruvwxyz]|d[ejkmoz]|e[cegrstu]|f[ijkmor]|g[abdefghilmnpqrstuwy]|h[kmnrtu]|i[delmnoqrst]|j[emop]|k[eghimnprwyz]|l[abcikrstuvy]|m[acdeghklmnopqrstuvwxyz]|n[acefgilopruz]|om|p[aefghklmnrstwy]|qa|r[eosuw]|s[abcdeghijklmnortuvxyz]|t[cdfghjklmnortvwz]|u[agksyz]|v[aceginu]|w[fs]|y[et]|z[amw]",l="biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|\u0440\u0444".split("|");function p(e){var t=e.re=r(45260)(e.__opts__),n=e.__tlds__.slice();function s(e){return e.replace("%TLDS%",t.src_tlds)}e.onCompile(),e.__tlds_replaced__||n.push(u),n.push(t.src_xn),t.src_tlds=n.join("|"),t.email_fuzzy=RegExp(s(t.tpl_email_fuzzy),"i"),t.link_fuzzy=RegExp(s(t.tpl_link_fuzzy),"i"),t.link_no_ip_fuzzy=RegExp(s(t.tpl_link_no_ip_fuzzy),"i"),t.host_fuzzy_test=RegExp(s(t.tpl_host_fuzzy_test),"i");var c=[];function l(e,t){throw new Error('(LinkifyIt) Invalid schema "'+e+'": '+t)}e.__compiled__={},Object.keys(e.__schemas__).forEach((function(t){var r=e.__schemas__[t];if(null!==r){var n={validate:null,link:null};if(e.__compiled__[t]=n,"[object Object]"===i(r))return!function(e){return"[object RegExp]"===i(e)}(r.validate)?o(r.validate)?n.validate=r.validate:l(t,r):n.validate=function(e){return function(t,r){var n=t.slice(r);return e.test(n)?n.match(e)[0].length:0}}(r.validate),void(o(r.normalize)?n.normalize=r.normalize:r.normalize?l(t,r):n.normalize=function(e,t){t.normalize(e)});!function(e){return"[object String]"===i(e)}(r)?l(t,r):c.push(t)}})),c.forEach((function(t){e.__compiled__[e.__schemas__[t]]&&(e.__compiled__[t].validate=e.__compiled__[e.__schemas__[t]].validate,e.__compiled__[t].normalize=e.__compiled__[e.__schemas__[t]].normalize)})),e.__compiled__[""]={validate:null,normalize:function(e,t){t.normalize(e)}};var p=Object.keys(e.__compiled__).filter((function(t){return t.length>0&&e.__compiled__[t]})).map(a).join("|");e.re.schema_test=RegExp("(^|(?!_)(?:[><\uff5c]|"+t.src_ZPCc+"))("+p+")","i"),e.re.schema_search=RegExp("(^|(?!_)(?:[><\uff5c]|"+t.src_ZPCc+"))("+p+")","ig"),e.re.schema_at_start=RegExp("^"+e.re.schema_search.source,"i"),e.re.pretest=RegExp("("+e.re.schema_test.source+")|("+e.re.host_fuzzy_test.source+")|@","i"),function(e){e.__index__=-1,e.__text_cache__=""}(e)}function d(e,t){var r=e.__index__,n=e.__last_index__,i=e.__text_cache__.slice(r,n);this.schema=e.__schema__.toLowerCase(),this.index=r+t,this.lastIndex=n+t,this.raw=i,this.text=i,this.url=i}function f(e,t){var r=new d(e,t);return e.__compiled__[r.schema].normalize(r,e),r}function h(e,t){if(!(this instanceof h))return new h(e,t);var r;t||(r=e,Object.keys(r||{}).reduce((function(e,t){return e||s.hasOwnProperty(t)}),!1)&&(t=e,e={})),this.__opts__=n({},s,t),this.__index__=-1,this.__last_index__=-1,this.__schema__="",this.__text_cache__="",this.__schemas__=n({},c,e),this.__compiled__={},this.__tlds__=l,this.__tlds_replaced__=!1,this.re={},p(this)}h.prototype.add=function(e,t){return this.__schemas__[e]=t,p(this),this},h.prototype.set=function(e){return this.__opts__=n(this.__opts__,e),this},h.prototype.test=function(e){if(this.__text_cache__=e,this.__index__=-1,!e.length)return!1;var t,r,n,i,o,a,s,c;if(this.re.schema_test.test(e))for((s=this.re.schema_search).lastIndex=0;null!==(t=s.exec(e));)if(i=this.testSchemaAt(e,t[2],s.lastIndex)){this.__schema__=t[2],this.__index__=t.index+t[1].length,this.__last_index__=t.index+t[0].length+i;break}return this.__opts__.fuzzyLink&&this.__compiled__["http:"]&&(c=e.search(this.re.host_fuzzy_test))>=0&&(this.__index__<0||c=0&&null!==(n=e.match(this.re.email_fuzzy))&&(o=n.index+n[1].length,a=n.index+n[0].length,(this.__index__<0||othis.__last_index__)&&(this.__schema__="mailto:",this.__index__=o,this.__last_index__=a)),this.__index__>=0},h.prototype.pretest=function(e){return this.re.pretest.test(e)},h.prototype.testSchemaAt=function(e,t,r){return this.__compiled__[t.toLowerCase()]?this.__compiled__[t.toLowerCase()].validate(e,r,this):0},h.prototype.match=function(e){var t=0,r=[];this.__index__>=0&&this.__text_cache__===e&&(r.push(f(this,t)),t=this.__last_index__);for(var n=t?e.slice(t):e;this.test(n);)r.push(f(this,t)),n=n.slice(this.__last_index__),t+=this.__last_index__;return r.length?r:null},h.prototype.matchAtStart=function(e){if(this.__text_cache__=e,this.__index__=-1,!e.length)return null;var t=this.re.schema_at_start.exec(e);if(!t)return null;var r=this.testSchemaAt(e,t[2],t[0].length);return r?(this.__schema__=t[2],this.__index__=t.index+t[1].length,this.__last_index__=t.index+t[0].length+r,f(this,0)):null},h.prototype.tlds=function(e,t){return e=Array.isArray(e)?e:[e],t?(this.__tlds__=this.__tlds__.concat(e).sort().filter((function(e,t,r){return e!==r[t-1]})).reverse(),p(this),this):(this.__tlds__=e.slice(),this.__tlds_replaced__=!0,p(this),this)},h.prototype.normalize=function(e){e.schema||(e.url="http://"+e.url),"mailto:"!==e.schema||/^mailto:/i.test(e.url)||(e.url="mailto:"+e.url)},h.prototype.onCompile=function(){},e.exports=h},45260:function(e,t,r){"use strict";e.exports=function(e){var t={};e=e||{},t.src_Any=r(76027).source,t.src_Cc=r(50592).source,t.src_Z=r(23978).source,t.src_P=r(2828).source,t.src_ZPCc=[t.src_Z,t.src_P,t.src_Cc].join("|"),t.src_ZCc=[t.src_Z,t.src_Cc].join("|");var n="[><\uff5c]";return t.src_pseudo_letter="(?:(?![><\uff5c]|"+t.src_ZPCc+")"+t.src_Any+")",t.src_ip4="(?:(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)",t.src_auth="(?:(?:(?!"+t.src_ZCc+"|[@/\\[\\]()]).)+@)?",t.src_port="(?::(?:6(?:[0-4]\\d{3}|5(?:[0-4]\\d{2}|5(?:[0-2]\\d|3[0-5])))|[1-5]?\\d{1,4}))?",t.src_host_terminator="(?=$|[><\uff5c]|"+t.src_ZPCc+")(?!"+(e["---"]?"-(?!--)|":"-|")+"_|:\\d|\\.-|\\.(?!$|"+t.src_ZPCc+"))",t.src_path="(?:[/?#](?:(?!"+t.src_ZCc+"|"+n+"|[()[\\]{}.,\"'?!\\-;]).|\\[(?:(?!"+t.src_ZCc+"|\\]).)*\\]|\\((?:(?!"+t.src_ZCc+"|[)]).)*\\)|\\{(?:(?!"+t.src_ZCc+'|[}]).)*\\}|\\"(?:(?!'+t.src_ZCc+'|["]).)+\\"|\\\'(?:(?!'+t.src_ZCc+"|[']).)+\\'|\\'(?="+t.src_pseudo_letter+"|[-])|\\.{2,}[a-zA-Z0-9%/&]|\\.(?!"+t.src_ZCc+"|[.]|$)|"+(e["---"]?"\\-(?!--(?:[^-]|$))(?:-*)|":"\\-+|")+",(?!"+t.src_ZCc+"|$)|;(?!"+t.src_ZCc+"|$)|\\!+(?!"+t.src_ZCc+"|[!]|$)|\\?(?!"+t.src_ZCc+"|[?]|$))+|\\/)?",t.src_email_name='[\\-;:&=\\+\\$,\\.a-zA-Z0-9_][\\-;:&=\\+\\$,\\"\\.a-zA-Z0-9_]*',t.src_xn="xn--[a-z0-9\\-]{1,59}",t.src_domain_root="(?:"+t.src_xn+"|"+t.src_pseudo_letter+"{1,63})",t.src_domain="(?:"+t.src_xn+"|(?:"+t.src_pseudo_letter+")|(?:"+t.src_pseudo_letter+"(?:-|"+t.src_pseudo_letter+"){0,61}"+t.src_pseudo_letter+"))",t.src_host="(?:(?:(?:(?:"+t.src_domain+")\\.)*"+t.src_domain+"))",t.tpl_host_fuzzy="(?:"+t.src_ip4+"|(?:(?:(?:"+t.src_domain+")\\.)+(?:%TLDS%)))",t.tpl_host_no_ip_fuzzy="(?:(?:(?:"+t.src_domain+")\\.)+(?:%TLDS%))",t.src_host_strict=t.src_host+t.src_host_terminator,t.tpl_host_fuzzy_strict=t.tpl_host_fuzzy+t.src_host_terminator,t.src_host_port_strict=t.src_host+t.src_port+t.src_host_terminator,t.tpl_host_port_fuzzy_strict=t.tpl_host_fuzzy+t.src_port+t.src_host_terminator,t.tpl_host_port_no_ip_fuzzy_strict=t.tpl_host_no_ip_fuzzy+t.src_port+t.src_host_terminator,t.tpl_host_fuzzy_test="localhost|www\\.|\\.\\d{1,3}\\.|(?:\\.(?:%TLDS%)(?:"+t.src_ZPCc+"|>|$))",t.tpl_email_fuzzy='(^|[><\uff5c]|"|\\(|'+t.src_ZCc+")("+t.src_email_name+"@"+t.tpl_host_fuzzy_strict+")",t.tpl_link_fuzzy="(^|(?![.:/\\-_@])(?:[$+<=>^`|\uff5c]|"+t.src_ZPCc+"))((?![$+<=>^`|\uff5c])"+t.tpl_host_port_fuzzy_strict+t.src_path+")",t.tpl_link_no_ip_fuzzy="(^|(?![.:/\\-_@])(?:[$+<=>^`|\uff5c]|"+t.src_ZPCc+"))((?![$+<=>^`|\uff5c])"+t.tpl_host_port_no_ip_fuzzy_strict+t.src_path+")",t}},42922:function(e,t,r){"use strict";e.exports=r(91246)},68359:function(e,t,r){"use strict";e.exports=r(24357)},71358:function(e){"use strict";e.exports=["address","article","aside","base","basefont","blockquote","body","caption","center","col","colgroup","dd","details","dialog","dir","div","dl","dt","fieldset","figcaption","figure","footer","form","frame","frameset","h1","h2","h3","h4","h5","h6","head","header","hr","html","iframe","legend","li","link","main","menu","menuitem","nav","noframes","ol","optgroup","option","p","param","section","source","summary","table","tbody","td","tfoot","th","thead","title","tr","track","ul"]},76557:function(e){"use strict";var t="<[A-Za-z][A-Za-z0-9\\-]*(?:\\s+[a-zA-Z_:][a-zA-Z0-9:._-]*(?:\\s*=\\s*(?:[^\"'=<>`\\x00-\\x20]+|'[^']*'|\"[^\"]*\"))?)*\\s*\\/?>",r="<\\/[A-Za-z][A-Za-z0-9\\-]*\\s*>",n=new RegExp("^(?:"+t+"|"+r+"|\x3c!----\x3e|\x3c!--(?:-?[^>-])(?:-?[^-])*--\x3e|<[?][\\s\\S]*?[?]>|]*>|)"),i=new RegExp("^(?:"+t+"|"+r+")");e.exports.l=n,e.exports.p=i},49963:function(e,t,r){"use strict";var n=Object.prototype.hasOwnProperty;function i(e,t){return n.call(e,t)}function o(e){return!(e>=55296&&e<=57343)&&(!(e>=64976&&e<=65007)&&(!!(65535&~e&&65534!=(65535&e))&&(!(e>=0&&e<=8)&&(11!==e&&(!(e>=14&&e<=31)&&(!(e>=127&&e<=159)&&!(e>1114111)))))))}function a(e){if(e>65535){var t=55296+((e-=65536)>>10),r=56320+(1023&e);return String.fromCharCode(t,r)}return String.fromCharCode(e)}var s=/\\([!"#$%&'()*+,\-.\/:;<=>?@[\\\]^_`{|}~])/g,c=new RegExp(s.source+"|"+/&([a-z#][a-z0-9]{1,31});/gi.source,"gi"),u=/^#((?:x[a-f0-9]{1,8}|[0-9]{1,8}))$/i,l=r(68359);var p=/[&<>"]/,d=/[&<>"]/g,f={"&":"&","<":"<",">":">",'"':"""};function h(e){return f[e]}var v=/[.?*+^$[\]\\(){}|-]/g;var m=r(2828);t.lib={},t.lib.mdurl=r(86781),t.lib.ucmicro=r(39295),t.assign=function(e){return Array.prototype.slice.call(arguments,1).forEach((function(t){if(t){if("object"!=typeof t)throw new TypeError(t+"must be object");Object.keys(t).forEach((function(r){e[r]=t[r]}))}})),e},t.isString=function(e){return"[object String]"===function(e){return Object.prototype.toString.call(e)}(e)},t.has=i,t.unescapeMd=function(e){return e.indexOf("\\")<0?e:e.replace(s,"$1")},t.unescapeAll=function(e){return e.indexOf("\\")<0&&e.indexOf("&")<0?e:e.replace(c,(function(e,t,r){return t||function(e,t){var r;return i(l,t)?l[t]:35===t.charCodeAt(0)&&u.test(t)&&o(r="x"===t[1].toLowerCase()?parseInt(t.slice(2),16):parseInt(t.slice(1),10))?a(r):e}(e,r)}))},t.isValidEntityCode=o,t.fromCodePoint=a,t.escapeHtml=function(e){return p.test(e)?e.replace(d,h):e},t.arrayReplaceAt=function(e,t,r){return[].concat(e.slice(0,t),r,e.slice(t+1))},t.isSpace=function(e){switch(e){case 9:case 32:return!0}return!1},t.isWhiteSpace=function(e){if(e>=8192&&e<=8202)return!0;switch(e){case 9:case 10:case 11:case 12:case 13:case 32:case 160:case 5760:case 8239:case 8287:case 12288:return!0}return!1},t.isMdAsciiPunct=function(e){switch(e){case 33:case 34:case 35:case 36:case 37:case 38:case 39:case 40:case 41:case 42:case 43:case 44:case 45:case 46:case 47:case 58:case 59:case 60:case 61:case 62:case 63:case 64:case 91:case 92:case 93:case 94:case 95:case 96:case 123:case 124:case 125:case 126:return!0;default:return!1}},t.isPunctChar=function(e){return m.test(e)},t.escapeRE=function(e){return e.replace(v,"\\$&")},t.normalizeReference=function(e){return e=e.trim().replace(/\s+/g," "),"\u1e7e"==="\u1e9e".toLowerCase()&&(e=e.replace(/\u1e9e/g,"\xdf")),e.toLowerCase().toUpperCase()}},83592:function(e,t,r){"use strict";t.parseLinkLabel=r(31947),t.parseLinkDestination=r(58949),t.parseLinkTitle=r(27311)},58949:function(e,t,r){"use strict";var n=r(49963).unescapeAll;e.exports=function(e,t,r){var i,o,a=t,s={ok:!1,pos:0,lines:0,str:""};if(60===e.charCodeAt(a)){for(a++;a32)return s;if(41===i){if(0===o)break;o--}a++}return t===a||0!==o||(s.str=n(e.slice(t,a)),s.pos=a,s.ok=!0),s}},31947:function(e){"use strict";e.exports=function(e,t,r){var n,i,o,a,s=-1,c=e.posMax,u=e.pos;for(e.pos=t+1,n=1;e.pos=r)return c;if(34!==(o=e.charCodeAt(s))&&39!==o&&40!==o)return c;for(s++,40===o&&(o=41);s=0))try{t.hostname=p.toASCII(t.hostname)}catch(e){}return l.encode(l.format(t))}function T(e){var t=l.parse(e,!0);if(t.hostname&&(!t.protocol||m.indexOf(t.protocol)>=0))try{t.hostname=p.toUnicode(t.hostname)}catch(e){}return l.decode(l.format(t),l.decode.defaultChars+"%")}function g(e,t){if(!(this instanceof g))return new g(e,t);t||n.isString(e)||(t=e||{},e="default"),this.inline=new c,this.block=new s,this.core=new a,this.renderer=new o,this.linkify=new u,this.validateLink=v,this.normalizeLink=_,this.normalizeLinkText=T,this.utils=n,this.helpers=n.assign({},i),this.options={},this.configure(e),t&&this.set(t)}g.prototype.set=function(e){return n.assign(this.options,e),this},g.prototype.configure=function(e){var t,r=this;if(n.isString(e)&&!(e=d[t=e]))throw new Error('Wrong `markdown-it` preset "'+t+'", check name');if(!e)throw new Error("Wrong `markdown-it` preset, can't be empty");return e.options&&r.set(e.options),e.components&&Object.keys(e.components).forEach((function(t){e.components[t].rules&&r[t].ruler.enableOnly(e.components[t].rules),e.components[t].rules2&&r[t].ruler2.enableOnly(e.components[t].rules2)})),this},g.prototype.enable=function(e,t){var r=[];Array.isArray(e)||(e=[e]),["core","block","inline"].forEach((function(t){r=r.concat(this[t].ruler.enable(e,!0))}),this),r=r.concat(this.inline.ruler2.enable(e,!0));var n=e.filter((function(e){return r.indexOf(e)<0}));if(n.length&&!t)throw new Error("MarkdownIt. Failed to enable unknown rule(s): "+n);return this},g.prototype.disable=function(e,t){var r=[];Array.isArray(e)||(e=[e]),["core","block","inline"].forEach((function(t){r=r.concat(this[t].ruler.disable(e,!0))}),this),r=r.concat(this.inline.ruler2.disable(e,!0));var n=e.filter((function(e){return r.indexOf(e)<0}));if(n.length&&!t)throw new Error("MarkdownIt. Failed to disable unknown rule(s): "+n);return this},g.prototype.use=function(e){var t=[this].concat(Array.prototype.slice.call(arguments,1));return e.apply(e,t),this},g.prototype.parse=function(e,t){if("string"!=typeof e)throw new Error("Input data should be a String");var r=new this.core.State(e,this,t);return this.core.process(r),r.tokens},g.prototype.render=function(e,t){return t=t||{},this.renderer.render(this.parse(e,t),this.options,t)},g.prototype.parseInline=function(e,t){var r=new this.core.State(e,this,t);return r.inlineMode=!0,this.core.process(r),r.tokens},g.prototype.renderInline=function(e,t){return t=t||{},this.renderer.render(this.parseInline(e,t),this.options,t)},e.exports=g},31525:function(e,t,r){"use strict";var n=r(12378),i=[["table",r(24752),["paragraph","reference"]],["code",r(15711)],["fence",r(52373),["paragraph","reference","blockquote","list"]],["blockquote",r(82941),["paragraph","reference","blockquote","list"]],["hr",r(88e3),["paragraph","reference","blockquote","list"]],["list",r(36686),["paragraph","reference","blockquote"]],["reference",r(86897)],["html_block",r(81857),["paragraph","reference","blockquote"]],["heading",r(50634),["paragraph","reference","blockquote"]],["lheading",r(39648)],["paragraph",r(87046)]];function o(){this.ruler=new n;for(var e=0;e=r))&&!(e.sCount[c]=l){e.line=r;break}for(o=e.line,i=0;i=e.line)throw new Error("block rule didn't increment state.line");break}if(!n)throw new Error("none of the block rules matched");e.tight=!u,e.isEmpty(e.line-1)&&(u=!0),(c=e.line)=e.pos)throw new Error("inline rule didn't increment state.pos");break}}else e.pos=e.posMax;t||e.pos++,s[n]=e.pos}else e.pos=s[n]},a.prototype.tokenize=function(e){for(var t,r,n,i=this.ruler.getRules(""),o=i.length,a=e.posMax,s=e.md.options.maxNesting;e.pos=e.pos)throw new Error("inline rule didn't increment state.pos");break}if(t){if(e.pos>=a)break}else e.pending+=e.src[e.pos++]}e.pending&&e.pushPending()},a.prototype.parse=function(e,t,r,n){var i,o,a,s=new this.State(e,t,r,n);for(this.tokenize(s),a=(o=this.ruler2.getRules("")).length,i=0;i"+o(a.content)+""},a.code_block=function(e,t,r,n,i){var a=e[t];return""+o(e[t].content)+"\n"},a.fence=function(e,t,r,n,a){var s,c,u,l,p,d=e[t],f=d.info?i(d.info).trim():"",h="",v="";return f&&(h=(u=f.split(/(\s+)/g))[0],v=u.slice(2).join("")),0===(s=r.highlight&&r.highlight(d.content,h,v)||o(d.content)).indexOf(""+s+"\n"):"
"+s+"
\n"},a.image=function(e,t,r,n,i){var o=e[t];return o.attrs[o.attrIndex("alt")][1]=i.renderInlineAsText(o.children,r,n),i.renderToken(e,t,r)},a.hardbreak=function(e,t,r){return r.xhtmlOut?"
\n":"
\n"},a.softbreak=function(e,t,r){return r.breaks?r.xhtmlOut?"
\n":"
\n":"\n"},a.text=function(e,t){return o(e[t].content)},a.html_block=function(e,t){return e[t].content},a.html_inline=function(e,t){return e[t].content},s.prototype.renderAttrs=function(e){var t,r,n;if(!e.attrs)return"";for(n="",t=0,r=e.attrs.length;t\n":">")},s.prototype.renderInline=function(e,t,r){for(var n,i="",o=this.rules,a=0,s=e.length;a=4)return!1;if(62!==e.src.charCodeAt(I))return!1;if(i)return!0;for(h=[],v=[],T=[],g=[],b=e.md.block.ruler.getRules("blockquote"),_=e.parentType,e.parentType="blockquote",d=t;d=(O=e.eMarks[d])));d++)if(62!==e.src.charCodeAt(I++)||S){if(l)break;for(E=!1,s=0,u=b.length;s=O,v.push(e.bsCount[d]),e.bsCount[d]=e.sCount[d]+1+(y?1:0),T.push(e.sCount[d]),e.sCount[d]=f-c,g.push(e.tShift[d]),e.tShift[d]=I-e.bMarks[d]}for(m=e.blkIndent,e.blkIndent=0,(A=e.push("blockquote_open","blockquote",1)).markup=">",A.map=p=[t,0],e.md.block.tokenize(e,t,d),(A=e.push("blockquote_close","blockquote",-1)).markup=">",e.lineMax=C,e.parentType=_,p[1]=e.line,s=0;s=4))break;i=++n}return e.line=i,(o=e.push("code_block","code",0)).content=e.getLines(t,i,4+e.blkIndent,!1)+"\n",o.map=[t,e.line],!0}},52373:function(e){"use strict";e.exports=function(e,t,r,n){var i,o,a,s,c,u,l,p=!1,d=e.bMarks[t]+e.tShift[t],f=e.eMarks[t];if(e.sCount[t]-e.blkIndent>=4)return!1;if(d+3>f)return!1;if(126!==(i=e.src.charCodeAt(d))&&96!==i)return!1;if(c=d,(o=(d=e.skipChars(d,i))-c)<3)return!1;if(l=e.src.slice(c,d),a=e.src.slice(d,f),96===i&&a.indexOf(String.fromCharCode(i))>=0)return!1;if(n)return!0;for(s=t;!(++s>=r)&&!((d=c=e.bMarks[s]+e.tShift[s])<(f=e.eMarks[s])&&e.sCount[s]=4||(d=e.skipChars(d,i))-c=4)return!1;if(35!==(o=e.src.charCodeAt(u))||u>=l)return!1;for(a=1,o=e.src.charCodeAt(++u);35===o&&u6||uu&&n(e.src.charCodeAt(s-1))&&(l=s),e.line=t+1,(c=e.push("heading_open","h"+String(a),1)).markup="########".slice(0,a),c.map=[t,e.line],(c=e.push("inline","",0)).content=e.src.slice(u,l).trim(),c.map=[t,e.line],c.children=[],(c=e.push("heading_close","h"+String(a),-1)).markup="########".slice(0,a)),!0)}},88e3:function(e,t,r){"use strict";var n=r(49963).isSpace;e.exports=function(e,t,r,i){var o,a,s,c,u=e.bMarks[t]+e.tShift[t],l=e.eMarks[t];if(e.sCount[t]-e.blkIndent>=4)return!1;if(42!==(o=e.src.charCodeAt(u++))&&45!==o&&95!==o)return!1;for(a=1;u|$))/i,/<\/(script|pre|style|textarea)>/i,!0],[/^/,!0],[/^<\?/,/\?>/,!0],[/^/,!0],[/^/,!0],[new RegExp("^|$))","i"),/^$/,!0],[new RegExp(i.source+"\\s*$"),/^$/,!1]];e.exports=function(e,t,r,n){var i,a,s,c,u=e.bMarks[t]+e.tShift[t],l=e.eMarks[t];if(e.sCount[t]-e.blkIndent>=4)return!1;if(!e.md.options.html)return!1;if(60!==e.src.charCodeAt(u))return!1;for(c=e.src.slice(u,l),i=0;i=4)return!1;for(d=e.parentType,e.parentType="paragraph";f3)){if(e.sCount[f]>=e.blkIndent&&(c=e.bMarks[f]+e.tShift[f])<(u=e.eMarks[f])&&(45===(p=e.src.charCodeAt(c))||61===p)&&(c=e.skipChars(c,p),(c=e.skipSpaces(c))>=u)){l=61===p?1:2;break}if(!(e.sCount[f]<0)){for(i=!1,o=0,a=h.length;o=a)return-1;if((r=e.src.charCodeAt(o++))<48||r>57)return-1;for(;;){if(o>=a)return-1;if(!((r=e.src.charCodeAt(o++))>=48&&r<=57)){if(41===r||46===r)break;return-1}if(o-i>=10)return-1}return o=4)return!1;if(e.listIndent>=0&&e.sCount[L]-e.listIndent>=4&&e.sCount[L]=e.blkIndent&&(k=!0),(O=o(e,L))>=0){if(d=!0,R=e.bMarks[L]+e.tShift[L],T=Number(e.src.slice(R,O-1)),k&&1!==T)return!1}else{if(!((O=i(e,L))>=0))return!1;d=!1}if(k&&e.skipSpaces(O)>=e.eMarks[L])return!1;if(n)return!0;for(_=e.src.charCodeAt(O-1),m=e.tokens.length,d?(x=e.push("ordered_list_open","ol",1),1!==T&&(x.attrs=[["start",T]])):x=e.push("bullet_list_open","ul",1),x.map=v=[L,0],x.markup=String.fromCharCode(_),w=!1,N=e.md.block.ruler.getRules("list"),b=e.parentType,e.parentType="list";L=g?1:y-p)>4&&(l=1),u=p+l,(x=e.push("list_item_open","li",1)).markup=String.fromCharCode(_),x.map=f=[L,0],d&&(x.info=e.src.slice(R,O-1)),C=e.tight,S=e.tShift[L],A=e.sCount[L],E=e.listIndent,e.listIndent=e.blkIndent,e.blkIndent=u,e.tight=!0,e.tShift[L]=s-e.bMarks[L],e.sCount[L]=y,s>=g&&e.isEmpty(L+1)?e.line=Math.min(e.line+2,r):e.md.block.tokenize(e,L,r,!0),e.tight&&!w||(D=!1),w=e.line-L>1&&e.isEmpty(e.line-1),e.blkIndent=e.listIndent,e.listIndent=E,e.tShift[L]=S,e.sCount[L]=A,e.tight=C,(x=e.push("list_item_close","li",-1)).markup=String.fromCharCode(_),L=e.line,f[1]=L,L>=r)break;if(e.sCount[L]=4)break;for(P=!1,c=0,h=N.length;c3||e.sCount[u]<0)){for(i=!1,o=0,a=l.length;o=4)return!1;if(91!==e.src.charCodeAt(A))return!1;for(;++A3||e.sCount[C]<0)){for(g=!1,p=0,d=y.length;p0&&this.level++,this.tokens.push(i),i},o.prototype.isEmpty=function(e){return this.bMarks[e]+this.tShift[e]>=this.eMarks[e]},o.prototype.skipEmptyLines=function(e){for(var t=this.lineMax;et;)if(!i(this.src.charCodeAt(--e)))return e+1;return e},o.prototype.skipChars=function(e,t){for(var r=this.src.length;er;)if(t!==this.src.charCodeAt(--e))return e+1;return e},o.prototype.getLines=function(e,t,r,n){var o,a,s,c,u,l,p,d=e;if(e>=t)return"";for(l=new Array(t-e),o=0;dr?new Array(a-r+1).join(" ")+this.src.slice(c,u):this.src.slice(c,u)}return l.join("")},o.prototype.Token=n,e.exports=o},24752:function(e,t,r){"use strict";var n=r(49963).isSpace;function i(e,t){var r=e.bMarks[t]+e.tShift[t],n=e.eMarks[t];return e.src.slice(r,n)}function o(e){var t,r=[],n=0,i=e.length,o=!1,a=0,s="";for(t=e.charCodeAt(n);nr)return!1;if(d=t+1,e.sCount[d]=4)return!1;if((u=e.bMarks[d]+e.tShift[d])>=e.eMarks[d])return!1;if(124!==(A=e.src.charCodeAt(u++))&&45!==A&&58!==A)return!1;if(u>=e.eMarks[d])return!1;if(124!==(S=e.src.charCodeAt(u++))&&45!==S&&58!==S&&!n(S))return!1;if(45===A&&n(S))return!1;for(;u=4)return!1;if((f=o(c)).length&&""===f[0]&&f.shift(),f.length&&""===f[f.length-1]&&f.pop(),0===(h=f.length)||h!==m.length)return!1;if(a)return!0;for(y=e.parentType,e.parentType="table",b=e.md.block.ruler.getRules("blockquote"),(v=e.push("table_open","table",1)).map=T=[t,0],(v=e.push("thead_open","thead",1)).map=[t,t+1],(v=e.push("tr_open","tr",1)).map=[t,t+1],l=0;l=4)break;for((f=o(c)).length&&""===f[0]&&f.shift(),f.length&&""===f[f.length-1]&&f.pop(),d===t+2&&((v=e.push("tbody_open","tbody",1)).map=g=[t+2,0]),(v=e.push("tr_open","tr",1)).map=[d,d+1],l=0;l/i.test(e)}e.exports=function(e){var t,r,o,a,s,c,u,l,p,d,f,h,v,m,_,T,g,y,E=e.tokens;if(e.md.options.linkify)for(r=0,o=E.length;r=0;t--)if("link_close"!==(c=a[t]).type){if("html_inline"===c.type&&(y=c.content,/^\s]/i.test(y)&&v>0&&v--,i(c.content)&&v++),!(v>0)&&"text"===c.type&&e.md.linkify.test(c.content)){for(p=c.content,g=e.md.linkify.match(p),u=[],h=c.level,f=0,g.length>0&&0===g[0].index&&t>0&&"text_special"===a[t-1].type&&(g=g.slice(1)),l=0;lf&&((s=new e.Token("text","",0)).content=p.slice(f,d),s.level=h,u.push(s)),(s=new e.Token("link_open","a",1)).attrs=[["href",_]],s.level=h++,s.markup="linkify",s.info="auto",u.push(s),(s=new e.Token("text","",0)).content=T,s.level=h,u.push(s),(s=new e.Token("link_close","a",-1)).level=--h,s.markup="linkify",s.info="auto",u.push(s),f=g[l].lastIndex);f=0;t--)"text"!==(r=e[t]).type||i||(r.content=r.content.replace(n,o)),"link_open"===r.type&&"auto"===r.info&&i--,"link_close"===r.type&&"auto"===r.info&&i++}function s(e){var r,n,i=0;for(r=e.length-1;r>=0;r--)"text"!==(n=e[r]).type||i||t.test(n.content)&&(n.content=n.content.replace(/\+-/g,"\xb1").replace(/\.{2,}/g,"\u2026").replace(/([?!])\u2026/g,"$1..").replace(/([?!]){4,}/g,"$1$1$1").replace(/,{2,}/g,",").replace(/(^|[^-])---(?=[^-]|$)/gm,"$1\u2014").replace(/(^|\s)--(?=\s|$)/gm,"$1\u2013").replace(/(^|[^-\s])--(?=[^-\s]|$)/gm,"$1\u2013")),"link_open"===n.type&&"auto"===n.info&&i--,"link_close"===n.type&&"auto"===n.info&&i++}e.exports=function(e){var n;if(e.md.options.typographer)for(n=e.tokens.length-1;n>=0;n--)"inline"===e.tokens[n].type&&(r.test(e.tokens[n].content)&&a(e.tokens[n].children),t.test(e.tokens[n].content)&&s(e.tokens[n].children))}},65260:function(e,t,r){"use strict";var n=r(49963).isWhiteSpace,i=r(49963).isPunctChar,o=r(49963).isMdAsciiPunct,a=/['"]/,s=/['"]/g;function c(e,t,r){return e.slice(0,t)+r+e.slice(t+1)}function u(e,t){var r,a,u,l,p,d,f,h,v,m,_,T,g,y,E,b,A,S,C,I,O;for(C=[],r=0;r=0&&!(C[A].level<=f);A--);if(C.length=A+1,"text"===a.type){p=0,d=(u=a.content).length;e:for(;p=0)v=u.charCodeAt(l.index-1);else for(A=r-1;A>=0&&("softbreak"!==e[A].type&&"hardbreak"!==e[A].type);A--)if(e[A].content){v=e[A].content.charCodeAt(e[A].content.length-1);break}if(m=32,p=48&&v<=57&&(b=E=!1),E&&b&&(E=_,b=T),E||b){if(b)for(A=C.length-1;A>=0&&(h=C[A],!(C[A].level=0;t--)"inline"===e.tokens[t].type&&a.test(e.tokens[t].content)&&u(e.tokens[t].children,e)}},1839:function(e,t,r){"use strict";var n=r(5099);function i(e,t,r){this.src=e,this.env=r,this.tokens=[],this.inlineMode=!1,this.md=t}i.prototype.Token=n,e.exports=i},16016:function(e){"use strict";e.exports=function(e){var t,r,n,i,o,a,s=e.tokens;for(t=0,r=s.length;t\x00-\x20]*)$/;e.exports=function(e,n){var i,o,a,s,c,u,l=e.pos;if(60!==e.src.charCodeAt(l))return!1;for(c=e.pos,u=e.posMax;;){if(++l>=u)return!1;if(60===(s=e.src.charCodeAt(l)))return!1;if(62===s)break}return i=e.src.slice(c+1,l),r.test(i)?(o=e.md.normalizeLink(i),!!e.md.validateLink(o)&&(n||((a=e.push("link_open","a",1)).attrs=[["href",o]],a.markup="autolink",a.info="auto",(a=e.push("text","",0)).content=e.md.normalizeLinkText(i),(a=e.push("link_close","a",-1)).markup="autolink",a.info="auto"),e.pos+=i.length+2,!0)):!!t.test(i)&&(o=e.md.normalizeLink("mailto:"+i),!!e.md.validateLink(o)&&(n||((a=e.push("link_open","a",1)).attrs=[["href",o]],a.markup="autolink",a.info="auto",(a=e.push("text","",0)).content=e.md.normalizeLinkText(i),(a=e.push("link_close","a",-1)).markup="autolink",a.info="auto"),e.pos+=i.length+2,!0))}},26757:function(e){"use strict";e.exports=function(e,t){var r,n,i,o,a,s,c,u,l=e.pos;if(96!==e.src.charCodeAt(l))return!1;for(r=l,l++,n=e.posMax;lo;r-=f[r]+1)if((i=e[r]).marker===n.marker&&i.open&&i.end<0&&(s=!1,(i.close||n.open)&&(i.length+n.length)%3==0&&(i.length%3==0&&n.length%3==0||(s=!0)),!s)){c=r>0&&!e[r-1].open?f[r-1]+1:0,f[t]=t-r+c,f[r]=c,n.open=!1,i.end=t,i.close=!1,a=-1,d=-2;break}-1!==a&&(u[n.marker][(n.open?3:0)+(n.length||0)%3]=a)}}}e.exports=function(e){var r,n=e.tokens_meta,i=e.tokens_meta.length;for(t(e.delimiters),r=0;r=0;r--)95!==(n=t[r]).marker&&42!==n.marker||-1!==n.end&&(i=t[n.end],s=r>0&&t[r-1].end===n.end+1&&t[r-1].marker===n.marker&&t[r-1].token===n.token-1&&t[n.end+1].token===i.token+1,a=String.fromCharCode(n.marker),(o=e.tokens[n.token]).type=s?"strong_open":"em_open",o.tag=s?"strong":"em",o.nesting=1,o.markup=s?a+a:a,o.content="",(o=e.tokens[i.token]).type=s?"strong_close":"em_close",o.tag=s?"strong":"em",o.nesting=-1,o.markup=s?a+a:a,o.content="",s&&(e.tokens[t[r-1].token].content="",e.tokens[t[n.end+1].token].content="",r--))}e.exports.q=function(e,t){var r,n,i=e.pos,o=e.src.charCodeAt(i);if(t)return!1;if(95!==o&&42!==o)return!1;for(n=e.scanDelims(e.pos,42===o),r=0;r=d)return!1;if(35===e.src.charCodeAt(p+1)){if(u=e.src.slice(p).match(s))return t||(r="x"===u[1][0].toLowerCase()?parseInt(u[1].slice(1),16):parseInt(u[1],10),(l=e.push("text_special","",0)).content=o(r)?a(r):a(65533),l.markup=u[0],l.info="entity"),e.pos+=u[0].length,!0}else if((u=e.src.slice(p).match(c))&&i(n,u[1]))return t||((l=e.push("text_special","",0)).content=n[u[1]],l.markup=u[0],l.info="entity"),e.pos+=u[0].length,!0;return!1}},21231:function(e,t,r){"use strict";for(var n=r(49963).isSpace,i=[],o=0;o<256;o++)i.push(0);"\\!\"#$%&'()*+,./:;<=>?@[]^_`{|}~-".split("").forEach((function(e){i[e.charCodeAt(0)]=1})),e.exports=function(e,t){var r,o,a,s,c,u=e.pos,l=e.posMax;if(92!==e.src.charCodeAt(u))return!1;if(++u>=l)return!1;if(10===(r=e.src.charCodeAt(u))){for(t||e.push("hardbreak","br",0),u++;u=55296&&r<=56319&&u+1=56320&&o<=57343&&(s+=e.src[u+1],u++),a="\\"+s,t||(c=e.push("text_special","",0),r<256&&0!==i[r]?c.content=s:c.content=a,c.markup=a,c.info="escape"),e.pos=u+1,!0}},69758:function(e){"use strict";e.exports=function(e){var t,r,n=0,i=e.tokens,o=e.tokens.length;for(t=r=0;t0&&n++,"text"===i[t].type&&t+1=o)&&(!(33!==(r=e.src.charCodeAt(c+1))&&63!==r&&47!==r&&!function(e){var t=32|e;return t>=97&&t<=122}(r))&&(!!(i=e.src.slice(c).match(n))&&(t||((a=e.push("html_inline","",0)).content=i[0],s=a.content,/^\s]/i.test(s)&&e.linkLevel++,function(e){return/^<\/a\s*>/i.test(e)}(a.content)&&e.linkLevel--),e.pos+=i[0].length,!0))))}},23707:function(e,t,r){"use strict";var n=r(49963).normalizeReference,i=r(49963).isSpace;e.exports=function(e,t){var r,o,a,s,c,u,l,p,d,f,h,v,m,_="",T=e.pos,g=e.posMax;if(33!==e.src.charCodeAt(e.pos))return!1;if(91!==e.src.charCodeAt(e.pos+1))return!1;if(u=e.pos+2,(c=e.md.helpers.parseLinkLabel(e,e.pos+1,!1))<0)return!1;if((l=c+1)=g)return!1;for(m=l,(d=e.md.helpers.parseLinkDestination(e.src,l,e.posMax)).ok&&(_=e.md.normalizeLink(d.str),e.md.validateLink(_)?l=d.pos:_=""),m=l;l=g||41!==e.src.charCodeAt(l))return e.pos=T,!1;l++}else{if(void 0===e.env.references)return!1;if(l=0?s=e.src.slice(m,l++):l=c+1):l=c+1,s||(s=e.src.slice(u,c)),!(p=e.env.references[n(s)]))return e.pos=T,!1;_=p.href,f=p.title}return t||(a=e.src.slice(u,c),e.md.inline.parse(a,e.md,e.env,v=[]),(h=e.push("image","img",0)).attrs=r=[["src",_],["alt",""]],h.children=v,h.content=a,f&&r.push(["title",f])),e.pos=l,e.posMax=g,!0}},56552:function(e,t,r){"use strict";var n=r(49963).normalizeReference,i=r(49963).isSpace;e.exports=function(e,t){var r,o,a,s,c,u,l,p,d="",f="",h=e.pos,v=e.posMax,m=e.pos,_=!0;if(91!==e.src.charCodeAt(e.pos))return!1;if(c=e.pos+1,(s=e.md.helpers.parseLinkLabel(e,e.pos,!0))<0)return!1;if((u=s+1)=v)return!1;if(m=u,(l=e.md.helpers.parseLinkDestination(e.src,u,e.posMax)).ok){for(d=e.md.normalizeLink(l.str),e.md.validateLink(d)?u=l.pos:d="",m=u;u=v||41!==e.src.charCodeAt(u))&&(_=!0),u++}if(_){if(void 0===e.env.references)return!1;if(u=0?a=e.src.slice(m,u++):u=s+1):u=s+1,a||(a=e.src.slice(c,s)),!(p=e.env.references[n(a)]))return e.pos=h,!1;d=p.href,f=p.title}return t||(e.pos=c,e.posMax=s,e.push("link_open","a",1).attrs=r=[["href",d]],f&&r.push(["title",f]),e.linkLevel++,e.md.inline.tokenize(e),e.linkLevel--,e.push("link_close","a",-1)),e.pos=u,e.posMax=v,!0}},84024:function(e){"use strict";var t=/(?:^|[^a-z0-9.+-])([a-z][a-z0-9.+-]*)$/i;e.exports=function(e,r){var n,i,o,a,s,c,u;return!!e.md.options.linkify&&(!(e.linkLevel>0)&&(!((n=e.pos)+3>e.posMax)&&(58===e.src.charCodeAt(n)&&(47===e.src.charCodeAt(n+1)&&(47===e.src.charCodeAt(n+2)&&(!!(i=e.pending.match(t))&&(o=i[1],!!(a=e.md.linkify.matchAtStart(e.src.slice(n-o.length)))&&(!((s=a.url).length<=o.length)&&(s=s.replace(/\*+$/,""),c=e.md.normalizeLink(s),!!e.md.validateLink(c)&&(r||(e.pending=e.pending.slice(0,-o.length),(u=e.push("link_open","a",1)).attrs=[["href",c]],u.markup="linkify",u.info="auto",(u=e.push("text","",0)).content=e.md.normalizeLinkText(s),(u=e.push("link_close","a",-1)).markup="linkify",u.info="auto"),e.pos+=s.length-o.length,!0))))))))))}},22534:function(e,t,r){"use strict";var n=r(49963).isSpace;e.exports=function(e,t){var r,i,o,a=e.pos;if(10!==e.src.charCodeAt(a))return!1;if(r=e.pending.length-1,i=e.posMax,!t)if(r>=0&&32===e.pending.charCodeAt(r))if(r>=1&&32===e.pending.charCodeAt(r-1)){for(o=r-1;o>=1&&32===e.pending.charCodeAt(o-1);)o--;e.pending=e.pending.slice(0,o),e.push("hardbreak","br",0)}else e.pending=e.pending.slice(0,-1),e.push("softbreak","br",0);else e.push("softbreak","br",0);for(a++;a0&&(this.level++,this._prev_delimiters.push(this.delimiters),this.delimiters=[],o={delimiters:this.delimiters}),this.pendingLevel=this.level,this.tokens.push(i),this.tokens_meta.push(o),i},s.prototype.scanDelims=function(e,t){var r,n,s,c,u,l,p,d,f,h=e,v=!0,m=!0,_=this.posMax,T=this.src.charCodeAt(e);for(r=e>0?this.src.charCodeAt(e-1):32;h<_&&this.src.charCodeAt(h)===T;)h++;return s=h-e,n=h<_?this.src.charCodeAt(h):32,p=a(r)||o(String.fromCharCode(r)),f=a(n)||o(String.fromCharCode(n)),l=i(r),(d=i(n))?v=!1:f&&(l||p||(v=!1)),l?m=!1:p&&(d||f||(m=!1)),t?(c=v,u=m):(c=v&&(!m||p),u=m&&(!v||f)),{can_open:c,can_close:u,length:s}},s.prototype.Token=n,e.exports=s},97141:function(e){"use strict";function t(e,t){var r,n,i,o,a,s=[],c=t.length;for(r=0;r=0&&(r=this.attrs[t][1]),r},t.prototype.attrJoin=function(e,t){var r=this.attrIndex(e);r<0?this.attrPush([e,t]):this.attrs[r][1]=this.attrs[r][1]+" "+t},e.exports=t},95581:function(e){var t="undefined"!=typeof window?window:self;e.exports=t.crypto||t.msCrypto},67162:function(e,t,r){e.exports=function(e){if(!e)return Math.random;var t=Math.pow(2,32),r=new Uint32Array(1);return function(){return e.getRandomValues(r)[0]/t}}(r(95581))},23527:function(e){"use strict";var t={};function r(e,n){var i;return"string"!=typeof n&&(n=r.defaultChars),i=function(e){var r,n,i=t[e];if(i)return i;for(i=t[e]=[],r=0;r<128;r++)n=String.fromCharCode(r),i.push(n);for(r=0;r=55296&&c<=57343?"\ufffd\ufffd\ufffd":String.fromCharCode(c),t+=6):240==(248&n)&&t+91114111?u+="\ufffd\ufffd\ufffd\ufffd":(c-=65536,u+=String.fromCharCode(55296+(c>>10),56320+(1023&c))),t+=9):u+="\ufffd";return u}))}r.defaultChars=";/?:@&=+$,#",r.componentChars="",e.exports=r},43331:function(e){"use strict";var t={};function r(e,n,i){var o,a,s,c,u,l="";for("string"!=typeof n&&(i=n,n=r.defaultChars),void 0===i&&(i=!0),u=function(e){var r,n,i=t[e];if(i)return i;for(i=t[e]=[],r=0;r<128;r++)n=String.fromCharCode(r),/^[0-9a-z]$/i.test(n)?i.push(n):i.push("%"+("0"+r.toString(16).toUpperCase()).slice(-2));for(r=0;r=55296&&s<=57343){if(s>=55296&&s<=56319&&o+1=56320&&c<=57343){l+=encodeURIComponent(e[o]+e[o+1]),o++;continue}l+="%EF%BF%BD"}else l+=encodeURIComponent(e[o]);return l}r.defaultChars=";/?:@&=+$,-_.!~*'()#",r.componentChars="-_.!~*'()",e.exports=r},86998:function(e){"use strict";e.exports=function(e){var t="";return t+=e.protocol||"",t+=e.slashes?"//":"",t+=e.auth?e.auth+"@":"",e.hostname&&-1!==e.hostname.indexOf(":")?t+="["+e.hostname+"]":t+=e.hostname||"",t+=e.port?":"+e.port:"",t+=e.pathname||"",t+=e.search||"",t+=e.hash||""}},86781:function(e,t,r){"use strict";e.exports.encode=r(43331),e.exports.decode=r(23527),e.exports.format=r(86998),e.exports.parse=r(2613)},2613:function(e){"use strict";function t(){this.protocol=null,this.slashes=null,this.auth=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.pathname=null}var r=/^([a-z0-9.+-]+:)/i,n=/:[0-9]*$/,i=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,o=["{","}","|","\\","^","`"].concat(["<",">",'"',"`"," ","\r","\n","\t"]),a=["'"].concat(o),s=["%","/","?",";","#"].concat(a),c=["/","?","#"],u=/^[+a-z0-9A-Z_-]{0,63}$/,l=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,p={javascript:!0,"javascript:":!0},d={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0};t.prototype.parse=function(e,t){var n,o,a,f,h,v=e;if(v=v.trim(),!t&&1===e.split("#").length){var m=i.exec(v);if(m)return this.pathname=m[1],m[2]&&(this.search=m[2]),this}var _=r.exec(v);if(_&&(a=(_=_[0]).toLowerCase(),this.protocol=_,v=v.substr(_.length)),(t||_||v.match(/^\/\/[^@\/]+@[^@\/]+/))&&(!(h="//"===v.substr(0,2))||_&&p[_]||(v=v.substr(2),this.slashes=!0)),!p[_]&&(h||_&&!d[_])){var T,g,y=-1;for(n=0;n127?C+="x":C+=S[I];if(!C.match(u)){var w=A.slice(0,n),R=A.slice(n+1),P=S.match(l);P&&(w.push(P[1]),R.unshift(P[2])),R.length&&(v=R.join(".")+v),this.hostname=w.join(".");break}}}}this.hostname.length>255&&(this.hostname=""),b&&(this.hostname=this.hostname.substr(1,this.hostname.length-2))}var N=v.indexOf("#");-1!==N&&(this.hash=v.substr(N),v=v.slice(0,N));var x=v.indexOf("?");return-1!==x&&(this.search=v.substr(x),v=v.slice(0,x)),v&&(this.pathname=v),d[a]&&this.hostname&&!this.pathname&&(this.pathname=""),this},t.prototype.parseHost=function(e){var t=n.exec(e);t&&(":"!==(t=t[0])&&(this.port=t.substr(1)),e=e.substr(0,e.length-t.length)),e&&(this.hostname=e)},e.exports=function(e,r){if(e&&e instanceof t)return e;var n=new t;return n.parse(e,r),n}},99738:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||t.hasOwnProperty(r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0});var o=r(84378);r(20868).Events.instance.attachListener(new o.ConsoleLoggingListener),i(r(70881),t)},6998:function(e,t,r){"use strict";var n=this&&this.__assign||function(){return n=Object.assign||function(e){for(var t,r=1,n=arguments.length;r0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0){t.privProxyInfo=this.privProxyInfo}return t},e.GetProxyAgent=function(e){var t={host:e.HostName,port:e.Port};return e.UserName?t.headers={"Proxy-Authentication":"Basic "+new Buffer(e.UserName+":"+(void 0===e.Password)?"":e.Password).toString("base64")}:t.headers={},t.headers.requestOCSP="true",new m.default(t)},e.OCSPCheck=function(t,r){return s(this,void 0,void 0,(function(){var n,i,o,a,u,l=this;return c(this,(function(p){switch(p.label){case 0:return o=!1,[4,t];case 1:return(a=p.sent()).cork(),u=a,[2,new Promise((function(t,p){a.on("OCSPResponse",(function(e){e&&(l.onEvent(new f.OCSPStapleReceivedEvent),i=e)})),a.on("error",(function(e){o||(o=!0,a.destroy(),p(e))})),u.on("secure",(function(){return s(l,void 0,void 0,(function(){var s,l,f,h,v;return c(this,(function(c){switch(c.label){case 0:s=u.getPeerCertificate(!0),c.label=1;case 1:return c.trys.push([1,6,,7]),[4,this.GetIssuer(s)];case 2:return l=c.sent(),n=d.request.generate(s.raw,l.raw),f=n.id.toString("hex"),i?[3,4]:[4,e.GetResponseFromCache(f,n,r)];case 3:h=c.sent(),i=h,c.label=4;case 4:return[4,this.VerifyOCSPResponse(i,n,r)];case 5:return c.sent(),a.uncork(),o=!0,t(a),[3,7];case 6:return v=c.sent(),a.destroy(),o=!0,p(v),[3,7];case 7:return[2]}}))}))}))}))]}}))}))},e.GetIssuer=function(e){return e.issuerCertificate?Promise.resolve(e.issuerCertificate):new Promise((function(t,r){new d.Agent({}).fetchIssuer(e,null,(function(e,n){e?r(e):t(n)}))}))},e.GetResponseFromCache=function(t,r,n){return s(this,void 0,void 0,(function(){var i,o,a,s,u,l,p,h=this;return c(this,(function(c){switch(c.label){case 0:if((i=e.privMemCache[t])&&this.onEvent(new f.OCSPMemoryCacheHitEvent(t)),i)return[3,4];c.label=1;case 1:return c.trys.push([1,3,,4]),[4,e.privDiskCache.get(t)];case 2:return(o=c.sent()).isCached&&(e.onEvent(new f.OCSPDiskCacheHitEvent(t)),e.StoreMemoryCacheEntry(t,o.value),i=o.value),[3,4];case 3:return c.sent(),i=null,[3,4];case 4:if(!i)return[2,i];try{if(a=d.utils.parseResponse(i),(s=a.value.tbsResponseData).responses.length<1)return this.onEvent(new f.OCSPCacheFetchErrorEvent(t,"Not enough data in cached response")),[2];u=s.responses[0].thisUpdate,(l=s.responses[0].nextUpdate)=t.privLogLevelFilter){var r=t.toString(e);switch(e.eventType){case n.EventType.Debug:console.debug(r);break;case n.EventType.Info:console.info(r);break;case n.EventType.Warning:console.warn(r);break;case n.EventType.Error:console.error(r);break;default:console.log(r)}}},this.toString=function(e){var t=[""+e.EventTime,""+e.Name];for(var r in e)if(r&&e.hasOwnProperty(r)&&"eventTime"!==r&&"eventType"!==r&&"eventId"!==r&&"name"!==r&&"constructor"!==r){var n=e[r],i="";null!=n&&(i="number"==typeof n||"string"==typeof n?n.toString():JSON.stringify(n)),t.push(r+": "+i)}return t.join(" | ")},this.privLogLevelFilter=e};t.ConsoleLoggingListener=i},84378:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||t.hasOwnProperty(r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(30403),t),i(r(45956),t),i(r(89475),t),i(r(77968),t),i(r(28343),t),i(r(34146),t),i(r(81120),t),i(r(36106),t),i(r(28361),t),i(r(47689),t),i(r(93768),t)},77968:function(e,t,r){"use strict";var n=this&&this.__awaiter||function(e,t,r,n){return new(r||(r=Promise))((function(i,o){function a(e){try{c(n.next(e))}catch(e){o(e)}}function s(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?i(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(a,s)}c((n=n.apply(e,t||[])).next())}))},i=this&&this.__generator||function(e,t){var r,n,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function s(o){return function(s){return function(o){if(r)throw new TypeError("Generator is already executing.");for(;a;)try{if(r=1,n&&(i=2&o[0]?n.return:o[0]?n.throw||((i=n.return)&&i.call(n),0):n.next)&&!(i=i.call(n,o[1])).done)return i;switch(n=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return a.label++,{value:o[1],done:!1};case 5:a.label++,n=o[1],o=[0];continue;case 7:o=a.ops.pop(),a.trys.pop();continue;default:if(!(i=a.trys,(i=i.length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]504)return void r.reject("Invalid WAV header in file, data block was not found");e.privHeaderEnd=l+8,r.resolve(s.AudioStreamFormat.getWaveFormatPCM(c,u,a))}else r.reject("Invalid WAV header in file, WAVEfmt was not found");else r.reject("Invalid WAV header in file, RIFF was not found")};if("undefined"!=typeof window&&"undefined"!=typeof Blob&&t instanceof Blob){var i=new FileReader;i.onload=function(e){var t=e.target.result;n(t)},i.readAsArrayBuffer(t)}else{var o=t;n(o.buffer.slice(o.byteOffset,o.byteOffset+o.byteLength))}return r.promise},e.prototype.upload=function(e){return n(this,void 0,void 0,(function(){var t,r,n,o,s,c,u,l,p=this;return i(this,(function(i){switch(i.label){case 0:t=function(t){var r="Error occurred while processing '"+p.privFilename+"'. "+t;throw p.onEvent(new a.AudioStreamNodeErrorEvent(p.privId,e,r)),new Error(r)},i.label=1;case 1:return i.trys.push([1,4,,5]),[4,this.turnOn()];case 2:return i.sent(),[4,this.privAudioFormatPromise];case 3:return r=i.sent(),n=new a.ChunkedArrayBufferStream(r.avgBytesPerSec/10,e),this.privStreams[e]=n,o=this.privSource.slice(this.privHeaderEnd),s=function(e){n.isClosed||(n.writeStreamChunk({buffer:e,isEnd:!1,timeReceived:Date.now()}),n.close())},"undefined"!=typeof window&&"undefined"!=typeof Blob&&o instanceof Blob?((c=new FileReader).onerror=function(e){t(e.toString())},c.onload=function(e){var t=e.target.result;s(t)},c.readAsArrayBuffer(o)):s((u=o).buffer.slice(u.byteOffset,u.byteOffset+u.byteLength)),[2,n];case 4:return l=i.sent(),t(l),[3,5];case 5:return[2]}}))}))},e}();t.FileAudioSource=c},45956:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0})},89475:function(e,t,r){"use strict";var n=this&&this.__awaiter||function(e,t,r,n){return new(r||(r=Promise))((function(i,o){function a(e){try{c(n.next(e))}catch(e){o(e)}}function s(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?i(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(a,s)}c((n=n.apply(e,t||[])).next())}))},i=this&&this.__generator||function(e,t){var r,n,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function s(o){return function(s){return function(o){if(r)throw new TypeError("Generator is already executing.");for(;a;)try{if(r=1,n&&(i=2&o[0]?n.return:o[0]?n.throw||((i=n.return)&&i.call(n),0):n.next)&&!(i=i.call(n,o[1])).done)return i;switch(n=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return a.label++,{value:o[1],done:!1};case 5:a.label++,n=o[1],o=[0];continue;case 7:o=a.ops.pop(),a.trys.pop();continue;default:if(!(i=a.trys,(i=i.length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]=32e3;)e<<=1,r>>=1;return t.createScriptProcessor(e,1,1)}}(),a=new n.RiffPcmEncoder(t.sampleRate,16e3);o.onaudioprocess=function(e){var t=e.inputBuffer.getChannelData(0);if(i&&!i.isClosed){var r=a.encode(t);r&&(i.writeStreamChunk({buffer:r,isEnd:!1,timeReceived:Date.now()}),!1)}};var s=t.createMediaStreamSource(r);e.privSpeechProcessorScript&&t.audioWorklet?t.audioWorklet.addModule(e.privSpeechProcessorScript).then((function(){var n=new AudioWorkletNode(t,"speech-processor");n.port.onmessage=function(e){var t=e.data;if(i&&!i.isClosed){var r=a.encode(t);r&&(i.writeStreamChunk({buffer:r,isEnd:!1,timeReceived:Date.now()}),!1)}},s.connect(n),n.connect(t.destination),e.privMediaResources={scriptProcessorNode:n,source:s,stream:r}})).catch((function(){s.connect(o),o.connect(t.destination),e.privMediaResources={scriptProcessorNode:o,source:s,stream:r}})):(s.connect(o),o.connect(t.destination),e.privMediaResources={scriptProcessorNode:o,source:s,stream:r})},this.releaseMediaResources=function(t){e.privMediaResources&&(e.privMediaResources.scriptProcessorNode&&(e.privMediaResources.scriptProcessorNode.disconnect(t.destination),e.privMediaResources.scriptProcessorNode=null),e.privMediaResources.source&&(e.privMediaResources.source.disconnect(),e.privMediaResources.stream.getTracks().forEach((function(e){return e.stop()})),e.privMediaResources.source=null))}}return e.prototype.setWorkletUrl=function(e){this.privSpeechProcessorScript=e},e}();t.PcmRecorder=i},28361:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ProxyInfo=void 0;var n=r(70881),i=function(){function e(e,t,r,n){this.privProxyHostName=e,this.privProxyPort=t,this.privProxyUserName=r,this.privProxyPassword=n}return e.fromParameters=function(t){return new e(t.getProperty(n.PropertyId.SpeechServiceConnection_ProxyHostName),parseInt(t.getProperty(n.PropertyId.SpeechServiceConnection_ProxyPort),10),t.getProperty(n.PropertyId.SpeechServiceConnection_ProxyUserName),t.getProperty(n.PropertyId.SpeechServiceConnection_ProxyPassword))},e.fromRecognizerConfig=function(e){return this.fromParameters(e.parameters)},Object.defineProperty(e.prototype,"HostName",{get:function(){return this.privProxyHostName},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"Port",{get:function(){return this.privProxyPort},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"UserName",{get:function(){return this.privProxyUserName},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"Password",{get:function(){return this.privProxyPassword},enumerable:!1,configurable:!0}),e}();t.ProxyInfo=i},36106:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ReplayableAudioNode=void 0;var r=function(){function e(e,t){var r=this;this.privBuffers=[],this.privReplayOffset=0,this.privLastShrinkOffset=0,this.privBufferStartOffset=0,this.privBufferSerial=0,this.privBufferedBytes=0,this.privReplay=!1,this.privLastChunkAcquiredTime=0,this.id=function(){return r.privAudioNode.id()},this.privAudioNode=e,this.privBytesPerSecond=t}return e.prototype.read=function(){var e=this;if(this.privReplay&&0!==this.privBuffers.length){var t=this.privReplayOffset-this.privBufferStartOffset,r=Math.round(t*this.privBytesPerSecond*1e-7);0!=r%2&&r++;for(var i=0;i=this.privBuffers[i].chunk.buffer.byteLength;)r-=this.privBuffers[i++].chunk.buffer.byteLength;if(i=this.privBuffers[n].chunk.buffer.byteLength;)r-=this.privBuffers[n++].chunk.buffer.byteLength;this.privBufferStartOffset=Math.round(e-r/this.privBytesPerSecond*1e7),this.privBuffers=this.privBuffers.slice(n)}},e.prototype.findTimeAtOffset=function(e){if(e=i&&e<=o)return n.chunk.timeReceived}return 0},e}();t.ReplayableAudioNode=r;var n=function(e,t,r){this.chunk=e,this.serial=t,this.byteOffset=r}},93768:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.RestConfigBase=void 0;var r=function(){function e(){}return Object.defineProperty(e,"requestOptions",{get:function(){return e.privDefaultRequestOptions},enumerable:!1,configurable:!0}),Object.defineProperty(e,"configParams",{get:function(){return e.privDefaultParams},enumerable:!1,configurable:!0}),Object.defineProperty(e,"restErrors",{get:function(){return e.privRestErrors},enumerable:!1,configurable:!0}),e.privDefaultRequestOptions={headers:{Accept:"application/json"},ignoreCache:!1,timeout:1e4},e.privRestErrors={authInvalidSubscriptionKey:"You must specify either an authentication token to use, or a Cognitive Speech subscription key.",authInvalidSubscriptionRegion:"You must specify the Cognitive Speech region to use.",invalidArgs:"Required input not found: {arg}.",invalidCreateJoinConversationResponse:"Creating/Joining conversation failed with HTTP {status}.",invalidParticipantRequest:"The requested participant was not found.",permissionDeniedConnect:"Required credentials not found.",permissionDeniedConversation:"Invalid operation: only the host can {command} the conversation.",permissionDeniedParticipant:"Invalid operation: only the host can {command} a participant.",permissionDeniedSend:"Invalid operation: the conversation is not in a connected state.",permissionDeniedStart:"Invalid operation: there is already an active conversation."},e.privDefaultParams={apiVersion:"api-version",authorization:"Authorization",clientAppId:"X-ClientAppId",contentTypeKey:"Content-Type",correlationId:"X-CorrelationId",languageCode:"language",nickname:"nickname",profanity:"profanity",requestId:"X-RequestId",roomId:"roomid",sessionToken:"token",subscriptionKey:"Ocp-Apim-Subscription-Key",subscriptionRegion:"Ocp-Apim-Subscription-Region",token:"X-CapitoToken"},e}();t.RestConfigBase=r},47689:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),o=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.hasOwnProperty.call(e,r)&&n(t,e,r);return i(t,e),t};Object.defineProperty(t,"__esModule",{value:!0}),t.RestMessageAdapter=t.RestRequestType=void 0;var a,s=r(20868),c=o(r(89713));!function(e){e.Get="get",e.Post="post",e.Delete="delete",e.File="file"}(a=t.RestRequestType||(t.RestRequestType={}));var u=function(){function e(e,t){if(!e)throw new s.ArgumentNullError("configParams");this.privHeaders=e.headers,this.privTimeout=e.timeout,this.privIgnoreCache=e.ignoreCache}return e.prototype.setHeaders=function(e,t){this.privHeaders[e]=t},e.prototype.request=function(e,t,r,n,i){var o=this;void 0===r&&(r={}),void 0===n&&(n=null),void 0===i&&(i=null);var u,l=new s.Deferred;u="undefined"==typeof XMLHttpRequest?new c.XMLHttpRequest:new XMLHttpRequest;var p=e===a.File?"post":e;return u.open(p,this.withQuery(t,r),!0),this.privHeaders&&Object.keys(this.privHeaders).forEach((function(e){return u.setRequestHeader(e,o.privHeaders[e])})),this.privIgnoreCache&&u.setRequestHeader("Cache-Control","no-cache"),u.timeout=this.privTimeout,u.onload=function(){l.resolve(o.parseXHRResult(u))},u.onerror=function(){l.resolve(o.errorResponse(u,"Failed to make request."))},u.ontimeout=function(){l.resolve(o.errorResponse(u,"Request took longer than expected."))},e===a.File&&i?(u.setRequestHeader("Content-Type","multipart/form-data"),u.send(i)):e===a.Post&&n?(u.setRequestHeader("Content-Type","application/json"),u.send(JSON.stringify(n))):u.send(),l.promise},e.prototype.parseXHRResult=function(e){return{data:e.responseText,headers:e.getAllResponseHeaders(),json:function(){return JSON.parse(e.responseText)},ok:e.status>=200&&e.status<300,status:e.status,statusText:e.statusText}},e.prototype.errorResponse=function(e,t){return void 0===t&&(t=null),{data:t||e.statusText,headers:e.getAllResponseHeaders(),json:function(){return JSON.parse(t||'"'+e.statusText+'"')},ok:!1,status:e.status,statusText:e.statusText}},e.prototype.withQuery=function(e,t){void 0===t&&(t={});var r=this.queryParams(t);return r?e+(-1===e.indexOf("?")?"?":"&")+r:e},e.prototype.queryParams=function(e){return void 0===e&&(e={}),Object.keys(e).map((function(t){return encodeURIComponent(t)+"="+encodeURIComponent(e[t])})).join("&")},e}();t.RestMessageAdapter=u},34146:function(e,t,r){"use strict";var n=this&&this.__awaiter||function(e,t,r,n){return new(r||(r=Promise))((function(i,o){function a(e){try{c(n.next(e))}catch(e){o(e)}}function s(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?i(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(a,s)}c((n=n.apply(e,t||[])).next())}))},i=this&&this.__generator||function(e,t){var r,n,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function s(o){return function(s){return function(o){if(r)throw new TypeError("Generator is already executing.");for(;a;)try{if(r=1,n&&(i=2&o[0]?n.return:o[0]?n.throw||((i=n.return)&&i.call(n),0):n.next)&&!(i=i.call(n,o[1])).done)return i;switch(n=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return a.label++,{value:o[1],done:!1};case 5:a.label++,n=o[1],o=[0];continue;case 7:o=a.ops.pop(),a.trys.pop();continue;default:if(!(i=a.trys,(i=i.length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0?o.textBody:"{ Offset: 0 }",h=f.SpeechDetected.fromJSON(d),this.privRequestSession.onServiceRecognized(h.Offset+this.privRequestSession.currentTurnAudioOffset),m=new p.RecognitionEventArgs(h.Offset+this.privRequestSession.currentTurnAudioOffset,this.privRequestSession.sessionId),this.privRecognizer.speechEndDetected&&this.privRecognizer.speechEndDetected(this.privRecognizer,m),[3,11];case 6:return _=o.requestId.toUpperCase(),T=this.privRequestSession.requestId.toUpperCase(),_===T?[3,7]:(this.privTurnStateManager.CompleteTurn(_),[3,9]);case 7:return g=new p.SessionEventArgs(this.privRequestSession.sessionId),[4,this.privRequestSession.onServiceTurnEndResponse(!1)];case 8:if(a.sent(),this.privRecognizerConfig.isContinuousRecognition&&!this.privRequestSession.isSpeechEnded&&this.privRequestSession.isRecognizing||this.privRecognizer.sessionStopped&&this.privRecognizer.sessionStopped(this.privRecognizer,g),this.privSuccessCallback&&this.privLastResult){try{this.privSuccessCallback(this.privLastResult),this.privLastResult=null}catch(e){this.privErrorCallback&&this.privErrorCallback(e)}this.privSuccessCallback=void 0,this.privErrorCallback=void 0}a.label=9;case 9:return[3,11];case 10:this.processTypeSpecificMessages(o)||this.serviceEvents&&this.serviceEvents.onEvent(new u.ServiceEvent(o.path.toLowerCase(),o.textBody)),a.label=11;case 11:return[2,r()];case 12:return a.sent(),this.terminateMessageLoop=!0,t.resolve(),[3,13];case 13:return[2]}}))}))};return r().catch((function(e){u.Events.instance.onEvent(new u.BackgroundEvent(e))})),t.promise},t.prototype.startMessageLoop=function(){return o(this,void 0,void 0,(function(){var e;return a(this,(function(t){switch(t.label){case 0:this.terminateMessageLoop=!1,t.label=1;case 1:return t.trys.push([1,3,,5]),[4,this.receiveDialogMessageOverride()];case 2:return t.sent(),[3,5];case 3:return e=t.sent(),[4,this.cancelRecognition(this.privRequestSession.sessionId,this.privRequestSession.requestId,p.CancellationReason.Error,p.CancellationErrorCode.RuntimeError,e)];case 4:return t.sent(),[3,5];case 5:return[2,Promise.resolve()]}}))}))},t.prototype.configConnection=function(e){return o(this,void 0,void 0,(function(){return a(this,(function(t){switch(t.label){case 0:return this.terminateMessageLoop?(this.terminateMessageLoop=!1,[2,Promise.reject("Connection to service terminated.")]):[4,this.sendSpeechServiceConfig(e,this.privRequestSession,this.privRecognizerConfig.SpeechServiceConfig.serialize())];case 1:return t.sent(),[4,this.sendAgentConfig(e)];case 2:return t.sent(),[2,e]}}))}))},t.prototype.sendPreAudioMessages=function(){return o(this,void 0,void 0,(function(){var e;return a(this,(function(t){switch(t.label){case 0:return[4,this.fetchConnection()];case 1:return e=t.sent(),this.addKeywordContextData(),[4,this.sendSpeechContext(e)];case 2:return t.sent(),[4,this.sendAgentContext(e)];case 3:return t.sent(),[4,this.sendWaveHeader(e)];case 4:return t.sent(),[2]}}))}))},t.prototype.fireEventForResult=function(e,t){var r=f.EnumTranslation.implTranslateRecognitionResult(e.RecognitionStatus),n=e.Offset+this.privRequestSession.currentTurnAudioOffset,i=new p.SpeechRecognitionResult(this.privRequestSession.requestId,r,e.DisplayText,e.Duration,n,e.Language,e.LanguageDetectionConfidence,void 0,void 0,JSON.stringify(e),t);return new p.SpeechRecognitionEventArgs(i,n,this.privRequestSession.sessionId)},t.prototype.onEvent=function(e){this.privEvents.onEvent(e),u.Events.instance.onEvent(e)},t.prototype.addKeywordContextData=function(){var e=this.privRecognizerConfig.parameters.getProperty("SPEECH-KeywordsToDetect");if(void 0!==e){for(var t=this.privRecognizerConfig.parameters.getProperty("SPEECH-KeywordsToDetect-Offsets"),r=this.privRecognizerConfig.parameters.getProperty("SPEECH-KeywordsToDetect-Durations"),n=e.split(";"),i=void 0===t?[]:t.split(";"),o=void 0===r?[]:r.split(";"),a=[],s=0;s0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]this.privRecognizerConfig.maxRetryCount?[4,this.cancelRecognitionLocal(s.CancellationReason.Error,1007===t.statusCode?s.CancellationErrorCode.BadRequestParameters:s.CancellationErrorCode.ConnectionFailure,t.reason+" websocket error code: "+t.statusCode)]:[3,2];case 1:r.sent(),r.label=2;case 2:return[2]}}))}))}))}return Object.defineProperty(e.prototype,"audioSource",{get:function(){return this.privAudioSource},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"speechContext",{get:function(){return this.privSpeechContext},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"dynamicGrammar",{get:function(){return this.privDynamicGrammar},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"agentConfig",{get:function(){return this.privAgentConfig},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"conversationTranslatorToken",{set:function(e){this.privRecognizerConfig.parameters.setProperty(s.PropertyId.ConversationTranslator_Token,e)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"authentication",{set:function(e){this.privAuthentication=this.authentication},enumerable:!1,configurable:!0}),e.prototype.isDisposed=function(){return this.privIsDisposed},e.prototype.dispose=function(e){return n(this,void 0,void 0,(function(){return i(this,(function(t){switch(t.label){case 0:if(this.privIsDisposed=!0,!this.privConnectionConfigurationPromise)return[3,5];t.label=1;case 1:return t.trys.push([1,4,,5]),[4,this.privConnectionConfigurationPromise];case 2:return[4,t.sent().dispose(e)];case 3:return t.sent(),[3,5];case 4:return t.sent(),[2];case 5:return[2]}}))}))},Object.defineProperty(e.prototype,"connectionEvents",{get:function(){return this.privConnectionEvents},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"serviceEvents",{get:function(){return this.privServiceEvents},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"recognitionMode",{get:function(){return this.privRecognizerConfig.recognitionMode},enumerable:!1,configurable:!0}),e.prototype.recognize=function(e,t,r){return n(this,void 0,void 0,(function(){var a,u,l,p,d,f,h,v,m=this;return i(this,(function(_){switch(_.label){case 0:if(void 0!==this.recognizeOverride)return[2,this.recognizeOverride(e,t,r)];this.privConnectionConfigurationPromise=null,this.privRecognizerConfig.recognitionMode=e,this.privSuccessCallback=t,this.privErrorCallback=r,this.privRequestSession.startNewRecognition(),this.privRequestSession.listenForServiceTelemetry(this.privAudioSource.events),a=this.connectImpl(),_.label=1;case 1:return _.trys.push([1,6,,8]),[4,this.audioSource.attach(this.privRequestSession.audioNodeId)];case 2:return l=_.sent(),[4,this.audioSource.format];case 3:return p=_.sent(),[4,this.audioSource.deviceInfo];case 4:return d=_.sent(),this.privIsLiveAudio=d.type&&d.type===c.type.Microphones,u=new o.ReplayableAudioNode(l,p.avgBytesPerSec),[4,this.privRequestSession.onAudioSourceAttachCompleted(u,!1)];case 5:return _.sent(),this.privRecognizerConfig.SpeechServiceConfig.Context.audio={source:d},[3,8];case 6:return f=_.sent(),[4,this.privRequestSession.onStopRecognizing()];case 7:throw _.sent(),f;case 8:return _.trys.push([8,10,,12]),[4,a];case 9:return _.sent(),[3,12];case 10:return h=_.sent(),[4,this.cancelRecognitionLocal(s.CancellationReason.Error,s.CancellationErrorCode.ConnectionFailure,h)];case 11:return _.sent(),[2];case 12:return v=new s.SessionEventArgs(this.privRequestSession.sessionId),this.privRecognizer.sessionStarted&&this.privRecognizer.sessionStarted(this.privRecognizer,v),this.receiveMessage(),this.sendAudio(u).catch((function(e){return n(m,void 0,void 0,(function(){return i(this,(function(t){switch(t.label){case 0:return[4,this.cancelRecognitionLocal(s.CancellationReason.Error,s.CancellationErrorCode.RuntimeError,e)];case 1:return t.sent(),[2]}}))}))})),[2]}}))}))},e.prototype.stopRecognizing=function(){return n(this,void 0,void 0,(function(){return i(this,(function(e){switch(e.label){case 0:if(!this.privRequestSession.isRecognizing)return[3,8];e.label=1;case 1:return e.trys.push([1,,6,8]),[4,this.audioSource.turnOff()];case 2:return e.sent(),[4,this.sendFinalAudio()];case 3:return e.sent(),[4,this.privRequestSession.onStopRecognizing()];case 4:return e.sent(),[4,this.privRequestSession.turnCompletionPromise];case 5:return e.sent(),[3,8];case 6:return[4,this.privRequestSession.dispose()];case 7:return e.sent(),[7];case 8:return[2]}}))}))},e.prototype.connect=function(){return n(this,void 0,void 0,(function(){return i(this,(function(e){switch(e.label){case 0:return[4,this.connectImpl()];case 1:return e.sent(),[2,Promise.resolve()]}}))}))},e.prototype.connectAsync=function(e,t){this.connectImpl().then((function(r){try{e&&e()}catch(e){t&&t(e)}}),(function(e){try{t&&t(e)}catch(e){}}))},e.prototype.disconnect=function(){return n(this,void 0,void 0,(function(){return i(this,(function(e){switch(e.label){case 0:return[4,this.cancelRecognitionLocal(s.CancellationReason.Error,s.CancellationErrorCode.NoError,"Disconnecting")];case 1:return e.sent(),void 0===this.disconnectOverride?[3,3]:[4,this.disconnectOverride()];case 2:e.sent(),e.label=3;case 3:return e.trys.push([3,6,,7]),[4,this.privConnectionPromise];case 4:return[4,e.sent().dispose()];case 5:return e.sent(),[3,7];case 6:return e.sent(),[3,7];case 7:return this.privConnectionPromise=null,[2]}}))}))},e.prototype.sendMessage=function(e){},e.prototype.sendNetworkMessage=function(e,t){return n(this,void 0,void 0,(function(){var r,n;return i(this,(function(i){switch(i.label){case 0:return r="string"==typeof t?a.MessageType.Text:a.MessageType.Binary,n="string"==typeof t?"application/json":"",[4,this.fetchConnection()];case 1:return[2,i.sent().send(new u.SpeechConnectionMessage(r,e,this.privRequestSession.requestId,n,t))]}}))}))},Object.defineProperty(e.prototype,"activityTemplate",{get:function(){return this.privActivityTemplate},set:function(e){this.privActivityTemplate=e},enumerable:!1,configurable:!0}),e.prototype.sendTelemetryData=function(){return n(this,void 0,void 0,(function(){var t;return i(this,(function(r){switch(r.label){case 0:if(t=this.privRequestSession.getTelemetry(),!0!==e.telemetryDataEnabled||this.privIsDisposed||null===t)return[2];if(e.telemetryData)try{e.telemetryData(t)}catch(e){}return[4,this.fetchConnection()];case 1:return[4,r.sent().send(new u.SpeechConnectionMessage(a.MessageType.Text,"telemetry",this.privRequestSession.requestId,"application/json",t))];case 2:return r.sent(),[2]}}))}))},e.prototype.cancelRecognitionLocal=function(e,t,r){return n(this,void 0,void 0,(function(){return i(this,(function(n){switch(n.label){case 0:return this.privRequestSession.isRecognizing?[4,this.privRequestSession.onStopRecognizing()]:[3,2];case 1:n.sent(),this.cancelRecognition(this.privRequestSession.sessionId,this.privRequestSession.requestId,e,t,r),n.label=2;case 2:return[2]}}))}))},e.prototype.receiveMessage=function(){return n(this,void 0,void 0,(function(){var e,t,r,n,o,l,p,d,f;return i(this,(function(i){switch(i.label){case 0:return i.trys.push([0,18,,19]),this.privIsDisposed?[2]:[4,this.fetchConnection()];case 1:return[4,(e=i.sent()).read()];case 2:if(t=i.sent(),void 0!==this.receiveMessageOverride)return[2,this.receiveMessageOverride()];if(!t)return this.privRequestSession.isRecognizing?[2,this.receiveMessage()]:[2];if(this.privServiceHasSentMessage=!0,(r=u.SpeechConnectionMessage.fromConnectionMessage(t)).requestId.toLowerCase()!==this.privRequestSession.requestId.toLowerCase())return[3,17];switch(r.path.toLowerCase()){case"turn.start":return[3,3];case"speech.startdetected":return[3,4];case"speech.enddetected":return[3,5];case"turn.end":return[3,6]}return[3,15];case 3:return this.privMustReportEndOfStream=!0,this.privRequestSession.onServiceTurnStartResponse(),[3,17];case 4:return n=c.SpeechDetected.fromJSON(r.textBody),o=new s.RecognitionEventArgs(n.Offset,this.privRequestSession.sessionId),this.privRecognizer.speechStartDetected&&this.privRecognizer.speechStartDetected(this.privRecognizer,o),[3,17];case 5:return l=void 0,l=r.textBody.length>0?r.textBody:"{ Offset: 0 }",p=c.SpeechDetected.fromJSON(l),this.privRecognizerConfig.isContinuousRecognition&&this.privRequestSession.onServiceRecognized(p.Offset+this.privRequestSession.currentTurnAudioOffset),d=new s.RecognitionEventArgs(p.Offset+this.privRequestSession.currentTurnAudioOffset,this.privRequestSession.sessionId),this.privRecognizer.speechEndDetected&&this.privRecognizer.speechEndDetected(this.privRecognizer,d),[3,17];case 6:return[4,this.sendTelemetryData()];case 7:return i.sent(),this.privRequestSession.isSpeechEnded&&this.privMustReportEndOfStream?(this.privMustReportEndOfStream=!1,[4,this.cancelRecognitionLocal(s.CancellationReason.EndOfStream,s.CancellationErrorCode.NoError,void 0)]):[3,9];case 8:i.sent(),i.label=9;case 9:return f=new s.SessionEventArgs(this.privRequestSession.sessionId),[4,this.privRequestSession.onServiceTurnEndResponse(this.privRecognizerConfig.isContinuousRecognition)];case 10:return i.sent(),this.privRecognizerConfig.isContinuousRecognition&&!this.privRequestSession.isSpeechEnded&&this.privRequestSession.isRecognizing?[3,11]:(this.privRecognizer.sessionStopped&&this.privRecognizer.sessionStopped(this.privRecognizer,f),[2]);case 11:return[4,this.fetchConnection()];case 12:return e=i.sent(),[4,this.sendPrePayloadJSON(e)];case 13:i.sent(),i.label=14;case 14:return[3,17];case 15:return[4,this.processTypeSpecificMessages(r)];case 16:i.sent()||this.privServiceEvents&&this.serviceEvents.onEvent(new a.ServiceEvent(r.path.toLowerCase(),r.textBody)),i.label=17;case 17:return[2,this.receiveMessage()];case 18:return i.sent(),[2,null];case 19:return[2]}}))}))},e.prototype.sendPrePayloadJSON=function(e){return n(this,void 0,void 0,(function(){return i(this,(function(t){switch(t.label){case 0:return void 0!==this.sendPrePayloadJSONOverride?[2,this.sendPrePayloadJSONOverride(e)]:[4,this.sendSpeechContext(e)];case 1:return t.sent(),[4,this.sendWaveHeader(e)];case 2:return t.sent(),[2]}}))}))},e.prototype.sendWaveHeader=function(e){return n(this,void 0,void 0,(function(){var t;return i(this,(function(r){switch(r.label){case 0:return[4,this.audioSource.format];case 1:return t=r.sent(),[2,e.send(new u.SpeechConnectionMessage(a.MessageType.Binary,"audio",this.privRequestSession.requestId,"audio/x-wav",t.header))]}}))}))},e.prototype.connectImpl=function(){var e=this;return this.privConnectionPromise?this.privConnectionPromise.then((function(t){return t.state()===a.ConnectionState.Disconnected?(e.privConnectionId=null,e.privConnectionPromise=null,e.privServiceHasSentMessage=!1,e.connectImpl()):e.privConnectionPromise}),(function(t){return e.privConnectionId=null,e.privConnectionPromise=null,e.privServiceHasSentMessage=!1,e.connectImpl()})):(this.privConnectionPromise=this.retryableConnect(),this.privConnectionPromise.catch((function(){})),void 0!==this.postConnectImplOverride?this.postConnectImplOverride(this.privConnectionPromise):this.privConnectionPromise)},e.prototype.fetchConnection=function(){return n(this,void 0,void 0,(function(){var e=this;return i(this,(function(t){switch(t.label){case 0:return this.privConnectionConfigurationPromise?[2,this.privConnectionConfigurationPromise.then((function(t){return t.state()===a.ConnectionState.Disconnected?(e.privConnectionId=null,e.privConnectionConfigurationPromise=null,e.privServiceHasSentMessage=!1,e.fetchConnection()):e.privConnectionConfigurationPromise}),(function(t){return e.privConnectionId=null,e.privConnectionConfigurationPromise=null,e.privServiceHasSentMessage=!1,e.fetchConnection()}))]:(this.privConnectionConfigurationPromise=this.configureConnection(),[4,this.privConnectionConfigurationPromise]);case 1:return[2,t.sent()]}}))}))},e.prototype.sendAudio=function(e){return n(this,void 0,void 0,(function(){var t,r,o,s,c,l,p=this;return i(this,(function(d){switch(d.label){case 0:return[4,this.audioSource.format];case 1:return t=d.sent(),r=Date.now(),o=this.privRecognizerConfig.parameters.getProperty("SPEECH-TransmitLengthBeforThrottleMs","5000"),s=t.avgBytesPerSec/1e3*parseInt(o,10),c=this.privRequestSession.recogNumber,l=function(){return n(p,void 0,void 0,(function(){var n,o,p,d,f=this;return i(this,(function(i){switch(i.label){case 0:return this.privIsDisposed||this.privRequestSession.isSpeechEnded||!this.privRequestSession.isRecognizing||this.privRequestSession.recogNumber!==c?[3,5]:[4,this.fetchConnection()];case 1:return n=i.sent(),[4,e.read()];case 2:return o=i.sent(),this.privRequestSession.isSpeechEnded?[2]:(p=void 0,d=void 0,!o||o.isEnd?(p=null,d=0):(p=o.buffer,this.privRequestSession.onAudioSent(p.byteLength),d=s>=this.privRequestSession.bytesSent?0:Math.max(0,r-Date.now())),0===d?[3,4]:[4,this.delay(d)]);case 3:i.sent(),i.label=4;case 4:if(null!==p&&(r=Date.now()+1e3*p.byteLength/(2*t.avgBytesPerSec)),!this.privIsDisposed&&!this.privRequestSession.isSpeechEnded&&this.privRequestSession.isRecognizing&&this.privRequestSession.recogNumber===c){if(n.send(new u.SpeechConnectionMessage(a.MessageType.Binary,"audio",this.privRequestSession.requestId,null,p)).catch((function(){f.privRequestSession.onServiceTurnEndResponse(f.privRecognizerConfig.isContinuousRecognition).catch((function(){}))})),!(null==o?void 0:o.isEnd))return[2,l()];this.privIsLiveAudio||this.privRequestSession.onSpeechEnded()}i.label=5;case 5:return[2]}}))}))},[2,l()]}}))}))},e.prototype.retryableConnect=function(){return n(this,void 0,void 0,(function(){var e,t,r,n,o,c,u,l=this;return i(this,(function(i){switch(i.label){case 0:e=!1,this.privAuthFetchEventId=a.createNoDashGuid(),t=this.privRequestSession.sessionId,this.privConnectionId=void 0!==t?t:a.createNoDashGuid(),this.privRequestSession.onPreConnectionStart(this.privAuthFetchEventId,this.privConnectionId),r=0,n="",i.label=1;case 1:return this.privRequestSession.numConnectionAttempts<=this.privRecognizerConfig.maxRetryCount?[4,e?this.privAuthentication.fetchOnExpiry(this.privAuthFetchEventId):this.privAuthentication.fetch(this.privAuthFetchEventId)]:[3,8];case 2:return o=i.sent(),[4,this.privRequestSession.onAuthCompleted(!1)];case 3:return i.sent(),c=this.privConnectionFactory.create(this.privRecognizerConfig,o,this.privConnectionId),this.privRequestSession.listenForServiceTelemetry(c.events),c.events.attach((function(e){l.connectionEvents.onEvent(e)})),[4,c.open()];case 4:return 200!==(u=i.sent()).statusCode?[3,6]:[4,this.privRequestSession.onConnectionEstablishCompleted(u.statusCode)];case 5:return i.sent(),[2,Promise.resolve(c)];case 6:1006===u.statusCode&&(e=!0),i.label=7;case 7:return r=u.statusCode,n=u.reason,this.privRequestSession.onRetryConnection(),[3,1];case 8:return[4,this.privRequestSession.onConnectionEstablishCompleted(r,n)];case 9:return i.sent(),[2,Promise.reject("Unable to contact server. StatusCode: "+r+", "+this.privRecognizerConfig.parameters.getProperty(s.PropertyId.SpeechServiceConnection_Endpoint)+" Reason: "+n)]}}))}))},e.prototype.delay=function(e){var t=this;return new Promise((function(r,n){t.privSetTimeout(r,e)}))},e.prototype.writeBufferToConsole=function(e){var t="Buffer Size: ";if(null===e)t+="null";else{var r=new Uint8Array(e);t+=e.byteLength+"\r\n";for(var n=0;n0&&e.push({PhraseLatencyMs:o.privPhraseLatencies}),o.privHypothesisLatencies.length>0&&e.push({FirstHypothesisLatencyMs:o.privHypothesisLatencies});var t={Metrics:e,ReceivedMessages:o.privReceivedMessages},r=JSON.stringify(t);return o.privReceivedMessages={},o.privListeningTriggerMetric=null,o.privMicMetric=null,o.privConnectionEstablishMetric=null,o.privPhraseLatencies=[],o.privHypothesisLatencies=[],r},this.dispose=function(){o.privIsDisposed=!0},this.getConnectionError=function(e){switch(e){case 400:case 1002:case 1003:case 1005:case 1007:case 1008:case 1009:return"BadRequest";case 401:return"Unauthorized";case 403:return"Forbidden";case 503:case 1001:return"ServerUnavailable";case 500:case 1011:return"ServerError";case 408:case 504:return"Timeout";default:return"statuscode:"+e.toString()}},this.privRequestId=e,this.privAudioSourceId=t,this.privAudioNodeId=r,this.privReceivedMessages={},this.privPhraseLatencies=[],this.privHypothesisLatencies=[]}return e.prototype.phraseReceived=function(e){e>0&&this.privPhraseLatencies.push(Date.now()-e)},e.prototype.hypothesisReceived=function(e){e>0&&this.privHypothesisLatencies.push(Date.now()-e)},Object.defineProperty(e.prototype,"hasTelemetry",{get:function(){return 0!==Object.keys(this.privReceivedMessages).length||null!==this.privListeningTriggerMetric||null!==this.privMicMetric||null!==this.privConnectionEstablishMetric||0!==this.privPhraseLatencies.length||0!==this.privHypothesisLatencies.length},enumerable:!1,configurable:!0}),e}();t.ServiceTelemetryListener=o},53071:function(e,t,r){"use strict";var n=this&&this.__awaiter||function(e,t,r,n){return new(r||(r=Promise))((function(i,o){function a(e){try{c(n.next(e))}catch(e){o(e)}}function s(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?i(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(a,s)}c((n=n.apply(e,t||[])).next())}))},i=this&&this.__generator||function(e,t){var r,n,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function s(o){return function(s){return function(o){if(r)throw new TypeError("Generator is already executing.");for(;a;)try{if(r=1,n&&(i=2&o[0]?n.return:o[0]?n.throw||((i=n.return)&&i.call(n),0):n.next)&&!(i=i.call(n,o[1])).done)return i;switch(n=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return a.label++,{value:o[1],done:!1};case 5:a.label++,n=o[1],o=[0];continue;case 7:o=a.ops.pop(),a.trys.pop();continue;default:if(!(i=a.trys,(i=i.length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]=0&&(this.privTextOffset=this.privRawText.indexOf(e,this.privNextSearchTextIndex),this.privTextOffset>=0&&(this.privNextSearchTextIndex=this.privTextOffset+e.length),this.privIsSSML&&this.privRawText.indexOf("<",this.privTextOffset+1)>this.privRawText.indexOf(">",this.privTextOffset+1)&&this.updateTextOffset(e))},e.prototype.readAllAudioFromStream=function(){return n(this,void 0,void 0,(function(){return i(this,(function(e){switch(e.label){case 0:if(!this.privIsSynthesisEnded)return[3,4];this.privReceivedAudio=new ArrayBuffer(this.bytesReceived),e.label=1;case 1:return e.trys.push([1,3,,4]),[4,this.privAudioOutputStream.read(this.privReceivedAudio)];case 2:return e.sent(),[3,4];case 3:return e.sent(),this.privReceivedAudio=new ArrayBuffer(0),[3,4];case 4:return[2]}}))}))},e}();t.SynthesisTurn=u},27461:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SynthesizerConfig=t.SynthesisServiceType=void 0;var n,i=r(89190);!function(e){e[e.Standard=0]="Standard",e[e.Custom=1]="Custom"}(n=t.SynthesisServiceType||(t.SynthesisServiceType={}));var o=function(){function e(e,t){this.privSynthesisServiceType=n.Standard,this.privSpeechServiceConfig=e||new i.SpeechServiceConfig(new i.Context(null)),this.privParameters=t}return Object.defineProperty(e.prototype,"parameters",{get:function(){return this.privParameters},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"synthesisServiceType",{get:function(){return this.privSynthesisServiceType},set:function(e){this.privSynthesisServiceType=e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"SpeechServiceConfig",{get:function(){return this.privSpeechServiceConfig},enumerable:!1,configurable:!0}),e}();t.SynthesizerConfig=o},39366:function(e,t,r){"use strict";var n,i=this&&this.__extends||(n=function(e,t){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])},n(e,t)},function(e,t){function r(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)});Object.defineProperty(t,"__esModule",{value:!0}),t.TranscriberConnectionFactory=void 0;var o=r(84378),a=r(70881),s=r(47778),c=r(89190),u=r(37014),l=r(39324),p=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.multiaudioRelativeUri="/speech/recognition/multiaudio",t.create=function(e,r,n){var i=e.parameters.getProperty(a.PropertyId.SpeechServiceConnection_Endpoint,void 0),s=e.parameters.getProperty(a.PropertyId.SpeechServiceConnection_Region,"centralus"),p=s&&s.toLowerCase().startsWith("china")?".azure.cn":".microsoft.com",d="wss://transcribe."+s+".cts.speech"+p+t.multiaudioRelativeUri,f=e.parameters.getProperty(a.PropertyId.SpeechServiceConnection_Host,d),h={},v=e.parameters.getProperty(a.PropertyId.SpeechServiceConnection_EndpointId,void 0),m=e.parameters.getProperty(a.PropertyId.SpeechServiceConnection_RecoLanguage,void 0);v?i&&-1!==i.search(l.QueryParameterNames.CustomSpeechDeploymentId)||(h[l.QueryParameterNames.CustomSpeechDeploymentId]=v):m&&(i&&-1!==i.search(l.QueryParameterNames.Language)||(h[l.QueryParameterNames.Language]=m)),t.setCommonUrlParams(e,h,i),i||(i=f);var _={};void 0!==r.token&&""!==r.token&&(_[r.headerName]=r.token),_[u.HeaderNames.ConnectionId]=n,e.parameters.setProperty(a.PropertyId.SpeechServiceConnection_Url,i);var T="true"===e.parameters.getProperty("SPEECH-EnableWebsocketCompression","false");return new o.WebsocketConnection(i,h,_,new c.WebsocketMessageFormatter,o.ProxyInfo.fromRecognizerConfig(e),T,n)},t}return i(t,e),t}(s.ConnectionFactoryBase);t.TranscriberConnectionFactory=p},5321:function(e,t,r){"use strict";var n,i=this&&this.__extends||(n=function(e,t){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])},n(e,t)},function(e,t){function r(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)});Object.defineProperty(t,"__esModule",{value:!0}),t.ConversationConnectionConfig=void 0;var o=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return i(t,e),Object.defineProperty(t,"host",{get:function(){return t.privHost},enumerable:!1,configurable:!0}),Object.defineProperty(t,"apiVersion",{get:function(){return t.privApiVersion},enumerable:!1,configurable:!0}),Object.defineProperty(t,"clientAppId",{get:function(){return t.privClientAppId},enumerable:!1,configurable:!0}),Object.defineProperty(t,"defaultLanguageCode",{get:function(){return t.privDefaultLanguageCode},enumerable:!1,configurable:!0}),Object.defineProperty(t,"restPath",{get:function(){return t.privRestPath},enumerable:!1,configurable:!0}),Object.defineProperty(t,"webSocketPath",{get:function(){return t.privWebSocketPath},enumerable:!1,configurable:!0}),Object.defineProperty(t,"speechHost",{get:function(){return t.privSpeechHost},enumerable:!1,configurable:!0}),Object.defineProperty(t,"speechPath",{get:function(){return t.privSpeechPath},enumerable:!1,configurable:!0}),Object.defineProperty(t,"transcriptionEventKeys",{get:function(){return t.privTranscriptionEventKeys},enumerable:!1,configurable:!0}),t.privHost="dev.microsofttranslator.com",t.privRestPath="/capito/room",t.privApiVersion="2.0",t.privDefaultLanguageCode="en-US",t.privClientAppId="FC539C22-1767-4F1F-84BC-B4D811114F15",t.privWebSocketPath="/capito/translate",t.privSpeechHost="{region}.s2s.speech.microsoft.com",t.privSpeechPath="/speech/translation/cognitiveservices/v1",t.privTranscriptionEventKeys=["iCalUid","callId","organizer","FLAC","MTUri","DifferenciateGuestSpeakers","audiorecording","Threadid","OrganizerMri","OrganizerTenantId","UserToken"],t}(r(93768).RestConfigBase);t.ConversationConnectionConfig=o},28553:function(e,t,r){"use strict";var n,i=this&&this.__extends||(n=function(e,t){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])},n(e,t)},function(e,t){function r(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)});Object.defineProperty(t,"__esModule",{value:!0}),t.ConversationConnectionFactory=void 0;var o=r(84378),a=r(20868),s=r(95245),c=r(70881),u=r(47778),l=r(5321),p=r(4815),d=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return i(t,e),t.prototype.create=function(e,t,r){var n=e.parameters.getProperty(c.PropertyId.ConversationTranslator_Host,l.ConversationConnectionConfig.host),i=e.parameters.getProperty(c.PropertyId.ConversationTranslator_CorrelationId,a.createGuid()),u="wss://"+n+l.ConversationConnectionConfig.webSocketPath,d=e.parameters.getProperty(c.PropertyId.ConversationTranslator_Token,void 0);s.Contracts.throwIfNullOrUndefined(d,"token");var f={};f[l.ConversationConnectionConfig.configParams.apiVersion]=l.ConversationConnectionConfig.apiVersion,f[l.ConversationConnectionConfig.configParams.token]=d,f[l.ConversationConnectionConfig.configParams.correlationId]=i;var h="true"===e.parameters.getProperty("SPEECH-EnableWebsocketCompression","false");return new o.WebsocketConnection(u,f,{},new p.ConversationWebsocketMessageFormatter,o.ProxyInfo.fromRecognizerConfig(e),h,r)},t}(u.ConnectionFactoryBase);t.ConversationConnectionFactory=d},44524:function(e,t,r){"use strict";var n,i=this&&this.__extends||(n=function(e,t){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])},n(e,t)},function(e,t){function r(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)});Object.defineProperty(t,"__esModule",{value:!0}),t.ConversationConnectionMessage=void 0;var o=function(e){function t(t,r,n,i){var o=e.call(this,t,r,n,i)||this,a=JSON.parse(o.textBody);return void 0!==a.type&&(o.privConversationMessageType=a.type),o}return i(t,e),Object.defineProperty(t.prototype,"conversationMessageType",{get:function(){return this.privConversationMessageType},enumerable:!1,configurable:!0}),t}(r(20868).ConnectionMessage);t.ConversationConnectionMessage=o},70404:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ConversationManager=void 0;var n=r(95245),i=r(70881),o=r(5321),a=r(68814),s=function(){function e(){this.privRequestParams=o.ConversationConnectionConfig.configParams,this.privErrors=o.ConversationConnectionConfig.restErrors,this.privHost=o.ConversationConnectionConfig.host,this.privApiVersion=o.ConversationConnectionConfig.apiVersion,this.privRestPath=o.ConversationConnectionConfig.restPath}return e.prototype.createOrJoin=function(e,t,r,s){var c=this;try{n.Contracts.throwIfNullOrUndefined(e,"args");var u=e.getProperty(i.PropertyId.SpeechServiceConnection_RecoLanguage,o.ConversationConnectionConfig.defaultLanguageCode),l=e.getProperty(i.PropertyId.ConversationTranslator_Name),p=e.getProperty(i.PropertyId.ConversationTranslator_Host,this.privHost),d=e.getProperty(i.PropertyId.ConversationTranslator_CorrelationId),f=e.getProperty(i.PropertyId.SpeechServiceConnection_Key),h=e.getProperty(i.PropertyId.SpeechServiceConnection_Region),v=e.getProperty(i.PropertyId.SpeechServiceAuthorization_Token);n.Contracts.throwIfNullOrWhitespace(u,"languageCode"),n.Contracts.throwIfNullOrWhitespace(l,"nickname"),n.Contracts.throwIfNullOrWhitespace(p,"endpointHost");var m={};m[this.privRequestParams.apiVersion]=this.privApiVersion,m[this.privRequestParams.languageCode]=u,m[this.privRequestParams.nickname]=l;var _={};d&&(_[this.privRequestParams.correlationId]=d),_[this.privRequestParams.clientAppId]=o.ConversationConnectionConfig.clientAppId,void 0!==t?m[this.privRequestParams.roomId]=t:(n.Contracts.throwIfNullOrUndefined(h,this.privErrors.authInvalidSubscriptionRegion),_[this.privRequestParams.subscriptionRegion]=h,f?_[this.privRequestParams.subscriptionKey]=f:v?_[this.privRequestParams.authorization]="Bearer "+v:n.Contracts.throwIfNullOrUndefined(f,this.privErrors.authInvalidSubscriptionKey));var T={};T.headers=_;var g="https://"+p+this.privRestPath;a.request("post",g,m,null,T,(function(e){var t=a.extractHeaderValue(c.privRequestParams.requestId,e.headers);if(e.ok){var n=JSON.parse(e.data);if(n&&(n.requestId=t),r){try{r(n)}catch(e){s&&s(e)}r=void 0}}else if(s){var i=c.privErrors.invalidCreateJoinConversationResponse.replace("{status}",e.status.toString()),o=void 0;try{i+=" ["+(o=JSON.parse(e.data)).error.code+": "+o.error.message+"]"}catch(t){i+=" ["+e.data+"]"}t&&(i+=" "+t),s(i)}}))}catch(e){if(s)if(e instanceof Error){var y=e;s(y.name+": "+y.message)}else s(e)}},e.prototype.leave=function(e,t){var r=this;return new Promise((function(o,s){try{n.Contracts.throwIfNullOrUndefined(e,r.privErrors.invalidArgs.replace("{arg}","config")),n.Contracts.throwIfNullOrWhitespace(t,r.privErrors.invalidArgs.replace("{arg}","token"));var c=e.getProperty(i.PropertyId.ConversationTranslator_Host,r.privHost),u=e.getProperty(i.PropertyId.ConversationTranslator_CorrelationId),l={};l[r.privRequestParams.apiVersion]=r.privApiVersion,l[r.privRequestParams.sessionToken]=t;var p={};u&&(p[r.privRequestParams.correlationId]=u);var d={};d.headers=p;var f="https://"+c+r.privRestPath;a.request("delete",f,l,null,d,(function(e){e.ok,o()}))}catch(e){if(e instanceof Error){var h=e;s(h.name+": "+h.message)}else s(e)}}))},e}();t.ConversationManager=s},25472:function(e,t,r){"use strict";var n=this&&this.__awaiter||function(e,t,r,n){return new(r||(r=Promise))((function(i,o){function a(e){try{c(n.next(e))}catch(e){o(e)}}function s(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?i(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(a,s)}c((n=n.apply(e,t||[])).next())}))},i=this&&this.__generator||function(e,t){var r,n,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function s(o){return function(s){return function(o){if(r)throw new TypeError("Generator is already executing.");for(;a;)try{if(r=1,n&&(i=2&o[0]?n.return:o[0]?n.throw||((i=n.return)&&i.call(n),0):n.next)&&!(i=i.call(n,o[1])).done)return i;switch(n=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return a.label++,{value:o[1],done:!1};case 5:a.label++,n=o[1],o=[0];continue;case 7:o=a.ops.pop(),a.trys.pop();continue;default:if(!(i=a.trys,(i=i.length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0||m.id===this.privLastPartialUtteranceId)&&(n=!0),n&&this.privConversationServiceConnector.translationReceived&&this.privConversationServiceConnector.translationReceived(this.privConversationServiceConnector,new d.ConversationReceivedTranslationEventArgs(f.ConversationTranslatorMessageTypes.final,_,r))):void 0!==_.text&&(this.privLastPartialUtteranceId=m.id,this.privConversationServiceConnector.translationReceived&&this.privConversationServiceConnector.translationReceived(this.privConversationServiceConnector,new d.ConversationReceivedTranslationEventArgs(f.ConversationTranslatorMessageTypes.partial,_,r)));break;case"translated_message":T=h.TextResponsePayload.fromJSON(t.textBody),g=new c.ConversationTranslationResult(T.participantId,this.getTranslations(T.translations),T.language,void 0,void 0,T.originalText,void 0,void 0,void 0,t.textBody,void 0),this.privConversationServiceConnector.translationReceived&&this.privConversationServiceConnector.translationReceived(this.privConversationServiceConnector,new d.ConversationReceivedTranslationEventArgs(f.ConversationTranslatorMessageTypes.instantMessage,g,r))}}catch(e){}return[2,this.receiveConversationMessageOverride()];case 4:return a.sent(),this.terminateMessageLoop=!0,[3,5];case 5:return[2,e.promise]}}))}))},t.prototype.startMessageLoop=function(){return o(this,void 0,void 0,(function(){var e,t;return a(this,(function(r){switch(r.label){case 0:if(this.isDisposed())return[2,Promise.resolve()];this.terminateMessageLoop=!1,e=this.receiveConversationMessageOverride(),r.label=1;case 1:return r.trys.push([1,3,,4]),[4,e];case 2:return[2,r.sent()];case 3:return t=r.sent(),this.cancelRecognition(this.privRequestSession?this.privRequestSession.sessionId:"",this.privRequestSession?this.privRequestSession.requestId:"",c.CancellationReason.Error,c.CancellationErrorCode.RuntimeError,t),[2,null];case 4:return[2]}}))}))},t.prototype.configConnection=function(){var e=this;return this.isDisposed()?Promise.resolve(void 0):this.privConnectionConfigPromise?this.privConnectionConfigPromise.then((function(t){return t.state()===s.ConnectionState.Disconnected?(e.privConnectionId=null,e.privConnectionConfigPromise=null,e.configConnection()):e.privConnectionConfigPromise}),(function(t){return e.privConnectionId=null,e.privConnectionConfigPromise=null,e.configConnection()})):this.terminateMessageLoop?Promise.resolve(void 0):(this.privConnectionConfigPromise=this.connectImpl().then((function(e){return e})),this.privConnectionConfigPromise)},t.prototype.getTranslations=function(e){var t;if(void 0!==e){t=new c.Translations;for(var r=0,n=e;r-1?this.participants.splice(t,1,e):this.participants.push(e),this.getParticipant(e.id)}},e.prototype.getParticipantIndex=function(e){return this.participants.findIndex((function(t){return t.id===e}))},e.prototype.getParticipant=function(e){return this.participants.find((function(t){return t.id===e}))},e.prototype.deleteParticipant=function(e){this.participants=this.participants.filter((function(t){return t.id!==e}))},Object.defineProperty(e.prototype,"host",{get:function(){return this.participants.find((function(e){return!0===e.isHost}))},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"me",{get:function(){return this.getParticipant(this.meId)},enumerable:!1,configurable:!0}),e}();t.InternalParticipants=r,t.ConversationTranslatorMessageTypes={command:"command",final:"final",info:"info",instantMessage:"instant_message",partial:"partial",participantCommand:"participant_command",translatedMessage:"translated_message"},t.ConversationTranslatorCommandTypes={changeNickname:"ChangeNickname",disconnectSession:"DisconnectSession",ejectParticipant:"EjectParticipant",instant_message:"instant_message",joinSession:"JoinSession",leaveSession:"LeaveSession",participantList:"ParticipantList",roomExpirationWarning:"RoomExpirationWarning",setLockState:"SetLockState",setMute:"SetMute",setMuteAll:"SetMuteAll",setProfanityFiltering:"SetProfanityFiltering",setTranslateToLanguages:"SetTranslateToLanguages",setUseTTS:"SetUseTTS"}},11919:function(e,t,r){"use strict";var n,i=this&&this.__extends||(n=function(e,t){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])},n(e,t)},function(e,t){function r(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}),o=this&&this.__awaiter||function(e,t,r,n){return new(r||(r=Promise))((function(i,o){function a(e){try{c(n.next(e))}catch(e){o(e)}}function s(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?i(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(a,s)}c((n=n.apply(e,t||[])).next())}))},a=this&&this.__generator||function(e,t){var r,n,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function s(o){return function(s){return function(o){if(r)throw new TypeError("Generator is already executing.");for(;a;)try{if(r=1,n&&(i=2&o[0]?n.return:o[0]?n.throw||((i=n.return)&&i.call(n),0):n.next)&&!(i=i.call(n,o[1])).done)return i;switch(n=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return a.label++,{value:o[1],done:!1};case 5:a.label++,n=o[1],o=[0];continue;case 7:o=a.ops.pop(),a.trys.pop();continue;default:if(!(i=a.trys,(i=i.length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]=200&&e.status<300,status:e.status,statusText:e.statusText}}(l))},l.onerror=function(e){o(u(l,"Failed to make request."))},l.ontimeout=function(e){o(u(l,"Request took longer than expected."))},"post"===e&&n?(l.setRequestHeader("Content-Type","application/json"),l.send(JSON.stringify(n))):l.send()},t.PromiseToEmptyCallback=function(e,t,r){e?e.then((function(e){try{t&&t()}catch(e){r&&r("'Unhandled error on promise callback: "+e+"'")}}),(function(e){try{r&&r(e)}catch(e){}})):r&&r("Null promise")}},4815:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ConversationWebsocketMessageFormatter=void 0;var n=r(20868),i=r(44524),o=function(){this.toConnectionMessage=function(e){var t=new n.Deferred;try{if(e.messageType===n.MessageType.Text){var r=new i.ConversationConnectionMessage(e.messageType,e.textContent,{},e.id);t.resolve(r)}else e.messageType===n.MessageType.Binary&&t.resolve(new i.ConversationConnectionMessage(e.messageType,e.binaryContent,void 0,e.id))}catch(e){t.reject("Error formatting the message. Error: "+e)}return t.promise},this.fromConnectionMessage=function(e){var t=new n.Deferred;try{if(e.messageType===n.MessageType.Text){var r=""+(e.textBody?e.textBody:"");t.resolve(new n.RawWebsocketMessage(n.MessageType.Text,r,e.id))}}catch(e){t.reject("Error formatting the message. "+e)}return t.promise}};t.ConversationWebsocketMessageFormatter=o},25685:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=r(70404);Object.defineProperty(t,"ConversationManager",{enumerable:!0,get:function(){return n.ConversationManager}});var i=r(5321);Object.defineProperty(t,"ConversationConnectionConfig",{enumerable:!0,get:function(){return i.ConversationConnectionConfig}});var o=r(11919);Object.defineProperty(t,"ConversationRecognizerFactory",{enumerable:!0,get:function(){return o.ConversationRecognizerFactory}});var a=r(50143);Object.defineProperty(t,"TranscriberRecognizer",{enumerable:!0,get:function(){return a.TranscriberRecognizer}});var s=r(44272);Object.defineProperty(t,"ConversationReceivedTranslationEventArgs",{enumerable:!0,get:function(){return s.ConversationReceivedTranslationEventArgs}}),Object.defineProperty(t,"LockRoomEventArgs",{enumerable:!0,get:function(){return s.LockRoomEventArgs}}),Object.defineProperty(t,"MuteAllEventArgs",{enumerable:!0,get:function(){return s.MuteAllEventArgs}}),Object.defineProperty(t,"ParticipantAttributeEventArgs",{enumerable:!0,get:function(){return s.ParticipantAttributeEventArgs}}),Object.defineProperty(t,"ParticipantEventArgs",{enumerable:!0,get:function(){return s.ParticipantEventArgs}}),Object.defineProperty(t,"ParticipantsListEventArgs",{enumerable:!0,get:function(){return s.ParticipantsListEventArgs}});var c=r(49061);Object.defineProperty(t,"ConversationTranslatorCommandTypes",{enumerable:!0,get:function(){return c.ConversationTranslatorCommandTypes}}),Object.defineProperty(t,"ConversationTranslatorMessageTypes",{enumerable:!0,get:function(){return c.ConversationTranslatorMessageTypes}}),Object.defineProperty(t,"InternalParticipants",{enumerable:!0,get:function(){return c.InternalParticipants}})},79828:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CommandResponsePayload=void 0;var r=function(){function e(e){this.privCommandResponse=JSON.parse(e)}return e.fromJSON=function(t){return new e(t)},Object.defineProperty(e.prototype,"type",{get:function(){return this.privCommandResponse.type},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"command",{get:function(){return this.privCommandResponse.command},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"id",{get:function(){return this.privCommandResponse.id},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"nickname",{get:function(){return this.privCommandResponse.nickname},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"participantId",{get:function(){return this.privCommandResponse.participantId},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"roomid",{get:function(){return this.privCommandResponse.roomid},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"value",{get:function(){return this.privCommandResponse.value},enumerable:!1,configurable:!0}),e}();t.CommandResponsePayload=r},6641:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=r(79828);Object.defineProperty(t,"CommandResponsePayload",{enumerable:!0,get:function(){return n.CommandResponsePayload}});var i=r(92512);Object.defineProperty(t,"ParticipantsListPayloadResponse",{enumerable:!0,get:function(){return i.ParticipantsListPayloadResponse}}),Object.defineProperty(t,"ParticipantPayloadResponse",{enumerable:!0,get:function(){return i.ParticipantPayloadResponse}});var o=r(13126);Object.defineProperty(t,"SpeechResponsePayload",{enumerable:!0,get:function(){return o.SpeechResponsePayload}}),Object.defineProperty(t,"TextResponsePayload",{enumerable:!0,get:function(){return o.TextResponsePayload}})},92512:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ParticipantPayloadResponse=t.ParticipantsListPayloadResponse=void 0;var r=function(){function e(e){this.privParticipantsPayloadResponse=JSON.parse(e)}return e.fromJSON=function(t){return new e(t)},Object.defineProperty(e.prototype,"roomid",{get:function(){return this.privParticipantsPayloadResponse.roomid},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"id",{get:function(){return this.privParticipantsPayloadResponse.id},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"command",{get:function(){return this.privParticipantsPayloadResponse.command},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"participants",{get:function(){return this.privParticipantsPayloadResponse.participants},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"token",{get:function(){return this.privParticipantsPayloadResponse.token},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"translateTo",{get:function(){return this.privParticipantsPayloadResponse.translateTo},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"profanityFilter",{get:function(){return this.privParticipantsPayloadResponse.profanityFilter},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"roomProfanityFilter",{get:function(){return this.privParticipantsPayloadResponse.roomProfanityFilter},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"roomLocked",{get:function(){return this.privParticipantsPayloadResponse.roomLocked},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"muteAll",{get:function(){return this.privParticipantsPayloadResponse.muteAll},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"type",{get:function(){return this.privParticipantsPayloadResponse.type},enumerable:!1,configurable:!0}),e}();t.ParticipantsListPayloadResponse=r;var n=function(){function e(e){this.privParticipantPayloadResponse=JSON.parse(e)}return e.fromJSON=function(t){return new e(t)},Object.defineProperty(e.prototype,"nickname",{get:function(){return this.privParticipantPayloadResponse.nickname},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"locale",{get:function(){return this.privParticipantPayloadResponse.locale},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"usetts",{get:function(){return this.privParticipantPayloadResponse.usetts},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"ismuted",{get:function(){return this.privParticipantPayloadResponse.ismuted},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"ishost",{get:function(){return this.privParticipantPayloadResponse.ishost},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"participantId",{get:function(){return this.privParticipantPayloadResponse.participantId},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"avatar",{get:function(){return this.privParticipantPayloadResponse.avatar},enumerable:!1,configurable:!0}),e}();t.ParticipantPayloadResponse=n},13126:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TextResponsePayload=t.SpeechResponsePayload=void 0;var r=function(){function e(e){this.privSpeechResponse=JSON.parse(e)}return e.fromJSON=function(t){return new e(t)},Object.defineProperty(e.prototype,"recognition",{get:function(){return this.privSpeechResponse.recognition},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"translations",{get:function(){return this.privSpeechResponse.translations},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"id",{get:function(){return this.privSpeechResponse.id},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"language",{get:function(){return this.privSpeechResponse.language},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"nickname",{get:function(){return this.privSpeechResponse.nickname},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"participantId",{get:function(){return this.privSpeechResponse.participantId},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"roomid",{get:function(){return this.privSpeechResponse.roomid},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"timestamp",{get:function(){return this.privSpeechResponse.timestamp},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"type",{get:function(){return this.privSpeechResponse.type},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"isFinal",{get:function(){return"final"===this.privSpeechResponse.type},enumerable:!1,configurable:!0}),e}();t.SpeechResponsePayload=r;var n=function(){function e(e){this.privTextResponse=JSON.parse(e)}return e.fromJSON=function(t){return new e(t)},Object.defineProperty(e.prototype,"originalText",{get:function(){return this.privTextResponse.originalText},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"translations",{get:function(){return this.privTextResponse.translations},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"id",{get:function(){return this.privTextResponse.id},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"language",{get:function(){return this.privTextResponse.language},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"nickname",{get:function(){return this.privTextResponse.nickname},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"participantId",{get:function(){return this.privTextResponse.participantId},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"roomid",{get:function(){return this.privTextResponse.roomid},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"timestamp",{get:function(){return this.privTextResponse.timestamp},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"type",{get:function(){return this.privTextResponse.type},enumerable:!1,configurable:!0}),e}();t.TextResponsePayload=n},50143:function(e,t,r){"use strict";var n,i=this&&this.__extends||(n=function(e,t){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])},n(e,t)},function(e,t){function r(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}),o=this&&this.__awaiter||function(e,t,r,n){return new(r||(r=Promise))((function(i,o){function a(e){try{c(n.next(e))}catch(e){o(e)}}function s(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?i(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(a,s)}c((n=n.apply(e,t||[])).next())}))},a=this&&this.__generator||function(e,t){var r,n,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function s(o){return function(s){return function(o){if(r)throw new TypeError("Generator is already executing.");for(;a;)try{if(r=1,n&&(i=2&o[0]?n.return:o[0]?n.throw||((i=n.return)&&i.call(n),0):n.next)&&!(i=i.call(n,o[1])).done)return i;switch(n=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return a.label++,{value:o[1],done:!1};case 5:a.label++,n=o[1],o=[0];continue;case 7:o=a.ops.pop(),a.trys.pop();continue;default:if(!(i=a.trys,(i=i.length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&(o=e.parseHeaders(s[0]),s.length>1&&(a=s[1]))}r.resolve(new n.ConnectionMessage(t.messageType,a,o,t.id))}else if(t.messageType===n.MessageType.Binary){var c=t.binaryContent;if(o={},a=null,!c||c.byteLength<2)throw new Error("Invalid binary message format. Header length missing.");var u=new DataView(c),l=u.getInt16(0);if(c.byteLengthl+2&&(a=c.slice(2+l)),r.resolve(new n.ConnectionMessage(t.messageType,a,o,t.id))}}catch(e){r.reject("Error formatting the message. Error: "+e)}return r.promise},this.fromConnectionMessage=function(t){var r=new n.Deferred;try{if(t.messageType===n.MessageType.Text){var i=e.makeHeaders(t)+"\r\n"+(t.textBody?t.textBody:"");r.resolve(new n.RawWebsocketMessage(n.MessageType.Text,i,t.id))}else if(t.messageType===n.MessageType.Binary){var o=e.makeHeaders(t),a=t.binaryBody,s=e.stringToArrayBuffer(o),c=new Int8Array(s),u=c.byteLength,l=new Int8Array(2+u+(a?a.byteLength:0));if(l[0]=u>>8&255,l[1]=255&u,l.set(c,2),a){var p=new Int8Array(a);l.set(p,2+u)}i=l.buffer,r.resolve(new n.RawWebsocketMessage(n.MessageType.Binary,i,t.id))}}catch(e){r.reject("Error formatting the message. "+e)}return r.promise},this.makeHeaders=function(e){var t="";if(e.headers)for(var r in e.headers)r&&(t+=r+": "+e.headers[r]+"\r\n");return t},this.parseHeaders=function(e){var t={};if(e){var r=e.match(/[^\r\n]+/g);if(t)for(var n=0,i=r;n0?o.substr(0,a).trim().toLowerCase():o,c=a>0&&o.length>a+1?o.substr(a+1).trim():"";t[s]=c}}}return t},this.stringToArrayBuffer=function(e){for(var t=new ArrayBuffer(e.length),r=new DataView(t),n=0;n0:r.length()>0},this.all=function(e){return r.throwIfDisposed(),r.where(e).length()===r.length()},this.forEach=function(e){r.throwIfDisposed();for(var t=0;t0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&e.length()>0&&!t.privIsDisposing;){var n=e.removeFirst();if(n.type===o.Peek)n.deferral.resolve(r.first());else{var i=r.removeFirst();n.deferral.resolve(i)}}t.privSubscribers===e&&(t.privSubscribers=e),t.privList===r&&(t.privList=r)}t.privIsDrainInProgress=!1}},this.throwIfDispose=function(){if(t.isDisposed()){if(t.privDisposeReason)throw new a.InvalidOperationError(t.privDisposeReason);throw new a.ObjectDisposedError("Queue")}if(t.privIsDisposing)throw new a.InvalidOperationError("Queue disposing")},this.privList=e||new s.List,this.privDetachables=[],this.privSubscribers=new s.List,this.privDetachables.push(this.privList.onAdded(this.drain))}return e.prototype.drainAndDispose=function(e,t){return n(this,void 0,void 0,(function(){var r,n,o,a,s=this;return i(this,(function(i){switch(i.label){case 0:if(this.isDisposed()||this.privIsDisposing)return[3,5];if(this.privDisposeReason=t,this.privIsDisposing=!0,r=this.privSubscribers){for(;r.length()>0;)r.removeFirst().deferral.resolve(void 0);this.privSubscribers===r&&(this.privSubscribers=r)}n=0,o=this.privDetachables,i.label=1;case 1:return n0&&e)return a=[],this.privPromiseStore.toArray().forEach((function(e){a.push(e)})),[2,Promise.all(a).finally((function(){s.privSubscribers=null,s.privList.forEach((function(t,r){e(t)})),s.privList=null})).then()];this.privSubscribers=null,this.privList=null,i.label=5;case 5:return[2]}}))}))},e.prototype.dispose=function(e){return n(this,void 0,void 0,(function(){return i(this,(function(t){switch(t.label){case 0:return[4,this.drainAndDispose(null,e)];case 1:return t.sent(),[2]}}))}))},e}();t.Queue=u},73567:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.RawWebsocketMessage=void 0;var n=r(24132),i=r(36209),o=r(14462),a=function(){function e(e,t,r){if(this.privPayload=null,!t)throw new i.ArgumentNullError("payload");if(e===n.MessageType.Binary&&"ArrayBuffer"!==t.__proto__.constructor.name)throw new i.InvalidOperationError("Payload must be ArrayBuffer");if(e===n.MessageType.Text&&"string"!=typeof t)throw new i.InvalidOperationError("Payload must be a string");this.privMessageType=e,this.privPayload=t,this.privId=r||o.createNoDashGuid()}return Object.defineProperty(e.prototype,"messageType",{get:function(){return this.privMessageType},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"payload",{get:function(){return this.privPayload},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"textContent",{get:function(){if(this.privMessageType===n.MessageType.Binary)throw new i.InvalidOperationError("Not supported for binary message");return this.privPayload},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"binaryContent",{get:function(){if(this.privMessageType===n.MessageType.Text)throw new i.InvalidOperationError("Not supported for text message");return this.privPayload},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"id",{get:function(){return this.privId},enumerable:!1,configurable:!0}),e}();t.RawWebsocketMessage=a},37378:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.RiffPcmEncoder=void 0;var r=function(e,t){var r=this;this.encode=function(e){var t=r.downSampleAudioFrame(e,r.privActualSampleRate,r.privDesiredSampleRate);if(!t)return null;var n=2*t.length,i=new ArrayBuffer(n),o=new DataView(i);return r.floatTo16BitPCM(o,0,t),i},this.setString=function(e,t,r){for(var n=0;nt)return e;for(var n=t/r,i=Math.round(e.length/n),o=new Float32Array(i),a=0,s=0;s0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]{const t=r.get(e);if(void 0===t)throw new Error(\'There is no interval scheduled with the given id "\'.concat(e,\'".\'));clearTimeout(t),r.delete(e)},u=e=>{const t=o.get(e);if(void 0===t)throw new Error(\'There is no timeout scheduled with the given id "\'.concat(e,\'".\'));clearTimeout(t),o.delete(e)},f=(e,t)=>{let n,r;if("performance"in self){const o=performance.now();n=o,r=e-Math.max(0,o-t)}else n=Date.now(),r=e;return{expected:n+r,remainingDelay:r}},c=(e,t,n,r)=>{const o="performance"in self?performance.now():Date.now();o>n?postMessage({id:null,method:"call",params:{timerId:t}}):e.set(t,setTimeout(c,n-o,e,t,n))},a=(e,t,n)=>{const{expected:o,remainingDelay:i}=f(e,n);r.set(t,setTimeout(c,i,r,t,o))},d=(e,t,n)=>{const{expected:r,remainingDelay:i}=f(e,n);o.set(t,setTimeout(c,i,o,t,r))}},function(e,t,n){"use strict";n.r(t);var r=n(2);for(var o in r)"default"!==o&&function(e){n.d(t,e,(function(){return r[e]}))}(o);var i=n(3);for(var o in i)"default"!==o&&function(e){n.d(t,e,(function(){return i[e]}))}(o);var u=n(4);for(var o in u)"default"!==o&&function(e){n.d(t,e,(function(){return u[e]}))}(o);var f=n(5);for(var o in f)"default"!==o&&function(e){n.d(t,e,(function(){return f[e]}))}(o);var c=n(6);for(var o in c)"default"!==o&&function(e){n.d(t,e,(function(){return c[e]}))}(o);var a=n(7);for(var o in a)"default"!==o&&function(e){n.d(t,e,(function(){return a[e]}))}(o);var d=n(8);for(var o in d)"default"!==o&&function(e){n.d(t,e,(function(){return d[e]}))}(o);var s=n(9);for(var o in s)"default"!==o&&function(e){n.d(t,e,(function(){return s[e]}))}(o)},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t,n){"use strict";n.r(t);var r=n(11);for(var o in r)"default"!==o&&function(e){n.d(t,e,(function(){return r[e]}))}(o);var i=n(12);for(var o in i)"default"!==o&&function(e){n.d(t,e,(function(){return i[e]}))}(o);var u=n(13);for(var o in u)"default"!==o&&function(e){n.d(t,e,(function(){return u[e]}))}(o)},function(e,t){},function(e,t){},function(e,t){},function(e,t,n){"use strict";n.r(t);var r=n(0),o=n(1);for(var i in o)"default"!==i&&function(e){n.d(t,e,(function(){return o[e]}))}(i);var u=n(10);for(var i in u)"default"!==i&&function(e){n.d(t,e,(function(){return u[e]}))}(i);addEventListener("message",({data:e})=>{try{if("clear"===e.method){const{id:t,params:{timerId:n}}=e;Object(r.b)(n),postMessage({error:null,id:t})}else{if("set"!==e.method)throw new Error(\'The given method "\'.concat(e.method,\'" is not supported\'));{const{params:{delay:t,now:n,timerId:o}}=e;Object(r.d)(t,o,n)}}}catch(t){postMessage({error:{message:t.message},id:e.id,result:null})}})}]);'],{type:"application/javascript; charset=utf-8"}),r=URL.createObjectURL(t);return e.workerTimers=e.load(r),e.workerTimers.setTimeout((function(){return URL.revokeObjectURL(r)}),0),e.workerTimers}},e.timers=e.loadWorkerTimers(),e.isCallNotification=function(e){return void 0!==e.method&&"call"===e.method},e.isClearResponse=function(e){return null===e.error&&"number"==typeof e.id},e}();t.Timeout=r},20425:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActivityReceivedEventArgs=void 0;var r=function(){function e(e,t){this.privActivity=e,this.privAudioStream=t}return Object.defineProperty(e.prototype,"activity",{get:function(){return this.privActivity},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"audioStream",{get:function(){return this.privAudioStream},enumerable:!1,configurable:!0}),e}();t.ActivityReceivedEventArgs=r},36883:function(e,t,r){"use strict";var n,i=this&&this.__extends||(n=function(e,t){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])},n(e,t)},function(e,t){function r(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)});Object.defineProperty(t,"__esModule",{value:!0}),t.AudioOutputConfigImpl=t.AudioConfigImpl=t.AudioConfig=void 0;var o=r(84378),a=r(95245),s=r(70881),c=r(7208),u=r(72025),l=r(48640),p=function(){function e(){}return e.fromDefaultMicrophoneInput=function(){var e=new o.PcmRecorder;return new d(new o.MicAudioSource(e))},e.fromMicrophoneInput=function(e){var t=new o.PcmRecorder;return new d(new o.MicAudioSource(t,e))},e.fromWavFileInput=function(e,t){return void 0===t&&(t="unnamedBuffer.wav"),new d(new o.FileAudioSource(e,t))},e.fromStreamInput=function(e){if(e instanceof s.PullAudioInputStreamCallback)return new d(new u.PullAudioInputStreamImpl(e));if(e instanceof s.AudioInputStream)return new d(e);if("undefined"!=typeof MediaStream&&e instanceof MediaStream){var t=new o.PcmRecorder;return new d(new o.MicAudioSource(t,null,null,e))}throw new Error("Not Supported Type")},e.fromDefaultSpeakerOutput=function(){return new f(new s.SpeakerAudioDestination)},e.fromSpeakerOutput=function(t){if(void 0===t)return e.fromDefaultSpeakerOutput();if(t instanceof s.SpeakerAudioDestination)return new f(t);throw new Error("Not Supported Type")},e.fromAudioFileOutput=function(e){return new f(new c.AudioFileWriter(e))},e.fromStreamOutput=function(e){if(e instanceof s.PushAudioOutputStreamCallback)return new f(new l.PushAudioOutputStreamImpl(e));if(e instanceof s.PushAudioOutputStream)return new f(e);if(e instanceof s.PullAudioOutputStream)return new f(e);throw new Error("Not Supported Type")},e}();t.AudioConfig=p;var d=function(e){function t(t){var r=e.call(this)||this;return r.privSource=t,r}return i(t,e),Object.defineProperty(t.prototype,"format",{get:function(){return this.privSource.format},enumerable:!1,configurable:!0}),t.prototype.close=function(e,t){this.privSource.turnOff().then((function(){e&&e()}),(function(e){t&&t(e)}))},t.prototype.id=function(){return this.privSource.id()},Object.defineProperty(t.prototype,"blob",{get:function(){return this.privSource.blob},enumerable:!1,configurable:!0}),t.prototype.turnOn=function(){return this.privSource.turnOn()},t.prototype.attach=function(e){return this.privSource.attach(e)},t.prototype.detach=function(e){return this.privSource.detach(e)},t.prototype.turnOff=function(){return this.privSource.turnOff()},Object.defineProperty(t.prototype,"events",{get:function(){return this.privSource.events},enumerable:!1,configurable:!0}),t.prototype.setProperty=function(e,t){if(a.Contracts.throwIfNull(t,"value"),void 0===this.privSource.setProperty)throw new Error("This AudioConfig instance does not support setting properties.");this.privSource.setProperty(e,t)},t.prototype.getProperty=function(e,t){if(void 0!==this.privSource.getProperty)return this.privSource.getProperty(e,t);throw new Error("This AudioConfig instance does not support getting properties.")},Object.defineProperty(t.prototype,"deviceInfo",{get:function(){return this.privSource.deviceInfo},enumerable:!1,configurable:!0}),t}(p);t.AudioConfigImpl=d;var f=function(e){function t(t){var r=e.call(this)||this;return r.privDestination=t,r}return i(t,e),Object.defineProperty(t.prototype,"format",{set:function(e){this.privDestination.format=e},enumerable:!1,configurable:!0}),t.prototype.write=function(e){this.privDestination.write(e)},t.prototype.close=function(){this.privDestination.close()},t.prototype.id=function(){return this.privDestination.id()},t.prototype.setProperty=function(e,t){throw new Error("This AudioConfig instance does not support setting properties.")},t.prototype.getProperty=function(e,t){throw new Error("This AudioConfig instance does not support getting properties.")},t}(p);t.AudioOutputConfigImpl=f},7208:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),o=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.hasOwnProperty.call(e,r)&&n(t,e,r);return i(t,e),t};Object.defineProperty(t,"__esModule",{value:!0}),t.AudioFileWriter=void 0;var a=o(r(10952)),s=r(95245),c=function(){function e(e){var t=this;this.id=function(){return t.privId},s.Contracts.throwIfNullOrUndefined(a.openSync,"\nFile System access not available, please use Push or PullAudioOutputStream"),this.privFd=a.openSync(e,"w")}return Object.defineProperty(e.prototype,"format",{set:function(e){s.Contracts.throwIfNotUndefined(this.privAudioFormat,"format is already set"),this.privAudioFormat=e;var t=0;this.privAudioFormat.hasHeader&&(t=this.privAudioFormat.header.byteLength),void 0!==this.privFd&&(this.privWriteStream=a.createWriteStream("",{fd:this.privFd,start:t,autoClose:!1}))},enumerable:!1,configurable:!0}),e.prototype.write=function(e){s.Contracts.throwIfNullOrUndefined(this.privAudioFormat,"must set format before writing."),void 0!==this.privWriteStream&&this.privWriteStream.write(new Uint8Array(e.slice(0)))},e.prototype.close=function(){var e=this;void 0!==this.privFd&&(this.privWriteStream.on("finish",(function(){e.privAudioFormat.hasHeader&&(e.privAudioFormat.updateHeader(e.privWriteStream.bytesWritten),a.writeSync(e.privFd,new Int8Array(e.privAudioFormat.header),0,e.privAudioFormat.header.byteLength,0)),a.closeSync(e.privFd),e.privFd=void 0})),this.privWriteStream.end())},e}();t.AudioFileWriter=c},72025:function(e,t,r){"use strict";var n,i=this&&this.__extends||(n=function(e,t){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])},n(e,t)},function(e,t){function r(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}),o=this&&this.__awaiter||function(e,t,r,n){return new(r||(r=Promise))((function(i,o){function a(e){try{c(n.next(e))}catch(e){o(e)}}function s(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?i(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(a,s)}c((n=n.apply(e,t||[])).next())}))},a=this&&this.__generator||function(e,t){var r,n,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function s(o){return function(s){return function(o){if(r)throw new TypeError("Generator is already executing.");for(;a;)try{if(r=1,n&&(i=2&o[0]?n.return:o[0]?n.throw||((i=n.return)&&i.call(n),0):n.next)&&!(i=i.call(n,o[1])).done)return i;switch(n=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return a.label++,{value:o[1],done:!1};case 5:a.label++,n=o[1],o=[0];continue;case 7:o=a.ops.pop(),a.trys.pop();continue;default:if(!(i=a.trys,(i=i.length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]e.byteLength)return t.set(this.privLastChunkView.slice(0,e.byteLength)),this.privLastChunkView=this.privLastChunkView.slice(e.byteLength),[2,Promise.resolve(e.byteLength)];t.set(this.privLastChunkView),r=this.privLastChunkView.length,this.privLastChunkView=void 0}o.label=1;case 1:return re.byteLength-r?(i=n.buffer.slice(0,e.byteLength-r),this.privLastChunkView=new Int8Array(n.buffer.slice(e.byteLength-r))):i=n.buffer,t.set(new Int8Array(i),r),r+=i.byteLength,[3,5]);case 3:return[4,this.privStream.readEnded()];case 4:o.sent(),o.label=5;case 5:return[3,1];case 6:return[2,r]}}))}))},t.prototype.write=function(e){c.Contracts.throwIfNullOrUndefined(this.privStream,"must set format before writing"),this.privStream.writeStreamChunk({buffer:e,isEnd:!1,timeReceived:Date.now()})},t.prototype.close=function(){this.privStream.close()},t}(p);t.PullAudioOutputStreamImpl=d;var f=function(e){function t(){return e.call(this)||this}return i(t,e),t.create=function(e){return new h(e)},t}(l);t.PushAudioOutputStream=f;var h=function(e){function t(t){var r=e.call(this)||this;return r.privId=s.createNoDashGuid(),r.privCallback=t,r}return i(t,e),Object.defineProperty(t.prototype,"format",{set:function(e){},enumerable:!1,configurable:!0}),t.prototype.write=function(e){this.privCallback.write&&this.privCallback.write(e)},t.prototype.close=function(){this.privCallback.close&&this.privCallback.close()},t.prototype.id=function(){return this.privId},t}(f);t.PushAudioOutputStreamImpl=h},18698:function(e,t){"use strict";var r,n,i=this&&this.__extends||(r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])},r(e,t)},function(e,t){function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)});Object.defineProperty(t,"__esModule",{value:!0}),t.AudioStreamFormatImpl=t.AudioStreamFormat=t.AudioFormatTag=void 0,function(e){e[e.PCM=1]="PCM",e[e.MuLaw=2]="MuLaw",e[e.Siren=3]="Siren",e[e.MP3=4]="MP3",e[e.SILKSkype=5]="SILKSkype",e[e.OGG_OPUS=6]="OGG_OPUS",e[e.WEBM_OPUS=7]="WEBM_OPUS",e[e.ALaw=8]="ALaw"}(n=t.AudioFormatTag||(t.AudioFormatTag={}));var o=function(){function e(){}return e.getDefaultInputFormat=function(){return a.getDefaultInputFormat()},e.getWaveFormatPCM=function(e,t,r){return new a(e,t,r)},e}();t.AudioStreamFormat=o;var a=function(e){function t(t,r,i,o){void 0===t&&(t=16e3),void 0===r&&(r=16),void 0===i&&(i=1),void 0===o&&(o=n.PCM);var a=e.call(this)||this;switch(a.setString=function(e,t,r){for(var n=0;n0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&this.sourceBufferAvailable()))return[3,2];this.privAppendingToBuffer=!0,e=this.privAudioBuffer.shift();try{this.privSourceBuffer.appendBuffer(e)}catch(t){return this.privAudioBuffer.unshift(e),console.log("buffer filled, pausing addition of binaries until space is made"),[2]}return[4,this.notifyPlayback()];case 1:return t.sent(),[3,4];case 2:return this.canEndStream()?[4,this.handleSourceBufferUpdateEnd()]:[3,4];case 3:t.sent(),t.label=4;case 4:return[2]}}))}))},e.prototype.handleSourceBufferUpdateEnd=function(){return i(this,void 0,void 0,(function(){return o(this,(function(e){switch(e.label){case 0:return this.canEndStream()&&this.sourceBufferAvailable()?(this.privMediaSource.endOfStream(),[4,this.notifyPlayback()]):[3,2];case 1:e.sent(),e.label=2;case 2:return[2]}}))}))},e.prototype.notifyPlayback=function(){return i(this,void 0,void 0,(function(){var e=this;return o(this,(function(t){switch(t.label){case 0:return this.privPlaybackStarted||void 0===this.privAudio?[3,2]:(this.privPlaybackStarted=!0,this.onAudioStart&&this.onAudioStart(this),this.privAudio.onended=function(){e.onAudioEnd&&e.onAudioEnd(e)},this.privIsPaused?[3,2]:[4,this.privAudio.play()]);case 1:t.sent(),t.label=2;case 2:return[2]}}))}))},e.prototype.canEndStream=function(){return this.isClosed&&void 0!==this.privSourceBuffer&&0===this.privAudioBuffer.length&&this.privMediaSourceOpened&&!this.privAppendingToBuffer&&"open"===this.privMediaSource.readyState},e.prototype.sourceBufferAvailable=function(){return void 0!==this.privSourceBuffer&&!this.privSourceBuffer.updating},e}();t.SpeakerAudioDestination=p},33785:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.AutoDetectSourceLanguageConfig=void 0;var n=r(89190),i=r(95245),o=r(70881),a=function(){function e(){this.privProperties=new o.PropertyCollection}return e.fromOpenRange=function(){var t=new e;return t.properties.setProperty(o.PropertyId.SpeechServiceConnection_AutoDetectSourceLanguages,n.AutoDetectSourceLanguagesOpenRangeOptionName),t},e.fromLanguages=function(t){i.Contracts.throwIfArrayEmptyOrWhitespace(t,"languages");var r=new e;return r.properties.setProperty(o.PropertyId.SpeechServiceConnection_AutoDetectSourceLanguages,t.join()),r},e.fromSourceLanguageConfigs=function(t){if(t.length<1)throw new Error("Expected non-empty SourceLanguageConfig array.");var r=new e,n=[];return t.forEach((function(e){if(n.push(e.language),void 0!==e.endpointId&&""!==e.endpointId){var t=e.language+o.PropertyId.SpeechServiceConnection_EndpointId.toString();r.properties.setProperty(t,e.endpointId)}})),r.properties.setProperty(o.PropertyId.SpeechServiceConnection_AutoDetectSourceLanguages,n.join()),r},Object.defineProperty(e.prototype,"properties",{get:function(){return this.privProperties},enumerable:!1,configurable:!0}),e}();t.AutoDetectSourceLanguageConfig=a},31474:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.AutoDetectSourceLanguageResult=void 0;var n=r(95245),i=function(){function e(e,t){n.Contracts.throwIfNullOrUndefined(e,"language"),n.Contracts.throwIfNullOrUndefined(t,"languageDetectionConfidence"),this.privLanguage=e,this.privLanguageDetectionConfidence=t}return e.fromResult=function(t){return new e(t.language,t.languageDetectionConfidence)},Object.defineProperty(e.prototype,"language",{get:function(){return this.privLanguage},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"languageDetectionConfidence",{get:function(){return this.privLanguageDetectionConfidence},enumerable:!1,configurable:!0}),e}();t.AutoDetectSourceLanguageResult=i},33553:function(e,t,r){"use strict";var n,i=this&&this.__extends||(n=function(e,t){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])},n(e,t)},function(e,t){function r(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)});Object.defineProperty(t,"__esModule",{value:!0}),t.BotFrameworkConfig=void 0;var o=r(95245),a=r(79707),s=r(70881),c=function(e){function t(){return e.call(this)||this}return i(t,e),t.fromSubscription=function(e,t,r){o.Contracts.throwIfNullOrWhitespace(e,"subscription"),o.Contracts.throwIfNullOrWhitespace(t,"region");var n=new a.DialogServiceConfigImpl;return n.setProperty(s.PropertyId.Conversation_DialogType,a.DialogServiceConfig.DialogTypes.BotFramework),n.setProperty(s.PropertyId.SpeechServiceConnection_Key,e),n.setProperty(s.PropertyId.SpeechServiceConnection_Region,t),r&&n.setProperty(s.PropertyId.Conversation_ApplicationId,r),n},t.fromAuthorizationToken=function(e,t,r){o.Contracts.throwIfNullOrWhitespace(e,"authorizationToken"),o.Contracts.throwIfNullOrWhitespace(t,"region");var n=new a.DialogServiceConfigImpl;return n.setProperty(s.PropertyId.Conversation_DialogType,a.DialogServiceConfig.DialogTypes.BotFramework),n.setProperty(s.PropertyId.SpeechServiceAuthorization_Token,e),n.setProperty(s.PropertyId.SpeechServiceConnection_Region,t),r&&n.setProperty(s.PropertyId.Conversation_ApplicationId,r),n},t.fromHost=function(e,t,r){o.Contracts.throwIfNullOrUndefined(e,"host");var n=e instanceof URL?e:new URL("wss://"+e+".convai.speech.azure.us");o.Contracts.throwIfNullOrUndefined(n,"resolvedHost");var i=new a.DialogServiceConfigImpl;return i.setProperty(s.PropertyId.Conversation_DialogType,a.DialogServiceConfig.DialogTypes.BotFramework),i.setProperty(s.PropertyId.SpeechServiceConnection_Host,n.toString()),void 0!==t&&i.setProperty(s.PropertyId.SpeechServiceConnection_Key,t),i},t.fromEndpoint=function(e,t){o.Contracts.throwIfNull(e,"endpoint");var r=new a.DialogServiceConfigImpl;return r.setProperty(s.PropertyId.Conversation_DialogType,a.DialogServiceConfig.DialogTypes.BotFramework),r.setProperty(s.PropertyId.SpeechServiceConnection_Endpoint,e.toString()),void 0!==t&&r.setProperty(s.PropertyId.SpeechServiceConnection_Key,t),r},t}(a.DialogServiceConfigImpl);t.BotFrameworkConfig=c},57065:function(e,t,r){"use strict";var n,i=this&&this.__extends||(n=function(e,t){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])},n(e,t)},function(e,t){function r(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)});Object.defineProperty(t,"__esModule",{value:!0}),t.CancellationDetails=void 0;var o=r(89190),a=r(16352),s=r(70881),c=function(e){function t(t,r,n){return e.call(this,t,r,n)||this}return i(t,e),t.fromResult=function(e){var r=s.CancellationReason.Error,n=s.CancellationErrorCode.NoError;if(e instanceof s.RecognitionResult&&e.json){var i=o.SimpleSpeechPhrase.fromJSON(e.json);r=o.EnumTranslation.implTranslateCancelResult(i.RecognitionStatus)}return e.properties&&(n=s.CancellationErrorCode[e.properties.getProperty(o.CancellationErrorCodePropertyName,s.CancellationErrorCode[s.CancellationErrorCode.NoError])]),new t(r,e.errorDetails,n)},t}(a.CancellationDetailsBase);t.CancellationDetails=c},16352:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CancellationDetailsBase=void 0;var r=function(){function e(e,t,r){this.privReason=e,this.privErrorDetails=t,this.privErrorCode=r}return Object.defineProperty(e.prototype,"reason",{get:function(){return this.privReason},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"errorDetails",{get:function(){return this.privErrorDetails},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"ErrorCode",{get:function(){return this.privErrorCode},enumerable:!1,configurable:!0}),e}();t.CancellationDetailsBase=r},85711:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CancellationErrorCode=void 0,function(e){e[e.NoError=0]="NoError",e[e.AuthenticationFailure=1]="AuthenticationFailure",e[e.BadRequestParameters=2]="BadRequestParameters",e[e.TooManyRequests=3]="TooManyRequests",e[e.ConnectionFailure=4]="ConnectionFailure",e[e.ServiceTimeout=5]="ServiceTimeout",e[e.ServiceError=6]="ServiceError",e[e.RuntimeError=7]="RuntimeError"}(t.CancellationErrorCode||(t.CancellationErrorCode={}))},6119:function(e,t,r){"use strict";var n,i=this&&this.__extends||(n=function(e,t){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])},n(e,t)},function(e,t){function r(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)});Object.defineProperty(t,"__esModule",{value:!0}),t.CancellationEventArgsBase=void 0;var o=function(e){function t(t,r,n,i,o){var a=e.call(this,i,o)||this;return a.privReason=t,a.privErrorDetails=r,a.privErrorCode=n,a}return i(t,e),Object.defineProperty(t.prototype,"reason",{get:function(){return this.privReason},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"errorCode",{get:function(){return this.privErrorCode},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"errorDetails",{get:function(){return this.privErrorDetails},enumerable:!1,configurable:!0}),t}(r(70881).RecognitionEventArgs);t.CancellationEventArgsBase=o},74859:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CancellationReason=void 0,function(e){e[e.Error=0]="Error",e[e.EndOfStream=1]="EndOfStream"}(t.CancellationReason||(t.CancellationReason={}))},39112:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Connection=void 0;var n=r(89190),i=r(20868),o=r(32501),a=r(95245),s=r(70881),c=function(){function e(){}return e.fromRecognizer=function(t){var r=t.internalData,n=new e;return n.privInternalData=r,n.setupEvents(),n},e.fromSynthesizer=function(t){var r=t.internalData,n=new e;return n.privInternalData=r,n.setupEvents(),n},e.prototype.openConnection=function(e,t){i.marshalPromiseToCallbacks(this.privInternalData.connect(),e,t)},e.prototype.closeConnection=function(e,t){if(this.privInternalData instanceof n.SynthesisAdapterBase)throw new Error("Disconnecting a synthesizer's connection is currently not supported");i.marshalPromiseToCallbacks(this.privInternalData.disconnect(),e,t)},e.prototype.setMessageProperty=function(e,t,r){if(a.Contracts.throwIfNullOrWhitespace(t,"propertyName"),this.privInternalData instanceof n.ServiceRecognizerBase){if("speech.context"!==e.toLowerCase())throw new Error("Only speech.context message property sets are currently supported for recognizer");this.privInternalData.speechContext.setSection(t,r)}else if(this.privInternalData instanceof n.SynthesisAdapterBase){if("synthesis.context"!==e.toLowerCase())throw new Error("Only synthesis.context message property sets are currently supported for synthesizer");this.privInternalData.synthesisContext.setSection(t,r)}},e.prototype.sendMessageAsync=function(e,t,r,n){i.marshalPromiseToCallbacks(this.privInternalData.sendNetworkMessage(e,t),r,n)},e.prototype.close=function(){},e.prototype.setupEvents=function(){var e=this;this.privEventListener=this.privInternalData.connectionEvents.attach((function(t){"ConnectionEstablishedEvent"===t.name?e.connected&&e.connected(new s.ConnectionEventArgs(t.connectionId)):"ConnectionClosedEvent"===t.name?e.disconnected&&e.disconnected(new s.ConnectionEventArgs(t.connectionId)):"ConnectionMessageSentEvent"===t.name?e.messageSent&&e.messageSent(new s.ConnectionMessageEventArgs(new o.ConnectionMessageImpl(t.message))):"ConnectionMessageReceivedEvent"===t.name&&e.messageReceived&&e.messageReceived(new s.ConnectionMessageEventArgs(new o.ConnectionMessageImpl(t.message)))})),this.privServiceEventListener=this.privInternalData.serviceEvents.attach((function(t){e.receivedServiceMessage&&e.receivedServiceMessage(new s.ServiceEventArgs(t.jsonString,t.name))}))},e}();t.Connection=c},39911:function(e,t,r){"use strict";var n,i=this&&this.__extends||(n=function(e,t){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])},n(e,t)},function(e,t){function r(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)});Object.defineProperty(t,"__esModule",{value:!0}),t.ConnectionEventArgs=void 0;var o=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return i(t,e),t}(r(70881).SessionEventArgs);t.ConnectionEventArgs=o},32501:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ConnectionMessageImpl=t.ConnectionMessage=void 0;var n=r(37014),i=r(20868),o=r(57317),a=r(56300),s=function(){};t.ConnectionMessage=s;var c=function(){function e(e){var t=this;this.privConnectionMessage=e,this.privProperties=new o.PropertyCollection,this.privConnectionMessage.headers[n.HeaderNames.ConnectionId]&&this.privProperties.setProperty(a.PropertyId.Speech_SessionId,this.privConnectionMessage.headers[n.HeaderNames.ConnectionId]),Object.keys(this.privConnectionMessage.headers).forEach((function(e,r,n){t.privProperties.setProperty(e,t.privConnectionMessage.headers[e])}))}return Object.defineProperty(e.prototype,"path",{get:function(){return this.privConnectionMessage.headers[Object.keys(this.privConnectionMessage.headers).find((function(e){return e.toLowerCase()==="path".toLowerCase()}))]},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"isTextMessage",{get:function(){return this.privConnectionMessage.messageType===i.MessageType.Text},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"isBinaryMessage",{get:function(){return this.privConnectionMessage.messageType===i.MessageType.Binary},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"TextMessage",{get:function(){return this.privConnectionMessage.textBody},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"binaryMessage",{get:function(){return this.privConnectionMessage.binaryBody},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"properties",{get:function(){return this.privProperties},enumerable:!1,configurable:!0}),e.prototype.toString=function(){return""},e}();t.ConnectionMessageImpl=c},43020:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ConnectionMessageEventArgs=void 0;var r=function(){function e(e){this.privConnectionMessage=e}return Object.defineProperty(e.prototype,"message",{get:function(){return this.privConnectionMessage},enumerable:!1,configurable:!0}),e.prototype.toString=function(){return"Message: "+this.privConnectionMessage.toString()},e}();t.ConnectionMessageEventArgs=r},95245:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Contracts=void 0;var r=function(){function e(){}return e.throwIfNullOrUndefined=function(e,t){if(null==e)throw new Error("throwIfNullOrUndefined:"+t)},e.throwIfNull=function(e,t){if(null===e)throw new Error("throwIfNull:"+t)},e.throwIfNullOrWhitespace=function(t,r){if(e.throwIfNullOrUndefined(t,r),(""+t).trim().length<1)throw new Error("throwIfNullOrWhitespace:"+r)},e.throwIfDisposed=function(e){if(e)throw new Error("the object is already disposed")},e.throwIfArrayEmptyOrWhitespace=function(t,r){if(e.throwIfNullOrUndefined(t,r),0===t.length)throw new Error("throwIfArrayEmptyOrWhitespace:"+r);for(var n=0,i=t;n0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]"+a+""),a=""+a+""},e.prototype.speakTextAsync=function(e,t,r,n){this.speakImpl(e,!1,t,r,n)},e.prototype.speakSsmlAsync=function(e,t,r,n){this.speakImpl(e,!0,t,r,n)},e.prototype.close=function(e,t){l.Contracts.throwIfDisposed(this.privDisposed),a.marshalPromiseToCallbacks(this.dispose(!0),e,t)},Object.defineProperty(e.prototype,"internalData",{get:function(){return this.privAdapter},enumerable:!1,configurable:!0}),e.prototype.dispose=function(e){return n(this,void 0,void 0,(function(){return i(this,(function(t){switch(t.label){case 0:return this.privDisposed?[2]:e&&this.privAdapter?[4,this.privAdapter.dispose()]:[3,2];case 1:t.sent(),t.label=2;case 2:return this.privDisposed=!0,[2]}}))}))},e.prototype.createSynthesizerConfig=function(e){return new o.SynthesizerConfig(e,this.privProperties)},e.prototype.createSynthesisAdapter=function(e,t,r,n){return new o.SynthesisAdapterBase(e,t,n,this,this.audioConfig)},e.prototype.implCommonSynthesizeSetup=function(){var e=this,t="undefined"!=typeof window?"Browser":"Node",r="unknown",n="unknown";"undefined"!=typeof navigator&&(t=t+"/"+navigator.platform,r=navigator.userAgent,n=navigator.appVersion);var i=this.createSynthesizerConfig(new o.SpeechServiceConfig(new o.Context(new o.OS(t,r,n)))),a=this.privProperties.getProperty(p.PropertyId.SpeechServiceConnection_Key,void 0),s=a&&""!==a?new o.CognitiveSubscriptionKeyAuthentication(a):new o.CognitiveTokenAuthentication((function(t){var r=e.privProperties.getProperty(p.PropertyId.SpeechServiceAuthorization_Token,void 0);return Promise.resolve(r)}),(function(t){var r=e.privProperties.getProperty(p.PropertyId.SpeechServiceAuthorization_Token,void 0);return Promise.resolve(r)}));this.privAdapter=this.createSynthesisAdapter(s,this.privConnectionFactory,this.audioConfig,i),this.privAdapter.audioOutputFormat=c.AudioOutputFormatImpl.fromSpeechSynthesisOutputFormat(p.SpeechSynthesisOutputFormat[this.properties.getProperty(p.PropertyId.SpeechServiceConnection_SynthOutputFormat,void 0)])},e.prototype.speakImpl=function(e,t,r,n,i){var o=this;try{l.Contracts.throwIfDisposed(this.privDisposed);var c=a.createNoDashGuid(),d=void 0;d=i instanceof p.PushAudioOutputStreamCallback?new u.PushAudioOutputStreamImpl(i):i instanceof p.PullAudioOutputStream?i:void 0!==i?new s.AudioFileWriter(i):void 0,this.synthesisRequestQueue.enqueue(new f(c,e,t,(function(e){if(o.privSynthesizing=!1,r)try{r(e)}catch(e){n&&n(e)}r=void 0,o.adapterSpeak().catch((function(){}))}),(function(e){n&&n(e)}),d)),this.adapterSpeak().catch((function(){}))}catch(e){if(n)if(e instanceof Error){var h=e;n(h.name+": "+h.message)}else n(e);this.dispose(!0).catch((function(){}))}},e.prototype.adapterSpeak=function(){return n(this,void 0,void 0,(function(){var e;return i(this,(function(t){switch(t.label){case 0:return this.privDisposed||this.privSynthesizing?[3,2]:(this.privSynthesizing=!0,[4,this.synthesisRequestQueue.dequeue()]);case 1:return e=t.sent(),[2,this.privAdapter.Speak(e.text,e.isSSML,e.requestId,e.cb,e.err,e.dataStream)];case 2:return[2]}}))}))},e.XMLEncode=function(e){return e.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")},e}();t.SpeechSynthesizer=d;var f=function(e,t,r,n,i,o){this.requestId=e,this.text=t,this.isSSML=r,this.cb=n,this.err=i,this.dataStream=o};t.SynthesisRequest=f},89701:function(e,t,r){"use strict";var n,i=this&&this.__extends||(n=function(e,t){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])},n(e,t)},function(e,t){function r(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)});Object.defineProperty(t,"__esModule",{value:!0}),t.SpeechTranslationConfigImpl=t.SpeechTranslationConfig=void 0;var o=r(89190),a=r(95245),s=r(70881),c=function(e){function t(){return e.call(this)||this}return i(t,e),t.fromSubscription=function(e,t){a.Contracts.throwIfNullOrWhitespace(e,"subscriptionKey"),a.Contracts.throwIfNullOrWhitespace(t,"region");var r=new u;return r.properties.setProperty(s.PropertyId.SpeechServiceConnection_Key,e),r.properties.setProperty(s.PropertyId.SpeechServiceConnection_Region,t),r},t.fromAuthorizationToken=function(e,t){a.Contracts.throwIfNullOrWhitespace(e,"authorizationToken"),a.Contracts.throwIfNullOrWhitespace(t,"region");var r=new u;return r.properties.setProperty(s.PropertyId.SpeechServiceAuthorization_Token,e),r.properties.setProperty(s.PropertyId.SpeechServiceConnection_Region,t),r},t.fromHost=function(e,t){a.Contracts.throwIfNull(e,"hostName");var r=new u;return r.setProperty(s.PropertyId.SpeechServiceConnection_Host,e.protocol+"//"+e.hostname+(""===e.port?"":":"+e.port)),void 0!==t&&r.setProperty(s.PropertyId.SpeechServiceConnection_Key,t),r},t.fromEndpoint=function(e,t){a.Contracts.throwIfNull(e,"endpoint"),a.Contracts.throwIfNull(t,"subscriptionKey");var r=new u;return r.properties.setProperty(s.PropertyId.SpeechServiceConnection_Endpoint,e.href),r.properties.setProperty(s.PropertyId.SpeechServiceConnection_Key,t),r},t}(s.SpeechConfig);t.SpeechTranslationConfig=c;var u=function(e){function t(){var t=e.call(this)||this;return t.privSpeechProperties=new s.PropertyCollection,t.outputFormat=s.OutputFormat.Simple,t}return i(t,e),Object.defineProperty(t.prototype,"authorizationToken",{set:function(e){a.Contracts.throwIfNullOrWhitespace(e,"value"),this.privSpeechProperties.setProperty(s.PropertyId.SpeechServiceAuthorization_Token,e)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"speechRecognitionLanguage",{get:function(){return this.privSpeechProperties.getProperty(s.PropertyId[s.PropertyId.SpeechServiceConnection_RecoLanguage])},set:function(e){a.Contracts.throwIfNullOrWhitespace(e,"value"),this.privSpeechProperties.setProperty(s.PropertyId.SpeechServiceConnection_RecoLanguage,e)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"subscriptionKey",{get:function(){return this.privSpeechProperties.getProperty(s.PropertyId[s.PropertyId.SpeechServiceConnection_Key])},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"outputFormat",{get:function(){return s.OutputFormat[this.privSpeechProperties.getProperty(o.OutputFormatPropertyName,void 0)]},set:function(e){this.privSpeechProperties.setProperty(o.OutputFormatPropertyName,s.OutputFormat[e])},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"endpointId",{get:function(){return this.privSpeechProperties.getProperty(s.PropertyId.SpeechServiceConnection_EndpointId)},set:function(e){this.privSpeechProperties.setProperty(s.PropertyId.SpeechServiceConnection_EndpointId,e)},enumerable:!1,configurable:!0}),t.prototype.addTargetLanguage=function(e){a.Contracts.throwIfNullOrWhitespace(e,"value");var t=this.targetLanguages;t.push(e),this.privSpeechProperties.setProperty(s.PropertyId.SpeechServiceConnection_TranslationToLanguages,t.join(","))},Object.defineProperty(t.prototype,"targetLanguages",{get:function(){return void 0!==this.privSpeechProperties.getProperty(s.PropertyId.SpeechServiceConnection_TranslationToLanguages,void 0)?this.privSpeechProperties.getProperty(s.PropertyId.SpeechServiceConnection_TranslationToLanguages).split(","):[]},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"voiceName",{get:function(){return this.getProperty(s.PropertyId[s.PropertyId.SpeechServiceConnection_TranslationVoice])},set:function(e){a.Contracts.throwIfNullOrWhitespace(e,"value"),this.privSpeechProperties.setProperty(s.PropertyId.SpeechServiceConnection_TranslationVoice,e)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"region",{get:function(){return this.privSpeechProperties.getProperty(s.PropertyId.SpeechServiceConnection_Region)},enumerable:!1,configurable:!0}),t.prototype.setProxy=function(e,t,r,n){this.setProperty(s.PropertyId[s.PropertyId.SpeechServiceConnection_ProxyHostName],e),this.setProperty(s.PropertyId[s.PropertyId.SpeechServiceConnection_ProxyPort],t),this.setProperty(s.PropertyId[s.PropertyId.SpeechServiceConnection_ProxyUserName],r),this.setProperty(s.PropertyId[s.PropertyId.SpeechServiceConnection_ProxyPassword],n)},t.prototype.getProperty=function(e,t){return this.privSpeechProperties.getProperty(e,t)},t.prototype.setProperty=function(e,t){this.privSpeechProperties.setProperty(e,t)},Object.defineProperty(t.prototype,"properties",{get:function(){return this.privSpeechProperties},enumerable:!1,configurable:!0}),t.prototype.close=function(){},t.prototype.setServiceProperty=function(e,t,r){var n=JSON.parse(this.privSpeechProperties.getProperty(o.ServicePropertiesPropertyName,"{}"));n[e]=t,this.privSpeechProperties.setProperty(o.ServicePropertiesPropertyName,JSON.stringify(n))},t.prototype.setProfanity=function(e){this.privSpeechProperties.setProperty(s.PropertyId.SpeechServiceResponse_ProfanityOption,s.ProfanityOption[e])},t.prototype.enableAudioLogging=function(){this.privSpeechProperties.setProperty(s.PropertyId.SpeechServiceConnection_EnableAudioLogging,"true")},t.prototype.requestWordLevelTimestamps=function(){this.privSpeechProperties.setProperty(s.PropertyId.SpeechServiceResponse_RequestWordLevelTimestamps,"true")},t.prototype.enableDictation=function(){this.privSpeechProperties.setProperty(o.ForceDictationPropertyName,"true")},Object.defineProperty(t.prototype,"speechSynthesisLanguage",{get:function(){return this.privSpeechProperties.getProperty(s.PropertyId.SpeechServiceConnection_SynthLanguage)},set:function(e){this.privSpeechProperties.setProperty(s.PropertyId.SpeechServiceConnection_SynthLanguage,e)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"speechSynthesisVoiceName",{get:function(){return this.privSpeechProperties.getProperty(s.PropertyId.SpeechServiceConnection_SynthVoice)},set:function(e){this.privSpeechProperties.setProperty(s.PropertyId.SpeechServiceConnection_SynthVoice,e)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"speechSynthesisOutputFormat",{get:function(){return s.SpeechSynthesisOutputFormat[this.privSpeechProperties.getProperty(s.PropertyId.SpeechServiceConnection_SynthOutputFormat,void 0)]},set:function(e){this.privSpeechProperties.setProperty(s.PropertyId.SpeechServiceConnection_SynthOutputFormat,s.SpeechSynthesisOutputFormat[e])},enumerable:!1,configurable:!0}),t}(c);t.SpeechTranslationConfigImpl=u},35054:function(e,t,r){"use strict";var n,i=this&&this.__extends||(n=function(e,t){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])},n(e,t)},function(e,t){function r(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}),o=this&&this.__awaiter||function(e,t,r,n){return new(r||(r=Promise))((function(i,o){function a(e){try{c(n.next(e))}catch(e){o(e)}}function s(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?i(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(a,s)}c((n=n.apply(e,t||[])).next())}))},a=this&&this.__generator||function(e,t){var r,n,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function s(o){return function(s){return function(o){if(r)throw new TypeError("Generator is already executing.");for(;a;)try{if(r=1,n&&(i=2&o[0]?n.return:o[0]?n.throw||((i=n.return)&&i.call(n),0):n.next)&&!(i=i.call(n,o[1])).done)return i;switch(n=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return a.label++,{value:o[1],done:!1};case 5:a.label++,n=o[1],o=[0];continue;case 7:o=a.ops.pop(),a.trys.pop();continue;default:if(!(i=a.trys,(i=i.length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&a!==n.me.displayName&&n.changeNicknameAsync(a)}}catch(t){}},n.onConversationExpiration=function(e,t){var r,i;try{(null===(r=n.privConversationTranslator)||void 0===r?void 0:r.conversationExpiration)&&(null===(i=n.privConversationTranslator)||void 0===i||i.conversationExpiration(n.privConversationTranslator,t))}catch(t){}},n.privProperties=new p.PropertyCollection,n.privManager=new c.ConversationManager,t.getProperty(p.PropertyId[p.PropertyId.SpeechServiceConnection_RecoLanguage])||t.setProperty(p.PropertyId[p.PropertyId.SpeechServiceConnection_RecoLanguage],c.ConversationConnectionConfig.defaultLanguageCode),n.privLanguage=t.getProperty(p.PropertyId[p.PropertyId.SpeechServiceConnection_RecoLanguage]),r)n.privConversationId=r;else{0===t.targetLanguages.length&&t.addTargetLanguage(n.privLanguage),t.getProperty(p.PropertyId[p.PropertyId.SpeechServiceResponse_ProfanityOption])||t.setProfanity(p.ProfanityOption.Masked);var i=t.getProperty(p.PropertyId[p.PropertyId.ConversationTranslator_Name]);(null==i||i.length<=1||i.length>50)&&(i="Host"),t.setProperty(p.PropertyId[p.PropertyId.ConversationTranslator_Name],i)}n.privConfig=t;var u=t;return l.Contracts.throwIfNull(u,"speechConfig"),n.privProperties=u.properties.clone(),n.privIsConnected=!1,n.privParticipants=new c.InternalParticipants,n.privIsReady=!1,n.privTextMessageMaxLength=1e3,n}return i(t,e),Object.defineProperty(t.prototype,"conversationTranslator",{set:function(e){this.privConversationTranslator=e},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"room",{get:function(){return this.privRoom},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"connection",{get:function(){return this.privConversationRecognizer},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"authorizationToken",{get:function(){return this.privToken},set:function(e){l.Contracts.throwIfNullOrWhitespace(e,"authorizationToken"),this.privToken=e},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"config",{get:function(){return this.privConfig},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"conversationId",{get:function(){return this.privRoom?this.privRoom.roomId:this.privConversationId},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"properties",{get:function(){return this.privProperties},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"speechRecognitionLanguage",{get:function(){return this.privLanguage},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"isMutedByHost",{get:function(){var e,t;return!(null===(e=this.privParticipants.me)||void 0===e?void 0:e.isHost)&&(null===(t=this.privParticipants.me)||void 0===t?void 0:t.isMuted)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"isConnected",{get:function(){return this.privIsConnected&&this.privIsReady},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"participants",{get:function(){return this.toParticipants(!0)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"me",{get:function(){return this.toParticipant(this.privParticipants.me)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"host",{get:function(){return this.toParticipant(this.privParticipants.host)},enumerable:!1,configurable:!0}),t.prototype.createConversationAsync=function(e,t){var r=this;try{this.privConversationRecognizer&&this.handleError(new Error(this.privErrors.permissionDeniedStart),t),this.privManager.createOrJoin(this.privProperties,void 0,(function(n){n||r.handleError(new Error(r.privErrors.permissionDeniedConnect),t),r.privRoom=n,r.handleCallback(e,t)}),(function(e){r.handleError(e,t)}))}catch(e){this.handleError(e,t)}},t.prototype.startConversationAsync=function(e,t){var r=this;try{this.privConversationRecognizer&&this.handleError(new Error(this.privErrors.permissionDeniedStart),t),l.Contracts.throwIfNullOrUndefined(this.privRoom,this.privErrors.permissionDeniedConnect),this.privParticipants.meId=this.privRoom.participantId,this.privConversationRecognizer=c.ConversationRecognizerFactory.fromConfig(this.privConfig),this.privConversationRecognizer.connected=this.onConnected,this.privConversationRecognizer.disconnected=this.onDisconnected,this.privConversationRecognizer.canceled=this.onCanceled,this.privConversationRecognizer.participantUpdateCommandReceived=this.onParticipantUpdateCommandReceived,this.privConversationRecognizer.lockRoomCommandReceived=this.onLockRoomCommandReceived,this.privConversationRecognizer.muteAllCommandReceived=this.onMuteAllCommandReceived,this.privConversationRecognizer.participantJoinCommandReceived=this.onParticipantJoinCommandReceived,this.privConversationRecognizer.participantLeaveCommandReceived=this.onParticipantLeaveCommandReceived,this.privConversationRecognizer.translationReceived=this.onTranslationReceived,this.privConversationRecognizer.participantsListReceived=this.onParticipantsListReceived,this.privConversationRecognizer.conversationExpiration=this.onConversationExpiration,this.privConversationRecognizer.connect(this.privRoom.token,(function(){r.handleCallback(e,t)}),(function(e){r.handleError(e,t)}))}catch(e){this.handleError(e,t)}},t.prototype.addParticipantAsync=function(e,t,r){l.Contracts.throwIfNullOrUndefined(e,"Participant"),u.marshalPromiseToCallbacks(this.addParticipantImplAsync(e),t,r)},t.prototype.joinConversationAsync=function(e,t,r,n,i){var o=this;try{l.Contracts.throwIfNullOrWhitespace(e,this.privErrors.invalidArgs.replace("{arg}","conversationId")),l.Contracts.throwIfNullOrWhitespace(t,this.privErrors.invalidArgs.replace("{arg}","nickname")),l.Contracts.throwIfNullOrWhitespace(r,this.privErrors.invalidArgs.replace("{arg}","language")),this.privManager.createOrJoin(this.privProperties,e,(function(e){l.Contracts.throwIfNullOrUndefined(e,o.privErrors.permissionDeniedConnect),o.privRoom=e,o.privConfig.authorizationToken=e.cognitiveSpeechAuthToken,n&&n(e.cognitiveSpeechAuthToken)}),(function(e){o.handleError(e,i)}))}catch(e){this.handleError(e,i)}},t.prototype.deleteConversationAsync=function(e,t){u.marshalPromiseToCallbacks(this.deleteConversationImplAsync(),e,t)},t.prototype.deleteConversationImplAsync=function(){return o(this,void 0,void 0,(function(){return a(this,(function(e){switch(e.label){case 0:return l.Contracts.throwIfNullOrUndefined(this.privProperties,this.privErrors.permissionDeniedConnect),l.Contracts.throwIfNullOrWhitespace(this.privRoom.token,this.privErrors.permissionDeniedConnect),[4,this.privManager.leave(this.privProperties,this.privRoom.token)];case 1:return e.sent(),this.dispose(),[2]}}))}))},t.prototype.endConversationAsync=function(e,t){u.marshalPromiseToCallbacks(this.endConversationImplAsync(),e,t)},t.prototype.endConversationImplAsync=function(){return this.close(!0)},t.prototype.lockConversationAsync=function(e,t){var r,n=this;try{l.Contracts.throwIfDisposed(this.privIsDisposed),l.Contracts.throwIfDisposed(this.privConversationRecognizer.isDisposed()),l.Contracts.throwIfNullOrUndefined(this.privRoom,this.privErrors.permissionDeniedSend),this.canSendAsHost||this.handleError(new Error(this.privErrors.permissionDeniedConversation.replace("{command}","lock")),t),null===(r=this.privConversationRecognizer)||void 0===r||r.sendRequest(this.getLockCommand(!0),(function(){n.handleCallback(e,t)}),(function(e){n.handleError(e,t)}))}catch(e){this.handleError(e,t)}},t.prototype.muteAllParticipantsAsync=function(e,t){var r,n=this;try{l.Contracts.throwIfDisposed(this.privIsDisposed),l.Contracts.throwIfDisposed(this.privConversationRecognizer.isDisposed()),l.Contracts.throwIfNullOrUndefined(this.privConversationRecognizer,this.privErrors.permissionDeniedSend),l.Contracts.throwIfNullOrUndefined(this.privRoom,this.privErrors.permissionDeniedSend),this.canSendAsHost||this.handleError(new Error(this.privErrors.permissionDeniedConversation.replace("{command}","mute")),t),null===(r=this.privConversationRecognizer)||void 0===r||r.sendRequest(this.getMuteAllCommand(!0),(function(){n.handleCallback(e,t)}),(function(e){n.handleError(e,t)}))}catch(e){this.handleError(e,t)}},t.prototype.muteParticipantAsync=function(e,t,r){var n,i=this;try{l.Contracts.throwIfDisposed(this.privIsDisposed),l.Contracts.throwIfDisposed(this.privConversationRecognizer.isDisposed()),l.Contracts.throwIfNullOrWhitespace(e,this.privErrors.invalidArgs.replace("{arg}","userId")),l.Contracts.throwIfNullOrUndefined(this.privRoom,this.privErrors.permissionDeniedSend),this.canSend||this.handleError(new Error(this.privErrors.permissionDeniedSend),r),this.me.isHost||this.me.id===e||this.handleError(new Error(this.privErrors.permissionDeniedParticipant.replace("{command}","mute")),r),-1===this.privParticipants.getParticipantIndex(e)&&this.handleError(new Error(this.privErrors.invalidParticipantRequest),r),null===(n=this.privConversationRecognizer)||void 0===n||n.sendRequest(this.getMuteCommand(e,!0),(function(){i.handleCallback(t,r)}),(function(e){i.handleError(e,r)}))}catch(e){this.handleError(e,r)}},t.prototype.removeParticipantAsync=function(e,t,r){var n,i=this;try{if(l.Contracts.throwIfDisposed(this.privIsDisposed),this.privTranscriberRecognizer&&e.hasOwnProperty("id"))u.marshalPromiseToCallbacks(this.removeParticipantImplAsync(e),t,r);else{l.Contracts.throwIfDisposed(this.privConversationRecognizer.isDisposed()),l.Contracts.throwIfNullOrUndefined(this.privRoom,this.privErrors.permissionDeniedSend),this.canSendAsHost||this.handleError(new Error(this.privErrors.permissionDeniedParticipant.replace("{command}","remove")),r);var o="";if("string"==typeof e)o=e;else if(e.hasOwnProperty("id")){o=e.id}else if(e.hasOwnProperty("userId")){o=e.userId}l.Contracts.throwIfNullOrWhitespace(o,this.privErrors.invalidArgs.replace("{arg}","userId")),-1===this.participants.findIndex((function(e){return e.id===o}))&&this.handleError(new Error(this.privErrors.invalidParticipantRequest),r),null===(n=this.privConversationRecognizer)||void 0===n||n.sendRequest(this.getEjectCommand(o),(function(){i.handleCallback(t,r)}),(function(e){i.handleError(e,r)}))}}catch(e){this.handleError(e,r)}},t.prototype.unlockConversationAsync=function(e,t){var r,n=this;try{l.Contracts.throwIfDisposed(this.privIsDisposed),l.Contracts.throwIfDisposed(this.privConversationRecognizer.isDisposed()),l.Contracts.throwIfNullOrUndefined(this.privRoom,this.privErrors.permissionDeniedSend),this.canSendAsHost||this.handleError(new Error(this.privErrors.permissionDeniedConversation.replace("{command}","unlock")),t),null===(r=this.privConversationRecognizer)||void 0===r||r.sendRequest(this.getLockCommand(!1),(function(){n.handleCallback(e,t)}),(function(e){n.handleError(e,t)}))}catch(e){this.handleError(e,t)}},t.prototype.unmuteAllParticipantsAsync=function(e,t){var r,n=this;try{l.Contracts.throwIfDisposed(this.privIsDisposed),l.Contracts.throwIfDisposed(this.privConversationRecognizer.isDisposed()),l.Contracts.throwIfNullOrUndefined(this.privRoom,this.privErrors.permissionDeniedSend),this.canSendAsHost||this.handleError(new Error(this.privErrors.permissionDeniedConversation.replace("{command}","unmute all")),t),null===(r=this.privConversationRecognizer)||void 0===r||r.sendRequest(this.getMuteAllCommand(!1),(function(){n.handleCallback(e,t)}),(function(e){n.handleError(e,t)}))}catch(e){this.handleError(e,t)}},t.prototype.unmuteParticipantAsync=function(e,t,r){var n,i=this;try{l.Contracts.throwIfDisposed(this.privIsDisposed),l.Contracts.throwIfDisposed(this.privConversationRecognizer.isDisposed()),l.Contracts.throwIfNullOrWhitespace(e,this.privErrors.invalidArgs.replace("{arg}","userId")),l.Contracts.throwIfNullOrUndefined(this.privRoom,this.privErrors.permissionDeniedSend),this.canSend||this.handleError(new Error(this.privErrors.permissionDeniedSend),r),this.me.isHost||this.me.id===e||this.handleError(new Error(this.privErrors.permissionDeniedParticipant.replace("{command}","mute")),r),-1===this.privParticipants.getParticipantIndex(e)&&this.handleError(new Error(this.privErrors.invalidParticipantRequest),r),null===(n=this.privConversationRecognizer)||void 0===n||n.sendRequest(this.getMuteCommand(e,!1),(function(){i.handleCallback(t,r)}),(function(e){i.handleError(e,r)}))}catch(e){this.handleError(e,r)}},t.prototype.sendTextMessageAsync=function(e,t,r){var n,i=this;try{l.Contracts.throwIfDisposed(this.privIsDisposed),l.Contracts.throwIfDisposed(this.privConversationRecognizer.isDisposed()),l.Contracts.throwIfNullOrWhitespace(e,this.privErrors.invalidArgs.replace("{arg}","message")),l.Contracts.throwIfNullOrUndefined(this.privRoom,this.privErrors.permissionDeniedSend),this.canSend||this.handleError(new Error(this.privErrors.permissionDeniedSend),r),e.length>this.privTextMessageMaxLength&&this.handleError(new Error(this.privErrors.invalidArgs.replace("{arg}","message length")),r),null===(n=this.privConversationRecognizer)||void 0===n||n.sendRequest(this.getMessageCommand(e),(function(){i.handleCallback(t,r)}),(function(e){i.handleError(e,r)}))}catch(e){this.handleError(e,r)}},t.prototype.changeNicknameAsync=function(e,t,r){var n,i=this;try{l.Contracts.throwIfDisposed(this.privIsDisposed),l.Contracts.throwIfDisposed(this.privConversationRecognizer.isDisposed()),l.Contracts.throwIfNullOrWhitespace(e,this.privErrors.invalidArgs.replace("{arg}","nickname")),l.Contracts.throwIfNullOrUndefined(this.privRoom,this.privErrors.permissionDeniedSend),this.canSend||this.handleError(new Error(this.privErrors.permissionDeniedSend),r),null===(n=this.privConversationRecognizer)||void 0===n||n.sendRequest(this.getChangeNicknameCommand(e),(function(){i.handleCallback(t,r)}),(function(e){i.handleError(e,r)}))}catch(e){this.handleError(e,r)}},t.prototype.isDisposed=function(){return this.privIsDisposed},t.prototype.dispose=function(e){var t;this.isDisposed||(this.privIsDisposed=!0,null===(t=this.config)||void 0===t||t.close(),this.privConfig=void 0,this.privLanguage=void 0,this.privProperties=void 0,this.privRoom=void 0,this.privToken=void 0,this.privManager=void 0,this.privConversationRecognizer=void 0,this.privIsConnected=!1,this.privIsReady=!1,this.privParticipants=void 0)},Object.defineProperty(t.prototype,"transcriberRecognizer",{get:function(){return this.privTranscriberRecognizer},enumerable:!1,configurable:!0}),t.prototype.connectTranscriberRecognizer=function(e){return o(this,void 0,void 0,(function(){return a(this,(function(t){switch(t.label){case 0:return this.privTranscriberRecognizer?[4,this.privTranscriberRecognizer.close()]:[3,2];case 1:t.sent(),t.label=2;case 2:return this.privTranscriberRecognizer=e,this.privTranscriberRecognizer.conversation=this,[2]}}))}))},Object.defineProperty(t.prototype,"conversationInfo",{get:function(){for(var e=this.conversationId,t=this.participants.map((function(e){return{id:e.id,preferredLanguage:e.preferredLanguage,voice:e.voice}})),r={},n=0,i=c.ConversationConnectionConfig.transcriptionEventKeys;n0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]>>((3&t)<<3)&255;return n}}},9800:function(e,t,r){var n,i,o=r(29793),a=r(28084),s=0,c=0;e.exports=function(e,t,r){var u=t&&r||0,l=t||[],p=(e=e||{}).node||n,d=void 0!==e.clockseq?e.clockseq:i;if(null==p||null==d){var f=o();null==p&&(p=n=[1|f[0],f[1],f[2],f[3],f[4],f[5]]),null==d&&(d=i=16383&(f[6]<<8|f[7]))}var h=void 0!==e.msecs?e.msecs:(new Date).getTime(),v=void 0!==e.nsecs?e.nsecs:c+1,m=h-s+(v-c)/1e4;if(m<0&&void 0===e.clockseq&&(d=d+1&16383),(m<0||h>s)&&void 0===e.nsecs&&(v=0),v>=1e4)throw new Error("uuid.v1(): Can't create more than 10M uuids/sec");s=h,c=v,i=d;var _=(1e4*(268435455&(h+=122192928e5))+v)%4294967296;l[u++]=_>>>24&255,l[u++]=_>>>16&255,l[u++]=_>>>8&255,l[u++]=255&_;var T=h/4294967296*1e4&268435455;l[u++]=T>>>8&255,l[u++]=255&T,l[u++]=T>>>24&15|16,l[u++]=T>>>16&255,l[u++]=d>>>8|128,l[u++]=255&d;for(var g=0;g<6;++g)l[u+g]=p[g];return t||a(l)}},41947:function(e,t,r){var n=r(29793),i=r(28084);e.exports=function(e,t,r){var o=t&&r||0;"string"==typeof e&&(t="binary"===e?new Array(16):null,e=null);var a=(e=e||{}).random||(e.rng||n)();if(a[6]=15&a[6]|64,a[8]=63&a[8]|128,t)for(var s=0;s<16;++s)t[o+s]=a[s];return t||i(a)}},29466:function(e,t){var r,n,i;n=[],void 0===(i="function"==typeof(r=function(){return function(e){function t(e){return" "===e||"\t"===e||"\n"===e||"\f"===e||"\r"===e}function r(t){var r,n=t.exec(e.substring(v));if(n)return r=n[0],v+=r.length,r}for(var n,i,o,a,s,c=e.length,u=/^[ \t\n\r\u000c]+/,l=/^[, \t\n\r\u000c]+/,p=/^[^ \t\n\r\u000c]+/,d=/[,]+$/,f=/^\d+$/,h=/^-?(?:[0-9]+|[0-9]*\.[0-9]+)(?:[eE][+-]?[0-9]+)?$/,v=0,m=[];;){if(r(l),v>=c)return m;n=r(p),i=[],","===n.slice(-1)?(n=n.replace(d,""),T()):_()}function _(){for(r(u),o="",a="in descriptor";;){if(s=e.charAt(v),"in descriptor"===a)if(t(s))o&&(i.push(o),o="",a="after descriptor");else{if(","===s)return v+=1,o&&i.push(o),void T();if("("===s)o+=s,a="in parens";else{if(""===s)return o&&i.push(o),void T();o+=s}}else if("in parens"===a)if(")"===s)o+=s,a="in descriptor";else{if(""===s)return i.push(o),void T();o+=s}else if("after descriptor"===a)if(t(s));else{if(""===s)return void T();a="in descriptor",v-=1}v+=1}}function T(){var t,r,o,a,s,c,u,l,p,d=!1,v={};for(a=0;a=0;--o){var a=this.tryEntries[o],s=a.completion;if("root"===a.tryLoc)return i("end");if(a.tryLoc<=this.prev){var c=n.call(a,"catchLoc"),u=n.call(a,"finallyLoc");if(c&&u){if(this.prev=0;--r){var i=this.tryEntries[r];if(i.tryLoc<=this.prev&&n.call(i,"finallyLoc")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),O(r),v}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var i=n.arg;O(r)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(e,r,n){return this.delegate={iterator:R(e),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=t),v}},e}(e.exports);try{regeneratorRuntime=t}catch(e){Function("r","regeneratorRuntime = r")(t)}},92063:function(e){"use strict";e.exports=function(e,t){if(t=t.split(":")[0],!(e=+e))return!1;switch(t){case"http":case"ws":return 80!==e;case"https":case"wss":return 443!==e;case"ftp":return 21!==e;case"gopher":return 70!==e;case"file":return!1}return 0!==e}},50592:function(e){e.exports=/[\0-\x1F\x7F-\x9F]/},2675:function(e){e.exports=/[\xAD\u0600-\u0605\u061C\u06DD\u070F\u08E2\u180E\u200B-\u200F\u202A-\u202E\u2060-\u2064\u2066-\u206F\uFEFF\uFFF9-\uFFFB]|\uD804[\uDCBD\uDCCD]|\uD82F[\uDCA0-\uDCA3]|\uD834[\uDD73-\uDD7A]|\uDB40[\uDC01\uDC20-\uDC7F]/},2828:function(e){e.exports=/[!-#%-\*,-\/:;\?@\[-\]_\{\}\xA1\xA7\xAB\xB6\xB7\xBB\xBF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061E\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u09FD\u0A76\u0AF0\u0C84\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166D\u166E\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205E\u207D\u207E\u208D\u208E\u2308-\u230B\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E4E\u3001-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65]|\uD800[\uDD00-\uDD02\uDF9F\uDFD0]|\uD801\uDD6F|\uD802[\uDC57\uDD1F\uDD3F\uDE50-\uDE58\uDE7F\uDEF0-\uDEF6\uDF39-\uDF3F\uDF99-\uDF9C]|\uD803[\uDF55-\uDF59]|\uD804[\uDC47-\uDC4D\uDCBB\uDCBC\uDCBE-\uDCC1\uDD40-\uDD43\uDD74\uDD75\uDDC5-\uDDC8\uDDCD\uDDDB\uDDDD-\uDDDF\uDE38-\uDE3D\uDEA9]|\uD805[\uDC4B-\uDC4F\uDC5B\uDC5D\uDCC6\uDDC1-\uDDD7\uDE41-\uDE43\uDE60-\uDE6C\uDF3C-\uDF3E]|\uD806[\uDC3B\uDE3F-\uDE46\uDE9A-\uDE9C\uDE9E-\uDEA2]|\uD807[\uDC41-\uDC45\uDC70\uDC71\uDEF7\uDEF8]|\uD809[\uDC70-\uDC74]|\uD81A[\uDE6E\uDE6F\uDEF5\uDF37-\uDF3B\uDF44]|\uD81B[\uDE97-\uDE9A]|\uD82F\uDC9F|\uD836[\uDE87-\uDE8B]|\uD83A[\uDD5E\uDD5F]/},23978:function(e){e.exports=/[ \xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]/},39295:function(e,t,r){"use strict";t.Any=r(76027),t.Cc=r(50592),t.Cf=r(2675),t.P=r(2828),t.Z=r(23978)},76027:function(e){e.exports=/[\0-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/},61160:function(e,t,r){"use strict";var n=r(92063),i=r(73992),o=/^[\x00-\x20\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]+/,a=/[\n\r\t]/g,s=/^[A-Za-z][A-Za-z0-9+-.]*:\/\//,c=/:\d+$/,u=/^([a-z][a-z0-9.+-]*:)?(\/\/)?([\\/]+)?([\S\s]*)/i,l=/^[a-zA-Z]:/;function p(e){return(e||"").toString().replace(o,"")}var d=[["#","hash"],["?","query"],function(e,t){return v(t.protocol)?e.replace(/\\/g,"/"):e},["/","pathname"],["@","auth",1],[NaN,"host",void 0,1,1],[/:(\d*)$/,"port",void 0,1],[NaN,"hostname",void 0,1,1]],f={hash:1,query:1};function h(e){var t,n=("undefined"!=typeof window?window:void 0!==r.g?r.g:"undefined"!=typeof self?self:{}).location||{},i={},o=typeof(e=e||n);if("blob:"===e.protocol)i=new _(unescape(e.pathname),{});else if("string"===o)for(t in i=new _(e,{}),f)delete i[t];else if("object"===o){for(t in e)t in f||(i[t]=e[t]);void 0===i.slashes&&(i.slashes=s.test(e.href))}return i}function v(e){return"file:"===e||"ftp:"===e||"http:"===e||"https:"===e||"ws:"===e||"wss:"===e}function m(e,t){e=(e=p(e)).replace(a,""),t=t||{};var r,n=u.exec(e),i=n[1]?n[1].toLowerCase():"",o=!!n[2],s=!!n[3],c=0;return o?s?(r=n[2]+n[3]+n[4],c=n[2].length+n[3].length):(r=n[2]+n[4],c=n[2].length):s?(r=n[3]+n[4],c=n[3].length):r=n[4],"file:"===i?c>=2&&(r=r.slice(2)):v(i)?r=n[4]:i?o&&(r=r.slice(2)):c>=2&&v(t.protocol)&&(r=n[4]),{protocol:i,slashes:o||v(i),slashesCount:c,rest:r}}function _(e,t,r){if(e=(e=p(e)).replace(a,""),!(this instanceof _))return new _(e,t,r);var o,s,c,u,f,T,g=d.slice(),y=typeof t,E=this,b=0;for("object"!==y&&"string"!==y&&(r=t,t=null),r&&"function"!=typeof r&&(r=i.parse),o=!(s=m(e||"",t=h(t))).protocol&&!s.slashes,E.slashes=s.slashes||o&&t.slashes,E.protocol=s.protocol||t.protocol||"",e=s.rest,("file:"===s.protocol&&(2!==s.slashesCount||l.test(e))||!s.slashes&&(s.protocol||s.slashesCount<2||!v(E.protocol)))&&(g[3]=[/(.*)/,"pathname"]);b0?a-4:a;for(r=0;r>16&255,u[l++]=t>>8&255,u[l++]=255&t;2===c&&(t=n[e.charCodeAt(r)]<<2|n[e.charCodeAt(r+1)]>>4,u[l++]=255&t);1===c&&(t=n[e.charCodeAt(r)]<<10|n[e.charCodeAt(r+1)]<<4|n[e.charCodeAt(r+2)]>>2,u[l++]=t>>8&255,u[l++]=255&t);return u};for(var r=[],n=[],i="undefined"!=typeof Uint8Array?Uint8Array:Array,o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",a=0;a<64;++a)r[a]=o[a],n[o.charCodeAt(a)]=a;function s(e){var t=e.length;if(t%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var r=e.indexOf("=");return-1===r&&(r=t),[r,r===t?0:4-r%4]}function c(e,t,n){for(var i,o,a=[],s=t;s>18&63]+r[o>>12&63]+r[o>>6&63]+r[63&o]);return a.join("")}n["-".charCodeAt(0)]=62,n["_".charCodeAt(0)]=63},4201:function(e,t){var r;!function(){"use strict";var n={}.hasOwnProperty;function i(){for(var e=[],t=0;t=3&&":"===e[t-3]||t>=3&&"/"===e[t-3]?0:n.match(r.re.no_http)[0].length:0}},"mailto:":{validate:function(e,t,r){var n=e.slice(t);return r.re.mailto||(r.re.mailto=new RegExp("^"+r.re.src_email_name+"@"+r.re.src_host_strict,"i")),r.re.mailto.test(n)?n.match(r.re.mailto)[0].length:0}}},u="a[cdefgilmnoqrstuwxz]|b[abdefghijmnorstvwyz]|c[acdfghiklmnoruvwxyz]|d[ejkmoz]|e[cegrstu]|f[ijkmor]|g[abdefghilmnpqrstuwy]|h[kmnrtu]|i[delmnoqrst]|j[emop]|k[eghimnprwyz]|l[abcikrstuvy]|m[acdeghklmnopqrstuvwxyz]|n[acefgilopruz]|om|p[aefghklmnrstwy]|qa|r[eosuw]|s[abcdeghijklmnortuvxyz]|t[cdfghjklmnortvwz]|u[agksyz]|v[aceginu]|w[fs]|y[et]|z[amw]",l="biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|\u0440\u0444".split("|");function p(e){var t=e.re=r(17168)(e.__opts__),n=e.__tlds__.slice();function s(e){return e.replace("%TLDS%",t.src_tlds)}e.onCompile(),e.__tlds_replaced__||n.push(u),n.push(t.src_xn),t.src_tlds=n.join("|"),t.email_fuzzy=RegExp(s(t.tpl_email_fuzzy),"i"),t.link_fuzzy=RegExp(s(t.tpl_link_fuzzy),"i"),t.link_no_ip_fuzzy=RegExp(s(t.tpl_link_no_ip_fuzzy),"i"),t.host_fuzzy_test=RegExp(s(t.tpl_host_fuzzy_test),"i");var c=[];function l(e,t){throw new Error('(LinkifyIt) Invalid schema "'+e+'": '+t)}e.__compiled__={},Object.keys(e.__schemas__).forEach((function(t){var r=e.__schemas__[t];if(null!==r){var n={validate:null,link:null};if(e.__compiled__[t]=n,"[object Object]"===i(r))return!function(e){return"[object RegExp]"===i(e)}(r.validate)?o(r.validate)?n.validate=r.validate:l(t,r):n.validate=function(e){return function(t,r){var n=t.slice(r);return e.test(n)?n.match(e)[0].length:0}}(r.validate),void(o(r.normalize)?n.normalize=r.normalize:r.normalize?l(t,r):n.normalize=function(e,t){t.normalize(e)});!function(e){return"[object String]"===i(e)}(r)?l(t,r):c.push(t)}})),c.forEach((function(t){e.__compiled__[e.__schemas__[t]]&&(e.__compiled__[t].validate=e.__compiled__[e.__schemas__[t]].validate,e.__compiled__[t].normalize=e.__compiled__[e.__schemas__[t]].normalize)})),e.__compiled__[""]={validate:null,normalize:function(e,t){t.normalize(e)}};var p=Object.keys(e.__compiled__).filter((function(t){return t.length>0&&e.__compiled__[t]})).map(a).join("|");e.re.schema_test=RegExp("(^|(?!_)(?:[><\uff5c]|"+t.src_ZPCc+"))("+p+")","i"),e.re.schema_search=RegExp("(^|(?!_)(?:[><\uff5c]|"+t.src_ZPCc+"))("+p+")","ig"),e.re.schema_at_start=RegExp("^"+e.re.schema_search.source,"i"),e.re.pretest=RegExp("("+e.re.schema_test.source+")|("+e.re.host_fuzzy_test.source+")|@","i"),function(e){e.__index__=-1,e.__text_cache__=""}(e)}function d(e,t){var r=e.__index__,n=e.__last_index__,i=e.__text_cache__.slice(r,n);this.schema=e.__schema__.toLowerCase(),this.index=r+t,this.lastIndex=n+t,this.raw=i,this.text=i,this.url=i}function f(e,t){var r=new d(e,t);return e.__compiled__[r.schema].normalize(r,e),r}function h(e,t){if(!(this instanceof h))return new h(e,t);var r;t||(r=e,Object.keys(r||{}).reduce((function(e,t){return e||s.hasOwnProperty(t)}),!1)&&(t=e,e={})),this.__opts__=n({},s,t),this.__index__=-1,this.__last_index__=-1,this.__schema__="",this.__text_cache__="",this.__schemas__=n({},c,e),this.__compiled__={},this.__tlds__=l,this.__tlds_replaced__=!1,this.re={},p(this)}h.prototype.add=function(e,t){return this.__schemas__[e]=t,p(this),this},h.prototype.set=function(e){return this.__opts__=n(this.__opts__,e),this},h.prototype.test=function(e){if(this.__text_cache__=e,this.__index__=-1,!e.length)return!1;var t,r,n,i,o,a,s,c;if(this.re.schema_test.test(e))for((s=this.re.schema_search).lastIndex=0;null!==(t=s.exec(e));)if(i=this.testSchemaAt(e,t[2],s.lastIndex)){this.__schema__=t[2],this.__index__=t.index+t[1].length,this.__last_index__=t.index+t[0].length+i;break}return this.__opts__.fuzzyLink&&this.__compiled__["http:"]&&(c=e.search(this.re.host_fuzzy_test))>=0&&(this.__index__<0||c=0&&null!==(n=e.match(this.re.email_fuzzy))&&(o=n.index+n[1].length,a=n.index+n[0].length,(this.__index__<0||othis.__last_index__)&&(this.__schema__="mailto:",this.__index__=o,this.__last_index__=a)),this.__index__>=0},h.prototype.pretest=function(e){return this.re.pretest.test(e)},h.prototype.testSchemaAt=function(e,t,r){return this.__compiled__[t.toLowerCase()]?this.__compiled__[t.toLowerCase()].validate(e,r,this):0},h.prototype.match=function(e){var t=0,r=[];this.__index__>=0&&this.__text_cache__===e&&(r.push(f(this,t)),t=this.__last_index__);for(var n=t?e.slice(t):e;this.test(n);)r.push(f(this,t)),n=n.slice(this.__last_index__),t+=this.__last_index__;return r.length?r:null},h.prototype.matchAtStart=function(e){if(this.__text_cache__=e,this.__index__=-1,!e.length)return null;var t=this.re.schema_at_start.exec(e);if(!t)return null;var r=this.testSchemaAt(e,t[2],t[0].length);return r?(this.__schema__=t[2],this.__index__=t.index+t[1].length,this.__last_index__=t.index+t[0].length+r,f(this,0)):null},h.prototype.tlds=function(e,t){return e=Array.isArray(e)?e:[e],t?(this.__tlds__=this.__tlds__.concat(e).sort().filter((function(e,t,r){return e!==r[t-1]})).reverse(),p(this),this):(this.__tlds__=e.slice(),this.__tlds_replaced__=!0,p(this),this)},h.prototype.normalize=function(e){e.schema||(e.url="http://"+e.url),"mailto:"!==e.schema||/^mailto:/i.test(e.url)||(e.url="mailto:"+e.url)},h.prototype.onCompile=function(){},e.exports=h},17168:function(e,t,r){"use strict";e.exports=function(e){var t={};e=e||{},t.src_Any=r(61471).source,t.src_Cc=r(80844).source,t.src_Z=r(7902).source,t.src_P=r(72272).source,t.src_ZPCc=[t.src_Z,t.src_P,t.src_Cc].join("|"),t.src_ZCc=[t.src_Z,t.src_Cc].join("|");var n="[><\uff5c]";return t.src_pseudo_letter="(?:(?![><\uff5c]|"+t.src_ZPCc+")"+t.src_Any+")",t.src_ip4="(?:(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)",t.src_auth="(?:(?:(?!"+t.src_ZCc+"|[@/\\[\\]()]).)+@)?",t.src_port="(?::(?:6(?:[0-4]\\d{3}|5(?:[0-4]\\d{2}|5(?:[0-2]\\d|3[0-5])))|[1-5]?\\d{1,4}))?",t.src_host_terminator="(?=$|[><\uff5c]|"+t.src_ZPCc+")(?!"+(e["---"]?"-(?!--)|":"-|")+"_|:\\d|\\.-|\\.(?!$|"+t.src_ZPCc+"))",t.src_path="(?:[/?#](?:(?!"+t.src_ZCc+"|"+n+"|[()[\\]{}.,\"'?!\\-;]).|\\[(?:(?!"+t.src_ZCc+"|\\]).)*\\]|\\((?:(?!"+t.src_ZCc+"|[)]).)*\\)|\\{(?:(?!"+t.src_ZCc+'|[}]).)*\\}|\\"(?:(?!'+t.src_ZCc+'|["]).)+\\"|\\\'(?:(?!'+t.src_ZCc+"|[']).)+\\'|\\'(?="+t.src_pseudo_letter+"|[-])|\\.{2,}[a-zA-Z0-9%/&]|\\.(?!"+t.src_ZCc+"|[.]|$)|"+(e["---"]?"\\-(?!--(?:[^-]|$))(?:-*)|":"\\-+|")+",(?!"+t.src_ZCc+"|$)|;(?!"+t.src_ZCc+"|$)|\\!+(?!"+t.src_ZCc+"|[!]|$)|\\?(?!"+t.src_ZCc+"|[?]|$))+|\\/)?",t.src_email_name='[\\-;:&=\\+\\$,\\.a-zA-Z0-9_][\\-;:&=\\+\\$,\\"\\.a-zA-Z0-9_]*',t.src_xn="xn--[a-z0-9\\-]{1,59}",t.src_domain_root="(?:"+t.src_xn+"|"+t.src_pseudo_letter+"{1,63})",t.src_domain="(?:"+t.src_xn+"|(?:"+t.src_pseudo_letter+")|(?:"+t.src_pseudo_letter+"(?:-|"+t.src_pseudo_letter+"){0,61}"+t.src_pseudo_letter+"))",t.src_host="(?:(?:(?:(?:"+t.src_domain+")\\.)*"+t.src_domain+"))",t.tpl_host_fuzzy="(?:"+t.src_ip4+"|(?:(?:(?:"+t.src_domain+")\\.)+(?:%TLDS%)))",t.tpl_host_no_ip_fuzzy="(?:(?:(?:"+t.src_domain+")\\.)+(?:%TLDS%))",t.src_host_strict=t.src_host+t.src_host_terminator,t.tpl_host_fuzzy_strict=t.tpl_host_fuzzy+t.src_host_terminator,t.src_host_port_strict=t.src_host+t.src_port+t.src_host_terminator,t.tpl_host_port_fuzzy_strict=t.tpl_host_fuzzy+t.src_port+t.src_host_terminator,t.tpl_host_port_no_ip_fuzzy_strict=t.tpl_host_no_ip_fuzzy+t.src_port+t.src_host_terminator,t.tpl_host_fuzzy_test="localhost|www\\.|\\.\\d{1,3}\\.|(?:\\.(?:%TLDS%)(?:"+t.src_ZPCc+"|>|$))",t.tpl_email_fuzzy='(^|[><\uff5c]|"|\\(|'+t.src_ZCc+")("+t.src_email_name+"@"+t.tpl_host_fuzzy_strict+")",t.tpl_link_fuzzy="(^|(?![.:/\\-_@])(?:[$+<=>^`|\uff5c]|"+t.src_ZPCc+"))((?![$+<=>^`|\uff5c])"+t.tpl_host_port_fuzzy_strict+t.src_path+")",t.tpl_link_no_ip_fuzzy="(^|(?![.:/\\-_@])(?:[$+<=>^`|\uff5c]|"+t.src_ZPCc+"))((?![$+<=>^`|\uff5c])"+t.tpl_host_port_no_ip_fuzzy_strict+t.src_path+")",t}},20366:function(e,t,r){"use strict";e.exports=r(31506)},53563:function(e,t,r){"use strict";e.exports=r(87346)},23826:function(e){"use strict";e.exports=["address","article","aside","base","basefont","blockquote","body","caption","center","col","colgroup","dd","details","dialog","dir","div","dl","dt","fieldset","figcaption","figure","footer","form","frame","frameset","h1","h2","h3","h4","h5","h6","head","header","hr","html","iframe","legend","li","link","main","menu","menuitem","nav","noframes","ol","optgroup","option","p","param","section","source","summary","table","tbody","td","tfoot","th","thead","title","tr","track","ul"]},13721:function(e){"use strict";var t="<[A-Za-z][A-Za-z0-9\\-]*(?:\\s+[a-zA-Z_:][a-zA-Z0-9:._-]*(?:\\s*=\\s*(?:[^\"'=<>`\\x00-\\x20]+|'[^']*'|\"[^\"]*\"))?)*\\s*\\/?>",r="<\\/[A-Za-z][A-Za-z0-9\\-]*\\s*>",n=new RegExp("^(?:"+t+"|"+r+"|\x3c!----\x3e|\x3c!--(?:-?[^>-])(?:-?[^-])*--\x3e|<[?][\\s\\S]*?[?]>|]*>|)"),i=new RegExp("^(?:"+t+"|"+r+")");e.exports.l=n,e.exports.p=i},52935:function(e,t,r){"use strict";var n=Object.prototype.hasOwnProperty;function i(e,t){return n.call(e,t)}function o(e){return!(e>=55296&&e<=57343)&&(!(e>=64976&&e<=65007)&&(!!(65535&~e&&65534!=(65535&e))&&(!(e>=0&&e<=8)&&(11!==e&&(!(e>=14&&e<=31)&&(!(e>=127&&e<=159)&&!(e>1114111)))))))}function a(e){if(e>65535){var t=55296+((e-=65536)>>10),r=56320+(1023&e);return String.fromCharCode(t,r)}return String.fromCharCode(e)}var s=/\\([!"#$%&'()*+,\-.\/:;<=>?@[\\\]^_`{|}~])/g,c=new RegExp(s.source+"|"+/&([a-z#][a-z0-9]{1,31});/gi.source,"gi"),u=/^#((?:x[a-f0-9]{1,8}|[0-9]{1,8}))$/i,l=r(53563);var p=/[&<>"]/,d=/[&<>"]/g,f={"&":"&","<":"<",">":">",'"':"""};function h(e){return f[e]}var v=/[.?*+^$[\]\\(){}|-]/g;var m=r(72272);t.lib={},t.lib.mdurl=r(89497),t.lib.ucmicro=r(12787),t.assign=function(e){return Array.prototype.slice.call(arguments,1).forEach((function(t){if(t){if("object"!=typeof t)throw new TypeError(t+"must be object");Object.keys(t).forEach((function(r){e[r]=t[r]}))}})),e},t.isString=function(e){return"[object String]"===function(e){return Object.prototype.toString.call(e)}(e)},t.has=i,t.unescapeMd=function(e){return e.indexOf("\\")<0?e:e.replace(s,"$1")},t.unescapeAll=function(e){return e.indexOf("\\")<0&&e.indexOf("&")<0?e:e.replace(c,(function(e,t,r){return t||function(e,t){var r;return i(l,t)?l[t]:35===t.charCodeAt(0)&&u.test(t)&&o(r="x"===t[1].toLowerCase()?parseInt(t.slice(2),16):parseInt(t.slice(1),10))?a(r):e}(e,r)}))},t.isValidEntityCode=o,t.fromCodePoint=a,t.escapeHtml=function(e){return p.test(e)?e.replace(d,h):e},t.arrayReplaceAt=function(e,t,r){return[].concat(e.slice(0,t),r,e.slice(t+1))},t.isSpace=function(e){switch(e){case 9:case 32:return!0}return!1},t.isWhiteSpace=function(e){if(e>=8192&&e<=8202)return!0;switch(e){case 9:case 10:case 11:case 12:case 13:case 32:case 160:case 5760:case 8239:case 8287:case 12288:return!0}return!1},t.isMdAsciiPunct=function(e){switch(e){case 33:case 34:case 35:case 36:case 37:case 38:case 39:case 40:case 41:case 42:case 43:case 44:case 45:case 46:case 47:case 58:case 59:case 60:case 61:case 62:case 63:case 64:case 91:case 92:case 93:case 94:case 95:case 96:case 123:case 124:case 125:case 126:return!0;default:return!1}},t.isPunctChar=function(e){return m.test(e)},t.escapeRE=function(e){return e.replace(v,"\\$&")},t.normalizeReference=function(e){return e=e.trim().replace(/\s+/g," "),"\u1e7e"==="\u1e9e".toLowerCase()&&(e=e.replace(/\u1e9e/g,"\xdf")),e.toLowerCase().toUpperCase()}},27100:function(e,t,r){"use strict";t.parseLinkLabel=r(40815),t.parseLinkDestination=r(1513),t.parseLinkTitle=r(79675)},1513:function(e,t,r){"use strict";var n=r(52935).unescapeAll;e.exports=function(e,t,r){var i,o,a=t,s={ok:!1,pos:0,lines:0,str:""};if(60===e.charCodeAt(a)){for(a++;a32)return s;if(41===i){if(0===o)break;o--}a++}return t===a||0!==o||(s.str=n(e.slice(t,a)),s.pos=a,s.ok=!0),s}},40815:function(e){"use strict";e.exports=function(e,t,r){var n,i,o,a,s=-1,c=e.posMax,u=e.pos;for(e.pos=t+1,n=1;e.pos=r)return c;if(34!==(o=e.charCodeAt(s))&&39!==o&&40!==o)return c;for(s++,40===o&&(o=41);s=0))try{t.hostname=p.toASCII(t.hostname)}catch(e){}return l.encode(l.format(t))}function T(e){var t=l.parse(e,!0);if(t.hostname&&(!t.protocol||m.indexOf(t.protocol)>=0))try{t.hostname=p.toUnicode(t.hostname)}catch(e){}return l.decode(l.format(t),l.decode.defaultChars+"%")}function g(e,t){if(!(this instanceof g))return new g(e,t);t||n.isString(e)||(t=e||{},e="default"),this.inline=new c,this.block=new s,this.core=new a,this.renderer=new o,this.linkify=new u,this.validateLink=v,this.normalizeLink=_,this.normalizeLinkText=T,this.utils=n,this.helpers=n.assign({},i),this.options={},this.configure(e),t&&this.set(t)}g.prototype.set=function(e){return n.assign(this.options,e),this},g.prototype.configure=function(e){var t,r=this;if(n.isString(e)&&!(e=d[t=e]))throw new Error('Wrong `markdown-it` preset "'+t+'", check name');if(!e)throw new Error("Wrong `markdown-it` preset, can't be empty");return e.options&&r.set(e.options),e.components&&Object.keys(e.components).forEach((function(t){e.components[t].rules&&r[t].ruler.enableOnly(e.components[t].rules),e.components[t].rules2&&r[t].ruler2.enableOnly(e.components[t].rules2)})),this},g.prototype.enable=function(e,t){var r=[];Array.isArray(e)||(e=[e]),["core","block","inline"].forEach((function(t){r=r.concat(this[t].ruler.enable(e,!0))}),this),r=r.concat(this.inline.ruler2.enable(e,!0));var n=e.filter((function(e){return r.indexOf(e)<0}));if(n.length&&!t)throw new Error("MarkdownIt. Failed to enable unknown rule(s): "+n);return this},g.prototype.disable=function(e,t){var r=[];Array.isArray(e)||(e=[e]),["core","block","inline"].forEach((function(t){r=r.concat(this[t].ruler.disable(e,!0))}),this),r=r.concat(this.inline.ruler2.disable(e,!0));var n=e.filter((function(e){return r.indexOf(e)<0}));if(n.length&&!t)throw new Error("MarkdownIt. Failed to disable unknown rule(s): "+n);return this},g.prototype.use=function(e){var t=[this].concat(Array.prototype.slice.call(arguments,1));return e.apply(e,t),this},g.prototype.parse=function(e,t){if("string"!=typeof e)throw new Error("Input data should be a String");var r=new this.core.State(e,this,t);return this.core.process(r),r.tokens},g.prototype.render=function(e,t){return t=t||{},this.renderer.render(this.parse(e,t),this.options,t)},g.prototype.parseInline=function(e,t){var r=new this.core.State(e,this,t);return r.inlineMode=!0,this.core.process(r),r.tokens},g.prototype.renderInline=function(e,t){return t=t||{},this.renderer.render(this.parseInline(e,t),this.options,t)},e.exports=g},73641:function(e,t,r){"use strict";var n=r(65262),i=[["table",r(53132),["paragraph","reference"]],["code",r(659)],["fence",r(46793),["paragraph","reference","blockquote","list"]],["blockquote",r(50777),["paragraph","reference","blockquote","list"]],["hr",r(74828),["paragraph","reference","blockquote","list"]],["list",r(11850),["paragraph","reference","blockquote"]],["reference",r(87621)],["html_block",r(60381),["paragraph","reference","blockquote"]],["heading",r(19390),["paragraph","reference","blockquote"]],["lheading",r(60196)],["paragraph",r(78098)]];function o(){this.ruler=new n;for(var e=0;e=r))&&!(e.sCount[c]=l){e.line=r;break}for(o=e.line,i=0;i=e.line)throw new Error("block rule didn't increment state.line");break}if(!n)throw new Error("none of the block rules matched");e.tight=!u,e.isEmpty(e.line-1)&&(u=!0),(c=e.line)=e.pos)throw new Error("inline rule didn't increment state.pos");break}}else e.pos=e.posMax;t||e.pos++,s[n]=e.pos}else e.pos=s[n]},a.prototype.tokenize=function(e){for(var t,r,n,i=this.ruler.getRules(""),o=i.length,a=e.posMax,s=e.md.options.maxNesting;e.pos=e.pos)throw new Error("inline rule didn't increment state.pos");break}if(t){if(e.pos>=a)break}else e.pending+=e.src[e.pos++]}e.pending&&e.pushPending()},a.prototype.parse=function(e,t,r,n){var i,o,a,s=new this.State(e,t,r,n);for(this.tokenize(s),a=(o=this.ruler2.getRules("")).length,i=0;i"+o(a.content)+""},a.code_block=function(e,t,r,n,i){var a=e[t];return""+o(e[t].content)+"\n"},a.fence=function(e,t,r,n,a){var s,c,u,l,p,d=e[t],f=d.info?i(d.info).trim():"",h="",v="";return f&&(h=(u=f.split(/(\s+)/g))[0],v=u.slice(2).join("")),0===(s=r.highlight&&r.highlight(d.content,h,v)||o(d.content)).indexOf(""+s+"\n"):"
"+s+"
\n"},a.image=function(e,t,r,n,i){var o=e[t];return o.attrs[o.attrIndex("alt")][1]=i.renderInlineAsText(o.children,r,n),i.renderToken(e,t,r)},a.hardbreak=function(e,t,r){return r.xhtmlOut?"
\n":"
\n"},a.softbreak=function(e,t,r){return r.breaks?r.xhtmlOut?"
\n":"
\n":"\n"},a.text=function(e,t){return o(e[t].content)},a.html_block=function(e,t){return e[t].content},a.html_inline=function(e,t){return e[t].content},s.prototype.renderAttrs=function(e){var t,r,n;if(!e.attrs)return"";for(n="",t=0,r=e.attrs.length;t\n":">")},s.prototype.renderInline=function(e,t,r){for(var n,i="",o=this.rules,a=0,s=e.length;a=4)return!1;if(62!==e.src.charCodeAt(I))return!1;if(i)return!0;for(h=[],v=[],T=[],g=[],b=e.md.block.ruler.getRules("blockquote"),_=e.parentType,e.parentType="blockquote",d=t;d=(O=e.eMarks[d])));d++)if(62!==e.src.charCodeAt(I++)||S){if(l)break;for(E=!1,s=0,u=b.length;s=O,v.push(e.bsCount[d]),e.bsCount[d]=e.sCount[d]+1+(y?1:0),T.push(e.sCount[d]),e.sCount[d]=f-c,g.push(e.tShift[d]),e.tShift[d]=I-e.bMarks[d]}for(m=e.blkIndent,e.blkIndent=0,(A=e.push("blockquote_open","blockquote",1)).markup=">",A.map=p=[t,0],e.md.block.tokenize(e,t,d),(A=e.push("blockquote_close","blockquote",-1)).markup=">",e.lineMax=C,e.parentType=_,p[1]=e.line,s=0;s=4))break;i=++n}return e.line=i,(o=e.push("code_block","code",0)).content=e.getLines(t,i,4+e.blkIndent,!1)+"\n",o.map=[t,e.line],!0}},46793:function(e){"use strict";e.exports=function(e,t,r,n){var i,o,a,s,c,u,l,p=!1,d=e.bMarks[t]+e.tShift[t],f=e.eMarks[t];if(e.sCount[t]-e.blkIndent>=4)return!1;if(d+3>f)return!1;if(126!==(i=e.src.charCodeAt(d))&&96!==i)return!1;if(c=d,(o=(d=e.skipChars(d,i))-c)<3)return!1;if(l=e.src.slice(c,d),a=e.src.slice(d,f),96===i&&a.indexOf(String.fromCharCode(i))>=0)return!1;if(n)return!0;for(s=t;!(++s>=r)&&!((d=c=e.bMarks[s]+e.tShift[s])<(f=e.eMarks[s])&&e.sCount[s]=4||(d=e.skipChars(d,i))-c=4)return!1;if(35!==(o=e.src.charCodeAt(u))||u>=l)return!1;for(a=1,o=e.src.charCodeAt(++u);35===o&&u6||uu&&n(e.src.charCodeAt(s-1))&&(l=s),e.line=t+1,(c=e.push("heading_open","h"+String(a),1)).markup="########".slice(0,a),c.map=[t,e.line],(c=e.push("inline","",0)).content=e.src.slice(u,l).trim(),c.map=[t,e.line],c.children=[],(c=e.push("heading_close","h"+String(a),-1)).markup="########".slice(0,a)),!0)}},74828:function(e,t,r){"use strict";var n=r(52935).isSpace;e.exports=function(e,t,r,i){var o,a,s,c,u=e.bMarks[t]+e.tShift[t],l=e.eMarks[t];if(e.sCount[t]-e.blkIndent>=4)return!1;if(42!==(o=e.src.charCodeAt(u++))&&45!==o&&95!==o)return!1;for(a=1;u|$))/i,/<\/(script|pre|style|textarea)>/i,!0],[/^/,!0],[/^<\?/,/\?>/,!0],[/^/,!0],[/^/,!0],[new RegExp("^|$))","i"),/^$/,!0],[new RegExp(i.source+"\\s*$"),/^$/,!1]];e.exports=function(e,t,r,n){var i,a,s,c,u=e.bMarks[t]+e.tShift[t],l=e.eMarks[t];if(e.sCount[t]-e.blkIndent>=4)return!1;if(!e.md.options.html)return!1;if(60!==e.src.charCodeAt(u))return!1;for(c=e.src.slice(u,l),i=0;i=4)return!1;for(d=e.parentType,e.parentType="paragraph";f3)){if(e.sCount[f]>=e.blkIndent&&(c=e.bMarks[f]+e.tShift[f])<(u=e.eMarks[f])&&(45===(p=e.src.charCodeAt(c))||61===p)&&(c=e.skipChars(c,p),(c=e.skipSpaces(c))>=u)){l=61===p?1:2;break}if(!(e.sCount[f]<0)){for(i=!1,o=0,a=h.length;o=a)return-1;if((r=e.src.charCodeAt(o++))<48||r>57)return-1;for(;;){if(o>=a)return-1;if(!((r=e.src.charCodeAt(o++))>=48&&r<=57)){if(41===r||46===r)break;return-1}if(o-i>=10)return-1}return o=4)return!1;if(e.listIndent>=0&&e.sCount[L]-e.listIndent>=4&&e.sCount[L]=e.blkIndent&&(k=!0),(O=o(e,L))>=0){if(d=!0,R=e.bMarks[L]+e.tShift[L],T=Number(e.src.slice(R,O-1)),k&&1!==T)return!1}else{if(!((O=i(e,L))>=0))return!1;d=!1}if(k&&e.skipSpaces(O)>=e.eMarks[L])return!1;if(n)return!0;for(_=e.src.charCodeAt(O-1),m=e.tokens.length,d?(x=e.push("ordered_list_open","ol",1),1!==T&&(x.attrs=[["start",T]])):x=e.push("bullet_list_open","ul",1),x.map=v=[L,0],x.markup=String.fromCharCode(_),w=!1,N=e.md.block.ruler.getRules("list"),b=e.parentType,e.parentType="list";L=g?1:y-p)>4&&(l=1),u=p+l,(x=e.push("list_item_open","li",1)).markup=String.fromCharCode(_),x.map=f=[L,0],d&&(x.info=e.src.slice(R,O-1)),C=e.tight,S=e.tShift[L],A=e.sCount[L],E=e.listIndent,e.listIndent=e.blkIndent,e.blkIndent=u,e.tight=!0,e.tShift[L]=s-e.bMarks[L],e.sCount[L]=y,s>=g&&e.isEmpty(L+1)?e.line=Math.min(e.line+2,r):e.md.block.tokenize(e,L,r,!0),e.tight&&!w||(D=!1),w=e.line-L>1&&e.isEmpty(e.line-1),e.blkIndent=e.listIndent,e.listIndent=E,e.tShift[L]=S,e.sCount[L]=A,e.tight=C,(x=e.push("list_item_close","li",-1)).markup=String.fromCharCode(_),L=e.line,f[1]=L,L>=r)break;if(e.sCount[L]=4)break;for(P=!1,c=0,h=N.length;c3||e.sCount[u]<0)){for(i=!1,o=0,a=l.length;o=4)return!1;if(91!==e.src.charCodeAt(A))return!1;for(;++A3||e.sCount[C]<0)){for(g=!1,p=0,d=y.length;p0&&this.level++,this.tokens.push(i),i},o.prototype.isEmpty=function(e){return this.bMarks[e]+this.tShift[e]>=this.eMarks[e]},o.prototype.skipEmptyLines=function(e){for(var t=this.lineMax;et;)if(!i(this.src.charCodeAt(--e)))return e+1;return e},o.prototype.skipChars=function(e,t){for(var r=this.src.length;er;)if(t!==this.src.charCodeAt(--e))return e+1;return e},o.prototype.getLines=function(e,t,r,n){var o,a,s,c,u,l,p,d=e;if(e>=t)return"";for(l=new Array(t-e),o=0;dr?new Array(a-r+1).join(" ")+this.src.slice(c,u):this.src.slice(c,u)}return l.join("")},o.prototype.Token=n,e.exports=o},53132:function(e,t,r){"use strict";var n=r(52935).isSpace;function i(e,t){var r=e.bMarks[t]+e.tShift[t],n=e.eMarks[t];return e.src.slice(r,n)}function o(e){var t,r=[],n=0,i=e.length,o=!1,a=0,s="";for(t=e.charCodeAt(n);nr)return!1;if(d=t+1,e.sCount[d]=4)return!1;if((u=e.bMarks[d]+e.tShift[d])>=e.eMarks[d])return!1;if(124!==(A=e.src.charCodeAt(u++))&&45!==A&&58!==A)return!1;if(u>=e.eMarks[d])return!1;if(124!==(S=e.src.charCodeAt(u++))&&45!==S&&58!==S&&!n(S))return!1;if(45===A&&n(S))return!1;for(;u=4)return!1;if((f=o(c)).length&&""===f[0]&&f.shift(),f.length&&""===f[f.length-1]&&f.pop(),0===(h=f.length)||h!==m.length)return!1;if(a)return!0;for(y=e.parentType,e.parentType="table",b=e.md.block.ruler.getRules("blockquote"),(v=e.push("table_open","table",1)).map=T=[t,0],(v=e.push("thead_open","thead",1)).map=[t,t+1],(v=e.push("tr_open","tr",1)).map=[t,t+1],l=0;l=4)break;for((f=o(c)).length&&""===f[0]&&f.shift(),f.length&&""===f[f.length-1]&&f.pop(),d===t+2&&((v=e.push("tbody_open","tbody",1)).map=g=[t+2,0]),(v=e.push("tr_open","tr",1)).map=[d,d+1],l=0;l/i.test(e)}e.exports=function(e){var t,r,o,a,s,c,u,l,p,d,f,h,v,m,_,T,g,y,E=e.tokens;if(e.md.options.linkify)for(r=0,o=E.length;r=0;t--)if("link_close"!==(c=a[t]).type){if("html_inline"===c.type&&(y=c.content,/^\s]/i.test(y)&&v>0&&v--,i(c.content)&&v++),!(v>0)&&"text"===c.type&&e.md.linkify.test(c.content)){for(p=c.content,g=e.md.linkify.match(p),u=[],h=c.level,f=0,g.length>0&&0===g[0].index&&t>0&&"text_special"===a[t-1].type&&(g=g.slice(1)),l=0;lf&&((s=new e.Token("text","",0)).content=p.slice(f,d),s.level=h,u.push(s)),(s=new e.Token("link_open","a",1)).attrs=[["href",_]],s.level=h++,s.markup="linkify",s.info="auto",u.push(s),(s=new e.Token("text","",0)).content=T,s.level=h,u.push(s),(s=new e.Token("link_close","a",-1)).level=--h,s.markup="linkify",s.info="auto",u.push(s),f=g[l].lastIndex);f=0;t--)"text"!==(r=e[t]).type||i||(r.content=r.content.replace(n,o)),"link_open"===r.type&&"auto"===r.info&&i--,"link_close"===r.type&&"auto"===r.info&&i++}function s(e){var r,n,i=0;for(r=e.length-1;r>=0;r--)"text"!==(n=e[r]).type||i||t.test(n.content)&&(n.content=n.content.replace(/\+-/g,"\xb1").replace(/\.{2,}/g,"\u2026").replace(/([?!])\u2026/g,"$1..").replace(/([?!]){4,}/g,"$1$1$1").replace(/,{2,}/g,",").replace(/(^|[^-])---(?=[^-]|$)/gm,"$1\u2014").replace(/(^|\s)--(?=\s|$)/gm,"$1\u2013").replace(/(^|[^-\s])--(?=[^-\s]|$)/gm,"$1\u2013")),"link_open"===n.type&&"auto"===n.info&&i--,"link_close"===n.type&&"auto"===n.info&&i++}e.exports=function(e){var n;if(e.md.options.typographer)for(n=e.tokens.length-1;n>=0;n--)"inline"===e.tokens[n].type&&(r.test(e.tokens[n].content)&&a(e.tokens[n].children),t.test(e.tokens[n].content)&&s(e.tokens[n].children))}},43704:function(e,t,r){"use strict";var n=r(52935).isWhiteSpace,i=r(52935).isPunctChar,o=r(52935).isMdAsciiPunct,a=/['"]/,s=/['"]/g;function c(e,t,r){return e.slice(0,t)+r+e.slice(t+1)}function u(e,t){var r,a,u,l,p,d,f,h,v,m,_,T,g,y,E,b,A,S,C,I,O;for(C=[],r=0;r=0&&!(C[A].level<=f);A--);if(C.length=A+1,"text"===a.type){p=0,d=(u=a.content).length;e:for(;p=0)v=u.charCodeAt(l.index-1);else for(A=r-1;A>=0&&("softbreak"!==e[A].type&&"hardbreak"!==e[A].type);A--)if(e[A].content){v=e[A].content.charCodeAt(e[A].content.length-1);break}if(m=32,p=48&&v<=57&&(b=E=!1),E&&b&&(E=_,b=T),E||b){if(b)for(A=C.length-1;A>=0&&(h=C[A],!(C[A].level=0;t--)"inline"===e.tokens[t].type&&a.test(e.tokens[t].content)&&u(e.tokens[t].children,e)}},58195:function(e,t,r){"use strict";var n=r(31815);function i(e,t,r){this.src=e,this.env=r,this.tokens=[],this.inlineMode=!1,this.md=t}i.prototype.Token=n,e.exports=i},50908:function(e){"use strict";e.exports=function(e){var t,r,n,i,o,a,s=e.tokens;for(t=0,r=s.length;t\x00-\x20]*)$/;e.exports=function(e,n){var i,o,a,s,c,u,l=e.pos;if(60!==e.src.charCodeAt(l))return!1;for(c=e.pos,u=e.posMax;;){if(++l>=u)return!1;if(60===(s=e.src.charCodeAt(l)))return!1;if(62===s)break}return i=e.src.slice(c+1,l),r.test(i)?(o=e.md.normalizeLink(i),!!e.md.validateLink(o)&&(n||((a=e.push("link_open","a",1)).attrs=[["href",o]],a.markup="autolink",a.info="auto",(a=e.push("text","",0)).content=e.md.normalizeLinkText(i),(a=e.push("link_close","a",-1)).markup="autolink",a.info="auto"),e.pos+=i.length+2,!0)):!!t.test(i)&&(o=e.md.normalizeLink("mailto:"+i),!!e.md.validateLink(o)&&(n||((a=e.push("link_open","a",1)).attrs=[["href",o]],a.markup="autolink",a.info="auto",(a=e.push("text","",0)).content=e.md.normalizeLinkText(i),(a=e.push("link_close","a",-1)).markup="autolink",a.info="auto"),e.pos+=i.length+2,!0))}},59385:function(e){"use strict";e.exports=function(e,t){var r,n,i,o,a,s,c,u,l=e.pos;if(96!==e.src.charCodeAt(l))return!1;for(r=l,l++,n=e.posMax;lo;r-=f[r]+1)if((i=e[r]).marker===n.marker&&i.open&&i.end<0&&(s=!1,(i.close||n.open)&&(i.length+n.length)%3==0&&(i.length%3==0&&n.length%3==0||(s=!0)),!s)){c=r>0&&!e[r-1].open?f[r-1]+1:0,f[t]=t-r+c,f[r]=c,n.open=!1,i.end=t,i.close=!1,a=-1,d=-2;break}-1!==a&&(u[n.marker][(n.open?3:0)+(n.length||0)%3]=a)}}}e.exports=function(e){var r,n=e.tokens_meta,i=e.tokens_meta.length;for(t(e.delimiters),r=0;r=0;r--)95!==(n=t[r]).marker&&42!==n.marker||-1!==n.end&&(i=t[n.end],s=r>0&&t[r-1].end===n.end+1&&t[r-1].marker===n.marker&&t[r-1].token===n.token-1&&t[n.end+1].token===i.token+1,a=String.fromCharCode(n.marker),(o=e.tokens[n.token]).type=s?"strong_open":"em_open",o.tag=s?"strong":"em",o.nesting=1,o.markup=s?a+a:a,o.content="",(o=e.tokens[i.token]).type=s?"strong_close":"em_close",o.tag=s?"strong":"em",o.nesting=-1,o.markup=s?a+a:a,o.content="",s&&(e.tokens[t[r-1].token].content="",e.tokens[t[n.end+1].token].content="",r--))}e.exports.q=function(e,t){var r,n,i=e.pos,o=e.src.charCodeAt(i);if(t)return!1;if(95!==o&&42!==o)return!1;for(n=e.scanDelims(e.pos,42===o),r=0;r=d)return!1;if(35===e.src.charCodeAt(p+1)){if(u=e.src.slice(p).match(s))return t||(r="x"===u[1][0].toLowerCase()?parseInt(u[1].slice(1),16):parseInt(u[1],10),(l=e.push("text_special","",0)).content=o(r)?a(r):a(65533),l.markup=u[0],l.info="entity"),e.pos+=u[0].length,!0}else if((u=e.src.slice(p).match(c))&&i(n,u[1]))return t||((l=e.push("text_special","",0)).content=n[u[1]],l.markup=u[0],l.info="entity"),e.pos+=u[0].length,!0;return!1}},34035:function(e,t,r){"use strict";for(var n=r(52935).isSpace,i=[],o=0;o<256;o++)i.push(0);"\\!\"#$%&'()*+,./:;<=>?@[]^_`{|}~-".split("").forEach((function(e){i[e.charCodeAt(0)]=1})),e.exports=function(e,t){var r,o,a,s,c,u=e.pos,l=e.posMax;if(92!==e.src.charCodeAt(u))return!1;if(++u>=l)return!1;if(10===(r=e.src.charCodeAt(u))){for(t||e.push("hardbreak","br",0),u++;u=55296&&r<=56319&&u+1=56320&&o<=57343&&(s+=e.src[u+1],u++),a="\\"+s,t||(c=e.push("text_special","",0),r<256&&0!==i[r]?c.content=s:c.content=a,c.markup=a,c.info="escape"),e.pos=u+1,!0}},27610:function(e){"use strict";e.exports=function(e){var t,r,n=0,i=e.tokens,o=e.tokens.length;for(t=r=0;t0&&n++,"text"===i[t].type&&t+1=o)&&(!(33!==(r=e.src.charCodeAt(c+1))&&63!==r&&47!==r&&!function(e){var t=32|e;return t>=97&&t<=122}(r))&&(!!(i=e.src.slice(c).match(n))&&(t||((a=e.push("html_inline","",0)).content=i[0],s=a.content,/^\s]/i.test(s)&&e.linkLevel++,function(e){return/^<\/a\s*>/i.test(e)}(a.content)&&e.linkLevel--),e.pos+=i[0].length,!0))))}},68479:function(e,t,r){"use strict";var n=r(52935).normalizeReference,i=r(52935).isSpace;e.exports=function(e,t){var r,o,a,s,c,u,l,p,d,f,h,v,m,_="",T=e.pos,g=e.posMax;if(33!==e.src.charCodeAt(e.pos))return!1;if(91!==e.src.charCodeAt(e.pos+1))return!1;if(u=e.pos+2,(c=e.md.helpers.parseLinkLabel(e,e.pos+1,!1))<0)return!1;if((l=c+1)=g)return!1;for(m=l,(d=e.md.helpers.parseLinkDestination(e.src,l,e.posMax)).ok&&(_=e.md.normalizeLink(d.str),e.md.validateLink(_)?l=d.pos:_=""),m=l;l=g||41!==e.src.charCodeAt(l))return e.pos=T,!1;l++}else{if(void 0===e.env.references)return!1;if(l=0?s=e.src.slice(m,l++):l=c+1):l=c+1,s||(s=e.src.slice(u,c)),!(p=e.env.references[n(s)]))return e.pos=T,!1;_=p.href,f=p.title}return t||(a=e.src.slice(u,c),e.md.inline.parse(a,e.md,e.env,v=[]),(h=e.push("image","img",0)).attrs=r=[["src",_],["alt",""]],h.children=v,h.content=a,f&&r.push(["title",f])),e.pos=l,e.posMax=g,!0}},11212:function(e,t,r){"use strict";var n=r(52935).normalizeReference,i=r(52935).isSpace;e.exports=function(e,t){var r,o,a,s,c,u,l,p,d="",f="",h=e.pos,v=e.posMax,m=e.pos,_=!0;if(91!==e.src.charCodeAt(e.pos))return!1;if(c=e.pos+1,(s=e.md.helpers.parseLinkLabel(e,e.pos,!0))<0)return!1;if((u=s+1)=v)return!1;if(m=u,(l=e.md.helpers.parseLinkDestination(e.src,u,e.posMax)).ok){for(d=e.md.normalizeLink(l.str),e.md.validateLink(d)?u=l.pos:d="",m=u;u=v||41!==e.src.charCodeAt(u))&&(_=!0),u++}if(_){if(void 0===e.env.references)return!1;if(u=0?a=e.src.slice(m,u++):u=s+1):u=s+1,a||(a=e.src.slice(c,s)),!(p=e.env.references[n(a)]))return e.pos=h,!1;d=p.href,f=p.title}return t||(e.pos=c,e.posMax=s,e.push("link_open","a",1).attrs=r=[["href",d]],f&&r.push(["title",f]),e.linkLevel++,e.md.inline.tokenize(e),e.linkLevel--,e.push("link_close","a",-1)),e.pos=u,e.posMax=v,!0}},31644:function(e){"use strict";var t=/(?:^|[^a-z0-9.+-])([a-z][a-z0-9.+-]*)$/i;e.exports=function(e,r){var n,i,o,a,s,c,u;return!!e.md.options.linkify&&(!(e.linkLevel>0)&&(!((n=e.pos)+3>e.posMax)&&(58===e.src.charCodeAt(n)&&(47===e.src.charCodeAt(n+1)&&(47===e.src.charCodeAt(n+2)&&(!!(i=e.pending.match(t))&&(o=i[1],!!(a=e.md.linkify.matchAtStart(e.src.slice(n-o.length)))&&(!((s=a.url).length<=o.length)&&(s=s.replace(/\*+$/,""),c=e.md.normalizeLink(s),!!e.md.validateLink(c)&&(r||(e.pending=e.pending.slice(0,-o.length),(u=e.push("link_open","a",1)).attrs=[["href",c]],u.markup="linkify",u.info="auto",(u=e.push("text","",0)).content=e.md.normalizeLinkText(s),(u=e.push("link_close","a",-1)).markup="linkify",u.info="auto"),e.pos+=s.length-o.length,!0))))))))))}},83314:function(e,t,r){"use strict";var n=r(52935).isSpace;e.exports=function(e,t){var r,i,o,a=e.pos;if(10!==e.src.charCodeAt(a))return!1;if(r=e.pending.length-1,i=e.posMax,!t)if(r>=0&&32===e.pending.charCodeAt(r))if(r>=1&&32===e.pending.charCodeAt(r-1)){for(o=r-1;o>=1&&32===e.pending.charCodeAt(o-1);)o--;e.pending=e.pending.slice(0,o),e.push("hardbreak","br",0)}else e.pending=e.pending.slice(0,-1),e.push("softbreak","br",0);else e.push("softbreak","br",0);for(a++;a0&&(this.level++,this._prev_delimiters.push(this.delimiters),this.delimiters=[],o={delimiters:this.delimiters}),this.pendingLevel=this.level,this.tokens.push(i),this.tokens_meta.push(o),i},s.prototype.scanDelims=function(e,t){var r,n,s,c,u,l,p,d,f,h=e,v=!0,m=!0,_=this.posMax,T=this.src.charCodeAt(e);for(r=e>0?this.src.charCodeAt(e-1):32;h<_&&this.src.charCodeAt(h)===T;)h++;return s=h-e,n=h<_?this.src.charCodeAt(h):32,p=a(r)||o(String.fromCharCode(r)),f=a(n)||o(String.fromCharCode(n)),l=i(r),(d=i(n))?v=!1:f&&(l||p||(v=!1)),l?m=!1:p&&(d||f||(m=!1)),t?(c=v,u=m):(c=v&&(!m||p),u=m&&(!v||f)),{can_open:c,can_close:u,length:s}},s.prototype.Token=n,e.exports=s},75137:function(e){"use strict";function t(e,t){var r,n,i,o,a,s=[],c=t.length;for(r=0;r=0&&(r=this.attrs[t][1]),r},t.prototype.attrJoin=function(e,t){var r=this.attrIndex(e);r<0?this.attrPush([e,t]):this.attrs[r][1]=this.attrs[r][1]+" "+t},e.exports=t},50241:function(e){var t="undefined"!=typeof window?window:self;e.exports=t.crypto||t.msCrypto},20686:function(e,t,r){e.exports=function(e){if(!e)return Math.random;var t=Math.pow(2,32),r=new Uint32Array(1);return function(){return e.getRandomValues(r)[0]/t}}(r(50241))},74731:function(e){"use strict";var t={};function r(e,n){var i;return"string"!=typeof n&&(n=r.defaultChars),i=function(e){var r,n,i=t[e];if(i)return i;for(i=t[e]=[],r=0;r<128;r++)n=String.fromCharCode(r),i.push(n);for(r=0;r=55296&&c<=57343?"\ufffd\ufffd\ufffd":String.fromCharCode(c),t+=6):240==(248&n)&&t+91114111?u+="\ufffd\ufffd\ufffd\ufffd":(c-=65536,u+=String.fromCharCode(55296+(c>>10),56320+(1023&c))),t+=9):u+="\ufffd";return u}))}r.defaultChars=";/?:@&=+$,#",r.componentChars="",e.exports=r},10743:function(e){"use strict";var t={};function r(e,n,i){var o,a,s,c,u,l="";for("string"!=typeof n&&(i=n,n=r.defaultChars),void 0===i&&(i=!0),u=function(e){var r,n,i=t[e];if(i)return i;for(i=t[e]=[],r=0;r<128;r++)n=String.fromCharCode(r),/^[0-9a-z]$/i.test(n)?i.push(n):i.push("%"+("0"+r.toString(16).toUpperCase()).slice(-2));for(r=0;r=55296&&s<=57343){if(s>=55296&&s<=56319&&o+1=56320&&c<=57343){l+=encodeURIComponent(e[o]+e[o+1]),o++;continue}l+="%EF%BF%BD"}else l+=encodeURIComponent(e[o]);return l}r.defaultChars=";/?:@&=+$,-_.!~*'()#",r.componentChars="-_.!~*'()",e.exports=r},15426:function(e){"use strict";e.exports=function(e){var t="";return t+=e.protocol||"",t+=e.slashes?"//":"",t+=e.auth?e.auth+"@":"",e.hostname&&-1!==e.hostname.indexOf(":")?t+="["+e.hostname+"]":t+=e.hostname||"",t+=e.port?":"+e.port:"",t+=e.pathname||"",t+=e.search||"",t+=e.hash||""}},89497:function(e,t,r){"use strict";e.exports.encode=r(10743),e.exports.decode=r(74731),e.exports.format=r(15426),e.exports.parse=r(50814)},50814:function(e){"use strict";function t(){this.protocol=null,this.slashes=null,this.auth=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.pathname=null}var r=/^([a-z0-9.+-]+:)/i,n=/:[0-9]*$/,i=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,o=["{","}","|","\\","^","`"].concat(["<",">",'"',"`"," ","\r","\n","\t"]),a=["'"].concat(o),s=["%","/","?",";","#"].concat(a),c=["/","?","#"],u=/^[+a-z0-9A-Z_-]{0,63}$/,l=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,p={javascript:!0,"javascript:":!0},d={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0};t.prototype.parse=function(e,t){var n,o,a,f,h,v=e;if(v=v.trim(),!t&&1===e.split("#").length){var m=i.exec(v);if(m)return this.pathname=m[1],m[2]&&(this.search=m[2]),this}var _=r.exec(v);if(_&&(a=(_=_[0]).toLowerCase(),this.protocol=_,v=v.substr(_.length)),(t||_||v.match(/^\/\/[^@\/]+@[^@\/]+/))&&(!(h="//"===v.substr(0,2))||_&&p[_]||(v=v.substr(2),this.slashes=!0)),!p[_]&&(h||_&&!d[_])){var T,g,y=-1;for(n=0;n127?C+="x":C+=S[I];if(!C.match(u)){var w=A.slice(0,n),R=A.slice(n+1),P=S.match(l);P&&(w.push(P[1]),R.unshift(P[2])),R.length&&(v=R.join(".")+v),this.hostname=w.join(".");break}}}}this.hostname.length>255&&(this.hostname=""),b&&(this.hostname=this.hostname.substr(1,this.hostname.length-2))}var N=v.indexOf("#");-1!==N&&(this.hash=v.substr(N),v=v.slice(0,N));var x=v.indexOf("?");return-1!==x&&(this.search=v.substr(x),v=v.slice(0,x)),v&&(this.pathname=v),d[a]&&this.hostname&&!this.pathname&&(this.pathname=""),this},t.prototype.parseHost=function(e){var t=n.exec(e);t&&(":"!==(t=t[0])&&(this.port=t.substr(1)),e=e.substr(0,e.length-t.length)),e&&(this.hostname=e)},e.exports=function(e,r){if(e&&e instanceof t)return e;var n=new t;return n.parse(e,r),n}},81586:function(e,t,r){"use strict";var n=r(45025);function i(){}function o(){}o.resetWarningCache=i,e.exports=function(){function e(e,t,r,i,o,a){if(a!==n){var s=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw s.name="Invariant Violation",s}}function t(){return e}e.isRequired=e;var r={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:o,resetWarningCache:i};return r.PropTypes=r,r}},85432:function(e,t,r){e.exports=r(81586)()},45025:function(e){"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},52489:function(e,t,r){"use strict";var n=r(3506);function i(){}function o(){}o.resetWarningCache=i,e.exports=function(){function e(e,t,r,i,o,a){if(a!==n){var s=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw s.name="Invariant Violation",s}}function t(){return e}e.isRequired=e;var r={array:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:o,resetWarningCache:i};return r.PropTypes=r,r}},86629:function(e,t,r){e.exports=r(52489)()},3506:function(e){"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},75838:function(e,t,r){"use strict";var n=r(95294),i=r(32966);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=n(r(27791)),a=n(r(85432)),s=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!==i(e)&&"function"!=typeof e)return{default:e};var r=d(t);if(r&&r.has(e))return r.get(e);var n={},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&Object.prototype.hasOwnProperty.call(e,a)){var s=o?Object.getOwnPropertyDescriptor(e,a):null;s&&(s.get||s.set)?Object.defineProperty(n,a,s):n[a]=e[a]}n.default=e,r&&r.set(e,n);return n}(r(34109)),c=n(r(86173)),u=n(r(45744)),l=n(r(7494)),p=n(r(76337));function d(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(d=function(e){return e?r:t})(e)}var f=function e(t){var r=(0,l.default)(t,e),n=r.children,i=r.ponyfill,a=(0,s.useContext)(c.default)||{},d=a.ponyfill,f=a.synthesize,h=i||d||{speechSynthesis:window.speechSynthesis||window.webkitSpeechSynthesis,SpeechSynthesisUtterance:window.SpeechSynthesisUtterance||window.webkitSpeechSynthesisUtterance},v=(0,s.useMemo)((function(){return f||(0,u.default)()}),[f]),m=h.speechSynthesis,_=(0,s.useState)(m.getVoices()),T=(0,o.default)(_,2),g=T[0],y=T[1];(0,p.default)(m,"voiceschanged",(function(){return y(m.getVoices())}));var E=(0,s.useMemo)((function(){return{ponyfill:h,synthesize:v,voices:g}}),[h,v,g]);return s.default.createElement(c.default.Provider,{value:E},"function"==typeof n?s.default.createElement(c.default.Consumer,null,(function(e){return n(e)})):n)};f.defaultProps={children:void 0,ponyfill:void 0},f.propTypes={children:a.default.any,ponyfill:a.default.shape({speechSynthesis:a.default.any,SpeechSynthesisUtterance:a.default.any})};var h=f;t.default=h},86173:function(e,t,r){"use strict";var n=r(95294);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=n(r(34109)).default.createContext();t.default=i},64194:function(e,t,r){"use strict";var n=r(95294);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=n(r(12480)),o=n(r(82771)),a=n(r(27879)),s=n(r(55553)),c=n(r(70271)),u=n(r(54491)),l=n(r(79778));function p(e,t,r){return d.apply(this,arguments)}function d(){return(d=(0,s.default)(i.default.mark((function e(t,r,n){var o,a,c,l,p,d,f,h;return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return o=t.speechSynthesis,a=(0,u.default)(),c=(0,u.default)(),l=(0,u.default)(),r.addEventListener("end",l.resolve),r.addEventListener("error",c.resolve),r.addEventListener("start",a.resolve),o.speak(r),e.next=10,Promise.race([c.promise,a.promise]);case 10:if("error"!==(p=e.sent).type){e.next=13;break}throw p.error;case 13:return f=Promise.race([c.promise,l.promise]),n&&n((0,s.default)(i.default.mark((function e(){return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(d){e.next=4;break}return o.cancel(),e.next=4,f;case 4:case"end":return e.stop()}}),e)})))),e.next=17,f;case 17:if(h=e.sent,d=!0,"error"!==h.type){e.next=21;break}throw h.error;case 21:case"end":return e.stop()}}),e)})))).apply(this,arguments)}var f=function(){function e(t,r,n){var i=n.onEnd,a=n.onError,s=n.onStart;(0,o.default)(this,e),this._cancelled=!1,this._deferred=(0,u.default)(),this._onEnd=i,this._onError=a,this._onStart=s,this._ponyfill=t,this._speaking=!1,this._utterance=r,this.promise=this._deferred.promise}var t;return(0,a.default)(e,[{key:"cancel",value:(t=(0,s.default)(i.default.mark((function e(){return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this._cancelled=!0,e.t0=this._cancel,!e.t0){e.next=5;break}return e.next=5,this._cancel();case 5:case"end":return e.stop()}}),e,this)}))),function(){return t.apply(this,arguments)})},{key:"speak",value:function(){var e=this;return this._speaking&&console.warn("ASSERTION: QueuedUtterance is already speaking or has spoken."),this._speaking=!0,(0,s.default)(i.default.mark((function t(){return i.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!e._cancelled){t.next=2;break}throw new Error("cancelled");case 2:return t.next=4,p(e._ponyfill,e._utterance,(function(t){if(e._cancelled)throw t(),new Error("cancelled");e._cancel=t,e._onStart&&e._onStart((0,c.default)("start"))}));case 4:if(!e._cancelled){t.next=6;break}throw new Error("cancelled");case 6:case"end":return t.stop()}}),t)})))().then((function(){e._onEnd&&e._onEnd((0,c.default)("end")),e._deferred.resolve()}),(function(t){e._onError&&e._onError((0,l.default)(t)),e._deferred.reject(t)})),this.promise}}]),e}();t.default=f},40609:function(e,t,r){"use strict";var n=r(95294),i=r(32966);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=n(r(51897)),a=n(r(38139)),s=n(r(54523)),c=n(r(85432)),u=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!==i(e)&&"function"!=typeof e)return{default:e};var r=m(t);if(r&&r.has(e))return r.get(e);var n={},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&Object.prototype.hasOwnProperty.call(e,a)){var s=o?Object.getOwnPropertyDescriptor(e,a):null;s&&(s.get||s.set)?Object.defineProperty(n,a,s):n[a]=e[a]}n.default=e,r&&r.set(e,n);return n}(r(34109)),l=n(r(75838)),p=n(r(86173)),d=n(r(14380)),f=n(r(7494)),h=n(r(63598)),v=["ponyfill"];function m(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(m=function(e){return e?r:t})(e)}function _(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function T(e){for(var t=1;t2&&void 0!==arguments[2]?arguments[2]:{},a=i.onEnd,c=i.onError,u=i.onStart;if(!(n instanceof e.SpeechSynthesisUtterance))throw new Error("utterance must be instance of the ponyfill");var l=new s.default(e,n,{onEnd:a,onError:c,onStart:u});return t=[].concat((0,o.default)(t),[l]),r(),{cancel:function(){return l.cancel()},promise:l.promise}}};var i=n(r(12480)),o=n(r(24480)),a=n(r(55553)),s=n(r(64194))},64850:function(e,t,r){"use strict";var n=r(95294);Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"Composer",{enumerable:!0,get:function(){return o.default}}),Object.defineProperty(t,"Context",{enumerable:!0,get:function(){return a.default}}),Object.defineProperty(t,"SayButton",{enumerable:!0,get:function(){return s.default}}),Object.defineProperty(t,"SayUtterance",{enumerable:!0,get:function(){return c.default}}),t.default=void 0;var i=n(r(40609)),o=n(r(75838)),a=n(r(86173)),s=n(r(23625)),c=n(r(63598)),u=i.default;t.default=u},7494:function(e,t,r){"use strict";var n=r(95294);Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){var r=e.ponyfill,n=e.speak,p=e.speechSynthesis,d=e.speechSynthesisUtterance,f=e.text,h=(0,o.default)(e,c);r||!p&&!d||(l.ponyfill&&(console.warn('react-say: "speechSynthesis" and "speechSynthesisUtterance" props has been renamed to "ponyfill". Please update your code. The deprecated props will be removed in version >= 3.0.0.'),l.ponyfill=!1),r={speechSynthesis:p,SpeechSynthesisUtterance:d});t!==a.default&&t!==s.default||n&&!f&&(l.saySpeak&&(console.warn('react-say: "speak" prop has been renamed to "text". Please update your code. The deprecated props will be removed in version >= 3.0.0.'),l.saySpeak=!1),f=n);return function(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=new Array(t);r=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o},e.exports.default=e.exports,e.exports.__esModule=!0},49497:function(e){e.exports=function(e,t){if(null==e)return{};var r,n,i={},o=Object.keys(e);for(n=0;n=0||(i[r]=e[r]);return i},e.exports.default=e.exports,e.exports.__esModule=!0},54523:function(e){e.exports=function(e){throw new TypeError('"'+e+'" is read-only')},e.exports.default=e.exports,e.exports.__esModule=!0},27791:function(e,t,r){var n=r(25759),i=r(64968),o=r(53062),a=r(77268);e.exports=function(e,t){return n(e)||i(e,t)||o(e,t)||a()},e.exports.default=e.exports,e.exports.__esModule=!0},24480:function(e,t,r){var n=r(69873),i=r(64271),o=r(53062),a=r(16553);e.exports=function(e){return n(e)||i(e)||o(e)||a()},e.exports.default=e.exports,e.exports.__esModule=!0},32966:function(e){function t(r){return"function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?(e.exports=t=function(e){return typeof e},e.exports.default=e.exports,e.exports.__esModule=!0):(e.exports=t=function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},e.exports.default=e.exports,e.exports.__esModule=!0),t(r)}e.exports=t,e.exports.default=e.exports,e.exports.__esModule=!0},53062:function(e,t,r){var n=r(97787);e.exports=function(e,t){if(e){if("string"==typeof e)return n(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?n(e,t):void 0}},e.exports.default=e.exports,e.exports.__esModule=!0},12480:function(e,t,r){e.exports=r(59824)},68340:function(e,t){var r;!function(){"use strict";var n={}.hasOwnProperty;function i(){for(var e=[],t=0;tl;)if((s=c[l++])!=s)return!0}else for(;u>l;l++)if((e||l in c)&&c[l]===r)return e||l||0;return!e&&-1}};e.exports={includes:a(!0),indexOf:a(!1)}},54590:function(e){var t={}.toString;e.exports=function(e){return t.call(e).slice(8,-1)}},88625:function(e,t,r){var n=r(97906),i=r(94747),o=r(54590),a=r(22433)("toStringTag"),s="Arguments"==o(function(){return arguments}());e.exports=n?o:function(e){var t,r,n;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(r=function(e,t){try{return e[t]}catch(e){}}(t=Object(e),a))?r:s?o(t):"Object"==(n=o(t))&&i(t.callee)?"Arguments":n}},49830:function(e,t,r){var n=r(57915),i=r(1545),o=r(11761),a=r(37371);e.exports=function(e,t){for(var r=i(t),s=a.f,c=o.f,u=0;u=74)&&(n=a.match(/Chrome\/(\d+)/))&&(i=n[1]),e.exports=i&&+i},49173:function(e){e.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},81172:function(e,t,r){var n=r(45893),i=r(11761).f,o=r(9213),a=r(36652),s=r(53570),c=r(49830),u=r(14490);e.exports=function(e,t){var r,l,p,d,f,h=e.target,v=e.global,m=e.stat;if(r=v?n:m?n[h]||s(h,{}):(n[h]||{}).prototype)for(l in t){if(d=t[l],p=e.noTargetGet?(f=i(r,l))&&f.value:r[l],!u(v?l:h+(m?".":"#")+l,e.forced)&&void 0!==p){if(typeof d==typeof p)continue;c(d,p)}(e.sham||p&&p.sham)&&o(d,"sham",!0),a(r,l,d,e)}}},48553:function(e){e.exports=function(e){try{return!!e()}catch(e){return!0}}},18702:function(e,t,r){"use strict";r(98909);var n=r(36652),i=r(63057),o=r(48553),a=r(22433),s=r(9213),c=a("species"),u=RegExp.prototype;e.exports=function(e,t,r,l){var p=a(e),d=!o((function(){var t={};return t[p]=function(){return 7},7!=""[e](t)})),f=d&&!o((function(){var t=!1,r=/a/;return"split"===e&&((r={}).constructor={},r.constructor[c]=function(){return r},r.flags="",r[p]=/./[p]),r.exec=function(){return t=!0,null},r[p](""),!t}));if(!d||!f||r){var h=/./[p],v=t(p,""[e],(function(e,t,r,n,o){var a=t.exec;return a===i||a===u.exec?d&&!o?{done:!0,value:h.call(t,r,n)}:{done:!0,value:e.call(r,t,n)}:{done:!1}}));n(String.prototype,e,v[0]),n(u,p,v[1])}l&&s(u[p],"sham",!0)}},14288:function(e,t,r){var n=r(25038),i=r(57915),o=Function.prototype,a=n&&Object.getOwnPropertyDescriptor,s=i(o,"name"),c=s&&"something"===function(){}.name,u=s&&(!n||n&&a(o,"name").configurable);e.exports={EXISTS:s,PROPER:c,CONFIGURABLE:u}},87009:function(e,t,r){var n=r(45893),i=r(94747);e.exports=function(e,t){return arguments.length<2?(r=n[e],i(r)?r:void 0):n[e]&&n[e][t];var r}},4100:function(e,t,r){var n=r(94216);e.exports=function(e,t){var r=e[t];return null==r?void 0:n(r)}},80212:function(e,t,r){var n=r(63003),i=Math.floor,o="".replace,a=/\$([$&'`]|\d{1,2}|<[^>]*>)/g,s=/\$([$&'`]|\d{1,2})/g;e.exports=function(e,t,r,c,u,l){var p=r+e.length,d=c.length,f=s;return void 0!==u&&(u=n(u),f=a),o.call(l,f,(function(n,o){var a;switch(o.charAt(0)){case"$":return"$";case"&":return e;case"`":return t.slice(0,r);case"'":return t.slice(p);case"<":a=u[o.slice(1,-1)];break;default:var s=+o;if(0===s)return n;if(s>d){var l=i(s/10);return 0===l?n:l<=d?void 0===c[l-1]?o.charAt(1):c[l-1]+o.charAt(1):n}a=c[s-1]}return void 0===a?"":a}))}},45893:function(e,t,r){var n=function(e){return e&&e.Math==Math&&e};e.exports=n("object"==typeof globalThis&&globalThis)||n("object"==typeof window&&window)||n("object"==typeof self&&self)||n("object"==typeof r.g&&r.g)||function(){return this}()||Function("return this")()},57915:function(e,t,r){var n=r(63003),i={}.hasOwnProperty;e.exports=Object.hasOwn||function(e,t){return i.call(n(e),t)}},99555:function(e){e.exports={}},40331:function(e,t,r){var n=r(87009);e.exports=n("document","documentElement")},81015:function(e,t,r){var n=r(25038),i=r(48553),o=r(8217);e.exports=!n&&!i((function(){return 7!=Object.defineProperty(o("div"),"a",{get:function(){return 7}}).a}))},43881:function(e,t,r){var n=r(48553),i=r(54590),o="".split;e.exports=n((function(){return!Object("z").propertyIsEnumerable(0)}))?function(e){return"String"==i(e)?o.call(e,""):Object(e)}:Object},86468:function(e,t,r){var n=r(94747),i=r(80359),o=Function.toString;n(i.inspectSource)||(i.inspectSource=function(e){return o.call(e)}),e.exports=i.inspectSource},26227:function(e,t,r){var n,i,o,a=r(52065),s=r(45893),c=r(52744),u=r(9213),l=r(57915),p=r(80359),d=r(32529),f=r(99555),h="Object already initialized",v=s.WeakMap;if(a||p.state){var m=p.state||(p.state=new v),_=m.get,T=m.has,g=m.set;n=function(e,t){if(T.call(m,e))throw new TypeError(h);return t.facade=e,g.call(m,e,t),t},i=function(e){return _.call(m,e)||{}},o=function(e){return T.call(m,e)}}else{var y=d("state");f[y]=!0,n=function(e,t){if(l(e,y))throw new TypeError(h);return t.facade=e,u(e,y,t),t},i=function(e){return l(e,y)?e[y]:{}},o=function(e){return l(e,y)}}e.exports={set:n,get:i,has:o,enforce:function(e){return o(e)?i(e):n(e,{})},getterFor:function(e){return function(t){var r;if(!c(t)||(r=i(t)).type!==e)throw TypeError("Incompatible receiver, "+e+" required");return r}}}},94747:function(e){e.exports=function(e){return"function"==typeof e}},14490:function(e,t,r){var n=r(48553),i=r(94747),o=/#|\.prototype\./,a=function(e,t){var r=c[s(e)];return r==l||r!=u&&(i(t)?n(t):!!t)},s=a.normalize=function(e){return String(e).replace(o,".").toLowerCase()},c=a.data={},u=a.NATIVE="N",l=a.POLYFILL="P";e.exports=a},52744:function(e,t,r){var n=r(94747);e.exports=function(e){return"object"==typeof e?null!==e:n(e)}},32021:function(e){e.exports=!1},28527:function(e,t,r){var n=r(94747),i=r(87009),o=r(89614);e.exports=o?function(e){return"symbol"==typeof e}:function(e){var t=i("Symbol");return n(t)&&Object(e)instanceof t}},10912:function(e,t,r){var n=r(64804);e.exports=function(e){return n(e.length)}},56406:function(e,t,r){var n=r(31642),i=r(48553);e.exports=!!Object.getOwnPropertySymbols&&!i((function(){var e=Symbol();return!String(e)||!(Object(e)instanceof Symbol)||!Symbol.sham&&n&&n<41}))},52065:function(e,t,r){var n=r(45893),i=r(94747),o=r(86468),a=n.WeakMap;e.exports=i(a)&&/native code/.test(o(a))},32698:function(e,t,r){var n,i=r(89925),o=r(27335),a=r(49173),s=r(99555),c=r(40331),u=r(8217),l=r(32529),p="prototype",d="script",f=l("IE_PROTO"),h=function(){},v=function(e){return"<"+d+">"+e+""},m=function(e){e.write(v("")),e.close();var t=e.parentWindow.Object;return e=null,t},_=function(){try{n=new ActiveXObject("htmlfile")}catch(e){}var e,t,r;_="undefined"!=typeof document?document.domain&&n?m(n):(t=u("iframe"),r="java"+d+":",t.style.display="none",c.appendChild(t),t.src=String(r),(e=t.contentWindow.document).open(),e.write(v("document.F=Object")),e.close(),e.F):m(n);for(var i=a.length;i--;)delete _[p][a[i]];return _()};s[f]=!0,e.exports=Object.create||function(e,t){var r;return null!==e?(h[p]=i(e),r=new h,h[p]=null,r[f]=e):r=_(),void 0===t?r:o(r,t)}},27335:function(e,t,r){var n=r(25038),i=r(37371),o=r(89925),a=r(17482);e.exports=n?Object.defineProperties:function(e,t){o(e);for(var r,n=a(t),s=n.length,c=0;s>c;)i.f(e,r=n[c++],t[r]);return e}},37371:function(e,t,r){var n=r(25038),i=r(81015),o=r(89925),a=r(25399),s=Object.defineProperty;t.f=n?s:function(e,t,r){if(o(e),t=a(t),o(r),i)try{return s(e,t,r)}catch(e){}if("get"in r||"set"in r)throw TypeError("Accessors not supported");return"value"in r&&(e[t]=r.value),e}},11761:function(e,t,r){var n=r(25038),i=r(72379),o=r(99002),a=r(35583),s=r(25399),c=r(57915),u=r(81015),l=Object.getOwnPropertyDescriptor;t.f=n?l:function(e,t){if(e=a(e),t=s(t),u)try{return l(e,t)}catch(e){}if(c(e,t))return o(!i.f.call(e,t),e[t])}},97798:function(e,t,r){var n=r(58358),i=r(49173).concat("length","prototype");t.f=Object.getOwnPropertyNames||function(e){return n(e,i)}},35675:function(e,t){t.f=Object.getOwnPropertySymbols},58358:function(e,t,r){var n=r(57915),i=r(35583),o=r(71947).indexOf,a=r(99555);e.exports=function(e,t){var r,s=i(e),c=0,u=[];for(r in s)!n(a,r)&&n(s,r)&&u.push(r);for(;t.length>c;)n(s,r=t[c++])&&(~o(u,r)||u.push(r));return u}},17482:function(e,t,r){var n=r(58358),i=r(49173);e.exports=Object.keys||function(e){return n(e,i)}},72379:function(e,t){"use strict";var r={}.propertyIsEnumerable,n=Object.getOwnPropertyDescriptor,i=n&&!r.call({1:2},1);t.f=i?function(e){var t=n(this,e);return!!t&&t.enumerable}:r},34773:function(e,t,r){"use strict";var n=r(97906),i=r(88625);e.exports=n?{}.toString:function(){return"[object "+i(this)+"]"}},23052:function(e,t,r){var n=r(94747),i=r(52744);e.exports=function(e,t){var r,o;if("string"===t&&n(r=e.toString)&&!i(o=r.call(e)))return o;if(n(r=e.valueOf)&&!i(o=r.call(e)))return o;if("string"!==t&&n(r=e.toString)&&!i(o=r.call(e)))return o;throw TypeError("Can't convert object to primitive value")}},1545:function(e,t,r){var n=r(87009),i=r(97798),o=r(35675),a=r(89925);e.exports=n("Reflect","ownKeys")||function(e){var t=i.f(a(e)),r=o.f;return r?t.concat(r(e)):t}},36652:function(e,t,r){var n=r(45893),i=r(94747),o=r(57915),a=r(9213),s=r(53570),c=r(86468),u=r(26227),l=r(14288).CONFIGURABLE,p=u.get,d=u.enforce,f=String(String).split("String");(e.exports=function(e,t,r,c){var u,p=!!c&&!!c.unsafe,h=!!c&&!!c.enumerable,v=!!c&&!!c.noTargetGet,m=c&&void 0!==c.name?c.name:t;i(r)&&("Symbol("===String(m).slice(0,7)&&(m="["+String(m).replace(/^Symbol\(([^)]*)\)/,"$1")+"]"),(!o(r,"name")||l&&r.name!==m)&&a(r,"name",m),(u=d(r)).source||(u.source=f.join("string"==typeof m?m:""))),e!==n?(p?!v&&e[t]&&(h=!0):delete e[t],h?e[t]=r:a(e,t,r)):h?e[t]=r:s(t,r)})(Function.prototype,"toString",(function(){return i(this)&&p(this).source||c(this)}))},85836:function(e,t,r){var n=r(89925),i=r(94747),o=r(54590),a=r(63057);e.exports=function(e,t){var r=e.exec;if(i(r)){var s=r.call(e,t);return null!==s&&n(s),s}if("RegExp"===o(e))return a.call(e,t);throw TypeError("RegExp#exec called on incompatible receiver")}},63057:function(e,t,r){"use strict";var n,i,o=r(59749),a=r(99133),s=r(32907),c=r(69063),u=r(32698),l=r(26227).get,p=r(40749),d=r(37088),f=RegExp.prototype.exec,h=c("native-string-replace",String.prototype.replace),v=f,m=(n=/a/,i=/b*/g,f.call(n,"a"),f.call(i,"a"),0!==n.lastIndex||0!==i.lastIndex),_=s.UNSUPPORTED_Y||s.BROKEN_CARET,T=void 0!==/()??/.exec("")[1];(m||T||_||p||d)&&(v=function(e){var t,r,n,i,s,c,p,d=this,g=l(d),y=o(e),E=g.raw;if(E)return E.lastIndex=d.lastIndex,t=v.call(E,y),d.lastIndex=E.lastIndex,t;var b=g.groups,A=_&&d.sticky,S=a.call(d),C=d.source,I=0,O=y;if(A&&(-1===(S=S.replace("y","")).indexOf("g")&&(S+="g"),O=y.slice(d.lastIndex),d.lastIndex>0&&(!d.multiline||d.multiline&&"\n"!==y.charAt(d.lastIndex-1))&&(C="(?: "+C+")",O=" "+O,I++),r=new RegExp("^(?:"+C+")",S)),T&&(r=new RegExp("^"+C+"$(?!\\s)",S)),m&&(n=d.lastIndex),i=f.call(A?r:d,O),A?i?(i.input=i.input.slice(I),i[0]=i[0].slice(I),i.index=d.lastIndex,d.lastIndex+=i[0].length):d.lastIndex=0:m&&i&&(d.lastIndex=d.global?i.index+i[0].length:n),T&&i&&i.length>1&&h.call(i[0],r,(function(){for(s=1;sb)","g");return"b"!==e.exec("b").groups.a||"bc"!=="b".replace(e,"$c")}))},95984:function(e){e.exports=function(e){if(null==e)throw TypeError("Can't call method on "+e);return e}},53570:function(e,t,r){var n=r(45893);e.exports=function(e,t){try{Object.defineProperty(n,e,{value:t,configurable:!0,writable:!0})}catch(r){n[e]=t}return t}},32529:function(e,t,r){var n=r(69063),i=r(97818),o=n("keys");e.exports=function(e){return o[e]||(o[e]=i(e))}},80359:function(e,t,r){var n=r(45893),i=r(53570),o="__core-js_shared__",a=n[o]||i(o,{});e.exports=a},69063:function(e,t,r){var n=r(32021),i=r(80359);(e.exports=function(e,t){return i[e]||(i[e]=void 0!==t?t:{})})("versions",[]).push({version:"3.18.3",mode:n?"pure":"global",copyright:"\xa9 2021 Denis Pushkarev (zloirock.ru)"})},15073:function(e,t,r){var n=r(48253),i=r(59749),o=r(95984),a=function(e){return function(t,r){var a,s,c=i(o(t)),u=n(r),l=c.length;return u<0||u>=l?e?"":void 0:(a=c.charCodeAt(u))<55296||a>56319||u+1===l||(s=c.charCodeAt(u+1))<56320||s>57343?e?c.charAt(u):a:e?c.slice(u,u+2):s-56320+(a-55296<<10)+65536}};e.exports={codeAt:a(!1),charAt:a(!0)}},93248:function(e,t,r){var n=r(48253),i=Math.max,o=Math.min;e.exports=function(e,t){var r=n(e);return r<0?i(r+t,0):o(r,t)}},35583:function(e,t,r){var n=r(43881),i=r(95984);e.exports=function(e){return n(i(e))}},48253:function(e){var t=Math.ceil,r=Math.floor;e.exports=function(e){var n=+e;return n!=n||0===n?0:(n>0?r:t)(n)}},64804:function(e,t,r){var n=r(48253),i=Math.min;e.exports=function(e){return e>0?i(n(e),9007199254740991):0}},63003:function(e,t,r){var n=r(95984);e.exports=function(e){return Object(n(e))}},21731:function(e,t,r){var n=r(52744),i=r(28527),o=r(4100),a=r(23052),s=r(22433)("toPrimitive");e.exports=function(e,t){if(!n(e)||i(e))return e;var r,c=o(e,s);if(c){if(void 0===t&&(t="default"),r=c.call(e,t),!n(r)||i(r))return r;throw TypeError("Can't convert object to primitive value")}return void 0===t&&(t="number"),a(e,t)}},25399:function(e,t,r){var n=r(21731),i=r(28527);e.exports=function(e){var t=n(e,"string");return i(t)?t:String(t)}},97906:function(e,t,r){var n={};n[r(22433)("toStringTag")]="z",e.exports="[object z]"===String(n)},59749:function(e,t,r){var n=r(88625);e.exports=function(e){if("Symbol"===n(e))throw TypeError("Cannot convert a Symbol value to a string");return String(e)}},64729:function(e){e.exports=function(e){try{return String(e)}catch(e){return"Object"}}},97818:function(e){var t=0,r=Math.random();e.exports=function(e){return"Symbol("+String(void 0===e?"":e)+")_"+(++t+r).toString(36)}},89614:function(e,t,r){var n=r(56406);e.exports=n&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},22433:function(e,t,r){var n=r(45893),i=r(69063),o=r(57915),a=r(97818),s=r(56406),c=r(89614),u=i("wks"),l=n.Symbol,p=c?l:l&&l.withoutSetter||a;e.exports=function(e){return o(u,e)&&(s||"string"==typeof u[e])||(s&&o(l,e)?u[e]=l[e]:u[e]=p("Symbol."+e)),u[e]}},19034:function(e,t,r){var n=r(36652),i=Date.prototype,o="Invalid Date",a="toString",s=i[a],c=i.getTime;String(new Date(NaN))!=o&&n(i,a,(function(){var e=c.call(this);return e==e?s.call(this):o}))},49620:function(e,t,r){var n=r(25038),i=r(14288).EXISTS,o=r(37371).f,a=Function.prototype,s=a.toString,c=/^\s*function ([^ (]*)/;n&&!i&&o(a,"name",{configurable:!0,get:function(){try{return s.call(this).match(c)[1]}catch(e){return""}}})},15885:function(e,t,r){var n=r(97906),i=r(36652),o=r(34773);n||i(Object.prototype,"toString",o,{unsafe:!0})},98909:function(e,t,r){"use strict";var n=r(81172),i=r(63057);n({target:"RegExp",proto:!0,forced:/./.exec!==i},{exec:i})},12871:function(e,t,r){"use strict";var n=r(14288).PROPER,i=r(36652),o=r(89925),a=r(59749),s=r(48553),c=r(99133),u="toString",l=RegExp.prototype,p=l[u],d=s((function(){return"/a/b"!=p.call({source:"a",flags:"b"})})),f=n&&p.name!=u;(d||f)&&i(RegExp.prototype,u,(function(){var e=o(this),t=a(e.source),r=e.flags;return"/"+t+"/"+a(void 0===r&&e instanceof RegExp&&!("flags"in l)?c.call(e):r)}),{unsafe:!0})},93654:function(e,t,r){"use strict";var n=r(18702),i=r(48553),o=r(89925),a=r(94747),s=r(48253),c=r(64804),u=r(59749),l=r(95984),p=r(60787),d=r(4100),f=r(80212),h=r(85836),v=r(22433)("replace"),m=Math.max,_=Math.min,T="$0"==="a".replace(/./,"$0"),g=!!/./[v]&&""===/./[v]("a","$0");n("replace",(function(e,t,r){var n=g?"$":"$0";return[function(e,r){var n=l(this),i=null==e?void 0:d(e,v);return i?i.call(e,n,r):t.call(u(n),e,r)},function(e,i){var l=o(this),d=u(e);if("string"==typeof i&&-1===i.indexOf(n)&&-1===i.indexOf("$<")){var v=r(t,l,d,i);if(v.done)return v.value}var T=a(i);T||(i=u(i));var g=l.global;if(g){var y=l.unicode;l.lastIndex=0}for(var E=[];;){var b=h(l,d);if(null===b)break;if(E.push(b),!g)break;""===u(b[0])&&(l.lastIndex=p(d,c(l.lastIndex),y))}for(var A,S="",C=0,I=0;I=C&&(S+=d.slice(C,w)+L,C=w+O.length)}return S+d.slice(C)}]}),!!i((function(){var e=/./;return e.exec=function(){var e=[];return e.groups={a:"7"},e},"7"!=="".replace(e,"$")}))||!T||g)},14461:function(e,t,r){"use strict";var n=r(53454);function i(){}function o(){}o.resetWarningCache=i,e.exports=function(){function e(e,t,r,i,o,a){if(a!==n){var s=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw s.name="Invariant Violation",s}}function t(){return e}e.isRequired=e;var r={array:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:o,resetWarningCache:i};return r.PropTypes=r,r}},72593:function(e,t,r){e.exports=r(14461)()},53454:function(e){"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},59824:function(e){var t=function(e){"use strict";var t,r=Object.prototype,n=r.hasOwnProperty,i=Object.defineProperty||function(e,t,r){e[t]=r.value},o="function"==typeof Symbol?Symbol:{},a=o.iterator||"@@iterator",s=o.asyncIterator||"@@asyncIterator",c=o.toStringTag||"@@toStringTag";function u(e,t,r){return Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{u({},"")}catch(e){u=function(e,t,r){return e[t]=r}}function l(e,t,r,n){var o=t&&t.prototype instanceof _?t:_,a=Object.create(o.prototype),s=new P(n||[]);return i(a,"_invoke",{value:I(e,r,s)}),a}function p(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}e.wrap=l;var d="suspendedStart",f="suspendedYield",h="executing",v="completed",m={};function _(){}function T(){}function g(){}var y={};u(y,a,(function(){return this}));var E=Object.getPrototypeOf,b=E&&E(E(N([])));b&&b!==r&&n.call(b,a)&&(y=b);var A=g.prototype=_.prototype=Object.create(y);function S(e){["next","throw","return"].forEach((function(t){u(e,t,(function(e){return this._invoke(t,e)}))}))}function C(e,t){function r(i,o,a,s){var c=p(e[i],e,o);if("throw"!==c.type){var u=c.arg,l=u.value;return l&&"object"==typeof l&&n.call(l,"__await")?t.resolve(l.__await).then((function(e){r("next",e,a,s)}),(function(e){r("throw",e,a,s)})):t.resolve(l).then((function(e){u.value=e,a(u)}),(function(e){return r("throw",e,a,s)}))}s(c.arg)}var o;i(this,"_invoke",{value:function(e,n){function i(){return new t((function(t,i){r(e,n,t,i)}))}return o=o?o.then(i,i):i()}})}function I(e,t,r){var n=d;return function(i,o){if(n===h)throw new Error("Generator is already running");if(n===v){if("throw"===i)throw o;return x()}for(r.method=i,r.arg=o;;){var a=r.delegate;if(a){var s=O(a,r);if(s){if(s===m)continue;return s}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if(n===d)throw n=v,r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n=h;var c=p(e,t,r);if("normal"===c.type){if(n=r.done?v:f,c.arg===m)continue;return{value:c.arg,done:r.done}}"throw"===c.type&&(n=v,r.method="throw",r.arg=c.arg)}}}function O(e,r){var n=r.method,i=e.iterator[n];if(i===t)return r.delegate=null,"throw"===n&&e.iterator.return&&(r.method="return",r.arg=t,O(e,r),"throw"===r.method)||"return"!==n&&(r.method="throw",r.arg=new TypeError("The iterator does not provide a '"+n+"' method")),m;var o=p(i,e.iterator,r.arg);if("throw"===o.type)return r.method="throw",r.arg=o.arg,r.delegate=null,m;var a=o.arg;return a?a.done?(r[e.resultName]=a.value,r.next=e.nextLoc,"return"!==r.method&&(r.method="next",r.arg=t),r.delegate=null,m):a:(r.method="throw",r.arg=new TypeError("iterator result is not an object"),r.delegate=null,m)}function w(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function R(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function P(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(w,this),this.reset(!0)}function N(e){if(e){var r=e[a];if(r)return r.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var i=-1,o=function r(){for(;++i=0;--o){var a=this.tryEntries[o],s=a.completion;if("root"===a.tryLoc)return i("end");if(a.tryLoc<=this.prev){var c=n.call(a,"catchLoc"),u=n.call(a,"finallyLoc");if(c&&u){if(this.prev=0;--r){var i=this.tryEntries[r];if(i.tryLoc<=this.prev&&n.call(i,"finallyLoc")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),R(r),m}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var i=n.arg;R(r)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(e,r,n){return this.delegate={iterator:N(e),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=t),m}},e}(e.exports);try{regeneratorRuntime=t}catch(e){"object"==typeof globalThis?globalThis.regeneratorRuntime=t:Function("r","regeneratorRuntime = r")(t)}},90185:function(e){e.exports=function(){"use strict";function e(t){return(e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(t)}function t(e,t,r,n,i,o,a){try{var s=e[o](a),c=s.value}catch(e){return void r(e)}s.done?t(c):Promise.resolve(c).then(n,i)}function r(e){return function(){var r=this,n=arguments;return new Promise((function(i,o){var a=e.apply(r,n);function s(e){t(a,i,o,s,c,"next",e)}function c(e){t(a,i,o,s,c,"throw",e)}s(void 0)}))}}function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r,n=Object.keys(e);return Object.getOwnPropertySymbols&&(r=Object.getOwnPropertySymbols(e),t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)),n}function o(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=new Array(t);r=e.length?{done:!0}:{done:!1,value:e[t++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var n,i,o=!0,a=!1;return{s:function(){n=e[Symbol.iterator]()},n:function(){var e=n.next();return o=e.done,e},e:function(e){a=!0,i=e},f:function(){try{o||null==n.return||n.return()}finally{if(a)throw i}}}}var d=Object.is||function(e,t){return e===t?0!==e||1/e==1/t:e!=e&&t!=t};function f(e,t,r){v(t);var n,i=p(function e(t,r){if(r.length){var n=a(r),i=n[0],o=n.slice(1);if("function"==typeof i){var c=[];if(Array.isArray(t))for(var u=0,l=t.length;ul;)if((s=c[l++])!=s)return!0}else for(;u>l;l++)if((e||l in c)&&c[l]===r)return e||l||0;return!e&&-1}};e.exports={includes:a(!0),indexOf:a(!1)}},7484:function(e,t,r){var n=r(94484);e.exports=n([].slice)},36232:function(e,t,r){var n=r(64479)("iterator"),i=!1;try{var o=0,a={next:function(){return{done:!!o++}},return:function(){i=!0}};a[n]=function(){return this},Array.from(a,(function(){throw 2}))}catch(e){}e.exports=function(e,t){if(!t&&!i)return!1;var r=!1;try{var o={};o[n]=function(){return{next:function(){return{done:r=!0}}}},e(o)}catch(e){}return r}},6092:function(e,t,r){var n=r(94484),i=n({}.toString),o=n("".slice);e.exports=function(e){return o(i(e),8,-1)}},78791:function(e,t,r){var n=r(93607),i=r(41e3),o=r(18465),a=r(6092),s=r(64479)("toStringTag"),c=n.Object,u="Arguments"==a(function(){return arguments}());e.exports=i?a:function(e){var t,r,n;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(r=function(e,t){try{return e[t]}catch(e){}}(t=c(e),s))?r:u?a(t):"Object"==(n=a(t))&&o(t.callee)?"Arguments":n}},8229:function(e,t,r){var n=r(94484)("".replace),i=String(Error("zxcasd").stack),o=/\n\s*at [^:]*:[^\n]*/,a=o.test(i);e.exports=function(e,t){if(a&&"string"==typeof e)for(;t--;)e=n(e,o,"");return e}},47816:function(e,t,r){var n=r(46829),i=r(95851),o=r(74063),a=r(96885);e.exports=function(e,t,r){for(var s=i(t),c=a.f,u=o.f,l=0;l0&&n[0]<4?1:+(n[0]+n[1])),!i&&a&&(!(n=a.match(/Edge\/(\d+)/))||n[1]>=74)&&(n=a.match(/Chrome\/(\d+)/))&&(i=+n[1]),e.exports=i},86243:function(e){e.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},49039:function(e,t,r){var n=r(21555),i=r(61584);e.exports=!n((function(){var e=Error("a");return!("stack"in e)||(Object.defineProperty(e,"stack",i(1,7)),7!==e.stack)}))},20138:function(e,t,r){"use strict";var n=r(93607),i=r(76117),o=r(94484),a=r(18465),s=r(74063).f,c=r(86024),u=r(6435),l=r(1132),p=r(41295),d=r(46829),f=function(e){var t=function(r,n,o){if(this instanceof t){switch(arguments.length){case 0:return new e;case 1:return new e(r);case 2:return new e(r,n)}return new e(r,n,o)}return i(e,this,arguments)};return t.prototype=e.prototype,t};e.exports=function(e,t){var r,i,h,v,m,_,T,g,y=e.target,E=e.global,b=e.stat,A=e.proto,S=E?n:b?n[y]:(n[y]||{}).prototype,C=E?u:u[y]||p(u,y,{})[y],I=C.prototype;for(h in t)r=!c(E?h:y+(b?".":"#")+h,e.forced)&&S&&d(S,h),m=C[h],r&&(_=e.noTargetGet?(g=s(S,h))&&g.value:S[h]),v=r&&_?_:t[h],r&&typeof m==typeof v||(T=e.bind&&r?l(v,n):e.wrap&&r?f(v):A&&a(v)?o(v):v,(e.sham||v&&v.sham||m&&m.sham)&&p(T,"sham",!0),p(C,h,T),A&&(d(u,i=y+"Prototype")||p(u,i,{}),p(u[i],h,v),e.real&&I&&!I[h]&&p(I,h,v)))}},21555:function(e){e.exports=function(e){try{return!!e()}catch(e){return!0}}},76117:function(e,t,r){var n=r(91956),i=Function.prototype,o=i.apply,a=i.call;e.exports="object"==typeof Reflect&&Reflect.apply||(n?a.bind(o):function(){return a.apply(o,arguments)})},1132:function(e,t,r){var n=r(94484),i=r(92606),o=r(91956),a=n(n.bind);e.exports=function(e,t){return i(e),void 0===t?e:o?a(e,t):function(){return e.apply(t,arguments)}}},91956:function(e,t,r){var n=r(21555);e.exports=!n((function(){var e=function(){}.bind();return"function"!=typeof e||e.hasOwnProperty("prototype")}))},62969:function(e,t,r){var n=r(91956),i=Function.prototype.call;e.exports=n?i.bind(i):function(){return i.apply(i,arguments)}},42322:function(e,t,r){var n=r(44576),i=r(46829),o=Function.prototype,a=n&&Object.getOwnPropertyDescriptor,s=i(o,"name"),c=s&&"something"===function(){}.name,u=s&&(!n||n&&a(o,"name").configurable);e.exports={EXISTS:s,PROPER:c,CONFIGURABLE:u}},94484:function(e,t,r){var n=r(91956),i=Function.prototype,o=i.bind,a=i.call,s=n&&o.bind(a,a);e.exports=n?function(e){return e&&s(e)}:function(e){return e&&function(){return a.apply(e,arguments)}}},95371:function(e,t,r){var n=r(6435),i=r(93607),o=r(18465),a=function(e){return o(e)?e:void 0};e.exports=function(e,t){return arguments.length<2?a(n[e])||a(i[e]):n[e]&&n[e][t]||i[e]&&i[e][t]}},11687:function(e,t,r){var n=r(78791),i=r(57874),o=r(70561),a=r(64479)("iterator");e.exports=function(e){if(null!=e)return i(e,a)||i(e,"@@iterator")||o[n(e)]}},73213:function(e,t,r){var n=r(93607),i=r(62969),o=r(92606),a=r(40387),s=r(76795),c=r(11687),u=n.TypeError;e.exports=function(e,t){var r=arguments.length<2?c(e):t;if(o(r))return a(i(r,e));throw u(s(e)+" is not iterable")}},57874:function(e,t,r){var n=r(92606);e.exports=function(e,t){var r=e[t];return null==r?void 0:n(r)}},93607:function(e,t,r){var n=function(e){return e&&e.Math==Math&&e};e.exports=n("object"==typeof globalThis&&globalThis)||n("object"==typeof window&&window)||n("object"==typeof self&&self)||n("object"==typeof r.g&&r.g)||function(){return this}()||Function("return this")()},46829:function(e,t,r){var n=r(94484),i=r(78793),o=n({}.hasOwnProperty);e.exports=Object.hasOwn||function(e,t){return o(i(e),t)}},25865:function(e){e.exports={}},32601:function(e,t,r){var n=r(93607);e.exports=function(e,t){var r=n.console;r&&r.error&&(1==arguments.length?r.error(e):r.error(e,t))}},91873:function(e,t,r){var n=r(95371);e.exports=n("document","documentElement")},59713:function(e,t,r){var n=r(44576),i=r(21555),o=r(46627);e.exports=!n&&!i((function(){return 7!=Object.defineProperty(o("div"),"a",{get:function(){return 7}}).a}))},76371:function(e,t,r){var n=r(93607),i=r(94484),o=r(21555),a=r(6092),s=n.Object,c=i("".split);e.exports=o((function(){return!s("z").propertyIsEnumerable(0)}))?function(e){return"String"==a(e)?c(e,""):s(e)}:s},48926:function(e,t,r){var n=r(94484),i=r(18465),o=r(32985),a=n(Function.toString);i(o.inspectSource)||(o.inspectSource=function(e){return a(e)}),e.exports=o.inspectSource},78852:function(e,t,r){var n=r(94934),i=r(41295);e.exports=function(e,t){n(t)&&"cause"in t&&i(e,"cause",t.cause)}},58257:function(e,t,r){var n,i,o,a=r(52459),s=r(93607),c=r(94484),u=r(94934),l=r(41295),p=r(46829),d=r(32985),f=r(8435),h=r(25865),v="Object already initialized",m=s.TypeError,_=s.WeakMap;if(a||d.state){var T=d.state||(d.state=new _),g=c(T.get),y=c(T.has),E=c(T.set);n=function(e,t){if(y(T,e))throw new m(v);return t.facade=e,E(T,e,t),t},i=function(e){return g(T,e)||{}},o=function(e){return y(T,e)}}else{var b=f("state");h[b]=!0,n=function(e,t){if(p(e,b))throw new m(v);return t.facade=e,l(e,b,t),t},i=function(e){return p(e,b)?e[b]:{}},o=function(e){return p(e,b)}}e.exports={set:n,get:i,has:o,enforce:function(e){return o(e)?i(e):n(e,{})},getterFor:function(e){return function(t){var r;if(!u(t)||(r=i(t)).type!==e)throw m("Incompatible receiver, "+e+" required");return r}}}},96589:function(e,t,r){var n=r(64479),i=r(70561),o=n("iterator"),a=Array.prototype;e.exports=function(e){return void 0!==e&&(i.Array===e||a[o]===e)}},18465:function(e){e.exports=function(e){return"function"==typeof e}},18225:function(e,t,r){var n=r(94484),i=r(21555),o=r(18465),a=r(78791),s=r(95371),c=r(48926),u=function(){},l=[],p=s("Reflect","construct"),d=/^\s*(?:class|function)\b/,f=n(d.exec),h=!d.exec(u),v=function(e){if(!o(e))return!1;try{return p(u,l,e),!0}catch(e){return!1}},m=function(e){if(!o(e))return!1;switch(a(e)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}try{return h||!!f(d,c(e))}catch(e){return!0}};m.sham=!0,e.exports=!p||i((function(){var e;return v(v.call)||!v(Object)||!v((function(){e=!0}))||e}))?m:v},86024:function(e,t,r){var n=r(21555),i=r(18465),o=/#|\.prototype\./,a=function(e,t){var r=c[s(e)];return r==l||r!=u&&(i(t)?n(t):!!t)},s=a.normalize=function(e){return String(e).replace(o,".").toLowerCase()},c=a.data={},u=a.NATIVE="N",l=a.POLYFILL="P";e.exports=a},94934:function(e,t,r){var n=r(18465);e.exports=function(e){return"object"==typeof e?null!==e:n(e)}},40199:function(e){e.exports=!0},97433:function(e,t,r){var n=r(93607),i=r(95371),o=r(18465),a=r(78285),s=r(98996),c=n.Object;e.exports=s?function(e){return"symbol"==typeof e}:function(e){var t=i("Symbol");return o(t)&&a(t.prototype,c(e))}},27168:function(e,t,r){var n=r(93607),i=r(1132),o=r(62969),a=r(40387),s=r(76795),c=r(96589),u=r(88770),l=r(78285),p=r(73213),d=r(11687),f=r(23567),h=n.TypeError,v=function(e,t){this.stopped=e,this.result=t},m=v.prototype;e.exports=function(e,t,r){var n,_,T,g,y,E,b,A=r&&r.that,S=!(!r||!r.AS_ENTRIES),C=!(!r||!r.IS_ITERATOR),I=!(!r||!r.INTERRUPTED),O=i(t,A),w=function(e){return n&&f(n,"normal",e),new v(!0,e)},R=function(e){return S?(a(e),I?O(e[0],e[1],w):O(e[0],e[1])):I?O(e,w):O(e)};if(C)n=e;else{if(!(_=d(e)))throw h(s(e)+" is not iterable");if(c(_)){for(T=0,g=u(e);g>T;T++)if((y=R(e[T]))&&l(m,y))return y;return new v(!1)}n=p(e,_)}for(E=n.next;!(b=o(E,n)).done;){try{y=R(b.value)}catch(e){f(n,"throw",e)}if("object"==typeof y&&y&&l(m,y))return y}return new v(!1)}},23567:function(e,t,r){var n=r(62969),i=r(40387),o=r(57874);e.exports=function(e,t,r){var a,s;i(e);try{if(!(a=o(e,"return"))){if("throw"===t)throw r;return r}a=n(a,e)}catch(e){s=!0,a=e}if("throw"===t)throw r;if(s)throw a;return i(a),r}},80173:function(e,t,r){"use strict";var n,i,o,a=r(21555),s=r(18465),c=r(59652),u=r(78983),l=r(40702),p=r(64479),d=r(40199),f=p("iterator"),h=!1;[].keys&&("next"in(o=[].keys())?(i=u(u(o)))!==Object.prototype&&(n=i):h=!0),null==n||a((function(){var e={};return n[f].call(e)!==e}))?n={}:d&&(n=c(n)),s(n[f])||l(n,f,(function(){return this})),e.exports={IteratorPrototype:n,BUGGY_SAFARI_ITERATORS:h}},70561:function(e){e.exports={}},88770:function(e,t,r){var n=r(81250);e.exports=function(e){return n(e.length)}},33007:function(e,t,r){var n,i,o,a,s,c,u,l,p=r(93607),d=r(1132),f=r(74063).f,h=r(16061).set,v=r(203),m=r(90008),_=r(98425),T=r(93076),g=p.MutationObserver||p.WebKitMutationObserver,y=p.document,E=p.process,b=p.Promise,A=f(p,"queueMicrotask"),S=A&&A.value;S||(n=function(){var e,t;for(T&&(e=E.domain)&&e.exit();i;){t=i.fn,i=i.next;try{t()}catch(e){throw i?a():o=void 0,e}}o=void 0,e&&e.enter()},v||T||_||!g||!y?!m&&b&&b.resolve?((u=b.resolve(void 0)).constructor=b,l=d(u.then,u),a=function(){l(n)}):T?a=function(){E.nextTick(n)}:(h=d(h,p),a=function(){h(n)}):(s=!0,c=y.createTextNode(""),new g(n).observe(c,{characterData:!0}),a=function(){c.data=s=!s})),e.exports=S||function(e){var t={fn:e,next:void 0};o&&(o.next=t),i||(i=t,a()),o=t}},10650:function(e,t,r){var n=r(93607);e.exports=n.Promise},65748:function(e,t,r){var n=r(61680),i=r(21555);e.exports=!!Object.getOwnPropertySymbols&&!i((function(){var e=Symbol();return!String(e)||!(Object(e)instanceof Symbol)||!Symbol.sham&&n&&n<41}))},52459:function(e,t,r){var n=r(93607),i=r(18465),o=r(48926),a=n.WeakMap;e.exports=i(a)&&/native code/.test(o(a))},15239:function(e,t,r){"use strict";var n=r(92606),i=function(e){var t,r;this.promise=new e((function(e,n){if(void 0!==t||void 0!==r)throw TypeError("Bad Promise constructor");t=e,r=n})),this.resolve=n(t),this.reject=n(r)};e.exports.f=function(e){return new i(e)}},48751:function(e,t,r){var n=r(92467);e.exports=function(e,t){return void 0===e?arguments.length<2?"":t:n(e)}},59652:function(e,t,r){var n,i=r(40387),o=r(35741),a=r(86243),s=r(25865),c=r(91873),u=r(46627),l=r(8435),p="prototype",d="script",f=l("IE_PROTO"),h=function(){},v=function(e){return"<"+d+">"+e+""},m=function(e){e.write(v("")),e.close();var t=e.parentWindow.Object;return e=null,t},_=function(){try{n=new ActiveXObject("htmlfile")}catch(e){}var e,t,r;_="undefined"!=typeof document?document.domain&&n?m(n):(t=u("iframe"),r="java"+d+":",t.style.display="none",c.appendChild(t),t.src=String(r),(e=t.contentWindow.document).open(),e.write(v("document.F=Object")),e.close(),e.F):m(n);for(var i=a.length;i--;)delete _[p][a[i]];return _()};s[f]=!0,e.exports=Object.create||function(e,t){var r;return null!==e?(h[p]=i(e),r=new h,h[p]=null,r[f]=e):r=_(),void 0===t?r:o.f(r,t)}},35741:function(e,t,r){var n=r(44576),i=r(29298),o=r(96885),a=r(40387),s=r(74793),c=r(5980);t.f=n&&!i?Object.defineProperties:function(e,t){a(e);for(var r,n=s(t),i=c(t),u=i.length,l=0;u>l;)o.f(e,r=i[l++],n[r]);return e}},96885:function(e,t,r){var n=r(93607),i=r(44576),o=r(59713),a=r(29298),s=r(40387),c=r(25501),u=n.TypeError,l=Object.defineProperty,p=Object.getOwnPropertyDescriptor,d="enumerable",f="configurable",h="writable";t.f=i?a?function(e,t,r){if(s(e),t=c(t),s(r),"function"==typeof e&&"prototype"===t&&"value"in r&&h in r&&!r[h]){var n=p(e,t);n&&n[h]&&(e[t]=r.value,r={configurable:f in r?r[f]:n[f],enumerable:d in r?r[d]:n[d],writable:!1})}return l(e,t,r)}:l:function(e,t,r){if(s(e),t=c(t),s(r),o)try{return l(e,t,r)}catch(e){}if("get"in r||"set"in r)throw u("Accessors not supported");return"value"in r&&(e[t]=r.value),e}},74063:function(e,t,r){var n=r(44576),i=r(62969),o=r(83417),a=r(61584),s=r(74793),c=r(25501),u=r(46829),l=r(59713),p=Object.getOwnPropertyDescriptor;t.f=n?p:function(e,t){if(e=s(e),t=c(t),l)try{return p(e,t)}catch(e){}if(u(e,t))return a(!i(o.f,e,t),e[t])}},55100:function(e,t,r){var n=r(36056),i=r(86243).concat("length","prototype");t.f=Object.getOwnPropertyNames||function(e){return n(e,i)}},54289:function(e,t){t.f=Object.getOwnPropertySymbols},78983:function(e,t,r){var n=r(93607),i=r(46829),o=r(18465),a=r(78793),s=r(8435),c=r(10679),u=s("IE_PROTO"),l=n.Object,p=l.prototype;e.exports=c?l.getPrototypeOf:function(e){var t=a(e);if(i(t,u))return t[u];var r=t.constructor;return o(r)&&t instanceof r?r.prototype:t instanceof l?p:null}},78285:function(e,t,r){var n=r(94484);e.exports=n({}.isPrototypeOf)},36056:function(e,t,r){var n=r(94484),i=r(46829),o=r(74793),a=r(41517).indexOf,s=r(25865),c=n([].push);e.exports=function(e,t){var r,n=o(e),u=0,l=[];for(r in n)!i(s,r)&&i(n,r)&&c(l,r);for(;t.length>u;)i(n,r=t[u++])&&(~a(l,r)||c(l,r));return l}},5980:function(e,t,r){var n=r(36056),i=r(86243);e.exports=Object.keys||function(e){return n(e,i)}},83417:function(e,t){"use strict";var r={}.propertyIsEnumerable,n=Object.getOwnPropertyDescriptor,i=n&&!r.call({1:2},1);t.f=i?function(e){var t=n(this,e);return!!t&&t.enumerable}:r},42179:function(e,t,r){var n=r(94484),i=r(40387),o=r(98686);e.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var e,t=!1,r={};try{(e=n(Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set))(r,[]),t=r instanceof Array}catch(e){}return function(r,n){return i(r),o(n),t?e(r,n):r.__proto__=n,r}}():void 0)},76183:function(e,t,r){"use strict";var n=r(41e3),i=r(78791);e.exports=n?{}.toString:function(){return"[object "+i(this)+"]"}},95850:function(e,t,r){var n=r(93607),i=r(62969),o=r(18465),a=r(94934),s=n.TypeError;e.exports=function(e,t){var r,n;if("string"===t&&o(r=e.toString)&&!a(n=i(r,e)))return n;if(o(r=e.valueOf)&&!a(n=i(r,e)))return n;if("string"!==t&&o(r=e.toString)&&!a(n=i(r,e)))return n;throw s("Can't convert object to primitive value")}},95851:function(e,t,r){var n=r(95371),i=r(94484),o=r(55100),a=r(54289),s=r(40387),c=i([].concat);e.exports=n("Reflect","ownKeys")||function(e){var t=o.f(s(e)),r=a.f;return r?c(t,r(e)):t}},6435:function(e){e.exports={}},57539:function(e){e.exports=function(e){try{return{error:!1,value:e()}}catch(e){return{error:!0,value:e}}}},67274:function(e,t,r){var n=r(40387),i=r(94934),o=r(15239);e.exports=function(e,t){if(n(e),i(t)&&t.constructor===e)return t;var r=o.f(e);return(0,r.resolve)(t),r.promise}},97181:function(e){var t=function(){this.head=null,this.tail=null};t.prototype={add:function(e){var t={item:e,next:null};this.head?this.tail.next=t:this.head=t,this.tail=t},get:function(){var e=this.head;if(e)return this.head=e.next,this.tail===e&&(this.tail=null),e.item}},e.exports=t},74832:function(e,t,r){var n=r(40702);e.exports=function(e,t,r){for(var i in t)r&&r.unsafe&&e[i]?e[i]=t[i]:n(e,i,t[i],r);return e}},40702:function(e,t,r){var n=r(41295);e.exports=function(e,t,r,i){i&&i.enumerable?e[t]=r:n(e,t,r)}},93474:function(e,t,r){var n=r(93607).TypeError;e.exports=function(e){if(null==e)throw n("Can't call method on "+e);return e}},63912:function(e,t,r){var n=r(93607),i=Object.defineProperty;e.exports=function(e,t){try{i(n,e,{value:t,configurable:!0,writable:!0})}catch(r){n[e]=t}return t}},60749:function(e,t,r){"use strict";var n=r(95371),i=r(96885),o=r(64479),a=r(44576),s=o("species");e.exports=function(e){var t=n(e),r=i.f;a&&t&&!t[s]&&r(t,s,{configurable:!0,get:function(){return this}})}},14179:function(e,t,r){var n=r(41e3),i=r(96885).f,o=r(41295),a=r(46829),s=r(76183),c=r(64479)("toStringTag");e.exports=function(e,t,r,u){if(e){var l=r?e:e.prototype;a(l,c)||i(l,c,{configurable:!0,value:t}),u&&!n&&o(l,"toString",s)}}},8435:function(e,t,r){var n=r(4989),i=r(70388),o=n("keys");e.exports=function(e){return o[e]||(o[e]=i(e))}},32985:function(e,t,r){var n=r(93607),i=r(63912),o="__core-js_shared__",a=n[o]||i(o,{});e.exports=a},4989:function(e,t,r){var n=r(40199),i=r(32985);(e.exports=function(e,t){return i[e]||(i[e]=void 0!==t?t:{})})("versions",[]).push({version:"3.21.1",mode:n?"pure":"global",copyright:"\xa9 2014-2022 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.21.1/LICENSE",source:"https://github.com/zloirock/core-js"})},53073:function(e,t,r){var n=r(40387),i=r(35160),o=r(64479)("species");e.exports=function(e,t){var r,a=n(e).constructor;return void 0===a||null==(r=n(a)[o])?t:i(r)}},13347:function(e,t,r){var n=r(94484),i=r(76575),o=r(92467),a=r(93474),s=n("".charAt),c=n("".charCodeAt),u=n("".slice),l=function(e){return function(t,r){var n,l,p=o(a(t)),d=i(r),f=p.length;return d<0||d>=f?e?"":void 0:(n=c(p,d))<55296||n>56319||d+1===f||(l=c(p,d+1))<56320||l>57343?e?s(p,d):n:e?u(p,d,d+2):l-56320+(n-55296<<10)+65536}};e.exports={codeAt:l(!1),charAt:l(!0)}},16061:function(e,t,r){var n,i,o,a,s=r(93607),c=r(76117),u=r(1132),l=r(18465),p=r(46829),d=r(21555),f=r(91873),h=r(7484),v=r(46627),m=r(61504),_=r(203),T=r(93076),g=s.setImmediate,y=s.clearImmediate,E=s.process,b=s.Dispatch,A=s.Function,S=s.MessageChannel,C=s.String,I=0,O={},w="onreadystatechange";try{n=s.location}catch(e){}var R=function(e){if(p(O,e)){var t=O[e];delete O[e],t()}},P=function(e){return function(){R(e)}},N=function(e){R(e.data)},x=function(e){s.postMessage(C(e),n.protocol+"//"+n.host)};g&&y||(g=function(e){m(arguments.length,1);var t=l(e)?e:A(e),r=h(arguments,1);return O[++I]=function(){c(t,void 0,r)},i(I),I},y=function(e){delete O[e]},T?i=function(e){E.nextTick(P(e))}:b&&b.now?i=function(e){b.now(P(e))}:S&&!_?(a=(o=new S).port2,o.port1.onmessage=N,i=u(a.postMessage,a)):s.addEventListener&&l(s.postMessage)&&!s.importScripts&&n&&"file:"!==n.protocol&&!d(x)?(i=x,s.addEventListener("message",N,!1)):i=w in v("script")?function(e){f.appendChild(v("script"))[w]=function(){f.removeChild(this),R(e)}}:function(e){setTimeout(P(e),0)}),e.exports={set:g,clear:y}},34494:function(e,t,r){var n=r(76575),i=Math.max,o=Math.min;e.exports=function(e,t){var r=n(e);return r<0?i(r+t,0):o(r,t)}},74793:function(e,t,r){var n=r(76371),i=r(93474);e.exports=function(e){return n(i(e))}},76575:function(e){var t=Math.ceil,r=Math.floor;e.exports=function(e){var n=+e;return n!=n||0===n?0:(n>0?r:t)(n)}},81250:function(e,t,r){var n=r(76575),i=Math.min;e.exports=function(e){return e>0?i(n(e),9007199254740991):0}},78793:function(e,t,r){var n=r(93607),i=r(93474),o=n.Object;e.exports=function(e){return o(i(e))}},62029:function(e,t,r){var n=r(93607),i=r(62969),o=r(94934),a=r(97433),s=r(57874),c=r(95850),u=r(64479),l=n.TypeError,p=u("toPrimitive");e.exports=function(e,t){if(!o(e)||a(e))return e;var r,n=s(e,p);if(n){if(void 0===t&&(t="default"),r=i(n,e,t),!o(r)||a(r))return r;throw l("Can't convert object to primitive value")}return void 0===t&&(t="number"),c(e,t)}},25501:function(e,t,r){var n=r(62029),i=r(97433);e.exports=function(e){var t=n(e,"string");return i(t)?t:t+""}},41e3:function(e,t,r){var n={};n[r(64479)("toStringTag")]="z",e.exports="[object z]"===String(n)},92467:function(e,t,r){var n=r(93607),i=r(78791),o=n.String;e.exports=function(e){if("Symbol"===i(e))throw TypeError("Cannot convert a Symbol value to a string");return o(e)}},76795:function(e,t,r){var n=r(93607).String;e.exports=function(e){try{return n(e)}catch(e){return"Object"}}},70388:function(e,t,r){var n=r(94484),i=0,o=Math.random(),a=n(1..toString);e.exports=function(e){return"Symbol("+(void 0===e?"":e)+")_"+a(++i+o,36)}},98996:function(e,t,r){var n=r(65748);e.exports=n&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},29298:function(e,t,r){var n=r(44576),i=r(21555);e.exports=n&&i((function(){return 42!=Object.defineProperty((function(){}),"prototype",{value:42,writable:!1}).prototype}))},61504:function(e,t,r){var n=r(93607).TypeError;e.exports=function(e,t){if(e2?arguments[2]:void 0,i=o(b,this);s?r=s(new g,i?a(this):b):(r=i?this:u(b),l(r,T,"Error")),void 0!==t&&l(r,"message",v(t)),_&&l(r,"stack",d(r.stack,1)),f(r,n);var c=[];return h(e,y,{that:c}),l(r,"errors",c),r};s?s(E,g):c(E,g,{name:!0});var b=E.prototype=u(g.prototype,{constructor:p(1,E),message:p(1,""),name:p(1,"AggregateError")});n({global:!0},{AggregateError:E})},89812:function(e,t,r){"use strict";var n=r(74793),i=r(46441),o=r(70561),a=r(58257),s=r(96885).f,c=r(69662),u=r(40199),l=r(44576),p="Array Iterator",d=a.set,f=a.getterFor(p);e.exports=c(Array,"Array",(function(e,t){d(this,{type:p,target:n(e),index:0,kind:t})}),(function(){var e=f(this),t=e.target,r=e.kind,n=e.index++;return!t||n>=t.length?(e.target=void 0,{value:void 0,done:!0}):"keys"==r?{value:n,done:!1}:"values"==r?{value:t[n],done:!1}:{value:[n,t[n]],done:!1}}),"values");var h=o.Arguments=o.Array;if(i("keys"),i("values"),i("entries"),!u&&l&&"values"!==h.name)try{s(h,"name",{value:"values"})}catch(e){}},88575:function(){},29283:function(e,t,r){"use strict";var n=r(20138),i=r(62969),o=r(92606),a=r(15239),s=r(57539),c=r(27168);n({target:"Promise",stat:!0},{allSettled:function(e){var t=this,r=a.f(t),n=r.resolve,u=r.reject,l=s((function(){var r=o(t.resolve),a=[],s=0,u=1;c(e,(function(e){var o=s++,c=!1;u++,i(r,t,e).then((function(e){c||(c=!0,a[o]={status:"fulfilled",value:e},--u||n(a))}),(function(e){c||(c=!0,a[o]={status:"rejected",reason:e},--u||n(a))}))})),--u||n(a)}));return l.error&&u(l.value),r.promise}})},31498:function(e,t,r){"use strict";var n=r(20138),i=r(92606),o=r(95371),a=r(62969),s=r(15239),c=r(57539),u=r(27168),l="No one promise resolved";n({target:"Promise",stat:!0},{any:function(e){var t=this,r=o("AggregateError"),n=s.f(t),p=n.resolve,d=n.reject,f=c((function(){var n=i(t.resolve),o=[],s=0,c=1,f=!1;u(e,(function(e){var i=s++,u=!1;c++,a(n,t,e).then((function(e){u||f||(f=!0,p(e))}),(function(e){u||f||(u=!0,o[i]=e,--c||d(new r(o,l)))}))})),--c||d(new r(o,l))}));return f.error&&d(f.value),n.promise}})},4499:function(e,t,r){"use strict";var n=r(20138),i=r(40199),o=r(10650),a=r(21555),s=r(95371),c=r(18465),u=r(53073),l=r(67274),p=r(40702);if(n({target:"Promise",proto:!0,real:!0,forced:!!o&&a((function(){o.prototype.finally.call({then:function(){}},(function(){}))}))},{finally:function(e){var t=u(this,s("Promise")),r=c(e);return this.then(r?function(r){return l(t,e()).then((function(){return r}))}:e,r?function(r){return l(t,e()).then((function(){throw r}))}:e)}}),!i&&c(o)){var d=s("Promise").prototype.finally;o.prototype.finally!==d&&p(o.prototype,"finally",d,{unsafe:!0})}},39166:function(e,t,r){"use strict";var n,i,o,a,s=r(20138),c=r(40199),u=r(93607),l=r(95371),p=r(62969),d=r(10650),f=r(40702),h=r(74832),v=r(42179),m=r(14179),_=r(60749),T=r(92606),g=r(18465),y=r(94934),E=r(84971),b=r(48926),A=r(27168),S=r(36232),C=r(53073),I=r(16061).set,O=r(33007),w=r(67274),R=r(32601),P=r(15239),N=r(57539),x=r(97181),L=r(58257),k=r(86024),D=r(64479),M=r(70990),B=r(93076),H=r(61680),j=D("species"),V="Promise",U=L.getterFor(V),F=L.set,z=L.getterFor(V),Y=d&&d.prototype,G=d,W=Y,q=u.TypeError,K=u.document,$=u.process,X=P.f,J=X,Z=!!(K&&K.createEvent&&u.dispatchEvent),Q=g(u.PromiseRejectionEvent),ee="unhandledrejection",te=!1,re=k(V,(function(){var e=b(G),t=e!==String(G);if(!t&&66===H)return!0;if(c&&!W.finally)return!0;if(H>=51&&/native code/.test(e))return!1;var r=new G((function(e){e(1)})),n=function(e){e((function(){}),(function(){}))};return(r.constructor={})[j]=n,!(te=r.then((function(){}))instanceof n)||!t&&M&&!Q})),ne=re||!S((function(e){G.all(e).catch((function(){}))})),ie=function(e){var t;return!(!y(e)||!g(t=e.then))&&t},oe=function(e,t){var r,n,i,o=t.value,a=1==t.state,s=a?e.ok:e.fail,c=e.resolve,u=e.reject,l=e.domain;try{s?(a||(2===t.rejection&&le(t),t.rejection=1),!0===s?r=o:(l&&l.enter(),r=s(o),l&&(l.exit(),i=!0)),r===e.promise?u(q("Promise-chain cycle")):(n=ie(r))?p(n,r,c,u):c(r)):u(o)}catch(e){l&&!i&&l.exit(),u(e)}},ae=function(e,t){e.notified||(e.notified=!0,O((function(){for(var r,n=e.reactions;r=n.get();)oe(r,e);e.notified=!1,t&&!e.rejection&&ce(e)})))},se=function(e,t,r){var n,i;Z?((n=K.createEvent("Event")).promise=t,n.reason=r,n.initEvent(e,!1,!0),u.dispatchEvent(n)):n={promise:t,reason:r},!Q&&(i=u["on"+e])?i(n):e===ee&&R("Unhandled promise rejection",r)},ce=function(e){p(I,u,(function(){var t,r=e.facade,n=e.value;if(ue(e)&&(t=N((function(){B?$.emit("unhandledRejection",n,r):se(ee,r,n)})),e.rejection=B||ue(e)?2:1,t.error))throw t.value}))},ue=function(e){return 1!==e.rejection&&!e.parent},le=function(e){p(I,u,(function(){var t=e.facade;B?$.emit("rejectionHandled",t):se("rejectionhandled",t,e.value)}))},pe=function(e,t,r){return function(n){e(t,n,r)}},de=function(e,t,r){e.done||(e.done=!0,r&&(e=r),e.value=t,e.state=2,ae(e,!0))},fe=function(e,t,r){if(!e.done){e.done=!0,r&&(e=r);try{if(e.facade===t)throw q("Promise can't be resolved itself");var n=ie(t);n?O((function(){var r={done:!1};try{p(n,t,pe(fe,r,e),pe(de,r,e))}catch(t){de(r,t,e)}})):(e.value=t,e.state=1,ae(e,!1))}catch(t){de({done:!1},t,e)}}};if(re&&(W=(G=function(e){E(this,W),T(e),p(n,this);var t=U(this);try{e(pe(fe,t),pe(de,t))}catch(e){de(t,e)}}).prototype,(n=function(e){F(this,{type:V,done:!1,notified:!1,parent:!1,reactions:new x,rejection:!1,state:0,value:void 0})}).prototype=h(W,{then:function(e,t){var r=z(this),n=X(C(this,G));return r.parent=!0,n.ok=!g(e)||e,n.fail=g(t)&&t,n.domain=B?$.domain:void 0,0==r.state?r.reactions.add(n):O((function(){oe(n,r)})),n.promise},catch:function(e){return this.then(void 0,e)}}),i=function(){var e=new n,t=U(e);this.promise=e,this.resolve=pe(fe,t),this.reject=pe(de,t)},P.f=X=function(e){return e===G||e===o?new i(e):J(e)},!c&&g(d)&&Y!==Object.prototype)){a=Y.then,te||(f(Y,"then",(function(e,t){var r=this;return new G((function(e,t){p(a,r,e,t)})).then(e,t)}),{unsafe:!0}),f(Y,"catch",W.catch,{unsafe:!0}));try{delete Y.constructor}catch(e){}v&&v(Y,W)}s({global:!0,wrap:!0,forced:re},{Promise:G}),m(G,V,!1,!0),_(V),o=l(V),s({target:V,stat:!0,forced:re},{reject:function(e){var t=X(this);return p(t.reject,void 0,e),t.promise}}),s({target:V,stat:!0,forced:c||re},{resolve:function(e){return w(c&&this===o?G:this,e)}}),s({target:V,stat:!0,forced:ne},{all:function(e){var t=this,r=X(t),n=r.resolve,i=r.reject,o=N((function(){var r=T(t.resolve),o=[],a=0,s=1;A(e,(function(e){var c=a++,u=!1;s++,p(r,t,e).then((function(e){u||(u=!0,o[c]=e,--s||n(o))}),i)})),--s||n(o)}));return o.error&&i(o.value),r.promise},race:function(e){var t=this,r=X(t),n=r.reject,i=N((function(){var i=T(t.resolve);A(e,(function(e){p(i,t,e).then(r.resolve,n)}))}));return i.error&&n(i.value),r.promise}})},6856:function(e,t,r){"use strict";var n=r(13347).charAt,i=r(92467),o=r(58257),a=r(69662),s="String Iterator",c=o.set,u=o.getterFor(s);a(String,"String",(function(e){c(this,{type:s,string:i(e),index:0})}),(function(){var e,t=u(this),r=t.string,i=t.index;return i>=r.length?{value:void 0,done:!0}:(e=n(r,i),t.index+=e.length,{value:e,done:!1})}))},21653:function(e,t,r){r(89812);var n=r(8332),i=r(93607),o=r(78791),a=r(41295),s=r(70561),c=r(64479)("toStringTag");for(var u in n){var l=i[u],p=l&&l.prototype;p&&o(p)!==c&&a(p,c,u),s[u]=s.Array}},6653:function(e,t,r){var n=r(22178);r(21653),e.exports=n},71541:function(e){var t="undefined"!=typeof window?window:self;e.exports=t.crypto||t.msCrypto},43186:function(e,t,r){e.exports=function(e){if(!e)return Math.random;var t=Math.pow(2,32),r=new Uint32Array(1);return function(){return e.getRandomValues(r)[0]/t}}(r(71541))},60838:function(e,t,r){"use strict";var n=r(80679).compose;t.tY="undefined"!=typeof window&&window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__?window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__:function(){if(0!==arguments.length)return"object"==typeof arguments[0]?n:n.apply(null,arguments)},"undefined"!=typeof window&&window.__REDUX_DEVTOOLS_EXTENSION__&&window.__REDUX_DEVTOOLS_EXTENSION__},84277:function(e){e.exports=function(){"use strict";function e(t){return(e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(t)}function t(e,t,r,n,i,o,a){try{var s=e[o](a),c=s.value}catch(e){return void r(e)}s.done?t(c):Promise.resolve(c).then(n,i)}function r(e){return function(){var r=this,n=arguments;return new Promise((function(i,o){var a=e.apply(r,n);function s(e){t(a,i,o,s,c,"next",e)}function c(e){t(a,i,o,s,c,"throw",e)}s(void 0)}))}}function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r,n=Object.keys(e);return Object.getOwnPropertySymbols&&(r=Object.getOwnPropertySymbols(e),t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)),n}function o(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=new Array(t);r=e.length?{done:!0}:{done:!1,value:e[t++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var n,i,o=!0,a=!1;return{s:function(){n=e[Symbol.iterator]()},n:function(){var e=n.next();return o=e.done,e},e:function(e){a=!0,i=e},f:function(){try{o||null==n.return||n.return()}finally{if(a)throw i}}}}var d=Object.is||function(e,t){return e===t?0!==e||1/e==1/t:e!=e&&t!=t};function f(e,t,r){v(t);var n,i=p(function e(t,r){if(r.length){var n=a(r),i=n[0],o=n.slice(1);if("function"==typeof i){var c=[];if(Array.isArray(t))for(var u=0,l=t.length;u1?arguments[1]:void 0,m=void 0!==v;m&&(v=i(v,n>2?arguments[2]:void 0));var _,T,g,y,E,b,A=f(t),S=0;if(!A||this==h&&c(A))for(_=l(t),T=r?new this(_):h(_);_>S;S++)b=m?v(t[S],S):t[S],p(T,S,b);else for(E=(y=d(t,A)).next,T=r?new this:[];!(g=o(E,y)).done;S++)b=m?s(y,v,[g.value,S],!0):g.value,p(T,S,b);return T.length=S,T}},83360:function(e,t,r){var n=r(93255),i=r(84744),o=r(86536),a=function(e){return function(t,r,a){var s,c=n(t),u=o(c),l=i(a,u);if(e&&r!=r){for(;u>l;)if((s=c[l++])!=s)return!0}else for(;u>l;l++)if((e||l in c)&&c[l]===r)return e||l||0;return!e&&-1}};e.exports={includes:a(!0),indexOf:a(!1)}},14235:function(e,t,r){var n=r(51130),i=r(54466),o=r(72641),a=r(65891),s=r(86536),c=r(53359),u=i([].push),l=function(e){var t=1==e,r=2==e,i=3==e,l=4==e,p=6==e,d=7==e,f=5==e||p;return function(h,v,m,_){for(var T,g,y=a(h),E=o(y),b=n(v,m),A=s(E),S=0,C=_||c,I=t?C(h,A):r||d?C(h,0):void 0;A>S;S++)if((f||S in E)&&(g=b(T=E[S],S,y),e))if(t)I[S]=g;else if(g)switch(e){case 3:return!0;case 5:return T;case 6:return S;case 2:u(I,T)}else switch(e){case 4:return!1;case 7:u(I,T)}return p?-1:i||l?l:I}};e.exports={forEach:l(0),map:l(1),filter:l(2),some:l(3),every:l(4),find:l(5),findIndex:l(6),filterReject:l(7)}},33835:function(e,t,r){var n=r(14065),i=r(39689),o=r(5714),a=i("species");e.exports=function(e){return o>=51||!n((function(){var t=[];return(t.constructor={})[a]=function(){return{foo:1}},1!==t[e](Boolean).foo}))}},36377:function(e,t,r){var n=r(17005),i=r(84744),o=r(86536),a=r(20854),s=n.Array,c=Math.max;e.exports=function(e,t,r){for(var n=o(e),u=i(t,n),l=i(void 0===r?n:r,n),p=s(c(l-u,0)),d=0;u1?arguments[1]:void 0);t=t?t.next:r.first;)for(n(t.value,t.key,this);t&&t.removed;)t=t.previous},has:function(e){return!!T(this,e)}}),o(f,r?{get:function(e){var t=T(this,e);return t&&t.value},set:function(e,t){return _(this,0===e?0:e,t)}}:{add:function(e){return _(this,e=0===e?0:e,e)}}),p&&n(f,"size",{get:function(){return m(this).size}}),l},setStrong:function(e,t,r){var n=t+" Iterator",i=v(t),o=v(n);u(e,t,(function(e,t){h(this,{type:n,target:e,state:i(e),kind:t,last:void 0})}),(function(){for(var e=o(this),t=e.kind,r=e.last;r&&r.removed;)r=r.previous;return e.target&&(e.last=r=r?r.next:e.state.first)?"keys"==t?{value:r.key,done:!1}:"values"==t?{value:r.value,done:!1}:{value:[r.key,r.value],done:!1}:(e.target=void 0,{value:void 0,done:!0})}),r?"entries":"values",!r,!0),l(t)}}},76007:function(e,t,r){"use strict";var n=r(54466),i=r(14198),o=r(11905).getWeakData,a=r(26349),s=r(41776),c=r(83229),u=r(5338),l=r(14235),p=r(48003),d=r(99675),f=d.set,h=d.getterFor,v=l.find,m=l.findIndex,_=n([].splice),T=0,g=function(e){return e.frozen||(e.frozen=new y)},y=function(){this.entries=[]},E=function(e,t){return v(e.entries,(function(e){return e[0]===t}))};y.prototype={get:function(e){var t=E(this,e);if(t)return t[1]},has:function(e){return!!E(this,e)},set:function(e,t){var r=E(this,e);r?r[1]=t:this.entries.push([e,t])},delete:function(e){var t=m(this.entries,(function(t){return t[0]===e}));return~t&&_(this.entries,t,1),!!~t}},e.exports={getConstructor:function(e,t,r,n){var l=e((function(e,i){c(e,d),f(e,{type:t,id:T++,frozen:void 0}),null!=i&&u(i,e[n],{that:e,AS_ENTRIES:r})})),d=l.prototype,v=h(t),m=function(e,t,r){var n=v(e),i=o(a(t),!0);return!0===i?g(n).set(t,r):i[n.id]=r,e};return i(d,{delete:function(e){var t=v(this);if(!s(e))return!1;var r=o(e);return!0===r?g(t).delete(e):r&&p(r,t.id)&&delete r[t.id]},has:function(e){var t=v(this);if(!s(e))return!1;var r=o(e);return!0===r?g(t).has(e):r&&p(r,t.id)}}),i(d,r?{get:function(e){var t=v(this);if(s(e)){var r=o(e);return!0===r?g(t).get(e):r?r[t.id]:void 0}},set:function(e,t){return m(this,e,t)}}:{add:function(e){return m(this,e,!0)}}),l}}},59150:function(e,t,r){"use strict";var n=r(27788),i=r(17005),o=r(11905),a=r(14065),s=r(44677),c=r(5338),u=r(83229),l=r(50771),p=r(41776),d=r(32685),f=r(67251).f,h=r(14235).forEach,v=r(84630),m=r(99675),_=m.set,T=m.getterFor;e.exports=function(e,t,r){var m,g=-1!==e.indexOf("Map"),y=-1!==e.indexOf("Weak"),E=g?"set":"add",b=i[e],A=b&&b.prototype,S={};if(v&&l(b)&&(y||A.forEach&&!a((function(){(new b).entries().next()})))){var C=(m=t((function(t,r){_(u(t,C),{type:e,collection:new b}),null!=r&&c(r,t[E],{that:t,AS_ENTRIES:g})}))).prototype,I=T(e);h(["add","clear","delete","forEach","get","has","set","keys","values","entries"],(function(e){var t="add"==e||"set"==e;!(e in A)||y&&"clear"==e||s(C,e,(function(r,n){var i=I(this).collection;if(!t&&y&&!p(r))return"get"==e&&void 0;var o=i[e](0===r?0:r,n);return t?this:o}))})),y||f(C,"size",{configurable:!0,get:function(){return I(this).collection.size}})}else m=r.getConstructor(t,e,g,E),o.enable();return d(m,e,!1,!0),S[e]=m,n({global:!0,forced:!0},S),y||r.setStrong(m,e,g),m}},17470:function(e,t,r){var n=r(48003),i=r(5777),o=r(6025),a=r(67251);e.exports=function(e,t,r){for(var s=i(t),c=a.f,u=o.f,l=0;l0&&n[0]<4?1:+(n[0]+n[1])),!i&&a&&(!(n=a.match(/Edge\/(\d+)/))||n[1]>=74)&&(n=a.match(/Chrome\/(\d+)/))&&(i=+n[1]),e.exports=i},77438:function(e,t,r){var n=r(9877);e.exports=function(e){return n[e+"Prototype"]}},57437:function(e){e.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},5909:function(e,t,r){var n=r(14065),i=r(28562);e.exports=!n((function(){var e=Error("a");return!("stack"in e)||(Object.defineProperty(e,"stack",i(1,7)),7!==e.stack)}))},27788:function(e,t,r){"use strict";var n=r(17005),i=r(64867),o=r(54466),a=r(50771),s=r(6025).f,c=r(73362),u=r(9877),l=r(51130),p=r(44677),d=r(48003),f=function(e){var t=function(r,n,o){if(this instanceof t){switch(arguments.length){case 0:return new e;case 1:return new e(r);case 2:return new e(r,n)}return new e(r,n,o)}return i(e,this,arguments)};return t.prototype=e.prototype,t};e.exports=function(e,t){var r,i,h,v,m,_,T,g,y=e.target,E=e.global,b=e.stat,A=e.proto,S=E?n:b?n[y]:(n[y]||{}).prototype,C=E?u:u[y]||p(u,y,{})[y],I=C.prototype;for(h in t)r=!c(E?h:y+(b?".":"#")+h,e.forced)&&S&&d(S,h),m=C[h],r&&(_=e.noTargetGet?(g=s(S,h))&&g.value:S[h]),v=r&&_?_:t[h],r&&typeof m==typeof v||(T=e.bind&&r?l(v,n):e.wrap&&r?f(v):A&&a(v)?o(v):v,(e.sham||v&&v.sham||m&&m.sham)&&p(T,"sham",!0),p(C,h,T),A&&(d(u,i=y+"Prototype")||p(u,i,{}),p(u[i],h,v),e.real&&I&&!I[h]&&p(I,h,v)))}},14065:function(e){e.exports=function(e){try{return!!e()}catch(e){return!0}}},58234:function(e,t,r){var n=r(14065);e.exports=!n((function(){return Object.isExtensible(Object.preventExtensions({}))}))},64867:function(e,t,r){var n=r(82394),i=Function.prototype,o=i.apply,a=i.call;e.exports="object"==typeof Reflect&&Reflect.apply||(n?a.bind(o):function(){return a.apply(o,arguments)})},51130:function(e,t,r){var n=r(54466),i=r(76288),o=r(82394),a=n(n.bind);e.exports=function(e,t){return i(e),void 0===t?e:o?a(e,t):function(){return e.apply(t,arguments)}}},82394:function(e,t,r){var n=r(14065);e.exports=!n((function(){var e=function(){}.bind();return"function"!=typeof e||e.hasOwnProperty("prototype")}))},71804:function(e,t,r){"use strict";var n=r(17005),i=r(54466),o=r(76288),a=r(41776),s=r(48003),c=r(11162),u=r(82394),l=n.Function,p=i([].concat),d=i([].join),f={};e.exports=u?l.bind:function(e){var t=o(this),r=t.prototype,n=c(arguments,1),i=function(){var r=p(n,c(arguments));return this instanceof i?function(e,t,r){if(!s(f,t)){for(var n=[],i=0;iT;T++)if((y=R(e[T]))&&l(m,y))return y;return new v(!1)}n=p(e,_)}for(E=n.next;!(b=o(E,n)).done;){try{y=R(b.value)}catch(e){f(n,"throw",e)}if("object"==typeof y&&y&&l(m,y))return y}return new v(!1)}},53081:function(e,t,r){var n=r(62807),i=r(26349),o=r(9884);e.exports=function(e,t,r){var a,s;i(e);try{if(!(a=o(e,"return"))){if("throw"===t)throw r;return r}a=n(a,e)}catch(e){s=!0,a=e}if("throw"===t)throw r;if(s)throw a;return i(a),r}},5379:function(e,t,r){"use strict";var n,i,o,a=r(14065),s=r(50771),c=r(90130),u=r(33253),l=r(58404),p=r(39689),d=r(54813),f=p("iterator"),h=!1;[].keys&&("next"in(o=[].keys())?(i=u(u(o)))!==Object.prototype&&(n=i):h=!0),null==n||a((function(){var e={};return n[f].call(e)!==e}))?n={}:d&&(n=c(n)),s(n[f])||l(n,f,(function(){return this})),e.exports={IteratorPrototype:n,BUGGY_SAFARI_ITERATORS:h}},99471:function(e){e.exports={}},86536:function(e,t,r){var n=r(99900);e.exports=function(e){return n(e.length)}},62241:function(e,t,r){var n,i,o,a,s,c,u,l,p=r(17005),d=r(51130),f=r(6025).f,h=r(63847).set,v=r(43225),m=r(10570),_=r(95783),T=r(86550),g=p.MutationObserver||p.WebKitMutationObserver,y=p.document,E=p.process,b=p.Promise,A=f(p,"queueMicrotask"),S=A&&A.value;S||(n=function(){var e,t;for(T&&(e=E.domain)&&e.exit();i;){t=i.fn,i=i.next;try{t()}catch(e){throw i?a():o=void 0,e}}o=void 0,e&&e.enter()},v||T||_||!g||!y?!m&&b&&b.resolve?((u=b.resolve(void 0)).constructor=b,l=d(u.then,u),a=function(){l(n)}):T?a=function(){E.nextTick(n)}:(h=d(h,p),a=function(){h(n)}):(s=!0,c=y.createTextNode(""),new g(n).observe(c,{characterData:!0}),a=function(){c.data=s=!s})),e.exports=S||function(e){var t={fn:e,next:void 0};o&&(o.next=t),i||(i=t,a()),o=t}},62088:function(e,t,r){var n=r(17005);e.exports=n.Promise},68878:function(e,t,r){var n=r(5714),i=r(14065);e.exports=!!Object.getOwnPropertySymbols&&!i((function(){var e=Symbol();return!String(e)||!(Object(e)instanceof Symbol)||!Symbol.sham&&n&&n<41}))},8041:function(e,t,r){var n=r(17005),i=r(50771),o=r(59324),a=n.WeakMap;e.exports=i(a)&&/native code/.test(o(a))},37661:function(e,t,r){"use strict";var n=r(76288),i=function(e){var t,r;this.promise=new e((function(e,n){if(void 0!==t||void 0!==r)throw TypeError("Bad Promise constructor");t=e,r=n})),this.resolve=n(t),this.reject=n(r)};e.exports.f=function(e){return new i(e)}},36745:function(e,t,r){var n=r(96013);e.exports=function(e,t){return void 0===e?arguments.length<2?"":t:n(e)}},90130:function(e,t,r){var n,i=r(26349),o=r(90655),a=r(57437),s=r(41451),c=r(82240),u=r(32417),l=r(73961),p="prototype",d="script",f=l("IE_PROTO"),h=function(){},v=function(e){return"<"+d+">"+e+""},m=function(e){e.write(v("")),e.close();var t=e.parentWindow.Object;return e=null,t},_=function(){try{n=new ActiveXObject("htmlfile")}catch(e){}var e,t,r;_="undefined"!=typeof document?document.domain&&n?m(n):(t=u("iframe"),r="java"+d+":",t.style.display="none",c.appendChild(t),t.src=String(r),(e=t.contentWindow.document).open(),e.write(v("document.F=Object")),e.close(),e.F):m(n);for(var i=a.length;i--;)delete _[p][a[i]];return _()};s[f]=!0,e.exports=Object.create||function(e,t){var r;return null!==e?(h[p]=i(e),r=new h,h[p]=null,r[f]=e):r=_(),void 0===t?r:o.f(r,t)}},90655:function(e,t,r){var n=r(84630),i=r(33952),o=r(67251),a=r(26349),s=r(93255),c=r(31522);t.f=n&&!i?Object.defineProperties:function(e,t){a(e);for(var r,n=s(t),i=c(t),u=i.length,l=0;u>l;)o.f(e,r=i[l++],n[r]);return e}},67251:function(e,t,r){var n=r(17005),i=r(84630),o=r(44111),a=r(33952),s=r(26349),c=r(6671),u=n.TypeError,l=Object.defineProperty,p=Object.getOwnPropertyDescriptor,d="enumerable",f="configurable",h="writable";t.f=i?a?function(e,t,r){if(s(e),t=c(t),s(r),"function"==typeof e&&"prototype"===t&&"value"in r&&h in r&&!r[h]){var n=p(e,t);n&&n[h]&&(e[t]=r.value,r={configurable:f in r?r[f]:n[f],enumerable:d in r?r[d]:n[d],writable:!1})}return l(e,t,r)}:l:function(e,t,r){if(s(e),t=c(t),s(r),o)try{return l(e,t,r)}catch(e){}if("get"in r||"set"in r)throw u("Accessors not supported");return"value"in r&&(e[t]=r.value),e}},6025:function(e,t,r){var n=r(84630),i=r(62807),o=r(92563),a=r(28562),s=r(93255),c=r(6671),u=r(48003),l=r(44111),p=Object.getOwnPropertyDescriptor;t.f=n?p:function(e,t){if(e=s(e),t=c(t),l)try{return p(e,t)}catch(e){}if(u(e,t))return a(!i(o.f,e,t),e[t])}},37084:function(e,t,r){var n=r(83414),i=r(93255),o=r(29198).f,a=r(36377),s="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];e.exports.f=function(e){return s&&"Window"==n(e)?function(e){try{return o(e)}catch(e){return a(s)}}(e):o(i(e))}},29198:function(e,t,r){var n=r(43886),i=r(57437).concat("length","prototype");t.f=Object.getOwnPropertyNames||function(e){return n(e,i)}},1315:function(e,t){t.f=Object.getOwnPropertySymbols},33253:function(e,t,r){var n=r(17005),i=r(48003),o=r(50771),a=r(65891),s=r(73961),c=r(77785),u=s("IE_PROTO"),l=n.Object,p=l.prototype;e.exports=c?l.getPrototypeOf:function(e){var t=a(e);if(i(t,u))return t[u];var r=t.constructor;return o(r)&&t instanceof r?r.prototype:t instanceof l?p:null}},40538:function(e,t,r){var n=r(14065),i=r(41776),o=r(83414),a=r(1302),s=Object.isExtensible,c=n((function(){s(1)}));e.exports=c||a?function(e){return!!i(e)&&((!a||"ArrayBuffer"!=o(e))&&(!s||s(e)))}:s},9559:function(e,t,r){var n=r(54466);e.exports=n({}.isPrototypeOf)},43886:function(e,t,r){var n=r(54466),i=r(48003),o=r(93255),a=r(83360).indexOf,s=r(41451),c=n([].push);e.exports=function(e,t){var r,n=o(e),u=0,l=[];for(r in n)!i(s,r)&&i(n,r)&&c(l,r);for(;t.length>u;)i(n,r=t[u++])&&(~a(l,r)||c(l,r));return l}},31522:function(e,t,r){var n=r(43886),i=r(57437);e.exports=Object.keys||function(e){return n(e,i)}},92563:function(e,t){"use strict";var r={}.propertyIsEnumerable,n=Object.getOwnPropertyDescriptor,i=n&&!r.call({1:2},1);t.f=i?function(e){var t=n(this,e);return!!t&&t.enumerable}:r},59513:function(e,t,r){var n=r(54466),i=r(26349),o=r(66580);e.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var e,t=!1,r={};try{(e=n(Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set))(r,[]),t=r instanceof Array}catch(e){}return function(r,n){return i(r),o(n),t?e(r,n):r.__proto__=n,r}}():void 0)},84541:function(e,t,r){"use strict";var n=r(16138),i=r(68601);e.exports=n?{}.toString:function(){return"[object "+i(this)+"]"}},79364:function(e,t,r){var n=r(17005),i=r(62807),o=r(50771),a=r(41776),s=n.TypeError;e.exports=function(e,t){var r,n;if("string"===t&&o(r=e.toString)&&!a(n=i(r,e)))return n;if(o(r=e.valueOf)&&!a(n=i(r,e)))return n;if("string"!==t&&o(r=e.toString)&&!a(n=i(r,e)))return n;throw s("Can't convert object to primitive value")}},5777:function(e,t,r){var n=r(3673),i=r(54466),o=r(29198),a=r(1315),s=r(26349),c=i([].concat);e.exports=n("Reflect","ownKeys")||function(e){var t=o.f(s(e)),r=a.f;return r?c(t,r(e)):t}},9877:function(e){e.exports={}},38457:function(e){e.exports=function(e){try{return{error:!1,value:e()}}catch(e){return{error:!0,value:e}}}},14484:function(e,t,r){var n=r(26349),i=r(41776),o=r(37661);e.exports=function(e,t){if(n(e),i(t)&&t.constructor===e)return t;var r=o.f(e);return(0,r.resolve)(t),r.promise}},86683:function(e){var t=function(){this.head=null,this.tail=null};t.prototype={add:function(e){var t={item:e,next:null};this.head?this.tail.next=t:this.head=t,this.tail=t},get:function(){var e=this.head;if(e)return this.head=e.next,this.tail===e&&(this.tail=null),e.item}},e.exports=t},14198:function(e,t,r){var n=r(58404);e.exports=function(e,t,r){for(var i in t)r&&r.unsafe&&e[i]?e[i]=t[i]:n(e,i,t[i],r);return e}},58404:function(e,t,r){var n=r(44677);e.exports=function(e,t,r,i){i&&i.enumerable?e[t]=r:n(e,t,r)}},31272:function(e,t,r){var n=r(17005).TypeError;e.exports=function(e){if(null==e)throw n("Can't call method on "+e);return e}},26586:function(e,t,r){var n=r(17005),i=Object.defineProperty;e.exports=function(e,t){try{i(n,e,{value:t,configurable:!0,writable:!0})}catch(r){n[e]=t}return t}},66155:function(e,t,r){"use strict";var n=r(3673),i=r(67251),o=r(39689),a=r(84630),s=o("species");e.exports=function(e){var t=n(e),r=i.f;a&&t&&!t[s]&&r(t,s,{configurable:!0,get:function(){return this}})}},32685:function(e,t,r){var n=r(16138),i=r(67251).f,o=r(44677),a=r(48003),s=r(84541),c=r(39689)("toStringTag");e.exports=function(e,t,r,u){if(e){var l=r?e:e.prototype;a(l,c)||i(l,c,{configurable:!0,value:t}),u&&!n&&o(l,"toString",s)}}},73961:function(e,t,r){var n=r(38703),i=r(46418),o=n("keys");e.exports=function(e){return o[e]||(o[e]=i(e))}},847:function(e,t,r){var n=r(17005),i=r(26586),o="__core-js_shared__",a=n[o]||i(o,{});e.exports=a},38703:function(e,t,r){var n=r(54813),i=r(847);(e.exports=function(e,t){return i[e]||(i[e]=void 0!==t?t:{})})("versions",[]).push({version:"3.21.1",mode:n?"pure":"global",copyright:"\xa9 2014-2022 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.21.1/LICENSE",source:"https://github.com/zloirock/core-js"})},66091:function(e,t,r){var n=r(26349),i=r(38254),o=r(39689)("species");e.exports=function(e,t){var r,a=n(e).constructor;return void 0===a||null==(r=n(a)[o])?t:i(r)}},59049:function(e,t,r){var n=r(54466),i=r(34469),o=r(96013),a=r(31272),s=n("".charAt),c=n("".charCodeAt),u=n("".slice),l=function(e){return function(t,r){var n,l,p=o(a(t)),d=i(r),f=p.length;return d<0||d>=f?e?"":void 0:(n=c(p,d))<55296||n>56319||d+1===f||(l=c(p,d+1))<56320||l>57343?e?s(p,d):n:e?u(p,d,d+2):l-56320+(n-55296<<10)+65536}};e.exports={codeAt:l(!1),charAt:l(!0)}},63847:function(e,t,r){var n,i,o,a,s=r(17005),c=r(64867),u=r(51130),l=r(50771),p=r(48003),d=r(14065),f=r(82240),h=r(11162),v=r(32417),m=r(45386),_=r(43225),T=r(86550),g=s.setImmediate,y=s.clearImmediate,E=s.process,b=s.Dispatch,A=s.Function,S=s.MessageChannel,C=s.String,I=0,O={},w="onreadystatechange";try{n=s.location}catch(e){}var R=function(e){if(p(O,e)){var t=O[e];delete O[e],t()}},P=function(e){return function(){R(e)}},N=function(e){R(e.data)},x=function(e){s.postMessage(C(e),n.protocol+"//"+n.host)};g&&y||(g=function(e){m(arguments.length,1);var t=l(e)?e:A(e),r=h(arguments,1);return O[++I]=function(){c(t,void 0,r)},i(I),I},y=function(e){delete O[e]},T?i=function(e){E.nextTick(P(e))}:b&&b.now?i=function(e){b.now(P(e))}:S&&!_?(a=(o=new S).port2,o.port1.onmessage=N,i=u(a.postMessage,a)):s.addEventListener&&l(s.postMessage)&&!s.importScripts&&n&&"file:"!==n.protocol&&!d(x)?(i=x,s.addEventListener("message",N,!1)):i=w in v("script")?function(e){f.appendChild(v("script"))[w]=function(){f.removeChild(this),R(e)}}:function(e){setTimeout(P(e),0)}),e.exports={set:g,clear:y}},84744:function(e,t,r){var n=r(34469),i=Math.max,o=Math.min;e.exports=function(e,t){var r=n(e);return r<0?i(r+t,0):o(r,t)}},93255:function(e,t,r){var n=r(72641),i=r(31272);e.exports=function(e){return n(i(e))}},34469:function(e){var t=Math.ceil,r=Math.floor;e.exports=function(e){var n=+e;return n!=n||0===n?0:(n>0?r:t)(n)}},99900:function(e,t,r){var n=r(34469),i=Math.min;e.exports=function(e){return e>0?i(n(e),9007199254740991):0}},65891:function(e,t,r){var n=r(17005),i=r(31272),o=n.Object;e.exports=function(e){return o(i(e))}},42331:function(e,t,r){var n=r(17005),i=r(62807),o=r(41776),a=r(82455),s=r(9884),c=r(79364),u=r(39689),l=n.TypeError,p=u("toPrimitive");e.exports=function(e,t){if(!o(e)||a(e))return e;var r,n=s(e,p);if(n){if(void 0===t&&(t="default"),r=i(n,e,t),!o(r)||a(r))return r;throw l("Can't convert object to primitive value")}return void 0===t&&(t="number"),c(e,t)}},6671:function(e,t,r){var n=r(42331),i=r(82455);e.exports=function(e){var t=n(e,"string");return i(t)?t:t+""}},16138:function(e,t,r){var n={};n[r(39689)("toStringTag")]="z",e.exports="[object z]"===String(n)},96013:function(e,t,r){var n=r(17005),i=r(68601),o=n.String;e.exports=function(e){if("Symbol"===i(e))throw TypeError("Cannot convert a Symbol value to a string");return o(e)}},11745:function(e,t,r){var n=r(17005).String;e.exports=function(e){try{return n(e)}catch(e){return"Object"}}},46418:function(e,t,r){var n=r(54466),i=0,o=Math.random(),a=n(1..toString);e.exports=function(e){return"Symbol("+(void 0===e?"":e)+")_"+a(++i+o,36)}},85814:function(e,t,r){var n=r(68878);e.exports=n&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},33952:function(e,t,r){var n=r(84630),i=r(14065);e.exports=n&&i((function(){return 42!=Object.defineProperty((function(){}),"prototype",{value:42,writable:!1}).prototype}))},45386:function(e,t,r){var n=r(17005).TypeError;e.exports=function(e,t){if(e2?arguments[2]:void 0,i=o(b,this);s?r=s(new g,i?a(this):b):(r=i?this:u(b),l(r,T,"Error")),void 0!==t&&l(r,"message",v(t)),_&&l(r,"stack",d(r.stack,1)),f(r,n);var c=[];return h(e,y,{that:c}),l(r,"errors",c),r};s?s(E,g):c(E,g,{name:!0});var b=E.prototype=u(g.prototype,{constructor:p(1,E),message:p(1,""),name:p(1,"AggregateError")});n({global:!0},{AggregateError:E})},31776:function(e,t,r){"use strict";var n=r(27788),i=r(17005),o=r(14065),a=r(45914),s=r(41776),c=r(65891),u=r(86536),l=r(20854),p=r(53359),d=r(33835),f=r(39689),h=r(5714),v=f("isConcatSpreadable"),m=9007199254740991,_="Maximum allowed index exceeded",T=i.TypeError,g=h>=51||!o((function(){var e=[];return e[v]=!1,e.concat()[0]!==e})),y=d("concat"),E=function(e){if(!s(e))return!1;var t=e[v];return void 0!==t?!!t:a(e)};n({target:"Array",proto:!0,forced:!g||!y},{concat:function(e){var t,r,n,i,o,a=c(this),s=p(a,0),d=0;for(t=-1,n=arguments.length;tm)throw T(_);for(r=0;r=m)throw T(_);l(s,d++,o)}return s.length=d,s}})},72956:function(e,t,r){var n=r(27788),i=r(81382);n({target:"Array",stat:!0,forced:!r(99610)((function(e){Array.from(e)}))},{from:i})},28740:function(e,t,r){r(27788)({target:"Array",stat:!0},{isArray:r(45914)})},74810:function(e,t,r){"use strict";var n=r(93255),i=r(7375),o=r(99471),a=r(99675),s=r(67251).f,c=r(12984),u=r(54813),l=r(84630),p="Array Iterator",d=a.set,f=a.getterFor(p);e.exports=c(Array,"Array",(function(e,t){d(this,{type:p,target:n(e),index:0,kind:t})}),(function(){var e=f(this),t=e.target,r=e.kind,n=e.index++;return!t||n>=t.length?(e.target=void 0,{value:void 0,done:!0}):"keys"==r?{value:n,done:!1}:"values"==r?{value:t[n],done:!1}:{value:[n,t[n]],done:!1}}),"values");var h=o.Arguments=o.Array;if(i("keys"),i("values"),i("entries"),!u&&l&&"values"!==h.name)try{s(h,"name",{value:"values"})}catch(e){}},9600:function(e,t,r){"use strict";var n=r(27788),i=r(17005),o=r(45914),a=r(48855),s=r(41776),c=r(84744),u=r(86536),l=r(93255),p=r(20854),d=r(39689),f=r(33835),h=r(11162),v=f("slice"),m=d("species"),_=i.Array,T=Math.max;n({target:"Array",proto:!0,forced:!v},{slice:function(e,t){var r,n,i,d=l(this),f=u(d),v=c(e,f),g=c(void 0===t?f:t,f);if(o(d)&&(r=d.constructor,(a(r)&&(r===_||o(r.prototype))||s(r)&&null===(r=r[m]))&&(r=void 0),r===_||void 0===r))return h(d,v,g);for(n=new(void 0===r?_:r)(T(g-v,0)),i=0;v=51&&/native code/.test(e))return!1;var r=new G((function(e){e(1)})),n=function(e){e((function(){}),(function(){}))};return(r.constructor={})[j]=n,!(te=r.then((function(){}))instanceof n)||!t&&M&&!Q})),ne=re||!S((function(e){G.all(e).catch((function(){}))})),ie=function(e){var t;return!(!y(e)||!g(t=e.then))&&t},oe=function(e,t){var r,n,i,o=t.value,a=1==t.state,s=a?e.ok:e.fail,c=e.resolve,u=e.reject,l=e.domain;try{s?(a||(2===t.rejection&&le(t),t.rejection=1),!0===s?r=o:(l&&l.enter(),r=s(o),l&&(l.exit(),i=!0)),r===e.promise?u(q("Promise-chain cycle")):(n=ie(r))?p(n,r,c,u):c(r)):u(o)}catch(e){l&&!i&&l.exit(),u(e)}},ae=function(e,t){e.notified||(e.notified=!0,O((function(){for(var r,n=e.reactions;r=n.get();)oe(r,e);e.notified=!1,t&&!e.rejection&&ce(e)})))},se=function(e,t,r){var n,i;Z?((n=K.createEvent("Event")).promise=t,n.reason=r,n.initEvent(e,!1,!0),u.dispatchEvent(n)):n={promise:t,reason:r},!Q&&(i=u["on"+e])?i(n):e===ee&&R("Unhandled promise rejection",r)},ce=function(e){p(I,u,(function(){var t,r=e.facade,n=e.value;if(ue(e)&&(t=N((function(){B?$.emit("unhandledRejection",n,r):se(ee,r,n)})),e.rejection=B||ue(e)?2:1,t.error))throw t.value}))},ue=function(e){return 1!==e.rejection&&!e.parent},le=function(e){p(I,u,(function(){var t=e.facade;B?$.emit("rejectionHandled",t):se("rejectionhandled",t,e.value)}))},pe=function(e,t,r){return function(n){e(t,n,r)}},de=function(e,t,r){e.done||(e.done=!0,r&&(e=r),e.value=t,e.state=2,ae(e,!0))},fe=function(e,t,r){if(!e.done){e.done=!0,r&&(e=r);try{if(e.facade===t)throw q("Promise can't be resolved itself");var n=ie(t);n?O((function(){var r={done:!1};try{p(n,t,pe(fe,r,e),pe(de,r,e))}catch(t){de(r,t,e)}})):(e.value=t,e.state=1,ae(e,!1))}catch(t){de({done:!1},t,e)}}};if(re&&(W=(G=function(e){E(this,W),T(e),p(n,this);var t=U(this);try{e(pe(fe,t),pe(de,t))}catch(e){de(t,e)}}).prototype,(n=function(e){F(this,{type:V,done:!1,notified:!1,parent:!1,reactions:new x,rejection:!1,state:0,value:void 0})}).prototype=h(W,{then:function(e,t){var r=z(this),n=X(C(this,G));return r.parent=!0,n.ok=!g(e)||e,n.fail=g(t)&&t,n.domain=B?$.domain:void 0,0==r.state?r.reactions.add(n):O((function(){oe(n,r)})),n.promise},catch:function(e){return this.then(void 0,e)}}),i=function(){var e=new n,t=U(e);this.promise=e,this.resolve=pe(fe,t),this.reject=pe(de,t)},P.f=X=function(e){return e===G||e===o?new i(e):J(e)},!c&&g(d)&&Y!==Object.prototype)){a=Y.then,te||(f(Y,"then",(function(e,t){var r=this;return new G((function(e,t){p(a,r,e,t)})).then(e,t)}),{unsafe:!0}),f(Y,"catch",W.catch,{unsafe:!0}));try{delete Y.constructor}catch(e){}v&&v(Y,W)}s({global:!0,wrap:!0,forced:re},{Promise:G}),m(G,V,!1,!0),_(V),o=l(V),s({target:V,stat:!0,forced:re},{reject:function(e){var t=X(this);return p(t.reject,void 0,e),t.promise}}),s({target:V,stat:!0,forced:c||re},{resolve:function(e){return w(c&&this===o?G:this,e)}}),s({target:V,stat:!0,forced:ne},{all:function(e){var t=this,r=X(t),n=r.resolve,i=r.reject,o=N((function(){var r=T(t.resolve),o=[],a=0,s=1;A(e,(function(e){var c=a++,u=!1;s++,p(r,t,e).then((function(e){u||(u=!0,o[c]=e,--s||n(o))}),i)})),--s||n(o)}));return o.error&&i(o.value),r.promise},race:function(e){var t=this,r=X(t),n=r.reject,i=N((function(){var i=T(t.resolve);A(e,(function(e){p(i,t,e).then(r.resolve,n)}))}));return i.error&&n(i.value),r.promise}})},94327:function(e,t,r){var n=r(27788),i=r(3673),o=r(64867),a=r(71804),s=r(38254),c=r(26349),u=r(41776),l=r(90130),p=r(14065),d=i("Reflect","construct"),f=Object.prototype,h=[].push,v=p((function(){function e(){}return!(d((function(){}),[],e)instanceof e)})),m=!p((function(){d((function(){}))})),_=v||m;n({target:"Reflect",stat:!0,forced:_,sham:_},{construct:function(e,t){s(e),c(t);var r=arguments.length<3?e:s(arguments[2]);if(m&&!v)return d(e,t,r);if(e==r){switch(t.length){case 0:return new e;case 1:return new e(t[0]);case 2:return new e(t[0],t[1]);case 3:return new e(t[0],t[1],t[2]);case 4:return new e(t[0],t[1],t[2],t[3])}var n=[null];return o(h,n,t),new(o(a,e,n))}var i=r.prototype,p=l(u(i)?i:f),_=o(e,p,t);return u(_)?_:p}})},84118:function(){},51730:function(e,t,r){"use strict";var n=r(59049).charAt,i=r(96013),o=r(99675),a=r(12984),s="String Iterator",c=o.set,u=o.getterFor(s);a(String,"String",(function(e){c(this,{type:s,string:i(e),index:0})}),(function(){var e,t=u(this),r=t.string,i=t.index;return i>=r.length?{value:void 0,done:!0}:(e=n(r,i),t.index+=e.length,{value:e,done:!1})}))},6786:function(e,t,r){r(46401)("asyncIterator")},34661:function(){},31059:function(e,t,r){r(46401)("hasInstance")},67534:function(e,t,r){r(46401)("isConcatSpreadable")},99061:function(e,t,r){r(46401)("iterator")},80081:function(e,t,r){"use strict";var n=r(27788),i=r(17005),o=r(3673),a=r(64867),s=r(62807),c=r(54466),u=r(54813),l=r(84630),p=r(68878),d=r(14065),f=r(48003),h=r(45914),v=r(50771),m=r(41776),_=r(9559),T=r(82455),g=r(26349),y=r(65891),E=r(93255),b=r(6671),A=r(96013),S=r(28562),C=r(90130),I=r(31522),O=r(29198),w=r(37084),R=r(1315),P=r(6025),N=r(67251),x=r(90655),L=r(92563),k=r(11162),D=r(58404),M=r(38703),B=r(73961),H=r(41451),j=r(46418),V=r(39689),U=r(97333),F=r(46401),z=r(32685),Y=r(99675),G=r(14235).forEach,W=B("hidden"),q="Symbol",K="prototype",$=V("toPrimitive"),X=Y.set,J=Y.getterFor(q),Z=Object[K],Q=i.Symbol,ee=Q&&Q[K],te=i.TypeError,re=i.QObject,ne=o("JSON","stringify"),ie=P.f,oe=N.f,ae=w.f,se=L.f,ce=c([].push),ue=M("symbols"),le=M("op-symbols"),pe=M("string-to-symbol-registry"),de=M("symbol-to-string-registry"),fe=M("wks"),he=!re||!re[K]||!re[K].findChild,ve=l&&d((function(){return 7!=C(oe({},"a",{get:function(){return oe(this,"a",{value:7}).a}})).a}))?function(e,t,r){var n=ie(Z,t);n&&delete Z[t],oe(e,t,r),n&&e!==Z&&oe(Z,t,n)}:oe,me=function(e,t){var r=ue[e]=C(ee);return X(r,{type:q,tag:e,description:t}),l||(r.description=t),r},_e=function(e,t,r){e===Z&&_e(le,t,r),g(e);var n=b(t);return g(r),f(ue,n)?(r.enumerable?(f(e,W)&&e[W][n]&&(e[W][n]=!1),r=C(r,{enumerable:S(0,!1)})):(f(e,W)||oe(e,W,S(1,{})),e[W][n]=!0),ve(e,n,r)):oe(e,n,r)},Te=function(e,t){g(e);var r=E(t),n=I(r).concat(be(r));return G(n,(function(t){l&&!s(ge,r,t)||_e(e,t,r[t])})),e},ge=function(e){var t=b(e),r=s(se,this,t);return!(this===Z&&f(ue,t)&&!f(le,t))&&(!(r||!f(this,t)||!f(ue,t)||f(this,W)&&this[W][t])||r)},ye=function(e,t){var r=E(e),n=b(t);if(r!==Z||!f(ue,n)||f(le,n)){var i=ie(r,n);return!i||!f(ue,n)||f(r,W)&&r[W][n]||(i.enumerable=!0),i}},Ee=function(e){var t=ae(E(e)),r=[];return G(t,(function(e){f(ue,e)||f(H,e)||ce(r,e)})),r},be=function(e){var t=e===Z,r=ae(t?le:E(e)),n=[];return G(r,(function(e){!f(ue,e)||t&&!f(Z,e)||ce(n,ue[e])})),n};(p||(Q=function(){if(_(ee,this))throw te("Symbol is not a constructor");var e=arguments.length&&void 0!==arguments[0]?A(arguments[0]):void 0,t=j(e),r=function(e){this===Z&&s(r,le,e),f(this,W)&&f(this[W],t)&&(this[W][t]=!1),ve(this,t,S(1,e))};return l&&he&&ve(Z,t,{configurable:!0,set:r}),me(t,e)},D(ee=Q[K],"toString",(function(){return J(this).tag})),D(Q,"withoutSetter",(function(e){return me(j(e),e)})),L.f=ge,N.f=_e,x.f=Te,P.f=ye,O.f=w.f=Ee,R.f=be,U.f=function(e){return me(V(e),e)},l&&(oe(ee,"description",{configurable:!0,get:function(){return J(this).description}}),u||D(Z,"propertyIsEnumerable",ge,{unsafe:!0}))),n({global:!0,wrap:!0,forced:!p,sham:!p},{Symbol:Q}),G(I(fe),(function(e){F(e)})),n({target:q,stat:!0,forced:!p},{for:function(e){var t=A(e);if(f(pe,t))return pe[t];var r=Q(t);return pe[t]=r,de[r]=t,r},keyFor:function(e){if(!T(e))throw te(e+" is not a symbol");if(f(de,e))return de[e]},useSetter:function(){he=!0},useSimple:function(){he=!1}}),n({target:"Object",stat:!0,forced:!p,sham:!l},{create:function(e,t){return void 0===t?C(e):Te(C(e),t)},defineProperty:_e,defineProperties:Te,getOwnPropertyDescriptor:ye}),n({target:"Object",stat:!0,forced:!p},{getOwnPropertyNames:Ee,getOwnPropertySymbols:be}),n({target:"Object",stat:!0,forced:d((function(){R.f(1)}))},{getOwnPropertySymbols:function(e){return R.f(y(e))}}),ne)&&n({target:"JSON",stat:!0,forced:!p||d((function(){var e=Q();return"[null]"!=ne([e])||"{}"!=ne({a:e})||"{}"!=ne(Object(e))}))},{stringify:function(e,t,r){var n=k(arguments),i=t;if((m(t)||void 0!==e)&&!T(e))return h(t)||(t=function(e,t){if(v(i)&&(t=s(i,this,e,t)),!T(t))return t}),n[1]=t,a(ne,null,n)}});if(!ee[$]){var Ae=ee.valueOf;D(ee,$,(function(e){return s(Ae,this)}))}z(Q,q),H[W]=!0},48676:function(e,t,r){r(46401)("matchAll")},19050:function(e,t,r){r(46401)("match")},44143:function(e,t,r){r(46401)("replace")},89523:function(e,t,r){r(46401)("search")},94761:function(e,t,r){r(46401)("species")},75740:function(e,t,r){r(46401)("split")},80902:function(e,t,r){r(46401)("toPrimitive")},36823:function(e,t,r){r(46401)("toStringTag")},86968:function(e,t,r){r(46401)("unscopables")},16526:function(e,t,r){"use strict";var n,i=r(17005),o=r(54466),a=r(14198),s=r(11905),c=r(59150),u=r(76007),l=r(41776),p=r(40538),d=r(99675).enforce,f=r(8041),h=!i.ActiveXObject&&"ActiveXObject"in i,v=function(e){return function(){return e(this,arguments.length?arguments[0]:void 0)}},m=c("WeakMap",v,u);if(f&&h){n=u.getConstructor(v,"WeakMap",!0),s.enable();var _=m.prototype,T=o(_.delete),g=o(_.has),y=o(_.get),E=o(_.set);a(_,{delete:function(e){if(l(e)&&!p(e)){var t=d(this);return t.frozen||(t.frozen=new n),T(this,e)||t.frozen.delete(e)}return T(this,e)},has:function(e){if(l(e)&&!p(e)){var t=d(this);return t.frozen||(t.frozen=new n),g(this,e)||t.frozen.has(e)}return g(this,e)},get:function(e){if(l(e)&&!p(e)){var t=d(this);return t.frozen||(t.frozen=new n),g(this,e)?y(this,e):t.frozen.get(e)}return y(this,e)},set:function(e,t){if(l(e)&&!p(e)){var r=d(this);r.frozen||(r.frozen=new n),g(this,e)?E(this,e,t):r.frozen.set(e,t)}else E(this,e,t);return this}})}},3456:function(e,t,r){r(46401)("asyncDispose")},33637:function(e,t,r){r(46401)("dispose")},57166:function(e,t,r){r(46401)("matcher")},58224:function(e,t,r){r(46401)("metadata")},7963:function(e,t,r){r(46401)("observable")},8906:function(e,t,r){r(46401)("patternMatch")},26846:function(e,t,r){r(46401)("replaceAll")},85351:function(e,t,r){r(74810);var n=r(86034),i=r(17005),o=r(68601),a=r(44677),s=r(99471),c=r(39689)("toStringTag");for(var u in n){var l=i[u],p=l&&l.prototype;p&&o(p)!==c&&a(p,c,u),s[u]=s.Array}},20271:function(e,t,r){var n=r(86954);e.exports=n},50163:function(e,t,r){var n=r(74666);e.exports=n},16258:function(e,t,r){var n=r(37075);e.exports=n},17088:function(e,t,r){var n=r(9955);r(85351),e.exports=n},16535:function(e,t,r){var n=r(34710);e.exports=n},43432:function(e,t,r){var n=r(25891);r(85351),e.exports=n},29949:function(e,t,r){var n=r(33618);e.exports=n},19698:function(e,t,r){var n=r(76159);e.exports=n},28910:function(e,t,r){var n=r(59859);e.exports=n},60732:function(e,t,r){var n=r(3401);e.exports=n},49249:function(e,t,r){var n=r(35182);e.exports=n},50438:function(e,t,r){var n=r(86917);e.exports=n},13397:function(e,t,r){var n=r(29986);e.exports=n},786:function(e,t,r){var n=r(35225);e.exports=n},98987:function(e,t,r){var n=r(94316);r(85351),e.exports=n},81898:function(e,t,r){var n=r(44513);e.exports=n},95754:function(e,t,r){var n=r(14531);r(85351),e.exports=n},68458:function(e,t,r){var n=r(66205);r(85351),e.exports=n},72410:function(e,t,r){var n=r(82079);e.exports=n},48605:function(e,t,r){var n=r(12412);r(85351),e.exports=n},40987:function(e){"use strict";e.exports=function(){var e={};return e.promise=new Promise((function(t,r){e.resolve=t,e.reject=r})),e}},46208:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n,i=(n=r(40987))&&n.__esModule?n:{default:n};function o(e,t){for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:{};!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.defers=[],this.upcomingDeferred=null,this.eventListener=this.eventListener.bind(this),this.options=r,this.one=this.one.bind(this),this.upcoming=this.upcoming.bind(this),this[Symbol.iterator]=function(){return{next:function(){return{done:!1,value:t.upcoming()}}}}}var t,r,n;return t=e,r=[{key:"eventListener",value:function(e){var t=this.defers.shift(),r=this.options.array?[].slice.call(arguments):e;t&&t.resolve(r),this.upcomingDeferred&&(this.upcomingDeferred.resolve(r),this.upcomingDeferred=null)}},{key:"one",value:function(){var e=(0,i.default)();return this.defers.push(e),e.promise}},{key:"upcoming",value:function(){return this.upcomingDeferred||(this.upcomingDeferred=(0,i.default)()),this.upcomingDeferred.promise}}],r&&o(t.prototype,r),n&&o(t,n),e}();t.default=a,e.exports=t.default,e.exports.default=t.default},81162:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=r(75470),i=r(8853),o=r(26193),a=r(36341),s=r(85350),c=r(14634),u=r(25094),l=r(69759),p=r(85895),d=r(76009),f=r(2401),h=r(57616);function v(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var m,_=v(n),T=v(i),g=v(o),y=v(a),E=v(s),b=v(c),A=v(u),S=v(l),C=v(p),I=v(d),O=v(f),w=v(h);function R(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(e){return!1}}();return function(){var r,n=A.default(e);if(t){var i=A.default(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return b.default(this,r)}}function P(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function N(e){for(var t=1;t2?r-2:0),i=2;i1&&void 0!==arguments[1]&&arguments[1],r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],n=Q(this);n.dispatchFlag?H.warn():Z.set(this,N(N({},n),{},{type:String(e),bubbles:Boolean(t),cancelable:Boolean(r),target:null,currentTarget:null,stopPropagationFlag:!1,stopImmediatePropagationFlag:!1,canceledFlag:!1}))}},{key:"type",get:function(){return Q(this).type}},{key:"target",get:function(){return Q(this).target}},{key:"srcElement",get:function(){return Q(this).target}},{key:"currentTarget",get:function(){return Q(this).currentTarget}},{key:"NONE",get:function(){return K}},{key:"CAPTURING_PHASE",get:function(){return $}},{key:"AT_TARGET",get:function(){return X}},{key:"BUBBLING_PHASE",get:function(){return J}},{key:"eventPhase",get:function(){return Q(this).dispatchFlag?2:0}},{key:"cancelBubble",get:function(){return Q(this).stopPropagationFlag},set:function(e){e?Q(this).stopPropagationFlag=!0:j.warn()}},{key:"bubbles",get:function(){return Q(this).bubbles}},{key:"cancelable",get:function(){return Q(this).cancelable}},{key:"returnValue",get:function(){return!Q(this).canceledFlag},set:function(e){e?V.warn():ee(Q(this))}},{key:"defaultPrevented",get:function(){return Q(this).canceledFlag}},{key:"composed",get:function(){return Q(this).composed}},{key:"isTrusted",get:function(){return!1}},{key:"timeStamp",get:function(){return Q(this).timeStamp}}]),e}(),K=0,$=1,X=2,J=3,Z=new WeakMap;function Q(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"this",r=Z.get(e);return x(null!=r,"'%s' must be an object that Event constructor created, but got another one: %o",t,e),r}function ee(e){e.inPassiveListenerFlag?F.warn():e.cancelable?e.canceledFlag=!0:U.warn()}Object.defineProperty(q,"NONE",{enumerable:!0}),Object.defineProperty(q,"CAPTURING_PHASE",{enumerable:!0}),Object.defineProperty(q,"AT_TARGET",{enumerable:!0}),Object.defineProperty(q,"BUBBLING_PHASE",{enumerable:!0});for(var te,re=Object.getOwnPropertyNames(q.prototype),ne=0;ne2&&void 0!==arguments[2]&&arguments[2],n=e.listeners[t];return function(e){e.flags|=8}(n),n.signal&&n.signal.removeEventListener("abort",n.signalListener),e.cow&&!r?(e.cow=!1,e.listeners=e.listeners.filter((function(e,r){return r!==t})),!1):(e.listeners.splice(t,1),!0)}function Ee(e,t){var r;return null!==(r=e[t])&&void 0!==r?r:e[t]={attrCallback:void 0,attrListener:void 0,cow:!1,listeners:[]}}ue.set(Object.prototype,ae),void 0!==M&&void 0!==M.Event&&ue.set(M.Event.prototype,ae);var be=function(){function e(){I.default(this,e),Ae.set(this,Object.create(null))}return O.default(e,[{key:"addEventListener",value:function(e,t,r){var n=Se(this),i=function(e,t,r){var n;if(Ce(t),"object"===w.default(r)&&null!==r)return{type:String(e),callback:null!=t?t:void 0,capture:Boolean(r.capture),passive:Boolean(r.passive),once:Boolean(r.once),signal:null!==(n=r.signal)&&void 0!==n?n:void 0};return{type:String(e),callback:null!=t?t:void 0,capture:Boolean(r),passive:!1,once:!1,signal:void 0}}(e,t,r),o=i.callback,a=i.capture,s=i.once,c=i.passive,u=i.signal,l=i.type;if(null!=o&&!(null==u?void 0:u.aborted)){var p=Ee(n,l),d=_e(p,o,a);-1===d?Te(p,o,a,c,s,u):function(e,t,r,n){z.warn(de(e)?"capture":"bubble",e.callback),fe(e)!==t&&Y.warn("passive");he(e)!==r&&Y.warn("once");e.signal!==n&&Y.warn("signal")}(p.listeners[d],c,s,u)}}},{key:"removeEventListener",value:function(e,t,r){var n=Se(this),i=function(e,t,r){if(Ce(t),"object"===w.default(r)&&null!==r)return{type:String(e),callback:null!=t?t:void 0,capture:Boolean(r.capture)};return{type:String(e),callback:null!=t?t:void 0,capture:Boolean(r)}}(e,t,r),o=i.callback,a=i.capture,s=n[i.type];null!=o&&s&&ge(s,o,a)}},{key:"dispatchEvent",value:function(e){var t=Se(this)[String(e.type)];if(null==t)return!0;var r,n=e instanceof q?e:ae.wrap(e),i=Q(n,"event");if(i.dispatchFlag)throw r="This event has been in dispatching.",M.DOMException?new M.DOMException(r,"InvalidStateError"):(null==te&&(te=function(e){E.default(r,e);var t=R(r);function r(e){var n;return I.default(this,r),n=t.call(this,e),Error.captureStackTrace&&Error.captureStackTrace(y.default(n),r),n}return O.default(r,[{key:"code",get:function(){return 11}},{key:"name",get:function(){return"InvalidStateError"}}]),r}(S.default(Error)),Object.defineProperties(te.prototype,{code:{enumerable:!0},name:{enumerable:!0}}),oe(te),oe(te.prototype)),new te(r));if(i.dispatchFlag=!0,i.target=i.currentTarget=this,!i.stopPropagationFlag){var o=t.cow,a=t.listeners;t.cow=!0;for(var s=0;s1&&void 0!==arguments[1]?arguments[1]:"this",r=Ae.get(e);return x(null!=r,"'%s' must be an object that EventTarget constructor created, but got another one: %o",t,e),r}function Ce(e){if("function"!=typeof e&&("object"!==w.default(e)||null===e||"function"!=typeof e.handleEvent)){if(null!=e&&"object"!==w.default(e))throw new TypeError(L(G.message,[e]));G.warn(e)}}for(var Ie=Object.getOwnPropertyNames(be.prototype),Oe=0;Oe1&&void 0!==arguments[1]?arguments[1]:{},r=t.maxAlternatives,n=void 0===r?1/0:r,o=t.textNormalization,c=void 0===o?"display":o;if(e.reason===a||e.reason===s&&!e.json.NBest){var u=[{confidence:.5,transcript:e.text}];return e.reason===s&&(u.isFinal=!0),u}if(e.reason===s)return(0,i.default)((e.json.NBest||[]).slice(0,n).map((function(e){var t=e.Confidence,r=e.Display,n=e.ITN,i=e.Lexical,o=e.MaskedITN;return{confidence:t,transcript:"itn"===c?n:"lexical"===c?i:"maskeditn"===c?o:r}})),{isFinal:!0});return[]};var i=n(r(99799)),o=n(r(56469)).default.ResultReason,a=o.RecognizingSpeech,s=o.RecognizedSpeech},99252:function(e,t,r){"use strict";var n=r(60108);Object.defineProperty(t,"__esModule",{value:!0}),t.createSpeechRecognitionPonyfillFromRecognizer=x,t.default=void 0;var i=n(r(13594)),o=n(r(75470)),a=n(r(85895)),s=n(r(94348)),c=n(r(2401)),u=n(r(76009)),l=n(r(85350)),p=n(r(14634)),d=n(r(25094)),f=r(81162),h=n(r(34803)),v=n(r(11297)),m=n(r(64315)),_=n(r(31991)),T=n(r(56469));function g(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function y(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:{},o=i.data,a=i.emma,s=i.interpretation,c=i.resultIndex,l=i.results;return(0,u.default)(this,r),(n=t.call(this,e)).data=o,n.emma=a,n.interpretation=s,n.resultIndex=c,n.results=l,n}return(0,c.default)(r)}(f.Event);function N(e){var t,r,n=e.attach,o=e.attach.bind(e);return e.attach=(0,s.default)(i.default.mark((function n(){var a;return i.default.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,o();case 2:return a=n.sent,n.abrupt("return",y(y({},a),{},{read:function(){var n=(0,s.default)(i.default.mark((function n(){var o;return i.default.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,a.read();case 2:if(o=n.sent,!t&&w(o.buffer)>150&&(e.events.onEvent({name:"FirstAudibleChunk"}),t=!0),!r){n.next=6;break}return n.abrupt("return",{buffer:new ArrayBuffer(0),isEnd:!0,timeReceived:Date.now()});case 6:return n.abrupt("return",o);case 7:case"end":return n.stop()}}),n)})));return function(){return n.apply(this,arguments)}}()}));case 4:case"end":return n.stop()}}),n)}))),{audioConfig:e,pause:function(){r=!0},unprepare:function(){e.attach=n}}}function x(e){var t=e.createRecognizer,r=e.enableTelemetry,n=e.looseEvents,a=e.referenceGrammars,p=e.textNormalization;I.enableTelemetry(!1!==r);var d=function(e){(0,l.default)(m,e);var r,d=E(m);function m(){var e;return(0,u.default)(this,m),(e=d.call(this))._continuous=!1,e._interimResults=!1,e._lang="undefined"!=typeof window?window.document.documentElement.getAttribute("lang")||window.navigator.language:"en-US",e._grammars=new _.default,e._maxAlternatives=1,e}return(0,c.default)(m,[{key:"emitCognitiveServices",value:function(e,t){this.dispatchEvent(new P("cognitiveservices",{data:y(y({},t),{},{type:e})}))}},{key:"continuous",get:function(){return this._continuous},set:function(e){this._continuous=e}},{key:"grammars",get:function(){return this._grammars},set:function(e){if(!(e instanceof _.default))throw new Error("The provided value is not of type 'SpeechGrammarList'");this._grammars=e}},{key:"interimResults",get:function(){return this._interimResults},set:function(e){this._interimResults=e}},{key:"maxAlternatives",get:function(){return this._maxAlternatives},set:function(e){this._maxAlternatives=e}},{key:"lang",get:function(){return this._lang},set:function(e){this._lang=e}},{key:"onaudioend",get:function(){return(0,f.getEventAttributeValue)(this,"audioend")},set:function(e){(0,f.setEventAttributeValue)(this,"audioend",e)}},{key:"onaudiostart",get:function(){return(0,f.getEventAttributeValue)(this,"audiostart")},set:function(e){(0,f.setEventAttributeValue)(this,"audiostart",e)}},{key:"oncognitiveservices",get:function(){return(0,f.getEventAttributeValue)(this,"cognitiveservices")},set:function(e){(0,f.setEventAttributeValue)(this,"cognitiveservices",e)}},{key:"onend",get:function(){return(0,f.getEventAttributeValue)(this,"end")},set:function(e){(0,f.setEventAttributeValue)(this,"end",e)}},{key:"onerror",get:function(){return(0,f.getEventAttributeValue)(this,"error")},set:function(e){(0,f.setEventAttributeValue)(this,"error",e)}},{key:"onresult",get:function(){return(0,f.getEventAttributeValue)(this,"result")},set:function(e){(0,f.setEventAttributeValue)(this,"result",e)}},{key:"onsoundend",get:function(){return(0,f.getEventAttributeValue)(this,"soundend")},set:function(e){(0,f.setEventAttributeValue)(this,"soundend",e)}},{key:"onsoundstart",get:function(){return(0,f.getEventAttributeValue)(this,"soundstart")},set:function(e){(0,f.setEventAttributeValue)(this,"soundstart",e)}},{key:"onspeechend",get:function(){return(0,f.getEventAttributeValue)(this,"speechend")},set:function(e){(0,f.setEventAttributeValue)(this,"speechend",e)}},{key:"onspeechstart",get:function(){return(0,f.getEventAttributeValue)(this,"speechstart")},set:function(e){(0,f.setEventAttributeValue)(this,"speechstart",e)}},{key:"onstart",get:function(){return(0,f.getEventAttributeValue)(this,"start")},set:function(e){(0,f.setEventAttributeValue)(this,"start",e)}},{key:"start",value:function(){var e=this;this._startOnce().catch((function(t){e.dispatchEvent(new ErrorEvent("error",{error:t,message:t&&(t.stack||t.message)}))}))}},{key:"_startOnce",value:(r=(0,s.default)(i.default.mark((function e(){var r,s,c,u,l,d,f,m,_,T,g,y,E,b,A,C,I,w=this;return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t(this.lang);case 2:return r=e.sent,s=N(r.audioConfig),c=s.pause,u=s.unprepare,e.prev=4,l=(0,v.default)(),_=r.audioConfig.events.attach((function(e){var t=e.name;"AudioSourceReadyEvent"===t?l.push({audioSourceReady:{}}):"AudioSourceOffEvent"===t?l.push({audioSourceOff:{}}):"FirstAudibleChunk"===t&&l.push({firstAudibleChunk:{}})})),T=_.detach,r.canceled=function(e,t){var r=t.errorDetails,n=t.offset,i=t.reason,o=t.sessionId;l.push({canceled:{errorDetails:r,offset:n,reason:i,sessionId:o}})},r.recognized=function(e,t){var r=t.offset,n=t.result,i=t.sessionId;l.push({recognized:{offset:r,result:O(n),sessionId:i}})},r.recognizing=function(e,t){var r=t.offset,n=t.result,i=t.sessionId;l.push({recognizing:{offset:r,result:O(n),sessionId:i}})},r.sessionStarted=function(e,t){var r=t.sessionId;l.push({sessionStarted:{sessionId:r}})},r.sessionStopped=function(e,t){var r=t.sessionId;l.push({sessionStopped:{sessionId:r}})},r.speechStartDetected=function(e,t){var r=t.offset,n=t.sessionId;l.push({speechStartDetected:{offset:r,sessionId:n}})},r.speechEndDetected=function(e,t){var r=t.sessionId;l.push({speechEndDetected:{sessionId:r}})},g=this.grammars.phrases,y=r.privReco.dynamicGrammar,a&&a.length&&y.addReferenceGrammar(a),g&&g.length&&y.addPhrase(g),e.next=20,R(r.startContinuousRecognitionAsync.bind(r))();case 20:r.stopContinuousRecognitionAsync?(this.abort=function(){return l.push({abort:{}})},this.stop=function(){return l.push({stop:{}})}):this.abort=this.stop=void 0,A=[],C=i.default.mark((function e(t){var a,s,u,v,_,T,g,y,C,I,O,N;return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,l.shift();case 2:if(a=e.sent,s=a.abort,u=a.audioSourceOff,v=a.audioSourceReady,_=a.canceled,T=a.firstAudibleChunk,g=a.recognized,y=a.recognizing,C=a.stop,Object.keys(a).forEach((function(e){return w.emitCognitiveServices(e,a[e])})),I=_&&_.errorDetails,!/Permission[\t-\r \xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000\uFEFF]denied/.test(I||"")){e.next=9;break}return b={error:"not-allowed",type:"error"},e.abrupt("return","break");case 9:if(t||w.dispatchEvent(new P("start")),!I){e.next=15;break}return/1006/.test(I)?(E||(w.dispatchEvent(new P("audiostart")),w.dispatchEvent(new P("audioend"))),b={error:"network",type:"error"}):b={error:"unknown",type:"error"},e.abrupt("return","break");case 15:if(!s&&!C){e.next=22;break}if(s?(b={error:"aborted",type:"error"},m="abort"):(c(),m="stop"),!s||!r.stopContinuousRecognitionAsync){e.next=20;break}return e.next=20,R(r.stopContinuousRecognitionAsync.bind(r))();case 20:e.next=61;break;case 22:if(!v){e.next=27;break}w.dispatchEvent(new P("audiostart")),E=!0,e.next=61;break;case 27:if(!T){e.next=32;break}w.dispatchEvent(new P("soundstart")),d=!0,e.next=61;break;case 32:if(!u){e.next=40;break}return f&&w.dispatchEvent(new P("speechend")),d&&w.dispatchEvent(new P("soundend")),E&&w.dispatchEvent(new P("audioend")),E=d=f=!1,e.abrupt("return","break");case 40:if("abort"===m){e.next=61;break}if(!g||!g.result||g.result.reason!==S.NoMatch){e.next=45;break}b={error:"no-speech",type:"error"},e.next=61;break;case 45:if(!g&&!y){e.next=61;break}if(E||(w.dispatchEvent(new P("audiostart")),E=!0),d||(w.dispatchEvent(new P("soundstart")),d=!0),f||(w.dispatchEvent(new P("speechstart")),f=!0),!g){e.next=60;break}if(O=(0,h.default)(g.result,{maxAlternatives:w.maxAlternatives,textNormalization:p}),(N=!!O[0].transcript)&&(A=[].concat((0,o.default)(A),[O]),w.continuous&&w.dispatchEvent(new P("result",{results:A}))),b=w.continuous&&N?null:{results:A,type:"result"},w.continuous||!r.stopContinuousRecognitionAsync){e.next=57;break}return e.next=57,R(r.stopContinuousRecognitionAsync.bind(r))();case 57:n&&b&&N&&(w.dispatchEvent(new P(b.type,b)),b=null),e.next=61;break;case 60:y&&w.interimResults&&w.dispatchEvent(new P("result",{results:[].concat((0,o.default)(A),[(0,h.default)(y.result,{maxAlternatives:w.maxAlternatives,textNormalization:p})])}));case 61:case"end":return e.stop()}}),e)})),I=0;case 24:if(m&&!E){e.next=32;break}return e.delegateYield(C(I),"t0",26);case 26:if("break"!==e.t0){e.next=29;break}return e.abrupt("break",32);case 29:I++,e.next=24;break;case 32:f&&this.dispatchEvent(new P("speechend")),d&&this.dispatchEvent(new P("soundend")),E&&this.dispatchEvent(new P("audioend")),b&&("result"!==b.type||b.results.length||(b={error:"no-speech",type:"error"}),"error"===b.type?this.dispatchEvent(new ErrorEvent("error",b)):this.dispatchEvent(new P(b.type,b))),this.dispatchEvent(new P("end")),T(),e.next=44;break;case 40:throw e.prev=40,e.t1=e.catch(4),console.error(e.t1),e.t1;case 44:return e.prev=44,u(),r.dispose(),e.finish(44);case 48:case"end":return e.stop()}}),e,this,[[4,40,44,48]])}))),function(){return r.apply(this,arguments)})}]),m}(f.EventTarget);return{SpeechGrammarList:_.default,SpeechRecognition:d,SpeechRecognitionEvent:P}}t.default=function(e){var t=(0,m.default)(e),r=t.audioConfig,n=void 0===r?b.fromDefaultMicrophoneInput():r,o=t.enableTelemetry,a=void 0===o||o,c=t.fetchCredentials,u=t.looseEvents,l=t.referenceGrammars,p=t.speechRecognitionEndpointId,d=t.textNormalization,f=void 0===d?"display":d;if(!(n||window.navigator.mediaDevices&&window.navigator.mediaDevices.getUserMedia))return console.warn("web-speech-cognitive-services: This browser does not support WebRTC and it will not work with Cognitive Services Speech Services."),{};var h=function(){var e=(0,s.default)(i.default.mark((function e(t){var r,o,a,s,u,l,d;return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,c();case 2:return r=e.sent,o=r.authorizationToken,a=r.region,s=r.speechRecognitionHostname,u=r.subscriptionKey,s?(d={hostname:s,port:443,protocol:"wss:"},o?(l=C.fromHost(d)).authorizationToken=o:l=C.fromHost(d,u)):l=o?C.fromAuthorizationToken(o,a):C.fromSubscription(u,a),p&&(l.endpointId=p),l.outputFormat=A.Detailed,l.speechRecognitionLanguage=t||"en-US",e.abrupt("return",new I(l,n));case 12:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}();return x({audioConfig:n,createRecognizer:h,enableTelemetry:a,looseEvents:u,referenceGrammars:l,textNormalization:f})}},64315:function(e,t,r){"use strict";var n=r(60108);Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.authorizationToken,r=e.credentials,n=e.looseEvent,o=e.looseEvents,l=e.region,f=void 0===l?"westus":l,h=e.subscriptionKey,v=(0,s.default)(e,u);void 0!==n&&(console.warn('web-speech-cognitive-services: The option "looseEvent" should be named as "looseEvents".'),o=n);if(!r){if(!t&&!h)throw new Error("web-speech-cognitive-services: Credentials must be specified.");console.warn("web-speech-cognitive-services: We are deprecating authorizationToken, region, and subscriptionKey. Please use credentials instead. The deprecated option will be removed on or after 2020-11-14."),r=function(){var e=(0,a.default)(i.default.mark((function e(){return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!t){e.next=8;break}return e.next=3,(0,c.default)(t);case 3:e.t1=e.sent,e.t2=f,e.t0={authorizationToken:e.t1,region:e.t2},e.next=13;break;case 8:return e.t3=f,e.next=11,(0,c.default)(h);case 11:e.t4=e.sent,e.t0={region:e.t3,subscriptionKey:e.t4};case 13:return e.abrupt("return",e.t0);case 14:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}()}return p(p({},v),{},{fetchCredentials:(m=(0,a.default)(i.default.mark((function e(){var t,n,o,a,s,u,l,p;return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,(0,c.default)(r);case 2:if(t=e.sent,n=t.authorizationToken,o=t.customVoiceHostname,a=t.region,s=t.speechRecognitionHostname,u=t.speechSynthesisHostname,l=t.subscriptionKey,!(!n&&!l||n&&l)){e.next=13;break}throw new Error('web-speech-cognitive-services: Either "authorizationToken" or "subscriptionKey" must be provided.');case 13:if(a||s&&u){e.next=17;break}throw new Error('web-speech-cognitive-services: Either "region" or "speechRecognitionHostname" and "speechSynthesisHostname" must be set.');case 17:if(!a||!(o||s||u)){e.next=21;break}throw new Error('web-speech-cognitive-services: Only either "region" or "customVoiceHostname", "speechRecognitionHostname" and "speechSynthesisHostname" can be set.');case 21:if(!n){e.next=26;break}if("string"==typeof n){e.next=24;break}throw new Error('web-speech-cognitive-services: "authorizationToken" must be a string.');case 24:e.next=28;break;case 26:if("string"==typeof l){e.next=28;break}throw new Error('web-speech-cognitive-services: "subscriptionKey" must be a string.');case 28:return d&&l&&(console.warn("web-speech-cognitive-services: In production environment, subscription key should not be used, authorization token should be used instead."),d=!1),p=n?{authorizationToken:n}:{subscriptionKey:l},a?p.region=a:(p.customVoiceHostname=o,p.speechRecognitionHostname=s,p.speechSynthesisHostname=u),e.abrupt("return",p);case 32:case"end":return e.stop()}}),e)}))),function(){return m.apply(this,arguments)}),looseEvents:o});var m};var i=n(r(13594)),o=n(r(85895)),a=n(r(94348)),s=n(r(28233)),c=n(r(187)),u=["authorizationToken","credentials","looseEvent","looseEvents","region","subscriptionKey"];function l(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function p(e){for(var t=1;tthis.eventPool.length&&this.eventPool.push(e)}function de(e){e.eventPool=[],e.getPooled=le,e.release=pe}i(ue.prototype,{preventDefault:function(){this.defaultPrevented=!0;var e=this.nativeEvent;e&&(e.preventDefault?e.preventDefault():"unknown"!=typeof e.returnValue&&(e.returnValue=!1),this.isDefaultPrevented=se)},stopPropagation:function(){var e=this.nativeEvent;e&&(e.stopPropagation?e.stopPropagation():"unknown"!=typeof e.cancelBubble&&(e.cancelBubble=!0),this.isPropagationStopped=se)},persist:function(){this.isPersistent=se},isPersistent:ce,destructor:function(){var e,t=this.constructor.Interface;for(e in t)this[e]=null;this.nativeEvent=this._targetInst=this.dispatchConfig=null,this.isPropagationStopped=this.isDefaultPrevented=ce,this._dispatchInstances=this._dispatchListeners=null}}),ue.Interface={type:null,target:null,currentTarget:function(){return null},eventPhase:null,bubbles:null,cancelable:null,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:null,isTrusted:null},ue.extend=function(e){function t(){}function r(){return n.apply(this,arguments)}var n=this;t.prototype=n.prototype;var o=new t;return i(o,r.prototype),r.prototype=o,r.prototype.constructor=r,r.Interface=i({},n.Interface,e),r.extend=n.extend,de(r),r},de(ue);var fe=ue.extend({data:null}),he=ue.extend({data:null}),ve=[9,13,27,32],me=W&&"CompositionEvent"in window,_e=null;W&&"documentMode"in document&&(_e=document.documentMode);var Te=W&&"TextEvent"in window&&!_e,ge=W&&(!me||_e&&8<_e&&11>=_e),ye=String.fromCharCode(32),Ee={beforeInput:{phasedRegistrationNames:{bubbled:"onBeforeInput",captured:"onBeforeInputCapture"},dependencies:["compositionend","keypress","textInput","paste"]},compositionEnd:{phasedRegistrationNames:{bubbled:"onCompositionEnd",captured:"onCompositionEndCapture"},dependencies:"blur compositionend keydown keypress keyup mousedown".split(" ")},compositionStart:{phasedRegistrationNames:{bubbled:"onCompositionStart",captured:"onCompositionStartCapture"},dependencies:"blur compositionstart keydown keypress keyup mousedown".split(" ")},compositionUpdate:{phasedRegistrationNames:{bubbled:"onCompositionUpdate",captured:"onCompositionUpdateCapture"},dependencies:"blur compositionupdate keydown keypress keyup mousedown".split(" ")}},be=!1;function Ae(e,t){switch(e){case"keyup":return-1!==ve.indexOf(t.keyCode);case"keydown":return 229!==t.keyCode;case"keypress":case"mousedown":case"blur":return!0;default:return!1}}function Se(e){return"object"==typeof(e=e.detail)&&"data"in e?e.data:null}var Ce=!1,Ie={eventTypes:Ee,extractEvents:function(e,t,r,n){var i=void 0,o=void 0;if(me)e:{switch(e){case"compositionstart":i=Ee.compositionStart;break e;case"compositionend":i=Ee.compositionEnd;break e;case"compositionupdate":i=Ee.compositionUpdate;break e}i=void 0}else Ce?Ae(e,r)&&(i=Ee.compositionEnd):"keydown"===e&&229===r.keyCode&&(i=Ee.compositionStart);return i?(ge&&"ko"!==r.locale&&(Ce||i!==Ee.compositionStart?i===Ee.compositionEnd&&Ce&&(o=ae()):(ie="value"in(ne=n)?ne.value:ne.textContent,Ce=!0)),i=fe.getPooled(i,t,r,n),(o||null!==(o=Se(r)))&&(i.data=o),G(i),o=i):o=null,(e=Te?function(e,t){switch(e){case"compositionend":return Se(t);case"keypress":return 32!==t.which?null:(be=!0,ye);case"textInput":return(e=t.data)===ye&&be?null:e;default:return null}}(e,r):function(e,t){if(Ce)return"compositionend"===e||!me&&Ae(e,t)?(e=ae(),oe=ie=ne=null,Ce=!1,e):null;switch(e){case"paste":default:return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1
; let seo =
; let sideBar =
; - - if (this.state.line) { - - chat = ( - { - this.chat = chat; - }} - userID= {window.userId} - locale={'en-us'} - directLine={this.state.line} - /> - ); + if (this.state.line) { if (this.state.instanceClient) { let color1 = this.state.instanceClient.color1; gbCss = ; seo = ; - - + const token = this.state.instanceClient.speechToken; + document.body.style.setProperty('background-color', this.state.instanceClient.color2, 'important'); - + + chat = ( + { + this.chat = chat; + }} + locale={'en-us'} + directLine={this.state.line} + webSpeechPonyfillFactory={window.WebChat.createCognitiveServicesSpeechServicesPonyfillFactory({ + credentials: { authorizationToken: token, region: 'westus' } + })} + /> + ); sideBar = (
); + } } return ( + {seo}
{gbCss} diff --git a/packages/default.gbui/src/components/ChatPane.js b/packages/default.gbui/src/components/ChatPane.js index 332203fa8..3e408500b 100644 --- a/packages/default.gbui/src/components/ChatPane.js +++ b/packages/default.gbui/src/components/ChatPane.js @@ -35,7 +35,7 @@ class ChatPane extends React.Component { render() { return ( - { this.chat = chat; }} botConnection={this.props.botConnection} user={{ id: "webUser@gb", name: "You" }} diff --git a/packages/default.gbui/src/components/Debugger.js b/packages/default.gbui/src/components/Debugger.js deleted file mode 100644 index 7fd770e7c..000000000 --- a/packages/default.gbui/src/components/Debugger.js +++ /dev/null @@ -1,445 +0,0 @@ -// import * as React from "react"; -// import Header from "./Header"; -// import HeroList, { HeroListItem } from "./HeroList"; -// import Progress from "./Progress"; -// import "../../../assets/icon-16.png"; -// import "../../../assets/icon-32.png"; -// import "../../../assets/icon-80.png"; -// import $ from "jquery"; - -// export interface AppProps { -// title: string; -// isOfficeInitialized: boolean; -// } - -// export interface AppState { -// listItems: HeroListItem[]; -// mode: number; -// conversationText: string; -// scope: string; -// state: number; -// stateInfo: string; -// inputText: string; -// messages: string; -// } - -// export default class App extends React.Component { -// constructor(props, context) { -// super(props, context); -// this.state = { -// mode: 0, -// listItems: [], -// conversationText: "", -// scope: "", -// state: 0, -// stateInfo: "", -// messages: "", -// inputText: "", -// }; -// } - -// botId = "dev-rodriguez22"; -// botKey = "starter"; -// host = "https://tender-yak-44.telebit.io"; -// breakpointsMap = {}; - -// componentDidMount() { -// this.setState({ -// listItems: [ -// { -// icon: "Ribbon", -// primaryText: "Office integration to Bots", -// }, -// { -// icon: "Unlock", -// primaryText: "Unlock features of General Bots", -// }, -// { -// icon: "Design", -// primaryText: "Create your Bots using BASIC", -// }, -// ], -// }); -// } - -// context = async () => { -// const url = `${this.host}/api/v3/${this.botId}/dbg/getContext`; - -// $.ajax({ -// data: { botId: this.botId, botKey: this.botKey }, -// url: url, -// dataType: "json", -// method: "POST", -// }) -// .done(function (item) { -// console.log("GBWord Add-in: context OK."); -// const line = item.line; - -// Word.run(async (context) => { -// var paragraphs = context.document.body.paragraphs; -// paragraphs.load("$none"); -// await context.sync(); -// for (let i = 0; i < paragraphs.items.length; i++) { -// const paragraph = paragraphs.items[i]; - -// context.load(paragraph, ["text", "font"]); -// paragraph.font.highlightColor = null; - -// if (i === line) { -// paragraph.font.highlightColor = "Yellow"; -// } -// } -// await context.sync(); -// }); -// }) -// .fail(function (jqXHR, textStatus, errorThrown) { -// let x = jqXHR, -// y = errorThrown; - -// console.log(textStatus); -// }); -// }; - -// setExecutionLine = async (line) => { -// Word.run(async (context) => { -// var paragraphs = context.document.body.paragraphs; -// paragraphs.load("$none"); -// await context.sync(); -// for (let i = 0; i < paragraphs.items.length; i++) { -// const paragraph = paragraphs.items[i]; - -// context.load(paragraph, ["text", "font"]); -// paragraph.font.highlightColor = null; - -// if (i === line) { -// paragraph.font.highlightColor = "Yellow"; -// } -// } -// await context.sync(); -// }); -// }; - -// breakpoint = async () => { -// let line = 0; - -// Word.run(async (context) => { -// let selection = context.document.getSelection(); -// selection.load(); - -// await context.sync(); - -// console.log("Empty selection, cursor."); - -// const paragraph = selection.paragraphs.getFirst(); -// paragraph.select(); -// context.load(paragraph, ["text", "font"]); - -// var paragraphs = context.document.body.paragraphs; -// paragraphs.load("$none"); -// await context.sync(); - -// for (let i = 0; i < paragraphs.items.length; i++) { -// const paragraph1 = paragraphs.items[i]; - -// if (paragraph1 === paragraph) { -// line = i + 1; -// paragraph.font.highlightColor = "Orange"; -// } -// } - -// return context.sync(); -// }); - -// const url = `${this.host}/api/v3/${this.botId}/dbg/setBreakpoint`; - -// $.ajax({ -// data: { botId: this.botId, botKey: this.botKey, line }, -// url: url, -// dataType: "json", -// method: "POST", -// }) -// .done(function () { -// console.log("GBWord Add-in: breakpoint OK."); -// }) -// .fail(function (jqXHR, textStatus, errorThrown) { -// let x = jqXHR, -// y = errorThrown; - -// console.log(textStatus); -// }); -// }; - -// refactor = async () => { -// let line = 0; - -// let change = 'ssssssssssssssssssss'; - -// Word.run(async (context) => { -// let selection = context.document.getSelection(); -// selection.load(); - -// await context.sync(); - -// var paragraphs = selection.paragraphs; -// paragraphs.load("$none"); -// await context.sync(); -// let code = ''; -// for (let i = 0; i < paragraphs.items.length; i++) { - -// const paragraph = paragraphs.items[i]; -// context.load(paragraph, ["text", "font"]); -// code += paragraph.text; -// } - -// const url = `${this.host}/api/v3/${this.botId}/dbg/refactor`; - -// $.ajax({ -// data: { botId: this.botId, code: code, change: change }, -// url: url, -// dataType: "json", -// method: "POST", -// }) -// .done(async function (data) { - -// Word.run(async (context) => { -// var selectedRange = context.document.getSelection(); -// context.load(selectedRange, "text"); -// selectedRange.text = data; - -// await context.sync(); -// }); -// }) -// .fail(function (jqXHR, textStatus, errorThrown) { -// console.log(textStatus); -// }); - -// return context.sync(); -// }); - -// }; - -// resume = async () => { -// const url = `${this.host}/api/v3/${this.botId}/dbg/resume`; - -// $.ajax({ -// data: { botId: this.botId, botKey: this.botKey }, -// url: url, -// dataType: "json", -// method: "POST", -// }) -// .done(function () { -// console.log("GBWord Add-in: resume OK."); -// this.setState({ mode: 1 }); -// }) -// .fail(function (jqXHR, textStatus, errorThrown) { -// let x = jqXHR, -// y = errorThrown; -// console.log(textStatus); -// }); -// }; - -// step = async () => { -// const url = `${this.host}/api/v3/${this.botId}/dbg/step`; - -// $.ajax({ -// data: { botId: this.botId, botKey: this.botKey }, -// url: url, -// dataType: "json", -// method: "POST", -// }) -// .done(function () { -// console.log("GBWord Add-in: step OK."); -// this.setState({ mode: 2 }); -// }) -// .fail(function (jqXHR, textStatus, errorThrown) { -// let x = jqXHR, -// y = errorThrown; -// console.log(textStatus); -// }); -// }; - -// stop = async () => { -// const url = `${this.host}/api/v3/${this.botId}/dbg/stop`; - -// $.ajax({ -// data: { botId: this.botId, botKey: this.botKey }, -// url: url, -// dataType: "json", -// method: "POST", -// }) -// .done(function () { -// console.log("GBWord Add-in: stop OK."); -// this.setState({ mode: 0 }); -// }) -// .fail(function (jqXHR, textStatus, errorThrown) { -// let x = jqXHR, -// y = errorThrown; -// console.log(textStatus); -// }); -// }; - -// sendMessage = async (args) => { -// if (args.keyCode === 13) { -// const text = args.target.value; -// const url = `${this.host}/api/v3/${this.botId}/dbg/sendMessage`; - -// $.ajax({ -// data: { botId: this.botId, botKey: this.botKey, text: text }, -// url: url, -// dataType: "json", -// method: "POST", -// }) -// .done(function () { -// console.log("GBWord Add-in: sendMessage OK."); -// args.target.value = ""; -// }) -// .fail(function (jqXHR, textStatus, errorThrown) { -// let x = jqXHR, -// y = errorThrown; -// console.log(textStatus); -// }); -// } -// }; - -// waitFor = (delay) => new Promise((resolve) => setTimeout(resolve, delay)); - -// refresh = async () => { -// const context = await this.context(); - -// this.setState({ -// conversationText: context['conversationText'], -// state: context['state'], -// messages: context['messages'], -// scope: context['scope'], -// mode: context['state'] -// }); -// await this.waitFor(3000); -// await this.refresh(); -// }; - - -// debug = async () => { -// if (this.state.mode === 0) { -// const url = `${this.host}/api/v3/${this.botId}/dbg/start`; - -// $.ajax({ -// data: { botId: this.botId, botKey: this.botKey, scriptName: "auto" }, -// url: url, -// dataType: "json", -// method: "POST", -// }) -// .done(function () { -// console.log("GBWord Add-in: debug OK."); -// this.state.mode = 1; -// }) -// .fail(function (jqXHR, textStatus, errorThrown) { -// let x = jqXHR, -// y = errorThrown; -// console.log(textStatus); -// }); -// } else if (this.state.mode === 2) { -// this.resume(); -// } - -// await this.refresh(); -// }; - -// formatCode = async () => { -// return Word.run(async (context) => { -// var paragraphs = context.document.body.paragraphs; -// paragraphs.load("$none"); -// await context.sync(); -// for (let i = 0; i < paragraphs.items.length; i++) { -// const paragraph = paragraphs.items[i]; -// context.load(paragraph, ["text", "font"]); -// paragraph.font.highlightColor = null; - -// const words = paragraph.split([" "], true /* trimDelimiters*/, true /* trimSpaces */); -// words.load(["text", "font"]); -// await context.sync(); -// var boldWords = []; -// for (var j = 0; j < words.items.length; ++j) { -// var word = words.items[j]; -// if (word.text === "TALK" && j == 0) boldWords.push(word); -// if (word.text === "HEAR" && j == 0) boldWords.push(word); -// if (word.text === "SAVE" && j == 0) boldWords.push(word); -// if (word.text === "FIND" && j == 3) boldWords.push(word); -// if (word.text === "OPEN" && j == 0) boldWords.push(word); -// if (word.text === "WAIT" && j == 0) boldWords.push(word); -// if (word.text === "SET" && j == 0) boldWords.push(word); -// if (word.text === "CLICK" && j == 0) boldWords.push(word); -// if (word.text === "MERGE" && j == 0) boldWords.push(word); -// if (word.text === "IF" && j == 0) boldWords.push(word); -// if (word.text === "THEN" && j == 0) boldWords.push(word); -// if (word.text === "ELSE" && j == 0) boldWords.push(word); -// if (word.text === "END" && j == 0) boldWords.push(word); -// if (word.text === "TWEET" && j == 0) boldWords.push(word); -// if (word.text === "HOVER" && j == 0) boldWords.push(word); -// if (word.text === "PRESS" && j == 0) boldWords.push(word); -// if (word.text === "DO" && j == 0) boldWords.push(word); -// } -// for (var j = 0; j < boldWords.length; ++j) { -// boldWords[j].font.color = "blue"; -// boldWords[j].font.bold = true; -// } -// } -// await context.sync(); -// }); -// }; - -// render() { -// const { title, isOfficeInitialized } = this.props; - -// if (!isOfficeInitialized) { -// return ( -// -// ); -// } - -// return ( -//
-//
-//   -// -// -//  Format -// -//    -// -// -//   Run -// -//    -// -// -//   Stop -// -//    -// -// -//   Step -// -//    -// -// -//   Break -// -//
-//
-//
Status: {this.state.stateInfo}
-//
-//
Bot Messages:
-// -//
-// -//
Variables:
-//
{this.state.scope}
-// -//
-// ); -// } -// } diff --git a/packages/default.gbui/src/components/GBCss.js b/packages/default.gbui/src/components/GBCss.js index f5213208c..5ea60b6c3 100644 --- a/packages/default.gbui/src/components/GBCss.js +++ b/packages/default.gbui/src/components/GBCss.js @@ -37,8 +37,14 @@ class GBCss extends React.Component { if (this.props.instance) { css = ( - - + + + + + + + + ); } else { diff --git a/packages/default.gbui/src/components/SidebarMenu.js b/packages/default.gbui/src/components/SidebarMenu.js index b3e267375..c9a543dff 100644 --- a/packages/default.gbui/src/components/SidebarMenu.js +++ b/packages/default.gbui/src/components/SidebarMenu.js @@ -46,10 +46,10 @@ class SideBarMenu extends React.Component { render() { return (
-
+
General Bots Logo
diff --git a/packages/default.gbui/src/players/GBImagePlayer.js b/packages/default.gbui/src/players/GBImagePlayer.js index 5258e53c1..f3913aa17 100644 --- a/packages/default.gbui/src/players/GBImagePlayer.js +++ b/packages/default.gbui/src/players/GBImagePlayer.js @@ -28,21 +28,23 @@ | | \*****************************************************************************/ -import React, { Component } from 'react'; +import React, { Component } from "react"; class GBImagePlayer extends Component { constructor() { super(); - this.state = {}; + this.state = { + }; } play(url) { this.playerImage.src = url; } - stop() { - this.playerImage.src = ''; + stop(){ + this.playerImage.src = ""; } + render() { return ( diff --git a/packages/default.gbui/src/players/GBMultiUrlPlayer.js b/packages/default.gbui/src/players/GBMultiUrlPlayer.js index 97578bd0e..9c3c445fa 100644 --- a/packages/default.gbui/src/players/GBMultiUrlPlayer.js +++ b/packages/default.gbui/src/players/GBMultiUrlPlayer.js @@ -50,11 +50,10 @@ class RenderItem extends Component {
{this.props.list.map(item => (