@servicetitan/titan-chatbot-api 7.1.1 → 8.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +25 -0
- package/dist/api-client/__mocks__/chatbot-api-client.mock.js +21 -47
- package/dist/api-client/__mocks__/chatbot-api-client.mock.js.map +1 -1
- package/dist/api-client/base/chatbot-api-client.js +3 -4
- package/dist/api-client/base/chatbot-api-client.js.map +1 -1
- package/dist/api-client/help-center/__tests__/converter-from-models.test.js +48 -15
- package/dist/api-client/help-center/__tests__/converter-from-models.test.js.map +1 -1
- package/dist/api-client/help-center/__tests__/converter-to-models.test.js +23 -22
- package/dist/api-client/help-center/__tests__/converter-to-models.test.js.map +1 -1
- package/dist/api-client/help-center/chatbot-api-client.js +51 -52
- package/dist/api-client/help-center/chatbot-api-client.js.map +1 -1
- package/dist/api-client/help-center/converter-from-models.js +15 -12
- package/dist/api-client/help-center/converter-from-models.js.map +1 -1
- package/dist/api-client/help-center/converter-to-models.js +29 -26
- package/dist/api-client/help-center/converter-to-models.js.map +1 -1
- package/dist/api-client/help-center/index.d.ts +2 -1
- package/dist/api-client/help-center/index.d.ts.map +1 -1
- package/dist/api-client/help-center/index.js +1 -0
- package/dist/api-client/help-center/index.js.map +1 -1
- package/dist/api-client/help-center/native-client.js +1192 -2884
- package/dist/api-client/help-center/native-client.js.map +1 -1
- package/dist/api-client/index.d.ts +2 -1
- package/dist/api-client/index.d.ts.map +1 -1
- package/dist/api-client/index.js +14 -7
- package/dist/api-client/index.js.map +1 -1
- package/dist/api-client/models/__mocks__/models.mock.js +154 -124
- package/dist/api-client/models/__mocks__/models.mock.js.map +1 -1
- package/dist/api-client/models/index.d.ts +2 -1
- package/dist/api-client/models/index.d.ts.map +1 -1
- package/dist/api-client/models/index.js +8 -7
- package/dist/api-client/models/index.js.map +1 -1
- package/dist/api-client/titan-chat/__tests__/native-client.test.js +6 -6
- package/dist/api-client/titan-chat/__tests__/native-client.test.js.map +1 -1
- package/dist/api-client/titan-chat/chatbot-api-client.js +40 -35
- package/dist/api-client/titan-chat/chatbot-api-client.js.map +1 -1
- package/dist/api-client/titan-chat/index.d.ts +2 -1
- package/dist/api-client/titan-chat/index.d.ts.map +1 -1
- package/dist/api-client/titan-chat/index.js +1 -0
- package/dist/api-client/titan-chat/index.js.map +1 -1
- package/dist/api-client/titan-chat/native-client.d.ts +14 -14
- package/dist/api-client/titan-chat/native-client.d.ts.map +1 -1
- package/dist/api-client/titan-chat/native-client.js +359 -809
- package/dist/api-client/titan-chat/native-client.js.map +1 -1
- package/dist/api-client/utils/__tests__/model-utils.test.js +454 -191
- package/dist/api-client/utils/__tests__/model-utils.test.js.map +1 -1
- package/dist/api-client/utils/model-utils.d.ts.map +1 -1
- package/dist/api-client/utils/model-utils.js +28 -25
- package/dist/api-client/utils/model-utils.js.map +1 -1
- package/dist/hooks/use-customization-chatbot.js +2 -1
- package/dist/hooks/use-customization-chatbot.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -5
- package/dist/index.js.map +1 -1
- package/dist/models/chatbot-customizations.js +2 -1
- package/dist/models/chatbot-customizations.js.map +1 -1
- package/dist/models/index.d.ts +1 -1
- package/dist/models/index.d.ts.map +1 -1
- package/dist/models/index.js +2 -1
- package/dist/models/index.js.map +1 -1
- package/dist/stores/__tests__/chatbot-ui-backend.store.test.js +267 -172
- package/dist/stores/__tests__/chatbot-ui-backend.store.test.js.map +1 -1
- package/dist/stores/__tests__/chatbot-ui.store.test.js +61 -64
- package/dist/stores/__tests__/chatbot-ui.store.test.js.map +1 -1
- package/dist/stores/__tests__/filter.store.test.js +243 -116
- package/dist/stores/__tests__/filter.store.test.js.map +1 -1
- package/dist/stores/__tests__/initialize.store.test.js +9 -8
- package/dist/stores/__tests__/initialize.store.test.js.map +1 -1
- package/dist/stores/__tests__/message-feedback-guardrail.store.test.js +8 -7
- package/dist/stores/__tests__/message-feedback-guardrail.store.test.js.map +1 -1
- package/dist/stores/__tests__/message-feedback.store.test.js +34 -27
- package/dist/stores/__tests__/message-feedback.store.test.js.map +1 -1
- package/dist/stores/__tests__/session-feedback.store.test.js +9 -8
- package/dist/stores/__tests__/session-feedback.store.test.js.map +1 -1
- package/dist/stores/chatbot-ui-backend.store.js +171 -240
- package/dist/stores/chatbot-ui-backend.store.js.map +1 -1
- package/dist/stores/chatbot-ui.store.js +73 -46
- package/dist/stores/chatbot-ui.store.js.map +1 -1
- package/dist/stores/filter.store.js +298 -378
- package/dist/stores/filter.store.js.map +1 -1
- package/dist/stores/index.d.ts +5 -3
- package/dist/stores/index.d.ts.map +1 -1
- package/dist/stores/index.js +3 -2
- package/dist/stores/index.js.map +1 -1
- package/dist/stores/initialize.store.js +55 -51
- package/dist/stores/initialize.store.js.map +1 -1
- package/dist/stores/message-feedback-base.store.js +2 -1
- package/dist/stores/message-feedback-base.store.js.map +1 -1
- package/dist/stores/message-feedback-guardrail.store.js +50 -47
- package/dist/stores/message-feedback-guardrail.store.js.map +1 -1
- package/dist/stores/message-feedback.store.js +84 -89
- package/dist/stores/message-feedback.store.js.map +1 -1
- package/dist/stores/session-feedback.store.js +46 -39
- package/dist/stores/session-feedback.store.js.map +1 -1
- package/dist/utils/__tests__/axios-utils.test.js +8 -7
- package/dist/utils/__tests__/axios-utils.test.js.map +1 -1
- package/dist/utils/axios-utils.js +9 -7
- package/dist/utils/axios-utils.js.map +1 -1
- package/dist/utils/test-utils.js +5 -5
- package/dist/utils/test-utils.js.map +1 -1
- package/package.json +3 -3
- package/src/api-client/help-center/index.ts +2 -1
- package/src/api-client/help-center/native-client.ts +4 -4
- package/src/api-client/index.ts +2 -6
- package/src/api-client/models/index.ts +15 -13
- package/src/api-client/titan-chat/index.ts +2 -1
- package/src/api-client/titan-chat/native-client.ts +17 -14
- package/src/api-client/utils/model-utils.ts +4 -8
- package/src/index.ts +1 -1
- package/src/models/index.ts +1 -1
- package/src/stores/index.ts +5 -12
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -1,41 +1,44 @@
|
|
|
1
|
-
|
|
1
|
+
function _define_property(obj, key, value) {
|
|
2
|
+
if (key in obj) {
|
|
3
|
+
Object.defineProperty(obj, key, {
|
|
4
|
+
value: value,
|
|
5
|
+
enumerable: true,
|
|
6
|
+
configurable: true,
|
|
7
|
+
writable: true
|
|
8
|
+
});
|
|
9
|
+
} else {
|
|
10
|
+
obj[key] = value;
|
|
11
|
+
}
|
|
12
|
+
return obj;
|
|
13
|
+
}
|
|
14
|
+
function _ts_decorate(decorators, target, key, desc) {
|
|
2
15
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
16
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
-
else for
|
|
17
|
+
else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
18
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
-
}
|
|
7
|
-
|
|
19
|
+
}
|
|
20
|
+
function _ts_metadata(k, v) {
|
|
8
21
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
-
}
|
|
22
|
+
}
|
|
10
23
|
import { injectable, symbolToken } from '@servicetitan/react-ioc';
|
|
11
24
|
import { ChatUiEvent, ChatUiStore } from '@servicetitan/titan-chat-ui-common';
|
|
12
25
|
import { action, makeObservable } from 'mobx';
|
|
13
26
|
import { Models } from '../api-client';
|
|
14
|
-
import { FilterStore } from './filter.store';
|
|
27
|
+
import { FilterStore, IFilterStoreInitOptions } from './filter.store';
|
|
28
|
+
import { FeedbackDraft } from './message-feedback-base.store';
|
|
15
29
|
export const CHATBOT_UI_STORE_TOKEN = symbolToken('CHATBOT_UI_STORE_TOKEN');
|
|
16
|
-
export var ChatbotUiEvent
|
|
17
|
-
(function (ChatbotUiEvent) {
|
|
30
|
+
export var ChatbotUiEvent = /*#__PURE__*/ function(ChatbotUiEvent) {
|
|
18
31
|
ChatbotUiEvent["eventChatbotSessionStart"] = "eventChatbotSessionStart";
|
|
19
32
|
ChatbotUiEvent["eventChatbotSessionFeedback"] = "eventChatbotSessionFeedback";
|
|
20
33
|
ChatbotUiEvent["eventChatbotMessageFeedback"] = "eventChatbotMessageFeedback";
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
super();
|
|
25
|
-
Object.defineProperty(this, "filterStore", {
|
|
26
|
-
enumerable: true,
|
|
27
|
-
configurable: true,
|
|
28
|
-
writable: true,
|
|
29
|
-
value: new FilterStore()
|
|
30
|
-
});
|
|
31
|
-
makeObservable(this);
|
|
32
|
-
}
|
|
34
|
+
return ChatbotUiEvent;
|
|
35
|
+
}({});
|
|
36
|
+
export class ChatbotUiStore extends ChatUiStore {
|
|
33
37
|
async recover() {
|
|
34
38
|
const errorCustomization = this.customizations.error;
|
|
35
39
|
if (errorCustomization === null || errorCustomization === void 0 ? void 0 : errorCustomization.recover) {
|
|
36
40
|
await errorCustomization.recover(this.error);
|
|
37
|
-
}
|
|
38
|
-
else {
|
|
41
|
+
} else {
|
|
39
42
|
await super.recover();
|
|
40
43
|
}
|
|
41
44
|
this.triggerScroll();
|
|
@@ -46,51 +49,75 @@ let ChatbotUiStore = class ChatbotUiStore extends ChatUiStore {
|
|
|
46
49
|
return;
|
|
47
50
|
}
|
|
48
51
|
const messageModel = this.addMessage(false, messageText);
|
|
49
|
-
await this.emitAsync(ChatUiEvent.eventMessageSend, messageModel, this.filterStore.export(), ...(
|
|
52
|
+
await this.emitAsync(ChatUiEvent.eventMessageSend, messageModel, this.filterStore.export(), ...(options === null || options === void 0 ? void 0 : options.timeoutMs) !== undefined ? [
|
|
53
|
+
options.timeoutMs
|
|
54
|
+
] : []);
|
|
50
55
|
}
|
|
51
56
|
setFilters(filterOptions, options) {
|
|
52
57
|
this.filterStore.initFilters(filterOptions, options);
|
|
53
58
|
}
|
|
54
59
|
async startSession(sessionData, forceRecreate) {
|
|
55
|
-
const result = await this.emitAsync(
|
|
60
|
+
const result = await this.emitAsync("eventChatbotSessionStart", sessionData, forceRecreate);
|
|
56
61
|
return result;
|
|
57
62
|
}
|
|
58
63
|
async sendSessionFeedback(feedback) {
|
|
59
|
-
const result = await this.emitAsync(
|
|
64
|
+
const result = await this.emitAsync("eventChatbotSessionFeedback", {
|
|
65
|
+
...feedback,
|
|
66
|
+
messageId: undefined
|
|
67
|
+
});
|
|
60
68
|
return result;
|
|
61
69
|
}
|
|
62
70
|
async sendMessageFeedback(message, messageFeedback) {
|
|
63
|
-
const result = await this.emitAsync(
|
|
71
|
+
const result = await this.emitAsync("eventChatbotMessageFeedback", {
|
|
72
|
+
...messageFeedback,
|
|
73
|
+
messageId: message.id
|
|
74
|
+
});
|
|
64
75
|
return result;
|
|
65
76
|
}
|
|
66
|
-
|
|
67
|
-
|
|
77
|
+
constructor(){
|
|
78
|
+
super(), _define_property(this, "filterStore", new FilterStore());
|
|
79
|
+
makeObservable(this);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
_ts_decorate([
|
|
68
83
|
action,
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
84
|
+
_ts_metadata("design:type", Function),
|
|
85
|
+
_ts_metadata("design:paramtypes", [
|
|
86
|
+
typeof Models === "undefined" || typeof Models.IFrontendModel === "undefined" ? Object : Models.IFrontendModel,
|
|
87
|
+
typeof IFilterStoreInitOptions === "undefined" ? Object : IFilterStoreInitOptions
|
|
88
|
+
]),
|
|
89
|
+
_ts_metadata("design:returntype", void 0)
|
|
72
90
|
], ChatbotUiStore.prototype, "setFilters", null);
|
|
73
|
-
|
|
91
|
+
_ts_decorate([
|
|
74
92
|
action,
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
93
|
+
_ts_metadata("design:type", Function),
|
|
94
|
+
_ts_metadata("design:paramtypes", [
|
|
95
|
+
Object,
|
|
96
|
+
Boolean
|
|
97
|
+
]),
|
|
98
|
+
_ts_metadata("design:returntype", Promise)
|
|
78
99
|
], ChatbotUiStore.prototype, "startSession", null);
|
|
79
|
-
|
|
100
|
+
_ts_decorate([
|
|
80
101
|
action,
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
102
|
+
_ts_metadata("design:type", Function),
|
|
103
|
+
_ts_metadata("design:paramtypes", [
|
|
104
|
+
typeof FeedbackDraft === "undefined" ? Object : FeedbackDraft
|
|
105
|
+
]),
|
|
106
|
+
_ts_metadata("design:returntype", Promise)
|
|
84
107
|
], ChatbotUiStore.prototype, "sendSessionFeedback", null);
|
|
85
|
-
|
|
108
|
+
_ts_decorate([
|
|
86
109
|
action,
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
110
|
+
_ts_metadata("design:type", Function),
|
|
111
|
+
_ts_metadata("design:paramtypes", [
|
|
112
|
+
typeof Models === "undefined" || typeof Models.IBotMessageWithFeedback === "undefined" ? Object : Models.IBotMessageWithFeedback,
|
|
113
|
+
typeof FeedbackDraft === "undefined" ? Object : FeedbackDraft
|
|
114
|
+
]),
|
|
115
|
+
_ts_metadata("design:returntype", Promise)
|
|
90
116
|
], ChatbotUiStore.prototype, "sendMessageFeedback", null);
|
|
91
|
-
ChatbotUiStore =
|
|
117
|
+
ChatbotUiStore = _ts_decorate([
|
|
92
118
|
injectable(),
|
|
93
|
-
|
|
119
|
+
_ts_metadata("design:type", Function),
|
|
120
|
+
_ts_metadata("design:paramtypes", [])
|
|
94
121
|
], ChatbotUiStore);
|
|
95
|
-
|
|
122
|
+
|
|
96
123
|
//# sourceMappingURL=chatbot-ui.store.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../../src/stores/chatbot-ui.store.ts"],"sourcesContent":["import { injectable, symbolToken } from '@servicetitan/react-ioc';\nimport { ChatUiEvent, ChatUiStore, IChatUiStore } from '@servicetitan/titan-chat-ui-common';\nimport { action, makeObservable } from 'mobx';\nimport { Models } from '../api-client';\nimport { ChatbotCustomizations } from '../models';\nimport { FilterStore, IFilterStore, IFilterStoreInitOptions } from './filter.store';\nimport { FeedbackDraft } from './message-feedback-base.store';\n\nexport const CHATBOT_UI_STORE_TOKEN = symbolToken<IChatbotUiStore>('CHATBOT_UI_STORE_TOKEN');\n\nexport enum ChatbotUiEvent {\n eventChatbotSessionStart = 'eventChatbotSessionStart',\n eventChatbotSessionFeedback = 'eventChatbotSessionFeedback',\n eventChatbotMessageFeedback = 'eventChatbotMessageFeedback',\n}\n\nexport interface IChatbotUiStore extends IChatUiStore<ChatbotCustomizations> {\n filterStore: IFilterStore;\n settings?: Models.IFrontendModel;\n sendMessageText(messageText: string, options?: { timeoutMs?: number }): Promise<void>;\n setFilters(filterOptions: Models.IFrontendModel, options?: IFilterStoreInitOptions): void;\n startSession(\n sessionData?: Models.ISession['data'],\n forceRecreate?: boolean\n ): Promise<undefined | Models.Session>;\n sendSessionFeedback(feedback: FeedbackDraft): Promise<undefined | Models.ChatbotFeedbackState>;\n sendMessageFeedback(\n message: Models.IBotMessageWithFeedback,\n messageFeedback: FeedbackDraft\n ): Promise<undefined | Models.ChatbotFeedbackState>;\n}\n\n@injectable()\nexport class ChatbotUiStore extends ChatUiStore<ChatbotCustomizations> implements IChatbotUiStore {\n filterStore: IFilterStore = new FilterStore();\n\n constructor() {\n super();\n makeObservable(this);\n }\n\n override async recover() {\n const errorCustomization = this.customizations.error;\n if (errorCustomization?.recover) {\n await errorCustomization.recover(this.error);\n } else {\n await super.recover();\n }\n this.triggerScroll();\n }\n\n override async sendMessageText(messageText: string, options?: { timeoutMs?: number }) {\n await this.restartTimers();\n if (messageText.trim() === '') {\n return;\n }\n const messageModel = this.addMessage(false, messageText);\n await this.emitAsync(\n ChatUiEvent.eventMessageSend,\n messageModel,\n this.filterStore.export(),\n ...(options?.timeoutMs !== undefined ? [options.timeoutMs] : [])\n );\n }\n\n @action\n setFilters(filterOptions: Models.IFrontendModel, options?: IFilterStoreInitOptions) {\n this.filterStore.initFilters(filterOptions, options);\n }\n\n @action\n async startSession(sessionData?: Models.ISession['data'], forceRecreate?: boolean) {\n const result = await this.emitAsync<Models.Session>(\n ChatbotUiEvent.eventChatbotSessionStart,\n sessionData,\n forceRecreate\n );\n return result;\n }\n\n @action\n async sendSessionFeedback(feedback: FeedbackDraft) {\n const result = await this.emitAsync<Models.ChatbotFeedbackState>(\n ChatbotUiEvent.eventChatbotSessionFeedback,\n { ...feedback, messageId: undefined }\n );\n return result;\n }\n\n @action\n async sendMessageFeedback(\n message: Models.IBotMessageWithFeedback,\n messageFeedback: FeedbackDraft\n ) {\n const result = await this.emitAsync<Models.ChatbotFeedbackState>(\n ChatbotUiEvent.eventChatbotMessageFeedback,\n { ...messageFeedback, messageId: message.id }\n );\n return result;\n }\n}\n"],"names":["injectable","symbolToken","ChatUiEvent","ChatUiStore","action","makeObservable","Models","FilterStore","IFilterStoreInitOptions","FeedbackDraft","CHATBOT_UI_STORE_TOKEN","ChatbotUiEvent","ChatbotUiStore","recover","errorCustomization","customizations","error","triggerScroll","sendMessageText","messageText","options","restartTimers","trim","messageModel","addMessage","emitAsync","eventMessageSend","filterStore","export","timeoutMs","undefined","setFilters","filterOptions","initFilters","startSession","sessionData","forceRecreate","result","sendSessionFeedback","feedback","messageId","sendMessageFeedback","message","messageFeedback","id"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,SAASA,UAAU,EAAEC,WAAW,QAAQ,0BAA0B;AAClE,SAASC,WAAW,EAAEC,WAAW,QAAsB,qCAAqC;AAC5F,SAASC,MAAM,EAAEC,cAAc,QAAQ,OAAO;AAC9C,SAASC,MAAM,QAAQ,gBAAgB;AAEvC,SAASC,WAAW,EAAgBC,uBAAuB,QAAQ,iBAAiB;AACpF,SAASC,aAAa,QAAQ,gCAAgC;AAE9D,OAAO,MAAMC,yBAAyBT,YAA6B,0BAA0B;AAE7F,OAAO,IAAA,AAAKU,wCAAAA;;;;WAAAA;MAIX;AAmBD,OAAO,MAAMC,uBAAuBT;IAQhC,MAAeU,UAAU;QACrB,MAAMC,qBAAqB,IAAI,CAACC,cAAc,CAACC,KAAK;QACpD,IAAIF,+BAAAA,yCAAAA,mBAAoBD,OAAO,EAAE;YAC7B,MAAMC,mBAAmBD,OAAO,CAAC,IAAI,CAACG,KAAK;QAC/C,OAAO;YACH,MAAM,KAAK,CAACH;QAChB;QACA,IAAI,CAACI,aAAa;IACtB;IAEA,MAAeC,gBAAgBC,WAAmB,EAAEC,OAAgC,EAAE;QAClF,MAAM,IAAI,CAACC,aAAa;QACxB,IAAIF,YAAYG,IAAI,OAAO,IAAI;YAC3B;QACJ;QACA,MAAMC,eAAe,IAAI,CAACC,UAAU,CAAC,OAAOL;QAC5C,MAAM,IAAI,CAACM,SAAS,CAChBvB,YAAYwB,gBAAgB,EAC5BH,cACA,IAAI,CAACI,WAAW,CAACC,MAAM,OACnBR,CAAAA,oBAAAA,8BAAAA,QAASS,SAAS,MAAKC,YAAY;YAACV,QAAQS,SAAS;SAAC,GAAG,EAAE;IAEvE;IAGAE,WAAWC,aAAoC,EAAEZ,OAAiC,EAAE;QAChF,IAAI,CAACO,WAAW,CAACM,WAAW,CAACD,eAAeZ;IAChD;IAEA,MACMc,aAAaC,WAAqC,EAAEC,aAAuB,EAAE;QAC/E,MAAMC,SAAS,MAAM,IAAI,CAACZ,SAAS,6BAE/BU,aACAC;QAEJ,OAAOC;IACX;IAEA,MACMC,oBAAoBC,QAAuB,EAAE;QAC/C,MAAMF,SAAS,MAAM,IAAI,CAACZ,SAAS,gCAE/B;YAAE,GAAGc,QAAQ;YAAEC,WAAWV;QAAU;QAExC,OAAOO;IACX;IAEA,MACMI,oBACFC,OAAuC,EACvCC,eAA8B,EAChC;QACE,MAAMN,SAAS,MAAM,IAAI,CAACZ,SAAS,gCAE/B;YAAE,GAAGkB,eAAe;YAAEH,WAAWE,QAAQE,EAAE;QAAC;QAEhD,OAAOP;IACX;IA/DA,aAAc;QACV,KAAK,IAHTV,uBAAAA,eAA4B,IAAIpB;QAI5BF,eAAe,IAAI;IACvB;AA6DJ;;;;;uDAlCqC,iDAAA;;;;;;;;;;;;;;;;;;;;;;;;;;uDAyBb,0DAAA"}
|