1 |
- {"ast":null,"code":"\"use strict\";\n\n// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT license.\n// Multi-device Conversation is a Preview feature.\nvar _asyncToGenerator = require(\"F:/workspace/202226701027/huinongbao-app/node_modules/@babel/runtime/helpers/asyncToGenerator.js\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ConversationTranslator = exports.SpeechState = void 0;\n/* eslint-disable max-classes-per-file */\nconst Exports_js_1 = require(\"../../common.speech/Exports.js\");\nconst ConversationTranslatorConnectionFactory_js_1 = require(\"../../common.speech/Transcription/ConversationTranslatorConnectionFactory.js\");\nconst Exports_js_2 = require(\"../../common/Exports.js\");\nconst Contracts_js_1 = require(\"../Contracts.js\");\nconst Exports_js_3 = require(\"../Exports.js\");\nconst Conversation_js_1 = require(\"./Conversation.js\");\nconst Exports_js_4 = require(\"./Exports.js\");\nvar SpeechState;\n(function (SpeechState) {\n SpeechState[SpeechState[\"Inactive\"] = 0] = \"Inactive\";\n SpeechState[SpeechState[\"Connecting\"] = 1] = \"Connecting\";\n SpeechState[SpeechState[\"Connected\"] = 2] = \"Connected\";\n})(SpeechState = exports.SpeechState || (exports.SpeechState = {}));\n// child class of TranslationRecognizer meant only for use with ConversationTranslator\nclass ConversationTranslationRecognizer extends Exports_js_3.TranslationRecognizer {\n constructor(speechConfig, audioConfig, translator, convGetter) {\n var _this;\n super(speechConfig, audioConfig, new ConversationTranslatorConnectionFactory_js_1.ConversationTranslatorConnectionFactory(convGetter));\n _this = this;\n this.privSpeechState = SpeechState.Inactive;\n if (!!translator) {\n this.privTranslator = translator;\n this.sessionStarted = () => {\n this.privSpeechState = SpeechState.Connected;\n };\n this.sessionStopped = () => {\n this.privSpeechState = SpeechState.Inactive;\n };\n this.recognizing = (tr, e) => {\n if (!!this.privTranslator.recognizing) {\n this.privTranslator.recognizing(this.privTranslator, e);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n this.recognized = /*#__PURE__*/function () {\n var _ref = _asyncToGenerator(function* (tr, e) {\n var _e$result;\n // if there is an error connecting to the conversation service from the speech service the error will be returned in the ErrorDetails field.\n if ((_e$result = e.result) !== null && _e$result !== void 0 && _e$result.errorDetails) {\n yield _this.cancelSpeech();\n // TODO: format the error message contained in 'errorDetails'\n _this.fireCancelEvent(e.result.errorDetails);\n } else {\n if (!!_this.privTranslator.recognized) {\n _this.privTranslator.recognized(_this.privTranslator, e);\n }\n }\n return;\n });\n return function (_x, _x2) {\n return _ref.apply(this, arguments);\n };\n }();\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n this.canceled = /*#__PURE__*/_asyncToGenerator(function* () {\n if (_this.privSpeechState !== SpeechState.Inactive) {\n try {\n yield _this.cancelSpeech();\n } catch (error) {\n _this.privSpeechState = SpeechState.Inactive;\n }\n }\n });\n }\n }\n get state() {\n return this.privSpeechState;\n }\n set state(newState) {\n this.privSpeechState = newState;\n }\n set authentication(token) {\n this.privReco.authentication = token;\n }\n onConnection() {\n this.privSpeechState = SpeechState.Connected;\n }\n onCancelSpeech() {\n var _this2 = this;\n return _asyncToGenerator(function* () {\n _this2.privSpeechState = SpeechState.Inactive;\n yield _this2.cancelSpeech();\n })();\n }\n /**\n * Fire a cancel event\n * @param error\n */\n fireCancelEvent(error) {\n try {\n if (!!this.privTranslator.canceled) {\n const cancelEvent = new Exports_js_4.ConversationTranslationCanceledEventArgs(Exports_js_3.CancellationReason.Error, error, Exports_js_3.CancellationErrorCode.RuntimeError);\n this.privTranslator.canceled(this.privTranslator, cancelEvent);\n }\n } catch (e) {\n //\n }\n }\n cancelSpeech() {\n var _this3 = this;\n return _asyncToGenerator(function* () {\n try {\n var _this3$privReco;\n _this3.stopContinuousRecognitionAsync();\n yield (_this3$privReco = _this3.privReco) === null || _this3$privReco === void 0 ? void 0 : _this3$privReco.disconnect();\n _this3.privSpeechState = SpeechState.Inactive;\n } catch (e) {\n // ignore the error\n }\n })();\n }\n}\n/**\n * Join, leave or connect to a conversation.\n */\nclass ConversationTranslator extends Exports_js_4.ConversationCommon {\n constructor(audioConfig) {\n super(audioConfig);\n this.privErrors = Exports_js_1.ConversationConnectionConfig.restErrors;\n this.privIsDisposed = false;\n this.privIsSpeaking = false;\n this.privPlaceholderKey = \"abcdefghijklmnopqrstuvwxyz012345\";\n this.privPlaceholderRegion = \"westus\";\n this.privProperties = new Exports_js_3.PropertyCollection();\n }\n get properties() {\n return this.privProperties;\n }\n get speechRecognitionLanguage() {\n return this.privSpeechRecognitionLanguage;\n }\n get participants() {\n var _this$privConversatio;\n return (_this$privConversatio = this.privConversation) === null || _this$privConversatio === void 0 ? void 0 : _this$privConversatio.participants;\n }\n get canSpeak() {\n // is there a Conversation websocket available and has the Recognizer been set up\n if (!this.privConversation.isConnected || !this.privCTRecognizer) {\n return false;\n }\n // is the user already speaking\n if (this.privIsSpeaking || this.privCTRecognizer.state === SpeechState.Connected || this.privCTRecognizer.state === SpeechState.Connecting) {\n return false;\n }\n // is the user muted\n if (this.privConversation.isMutedByHost) {\n return false;\n }\n return true;\n }\n onToken(token) {\n this.privCTRecognizer.authentication = token;\n }\n setServiceProperty(name, value) {\n const currentProperties = JSON.parse(this.privProperties.getProperty(Exports_js_1.ServicePropertiesPropertyName, \"{}\"));\n currentProperties[name] = value;\n this.privProperties.setProperty(Exports_js_1.ServicePropertiesPropertyName, JSON.stringify(currentProperties));\n }\n joinConversationAsync(conversation, nickname, param1, param2, param3) {\n try {\n if (typeof conversation === \"string\") {\n Contracts_js_1.Contracts.throwIfNullOrUndefined(conversation, this.privErrors.invalidArgs.replace(\"{arg}\", \"conversation id\"));\n Contracts_js_1.Contracts.throwIfNullOrWhitespace(nickname, this.privErrors.invalidArgs.replace(\"{arg}\", \"nickname\"));\n if (!!this.privConversation) {\n this.handleError(new Error(this.privErrors.permissionDeniedStart), param3);\n }\n let lang = param1;\n if (lang === undefined || lang === null || lang === \"\") {\n lang = Exports_js_1.ConversationConnectionConfig.defaultLanguageCode;\n }\n // create a placeholder config\n this.privSpeechTranslationConfig = Exports_js_3.SpeechTranslationConfig.fromSubscription(this.privPlaceholderKey, this.privPlaceholderRegion);\n this.privSpeechTranslationConfig.setProfanity(Exports_js_3.ProfanityOption.Masked);\n this.privSpeechTranslationConfig.addTargetLanguage(lang);\n this.privSpeechTranslationConfig.setProperty(Exports_js_3.PropertyId[Exports_js_3.PropertyId.SpeechServiceConnection_RecoLanguage], lang);\n this.privSpeechTranslationConfig.setProperty(Exports_js_3.PropertyId[Exports_js_3.PropertyId.ConversationTranslator_Name], nickname);\n const propertyIdsToCopy = [Exports_js_3.PropertyId.SpeechServiceConnection_Host, Exports_js_3.PropertyId.ConversationTranslator_Host, Exports_js_3.PropertyId.SpeechServiceConnection_Endpoint, Exports_js_3.PropertyId.SpeechServiceConnection_ProxyHostName, Exports_js_3.PropertyId.SpeechServiceConnection_ProxyPassword, Exports_js_3.PropertyId.SpeechServiceConnection_ProxyPort, Exports_js_3.PropertyId.SpeechServiceConnection_ProxyUserName, \"ConversationTranslator_MultiChannelAudio\", \"ConversationTranslator_Region\"];\n for (const prop of propertyIdsToCopy) {\n const value = this.privProperties.getProperty(prop);\n if (value) {\n const key = typeof prop === \"string\" ? prop : Exports_js_3.PropertyId[prop];\n this.privSpeechTranslationConfig.setProperty(key, value);\n }\n }\n const currentProperties = JSON.parse(this.privProperties.getProperty(Exports_js_1.ServicePropertiesPropertyName, \"{}\"));\n for (const prop of Object.keys(currentProperties)) {\n this.privSpeechTranslationConfig.setServiceProperty(prop, currentProperties[prop], Exports_js_3.ServicePropertyChannel.UriQueryParameter);\n }\n // join the conversation\n this.privConversation = new Conversation_js_1.ConversationImpl(this.privSpeechTranslationConfig);\n this.privConversation.conversationTranslator = this;\n this.privConversation.joinConversationAsync(conversation, nickname, lang, result => {\n if (!result) {\n this.handleError(new Error(this.privErrors.permissionDeniedConnect), param3);\n }\n this.privSpeechTranslationConfig.authorizationToken = result;\n this.privConversation.room.isHost = false;\n // connect to the ws\n this.privConversation.startConversationAsync(() => {\n this.handleCallback(param2, param3);\n }, error => {\n this.handleError(error, param3);\n });\n }, error => {\n this.handleError(error, param3);\n });\n } else if (typeof conversation === \"object\") {\n Contracts_js_1.Contracts.throwIfNullOrUndefined(conversation, this.privErrors.invalidArgs.replace(\"{arg}\", \"conversation id\"));\n Contracts_js_1.Contracts.throwIfNullOrWhitespace(nickname, this.privErrors.invalidArgs.replace(\"{arg}\", \"nickname\"));\n // save the nickname\n this.privProperties.setProperty(Exports_js_3.PropertyId.ConversationTranslator_Name, nickname);\n // ref the conversation object\n this.privConversation = conversation;\n // ref the conversation translator object\n this.privConversation.conversationTranslator = this;\n this.privConversation.room.isHost = true;\n Contracts_js_1.Contracts.throwIfNullOrUndefined(this.privConversation, this.privErrors.permissionDeniedConnect);\n Contracts_js_1.Contracts.throwIfNullOrUndefined(this.privConversation.room.token, this.privErrors.permissionDeniedConnect);\n this.privSpeechTranslationConfig = conversation.config;\n this.handleCallback(param1, param2);\n } else {\n this.handleError(new Error(this.privErrors.invalidArgs.replace(\"{arg}\", \"invalid conversation type\")), param2);\n }\n } catch (error) {\n this.handleError(error, typeof param1 === \"string\" ? param3 : param2);\n }\n }\n /**\n * Leave the conversation\n * @param cb\n * @param err\n */\n leaveConversationAsync(cb, err) {\n var _this4 = this;\n Exports_js_2.marshalPromiseToCallbacks(_asyncToGenerator(function* () {\n // stop the speech websocket\n yield _this4.cancelSpeech();\n // stop the websocket\n yield _this4.privConversation.endConversationImplAsync();\n // https delete request\n yield _this4.privConversation.deleteConversationImplAsync();\n _this4.dispose();\n })(), cb, err);\n }\n /**\n * Send a text message\n * @param message\n * @param cb\n * @param err\n */\n sendTextMessageAsync(message, cb, err) {\n try {\n Contracts_js_1.Contracts.throwIfNullOrUndefined(this.privConversation, this.privErrors.permissionDeniedSend);\n Contracts_js_1.Contracts.throwIfNullOrWhitespace(message, this.privErrors.invalidArgs.replace(\"{arg}\", message));\n this.privConversation.sendTextMessageAsync(message, cb, err);\n } catch (error) {\n this.handleError(error, err);\n }\n }\n /**\n * Start speaking\n * @param cb\n * @param err\n */\n startTranscribingAsync(cb, err) {\n var _this5 = this;\n Exports_js_2.marshalPromiseToCallbacks(_asyncToGenerator(function* () {\n try {\n Contracts_js_1.Contracts.throwIfNullOrUndefined(_this5.privConversation, _this5.privErrors.permissionDeniedSend);\n Contracts_js_1.Contracts.throwIfNullOrUndefined(_this5.privConversation.room.token, _this5.privErrors.permissionDeniedConnect);\n if (_this5.privCTRecognizer === undefined) {\n yield _this5.connectTranslatorRecognizer();\n }\n Contracts_js_1.Contracts.throwIfNullOrUndefined(_this5.privCTRecognizer, _this5.privErrors.permissionDeniedSend);\n if (!_this5.canSpeak) {\n _this5.handleError(new Error(_this5.privErrors.permissionDeniedSend), err);\n }\n yield _this5.startContinuousRecognition();\n _this5.privIsSpeaking = true;\n } catch (error) {\n _this5.privIsSpeaking = false;\n yield _this5.cancelSpeech();\n throw error;\n }\n })(), cb, err);\n }\n /**\n * Stop speaking\n * @param cb\n * @param err\n */\n stopTranscribingAsync(cb, err) {\n var _this6 = this;\n Exports_js_2.marshalPromiseToCallbacks(_asyncToGenerator(function* () {\n try {\n if (!_this6.privIsSpeaking) {\n // stop speech\n yield _this6.cancelSpeech();\n return;\n }\n // stop the recognition but leave the websocket open\n _this6.privIsSpeaking = false;\n yield new Promise((resolve, reject) => {\n _this6.privCTRecognizer.stopContinuousRecognitionAsync(resolve, reject);\n });\n } catch (error) {\n yield _this6.cancelSpeech();\n }\n })(), cb, err);\n }\n isDisposed() {\n return this.privIsDisposed;\n }\n dispose(reason, success, err) {\n var _this7 = this;\n Exports_js_2.marshalPromiseToCallbacks(_asyncToGenerator(function* () {\n if (_this7.isDisposed && !_this7.privIsSpeaking) {\n return;\n }\n yield _this7.cancelSpeech();\n _this7.privIsDisposed = true;\n _this7.privSpeechTranslationConfig.close();\n _this7.privSpeechRecognitionLanguage = undefined;\n _this7.privProperties = undefined;\n _this7.privAudioConfig = undefined;\n _this7.privSpeechTranslationConfig = undefined;\n _this7.privConversation.dispose();\n _this7.privConversation = undefined;\n })(), success, err);\n }\n /**\n * Cancel the speech websocket\n */\n cancelSpeech() {\n var _this8 = this;\n return _asyncToGenerator(function* () {\n try {\n var _this8$privCTRecogniz;\n _this8.privIsSpeaking = false;\n yield (_this8$privCTRecogniz = _this8.privCTRecognizer) === null || _this8$privCTRecogniz === void 0 ? void 0 : _this8$privCTRecogniz.onCancelSpeech();\n _this8.privCTRecognizer = undefined;\n } catch (e) {\n // ignore the error\n }\n })();\n }\n /**\n * Connect to the speech translation recognizer.\n * Currently there is no language validation performed before sending the SpeechLanguage code to the service.\n * If it's an invalid language the raw error will be: 'Error during WebSocket handshake: Unexpected response code: 400'\n * e.g. pass in 'fr' instead of 'fr-FR', or a text-only language 'cy'\n */\n connectTranslatorRecognizer() {\n var _this9 = this;\n return _asyncToGenerator(function* () {\n try {\n if (_this9.privAudioConfig === undefined) {\n _this9.privAudioConfig = Exports_js_3.AudioConfig.fromDefaultMicrophoneInput();\n }\n // clear the temp subscription key if it's a participant joining\n if (_this9.privSpeechTranslationConfig.getProperty(Exports_js_3.PropertyId[Exports_js_3.PropertyId.SpeechServiceConnection_Key]) === _this9.privPlaceholderKey) {\n _this9.privSpeechTranslationConfig.setProperty(Exports_js_3.PropertyId[Exports_js_3.PropertyId.SpeechServiceConnection_Key], \"\");\n }\n const convGetter = () => _this9.privConversation;\n _this9.privCTRecognizer = new ConversationTranslationRecognizer(_this9.privSpeechTranslationConfig, _this9.privAudioConfig, _this9, convGetter);\n } catch (error) {\n yield _this9.cancelSpeech();\n throw error;\n }\n })();\n }\n /**\n * Handle the start speaking request\n */\n startContinuousRecognition() {\n return new Promise((resolve, reject) => {\n this.privCTRecognizer.startContinuousRecognitionAsync(resolve, reject);\n });\n }\n}\nexports.ConversationTranslator = ConversationTranslator;","map":{"version":3,"names":["_asyncToGenerator","require","default","Object","defineProperty","exports","value","ConversationTranslator","SpeechState","Exports_js_1","ConversationTranslatorConnectionFactory_js_1","Exports_js_2","Contracts_js_1","Exports_js_3","Conversation_js_1","Exports_js_4","ConversationTranslationRecognizer","TranslationRecognizer","constructor","speechConfig","audioConfig","translator","convGetter","_this","ConversationTranslatorConnectionFactory","this","privSpeechState","Inactive","privTranslator","sessionStarted","Connected","sessionStopped","recognizing","tr","e","recognized","_ref","_e$result","result","errorDetails","cancelSpeech","fireCancelEvent","_x","_x2","apply","arguments","canceled","error","state","newState","authentication","token","privReco","onConnection","onCancelSpeech","_this2","cancelEvent","ConversationTranslationCanceledEventArgs","CancellationReason","Error","CancellationErrorCode","RuntimeError","_this3","_this3$privReco","stopContinuousRecognitionAsync","disconnect","ConversationCommon","privErrors","ConversationConnectionConfig","restErrors","privIsDisposed","privIsSpeaking","privPlaceholderKey","privPlaceholderRegion","privProperties","PropertyCollection","properties","speechRecognitionLanguage","privSpeechRecognitionLanguage","participants","_this$privConversatio","privConversation","canSpeak","isConnected","privCTRecognizer","Connecting","isMutedByHost","onToken","setServiceProperty","name","currentProperties","JSON","parse","getProperty","ServicePropertiesPropertyName","setProperty","stringify","joinConversationAsync","conversation","nickname","param1","param2","param3","Contracts","throwIfNullOrUndefined","invalidArgs","replace","throwIfNullOrWhitespace","handleError","permissionDeniedStart","lang","undefined","defaultLanguageCode","privSpeechTranslationConfig","SpeechTranslationConfig","fromSubscription","setProfanity","ProfanityOption","Masked","addTargetLanguage","PropertyId","SpeechServiceConnection_RecoLanguage","ConversationTranslator_Name","propertyIdsToCopy","SpeechServiceConnection_Host","ConversationTranslator_Host","SpeechServiceConnection_Endpoint","SpeechServiceConnection_ProxyHostName","SpeechServiceConnection_ProxyPassword","SpeechServiceConnection_ProxyPort","SpeechServiceConnection_ProxyUserName","prop","key","keys","ServicePropertyChannel","UriQueryParameter","ConversationImpl","conversationTranslator","permissionDeniedConnect","authorizationToken","room","isHost","startConversationAsync","handleCallback","config","leaveConversationAsync","cb","err","_this4","marshalPromiseToCallbacks","endConversationImplAsync","deleteConversationImplAsync","dispose","sendTextMessageAsync","message","permissionDeniedSend","startTranscribingAsync","_this5","connectTranslatorRecognizer","startContinuousRecognition","stopTranscribingAsync","_this6","Promise","resolve","reject","isDisposed","reason","success","_this7","close","privAudioConfig","_this8","_this8$privCTRecogniz","_this9","AudioConfig","fromDefaultMicrophoneInput","SpeechServiceConnection_Key","startContinuousRecognitionAsync"],"sources":["F:/workspace/202226701027/huinongbao-app/node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/Transcription/ConversationTranslator.js"],"sourcesContent":["\"use strict\";\n// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT license.\n// Multi-device Conversation is a Preview feature.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ConversationTranslator = exports.SpeechState = void 0;\n/* eslint-disable max-classes-per-file */\nconst Exports_js_1 = require(\"../../common.speech/Exports.js\");\nconst ConversationTranslatorConnectionFactory_js_1 = require(\"../../common.speech/Transcription/ConversationTranslatorConnectionFactory.js\");\nconst Exports_js_2 = require(\"../../common/Exports.js\");\nconst Contracts_js_1 = require(\"../Contracts.js\");\nconst Exports_js_3 = require(\"../Exports.js\");\nconst Conversation_js_1 = require(\"./Conversation.js\");\nconst Exports_js_4 = require(\"./Exports.js\");\nvar SpeechState;\n(function (SpeechState) {\n SpeechState[SpeechState[\"Inactive\"] = 0] = \"Inactive\";\n SpeechState[SpeechState[\"Connecting\"] = 1] = \"Connecting\";\n SpeechState[SpeechState[\"Connected\"] = 2] = \"Connected\";\n})(SpeechState = exports.SpeechState || (exports.SpeechState = {}));\n// child class of TranslationRecognizer meant only for use with ConversationTranslator\nclass ConversationTranslationRecognizer extends Exports_js_3.TranslationRecognizer {\n constructor(speechConfig, audioConfig, translator, convGetter) {\n super(speechConfig, audioConfig, new ConversationTranslatorConnectionFactory_js_1.ConversationTranslatorConnectionFactory(convGetter));\n this.privSpeechState = SpeechState.Inactive;\n if (!!translator) {\n this.privTranslator = translator;\n this.sessionStarted = () => {\n this.privSpeechState = SpeechState.Connected;\n };\n this.sessionStopped = () => {\n this.privSpeechState = SpeechState.Inactive;\n };\n this.recognizing = (tr, e) => {\n if (!!this.privTranslator.recognizing) {\n this.privTranslator.recognizing(this.privTranslator, e);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n this.recognized = async (tr, e) => {\n // if there is an error connecting to the conversation service from the speech service the error will be returned in the ErrorDetails field.\n if (e.result?.errorDetails) {\n await this.cancelSpeech();\n // TODO: format the error message contained in 'errorDetails'\n this.fireCancelEvent(e.result.errorDetails);\n }\n else {\n if (!!this.privTranslator.recognized) {\n this.privTranslator.recognized(this.privTranslator, e);\n }\n }\n return;\n };\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n this.canceled = async () => {\n if (this.privSpeechState !== SpeechState.Inactive) {\n try {\n await this.cancelSpeech();\n }\n catch (error) {\n this.privSpeechState = SpeechState.Inactive;\n }\n }\n };\n }\n }\n get state() {\n return this.privSpeechState;\n }\n set state(newState) {\n this.privSpeechState = newState;\n }\n set authentication(token) {\n this.privReco.authentication = token;\n }\n onConnection() {\n this.privSpeechState = SpeechState.Connected;\n }\n async onCancelSpeech() {\n this.privSpeechState = SpeechState.Inactive;\n await this.cancelSpeech();\n }\n /**\n * Fire a cancel event\n * @param error\n */\n fireCancelEvent(error) {\n try {\n if (!!this.privTranslator.canceled) {\n const cancelEvent = new Exports_js_4.ConversationTranslationCanceledEventArgs(Exports_js_3.CancellationReason.Error, error, Exports_js_3.CancellationErrorCode.RuntimeError);\n this.privTranslator.canceled(this.privTranslator, cancelEvent);\n }\n }\n catch (e) {\n //\n }\n }\n async cancelSpeech() {\n try {\n this.stopContinuousRecognitionAsync();\n await this.privReco?.disconnect();\n this.privSpeechState = SpeechState.Inactive;\n }\n catch (e) {\n // ignore the error\n }\n }\n}\n/**\n * Join, leave or connect to a conversation.\n */\nclass ConversationTranslator extends Exports_js_4.ConversationCommon {\n constructor(audioConfig) {\n super(audioConfig);\n this.privErrors = Exports_js_1.ConversationConnectionConfig.restErrors;\n this.privIsDisposed = false;\n this.privIsSpeaking = false;\n this.privPlaceholderKey = \"abcdefghijklmnopqrstuvwxyz012345\";\n this.privPlaceholderRegion = \"westus\";\n this.privProperties = new Exports_js_3.PropertyCollection();\n }\n get properties() {\n return this.privProperties;\n }\n get speechRecognitionLanguage() {\n return this.privSpeechRecognitionLanguage;\n }\n get participants() {\n return this.privConversation?.participants;\n }\n get canSpeak() {\n // is there a Conversation websocket available and has the Recognizer been set up\n if (!this.privConversation.isConnected || !this.privCTRecognizer) {\n return false;\n }\n // is the user already speaking\n if (this.privIsSpeaking || this.privCTRecognizer.state === SpeechState.Connected || this.privCTRecognizer.state === SpeechState.Connecting) {\n return false;\n }\n // is the user muted\n if (this.privConversation.isMutedByHost) {\n return false;\n }\n return true;\n }\n onToken(token) {\n this.privCTRecognizer.authentication = token;\n }\n setServiceProperty(name, value) {\n const currentProperties = JSON.parse(this.privProperties.getProperty(Exports_js_1.ServicePropertiesPropertyName, \"{}\"));\n currentProperties[name] = value;\n this.privProperties.setProperty(Exports_js_1.ServicePropertiesPropertyName, JSON.stringify(currentProperties));\n }\n joinConversationAsync(conversation, nickname, param1, param2, param3) {\n try {\n if (typeof conversation === \"string\") {\n Contracts_js_1.Contracts.throwIfNullOrUndefined(conversation, this.privErrors.invalidArgs.replace(\"{arg}\", \"conversation id\"));\n Contracts_js_1.Contracts.throwIfNullOrWhitespace(nickname, this.privErrors.invalidArgs.replace(\"{arg}\", \"nickname\"));\n if (!!this.privConversation) {\n this.handleError(new Error(this.privErrors.permissionDeniedStart), param3);\n }\n let lang = param1;\n if (lang === undefined || lang === null || lang === \"\") {\n lang = Exports_js_1.ConversationConnectionConfig.defaultLanguageCode;\n }\n // create a placeholder config\n this.privSpeechTranslationConfig = Exports_js_3.SpeechTranslationConfig.fromSubscription(this.privPlaceholderKey, this.privPlaceholderRegion);\n this.privSpeechTranslationConfig.setProfanity(Exports_js_3.ProfanityOption.Masked);\n this.privSpeechTranslationConfig.addTargetLanguage(lang);\n this.privSpeechTranslationConfig.setProperty(Exports_js_3.PropertyId[Exports_js_3.PropertyId.SpeechServiceConnection_RecoLanguage], lang);\n this.privSpeechTranslationConfig.setProperty(Exports_js_3.PropertyId[Exports_js_3.PropertyId.ConversationTranslator_Name], nickname);\n const propertyIdsToCopy = [\n Exports_js_3.PropertyId.SpeechServiceConnection_Host,\n Exports_js_3.PropertyId.ConversationTranslator_Host,\n Exports_js_3.PropertyId.SpeechServiceConnection_Endpoint,\n Exports_js_3.PropertyId.SpeechServiceConnection_ProxyHostName,\n Exports_js_3.PropertyId.SpeechServiceConnection_ProxyPassword,\n Exports_js_3.PropertyId.SpeechServiceConnection_ProxyPort,\n Exports_js_3.PropertyId.SpeechServiceConnection_ProxyUserName,\n \"ConversationTranslator_MultiChannelAudio\",\n \"ConversationTranslator_Region\"\n ];\n for (const prop of propertyIdsToCopy) {\n const value = this.privProperties.getProperty(prop);\n if (value) {\n const key = typeof prop === \"string\" ? prop : Exports_js_3.PropertyId[prop];\n this.privSpeechTranslationConfig.setProperty(key, value);\n }\n }\n const currentProperties = JSON.parse(this.privProperties.getProperty(Exports_js_1.ServicePropertiesPropertyName, \"{}\"));\n for (const prop of Object.keys(currentProperties)) {\n this.privSpeechTranslationConfig.setServiceProperty(prop, currentProperties[prop], Exports_js_3.ServicePropertyChannel.UriQueryParameter);\n }\n // join the conversation\n this.privConversation = new Conversation_js_1.ConversationImpl(this.privSpeechTranslationConfig);\n this.privConversation.conversationTranslator = this;\n this.privConversation.joinConversationAsync(conversation, nickname, lang, ((result) => {\n if (!result) {\n this.handleError(new Error(this.privErrors.permissionDeniedConnect), param3);\n }\n this.privSpeechTranslationConfig.authorizationToken = result;\n this.privConversation.room.isHost = false;\n // connect to the ws\n this.privConversation.startConversationAsync((() => {\n this.handleCallback(param2, param3);\n }), ((error) => {\n this.handleError(error, param3);\n }));\n }), ((error) => {\n this.handleError(error, param3);\n }));\n }\n else if (typeof conversation === \"object\") {\n Contracts_js_1.Contracts.throwIfNullOrUndefined(conversation, this.privErrors.invalidArgs.replace(\"{arg}\", \"conversation id\"));\n Contracts_js_1.Contracts.throwIfNullOrWhitespace(nickname, this.privErrors.invalidArgs.replace(\"{arg}\", \"nickname\"));\n // save the nickname\n this.privProperties.setProperty(Exports_js_3.PropertyId.ConversationTranslator_Name, nickname);\n // ref the conversation object\n this.privConversation = conversation;\n // ref the conversation translator object\n this.privConversation.conversationTranslator = this;\n this.privConversation.room.isHost = true;\n Contracts_js_1.Contracts.throwIfNullOrUndefined(this.privConversation, this.privErrors.permissionDeniedConnect);\n Contracts_js_1.Contracts.throwIfNullOrUndefined(this.privConversation.room.token, this.privErrors.permissionDeniedConnect);\n this.privSpeechTranslationConfig = conversation.config;\n this.handleCallback(param1, param2);\n }\n else {\n this.handleError(new Error(this.privErrors.invalidArgs.replace(\"{arg}\", \"invalid conversation type\")), param2);\n }\n }\n catch (error) {\n this.handleError(error, typeof param1 === \"string\" ? param3 : param2);\n }\n }\n /**\n * Leave the conversation\n * @param cb\n * @param err\n */\n leaveConversationAsync(cb, err) {\n Exports_js_2.marshalPromiseToCallbacks((async () => {\n // stop the speech websocket\n await this.cancelSpeech();\n // stop the websocket\n await this.privConversation.endConversationImplAsync();\n // https delete request\n await this.privConversation.deleteConversationImplAsync();\n this.dispose();\n })(), cb, err);\n }\n /**\n * Send a text message\n * @param message\n * @param cb\n * @param err\n */\n sendTextMessageAsync(message, cb, err) {\n try {\n Contracts_js_1.Contracts.throwIfNullOrUndefined(this.privConversation, this.privErrors.permissionDeniedSend);\n Contracts_js_1.Contracts.throwIfNullOrWhitespace(message, this.privErrors.invalidArgs.replace(\"{arg}\", message));\n this.privConversation.sendTextMessageAsync(message, cb, err);\n }\n catch (error) {\n this.handleError(error, err);\n }\n }\n /**\n * Start speaking\n * @param cb\n * @param err\n */\n startTranscribingAsync(cb, err) {\n Exports_js_2.marshalPromiseToCallbacks((async () => {\n try {\n Contracts_js_1.Contracts.throwIfNullOrUndefined(this.privConversation, this.privErrors.permissionDeniedSend);\n Contracts_js_1.Contracts.throwIfNullOrUndefined(this.privConversation.room.token, this.privErrors.permissionDeniedConnect);\n if (this.privCTRecognizer === undefined) {\n await this.connectTranslatorRecognizer();\n }\n Contracts_js_1.Contracts.throwIfNullOrUndefined(this.privCTRecognizer, this.privErrors.permissionDeniedSend);\n if (!this.canSpeak) {\n this.handleError(new Error(this.privErrors.permissionDeniedSend), err);\n }\n await this.startContinuousRecognition();\n this.privIsSpeaking = true;\n }\n catch (error) {\n this.privIsSpeaking = false;\n await this.cancelSpeech();\n throw error;\n }\n })(), cb, err);\n }\n /**\n * Stop speaking\n * @param cb\n * @param err\n */\n stopTranscribingAsync(cb, err) {\n Exports_js_2.marshalPromiseToCallbacks((async () => {\n try {\n if (!this.privIsSpeaking) {\n // stop speech\n await this.cancelSpeech();\n return;\n }\n // stop the recognition but leave the websocket open\n this.privIsSpeaking = false;\n await new Promise((resolve, reject) => {\n this.privCTRecognizer.stopContinuousRecognitionAsync(resolve, reject);\n });\n }\n catch (error) {\n await this.cancelSpeech();\n }\n })(), cb, err);\n }\n isDisposed() {\n return this.privIsDisposed;\n }\n dispose(reason, success, err) {\n Exports_js_2.marshalPromiseToCallbacks((async () => {\n if (this.isDisposed && !this.privIsSpeaking) {\n return;\n }\n await this.cancelSpeech();\n this.privIsDisposed = true;\n this.privSpeechTranslationConfig.close();\n this.privSpeechRecognitionLanguage = undefined;\n this.privProperties = undefined;\n this.privAudioConfig = undefined;\n this.privSpeechTranslationConfig = undefined;\n this.privConversation.dispose();\n this.privConversation = undefined;\n })(), success, err);\n }\n /**\n * Cancel the speech websocket\n */\n async cancelSpeech() {\n try {\n this.privIsSpeaking = false;\n await this.privCTRecognizer?.onCancelSpeech();\n this.privCTRecognizer = undefined;\n }\n catch (e) {\n // ignore the error\n }\n }\n /**\n * Connect to the speech translation recognizer.\n * Currently there is no language validation performed before sending the SpeechLanguage code to the service.\n * If it's an invalid language the raw error will be: 'Error during WebSocket handshake: Unexpected response code: 400'\n * e.g. pass in 'fr' instead of 'fr-FR', or a text-only language 'cy'\n */\n async connectTranslatorRecognizer() {\n try {\n if (this.privAudioConfig === undefined) {\n this.privAudioConfig = Exports_js_3.AudioConfig.fromDefaultMicrophoneInput();\n }\n // clear the temp subscription key if it's a participant joining\n if (this.privSpeechTranslationConfig.getProperty(Exports_js_3.PropertyId[Exports_js_3.PropertyId.SpeechServiceConnection_Key])\n === this.privPlaceholderKey) {\n this.privSpeechTranslationConfig.setProperty(Exports_js_3.PropertyId[Exports_js_3.PropertyId.SpeechServiceConnection_Key], \"\");\n }\n const convGetter = () => this.privConversation;\n this.privCTRecognizer = new ConversationTranslationRecognizer(this.privSpeechTranslationConfig, this.privAudioConfig, this, convGetter);\n }\n catch (error) {\n await this.cancelSpeech();\n throw error;\n }\n }\n /**\n * Handle the start speaking request\n */\n startContinuousRecognition() {\n return new Promise((resolve, reject) => {\n this.privCTRecognizer.startContinuousRecognitionAsync(resolve, reject);\n });\n }\n}\nexports.ConversationTranslator = ConversationTranslator;\n\n"],"mappings":"AAAA,YAAY;;AACZ;AACA;AACA;AAAA,IAAAA,iBAAA,GAAAC,OAAA,qGAAAC,OAAA;AACAC,MAAM,CAACC,cAAc,CAACC,OAAO,EAAE,YAAY,EAAE;EAAEC,KAAK,EAAE;AAAK,CAAC,CAAC;AAC7DD,OAAO,CAACE,sBAAsB,GAAGF,OAAO,CAACG,WAAW,GAAG,KAAK,CAAC;AAC7D;AACA,MAAMC,YAAY,GAAGR,OAAO,CAAC,gCAAgC,CAAC;AAC9D,MAAMS,4CAA4C,GAAGT,OAAO,CAAC,8EAA8E,CAAC;AAC5I,MAAMU,YAAY,GAAGV,OAAO,CAAC,yBAAyB,CAAC;AACvD,MAAMW,cAAc,GAAGX,OAAO,CAAC,iBAAiB,CAAC;AACjD,MAAMY,YAAY,GAAGZ,OAAO,CAAC,eAAe,CAAC;AAC7C,MAAMa,iBAAiB,GAAGb,OAAO,CAAC,mBAAmB,CAAC;AACtD,MAAMc,YAAY,GAAGd,OAAO,CAAC,cAAc,CAAC;AAC5C,IAAIO,WAAW;AACf,CAAC,UAAUA,WAAW,EAAE;EACpBA,WAAW,CAACA,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,UAAU;EACrDA,WAAW,CAACA,WAAW,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,YAAY;EACzDA,WAAW,CAACA,WAAW,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,WAAW;AAC3D,CAAC,EAAEA,WAAW,GAAGH,OAAO,CAACG,WAAW,KAAKH,OAAO,CAACG,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC;AACnE;AACA,MAAMQ,iCAAiC,SAASH,YAAY,CAACI,qBAAqB,CAAC;EAC/EC,WAAWA,CAACC,YAAY,EAAEC,WAAW,EAAEC,UAAU,EAAEC,UAAU,EAAE;IAAA,IAAAC,KAAA;IAC3D,KAAK,CAACJ,YAAY,EAAEC,WAAW,EAAE,IAAIV,4CAA4C,CAACc,uCAAuC,CAACF,UAAU,CAAC,CAAC;IAAAC,KAAA,GAAAE,IAAA;IACtI,IAAI,CAACC,eAAe,GAAGlB,WAAW,CAACmB,QAAQ;IAC3C,IAAI,CAAC,CAACN,UAAU,EAAE;MACd,IAAI,CAACO,cAAc,GAAGP,UAAU;MAChC,IAAI,CAACQ,cAAc,GAAG,MAAM;QACxB,IAAI,CAACH,eAAe,GAAGlB,WAAW,CAACsB,SAAS;MAChD,CAAC;MACD,IAAI,CAACC,cAAc,GAAG,MAAM;QACxB,IAAI,CAACL,eAAe,GAAGlB,WAAW,CAACmB,QAAQ;MAC/C,CAAC;MACD,IAAI,CAACK,WAAW,GAAG,CAACC,EAAE,EAAEC,CAAC,KAAK;QAC1B,IAAI,CAAC,CAAC,IAAI,CAACN,cAAc,CAACI,WAAW,EAAE;UACnC,IAAI,CAACJ,cAAc,CAACI,WAAW,CAAC,IAAI,CAACJ,cAAc,EAAEM,CAAC,CAAC;QAC3D;MACJ,CAAC;MACD;MACA,IAAI,CAACC,UAAU;QAAA,IAAAC,IAAA,GAAApC,iBAAA,CAAG,WAAOiC,EAAE,EAAEC,CAAC,EAAK;UAAA,IAAAG,SAAA;UAC/B;UACA,KAAAA,SAAA,GAAIH,CAAC,CAACI,MAAM,cAAAD,SAAA,eAARA,SAAA,CAAUE,YAAY,EAAE;YACxB,MAAMhB,KAAI,CAACiB,YAAY,CAAC,CAAC;YACzB;YACAjB,KAAI,CAACkB,eAAe,CAACP,CAAC,CAACI,MAAM,CAACC,YAAY,CAAC;UAC/C,CAAC,MACI;YACD,IAAI,CAAC,CAAChB,KAAI,CAACK,cAAc,CAACO,UAAU,EAAE;cAClCZ,KAAI,CAACK,cAAc,CAACO,UAAU,CAACZ,KAAI,CAACK,cAAc,EAAEM,CAAC,CAAC;YAC1D;UACJ;UACA;QACJ,CAAC;QAAA,iBAAAQ,EAAA,EAAAC,GAAA;UAAA,OAAAP,IAAA,CAAAQ,KAAA,OAAAC,SAAA;QAAA;MAAA;MACD;MACA,IAAI,CAACC,QAAQ,gBAAA9C,iBAAA,CAAG,aAAY;QACxB,IAAIuB,KAAI,CAACG,eAAe,KAAKlB,WAAW,CAACmB,QAAQ,EAAE;UAC/C,IAAI;YACA,MAAMJ,KAAI,CAACiB,YAAY,CAAC,CAAC;UAC7B,CAAC,CACD,OAAOO,KAAK,EAAE;YACVxB,KAAI,CAACG,eAAe,GAAGlB,WAAW,CAACmB,QAAQ;UAC/C;QACJ;MACJ,CAAC;IACL;EACJ;EACA,IAAIqB,KAAKA,CAAA,EAAG;IACR,OAAO,IAAI,CAACtB,eAAe;EAC/B;EACA,IAAIsB,KAAKA,CAACC,QAAQ,EAAE;IAChB,IAAI,CAACvB,eAAe,GAAGuB,QAAQ;EACnC;EACA,IAAIC,cAAcA,CAACC,KAAK,EAAE;IACtB,IAAI,CAACC,QAAQ,CAACF,cAAc,GAAGC,KAAK;EACxC;EACAE,YAAYA,CAAA,EAAG;IACX,IAAI,CAAC3B,eAAe,GAAGlB,WAAW,CAACsB,SAAS;EAChD;EACMwB,cAAcA,CAAA,EAAG;IAAA,IAAAC,MAAA;IAAA,OAAAvD,iBAAA;MACnBuD,MAAI,CAAC7B,eAAe,GAAGlB,WAAW,CAACmB,QAAQ;MAC3C,MAAM4B,MAAI,CAACf,YAAY,CAAC,CAAC;IAAC;EAC9B;EACA;AACJ;AACA;AACA;EACIC,eAAeA,CAACM,KAAK,EAAE;IACnB,IAAI;MACA,IAAI,CAAC,CAAC,IAAI,CAACnB,cAAc,CAACkB,QAAQ,EAAE;QAChC,MAAMU,WAAW,GAAG,IAAIzC,YAAY,CAAC0C,wCAAwC,CAAC5C,YAAY,CAAC6C,kBAAkB,CAACC,KAAK,EAAEZ,KAAK,EAAElC,YAAY,CAAC+C,qBAAqB,CAACC,YAAY,CAAC;QAC5K,IAAI,CAACjC,cAAc,CAACkB,QAAQ,CAAC,IAAI,CAAClB,cAAc,EAAE4B,WAAW,CAAC;MAClE;IACJ,CAAC,CACD,OAAOtB,CAAC,EAAE;MACN;IAAA;EAER;EACMM,YAAYA,CAAA,EAAG;IAAA,IAAAsB,MAAA;IAAA,OAAA9D,iBAAA;MACjB,IAAI;QAAA,IAAA+D,eAAA;QACAD,MAAI,CAACE,8BAA8B,CAAC,CAAC;QACrC,OAAAD,eAAA,GAAMD,MAAI,CAACV,QAAQ,cAAAW,eAAA,uBAAbA,eAAA,CAAeE,UAAU,CAAC,CAAC;QACjCH,MAAI,CAACpC,eAAe,GAAGlB,WAAW,CAACmB,QAAQ;MAC/C,CAAC,CACD,OAAOO,CAAC,EAAE;QACN;MAAA;IACH;EACL;AACJ;AACA;AACA;AACA;AACA,MAAM3B,sBAAsB,SAASQ,YAAY,CAACmD,kBAAkB,CAAC;EACjEhD,WAAWA,CAACE,WAAW,EAAE;IACrB,KAAK,CAACA,WAAW,CAAC;IAClB,IAAI,CAAC+C,UAAU,GAAG1D,YAAY,CAAC2D,4BAA4B,CAACC,UAAU;IACtE,IAAI,CAACC,cAAc,GAAG,KAAK;IAC3B,IAAI,CAACC,cAAc,GAAG,KAAK;IAC3B,IAAI,CAACC,kBAAkB,GAAG,kCAAkC;IAC5D,IAAI,CAACC,qBAAqB,GAAG,QAAQ;IACrC,IAAI,CAACC,cAAc,GAAG,IAAI7D,YAAY,CAAC8D,kBAAkB,CAAC,CAAC;EAC/D;EACA,IAAIC,UAAUA,CAAA,EAAG;IACb,OAAO,IAAI,CAACF,cAAc;EAC9B;EACA,IAAIG,yBAAyBA,CAAA,EAAG;IAC5B,OAAO,IAAI,CAACC,6BAA6B;EAC7C;EACA,IAAIC,YAAYA,CAAA,EAAG;IAAA,IAAAC,qBAAA;IACf,QAAAA,qBAAA,GAAO,IAAI,CAACC,gBAAgB,cAAAD,qBAAA,uBAArBA,qBAAA,CAAuBD,YAAY;EAC9C;EACA,IAAIG,QAAQA,CAAA,EAAG;IACX;IACA,IAAI,CAAC,IAAI,CAACD,gBAAgB,CAACE,WAAW,IAAI,CAAC,IAAI,CAACC,gBAAgB,EAAE;MAC9D,OAAO,KAAK;IAChB;IACA;IACA,IAAI,IAAI,CAACb,cAAc,IAAI,IAAI,CAACa,gBAAgB,CAACpC,KAAK,KAAKxC,WAAW,CAACsB,SAAS,IAAI,IAAI,CAACsD,gBAAgB,CAACpC,KAAK,KAAKxC,WAAW,CAAC6E,UAAU,EAAE;MACxI,OAAO,KAAK;IAChB;IACA;IACA,IAAI,IAAI,CAACJ,gBAAgB,CAACK,aAAa,EAAE;MACrC,OAAO,KAAK;IAChB;IACA,OAAO,IAAI;EACf;EACAC,OAAOA,CAACpC,KAAK,EAAE;IACX,IAAI,CAACiC,gBAAgB,CAAClC,cAAc,GAAGC,KAAK;EAChD;EACAqC,kBAAkBA,CAACC,IAAI,EAAEnF,KAAK,EAAE;IAC5B,MAAMoF,iBAAiB,GAAGC,IAAI,CAACC,KAAK,CAAC,IAAI,CAAClB,cAAc,CAACmB,WAAW,CAACpF,YAAY,CAACqF,6BAA6B,EAAE,IAAI,CAAC,CAAC;IACvHJ,iBAAiB,CAACD,IAAI,CAAC,GAAGnF,KAAK;IAC/B,IAAI,CAACoE,cAAc,CAACqB,WAAW,CAACtF,YAAY,CAACqF,6BAA6B,EAAEH,IAAI,CAACK,SAAS,CAACN,iBAAiB,CAAC,CAAC;EAClH;EACAO,qBAAqBA,CAACC,YAAY,EAAEC,QAAQ,EAAEC,MAAM,EAAEC,MAAM,EAAEC,MAAM,EAAE;IAClE,IAAI;MACA,IAAI,OAAOJ,YAAY,KAAK,QAAQ,EAAE;QAClCtF,cAAc,CAAC2F,SAAS,CAACC,sBAAsB,CAACN,YAAY,EAAE,IAAI,CAAC/B,UAAU,CAACsC,WAAW,CAACC,OAAO,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;QAC9H9F,cAAc,CAAC2F,SAAS,CAACI,uBAAuB,CAACR,QAAQ,EAAE,IAAI,CAAChC,UAAU,CAACsC,WAAW,CAACC,OAAO,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QACpH,IAAI,CAAC,CAAC,IAAI,CAACzB,gBAAgB,EAAE;UACzB,IAAI,CAAC2B,WAAW,CAAC,IAAIjD,KAAK,CAAC,IAAI,CAACQ,UAAU,CAAC0C,qBAAqB,CAAC,EAAEP,MAAM,CAAC;QAC9E;QACA,IAAIQ,IAAI,GAAGV,MAAM;QACjB,IAAIU,IAAI,KAAKC,SAAS,IAAID,IAAI,KAAK,IAAI,IAAIA,IAAI,KAAK,EAAE,EAAE;UACpDA,IAAI,GAAGrG,YAAY,CAAC2D,4BAA4B,CAAC4C,mBAAmB;QACxE;QACA;QACA,IAAI,CAACC,2BAA2B,GAAGpG,YAAY,CAACqG,uBAAuB,CAACC,gBAAgB,CAAC,IAAI,CAAC3C,kBAAkB,EAAE,IAAI,CAACC,qBAAqB,CAAC;QAC7I,IAAI,CAACwC,2BAA2B,CAACG,YAAY,CAACvG,YAAY,CAACwG,eAAe,CAACC,MAAM,CAAC;QAClF,IAAI,CAACL,2BAA2B,CAACM,iBAAiB,CAACT,IAAI,CAAC;QACxD,IAAI,CAACG,2BAA2B,CAAClB,WAAW,CAAClF,YAAY,CAAC2G,UAAU,CAAC3G,YAAY,CAAC2G,UAAU,CAACC,oCAAoC,CAAC,EAAEX,IAAI,CAAC;QACzI,IAAI,CAACG,2BAA2B,CAAClB,WAAW,CAAClF,YAAY,CAAC2G,UAAU,CAAC3G,YAAY,CAAC2G,UAAU,CAACE,2BAA2B,CAAC,EAAEvB,QAAQ,CAAC;QACpI,MAAMwB,iBAAiB,GAAG,CACtB9G,YAAY,CAAC2G,UAAU,CAACI,4BAA4B,EACpD/G,YAAY,CAAC2G,UAAU,CAACK,2BAA2B,EACnDhH,YAAY,CAAC2G,UAAU,CAACM,gCAAgC,EACxDjH,YAAY,CAAC2G,UAAU,CAACO,qCAAqC,EAC7DlH,YAAY,CAAC2G,UAAU,CAACQ,qCAAqC,EAC7DnH,YAAY,CAAC2G,UAAU,CAACS,iCAAiC,EACzDpH,YAAY,CAAC2G,UAAU,CAACU,qCAAqC,EAC7D,0CAA0C,EAC1C,+BAA+B,CAClC;QACD,KAAK,MAAMC,IAAI,IAAIR,iBAAiB,EAAE;UAClC,MAAMrH,KAAK,GAAG,IAAI,CAACoE,cAAc,CAACmB,WAAW,CAACsC,IAAI,CAAC;UACnD,IAAI7H,KAAK,EAAE;YACP,MAAM8H,GAAG,GAAG,OAAOD,IAAI,KAAK,QAAQ,GAAGA,IAAI,GAAGtH,YAAY,CAAC2G,UAAU,CAACW,IAAI,CAAC;YAC3E,IAAI,CAAClB,2BAA2B,CAAClB,WAAW,CAACqC,GAAG,EAAE9H,KAAK,CAAC;UAC5D;QACJ;QACA,MAAMoF,iBAAiB,GAAGC,IAAI,CAACC,KAAK,CAAC,IAAI,CAAClB,cAAc,CAACmB,WAAW,CAACpF,YAAY,CAACqF,6BAA6B,EAAE,IAAI,CAAC,CAAC;QACvH,KAAK,MAAMqC,IAAI,IAAIhI,MAAM,CAACkI,IAAI,CAAC3C,iBAAiB,CAAC,EAAE;UAC/C,IAAI,CAACuB,2BAA2B,CAACzB,kBAAkB,CAAC2C,IAAI,EAAEzC,iBAAiB,CAACyC,IAAI,CAAC,EAAEtH,YAAY,CAACyH,sBAAsB,CAACC,iBAAiB,CAAC;QAC7I;QACA;QACA,IAAI,CAACtD,gBAAgB,GAAG,IAAInE,iBAAiB,CAAC0H,gBAAgB,CAAC,IAAI,CAACvB,2BAA2B,CAAC;QAChG,IAAI,CAAChC,gBAAgB,CAACwD,sBAAsB,GAAG,IAAI;QACnD,IAAI,CAACxD,gBAAgB,CAACgB,qBAAqB,CAACC,YAAY,EAAEC,QAAQ,EAAEW,IAAI,EAAIxE,MAAM,IAAK;UACnF,IAAI,CAACA,MAAM,EAAE;YACT,IAAI,CAACsE,WAAW,CAAC,IAAIjD,KAAK,CAAC,IAAI,CAACQ,UAAU,CAACuE,uBAAuB,CAAC,EAAEpC,MAAM,CAAC;UAChF;UACA,IAAI,CAACW,2BAA2B,CAAC0B,kBAAkB,GAAGrG,MAAM;UAC5D,IAAI,CAAC2C,gBAAgB,CAAC2D,IAAI,CAACC,MAAM,GAAG,KAAK;UACzC;UACA,IAAI,CAAC5D,gBAAgB,CAAC6D,sBAAsB,CAAE,MAAM;YAChD,IAAI,CAACC,cAAc,CAAC1C,MAAM,EAAEC,MAAM,CAAC;UACvC,CAAC,EAAKvD,KAAK,IAAK;YACZ,IAAI,CAAC6D,WAAW,CAAC7D,KAAK,EAAEuD,MAAM,CAAC;UACnC,CAAE,CAAC;QACP,CAAC,EAAKvD,KAAK,IAAK;UACZ,IAAI,CAAC6D,WAAW,CAAC7D,KAAK,EAAEuD,MAAM,CAAC;QACnC,CAAE,CAAC;MACP,CAAC,MACI,IAAI,OAAOJ,YAAY,KAAK,QAAQ,EAAE;QACvCtF,cAAc,CAAC2F,SAAS,CAACC,sBAAsB,CAACN,YAAY,EAAE,IAAI,CAAC/B,UAAU,CAACsC,WAAW,CAACC,OAAO,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;QAC9H9F,cAAc,CAAC2F,SAAS,CAACI,uBAAuB,CAACR,QAAQ,EAAE,IAAI,CAAChC,UAAU,CAACsC,WAAW,CAACC,OAAO,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QACpH;QACA,IAAI,CAAChC,cAAc,CAACqB,WAAW,CAAClF,YAAY,CAAC2G,UAAU,CAACE,2BAA2B,EAAEvB,QAAQ,CAAC;QAC9F;QACA,IAAI,CAAClB,gBAAgB,GAAGiB,YAAY;QACpC;QACA,IAAI,CAACjB,gBAAgB,CAACwD,sBAAsB,GAAG,IAAI;QACnD,IAAI,CAACxD,gBAAgB,CAAC2D,IAAI,CAACC,MAAM,GAAG,IAAI;QACxCjI,cAAc,CAAC2F,SAAS,CAACC,sBAAsB,CAAC,IAAI,CAACvB,gBAAgB,EAAE,IAAI,CAACd,UAAU,CAACuE,uBAAuB,CAAC;QAC/G9H,cAAc,CAAC2F,SAAS,CAACC,sBAAsB,CAAC,IAAI,CAACvB,gBAAgB,CAAC2D,IAAI,CAACzF,KAAK,EAAE,IAAI,CAACgB,UAAU,CAACuE,uBAAuB,CAAC;QAC1H,IAAI,CAACzB,2BAA2B,GAAGf,YAAY,CAAC8C,MAAM;QACtD,IAAI,CAACD,cAAc,CAAC3C,MAAM,EAAEC,MAAM,CAAC;MACvC,CAAC,MACI;QACD,IAAI,CAACO,WAAW,CAAC,IAAIjD,KAAK,CAAC,IAAI,CAACQ,UAAU,CAACsC,WAAW,CAACC,OAAO,CAAC,OAAO,EAAE,2BAA2B,CAAC,CAAC,EAAEL,MAAM,CAAC;MAClH;IACJ,CAAC,CACD,OAAOtD,KAAK,EAAE;MACV,IAAI,CAAC6D,WAAW,CAAC7D,KAAK,EAAE,OAAOqD,MAAM,KAAK,QAAQ,GAAGE,MAAM,GAAGD,MAAM,CAAC;IACzE;EACJ;EACA;AACJ;AACA;AACA;AACA;EACI4C,sBAAsBA,CAACC,EAAE,EAAEC,GAAG,EAAE;IAAA,IAAAC,MAAA;IAC5BzI,YAAY,CAAC0I,yBAAyB,CAACrJ,iBAAA,CAAC,aAAY;MAChD;MACA,MAAMoJ,MAAI,CAAC5G,YAAY,CAAC,CAAC;MACzB;MACA,MAAM4G,MAAI,CAACnE,gBAAgB,CAACqE,wBAAwB,CAAC,CAAC;MACtD;MACA,MAAMF,MAAI,CAACnE,gBAAgB,CAACsE,2BAA2B,CAAC,CAAC;MACzDH,MAAI,CAACI,OAAO,CAAC,CAAC;IAClB,CAAC,EAAE,CAAC,EAAEN,EAAE,EAAEC,GAAG,CAAC;EAClB;EACA;AACJ;AACA;AACA;AACA;AACA;EACIM,oBAAoBA,CAACC,OAAO,EAAER,EAAE,EAAEC,GAAG,EAAE;IACnC,IAAI;MACAvI,cAAc,CAAC2F,SAAS,CAACC,sBAAsB,CAAC,IAAI,CAACvB,gBAAgB,EAAE,IAAI,CAACd,UAAU,CAACwF,oBAAoB,CAAC;MAC5G/I,cAAc,CAAC2F,SAAS,CAACI,uBAAuB,CAAC+C,OAAO,EAAE,IAAI,CAACvF,UAAU,CAACsC,WAAW,CAACC,OAAO,CAAC,OAAO,EAAEgD,OAAO,CAAC,CAAC;MAChH,IAAI,CAACzE,gBAAgB,CAACwE,oBAAoB,CAACC,OAAO,EAAER,EAAE,EAAEC,GAAG,CAAC;IAChE,CAAC,CACD,OAAOpG,KAAK,EAAE;MACV,IAAI,CAAC6D,WAAW,CAAC7D,KAAK,EAAEoG,GAAG,CAAC;IAChC;EACJ;EACA;AACJ;AACA;AACA;AACA;EACIS,sBAAsBA,CAACV,EAAE,EAAEC,GAAG,EAAE;IAAA,IAAAU,MAAA;IAC5BlJ,YAAY,CAAC0I,yBAAyB,CAACrJ,iBAAA,CAAC,aAAY;MAChD,IAAI;QACAY,cAAc,CAAC2F,SAAS,CAACC,sBAAsB,CAACqD,MAAI,CAAC5E,gBAAgB,EAAE4E,MAAI,CAAC1F,UAAU,CAACwF,oBAAoB,CAAC;QAC5G/I,cAAc,CAAC2F,SAAS,CAACC,sBAAsB,CAACqD,MAAI,CAAC5E,gBAAgB,CAAC2D,IAAI,CAACzF,KAAK,EAAE0G,MAAI,CAAC1F,UAAU,CAACuE,uBAAuB,CAAC;QAC1H,IAAImB,MAAI,CAACzE,gBAAgB,KAAK2B,SAAS,EAAE;UACrC,MAAM8C,MAAI,CAACC,2BAA2B,CAAC,CAAC;QAC5C;QACAlJ,cAAc,CAAC2F,SAAS,CAACC,sBAAsB,CAACqD,MAAI,CAACzE,gBAAgB,EAAEyE,MAAI,CAAC1F,UAAU,CAACwF,oBAAoB,CAAC;QAC5G,IAAI,CAACE,MAAI,CAAC3E,QAAQ,EAAE;UAChB2E,MAAI,CAACjD,WAAW,CAAC,IAAIjD,KAAK,CAACkG,MAAI,CAAC1F,UAAU,CAACwF,oBAAoB,CAAC,EAAER,GAAG,CAAC;QAC1E;QACA,MAAMU,MAAI,CAACE,0BAA0B,CAAC,CAAC;QACvCF,MAAI,CAACtF,cAAc,GAAG,IAAI;MAC9B,CAAC,CACD,OAAOxB,KAAK,EAAE;QACV8G,MAAI,CAACtF,cAAc,GAAG,KAAK;QAC3B,MAAMsF,MAAI,CAACrH,YAAY,CAAC,CAAC;QACzB,MAAMO,KAAK;MACf;IACJ,CAAC,EAAE,CAAC,EAAEmG,EAAE,EAAEC,GAAG,CAAC;EAClB;EACA;AACJ;AACA;AACA;AACA;EACIa,qBAAqBA,CAACd,EAAE,EAAEC,GAAG,EAAE;IAAA,IAAAc,MAAA;IAC3BtJ,YAAY,CAAC0I,yBAAyB,CAACrJ,iBAAA,CAAC,aAAY;MAChD,IAAI;QACA,IAAI,CAACiK,MAAI,CAAC1F,cAAc,EAAE;UACtB;UACA,MAAM0F,MAAI,CAACzH,YAAY,CAAC,CAAC;UACzB;QACJ;QACA;QACAyH,MAAI,CAAC1F,cAAc,GAAG,KAAK;QAC3B,MAAM,IAAI2F,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAK;UACnCH,MAAI,CAAC7E,gBAAgB,CAACpB,8BAA8B,CAACmG,OAAO,EAAEC,MAAM,CAAC;QACzE,CAAC,CAAC;MACN,CAAC,CACD,OAAOrH,KAAK,EAAE;QACV,MAAMkH,MAAI,CAACzH,YAAY,CAAC,CAAC;MAC7B;IACJ,CAAC,EAAE,CAAC,EAAE0G,EAAE,EAAEC,GAAG,CAAC;EAClB;EACAkB,UAAUA,CAAA,EAAG;IACT,OAAO,IAAI,CAAC/F,cAAc;EAC9B;EACAkF,OAAOA,CAACc,MAAM,EAAEC,OAAO,EAAEpB,GAAG,EAAE;IAAA,IAAAqB,MAAA;IAC1B7J,YAAY,CAAC0I,yBAAyB,CAACrJ,iBAAA,CAAC,aAAY;MAChD,IAAIwK,MAAI,CAACH,UAAU,IAAI,CAACG,MAAI,CAACjG,cAAc,EAAE;QACzC;MACJ;MACA,MAAMiG,MAAI,CAAChI,YAAY,CAAC,CAAC;MACzBgI,MAAI,CAAClG,cAAc,GAAG,IAAI;MAC1BkG,MAAI,CAACvD,2BAA2B,CAACwD,KAAK,CAAC,CAAC;MACxCD,MAAI,CAAC1F,6BAA6B,GAAGiC,SAAS;MAC9CyD,MAAI,CAAC9F,cAAc,GAAGqC,SAAS;MAC/ByD,MAAI,CAACE,eAAe,GAAG3D,SAAS;MAChCyD,MAAI,CAACvD,2BAA2B,GAAGF,SAAS;MAC5CyD,MAAI,CAACvF,gBAAgB,CAACuE,OAAO,CAAC,CAAC;MAC/BgB,MAAI,CAACvF,gBAAgB,GAAG8B,SAAS;IACrC,CAAC,EAAE,CAAC,EAAEwD,OAAO,EAAEpB,GAAG,CAAC;EACvB;EACA;AACJ;AACA;EACU3G,YAAYA,CAAA,EAAG;IAAA,IAAAmI,MAAA;IAAA,OAAA3K,iBAAA;MACjB,IAAI;QAAA,IAAA4K,qBAAA;QACAD,MAAI,CAACpG,cAAc,GAAG,KAAK;QAC3B,OAAAqG,qBAAA,GAAMD,MAAI,CAACvF,gBAAgB,cAAAwF,qBAAA,uBAArBA,qBAAA,CAAuBtH,cAAc,CAAC,CAAC;QAC7CqH,MAAI,CAACvF,gBAAgB,GAAG2B,SAAS;MACrC,CAAC,CACD,OAAO7E,CAAC,EAAE;QACN;MAAA;IACH;EACL;EACA;AACJ;AACA;AACA;AACA;AACA;EACU4H,2BAA2BA,CAAA,EAAG;IAAA,IAAAe,MAAA;IAAA,OAAA7K,iBAAA;MAChC,IAAI;QACA,IAAI6K,MAAI,CAACH,eAAe,KAAK3D,SAAS,EAAE;UACpC8D,MAAI,CAACH,eAAe,GAAG7J,YAAY,CAACiK,WAAW,CAACC,0BAA0B,CAAC,CAAC;QAChF;QACA;QACA,IAAIF,MAAI,CAAC5D,2BAA2B,CAACpB,WAAW,CAAChF,YAAY,CAAC2G,UAAU,CAAC3G,YAAY,CAAC2G,UAAU,CAACwD,2BAA2B,CAAC,CAAC,KACtHH,MAAI,CAACrG,kBAAkB,EAAE;UAC7BqG,MAAI,CAAC5D,2BAA2B,CAAClB,WAAW,CAAClF,YAAY,CAAC2G,UAAU,CAAC3G,YAAY,CAAC2G,UAAU,CAACwD,2BAA2B,CAAC,EAAE,EAAE,CAAC;QAClI;QACA,MAAM1J,UAAU,GAAGA,CAAA,KAAMuJ,MAAI,CAAC5F,gBAAgB;QAC9C4F,MAAI,CAACzF,gBAAgB,GAAG,IAAIpE,iCAAiC,CAAC6J,MAAI,CAAC5D,2BAA2B,EAAE4D,MAAI,CAACH,eAAe,EAAEG,MAAI,EAAEvJ,UAAU,CAAC;MAC3I,CAAC,CACD,OAAOyB,KAAK,EAAE;QACV,MAAM8H,MAAI,CAACrI,YAAY,CAAC,CAAC;QACzB,MAAMO,KAAK;MACf;IAAC;EACL;EACA;AACJ;AACA;EACIgH,0BAA0BA,CAAA,EAAG;IACzB,OAAO,IAAIG,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAK;MACpC,IAAI,CAAChF,gBAAgB,CAAC6F,+BAA+B,CAACd,OAAO,EAAEC,MAAM,CAAC;IAC1E,CAAC,CAAC;EACN;AACJ;AACA/J,OAAO,CAACE,sBAAsB,GAAGA,sBAAsB","ignoreList":[]},"metadata":{},"sourceType":"script","externalDependencies":[]}
|