fmode-ng 0.0.41 → 0.0.42
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/LICENSE.md +8 -0
- package/esm2022/fmode-ng.mjs +10 -5
- package/esm2022/lib/aigc/agent/agent.prompt.mjs +10 -122
- package/esm2022/lib/aigc/agent/index.mjs +10 -2
- package/esm2022/lib/aigc/avatar/avatar.module.mjs +10 -45
- package/esm2022/lib/aigc/avatar/comp-avatar-particle/avatar.role.mjs +10 -2
- package/esm2022/lib/aigc/avatar/comp-avatar-particle/comp-avatar-particle.component.mjs +10 -315
- package/esm2022/lib/aigc/avatar/comp-avatar-particle/index.mjs +10 -3
- package/esm2022/lib/aigc/avatar/comp-avatar-particle/role-points.class.mjs +10 -57
- package/esm2022/lib/aigc/avatar/comp-avatar-role-image/comp-avatar-role-image.component.mjs +10 -97
- package/esm2022/lib/aigc/avatar/comp-avatar-role-video/comp-avatar-role-video.component.mjs +10 -104
- package/esm2022/lib/aigc/avatar/comp-avatar-talk/comp-avatar-talk.component.mjs +10 -111
- package/esm2022/lib/aigc/avatar/index.mjs +10 -8
- package/esm2022/lib/aigc/avatar/interface-avatar-role.mjs +10 -2
- package/esm2022/lib/aigc/avatar/modal-chat-voice-input/modal-chat-voice-input.component.mjs +8 -166
- package/esm2022/lib/aigc/chat/chat-header-area/comp-header-area.component.mjs +10 -36
- package/esm2022/lib/aigc/chat/chat-header-area/index.mjs +10 -2
- package/esm2022/lib/aigc/chat/chat-list/chat-list.component.mjs +8 -141
- package/esm2022/lib/aigc/chat/chat-list/index.mjs +10 -2
- package/esm2022/lib/aigc/chat/chat-message-area/comp-message-area.component.mjs +10 -40
- package/esm2022/lib/aigc/chat/chat-message-area/index.mjs +10 -2
- package/esm2022/lib/aigc/chat/chat-message-card/comp-message-card.component.mjs +10 -92
- package/esm2022/lib/aigc/chat/chat-message-card/index.mjs +10 -2
- package/esm2022/lib/aigc/chat/chat-modal-input/index.mjs +10 -2
- package/esm2022/lib/aigc/chat/chat-modal-input/modal-audio-message/modal-audio-message.component.mjs +8 -207
- package/esm2022/lib/aigc/chat/chat-modal-input/modal-input.component.mjs +10 -236
- package/esm2022/lib/aigc/chat/chat-panel/chat-panel.component.mjs +10 -137
- package/esm2022/lib/aigc/chat/comp-role-prompt/comp-role-prompt.component.mjs +10 -69
- package/esm2022/lib/aigc/chat/comp-role-prompt/index.mjs +10 -2
- package/esm2022/lib/aigc/chat/index.mjs +10 -8
- package/esm2022/lib/aigc/comp-markdown-preview/clipboard.service.mjs +10 -82
- package/esm2022/lib/aigc/comp-markdown-preview/markdown-parse.mjs +8 -269
- package/esm2022/lib/aigc/comp-markdown-preview/markdown-preview.component.mjs +10 -51
- package/esm2022/lib/aigc/comp-markdown-preview/markdown-preview.module.mjs +10 -24
- package/esm2022/lib/aigc/comp-markdown-preview/plugins/md-mathjax/index.mjs +10 -94
- package/esm2022/lib/aigc/index.mjs +10 -13
- package/esm2022/lib/aigc/service-fmai/fmai.service.mjs +10 -21
- package/esm2022/lib/aigc/service-fmai/service-chat/chat-class.mjs +8 -736
- package/esm2022/lib/aigc/service-fmai/service-chat/chat.service.mjs +8 -181
- package/esm2022/lib/aigc/service-fmai/service-chat/index.mjs +10 -7
- package/esm2022/lib/aigc/service-fmai/service-chat/mask-list.mjs +9 -194
- package/esm2022/lib/aigc/service-fmai/service-chat/pipes/chat-content.pipe.mjs +10 -27
- package/esm2022/lib/aigc/service-fmai/service-chat/pipes/hidexml.pipe.mjs +10 -27
- package/esm2022/lib/aigc/service-fmai/service-chat/utilnow.pipe.mjs +10 -68
- package/esm2022/lib/aigc/service-fmai/service-imagine/imagine.service.mjs +8 -229
- package/esm2022/lib/aigc/service-fmai/service-imagine/index.mjs +10 -2
- package/esm2022/lib/aigc/voice/audio.player.mjs +10 -52
- package/esm2022/lib/aigc/voice/class-asr.mjs +8 -79
- package/esm2022/lib/aigc/voice/fmode-voice.service.mjs +8 -501
- package/esm2022/lib/aigc/voice/index.mjs +10 -3
- package/esm2022/lib/aigc/voice/lib/pcm2wav.mjs +10 -38
- package/esm2022/lib/aigc/voice/lib/resample.mjs +10 -34
- package/esm2022/lib/aigc/voice/stream.player.mjs +10 -0
- package/esm2022/lib/aigc/voice/tts/fmode-tts-class.mjs +8 -233
- package/esm2022/lib/aigc/voice/tts/index.mjs +10 -2
- package/esm2022/lib/map/comp-poi-picker/comp-poi-picker.component.mjs +10 -190
- package/esm2022/lib/map/comp-poi-picker/comp-poi-picker.module.mjs +10 -33
- package/esm2022/lib/map/index.mjs +10 -4
- package/esm2022/lib/map/map.module.mjs +10 -61
- package/esm2022/lib/map/page-loca-scatter/page-loca-scatter.component.mjs +10 -110
- package/esm2022/lib/map/page-map.start/page-map.start.component.mjs +8 -98
- package/esm2022/lib/map/page-plan-route/page-plan-route.component.mjs +8 -100
- package/esm2022/lib/nova-cloud/index.mjs +10 -2
- package/esm2022/lib/nova-cloud/nova-cloud.service.mjs +10 -148
- package/esm2022/lib/platform/cross.service.mjs +10 -63
- package/esm2022/lib/platform/index.mjs +10 -2
- package/esm2022/lib/social/index.mjs +10 -2
- package/esm2022/lib/social/wechat/wechat-jssdk.service.mjs +8 -236
- package/esm2022/lib/storage/comp-hwobs-manager/hwobs-manager.component.mjs +10 -59
- package/esm2022/lib/storage/index.mjs +10 -5
- package/esm2022/lib/storage/service-hwobs/hwobs.service.mjs +8 -130
- package/esm2022/lib/storage/service-upload/index.mjs +10 -2
- package/esm2022/lib/storage/service-upload/nova-upload.service.mjs +8 -462
- package/esm2022/lib/storage/service-upload/util-file-md5.mjs +10 -28
- package/esm2022/lib/storage/storage.module.mjs +10 -41
- package/esm2022/lib/user/account/account.service.mjs +10 -221
- package/esm2022/lib/user/captcha/captcha.component.mjs +10 -135
- package/esm2022/lib/user/comp-user-avatar/comp-user-avatar.component.mjs +10 -62
- package/esm2022/lib/user/index.mjs +10 -17
- package/esm2022/lib/user/login/auth.guard.mjs +10 -28
- package/esm2022/lib/user/login/auth.service.mjs +8 -373
- package/esm2022/lib/user/login/login.component.mjs +10 -913
- package/esm2022/lib/user/modal-user-login/modal-user-login.component.mjs +10 -273
- package/esm2022/lib/user/profile/auth-profile.guard.mjs +10 -27
- package/esm2022/lib/user/profile/auth-profile.service.mjs +10 -122
- package/esm2022/lib/user/profile/profile-bind/profile-bind.component.mjs +10 -115
- package/esm2022/lib/user/profile/profile.module.mjs +10 -57
- package/esm2022/lib/user/staff/index.mjs +10 -4
- package/esm2022/lib/user/staff/staff.guard.mjs +10 -26
- package/esm2022/lib/user/staff/staff.module.mjs +10 -18
- package/esm2022/lib/user/staff/staff.service.mjs +10 -85
- package/esm2022/lib/user/user-name.pipe.mjs +10 -29
- package/esm2022/lib/user/user.module.mjs +10 -106
- package/esm2022/lib/video/fm-video/fm-video.component.mjs +10 -67
- package/esm2022/lib/video/index.mjs +10 -2
- package/esm2022/public-api.mjs +10 -13
- package/fesm2022/fmode-ng.mjs +7 -8895
- package/fesm2022/fmode-ng.mjs.map +1 -1
- package/lib/aigc/voice/stream.player.d.ts +10 -0
- package/lib/aigc/voice/tts/fmode-tts-class.d.ts +2 -2
- package/package.json +1 -1
|
@@ -1,68 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
};
|
|
12
|
-
}
|
|
13
|
-
transform(value, args) {
|
|
14
|
-
let now = new Date();
|
|
15
|
-
let time = now.getTime() - value.getTime();
|
|
16
|
-
let seconds = time / 1000;
|
|
17
|
-
if (seconds <= 60) {
|
|
18
|
-
return this.handleArgs(seconds.toFixed(0), "秒钟前", args);
|
|
19
|
-
}
|
|
20
|
-
let minutes = seconds / 60;
|
|
21
|
-
if (minutes < 60) {
|
|
22
|
-
return this.handleArgs(minutes.toFixed(0), "分钟前", args);
|
|
23
|
-
}
|
|
24
|
-
let hours = minutes / 60;
|
|
25
|
-
if (hours < 24) {
|
|
26
|
-
return this.handleArgs(hours.toFixed(0), "小时前", args);
|
|
27
|
-
}
|
|
28
|
-
let days = hours / 24;
|
|
29
|
-
if (days < 7) {
|
|
30
|
-
return this.handleArgs(days.toFixed(0), "天前", args);
|
|
31
|
-
}
|
|
32
|
-
let dateStr = `${value?.getFullYear()}-${value?.getMonth() + 1}-${value?.getDate()}`;
|
|
33
|
-
return dateStr;
|
|
34
|
-
}
|
|
35
|
-
handleArgs(value, unit, args) {
|
|
36
|
-
if (args == "en") {
|
|
37
|
-
unit = this.enLocale[unit];
|
|
38
|
-
}
|
|
39
|
-
if (args?.constructor?.name == "TranslateService") {
|
|
40
|
-
console.log(unit);
|
|
41
|
-
if (args?.getDefaultLang() == "en") {
|
|
42
|
-
unit = this.enLocale[unit];
|
|
43
|
-
}
|
|
44
|
-
// unit = await new Promise(resolve=>{
|
|
45
|
-
// args?.get(unit).subscribe(data=>{
|
|
46
|
-
// console.log(data)
|
|
47
|
-
// resolve(data)
|
|
48
|
-
// })
|
|
49
|
-
// })
|
|
50
|
-
}
|
|
51
|
-
if (args == "json") {
|
|
52
|
-
return { unit, value };
|
|
53
|
-
}
|
|
54
|
-
else {
|
|
55
|
-
return value + unit;
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: UtilnowPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
59
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: UtilnowPipe, isStandalone: true, name: "utilnow" }); }
|
|
60
|
-
}
|
|
61
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: UtilnowPipe, decorators: [{
|
|
62
|
-
type: Pipe,
|
|
63
|
-
args: [{
|
|
64
|
-
name: 'utilnow',
|
|
65
|
-
standalone: true
|
|
66
|
-
}]
|
|
67
|
-
}] });
|
|
68
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbG5vdy5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZm1vZGUtbmcvc3JjL2xpYi9haWdjL3NlcnZpY2UtZm1haS9zZXJ2aWNlLWNoYXQvdXRpbG5vdy5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDOztBQU1wRCxNQUFNLE9BQU8sV0FBVztJQUp4QjtRQThCSyxPQUFPO1FBQ1YsYUFBUSxHQUFPO1lBQ1gsS0FBSyxFQUFDLGNBQWM7WUFDcEIsS0FBSyxFQUFDLGNBQWM7WUFDcEIsS0FBSyxFQUFDLFlBQVk7WUFDbEIsSUFBSSxFQUFDLFdBQVc7U0FDbkIsQ0FBQTtLQXlCRjtJQXZEQyxTQUFTLENBQUMsS0FBVyxFQUFFLElBQVU7UUFDL0IsSUFBSSxHQUFHLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUNyQixJQUFJLElBQUksR0FBRyxHQUFHLENBQUMsT0FBTyxFQUFFLEdBQUcsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzNDLElBQUksT0FBTyxHQUFHLElBQUksR0FBRyxJQUFJLENBQUE7UUFDekIsSUFBRyxPQUFPLElBQUUsRUFBRSxFQUFDLENBQUM7WUFDZCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBQyxLQUFLLEVBQUMsSUFBSSxDQUFDLENBQUE7UUFDdkQsQ0FBQztRQUNELElBQUksT0FBTyxHQUFHLE9BQU8sR0FBRyxFQUFFLENBQUE7UUFDMUIsSUFBRyxPQUFPLEdBQUcsRUFBRSxFQUFDLENBQUM7WUFDZixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBQyxLQUFLLEVBQUMsSUFBSSxDQUFDLENBQUE7UUFDdkQsQ0FBQztRQUNELElBQUksS0FBSyxHQUFHLE9BQU8sR0FBRyxFQUFFLENBQUE7UUFDeEIsSUFBRyxLQUFLLEdBQUcsRUFBRSxFQUFDLENBQUM7WUFDYixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBQyxLQUFLLEVBQUMsSUFBSSxDQUFDLENBQUE7UUFDckQsQ0FBQztRQUNELElBQUksSUFBSSxHQUFHLEtBQUssR0FBRyxFQUFFLENBQUE7UUFDckIsSUFBRyxJQUFJLEdBQUcsQ0FBQyxFQUFDLENBQUM7WUFDWCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBQyxJQUFJLEVBQUMsSUFBSSxDQUFDLENBQUE7UUFDbkQsQ0FBQztRQUVELElBQUksT0FBTyxHQUFHLEdBQUcsS0FBSyxFQUFFLFdBQVcsRUFBRSxJQUFJLEtBQUssRUFBRSxRQUFRLEVBQUUsR0FBQyxDQUFDLElBQUksS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUE7UUFDbEYsT0FBTyxPQUFPLENBQUE7SUFDaEIsQ0FBQztJQVNELFVBQVUsQ0FBQyxLQUFTLEVBQUMsSUFBUSxFQUFDLElBQVE7UUFDcEMsSUFBRyxJQUFJLElBQUUsSUFBSSxFQUFDLENBQUM7WUFDYixJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUM1QixDQUFDO1FBQ0QsSUFBRyxJQUFJLEVBQUUsV0FBVyxFQUFFLElBQUksSUFBSSxrQkFBa0IsRUFBQyxDQUFDO1lBQ2hELE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUE7WUFDakIsSUFBRyxJQUFJLEVBQUUsY0FBYyxFQUFFLElBQUUsSUFBSSxFQUFDLENBQUM7Z0JBQy9CLElBQUksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFBO1lBQzVCLENBQUM7WUFDRCxzQ0FBc0M7WUFDdEMsc0NBQXNDO1lBQ3RDLG9CQUFvQjtZQUNwQixrQkFBa0I7WUFDbEIsT0FBTztZQUNQLEtBQUs7UUFDUCxDQUFDO1FBQ0QsSUFBRyxJQUFJLElBQUUsTUFBTSxFQUFDLENBQUM7WUFDZixPQUFPLEVBQUMsSUFBSSxFQUFDLEtBQUssRUFBQyxDQUFBO1FBQ3JCLENBQUM7YUFBSSxDQUFDO1lBQ0osT0FBTyxLQUFLLEdBQUMsSUFBSSxDQUFBO1FBQ25CLENBQUM7SUFFSCxDQUFDOytHQXZEVSxXQUFXOzZHQUFYLFdBQVc7OzRGQUFYLFdBQVc7a0JBSnZCLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLFNBQVM7b0JBQ2YsVUFBVSxFQUFFLElBQUk7aUJBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AUGlwZSh7XG4gIG5hbWU6ICd1dGlsbm93JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBVdGlsbm93UGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuXG4gIHRyYW5zZm9ybSh2YWx1ZTogRGF0ZSwgYXJncz86IGFueSk6IGFueSB7XG4gICAgbGV0IG5vdyA9IG5ldyBEYXRlKCk7XG4gICAgbGV0IHRpbWUgPSBub3cuZ2V0VGltZSgpIC0gdmFsdWUuZ2V0VGltZSgpO1xuICAgIGxldCBzZWNvbmRzID0gdGltZSAvIDEwMDBcbiAgICBpZihzZWNvbmRzPD02MCl7XG4gICAgICByZXR1cm4gdGhpcy5oYW5kbGVBcmdzKHNlY29uZHMudG9GaXhlZCgwKSxcIuenkumSn+WJjVwiLGFyZ3MpXG4gICAgfVxuICAgIGxldCBtaW51dGVzID0gc2Vjb25kcyAvIDYwXG4gICAgaWYobWludXRlcyA8IDYwKXtcbiAgICAgIHJldHVybiB0aGlzLmhhbmRsZUFyZ3MobWludXRlcy50b0ZpeGVkKDApLFwi5YiG6ZKf5YmNXCIsYXJncylcbiAgICB9XG4gICAgbGV0IGhvdXJzID0gbWludXRlcyAvIDYwXG4gICAgaWYoaG91cnMgPCAyNCl7XG4gICAgICByZXR1cm4gdGhpcy5oYW5kbGVBcmdzKGhvdXJzLnRvRml4ZWQoMCksXCLlsI/ml7bliY1cIixhcmdzKVxuICAgIH1cbiAgICBsZXQgZGF5cyA9IGhvdXJzIC8gMjRcbiAgICBpZihkYXlzIDwgNyl7XG4gICAgICByZXR1cm4gdGhpcy5oYW5kbGVBcmdzKGRheXMudG9GaXhlZCgwKSxcIuWkqeWJjVwiLGFyZ3MpXG4gICAgfVxuXG4gICAgbGV0IGRhdGVTdHIgPSBgJHt2YWx1ZT8uZ2V0RnVsbFllYXIoKX0tJHt2YWx1ZT8uZ2V0TW9udGgoKSsxfS0ke3ZhbHVlPy5nZXREYXRlKCl9YFxuICAgIHJldHVybiBkYXRlU3RyXG4gIH1cblxuICAgICAvLyDml7bpl7TmoIforrBcbiAgZW5Mb2NhbGU6YW55ID0ge1xuICAgICAgXCLnp5Lpkp/liY1cIjpcIiBzZWNvbmRzIGFnb1wiLFxuICAgICAgXCLliIbpkp/liY1cIjpcIiBtaW51dGVzIGFnb1wiLFxuICAgICAgXCLlsI/ml7bliY1cIjpcIiBob3VycyBhZ29cIixcbiAgICAgIFwi5aSp5YmNXCI6XCIgZGF5cyBhZ29cIixcbiAgfVxuICBoYW5kbGVBcmdzKHZhbHVlOmFueSx1bml0OmFueSxhcmdzOmFueSk6YW55e1xuICAgIGlmKGFyZ3M9PVwiZW5cIil7XG4gICAgICB1bml0ID0gdGhpcy5lbkxvY2FsZVt1bml0XVxuICAgIH1cbiAgICBpZihhcmdzPy5jb25zdHJ1Y3Rvcj8ubmFtZSA9PSBcIlRyYW5zbGF0ZVNlcnZpY2VcIil7XG4gICAgICBjb25zb2xlLmxvZyh1bml0KVxuICAgICAgaWYoYXJncz8uZ2V0RGVmYXVsdExhbmcoKT09XCJlblwiKXtcbiAgICAgICAgdW5pdCA9IHRoaXMuZW5Mb2NhbGVbdW5pdF1cbiAgICAgIH1cbiAgICAgIC8vIHVuaXQgPSBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlPT57XG4gICAgICAvLyAgIGFyZ3M/LmdldCh1bml0KS5zdWJzY3JpYmUoZGF0YT0+e1xuICAgICAgLy8gY29uc29sZS5sb2coZGF0YSlcbiAgICAgIC8vIHJlc29sdmUoZGF0YSkgIFxuICAgICAgLy8gICB9KVxuICAgICAgLy8gfSlcbiAgICB9XG4gICAgaWYoYXJncz09XCJqc29uXCIpe1xuICAgICAgcmV0dXJuIHt1bml0LHZhbHVlfVxuICAgIH1lbHNle1xuICAgICAgcmV0dXJuIHZhbHVlK3VuaXRcbiAgICB9XG5cbiAgfVxuXG59XG4iXX0=
|
|
1
|
+
|
|
2
|
+
/**
|
|
3
|
+
* @copyright © 未来飞马 © 未来全栈 www.fmode.cn
|
|
4
|
+
* 版权所有 © 未来飞马 © 江西脑控科技有限公司 Copyright © Fmode Technology Co., Ltd.
|
|
5
|
+
* 保留所有权利 All Rights Reserved.
|
|
6
|
+
* /home/ryan/workspace/nova/nova-admin/dist/fmode-ng/esm2022/lib/aigc/service-fmai/service-chat/utilnow.pipe.mjs
|
|
7
|
+
*/
|
|
8
|
+
import{Pipe}from"@angular/core";import*as i0 from"@angular/core";export class UtilnowPipe{constructor(){this.enLocale={"秒钟前":" seconds ago","分钟前":" minutes ago","小时前":" hours ago","天前":" days ago"}}transform(e,t){let i=((new Date).getTime()-e.getTime())/1e3;if(i<=60)return this.handleArgs(i.toFixed(0),"秒钟前",t);let n=i/60;if(n<60)return this.handleArgs(n.toFixed(0),"分钟前",t);let r=n/60;if(r<24)return this.handleArgs(r.toFixed(0),"小时前",t);let a=r/24;return a<7?this.handleArgs(a.toFixed(0),"天前",t):`${e?.getFullYear()}-${e?.getMonth()+1}-${e?.getDate()}`}handleArgs(e,t,i){return"en"==i&&(t=this.enLocale[t]),"TranslateService"==i?.constructor?.name&&(console.log(t),"en"==i?.getDefaultLang()&&(t=this.enLocale[t])),"json"==i?{unit:t,value:e}:e+t}static{this.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"17.3.12",ngImport:i0,type:UtilnowPipe,deps:[],target:i0.ɵɵFactoryTarget.Pipe})}static{this.ɵpipe=i0.ɵɵngDeclarePipe({minVersion:"14.0.0",version:"17.3.12",ngImport:i0,type:UtilnowPipe,isStandalone:!0,name:"utilnow"})}}i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"17.3.12",ngImport:i0,type:UtilnowPipe,decorators:[{type:Pipe,args:[{name:"utilnow",standalone:!0}]}]});
|
|
9
|
+
var MODULE_PATH_NEED = `6K+l5paH5Lu25piv5pys6aG555uu55qE5LiA6YOo5YiGIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBDb21wb25lbnRzIGluIEZtb2RlIEluYy4KICAgIOeJiOadg+aJgOaciSDCqSDmnKrmnaXpo57pqawgwqkg5rGf6KW/6ISR5o6n56eR5oqA5pyJ6ZmQ5YWs5Y+4IENvcHlyaWdodCDCqSBGbW9kZSBUZWNobm9sb2d5IENvLiwgTHRkLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICDkuKXnpoHlnKjmnKrnu4/mjojmnYPnmoTmg4XlhrXkuIvvvIzpgJrov4fku7vkvZXlqpLku4vlpI3liLbmraTmlofku7YgVW5hdXRob3JpemVkIGNvcHlpbmcgb2YgdGhpcyBmaWxlLCB2aWEgYW55IG1lZGl1bSBpcyBzdHJpY3RseSBwcm9oaWJpdGVkCiAgICDor6Xmlofku7bmmK/kuJPmnInnmoTmnLrlr4bmlofku7YgUHJvcHJpZXRhcnkgYW5kIGNvbmZpZGVudGlhbAogICAKICAgIENvcHlyaWdodCAyMDIxLW5vdyBGbW9kZSBJbmMuIHN1cHBvcnRAZm1vZGUuY24uIDE4NjA3MDA3MDczLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCByaWdodHMgcmVzZXJ2ZWQuCgogICAgUEFUSDovaG9tZS9yeWFuL3dvcmtzcGFjZS9ub3ZhL25vdmEtYWRtaW4vZGlzdC9mbW9kZS1uZy9lc20yMDIyL2xpYi9haWdjL3NlcnZpY2UtZm1haS9zZXJ2aWNlLWNoYXQvdXRpbG5vdy5waXBlLm1qcw==`
|
|
10
|
+
|
|
@@ -1,231 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
import { Injectable } from '@angular/core';
|
|
3
|
-
import { NovaCloudService } from '../../../nova-cloud/nova-cloud.service';
|
|
4
|
-
import Parse from "parse";
|
|
5
|
-
import { NovaUploadService } from '../../../storage/service-upload/nova-upload.service';
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
import * as i1 from "@angular/common/http";
|
|
8
|
-
import * as i2 from "../../../nova-cloud/nova-cloud.service";
|
|
9
|
-
import * as i3 from "../../../storage/service-upload/nova-upload.service";
|
|
10
|
-
/**
|
|
11
|
-
* ImagineService AI绘画服务
|
|
12
|
-
*/
|
|
13
|
-
export class ImagineService {
|
|
1
|
+
|
|
14
2
|
/**
|
|
15
|
-
*
|
|
3
|
+
* @copyright © 未来飞马 © 未来全栈 www.fmode.cn
|
|
4
|
+
* 版权所有 © 未来飞马 © 江西脑控科技有限公司 Copyright © Fmode Technology Co., Ltd.
|
|
5
|
+
* 保留所有权利 All Rights Reserved.
|
|
6
|
+
* /home/ryan/workspace/nova/nova-admin/dist/fmode-ng/esm2022/lib/aigc/service-fmai/service-imagine/imagine.service.mjs
|
|
16
7
|
*/
|
|
17
|
-
constructor(http, ncloud, uploadServ) {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
this.uploadServ = uploadServ;
|
|
21
|
-
this.taskDetailMap = {};
|
|
22
|
-
/**
|
|
23
|
-
* 我的绘画作品共享方法
|
|
24
|
-
*/
|
|
25
|
-
this.newWorkList = [];
|
|
26
|
-
this.myWorkList = [];
|
|
27
|
-
}
|
|
28
|
-
/**
|
|
29
|
-
* DALL-E-3 图片生成函数
|
|
30
|
-
* @description
|
|
31
|
-
* @see
|
|
32
|
-
* https://p4.hosteagle.club/docs/api-reference?__cpo=aHR0cHM6Ly9wbGF0Zm9ybS5vcGVuYWkuY29t
|
|
33
|
-
* @param {DalleOptions} options
|
|
34
|
-
* @param {string} options.prompt 1000 characters for dall-e-2 and 4000 characters for dall-e-3.
|
|
35
|
-
* @param {string} options.model dall-e-3 dall-e-2
|
|
36
|
-
* @param {string} options.quality dall-e-3 only hd means more details & consistency
|
|
37
|
-
* @param {string} options.response_format url | b64_json
|
|
38
|
-
* @param {string} options.size 1024x1024, 1792x1024, or 1024x1792 for dall-e-3
|
|
39
|
-
* @param {string} options.style vivid | natural dall-e-3 only
|
|
40
|
-
*/
|
|
41
|
-
async drawDalle(options) {
|
|
42
|
-
options.size = options?.size || "1024x1024";
|
|
43
|
-
options.style = options?.style || "natural";
|
|
44
|
-
options.quality = options?.quality || null;
|
|
45
|
-
let reqDalle = {
|
|
46
|
-
"model": "dall-e-3",
|
|
47
|
-
"prompt": options.prompt,
|
|
48
|
-
"n": 1,
|
|
49
|
-
"quality": options.quality,
|
|
50
|
-
// response_format:"b64_json",
|
|
51
|
-
response_format: "url",
|
|
52
|
-
"size": options.size,
|
|
53
|
-
"style": options.style
|
|
54
|
-
};
|
|
55
|
-
if (options.prompt?.length > 3000) {
|
|
56
|
-
throw "prompt maximum < 4000 characters";
|
|
57
|
-
}
|
|
58
|
-
let data = await this.ncloud.apigTest("aigc/gpt/v1/images/generations", reqDalle);
|
|
59
|
-
console.log(data);
|
|
60
|
-
if (data?.id) {
|
|
61
|
-
let query = new Parse.Query("ImagineWork");
|
|
62
|
-
query.get(data?.id);
|
|
63
|
-
let work = await query.first();
|
|
64
|
-
console.log(work);
|
|
65
|
-
if (work?.id)
|
|
66
|
-
this.newWorkList.unshift(work);
|
|
67
|
-
}
|
|
68
|
-
return data;
|
|
69
|
-
/**
|
|
70
|
-
* @param json.data[0].b64_json 图片二进制的b64格式
|
|
71
|
-
Response {
|
|
72
|
-
"created": 1589478378,
|
|
73
|
-
"data": [
|
|
74
|
-
{
|
|
75
|
-
"url": "https://..."
|
|
76
|
-
},
|
|
77
|
-
{
|
|
78
|
-
"url": "https://..."
|
|
79
|
-
}
|
|
80
|
-
]
|
|
81
|
-
}
|
|
82
|
-
*/
|
|
83
|
-
}
|
|
84
|
-
priceDalle(options) {
|
|
85
|
-
let priceList = [
|
|
86
|
-
{ "model": "dall-e-3", quality: null, "size": "1024x1024", "credit": 2 * 10 * 8 * 0.04 },
|
|
87
|
-
{ "model": "dall-e-3", quality: null, "size": "1024x1792", "credit": 2 * 10 * 8 * 0.08 },
|
|
88
|
-
{ "model": "dall-e-3", quality: null, "size": "1792x1024", "credit": 2 * 10 * 8 * 0.08 },
|
|
89
|
-
{ "model": "dall-e-3", quality: "hd", "size": "1024x1024", "credit": 2 * 10 * 8 * 0.08 },
|
|
90
|
-
{ "model": "dall-e-3", quality: "hd", "size": "1024x1792", "credit": 2 * 10 * 8 * 0.12 },
|
|
91
|
-
{ "model": "dall-e-3", quality: "hd", "size": "1792x1024", "credit": 2 * 10 * 8 * 0.12 },
|
|
92
|
-
{ "model": "dall-e-2", quality: null, "size": "1024x1024", "credit": 2 * 10 * 8 * 0.02 },
|
|
93
|
-
{ "model": "dall-e-2", quality: null, "size": "512x512", "credit": 2 * 10 * 8 * 0.018 },
|
|
94
|
-
{ "model": "dall-e-2", quality: null, "size": "256x256", "credit": 2 * 10 * 8 * 0.016 }
|
|
95
|
-
];
|
|
96
|
-
let price = priceList.find(item => item.model == options.model && item.quality == options.quality && item.size == options.size);
|
|
97
|
-
let credit = price?.credit || 2 * 10 * 8 * 0.12;
|
|
98
|
-
return credit;
|
|
99
|
-
}
|
|
100
|
-
priceStableDiffusion(options) {
|
|
101
|
-
let size = options.width * options.height;
|
|
102
|
-
let num = 0.3; //飞码能量换算常数
|
|
103
|
-
let credit = size * 0.000000763 * options.steps
|
|
104
|
-
+ size * 0.00002278 * (options?.upscale || 0)
|
|
105
|
-
+ (options?.hrSteps || 0) * size * (options?.hrScale || 0) * (options?.hrScale || 0) * 0.000000763
|
|
106
|
-
+ (options?.faceFix ? 2 : 0)
|
|
107
|
-
+ (options?.imgOptions?.removeBackground ? 2 : 0)
|
|
108
|
-
+ (options?.imgOptions?.redrawBackground ? 2 : 0)
|
|
109
|
-
+ (options?.imgOptions?.facePreservation ? 2 : 0)
|
|
110
|
-
+ (options?.imgOptions?.genderDetect ? 1 : 0)
|
|
111
|
-
+ (options?.controlnet?.units?.length || 0) * 2;
|
|
112
|
-
// console.log(credit);
|
|
113
|
-
credit = credit * num * options.batchSize;
|
|
114
|
-
// console.log(credit);
|
|
115
|
-
return credit;
|
|
116
|
-
}
|
|
117
|
-
b64DataToBase64Image(b64_json) {
|
|
118
|
-
let data = atob(b64_json);
|
|
119
|
-
let blob = new Blob([data], { type: 'image/webp' });
|
|
120
|
-
new Promise(resolve => {
|
|
121
|
-
// 使用 FileReader 将 Blob 对象转换为 base64 字符串
|
|
122
|
-
let reader = new FileReader();
|
|
123
|
-
reader.onloadend = function () {
|
|
124
|
-
let base64data = reader.result;
|
|
125
|
-
console.log(base64data);
|
|
126
|
-
resolve(base64data);
|
|
127
|
-
};
|
|
128
|
-
reader.readAsDataURL(blob);
|
|
129
|
-
});
|
|
130
|
-
}
|
|
131
|
-
/**
|
|
132
|
-
* Huashi6专用绘图函数
|
|
133
|
-
* @param reqBody
|
|
134
|
-
* @see
|
|
135
|
-
* 接口reqBody参数,参考:https://www.showdoc.com.cn/2307900595645609/10319675987319598
|
|
136
|
-
* 密码:123456
|
|
137
|
-
* @returns
|
|
138
|
-
*/
|
|
139
|
-
async draw(reqBody) {
|
|
140
|
-
let data = await this.ncloud.apig("aigc/sdapi/v1/draw", reqBody);
|
|
141
|
-
// 正常生成taskId后,获取数据添加到列表中
|
|
142
|
-
let taskId = data?.paintingSign;
|
|
143
|
-
if (taskId) {
|
|
144
|
-
setTimeout(async () => {
|
|
145
|
-
let query = new Parse.Query("ImagineWork");
|
|
146
|
-
query.equalTo("taskId", taskId);
|
|
147
|
-
let work = await query.first();
|
|
148
|
-
console.log(work);
|
|
149
|
-
if (work?.id)
|
|
150
|
-
this.newWorkList.unshift(work);
|
|
151
|
-
}, 1000);
|
|
152
|
-
}
|
|
153
|
-
return data;
|
|
154
|
-
}
|
|
155
|
-
/**
|
|
156
|
-
* 已完成的直接加载,未完成的再接口更新
|
|
157
|
-
* @param taskId
|
|
158
|
-
* @returns
|
|
159
|
-
*/
|
|
160
|
-
async taskDetail(taskId) {
|
|
161
|
-
let data = await this.ncloud.apig("aigc/sdapi/v1/task/detail", { taskId: taskId });
|
|
162
|
-
console.log(data);
|
|
163
|
-
this.taskDetailMap[taskId] = data;
|
|
164
|
-
return data;
|
|
165
|
-
}
|
|
166
|
-
getMyWorkQuery() {
|
|
167
|
-
let user = Parse.User.current();
|
|
168
|
-
if (!user?.id)
|
|
169
|
-
return;
|
|
170
|
-
let query = this.getWorkQuery();
|
|
171
|
-
query.include("model", "module", "user");
|
|
172
|
-
query.equalTo("user", user.toPointer());
|
|
173
|
-
return query;
|
|
174
|
-
}
|
|
175
|
-
getWorkQuery() {
|
|
176
|
-
// 获取 1 分钟前的时间
|
|
177
|
-
let oneMinutesAgo = new Date(new Date().getTime() - 1 * 60 * 1000);
|
|
178
|
-
let query = Parse.Query.fromJSON("ImagineWork", {
|
|
179
|
-
where: {
|
|
180
|
-
$or: [
|
|
181
|
-
// 超时60秒,且进度不为0
|
|
182
|
-
{ createdAt: { $lte: oneMinutesAgo }, progress: { $ne: 0 } },
|
|
183
|
-
// 60秒内,不限进度
|
|
184
|
-
{ createdAt: { $gt: oneMinutesAgo } }
|
|
185
|
-
]
|
|
186
|
-
}
|
|
187
|
-
});
|
|
188
|
-
query.include("model", "module", "user");
|
|
189
|
-
query.notEqualTo("isDeleted", true);
|
|
190
|
-
query.notEqualTo("isFailed", true);
|
|
191
|
-
query.doesNotExist("respData.error"); // DE 算力瓶颈
|
|
192
|
-
query.doesNotExist("respData.data.taskLimitCount"); // SD并发超限
|
|
193
|
-
query.addDescending("createdAt");
|
|
194
|
-
return query;
|
|
195
|
-
}
|
|
196
|
-
getimg() {
|
|
197
|
-
return new Promise((resolve, reject) => {
|
|
198
|
-
let input = document.createElement('input');
|
|
199
|
-
input.type = 'file';
|
|
200
|
-
input.click();
|
|
201
|
-
let handleChange = async () => {
|
|
202
|
-
input.removeEventListener('change', handleChange);
|
|
203
|
-
if (input.files && input.files.length > 0) {
|
|
204
|
-
let file = input.files[0];
|
|
205
|
-
let fileResult = await this.uploadServ.upload(file, (res) => {
|
|
206
|
-
console.log(res); // 上传进度,可以同步更新页面上传百分比
|
|
207
|
-
res.total.percent.toFixed(2); //上传进度
|
|
208
|
-
});
|
|
209
|
-
// 测试使用固定图片
|
|
210
|
-
// let fileResult = {
|
|
211
|
-
// url: "https://file-cloud.fmode.cn/E4KpGvTEto/20230808/s12uh1092414597.png"
|
|
212
|
-
// };
|
|
213
|
-
resolve(fileResult.url);
|
|
214
|
-
}
|
|
215
|
-
else {
|
|
216
|
-
reject("未选择文件");
|
|
217
|
-
}
|
|
218
|
-
};
|
|
219
|
-
input.addEventListener('change', handleChange);
|
|
220
|
-
});
|
|
221
|
-
}
|
|
222
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ImagineService, deps: [{ token: i1.HttpClient }, { token: i2.NovaCloudService }, { token: i3.NovaUploadService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
223
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ImagineService, providedIn: 'root' }); }
|
|
224
|
-
}
|
|
225
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ImagineService, decorators: [{
|
|
226
|
-
type: Injectable,
|
|
227
|
-
args: [{
|
|
228
|
-
providedIn: 'root'
|
|
229
|
-
}]
|
|
230
|
-
}], ctorParameters: () => [{ type: i1.HttpClient }, { type: i2.NovaCloudService }, { type: i3.NovaUploadService }] });
|
|
231
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2luZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZm1vZGUtbmcvc3JjL2xpYi9haWdjL3NlcnZpY2UtZm1haS9zZXJ2aWNlLWltYWdpbmUvaW1hZ2luZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQWUsTUFBTSxzQkFBc0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzFFLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQzs7Ozs7QUEyRXhGOztHQUVHO0FBSUgsTUFBTSxPQUFPLGNBQWM7SUFFekI7O09BRUc7SUFDSCxZQUNVLElBQWUsRUFDZixNQUF1QixFQUN2QixVQUE0QjtRQUY1QixTQUFJLEdBQUosSUFBSSxDQUFXO1FBQ2YsV0FBTSxHQUFOLE1BQU0sQ0FBaUI7UUFDdkIsZUFBVSxHQUFWLFVBQVUsQ0FBa0I7UUE4SXRDLGtCQUFhLEdBQU8sRUFBRSxDQUFBO1FBRXRCOztXQUVHO1FBQ0gsZ0JBQVcsR0FBdUIsRUFBRSxDQUFBO1FBQ3BDLGVBQVUsR0FBdUIsRUFBRSxDQUFBO0lBbkpoQyxDQUFDO0lBQ0o7Ozs7Ozs7Ozs7OztNQVlFO0lBQ0YsS0FBSyxDQUFDLFNBQVMsQ0FBQyxPQUFvQjtRQUNsQyxPQUFPLENBQUMsSUFBSSxHQUFHLE9BQU8sRUFBRSxJQUFJLElBQUksV0FBVyxDQUFBO1FBQzNDLE9BQU8sQ0FBQyxLQUFLLEdBQUcsT0FBTyxFQUFFLEtBQUssSUFBSSxTQUFTLENBQUE7UUFDM0MsT0FBTyxDQUFDLE9BQU8sR0FBRyxPQUFPLEVBQUUsT0FBTyxJQUFJLElBQUksQ0FBQTtRQUUxQyxJQUFJLFFBQVEsR0FBRztZQUNYLE9BQU8sRUFBRSxVQUFVO1lBQ25CLFFBQVEsRUFBRSxPQUFPLENBQUMsTUFBTTtZQUN4QixHQUFHLEVBQUUsQ0FBQztZQUNOLFNBQVMsRUFBQyxPQUFPLENBQUMsT0FBTztZQUN6Qiw4QkFBOEI7WUFDOUIsZUFBZSxFQUFDLEtBQUs7WUFDckIsTUFBTSxFQUFFLE9BQU8sQ0FBQyxJQUFJO1lBQ3BCLE9BQU8sRUFBRSxPQUFPLENBQUMsS0FBSztTQUN2QixDQUFBO1FBQ0QsSUFBRyxPQUFPLENBQUMsTUFBTSxFQUFFLE1BQU0sR0FBQyxJQUFJLEVBQUMsQ0FBQztZQUM5QixNQUFNLGtDQUFrQyxDQUFBO1FBQzFDLENBQUM7UUFDSCxJQUFJLElBQUksR0FBTyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLGdDQUFnQyxFQUFDLFFBQVEsQ0FBQyxDQUFBO1FBQ3BGLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDakIsSUFBRyxJQUFJLEVBQUUsRUFBRSxFQUFDLENBQUM7WUFDWCxJQUFJLEtBQUssR0FBRyxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUE7WUFDMUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDcEIsSUFBSSxJQUFJLEdBQUcsTUFBTSxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDL0IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQTtZQUNqQixJQUFHLElBQUksRUFBRSxFQUFFO2dCQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQzdDLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQTtRQUNYOzs7Ozs7Ozs7Ozs7O1VBYUU7SUFDSixDQUFDO0lBQ0QsVUFBVSxDQUFDLE9BQW9CO1FBQzdCLElBQUksU0FBUyxHQUFjO1lBQ3pCLEVBQUMsT0FBTyxFQUFDLFVBQVUsRUFBQyxPQUFPLEVBQUMsSUFBSSxFQUFFLE1BQU0sRUFBQyxXQUFXLEVBQUcsUUFBUSxFQUFFLENBQUMsR0FBQyxFQUFFLEdBQUMsQ0FBQyxHQUFDLElBQUksRUFBQztZQUM3RSxFQUFDLE9BQU8sRUFBQyxVQUFVLEVBQUMsT0FBTyxFQUFDLElBQUksRUFBRSxNQUFNLEVBQUMsV0FBVyxFQUFHLFFBQVEsRUFBRSxDQUFDLEdBQUMsRUFBRSxHQUFDLENBQUMsR0FBQyxJQUFJLEVBQUM7WUFDN0UsRUFBQyxPQUFPLEVBQUMsVUFBVSxFQUFDLE9BQU8sRUFBQyxJQUFJLEVBQUUsTUFBTSxFQUFDLFdBQVcsRUFBRyxRQUFRLEVBQUUsQ0FBQyxHQUFDLEVBQUUsR0FBQyxDQUFDLEdBQUMsSUFBSSxFQUFDO1lBQzdFLEVBQUMsT0FBTyxFQUFDLFVBQVUsRUFBQyxPQUFPLEVBQUMsSUFBSSxFQUFFLE1BQU0sRUFBQyxXQUFXLEVBQUcsUUFBUSxFQUFFLENBQUMsR0FBQyxFQUFFLEdBQUMsQ0FBQyxHQUFDLElBQUksRUFBQztZQUM3RSxFQUFDLE9BQU8sRUFBQyxVQUFVLEVBQUMsT0FBTyxFQUFDLElBQUksRUFBRSxNQUFNLEVBQUMsV0FBVyxFQUFHLFFBQVEsRUFBRSxDQUFDLEdBQUMsRUFBRSxHQUFDLENBQUMsR0FBQyxJQUFJLEVBQUM7WUFDN0UsRUFBQyxPQUFPLEVBQUMsVUFBVSxFQUFDLE9BQU8sRUFBQyxJQUFJLEVBQUUsTUFBTSxFQUFDLFdBQVcsRUFBRyxRQUFRLEVBQUUsQ0FBQyxHQUFDLEVBQUUsR0FBQyxDQUFDLEdBQUMsSUFBSSxFQUFDO1lBQzdFLEVBQUMsT0FBTyxFQUFDLFVBQVUsRUFBQyxPQUFPLEVBQUMsSUFBSSxFQUFFLE1BQU0sRUFBQyxXQUFXLEVBQUcsUUFBUSxFQUFFLENBQUMsR0FBQyxFQUFFLEdBQUMsQ0FBQyxHQUFDLElBQUksRUFBQztZQUM3RSxFQUFDLE9BQU8sRUFBQyxVQUFVLEVBQUMsT0FBTyxFQUFDLElBQUksRUFBRSxNQUFNLEVBQUMsU0FBUyxFQUFHLFFBQVEsRUFBRSxDQUFDLEdBQUMsRUFBRSxHQUFD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QiwrRUFBK0U7b0JBQy9FLEtBQUs7b0JBRUwsT0FBTyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDMUIsQ0FBQztxQkFBTSxDQUFDO29CQUNOLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDbEIsQ0FBQztZQUNILENBQUMsQ0FBQztZQUVGLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDakQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOytHQXZOVSxjQUFjO21IQUFkLGNBQWMsY0FGYixNQUFNOzs0RkFFUCxjQUFjO2tCQUgxQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBIZWFkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTm92YUNsb3VkU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL25vdmEtY2xvdWQvbm92YS1jbG91ZC5zZXJ2aWNlJztcbmltcG9ydCBQYXJzZSBmcm9tIFwicGFyc2VcIjtcbmltcG9ydCB7IE5vdmFVcGxvYWRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc3RvcmFnZS9zZXJ2aWNlLXVwbG9hZC9ub3ZhLXVwbG9hZC5zZXJ2aWNlJztcblxuLyoqXG4gKiBEYWxsZU9wdGlvbnMg57uY55S75Y+C5pWw5o6l5Y+jXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGFsbGVPcHRpb25ze1xuICBwcm9tcHQ6c3RyaW5nXG4gIHF1YWxpdHk/Om51bGwgfCBcImhkXCJcbiAgbj86MVxuICBtb2RlbD86IFwiZGFsbC1lLTNcIiB8IFwiZGFsbC1lLTJcIlxuICBzaXplPzogXCIxMDI0eDEwMjRcIiB8IFwiMTc5MngxMDI0XCIgfCBcIjEwMjR4MTc5MlwiXG4gIHN0eWxlPzpcInZpdmlkXCIgfCBcIm5hdHVyYWxcIiBcbn1cbi8v6auY57qnQUnnu5jlm74gYXBp5paH5qGjIGh0dHBzOi8vd3d3LnNob3dkb2MuY29tLmNuLzIzMDc5MDA1OTU2NDU2MDkvMTAzMTk2NzcyNjYzMDUxMzhcbmV4cG9ydCBpbnRlcmZhY2UgU3RhYmxlRGlmZnVzaW9uT3B0aW9uc3tcbiAgcHJvbXB0ICAgICAgICAgICAgOnN0cmluZyAvL+aUr+aMgeS4reiLseaWh1xuICBtb2RlbFN0eWxlSWQgICAgICA6bnVtYmVyXHQvL+aooeWei+mjjuagvOmFjee9rklE77yM6K+35L2/55So5oiR5Lus5a6Y5pa55o+Q5L6b55qE6aOO5qC85YiX6KGoXG4vL+WfuuehgOWPguaVsFxuICBuZWdhdGl2ZVByb21wdCAgID86c3RyaW5nIC8v5LuF5pSv5oyB5Lit5paHXG5cbiAgd2lkdGggICAgICAgICAgICA/Om51bWJlclx0Ly/lrr3vvIzpu5jorqQ1MTIs5LiN5Y+v6LaF6L+HMjA0OFxuICBoZWlnaHQgICAgICAgICAgID86bnVtYmVyXHQvL+mrmO+8jOm7mOiupDUxMizkuI3lj6/otoXov4cyMDQ4XG4gIHN0ZXBzICAgICAgICAgICAgPzpudW1iZXJcdC8v6L+t5Luj5q2l5pWw77yM6buY6K6kMjDvvIzkuI3lj6/otoXov4c1MFxuICBzZWVkICAgICAgICAgICAgID86bnVtYmVyXHQvL+maj+acuuenjeWtkO+8jOm7mOiupOS4jeS8oOWImeS4uumaj+acuueUn+aIkFxuICBjZmdTY2FsZVx0ICAgICAgID86bnVtYmVyXHQvL+aPkOekuuivjeW8leWvvOezu+aVsO+8jOWPluWAvOiMg+WbtDEtMzBcbi8v6aKd5aSW5Y+C5pWwIOS7heWbvueUn+WbvlxuICBoclNjYWxlICAgICAgICAgID86bnVtYmVyXHQvL+mrmOa4heS/ruWkjeWAjeeOh++8jOS7heWcqOaWh+eUn+WbvuaooeW8j+eUn+aViO+8jOWPluWAvOS4jeWPr+S7pei2hei/hzNcbiAgaHJTdGVwcyAgICAgICAgICA/Om51bWJlclx0Ly/pq5jmuIXov63ku6PmraXmlbDvvIzpu5jorqQyMO+8jOS4jeWPr+i2hei/hzMw77yI5LiN5bu66K6u5bCR5LqOMTXvvIzkvJrkuKXph43lvbHlk43nlLvpnaLnlJ/miJDmlYjmnpzvvIlcbi8v6aKd5aSW5Y+C5pWwICBcbiAgdXBzY2FsZVx0ICAgICAgICAgPzpudW1iZXJcdC8vQUnmlL7lpKflgI3mlbDvvIzlj5blgLzkuI3lj6/ku6XotoXov4czXG4gIGJhdGNoU2l6ZVx0ICAgICAgID86bnVtYmVyXHQvL+eUn+aIkOWbvueJh+aVsO+8jOWPluWAvOS4jeWPr+S7pei2hei/hzZcbi8v6aKd5aSW5Y+C5pWwXG4gIGZhY2VGaXhcdCAgICAgICAgID86Ym9vbGVhblx0Ly/mmK/lkKblvIDlj5HohLjpg6jkv67lpI3vvIzms6jmhI/vvIzlvIDlkK/mraTlip/og73pnIDpop3lpJbmiaPpmaQy56ev5YiGXG4gIGRldGFpbHNMZXZlbCAgICAgPzpudW1iZXJcdC8v6IS46YOo5L+u5aSN57uG6IqC5Yi755S7562J57qn77yM5Y+W5YC86IyD5Zu0MS05XG4gIC8v5Lul5LiL5Li65Zu+55Sf5Zu+XG4gIGltZyAgICAgICAgICAgICAgPzpzdHJpbmcgLy/lm77niYdVUkzkv53or4HlhaznvZHlj6/mn6XnnItcbiAgaW1nT3B0aW9ucyAgICAgICA/OmltZ09wdGlvbnNcbiAgZGVub2lzaW5nU3RyZW5ndGg/Om51bWJlclx0Ly/ph43nu5jluYXluqbvvIzku4XlnKhpbWflrZfmrrXmnInkvKDlgLznmoTml7blgJnnlJ/mlYjvvIzlj5blgLzojIPlm7QwfjHvvIzlj5blgLzotorlpKfnlLvpnaLkuI7lj4LogIPlm77lt67liKvotorlpKdcbiAgY29udHJvbG5ldD86e1xuICAgIHVuaXRzPzpDb250cm9sbmV0VW5pdHNbXVxuICB9XG59XG5cbi8qKlxuICogaW1nT3B0aW9ucyDlm77lg4/phY3nva7lj4LmlbBcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBpbWdPcHRpb25ze1xuICByZW1vdmVCYWNrZ3JvdW5kICAgICA/OmJvb2xlYW4gIC8v5piv5ZCm6Ieq5Yqo56e76Zmk5Zu+54mH5Lit55qE5Lq654mp6IOM5pmv77yM5LiA6Iis55So5LqO6YeN57uY6IOM5pmv5pyJ5pWI77yM5rOo5oSP77ya5byA5ZCv5q2k5Yqf6IO96ZyA6aKd5aSW5omj6ZmkMuenr+WIhlxuICByZWRyYXdCYWNrZ3JvdW5kICAgICA/OmJvb2xlYW4gIC8v5piv5ZCm5L+d55WZ55S76Z2i5Lit55qE5Li75L2T77yM5LuF57uY5Yi255S76Z2i5Lit55qE6IOM5pmv5rOo5oSP77ya5byA5ZCv5q2k5Yqf6IO96ZyA6aKd5aSW5omj6ZmkMuenr+WIhlxuICBtYWluT2JqZWN0VHlwZSAgICAgICA/OlwiaHVtYW5cIlx0fCBcImdlbmVyYWxcIiAgLy/oh6rlrpror4bliKvnlLvpnaLkuK3nmoTkuLvkvZPvvIznlKjkuo7og4zmma/lpITnkIbjgILlj5blgLzvvJpnZW5lcmFs77ya6YCa55So5Zy65pmv6K+G5Yir77yM55So5LqO6Ieq5Yqo6K+G5Yir55S76Z2i5Lit55qE5Li75L2T77yMaHVtYW7vvJror4bliKvlubbkv53nlZnnlLvpnaLkuK3nmoTkurrnianjgILlvZNyZW1vdmVCYWNrZ3JvdW5k5oiW6ICFcmVkcmF3QmFja2dyb3VuZOS4unRydWXnmoTml7blgJnvvIznlLvpnaLkuK3nmoTkuLvkvZPnsbvlnovvvIzor7fmoLnmja7mgqjnmoTnlLvpnaLkuK3nmoTlrp7pmYXmg4XlhrXkvKDlgLzvvIzpu5jorqTkuLpodW1hblxuICBmYWNlUHJlc2VydmF0aW9uICAgICA/OmJvb2xlYW4gIC8v6Ieq5Yqo5qOA5rWL5Zu+54mH5Lit55qE5Lq66IS477yM5L2/55Sf5oiQ5ZCO55qE5Lq66IS45LiO5Y6f5aeL5Lq66IS45L+d5oyB6auY5bqm55u45Ly844CC5rOo5oSP77yM5byA5ZCv5q2k5Yqf6IO96ZyA6aKd5aSW5omj6ZmkMuenr+WIhlxuICBmYWNlUHJlc2VydmF0aW9uQ291bnQ/Om51bWJlclx0ICAvL+W8gOWQr+S6uuiEuOS/neaMgeWQju+8jOeUu+mdouS4reacgOWkmuWkhOeQhueahOS6uuiEuOaVsOmHj++8jOm7mOiupOS4ujHvvIzmnIDlpKflgLzlj6/ku6XkuLo1XG4gIGdlbmRlckRldGVjdCAgICAgICAgID86Ym9vbGVhbiBcdC8v5piv5ZCm6Ieq5Yqo5qOA5rWL5Zu+54mH5Lit55qE5Lq654mp5oCn5Yir77yM5bC96YeP5L2/55Sf5oiQ5YmN5ZCO55qE5Lq654mp5oCn5Yir5LiN5Y+R55Sf5Y+Y5YyW77yM5aaC5p6c5Zu+54mH5Lit5pyJ5aSa5Liq5Lq654mp5oCn5Yir5YiZ5pWI5p6c5Lya5LiN5YeG56Gu44CC5rOo5oSP77yM5byA5ZCv5q2k5Yqf6IO96ZyA6aKd5aSW5omj6ZmkMeenr+WIhlxufVxuXG4vKipcbiAqIENvbnRyb2xuZXRVbml0cyDmjqfliLbnvZHnu5zljZXlhYNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb250cm9sbmV0VW5pdHN7XG4gIGlzT3BlbiAgICAgICAgICAgICAgID86Ym9vbGVhbiAgICAvLyAgICDmmK/lkKblkK/nlKjor6XmjqfliLblj4LmlbBcbiAgdHlwZVx0ICAgICAgICAgICAgICAgPzpzdHJpbmcgICAgIC8vXHRcdGNvbnRyb2xuZXTlubLpooTlvaLlvI9cbiAgcHJlcHJvY2Vzc1x0ICAgICAgICAgPzpib29sZWFuICAgIC8vXHRcdOaYr+WQpumcgOimgeWvueWPguiAg+Wbvui/m+ihjOmihOWkhOeQhuaPkOWPluWPr+eUqOS/oeaBr1xuICBpbWFnZVx0ICAgICAgICAgICAgICAgPzpzdHJpbmcgICAgIC8vXHRcdGNvbnRyb2xuZXTpnIDopoHlj4LogIPnmoTlm77niYfvvIzkuI3kvKDpu5jorqTkuLrlm77nlJ/lm77nmoTljp/lp4vlm77niYfvvIzlj6/ku6XkuLpiYXNlNjTlm77niYfmiJbogIXlm77niYd1cmxcbiAgY29udHJvbE1vZGVcdCAgICAgICAgID86bnVtYmVyICAgICAvL1x0XHRjb250cm9sbmV05o6n5Yi25qih5byP77yMMOOAgeW5s+ihoeaooeW8jyjpu5jorqQpLDHvvJrmj5DnpLror43mm7Tph43opoEsMu+8mmNvbnRyb2xuZXTmm7Tph43opoFcbiAgd2VpZ2h0XHQgICAgICAgICAgICAgPzpudW1iZXIgICAgIC8vXHRcdGNvbnRyb2xuZXTmnYPph43vvIzojIPlm7TkuLowfjLvvIzpu5jorqTkuLoxLFxuICBjb250cm9sU3RhcnQgICAgICAgICA/Om51bWJlciAgICAgLy9cdFx0Y29udHJvbG5ldOeUn+aViOaXtuacuu+8jOiMg+WbtOS4ujB+Me+8jOm7mOiupOS4ujBcbiAgY29udHJvbEVuZFx0ICAgICAgICAgPzpudW1iZXIgICAgIC8vXHRcdGNvbnRyb2xuZXTpgIDlh7rml7bmnLrvvIzojIPlm7TkuLowfjHvvIzpu5jorqTkuLoxXG4gIHBhcmFtc0FcdCAgICAgICAgICAgICA/Om51bWJlciAgICAgLy9cdFx0Y29udHJvbG5ldOmihOWkhOeQhuWZqOWvueW6lOWPguaVsEFcbiAgcGFyYW1zQlx0ICAgICAgICAgICAgID86bnVtYmVyICAgICAvL1x0XHRjb250cm9sbmV06aKE5aSE55CG5Zmo5a+55bqU5Y+C5pWwQlxuICBjb250cm9sQXJyYXkgICAgICAgICA/OmFueVtdXG59XG5cbi8qKlxuICogSW1hZ2luZVNlcnZpY2UgQUnnu5jnlLvmnI3liqFcbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgSW1hZ2luZVNlcnZpY2Uge1xuXG4gIC8qKlxuICAgKiDlm77niYfnlJ/miJDmjqXlj6PkuLvmnLrlnLDlnYBcbiAgICovXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgaHR0cDpIdHRwQ2xpZW50LFxuICAgIHByaXZhdGUgbmNsb3VkOk5vdmFDbG91ZFNlcnZpY2UsXG4gICAgcHJpdmF0ZSB1cGxvYWRTZXJ2Ok5vdmFVcGxvYWRTZXJ2aWNlLFxuICApIHt9XG4gIC8qKlxuICAgKiBEQUxMLUUtMyDlm77niYfnlJ/miJDlh73mlbBcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEBzZWUgXG4gICAqIGh0dHBzOi8vcDQuaG9zdGVhZ2xlLmNsdWIvZG9jcy9hcGktcmVmZXJlbmNlP19fY3BvPWFIUjBjSE02THk5d2JHRjBabTl5YlM1dmNHVnVZV2t1WTI5dFxuICAgKiBAcGFyYW0ge0RhbGxlT3B0aW9uc30gb3B0aW9uc1xuICAgKiBAcGFyYW0gIHtzdHJpbmd9IG9wdGlvbnMucHJvbXB0IDEwMDAgY2hhcmFjdGVycyBmb3IgZGFsbC1lLTIgYW5kIDQwMDAgY2hhcmFjdGVycyBmb3IgZGFsbC1lLTMuXG4gICAqIEBwYXJhbSAge3N0cmluZ30gb3B0aW9ucy5tb2RlbCBkYWxsLWUtMyBkYWxsLWUtMlxuICAgKiBAcGFyYW0gIHtzdHJpbmd9IG9wdGlvbnMucXVhbGl0eSBkYWxsLWUtMyBvbmx5IGhkIG1lYW5zIG1vcmUgZGV0YWlscyAmIGNvbnNpc3RlbmN5XG4gICAqIEBwYXJhbSAge3N0cmluZ30gb3B0aW9ucy5yZXNwb25zZV9mb3JtYXQgdXJsIHwgYjY0X2pzb25cbiAgICogQHBhcmFtICB7c3RyaW5nfSBvcHRpb25zLnNpemUgMTAyNHgxMDI0LCAxNzkyeDEwMjQsIG9yIDEwMjR4MTc5MiBmb3IgZGFsbC1lLTNcbiAgICogQHBhcmFtICB7c3RyaW5nfSBvcHRpb25zLnN0eWxlIHZpdmlkIHwgbmF0dXJhbCBkYWxsLWUtMyBvbmx5XG4gICovXG4gIGFzeW5jIGRyYXdEYWxsZShvcHRpb25zOkRhbGxlT3B0aW9ucyl7XG4gICAgb3B0aW9ucy5zaXplID0gb3B0aW9ucz8uc2l6ZSB8fCBcIjEwMjR4MTAyNFwiXG4gICAgb3B0aW9ucy5zdHlsZSA9IG9wdGlvbnM/LnN0eWxlIHx8IFwibmF0dXJhbFwiXG4gICAgb3B0aW9ucy5xdWFsaXR5ID0gb3B0aW9ucz8ucXVhbGl0eSB8fCBudWxsXG4gICBcbiAgICBsZXQgcmVxRGFsbGUgPSB7XG4gICAgICAgIFwibW9kZWxcIjogXCJkYWxsLWUtM1wiLCBcbiAgICAgICAgXCJwcm9tcHRcIjogb3B0aW9ucy5wcm9tcHQsXG4gICAgICAgIFwiblwiOiAxLFxuICAgICAgICBcInF1YWxpdHlcIjpvcHRpb25zLnF1YWxpdHksXG4gICAgICAgIC8vIHJlc3BvbnNlX2Zvcm1hdDpcImI2NF9qc29uXCIsXG4gICAgICAgIHJlc3BvbnNlX2Zvcm1hdDpcInVybFwiLFxuICAgICAgICBcInNpemVcIjogb3B0aW9ucy5zaXplLFxuICAgICAgICBcInN0eWxlXCI6IG9wdGlvbnMuc3R5bGVcbiAgICAgIH1cbiAgICAgIGlmKG9wdGlvbnMucHJvbXB0Py5sZW5ndGg+MzAwMCl7XG4gICAgICAgIHRocm93IFwicHJvbXB0IG1heGltdW0gPCA0MDAwIGNoYXJhY3RlcnNcIlxuICAgICAgfVxuICAgIGxldCBkYXRhOmFueSA9IGF3YWl0IHRoaXMubmNsb3VkLmFwaWdUZXN0KFwiYWlnYy9ncHQvdjEvaW1hZ2VzL2dlbmVyYXRpb25zXCIscmVxRGFsbGUpXG4gICAgY29uc29sZS5sb2coZGF0YSlcbiAgICBpZihkYXRhPy5pZCl7XG4gICAgICBsZXQgcXVlcnkgPSBuZXcgUGFyc2UuUXVlcnkoXCJJbWFnaW5lV29ya1wiKVxuICAgICAgcXVlcnkuZ2V0KGRhdGE/LmlkKTtcbiAgICAgIGxldCB3b3JrID0gYXdhaXQgcXVlcnkuZmlyc3QoKTtcbiAgICAgIGNvbnNvbGUubG9nKHdvcmspXG4gICAgICBpZih3b3JrPy5pZCkgdGhpcy5uZXdXb3JrTGlzdC51bnNoaWZ0KHdvcmspXG4gICAgfVxuICAgIHJldHVybiBkYXRhXG4gICAgLyoqXG4gICAgICogQHBhcmFtIGpzb24uZGF0YVswXS5iNjRfanNvbiDlm77niYfkuozov5vliLbnmoRiNjTmoLzlvI9cbiAgICBSZXNwb25zZSB7XG4gICAgICBcImNyZWF0ZWRcIjogMTU4OTQ3ODM3OCxcbiAgICAgIFwiZGF0YVwiOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBcInVybFwiOiBcImh0dHBzOi8vLi4uXCJcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIFwidXJsXCI6IFwiaHR0cHM6Ly8uLi5cIlxuICAgICAgICB9XG4gICAgICBdXG4gICAgfVxuICAgICovXG4gIH1cbiAgcHJpY2VEYWxsZShvcHRpb25zOkRhbGxlT3B0aW9ucyl7XG4gICAgbGV0IHByaWNlTGlzdDpBcnJheTxhbnk+ID0gW1xuICAgICAge1wibW9kZWxcIjpcImRhbGwtZS0zXCIscXVhbGl0eTpudWxsLFx0XCJzaXplXCI6XCIxMDI0eDEwMjRcIixcdCBcImNyZWRpdFwiOiAyKjEwKjgqMC4wNH0sXG4gICAgICB7XCJtb2RlbFwiOlwiZGFsbC1lLTNcIixxdWFsaXR5Om51bGwsXHRcInNpemVcIjpcIjEwMjR4MTc5MlwiLFx0IFwiY3JlZGl0XCI6IDIqMTAqOCowLjA4fSxcbiAgICAgIHtcIm1vZGVsXCI6XCJkYWxsLWUtM1wiLHF1YWxpdHk6bnVsbCxcdFwic2l6ZVwiOlwiMTc5MngxMDI0XCIsXHQgXCJjcmVkaXRcIjogMioxMCo4KjAuMDh9LFxuICAgICAge1wibW9kZWxcIjpcImRhbGwtZS0zXCIscXVhbGl0eTpcImhkXCIsXHRcInNpemVcIjpcIjEwMjR4MTAyNFwiLFx0IFwiY3JlZGl0XCI6IDIqMTAqOCowLjA4fSxcbiAgICAgIHtcIm1vZGVsXCI6XCJkYWxsLWUtM1wiLHF1YWxpdHk6XCJoZFwiLFx0XCJzaXplXCI6XCIxMDI0eDE3OTJcIixcdCBcImNyZWRpdFwiOiAyKjEwKjgqMC4xMn0sXG4gICAgICB7XCJtb2RlbFwiOlwiZGFsbC1lLTNcIixxdWFsaXR5OlwiaGRcIixcdFwic2l6ZVwiOlwiMTc5MngxMDI0XCIsXHQgXCJjcmVkaXRcIjogMioxMCo4KjAuMTJ9LFxuICAgICAge1wibW9kZWxcIjpcImRhbGwtZS0yXCIscXVhbGl0eTpudWxsLFx0XCJzaXplXCI6XCIxMDI0eDEwMjRcIixcdCBcImNyZWRpdFwiOiAyKjEwKjgqMC4wMn0sXG4gICAgICB7XCJtb2RlbFwiOlwiZGFsbC1lLTJcIixxdWFsaXR5Om51bGwsXHRcInNpemVcIjpcIjUxMng1MTJcIixcdCBcImNyZWRpdFwiOiAyKjEwKjgqMC4wMTh9LFxuICAgICAge1wibW9kZWxcIjpcImRhbGwtZS0yXCIscXVhbGl0eTpudWxsLFx0XCJzaXplXCI6XCIyNTZ4MjU2XCIsXHQgXCJjcmVkaXRcIjogMioxMCo4KjAuMDE2fVxuICAgIF1cbiAgICBsZXQgcHJpY2UgPSBwcmljZUxpc3QuZmluZChpdGVtPT5pdGVtLm1vZGVsPT1vcHRpb25zLm1vZGVsICYmIGl0ZW0ucXVhbGl0eT09b3B0aW9ucy5xdWFsaXR5ICYmIGl0ZW0uc2l6ZT09b3B0aW9ucy5zaXplKVxuICAgIGxldCBjcmVkaXQgPSBwcmljZT8uY3JlZGl0IHx8IDIqMTAqOCowLjEyXG4gICAgcmV0dXJuIGNyZWRpdFxuICB9XG4gIHByaWNlU3RhYmxlRGlmZnVzaW9uKG9wdGlvbnM6U3RhYmxlRGlmZnVzaW9uT3B0aW9ucyl7XG4gICAgbGV0IHNpemUgPSAgb3B0aW9ucy53aWR0aCpvcHRpb25zLmhlaWdodFxuICAgIGxldCBudW0gPSAwLjMgLy/po57noIHog73ph4/mjaLnrpfluLjmlbBcbiAgICBsZXQgY3JlZGl0ID0gc2l6ZSowLjAwMDAwMDc2MypvcHRpb25zLnN0ZXBzXG4gICAgKyBzaXplKjAuMDAwMDIyNzggKiAob3B0aW9ucz8udXBzY2FsZSB8fCAwKVxuICAgICsgKG9wdGlvbnM/LmhyU3RlcHMgfHwgMCkqc2l6ZSooIG9wdGlvbnM/LmhyU2NhbGUgfHwgMCkgKiggb3B0aW9ucz8uaHJTY2FsZSB8fCAwKSogMC4wMDAwMDA3NjNcbiAgICArIChvcHRpb25zPy5mYWNlRml4PyAgMjowKVxuICAgICsgKG9wdGlvbnM/LmltZ09wdGlvbnM/LnJlbW92ZUJhY2tncm91bmQ/ICAyOjApXG4gICAgKyAob3B0aW9ucz8uaW1nT3B0aW9ucz8ucmVkcmF3QmFja2dyb3VuZD8gIDI6MClcbiAgICArIChvcHRpb25zPy5pbWdPcHRpb25zPy5mYWNlUHJlc2VydmF0aW9uPyAgMjowKVxuICAgICsgKG9wdGlvbnM/LmltZ09wdGlvbnM/LmdlbmRlckRldGVjdD8gIDE6MClcbiAgICArIChvcHRpb25zPy5jb250cm9sbmV0Py51bml0cz8ubGVuZ3RoIHx8IDApKjJcbiAgICAvLyBjb25zb2xlLmxvZyhjcmVkaXQpO1xuXG4gICAgY3JlZGl0ID0gY3JlZGl0ICogbnVtICpvcHRpb25zLmJhdGNoU2l6ZVxuXG4gICAgXG4gICAgLy8gY29uc29sZS5sb2coY3JlZGl0KTtcblxuICAgIHJldHVybiBjcmVkaXRcbiAgfVxuICBiNjREYXRhVG9CYXNlNjRJbWFnZShiNjRfanNvbil7XG4gICAgbGV0IGRhdGEgPSBhdG9iKGI2NF9qc29uKVxuICAgIGxldCBibG9iID0gbmV3IEJsb2IoW2RhdGFdLCB7IHR5cGU6ICdpbWFnZS93ZWJwJyB9KTtcbiAgICBuZXcgUHJvbWlzZShyZXNvbHZlPT57XG4gICAgICAvLyDkvb/nlKggRmlsZVJlYWRlciDlsIYgQmxvYiDlr7nosaHovazmjaLkuLogYmFzZTY0IOWtl+espuS4slxuICAgICAgbGV0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgICByZWFkZXIub25sb2FkZW5kID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIGxldCBiYXNlNjRkYXRhID0gcmVhZGVyLnJlc3VsdDtjb25zb2xlLmxvZyhiYXNlNjRkYXRhKVxuICAgICAgICByZXNvbHZlKGJhc2U2NGRhdGEpXG4gICAgICB9O1xuICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoYmxvYik7XG4gICAgfSlcbiAgfVxuICAvKipcbiAgICogSHVhc2hpNuS4k+eUqOe7mOWbvuWHveaVsFxuICAgKiBAcGFyYW0gcmVxQm9keSBcbiAgICogQHNlZVxuICAgKiDmjqXlj6NyZXFCb2R55Y+C5pWw77yM5Y+C6ICD77yaaHR0cHM6Ly93d3cuc2hvd2RvYy5jb20uY24vMjMwNzkwMDU5NTY0NTYwOS8xMDMxOTY3NTk4NzMxOTU5OFxuICAgKiDlr4bnoIHvvJoxMjM0NTZcbiAgICogQHJldHVybnMgXG4gICAqL1xuICBhc3luYyBkcmF3KHJlcUJvZHk6YW55KXtcbiAgICBsZXQgZGF0YTphbnkgPSBhd2FpdCB0aGlzLm5jbG91ZC5hcGlnKFwiYWlnYy9zZGFwaS92MS9kcmF3XCIscmVxQm9keSlcbiAgICAvLyDmraPluLjnlJ/miJB0YXNrSWTlkI7vvIzojrflj5bmlbDmja7mt7vliqDliLDliJfooajkuK1cbiAgICBsZXQgdGFza0lkID0gZGF0YT8ucGFpbnRpbmdTaWduXG4gICAgaWYodGFza0lkKXtcbiAgICAgIHNldFRpbWVvdXQoYXN5bmMgKCkgPT4ge1xuICAgICAgICBsZXQgcXVlcnkgPSBuZXcgUGFyc2UuUXVlcnkoXCJJbWFnaW5lV29ya1wiKVxuICAgICAgICBxdWVyeS5lcXVhbFRvKFwidGFza0lkXCIsdGFza0lkKTtcbiAgICAgICAgbGV0IHdvcmsgPSBhd2FpdCBxdWVyeS5maXJzdCgpO1xuICAgICAgICBjb25zb2xlLmxvZyh3b3JrKVxuICAgICAgICBpZih3b3JrPy5pZCkgdGhpcy5uZXdXb3JrTGlzdC51bnNoaWZ0KHdvcmspXG4gICAgICB9LCAxMDAwKTtcbiAgICB9XG4gICAgcmV0dXJuIGRhdGFcbiAgfVxuICAvKipcbiAgICog5bey5a6M5oiQ55qE55u05o6l5Yqg6L2977yM5pyq5a6M5oiQ55qE5YaN5o6l5Y+j5pu05pawXG4gICAqIEBwYXJhbSB0YXNrSWQgXG4gICAqIEByZXR1cm5zIFxuICAgKi9cbiAgYXN5bmMgdGFza0RldGFpbCh0YXNrSWQ6c3RyaW5nKXtcbiAgICBsZXQgZGF0YTphbnkgPSBhd2FpdCB0aGlzLm5jbG91ZC5hcGlnKFwiYWlnYy9zZGFwaS92MS90YXNrL2RldGFpbFwiLHt0YXNrSWQ6dGFza0lkfSlcbiAgICBjb25zb2xlLmxvZyhkYXRhKVxuICAgIHRoaXMudGFza0RldGFpbE1hcFt0YXNrSWRdID0gZGF0YVxuICAgIHJldHVybiBkYXRhXG4gIH1cbiAgdGFza0RldGFpbE1hcDphbnkgPSB7fVxuXG4gIC8qKlxuICAgKiDmiJHnmoTnu5jnlLvkvZzlk4HlhbHkuqvmlrnms5VcbiAgICovXG4gIG5ld1dvcmtMaXN0OkFycmF5PFBhcnNlLk9iamVjdD4gPSBbXVxuICBteVdvcmtMaXN0OkFycmF5PFBhcnNlLk9iamVjdD4gPSBbXVxuICBnZXRNeVdvcmtRdWVyeSgpe1xuICAgIGxldCB1c2VyID0gUGFyc2UuVXNlci5jdXJyZW50KClcbiAgICBpZighdXNlcj8uaWQpIHJldHVyblxuICAgIGxldCBxdWVyeSA9IHRoaXMuZ2V0V29ya1F1ZXJ5KClcbiAgICBxdWVyeS5pbmNsdWRlKFwibW9kZWxcIixcIm1vZHVsZVwiLFwidXNlclwiKVxuICAgIHF1ZXJ5LmVxdWFsVG8oXCJ1c2VyXCIsdXNlci50b1BvaW50ZXIoKSk7XG4gICAgcmV0dXJuIHF1ZXJ5XG4gIH1cbiAgZ2V0V29ya1F1ZXJ5KCl7XG5cbiAgLy8g6I635Y+WIDEg5YiG6ZKf5YmN55qE5pe26Ze0XG4gICAgbGV0IG9uZU1pbnV0ZXNBZ28gPSBuZXcgRGF0ZShuZXcgRGF0ZSgpLmdldFRpbWUoKSAtIDEgKiA2MCAqIDEwMDApO1xuXG4gICAgbGV0IHF1ZXJ5ID0gUGFyc2UuUXVlcnkuZnJvbUpTT04oXCJJbWFnaW5lV29ya1wiLHtcbiAgICAgIHdoZXJlOntcbiAgICAgICAgJG9yOltcbiAgICAgICAgICAvLyDotoXml7Y2MOenku+8jOS4lOi/m+W6puS4jeS4ujBcbiAgICAgICAgICB7Y3JlYXRlZEF0OnskbHRlOm9uZU1pbnV0ZXNBZ299LHByb2dyZXNzOnskbmU6MH19LFxuICAgICAgICAgIC8vIDYw56eS5YaF77yM5LiN6ZmQ6L+b5bqmXG4gICAgICAgICAge2NyZWF0ZWRBdDp7JGd0Om9uZU1pbnV0ZXNBZ299fVxuICAgICAgICBdXG4gICAgICB9XG4gICAgfSk7XG4gICAgcXVlcnkuaW5jbHVkZShcIm1vZGVsXCIsXCJtb2R1bGVcIixcInVzZXJcIik7XG4gICAgcXVlcnkubm90RXF1YWxUbyhcImlzRGVsZXRlZFwiLHRydWUpXG4gICAgcXVlcnkubm90RXF1YWxUbyhcImlzRmFpbGVkXCIsdHJ1ZSlcbiAgICBxdWVyeS5kb2VzTm90RXhpc3QoXCJyZXNwRGF0YS5lcnJvclwiKSAvLyBERSDnrpflipvnk7bpoohcbiAgICBxdWVyeS5kb2VzTm90RXhpc3QoXCJyZXNwRGF0YS5kYXRhLnRhc2tMaW1pdENvdW50XCIpIC8vIFNE5bm25Y+R6LaF6ZmQXG4gICAgcXVlcnkuYWRkRGVzY2VuZGluZyhcImNyZWF0ZWRBdFwiKTtcbiAgICByZXR1cm4gcXVlcnk7XG4gIH1cbiAgZ2V0aW1nKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGxldCBpbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7XG4gICAgICBpbnB1dC50eXBlID0gJ2ZpbGUnO1xuICAgICAgaW5wdXQuY2xpY2soKTtcbiAgXG4gICAgICBsZXQgaGFuZGxlQ2hhbmdlID0gYXN5bmMgKCkgPT4ge1xuICAgICAgICBpbnB1dC5yZW1vdmVFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCBoYW5kbGVDaGFuZ2UpO1xuICAgICAgICBpZiAoaW5wdXQuZmlsZXMgJiYgaW5wdXQuZmlsZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGxldCBmaWxlID0gaW5wdXQuZmlsZXNbMF07XG4gICAgICAgICAgbGV0IGZpbGVSZXN1bHQgPSBhd2FpdCB0aGlzLnVwbG9hZFNlcnYudXBsb2FkKGZpbGUsKHJlcyk9PntcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKHJlcykgLy8g5LiK5Lyg6L+b5bqm77yM5Y+v5Lul5ZCM5q2l5pu05paw6aG16Z2i5LiK5Lyg55m+5YiG5q+UXG4gICAgICAgICAgICByZXMudG90YWwucGVyY2VudC50b0ZpeGVkKDIpLy/kuIrkvKDov5vluqZcbiAgICAgICAgICB9KTtcbiAgICAgICAgICAvLyDmtYvor5Xkvb/nlKjlm7rlrprlm77niYdcbiAgICAgICAgICAvLyBsZXQgZmlsZVJlc3VsdCA9IHtcbiAgICAgICAgICAvLyAgIHVybDogXCJodHRwczovL2ZpbGUtY2xvdWQuZm1vZGUuY24vRTRLcEd2VEV0by8yMDIzMDgwOC9zMTJ1aDEwOTI0MTQ1OTcucG5nXCJcbiAgICAgICAgICAvLyB9O1xuICBcbiAgICAgICAgICByZXNvbHZlKGZpbGVSZXN1bHQudXJsKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZWplY3QoXCLmnKrpgInmi6nmlofku7ZcIik7XG4gICAgICAgIH1cbiAgICAgIH07XG4gIFxuICAgICAgaW5wdXQuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgaGFuZGxlQ2hhbmdlKTtcbiAgICB9KTtcbiAgfVxufVxuIl19
|
|
8
|
+
import{HttpClient}from"@angular/common/http";import{Injectable}from"@angular/core";import{NovaCloudService}from"../../../nova-cloud/nova-cloud.service";import Parse from"parse";import{NovaUploadService}from"../../../storage/service-upload/nova-upload.service";import*as i0 from"@angular/core";import*as i1 from"@angular/common/http";import*as i2 from"../../../nova-cloud/nova-cloud.service";import*as i3 from"../../../storage/service-upload/nova-upload.service";export class ImagineService{constructor(e,t,i){this.http=e,this.ncloud=t,this.uploadServ=i,this.taskDetailMap={},this.newWorkList=[],this.myWorkList=[]}async drawDalle(e){e.size=e?.size||"1024x1024",e.style=e?.style||"natural",e.quality=e?.quality||null;let t={model:"dall-e-3",prompt:e.prompt,n:1,quality:e.quality,response_format:"url",size:e.size,style:e.style};if(e.prompt?.length>3e3)throw"prompt maximum < 4000 characters";let i=await this.ncloud.apigTest("aigc/gpt/v1/images/generations",t);if(console.log(i),i?.id){let e=new Parse.Query("ImagineWork");e.get(i?.id);let t=await e.first();console.log(t),t?.id&&this.newWorkList.unshift(t)}return i}priceDalle(e){let t=[{model:"dall-e-3",quality:null,size:"1024x1024",credit:6.4},{model:"dall-e-3",quality:null,size:"1024x1792",credit:12.8},{model:"dall-e-3",quality:null,size:"1792x1024",credit:12.8},{model:"dall-e-3",quality:"hd",size:"1024x1024",credit:12.8},{model:"dall-e-3",quality:"hd",size:"1024x1792",credit:19.2},{model:"dall-e-3",quality:"hd",size:"1792x1024",credit:19.2},{model:"dall-e-2",quality:null,size:"1024x1024",credit:3.2},{model:"dall-e-2",quality:null,size:"512x512",credit:2.88},{model:"dall-e-2",quality:null,size:"256x256",credit:2.56}].find((t=>t.model==e.model&&t.quality==e.quality&&t.size==e.size));return t?.credit||19.2}priceStableDiffusion(e){let t=e.width*e.height,i=763e-9*t*e.steps+2278e-8*t*(e?.upscale||0)+(e?.hrSteps||0)*t*(e?.hrScale||0)*(e?.hrScale||0)*763e-9+(e?.faceFix?2:0)+(e?.imgOptions?.removeBackground?2:0)+(e?.imgOptions?.redrawBackground?2:0)+(e?.imgOptions?.facePreservation?2:0)+(e?.imgOptions?.genderDetect?1:0)+2*(e?.controlnet?.units?.length||0);return i=.3*i*e.batchSize,i}b64DataToBase64Image(e){let t=atob(e),i=new Blob([t],{type:"image/webp"});new Promise((e=>{let t=new FileReader;t.onloadend=function(){let i=t.result;console.log(i),e(i)},t.readAsDataURL(i)}))}async draw(e){let t=await this.ncloud.apig("aigc/sdapi/v1/draw",e),i=t?.paintingSign;return i&&setTimeout((async()=>{let e=new Parse.Query("ImagineWork");e.equalTo("taskId",i);let t=await e.first();console.log(t),t?.id&&this.newWorkList.unshift(t)}),1e3),t}async taskDetail(e){let t=await this.ncloud.apig("aigc/sdapi/v1/task/detail",{taskId:e});return console.log(t),this.taskDetailMap[e]=t,t}getMyWorkQuery(){let e=Parse.User.current();if(!e?.id)return;let t=this.getWorkQuery();return t.include("model","module","user"),t.equalTo("user",e.toPointer()),t}getWorkQuery(){let e=new Date((new Date).getTime()-6e4),t=Parse.Query.fromJSON("ImagineWork",{where:{$or:[{createdAt:{$lte:e},progress:{$ne:0}},{createdAt:{$gt:e}}]}});return t.include("model","module","user"),t.notEqualTo("isDeleted",!0),t.notEqualTo("isFailed",!0),t.doesNotExist("respData.error"),t.doesNotExist("respData.data.taskLimitCount"),t.addDescending("createdAt"),t}getimg(){return new Promise(((e,t)=>{let i=document.createElement("input");i.type="file",i.click();let handleChange=async()=>{if(i.removeEventListener("change",handleChange),i.files&&i.files.length>0){let t=i.files[0],a=await this.uploadServ.upload(t,(e=>{console.log(e),e.total.percent.toFixed(2)}));e(a.url)}else t("未选择文件")};i.addEventListener("change",handleChange)}))}static{this.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"17.3.12",ngImport:i0,type:ImagineService,deps:[{token:i1.HttpClient},{token:i2.NovaCloudService},{token:i3.NovaUploadService}],target:i0.ɵɵFactoryTarget.Injectable})}static{this.ɵprov=i0.ɵɵngDeclareInjectable({minVersion:"12.0.0",version:"17.3.12",ngImport:i0,type:ImagineService,providedIn:"root"})}}i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"17.3.12",ngImport:i0,type:ImagineService,decorators:[{type:Injectable,args:[{providedIn:"root"}]}],ctorParameters:()=>[{type:i1.HttpClient},{type:i2.NovaCloudService},{type:i3.NovaUploadService}]});
|
|
9
|
+
var MODULE_PATH_NEED = `6K+l5paH5Lu25piv5pys6aG555uu55qE5LiA6YOo5YiGIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBDb21wb25lbnRzIGluIEZtb2RlIEluYy4KICAgIOeJiOadg+aJgOaciSDCqSDmnKrmnaXpo57pqawgwqkg5rGf6KW/6ISR5o6n56eR5oqA5pyJ6ZmQ5YWs5Y+4IENvcHlyaWdodCDCqSBGbW9kZSBUZWNobm9sb2d5IENvLiwgTHRkLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICDkuKXnpoHlnKjmnKrnu4/mjojmnYPnmoTmg4XlhrXkuIvvvIzpgJrov4fku7vkvZXlqpLku4vlpI3liLbmraTmlofku7YgVW5hdXRob3JpemVkIGNvcHlpbmcgb2YgdGhpcyBmaWxlLCB2aWEgYW55IG1lZGl1bSBpcyBzdHJpY3RseSBwcm9oaWJpdGVkCiAgICDor6Xmlofku7bmmK/kuJPmnInnmoTmnLrlr4bmlofku7YgUHJvcHJpZXRhcnkgYW5kIGNvbmZpZGVudGlhbAogICAKICAgIENvcHlyaWdodCAyMDIxLW5vdyBGbW9kZSBJbmMuIHN1cHBvcnRAZm1vZGUuY24uIDE4NjA3MDA3MDczLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCByaWdodHMgcmVzZXJ2ZWQuCgogICAgUEFUSDovaG9tZS9yeWFuL3dvcmtzcGFjZS9ub3ZhL25vdmEtYWRtaW4vZGlzdC9mbW9kZS1uZy9lc20yMDIyL2xpYi9haWdjL3NlcnZpY2UtZm1haS9zZXJ2aWNlLWltYWdpbmUvaW1hZ2luZS5zZXJ2aWNlLm1qcw==`
|
|
10
|
+
|
|
@@ -1,2 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
|
|
2
|
+
/**
|
|
3
|
+
* @copyright © 未来飞马 © 未来全栈 www.fmode.cn
|
|
4
|
+
* 版权所有 © 未来飞马 © 江西脑控科技有限公司 Copyright © Fmode Technology Co., Ltd.
|
|
5
|
+
* 保留所有权利 All Rights Reserved.
|
|
6
|
+
* /home/ryan/workspace/nova/nova-admin/dist/fmode-ng/esm2022/lib/aigc/service-fmai/service-imagine/index.mjs
|
|
7
|
+
*/
|
|
8
|
+
export*from"./imagine.service";
|
|
9
|
+
var MODULE_PATH_NEED = `6K+l5paH5Lu25piv5pys6aG555uu55qE5LiA6YOo5YiGIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBDb21wb25lbnRzIGluIEZtb2RlIEluYy4KICAgIOeJiOadg+aJgOaciSDCqSDmnKrmnaXpo57pqawgwqkg5rGf6KW/6ISR5o6n56eR5oqA5pyJ6ZmQ5YWs5Y+4IENvcHlyaWdodCDCqSBGbW9kZSBUZWNobm9sb2d5IENvLiwgTHRkLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICDkuKXnpoHlnKjmnKrnu4/mjojmnYPnmoTmg4XlhrXkuIvvvIzpgJrov4fku7vkvZXlqpLku4vlpI3liLbmraTmlofku7YgVW5hdXRob3JpemVkIGNvcHlpbmcgb2YgdGhpcyBmaWxlLCB2aWEgYW55IG1lZGl1bSBpcyBzdHJpY3RseSBwcm9oaWJpdGVkCiAgICDor6Xmlofku7bmmK/kuJPmnInnmoTmnLrlr4bmlofku7YgUHJvcHJpZXRhcnkgYW5kIGNvbmZpZGVudGlhbAogICAKICAgIENvcHlyaWdodCAyMDIxLW5vdyBGbW9kZSBJbmMuIHN1cHBvcnRAZm1vZGUuY24uIDE4NjA3MDA3MDczLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCByaWdodHMgcmVzZXJ2ZWQuCgogICAgUEFUSDovaG9tZS9yeWFuL3dvcmtzcGFjZS9ub3ZhL25vdmEtYWRtaW4vZGlzdC9mbW9kZS1uZy9lc20yMDIyL2xpYi9haWdjL3NlcnZpY2UtZm1haS9zZXJ2aWNlLWltYWdpbmUvaW5kZXgubWpz`
|
|
10
|
+
|
|
@@ -1,52 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
AudioPlayer.instance = new AudioPlayer();
|
|
12
|
-
}
|
|
13
|
-
return AudioPlayer.instance;
|
|
14
|
-
}
|
|
15
|
-
setAudioEvent(event, func) {
|
|
16
|
-
this.audio[event] = func;
|
|
17
|
-
}
|
|
18
|
-
get duration() {
|
|
19
|
-
return this.audio.duration;
|
|
20
|
-
}
|
|
21
|
-
get src() {
|
|
22
|
-
return this.audio.src;
|
|
23
|
-
}
|
|
24
|
-
play(src) {
|
|
25
|
-
return new Promise((resolve, reject) => {
|
|
26
|
-
// 如果当前播放的音频与要播放的音频不同,则停止当前音频
|
|
27
|
-
if (this.audio.src !== src) {
|
|
28
|
-
this.audio.src = src;
|
|
29
|
-
this.audio.play().then(() => {
|
|
30
|
-
resolve();
|
|
31
|
-
}).catch(() => {
|
|
32
|
-
reject();
|
|
33
|
-
});
|
|
34
|
-
}
|
|
35
|
-
else {
|
|
36
|
-
// 如果点击的是正在播放的音频,则暂停
|
|
37
|
-
if (!this.audio.paused) {
|
|
38
|
-
this.audio.pause();
|
|
39
|
-
}
|
|
40
|
-
else {
|
|
41
|
-
this.audio.play().then(() => {
|
|
42
|
-
resolve();
|
|
43
|
-
}).catch(() => {
|
|
44
|
-
reject();
|
|
45
|
-
});
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
// reject()
|
|
49
|
-
});
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaW8ucGxheWVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZm1vZGUtbmcvc3JjL2xpYi9haWdjL3ZvaWNlL2F1ZGlvLnBsYXllci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxrQkFBa0I7QUFDbEIsTUFBTSxPQUFPLFdBQVc7YUFDTCxhQUFRLEdBQXVCLElBQUksQ0FBQztJQUduRCxpQkFBaUI7SUFDakI7UUFDSSxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVELFlBQVk7SUFDTCxNQUFNLENBQUMsV0FBVztRQUNyQixJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3hCLFdBQVcsQ0FBQyxRQUFRLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztRQUM3QyxDQUFDO1FBQ0QsT0FBTyxXQUFXLENBQUMsUUFBUSxDQUFDO0lBQ2hDLENBQUM7SUFFTSxhQUFhLENBQUMsS0FBSyxFQUFDLElBQUk7UUFDM0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBQyxJQUFJLENBQUE7SUFDMUIsQ0FBQztJQUNELElBQVcsUUFBUTtRQUNmLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUM7SUFDL0IsQ0FBQztJQUNELElBQVcsR0FBRztRQUNWLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUM7SUFDMUIsQ0FBQztJQUNNLElBQUksQ0FBQyxHQUFXO1FBQ25CLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUMsTUFBTSxFQUFDLEVBQUU7WUFFakMsNkJBQTZCO1lBQzdCLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEtBQUssR0FBRyxFQUFFLENBQUM7Z0JBQ3pCLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztnQkFDckIsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRSxFQUFFO29CQUN2QixPQUFPLEVBQUUsQ0FBQztnQkFDZCxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRSxFQUFFO29CQUNULE1BQU0sRUFBRSxDQUFDO2dCQUNiLENBQUMsQ0FBQyxDQUFBO1lBQ04sQ0FBQztpQkFBTSxDQUFDO2dCQUNKLG9CQUFvQjtnQkFDcEIsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7b0JBQ3JCLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ3ZCLENBQUM7cUJBQU0sQ0FBQztvQkFDSixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFFLEVBQUU7d0JBQ3ZCLE9BQU8sRUFBRSxDQUFDO29CQUNkLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFFLEVBQUU7d0JBQ1QsTUFBTSxFQUFFLENBQUM7b0JBQ2IsQ0FBQyxDQUFDLENBQUE7Z0JBQ04sQ0FBQztZQUNMLENBQUM7WUFDRCxXQUFXO1FBQ2YsQ0FBQyxDQUFDLENBQUE7SUFDTixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gYXVkaW8tcGxheWVyLnRzXG5leHBvcnQgY2xhc3MgQXVkaW9QbGF5ZXIge1xuICAgIHByaXZhdGUgc3RhdGljIGluc3RhbmNlOiBBdWRpb1BsYXllciB8IG51bGwgPSBudWxsO1xuICAgIHByaXZhdGUgYXVkaW86IEhUTUxBdWRpb0VsZW1lbnQ7XG5cbiAgICAvLyDnp4HmnInmnoTpgKDlh73mlbDvvIzpmLLmraLlpJbpg6jlrp7kvovljJZcbiAgICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLmF1ZGlvID0gbmV3IEF1ZGlvKCk7XG4gICAgfVxuXG4gICAgLy8g6I635Y+W5Y2V5L6L5a6e5L6L55qE5pa55rOVXG4gICAgcHVibGljIHN0YXRpYyBnZXRJbnN0YW5jZSgpOiBBdWRpb1BsYXllciB7XG4gICAgICAgIGlmICghQXVkaW9QbGF5ZXIuaW5zdGFuY2UpIHtcbiAgICAgICAgICAgIEF1ZGlvUGxheWVyLmluc3RhbmNlID0gbmV3IEF1ZGlvUGxheWVyKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIEF1ZGlvUGxheWVyLmluc3RhbmNlO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXRBdWRpb0V2ZW50KGV2ZW50LGZ1bmMpe1xuICAgICAgICB0aGlzLmF1ZGlvW2V2ZW50XT1mdW5jXG4gICAgfVxuICAgIHB1YmxpYyBnZXQgZHVyYXRpb24oKXtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXVkaW8uZHVyYXRpb247XG4gICAgfVxuICAgIHB1YmxpYyBnZXQgc3JjKCl7XG4gICAgICAgIHJldHVybiB0aGlzLmF1ZGlvLnNyYztcbiAgICB9XG4gICAgcHVibGljIHBsYXkoc3JjOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLHJlamVjdCk9PntcblxuICAgICAgICAgICAgLy8g5aaC5p6c5b2T5YmN5pKt5pS+55qE6Z+z6aKR5LiO6KaB5pKt5pS+55qE6Z+z6aKR5LiN5ZCM77yM5YiZ5YGc5q2i5b2T5YmN6Z+z6aKRXG4gICAgICAgICAgICBpZiAodGhpcy5hdWRpby5zcmMgIT09IHNyYykge1xuICAgICAgICAgICAgICAgIHRoaXMuYXVkaW8uc3JjID0gc3JjO1xuICAgICAgICAgICAgICAgIHRoaXMuYXVkaW8ucGxheSgpLnRoZW4oKCk9PntcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgICAgIH0pLmNhdGNoKCgpPT57XG4gICAgICAgICAgICAgICAgICAgIHJlamVjdCgpO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIOWmguaenOeCueWHu+eahOaYr+ato+WcqOaSreaUvueahOmfs+mike+8jOWImeaaguWBnFxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5hdWRpby5wYXVzZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hdWRpby5wYXVzZSgpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYXVkaW8ucGxheSgpLnRoZW4oKCk9PntcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgICAgICAgICAgfSkuY2F0Y2goKCk9PntcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdCgpO1xuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIHJlamVjdCgpXG4gICAgICAgIH0pXG4gICAgfVxufSJdfQ==
|
|
1
|
+
|
|
2
|
+
/**
|
|
3
|
+
* @copyright © 未来飞马 © 未来全栈 www.fmode.cn
|
|
4
|
+
* 版权所有 © 未来飞马 © 江西脑控科技有限公司 Copyright © Fmode Technology Co., Ltd.
|
|
5
|
+
* 保留所有权利 All Rights Reserved.
|
|
6
|
+
* /home/ryan/workspace/nova/nova-admin/dist/fmode-ng/esm2022/lib/aigc/voice/audio.player.mjs
|
|
7
|
+
*/
|
|
8
|
+
export class AudioPlayer{static{this.instance=null}constructor(){this.audio=new Audio}static getInstance(){return AudioPlayer.instance||(AudioPlayer.instance=new AudioPlayer),AudioPlayer.instance}setAudioEvent(t,i){this.audio[t]=i}get duration(){return this.audio.duration}get src(){return this.audio.src}play(t){return new Promise(((i,a)=>{this.audio.src!==t?(this.audio.src=t,this.audio.play().then((()=>{i()})).catch((()=>{a()}))):this.audio.paused?this.audio.play().then((()=>{i()})).catch((()=>{a()})):this.audio.pause()}))}}
|
|
9
|
+
var MODULE_PATH_NEED = `6K+l5paH5Lu25piv5pys6aG555uu55qE5LiA6YOo5YiGIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBDb21wb25lbnRzIGluIEZtb2RlIEluYy4KICAgIOeJiOadg+aJgOaciSDCqSDmnKrmnaXpo57pqawgwqkg5rGf6KW/6ISR5o6n56eR5oqA5pyJ6ZmQ5YWs5Y+4IENvcHlyaWdodCDCqSBGbW9kZSBUZWNobm9sb2d5IENvLiwgTHRkLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICDkuKXnpoHlnKjmnKrnu4/mjojmnYPnmoTmg4XlhrXkuIvvvIzpgJrov4fku7vkvZXlqpLku4vlpI3liLbmraTmlofku7YgVW5hdXRob3JpemVkIGNvcHlpbmcgb2YgdGhpcyBmaWxlLCB2aWEgYW55IG1lZGl1bSBpcyBzdHJpY3RseSBwcm9oaWJpdGVkCiAgICDor6Xmlofku7bmmK/kuJPmnInnmoTmnLrlr4bmlofku7YgUHJvcHJpZXRhcnkgYW5kIGNvbmZpZGVudGlhbAogICAKICAgIENvcHlyaWdodCAyMDIxLW5vdyBGbW9kZSBJbmMuIHN1cHBvcnRAZm1vZGUuY24uIDE4NjA3MDA3MDczLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCByaWdodHMgcmVzZXJ2ZWQuCgogICAgUEFUSDovaG9tZS9yeWFuL3dvcmtzcGFjZS9ub3ZhL25vdmEtYWRtaW4vZGlzdC9mbW9kZS1uZy9lc20yMDIyL2xpYi9haWdjL3ZvaWNlL2F1ZGlvLnBsYXllci5tanM=`
|
|
10
|
+
|
|
@@ -1,81 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
const SpeechGrammarList = window.SpeechGrammarList || window.webkitSpeechGrammarList;
|
|
3
|
-
export class WebSpeech {
|
|
4
|
-
constructor(platform) {
|
|
5
|
-
this.platform = platform;
|
|
6
|
-
}
|
|
7
|
-
startRecognition(words = "Nihao | Hello") {
|
|
8
|
-
if (!SpeechRecognition)
|
|
9
|
-
return;
|
|
10
|
-
if (this.recognition)
|
|
11
|
-
this.recognition.stop();
|
|
12
|
-
console.log("startRecognition");
|
|
13
|
-
this.recognition = new SpeechRecognition();
|
|
14
|
-
if (!this.recognition)
|
|
15
|
-
return;
|
|
16
|
-
// this.recognition.lang = "zh-CH";
|
|
17
|
-
this.recognition.continuous = true; // 持续识别不间断
|
|
18
|
-
let grammar = `#JSGF V1.0; grammar words; public <word> = ${words} ;`;
|
|
19
|
-
this.recognition = new SpeechRecognition();
|
|
20
|
-
let speechRecognitionList = new SpeechGrammarList();
|
|
21
|
-
speechRecognitionList.addFromString(grammar, 1);
|
|
22
|
-
this.recognition.grammars = speechRecognitionList;
|
|
23
|
-
this.recognition.start();
|
|
24
|
-
this.recognition.onresult = (event) => {
|
|
25
|
-
let results = event.results || [];
|
|
26
|
-
console.log(results);
|
|
27
|
-
console.log(results[0]?.[0]);
|
|
28
|
-
if (results[0]?.[0]?.transcript?.indexOf("Nihao") > -1) {
|
|
29
|
-
console.log("Nihao成功唤醒");
|
|
30
|
-
}
|
|
31
|
-
if (results[0]?.[0]?.transcript?.indexOf("Hello") > -1) {
|
|
32
|
-
console.log("Hello成功唤醒");
|
|
33
|
-
}
|
|
34
|
-
this.startRecognition(); // 单词唤醒后,持续唤醒
|
|
35
|
-
};
|
|
36
|
-
this.recognition.onend = (event) => {
|
|
37
|
-
console.log(event);
|
|
38
|
-
// this.startRecognition()
|
|
39
|
-
};
|
|
40
|
-
this.recognition.onerror = (err) => {
|
|
41
|
-
console.error(err);
|
|
42
|
-
// this.startRecognition()
|
|
43
|
-
};
|
|
44
|
-
}
|
|
1
|
+
|
|
45
2
|
/**
|
|
46
|
-
*
|
|
47
|
-
*
|
|
48
|
-
*
|
|
49
|
-
*
|
|
50
|
-
* @param volume: 音量,取值范围(0 - 1) 默认值:0.5
|
|
51
|
-
* @see
|
|
52
|
-
* https://zhuanlan.zhihu.com/p/141582231
|
|
3
|
+
* @copyright © 未来飞马 © 未来全栈 www.fmode.cn
|
|
4
|
+
* 版权所有 © 未来飞马 © 江西脑控科技有限公司 Copyright © Fmode Technology Co., Ltd.
|
|
5
|
+
* 保留所有权利 All Rights Reserved.
|
|
6
|
+
* /home/ryan/workspace/nova/nova-admin/dist/fmode-ng/esm2022/lib/aigc/voice/class-asr.mjs
|
|
53
7
|
*/
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
return;
|
|
58
|
-
}
|
|
59
|
-
// 保底Web播放
|
|
60
|
-
this.speakWithEdge(sentence, pitch = 1, rate = 1.2, volume = 0.8);
|
|
61
|
-
}
|
|
62
|
-
speakWithEdge(sentence, pitch = 1, rate = 1.2, volume = 0.8) {
|
|
63
|
-
// window.speechSynthesis.pause();
|
|
64
|
-
let utterance = new SpeechSynthesisUtterance(sentence);
|
|
65
|
-
let voice = this.getVoiceByName("Yaoyao");
|
|
66
|
-
console.log(voice);
|
|
67
|
-
if (voice) {
|
|
68
|
-
utterance.voice = voice;
|
|
69
|
-
}
|
|
70
|
-
utterance.rate = rate;
|
|
71
|
-
utterance.pitch = pitch;
|
|
72
|
-
utterance.volume = 10; // volume
|
|
73
|
-
window.speechSynthesis.speak(utterance);
|
|
74
|
-
}
|
|
75
|
-
getVoiceByName(name) {
|
|
76
|
-
let voices = window.speechSynthesis.getVoices();
|
|
77
|
-
let voice = voices.find(v => v.name.indexOf(name) > -1);
|
|
78
|
-
return voice;
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3MtYXNyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZm1vZGUtbmcvc3JjL2xpYi9haWdjL3ZvaWNlL2NsYXNzLWFzci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQSxNQUFNLGlCQUFpQixHQUFJLE1BQWMsQ0FBQyxpQkFBaUIsSUFBSyxNQUFjLENBQUMsdUJBQXVCLENBQUE7QUFDdEcsTUFBTSxpQkFBaUIsR0FBSSxNQUFjLENBQUMsaUJBQWlCLElBQUssTUFBYyxDQUFDLHVCQUF1QixDQUFBO0FBQ3RHLE1BQU0sT0FBTyxTQUFTO0lBQ2xCLFlBQ1ksUUFBaUI7UUFBakIsYUFBUSxHQUFSLFFBQVEsQ0FBUztJQUMzQixDQUFDO0lBVUgsZ0JBQWdCLENBQUMsS0FBSyxHQUFDLGVBQWU7UUFDbEMsSUFBRyxDQUFDLGlCQUFpQjtZQUFFLE9BQU07UUFDN0IsSUFBRyxJQUFJLENBQUMsV0FBVztZQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDNUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFBO1FBQy9CLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxpQkFBaUIsRUFBRSxDQUFDO1FBQzNDLElBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVztZQUFFLE9BQU07UUFDNUIsbUNBQW1DO1FBQ25DLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxDQUFDLFVBQVU7UUFDOUMsSUFBSSxPQUFPLEdBQ1gsOENBQThDLEtBQUssSUFBSSxDQUFDO1FBQ3hELElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxpQkFBaUIsRUFBRSxDQUFDO1FBQzNDLElBQUkscUJBQXFCLEdBQUcsSUFBSSxpQkFBaUIsRUFBRSxDQUFDO1FBQ3BELHFCQUFxQixDQUFDLGFBQWEsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDaEQsSUFBSSxDQUFD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ZSxDQUFDLFNBQVMsRUFBRSxDQUFBO1FBQy9DLElBQUksS0FBSyxHQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBLEVBQUUsQ0FBQSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQ3BELE9BQU8sS0FBSyxDQUFBO0lBQ2hCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBsYXRmb3JtIH0gZnJvbSBcIkBpb25pYy9hbmd1bGFyXCJcblxuLyoqXG4gKiDoi7Hmlofor63pn7PllKTphpJcbiAqL1xuZGVjbGFyZSB2YXIgd2Via2l0U3BlZWNoUmVjb2duaXRpb246YW55XG5jb25zdCBTcGVlY2hSZWNvZ25pdGlvbiA9ICh3aW5kb3cgYXMgYW55KS5TcGVlY2hSZWNvZ25pdGlvbiB8fCAod2luZG93IGFzIGFueSkud2Via2l0U3BlZWNoUmVjb2duaXRpb25cbmNvbnN0IFNwZWVjaEdyYW1tYXJMaXN0ID0gKHdpbmRvdyBhcyBhbnkpLlNwZWVjaEdyYW1tYXJMaXN0IHx8ICh3aW5kb3cgYXMgYW55KS53ZWJraXRTcGVlY2hHcmFtbWFyTGlzdFxuZXhwb3J0IGNsYXNzIFdlYlNwZWVjaHtcbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBwbGF0Zm9ybTpQbGF0Zm9ybVxuICAgICl7fVxuICAgIC8qKlxuICAgICAqIOivremfs+ivhuWIq1xuICAgICAqIEBkZXNjXG4gICAgICog5rOo5oSP77ya6ZyA6KaB5qCh6aqM6K+06K+d5byA5aeL5ZKM57uT5p2f5pe26Ze0Mi0z56eS5ZCO77yM6Ieq5Yqo57uT5p2f6K+t6Z+z5ZCs5Y+WXG4gICAgICogQHNlZVxuICAgICAqIGh0dHBzOi8vd3d3LmppYW5zaHUuY29tL3AvZTQyNjM4ODM5NDc1XG4gICAgICogQHBhcmFtIHdvcmQgXG4gICAgICovXG4gICAgcmVjb2duaXRpb246YW55XG4gICAgc3RhcnRSZWNvZ25pdGlvbih3b3Jkcz1cIk5paGFvIHwgSGVsbG9cIil7XG4gICAgICAgIGlmKCFTcGVlY2hSZWNvZ25pdGlvbikgcmV0dXJuXG4gICAgICAgIGlmKHRoaXMucmVjb2duaXRpb24pdGhpcy5yZWNvZ25pdGlvbi5zdG9wKCk7XG4gICAgICAgIGNvbnNvbGUubG9nKFwic3RhcnRSZWNvZ25pdGlvblwiKVxuICAgICAgICB0aGlzLnJlY29nbml0aW9uID0gbmV3IFNwZWVjaFJlY29nbml0aW9uKCk7XG4gICAgICAgIGlmKCF0aGlzLnJlY29nbml0aW9uKSByZXR1cm5cbiAgICAgICAgLy8gdGhpcy5yZWNvZ25pdGlvbi5sYW5nID0gXCJ6aC1DSFwiO1xuICAgICAgICB0aGlzLnJlY29nbml0aW9uLmNvbnRpbnVvdXMgPSB0cnVlOyAvLyDmjIHnu63or4bliKvkuI3pl7Tmlq1cbiAgICAgICAgbGV0IGdyYW1tYXIgPVxuICAgICAgICBgI0pTR0YgVjEuMDsgZ3JhbW1hciB3b3JkczsgcHVibGljIDx3b3JkPiA9ICR7d29yZHN9IDtgO1xuICAgICAgICB0aGlzLnJlY29nbml0aW9uID0gbmV3IFNwZWVjaFJlY29nbml0aW9uKCk7XG4gICAgICAgIGxldCBzcGVlY2hSZWNvZ25pdGlvbkxpc3QgPSBuZXcgU3BlZWNoR3JhbW1hckxpc3QoKTtcbiAgICAgICAgc3BlZWNoUmVjb2duaXRpb25MaXN0LmFkZEZyb21TdHJpbmcoZ3JhbW1hciwgMSk7XG4gICAgICAgIHRoaXMucmVjb2duaXRpb24uZ3JhbW1hcnMgPSBzcGVlY2hSZWNvZ25pdGlvbkxpc3Q7XG4gICAgICAgIHRoaXMucmVjb2duaXRpb24uc3RhcnQoKTtcbiAgICAgICAgdGhpcy5yZWNvZ25pdGlvbi5vbnJlc3VsdCA9IChldmVudCk9PnsgXG4gICAgICAgICAgICBsZXQgcmVzdWx0cyA9IGV2ZW50LnJlc3VsdHMgfHwgW11cbiAgICAgICAgICAgIGNvbnNvbGUubG9nKHJlc3VsdHMpXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhyZXN1bHRzWzBdPy5bMF0pXG4gICAgICAgICAgICBpZihyZXN1bHRzWzBdPy5bMF0/LnRyYW5zY3JpcHQ/LmluZGV4T2YoXCJOaWhhb1wiKT4tMSl7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJOaWhhb+aIkOWKn+WUpOmGklwiKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYocmVzdWx0c1swXT8uWzBdPy50cmFuc2NyaXB0Py5pbmRleE9mKFwiSGVsbG9cIik+LTEpe1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiSGVsbG/miJDlip/llKTphpJcIilcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuc3RhcnRSZWNvZ25pdGlvbigpOyAvLyDljZXor43llKTphpLlkI7vvIzmjIHnu63llKTphpJcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJlY29nbml0aW9uLm9uZW5kID0gKGV2ZW50KT0+e1xuICAgICAgICAgICAgY29uc29sZS5sb2coZXZlbnQpXG4gICAgICAgICAgICAvLyB0aGlzLnN0YXJ0UmVjb2duaXRpb24oKVxuICAgICAgICB9XG4gICAgICAgIHRoaXMucmVjb2duaXRpb24ub25lcnJvciA9IChlcnIpPT57XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycilcbiAgICAgICAgICAgIC8vIHRoaXMuc3RhcnRSZWNvZ25pdGlvbigpXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUVFPlkIjmiJBcbiAgICAgKiBAcGFyYW0gc2VudGVuY2XvvJropoHor7TnmoTlj6XlrZBcbiAgICAgKiBAcGFyYW0gcGl0Y2g6IOmfs+iwg++8jOWPluWAvOiMg+WbtCgwIC0gMikg6buY6K6k5YC877yaMVxuICAgICAqIEBwYXJhbSByYXRlOiDor63pgJ/vvIzlj5blgLzojIPlm7QoMC4xIC0gMTApIOm7mOiupOWAvO+8mjFcbiAgICAgKiBAcGFyYW0gdm9sdW1lOiDpn7Pph4/vvIzlj5blgLzojIPlm7QoMCAtIDEpIOm7mOiupOWAvO+8mjAuNVxuICAgICAqIEBzZWVcbiAgICAgKiBodHRwczovL3podWFubGFuLnpoaWh1LmNvbS9wLzE0MTU4MjIzMVxuICAgICAqL1xuICAgIHNwZWFrKHNlbnRlbmNlLCBwaXRjaD0xLHJhdGU9MS4yLHZvbHVtZT0wLjgpIHtcbiAgICAgICAgLy8g5LyY5YWI5o+S5Lu25pKt5pS+XG4gICAgICAgIGlmKHRoaXMucGxhdGZvcm0uaXMoXCJjYXBhY2l0b3JcIikpe1xuXG4gICAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIOS/neW6lVdlYuaSreaUvlxuICAgICAgICB0aGlzLnNwZWFrV2l0aEVkZ2Uoc2VudGVuY2UsIHBpdGNoPTEscmF0ZT0xLjIsdm9sdW1lPTAuOClcbiAgICB9XG4gICAgc3BlYWtXaXRoRWRnZShzZW50ZW5jZSwgcGl0Y2g9MSxyYXRlPTEuMix2b2x1bWU9MC44KXtcbiAgICAgICAgLy8gd2luZG93LnNwZWVjaFN5bnRoZXNpcy5wYXVzZSgpO1xuICAgICAgICBsZXQgdXR0ZXJhbmNlID0gbmV3IFNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZShzZW50ZW5jZSlcbiAgICAgICAgbGV0IHZvaWNlID0gdGhpcy5nZXRWb2ljZUJ5TmFtZShcIllhb3lhb1wiKTtcbiAgICAgICAgY29uc29sZS5sb2codm9pY2UpXG4gICAgICAgIGlmKHZvaWNlKSB7XG4gICAgICAgICAgICB1dHRlcmFuY2Uudm9pY2UgPSB2b2ljZVxuICAgICAgICB9XG4gICAgICAgIHV0dGVyYW5jZS5yYXRlID0gcmF0ZVxuICAgICAgICB1dHRlcmFuY2UucGl0Y2ggPSBwaXRjaFxuICAgICAgICB1dHRlcmFuY2Uudm9sdW1lID0gMTAgLy8gdm9sdW1lXG5cbiAgICAgICAgd2luZG93LnNwZWVjaFN5bnRoZXNpcy5zcGVhayh1dHRlcmFuY2UpXG4gICAgfVxuICAgIGdldFZvaWNlQnlOYW1lKG5hbWUpe1xuICAgICAgICBsZXQgdm9pY2VzID0gd2luZG93LnNwZWVjaFN5bnRoZXNpcy5nZXRWb2ljZXMoKVxuICAgICAgICBsZXQgdm9pY2UgID0gdm9pY2VzLmZpbmQodj0+di5uYW1lLmluZGV4T2YobmFtZSk+LTEpXG4gICAgICAgIHJldHVybiB2b2ljZVxuICAgIH1cbn0iXX0=
|
|
8
|
+
const SpeechRecognition=window.SpeechRecognition||window.webkitSpeechRecognition,SpeechGrammarList=window.SpeechGrammarList||window.webkitSpeechGrammarList;export class WebSpeech{constructor(e){this.platform=e}startRecognition(e="Nihao | Hello"){if(!SpeechRecognition)return;if(this.recognition&&this.recognition.stop(),console.log("startRecognition"),this.recognition=new SpeechRecognition,!this.recognition)return;this.recognition.continuous=!0;let o=`#JSGF V1.0; grammar words; public <word> = ${e} ;`;this.recognition=new SpeechRecognition;let i=new SpeechGrammarList;i.addFromString(o,1),this.recognition.grammars=i,this.recognition.start(),this.recognition.onresult=e=>{let o=e.results||[];console.log(o),console.log(o[0]?.[0]),o[0]?.[0]?.transcript?.indexOf("Nihao")>-1&&console.log("Nihao成功唤醒"),o[0]?.[0]?.transcript?.indexOf("Hello")>-1&&console.log("Hello成功唤醒"),this.startRecognition()},this.recognition.onend=e=>{console.log(e)},this.recognition.onerror=e=>{console.error(e)}}speak(e,o=1,i=1.2,t=.8){this.platform.is("capacitor")||this.speakWithEdge(e,1,1.2,.8)}speakWithEdge(e,o=1,i=1.2,t=.8){let n=new SpeechSynthesisUtterance(e),s=this.getVoiceByName("Yaoyao");console.log(s),s&&(n.voice=s),n.rate=i,n.pitch=o,n.volume=10,window.speechSynthesis.speak(n)}getVoiceByName(e){return window.speechSynthesis.getVoices().find((o=>o.name.indexOf(e)>-1))}}
|
|
9
|
+
var MODULE_PATH_NEED = `6K+l5paH5Lu25piv5pys6aG555uu55qE5LiA6YOo5YiGIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBDb21wb25lbnRzIGluIEZtb2RlIEluYy4KICAgIOeJiOadg+aJgOaciSDCqSDmnKrmnaXpo57pqawgwqkg5rGf6KW/6ISR5o6n56eR5oqA5pyJ6ZmQ5YWs5Y+4IENvcHlyaWdodCDCqSBGbW9kZSBUZWNobm9sb2d5IENvLiwgTHRkLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICDkuKXnpoHlnKjmnKrnu4/mjojmnYPnmoTmg4XlhrXkuIvvvIzpgJrov4fku7vkvZXlqpLku4vlpI3liLbmraTmlofku7YgVW5hdXRob3JpemVkIGNvcHlpbmcgb2YgdGhpcyBmaWxlLCB2aWEgYW55IG1lZGl1bSBpcyBzdHJpY3RseSBwcm9oaWJpdGVkCiAgICDor6Xmlofku7bmmK/kuJPmnInnmoTmnLrlr4bmlofku7YgUHJvcHJpZXRhcnkgYW5kIGNvbmZpZGVudGlhbAogICAKICAgIENvcHlyaWdodCAyMDIxLW5vdyBGbW9kZSBJbmMuIHN1cHBvcnRAZm1vZGUuY24uIDE4NjA3MDA3MDczLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCByaWdodHMgcmVzZXJ2ZWQuCgogICAgUEFUSDovaG9tZS9yeWFuL3dvcmtzcGFjZS9ub3ZhL25vdmEtYWRtaW4vZGlzdC9mbW9kZS1uZy9lc20yMDIyL2xpYi9haWdjL3ZvaWNlL2NsYXNzLWFzci5tanM=`
|
|
10
|
+
|