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.
Files changed (101) hide show
  1. package/LICENSE.md +8 -0
  2. package/esm2022/fmode-ng.mjs +10 -5
  3. package/esm2022/lib/aigc/agent/agent.prompt.mjs +10 -122
  4. package/esm2022/lib/aigc/agent/index.mjs +10 -2
  5. package/esm2022/lib/aigc/avatar/avatar.module.mjs +10 -45
  6. package/esm2022/lib/aigc/avatar/comp-avatar-particle/avatar.role.mjs +10 -2
  7. package/esm2022/lib/aigc/avatar/comp-avatar-particle/comp-avatar-particle.component.mjs +10 -315
  8. package/esm2022/lib/aigc/avatar/comp-avatar-particle/index.mjs +10 -3
  9. package/esm2022/lib/aigc/avatar/comp-avatar-particle/role-points.class.mjs +10 -57
  10. package/esm2022/lib/aigc/avatar/comp-avatar-role-image/comp-avatar-role-image.component.mjs +10 -97
  11. package/esm2022/lib/aigc/avatar/comp-avatar-role-video/comp-avatar-role-video.component.mjs +10 -104
  12. package/esm2022/lib/aigc/avatar/comp-avatar-talk/comp-avatar-talk.component.mjs +10 -111
  13. package/esm2022/lib/aigc/avatar/index.mjs +10 -8
  14. package/esm2022/lib/aigc/avatar/interface-avatar-role.mjs +10 -2
  15. package/esm2022/lib/aigc/avatar/modal-chat-voice-input/modal-chat-voice-input.component.mjs +8 -166
  16. package/esm2022/lib/aigc/chat/chat-header-area/comp-header-area.component.mjs +10 -36
  17. package/esm2022/lib/aigc/chat/chat-header-area/index.mjs +10 -2
  18. package/esm2022/lib/aigc/chat/chat-list/chat-list.component.mjs +8 -141
  19. package/esm2022/lib/aigc/chat/chat-list/index.mjs +10 -2
  20. package/esm2022/lib/aigc/chat/chat-message-area/comp-message-area.component.mjs +10 -40
  21. package/esm2022/lib/aigc/chat/chat-message-area/index.mjs +10 -2
  22. package/esm2022/lib/aigc/chat/chat-message-card/comp-message-card.component.mjs +10 -92
  23. package/esm2022/lib/aigc/chat/chat-message-card/index.mjs +10 -2
  24. package/esm2022/lib/aigc/chat/chat-modal-input/index.mjs +10 -2
  25. package/esm2022/lib/aigc/chat/chat-modal-input/modal-audio-message/modal-audio-message.component.mjs +8 -207
  26. package/esm2022/lib/aigc/chat/chat-modal-input/modal-input.component.mjs +10 -236
  27. package/esm2022/lib/aigc/chat/chat-panel/chat-panel.component.mjs +10 -137
  28. package/esm2022/lib/aigc/chat/comp-role-prompt/comp-role-prompt.component.mjs +10 -69
  29. package/esm2022/lib/aigc/chat/comp-role-prompt/index.mjs +10 -2
  30. package/esm2022/lib/aigc/chat/index.mjs +10 -8
  31. package/esm2022/lib/aigc/comp-markdown-preview/clipboard.service.mjs +10 -82
  32. package/esm2022/lib/aigc/comp-markdown-preview/markdown-parse.mjs +8 -269
  33. package/esm2022/lib/aigc/comp-markdown-preview/markdown-preview.component.mjs +10 -51
  34. package/esm2022/lib/aigc/comp-markdown-preview/markdown-preview.module.mjs +10 -24
  35. package/esm2022/lib/aigc/comp-markdown-preview/plugins/md-mathjax/index.mjs +10 -94
  36. package/esm2022/lib/aigc/index.mjs +10 -13
  37. package/esm2022/lib/aigc/service-fmai/fmai.service.mjs +10 -21
  38. package/esm2022/lib/aigc/service-fmai/service-chat/chat-class.mjs +8 -736
  39. package/esm2022/lib/aigc/service-fmai/service-chat/chat.service.mjs +8 -181
  40. package/esm2022/lib/aigc/service-fmai/service-chat/index.mjs +10 -7
  41. package/esm2022/lib/aigc/service-fmai/service-chat/mask-list.mjs +9 -194
  42. package/esm2022/lib/aigc/service-fmai/service-chat/pipes/chat-content.pipe.mjs +10 -27
  43. package/esm2022/lib/aigc/service-fmai/service-chat/pipes/hidexml.pipe.mjs +10 -27
  44. package/esm2022/lib/aigc/service-fmai/service-chat/utilnow.pipe.mjs +10 -68
  45. package/esm2022/lib/aigc/service-fmai/service-imagine/imagine.service.mjs +8 -229
  46. package/esm2022/lib/aigc/service-fmai/service-imagine/index.mjs +10 -2
  47. package/esm2022/lib/aigc/voice/audio.player.mjs +10 -52
  48. package/esm2022/lib/aigc/voice/class-asr.mjs +8 -79
  49. package/esm2022/lib/aigc/voice/fmode-voice.service.mjs +8 -501
  50. package/esm2022/lib/aigc/voice/index.mjs +10 -3
  51. package/esm2022/lib/aigc/voice/lib/pcm2wav.mjs +10 -38
  52. package/esm2022/lib/aigc/voice/lib/resample.mjs +10 -34
  53. package/esm2022/lib/aigc/voice/stream.player.mjs +10 -0
  54. package/esm2022/lib/aigc/voice/tts/fmode-tts-class.mjs +8 -233
  55. package/esm2022/lib/aigc/voice/tts/index.mjs +10 -2
  56. package/esm2022/lib/map/comp-poi-picker/comp-poi-picker.component.mjs +10 -190
  57. package/esm2022/lib/map/comp-poi-picker/comp-poi-picker.module.mjs +10 -33
  58. package/esm2022/lib/map/index.mjs +10 -4
  59. package/esm2022/lib/map/map.module.mjs +10 -61
  60. package/esm2022/lib/map/page-loca-scatter/page-loca-scatter.component.mjs +10 -110
  61. package/esm2022/lib/map/page-map.start/page-map.start.component.mjs +8 -98
  62. package/esm2022/lib/map/page-plan-route/page-plan-route.component.mjs +8 -100
  63. package/esm2022/lib/nova-cloud/index.mjs +10 -2
  64. package/esm2022/lib/nova-cloud/nova-cloud.service.mjs +10 -148
  65. package/esm2022/lib/platform/cross.service.mjs +10 -63
  66. package/esm2022/lib/platform/index.mjs +10 -2
  67. package/esm2022/lib/social/index.mjs +10 -2
  68. package/esm2022/lib/social/wechat/wechat-jssdk.service.mjs +8 -236
  69. package/esm2022/lib/storage/comp-hwobs-manager/hwobs-manager.component.mjs +10 -59
  70. package/esm2022/lib/storage/index.mjs +10 -5
  71. package/esm2022/lib/storage/service-hwobs/hwobs.service.mjs +8 -130
  72. package/esm2022/lib/storage/service-upload/index.mjs +10 -2
  73. package/esm2022/lib/storage/service-upload/nova-upload.service.mjs +8 -462
  74. package/esm2022/lib/storage/service-upload/util-file-md5.mjs +10 -28
  75. package/esm2022/lib/storage/storage.module.mjs +10 -41
  76. package/esm2022/lib/user/account/account.service.mjs +10 -221
  77. package/esm2022/lib/user/captcha/captcha.component.mjs +10 -135
  78. package/esm2022/lib/user/comp-user-avatar/comp-user-avatar.component.mjs +10 -62
  79. package/esm2022/lib/user/index.mjs +10 -17
  80. package/esm2022/lib/user/login/auth.guard.mjs +10 -28
  81. package/esm2022/lib/user/login/auth.service.mjs +8 -373
  82. package/esm2022/lib/user/login/login.component.mjs +10 -913
  83. package/esm2022/lib/user/modal-user-login/modal-user-login.component.mjs +10 -273
  84. package/esm2022/lib/user/profile/auth-profile.guard.mjs +10 -27
  85. package/esm2022/lib/user/profile/auth-profile.service.mjs +10 -122
  86. package/esm2022/lib/user/profile/profile-bind/profile-bind.component.mjs +10 -115
  87. package/esm2022/lib/user/profile/profile.module.mjs +10 -57
  88. package/esm2022/lib/user/staff/index.mjs +10 -4
  89. package/esm2022/lib/user/staff/staff.guard.mjs +10 -26
  90. package/esm2022/lib/user/staff/staff.module.mjs +10 -18
  91. package/esm2022/lib/user/staff/staff.service.mjs +10 -85
  92. package/esm2022/lib/user/user-name.pipe.mjs +10 -29
  93. package/esm2022/lib/user/user.module.mjs +10 -106
  94. package/esm2022/lib/video/fm-video/fm-video.component.mjs +10 -67
  95. package/esm2022/lib/video/index.mjs +10 -2
  96. package/esm2022/public-api.mjs +10 -13
  97. package/fesm2022/fmode-ng.mjs +7 -8895
  98. package/fesm2022/fmode-ng.mjs.map +1 -1
  99. package/lib/aigc/voice/stream.player.d.ts +10 -0
  100. package/lib/aigc/voice/tts/fmode-tts-class.d.ts +2 -2
  101. package/package.json +1 -1
@@ -1,68 +1,10 @@
1
- import { Pipe } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export class UtilnowPipe {
4
- constructor() {
5
- // 时间标记
6
- this.enLocale = {
7
- "秒钟前": " seconds ago",
8
- "分钟前": " minutes ago",
9
- "小时前": " hours ago",
10
- "天前": " days ago",
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
- import { HttpClient } from '@angular/common/http';
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
- this.http = http;
19
- this.ncloud = ncloud;
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
- export * from "./imagine.service";
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mbW9kZS1uZy9zcmMvbGliL2FpZ2Mvc2VydmljZS1mbWFpL3NlcnZpY2UtaW1hZ2luZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLG1CQUFtQixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vaW1hZ2luZS5zZXJ2aWNlXCJcbiJdfQ==
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
- // audio-player.ts
2
- export class AudioPlayer {
3
- static { this.instance = null; }
4
- // 私有构造函数,防止外部实例化
5
- constructor() {
6
- this.audio = new Audio();
7
- }
8
- // 获取单例实例的方法
9
- static getInstance() {
10
- if (!AudioPlayer.instance) {
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
- const SpeechRecognition = window.SpeechRecognition || window.webkitSpeechRecognition;
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
- * TTS合成
47
- * @param sentence:要说的句子
48
- * @param pitch: 音调,取值范围(0 - 2) 默认值:1
49
- * @param rate: 语速,取值范围(0.1 - 10) 默认值:1
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
- speak(sentence, pitch = 1, rate = 1.2, volume = 0.8) {
55
- // 优先插件播放
56
- if (this.platform.is("capacitor")) {
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
+