@dcl/asset-packs 2.14.2 → 2.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/bin/index.js +2169 -616
  2. package/catalog.json +127 -1
  3. package/dist/actions.js +8 -8
  4. package/dist/admin-toolkit-ui/Button.d.ts +1 -1
  5. package/dist/admin-toolkit-ui/Button.js +2 -2
  6. package/dist/admin-toolkit-ui/Error.d.ts +2 -2
  7. package/dist/admin-toolkit-ui/Error.js +4 -4
  8. package/dist/admin-toolkit-ui/Header.js +1 -1
  9. package/dist/admin-toolkit-ui/Modal.d.ts +19 -0
  10. package/dist/admin-toolkit-ui/Modal.js +37 -0
  11. package/dist/admin-toolkit-ui/ModerationControl/UsersList.d.ts +3 -3
  12. package/dist/admin-toolkit-ui/ModerationControl/UsersList.js +14 -8
  13. package/dist/admin-toolkit-ui/ModerationControl/index.d.ts +4 -5
  14. package/dist/admin-toolkit-ui/ModerationControl/index.js +19 -11
  15. package/dist/admin-toolkit-ui/ModerationControl/styles/AddUserInputStyles.js +4 -4
  16. package/dist/admin-toolkit-ui/ModerationControl/styles/UsersListStyles.d.ts +2 -0
  17. package/dist/admin-toolkit-ui/ModerationControl/styles/UsersListStyles.js +13 -5
  18. package/dist/admin-toolkit-ui/RewardsControl.d.ts +2 -2
  19. package/dist/admin-toolkit-ui/RewardsControl.js +9 -5
  20. package/dist/admin-toolkit-ui/SmartItemsControl.d.ts +2 -2
  21. package/dist/admin-toolkit-ui/SmartItemsControl.js +6 -4
  22. package/dist/admin-toolkit-ui/TextAnnouncements.d.ts +2 -2
  23. package/dist/admin-toolkit-ui/TextAnnouncements.js +9 -5
  24. package/dist/admin-toolkit-ui/TextAnnouncementsControl.d.ts +3 -3
  25. package/dist/admin-toolkit-ui/TextAnnouncementsControl.js +15 -7
  26. package/dist/admin-toolkit-ui/VideoControl/DclCast/CompactDclCast.d.ts +11 -0
  27. package/dist/admin-toolkit-ui/VideoControl/DclCast/CompactDclCast.js +90 -0
  28. package/dist/admin-toolkit-ui/VideoControl/DclCast/DclCastInfo.d.ts +6 -4
  29. package/dist/admin-toolkit-ui/VideoControl/DclCast/DclCastInfo.js +71 -57
  30. package/dist/admin-toolkit-ui/VideoControl/DclCast/PresentationPanel.d.ts +10 -0
  31. package/dist/admin-toolkit-ui/VideoControl/DclCast/PresentationPanel.js +67 -0
  32. package/dist/admin-toolkit-ui/VideoControl/DclCast/SharePresentationModal.d.ts +6 -0
  33. package/dist/admin-toolkit-ui/VideoControl/DclCast/SharePresentationModal.js +74 -0
  34. package/dist/admin-toolkit-ui/VideoControl/DclCast/SpeakerShowcase.d.ts +11 -0
  35. package/dist/admin-toolkit-ui/VideoControl/DclCast/SpeakerShowcase.js +110 -0
  36. package/dist/admin-toolkit-ui/VideoControl/DclCast/index.d.ts +17 -3
  37. package/dist/admin-toolkit-ui/VideoControl/DclCast/index.js +208 -35
  38. package/dist/admin-toolkit-ui/VideoControl/DclCast/styles.d.ts +73 -1
  39. package/dist/admin-toolkit-ui/VideoControl/DclCast/styles.js +193 -3
  40. package/dist/admin-toolkit-ui/VideoControl/LiveStream/ShowStreamKey.js +17 -13
  41. package/dist/admin-toolkit-ui/VideoControl/LiveStream/index.d.ts +1 -1
  42. package/dist/admin-toolkit-ui/VideoControl/LiveStream/index.js +8 -8
  43. package/dist/admin-toolkit-ui/VideoControl/VideoUrl.d.ts +2 -2
  44. package/dist/admin-toolkit-ui/VideoControl/VideoUrl.js +9 -9
  45. package/dist/admin-toolkit-ui/VideoControl/VolumeControl.d.ts +3 -2
  46. package/dist/admin-toolkit-ui/VideoControl/VolumeControl.js +8 -10
  47. package/dist/admin-toolkit-ui/VideoControl/api.d.ts +49 -0
  48. package/dist/admin-toolkit-ui/VideoControl/api.js +185 -1
  49. package/dist/admin-toolkit-ui/VideoControl/index.d.ts +16 -15
  50. package/dist/admin-toolkit-ui/VideoControl/index.js +57 -21
  51. package/dist/admin-toolkit-ui/VideoControl/utils.d.ts +2 -2
  52. package/dist/admin-toolkit-ui/VideoControl/utils.js +3 -3
  53. package/dist/admin-toolkit-ui/constants.d.ts +2 -3
  54. package/dist/admin-toolkit-ui/constants.js +4 -4
  55. package/dist/admin-toolkit-ui/fetch-utils.js +2 -2
  56. package/dist/admin-toolkit-ui/index.d.ts +4 -4
  57. package/dist/admin-toolkit-ui/index.js +40 -18
  58. package/dist/admin-toolkit-ui/types.d.ts +19 -0
  59. package/dist/admin-toolkit-ui/types.js +1 -1
  60. package/dist/admin.js +2 -2
  61. package/dist/bin/index.js +2169 -616
  62. package/dist/ui.js +4 -4
  63. package/package.json +5 -5
@@ -1,19 +1,19 @@
1
1
  import { Color4 } from '@dcl/sdk/math';
2
2
  import ReactEcs, { UiEntity, Input, Label } from '@dcl/react-ecs';
3
- import { COLORS, ICONS } from '.';
4
- import { createVideoPlayerControls, isVideoUrl } from './utils';
5
- import { VideoControlVolume } from './VolumeControl';
3
+ import { openExternalUrl } from '~system/RestrictedActions';
6
4
  import { Button } from '../Button';
7
5
  import { Header } from '../Header';
8
- import { openExternalUrl } from '~system/RestrictedActions';
9
6
  import { LIVEKIT_STREAM_SRC } from '../../definitions';
10
- import { CONTENT_URL } from '../constants';
7
+ import { getContentUrl } from '../constants';
8
+ import { VideoControlVolume } from './VolumeControl';
9
+ import { createVideoPlayerControls, isVideoUrl } from './utils';
10
+ import { COLORS, ICONS } from '.';
11
11
  const VIDEO_PLAYER_HELP_URL = 'https://docs.decentraland.org/creator/scene-editor/interactivity/video-screen';
12
- export const HELP_ICON = `${CONTENT_URL}/admin_toolkit/assets/icons/help.png`;
12
+ export const getHelpIcon = () => `${getContentUrl()}/admin_toolkit/assets/icons/help.png`;
13
13
  export function VideoControlURL({ engine, video, entity, }) {
14
14
  const [videoURL, setVideoURL] = ReactEcs.useState('');
15
15
  ReactEcs.useEffect(() => {
16
- const url = video?.src === LIVEKIT_STREAM_SRC ? '' : video?.src;
16
+ const url = video?.src?.startsWith('livekit-video://') ? '' : video?.src;
17
17
  setVideoURL(url ?? '');
18
18
  }, [entity]);
19
19
  const controls = createVideoPlayerControls(entity, engine);
@@ -28,7 +28,7 @@ export function VideoControlURL({ engine, video, entity, }) {
28
28
  }, uiBackground: {
29
29
  textureMode: 'stretch',
30
30
  color: Color4.White(),
31
- texture: { src: HELP_ICON },
31
+ texture: { src: getHelpIcon() },
32
32
  } })),
33
33
  ReactEcs.createElement(Label, { value: "Play videos by pasting an .m3u8 video URL below.", color: Color4.fromHexString('#A09BA8'), fontSize: 16 }),
34
34
  ReactEcs.createElement(Label, { value: "<b>Video URL<b>", color: Color4.White(), fontSize: 16, uiTransform: {
@@ -118,4 +118,4 @@ export function VideoControlURL({ engine, video, entity, }) {
118
118
  } })),
119
119
  ReactEcs.createElement(VideoControlVolume, { engine: engine, entity: entity, video: video, label: "<b>Video Volume</b>" })));
120
120
  }
121
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVmlkZW9VcmwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYWRtaW4tdG9vbGtpdC11aS9WaWRlb0NvbnRyb2wvVmlkZW9VcmwudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdkMsT0FBTyxRQUFRLEVBQUUsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sR0FBRyxDQUFDO0FBQ2xDLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxVQUFVLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDaEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDckQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNuQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ25DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRTNDLE1BQU0scUJBQXFCLEdBQ3pCLCtFQUErRSxDQUFDO0FBQ2xGLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxHQUFHLFdBQVcsc0NBQXNDLENBQUM7QUFFOUUsTUFBTSxVQUFVLGVBQWUsQ0FBQyxFQUM5QixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sR0FLUDtJQUNDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsV0FBVyxDQUFDLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN0RCxRQUFRLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtRQUN0QixNQUFNLEdBQUcsR0FBRyxL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S0FBSyxFQUFFLEtBQUssRUFDWixLQUFLLEVBQUMscUJBQXFCLEdBQzNCLENBQ08sQ0FDWixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbG9yNCB9IGZyb20gJ0BkY2wvc2RrL21hdGgnO1xuaW1wb3J0IHsgRGVlcFJlYWRvbmx5T2JqZWN0LCBJRW5naW5lLCBQQlZpZGVvUGxheWVyLCBFbnRpdHkgfSBmcm9tICdAZGNsL2Vjcyc7XG5pbXBvcnQgUmVhY3RFY3MsIHsgVWlFbnRpdHksIElucHV0LCBMYWJlbCB9IGZyb20gJ0BkY2wvcmVhY3QtZWNzJztcbmltcG9ydCB7IENPTE9SUywgSUNPTlMgfSBmcm9tICcuJztcbmltcG9ydCB7IGNyZWF0ZVZpZGVvUGxheWVyQ29udHJvbHMsIGlzVmlkZW9VcmwgfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IFZpZGVvQ29udHJvbFZvbHVtZSB9IGZyb20gJy4vVm9sdW1lQ29udHJvbCc7XG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tICcuLi9CdXR0b24nO1xuaW1wb3J0IHsgSGVhZGVyIH0gZnJvbSAnLi4vSGVhZGVyJztcbmltcG9ydCB7IG9wZW5FeHRlcm5hbFVybCB9IGZyb20gJ35zeXN0ZW0vUmVzdHJpY3RlZEFjdGlvbnMnO1xuaW1wb3J0IHsgTElWRUtJVF9TVFJFQU1fU1JDIH0gZnJvbSAnLi4vLi4vZGVmaW5pdGlvbnMnO1xuaW1wb3J0IHsgQ09OVEVOVF9VUkwgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuXG5jb25zdCBWSURFT19QTEFZRVJfSEVMUF9VUkwgPVxuICAnaHR0cHM6Ly9kb2NzLmRlY2VudHJhbGFuZC5vcmcvY3JlYXRvci9zY2VuZS1lZGl0b3IvaW50ZXJhY3Rpdml0eS92aWRlby1zY3JlZW4nO1xuZXhwb3J0IGNvbnN0IEhFTFBfSUNPTiA9IGAke0NPTlRFTlRfVVJMfS9hZG1pbl90b29sa2l0L2Fzc2V0cy9pY29ucy9oZWxwLnBuZ2A7XG5cbmV4cG9ydCBmdW5jdGlvbiBWaWRlb0NvbnRyb2xVUkwoe1xuICBlbmdpbmUsXG4gIHZpZGVvLFxuICBlbnRpdHksXG59OiB7XG4gIGVuZ2luZTogSUVuZ2luZTtcbiAgZW50aXR5OiBFbnRpdHk7XG4gIHZpZGVvOiBEZWVwUmVhZG9ubHlPYmplY3Q8UEJWaWRlb1BsYXllcj4gfCB1bmRlZmluZWQ7XG59KSB7XG4gIGNvbnN0IFt2aWRlb1VSTCwgc2V0VmlkZW9VUkxdID0gUmVhY3RFY3MudXNlU3RhdGUoJycpO1xuICBSZWFjdEVjcy51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IHVybCA9IHZpZGVvPy5zcmMgPT09IExJVkVLSVRfU1RSRUFNX1NSQyA/ICcnIDogdmlkZW8/LnNyYztcbiAgICBzZXRWaWRlb1VSTCh1cmwgPz8gJycpO1xuICB9LCBbZW50aXR5XSk7XG4gIGNvbnN0IGNvbnRyb2xzID0gY3JlYXRlVmlkZW9QbGF5ZXJDb250cm9scyhlbnRpdHksIGVuZ2luZSk7XG4gIGNvbnN0IGlzQWN0aXZlID0gdmlkZW8gJiYgaXNWaWRlb1VybCh2aWRlby5zcmMpO1xuICByZXR1cm4gKFxuICAgIDxVaUVudGl0eSB1aVRyYW5zZm9ybT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgd2lkdGg6ICcxMDAlJyB9fT5cbiAgICAgIDxVaUVudGl0eSB1aVRyYW5zZm9ybT17eyB3aWR0aDogJzEwMCUnLCBqdXN0aWZ5Q29udGVudDogJ3NwYWNlLWJldHdlZW4nIH19PlxuICAgICAgICA8SGVhZGVyXG4gICAgICAgICAgaWNvblNyYz17SUNPTlMuVklERU9fU09VUkNFfVxuICAgICAgICAgIHRpdGxlPVwiVmlkZW8gVVJMXCJcbiAgICAgICAgLz5cbiAgICAgICAgPFVpRW50aXR5XG4gICAgICAgICAgb25Nb3VzZURvd249eygpID0+IG9wZW5FeHRlcm5hbFVybCh7IHVybDogVklERU9fUExBWUVSX0hFTFBfVVJMIH0pfVxuICAgICAgICAgIHVpVHJhbnNmb3JtPXt7XG4gICAgICAgICAgICB3aWR0aDogMjUsXG4gICAgICAgICAgICBoZWlnaHQ6IDI1LFxuICAgICAgICAgICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgICAgICAgfX1cbiAgICAgICAgICB1aUJhY2tncm91bmQ9e3tcbiAgICAgICAgICAgIHRleHR1cmVNb2RlOiAnc3RyZXRjaCcsXG4gICAgICAgICAgICBjb2xvcjogQ29sb3I0LldoaXRlKCksXG4gICAgICAgICAgICB0ZXh0dXJlOiB7IHNyYzogSEVMUF9JQ09OIH0sXG4gICAgICAgICAgfX1cbiAgICAgICAgLz5cbiAgICAgIDwvVWlFbnRpdHk+XG4gICAgICA8TGFiZWxcbiAgICAgICAgdmFsdWU9XCJQbGF5IHZpZGVvcyBieSBwYXN0aW5nIGFuIC5tM3U4IHZpZGVvIFVSTCBiZWxvdy5cIlxuICAgICAgICBjb2xvcj17Q29sb3I0LmZyb21IZXhTdHJpbmcoJyNBMDlCQTgnKX1cbiAgICAgICAgZm9udFNpemU9ezE2fVxuICAgICAgLz5cbiAgICAgIDxMYWJlbFxuICAgICAgICB2YWx1ZT1cIjxiPlZpZGVvIFVSTDxiPlwiXG4gICAgICAgIGNvbG9yPXtDb2xvcjQuV2hpdGUoKX1cbiAgICAgICAgZm9udFNpemU9ezE2fVxuICAgICAgICB1aVRyYW5zZm9ybT17e1xuICAgICAgICAgIG1hcmdpbjogeyB0b3A6IDE2LCBib3R0b206IDggfSxcbiAgICAgICAgfX1cbiAgICAgIC8+XG5cbiAgICAgIDxJbnB1dFxuICAgICAgICBvbkNoYW5nZT17c2V0VmlkZW9VUkx9XG4gICAgICAgIHZhbHVlPXt2aWRlb1VSTH1cbiAgICAgICAgZm9udFNpemU9ezE2fVxuICAgICAgICB0ZXh0QWxpZ249XCJtaWRkbGUtbGVmdFwiXG4gICAgICAgIHBsYWNlaG9sZGVyPVwiUGFzdGUgeW91ciB2aWRlbyBVUkxcIlxuICAgICAgICBwbGFjZWhvbGRlckNvbG9yPXtDb2xvcjQuY3JlYXRlKDE2MCAvIDI1NSwgMTU1IC8gMjU1LCAxNjggLyAyNTUsIDEpfVxuICAgICAgICBjb2xvcj17aXNBY3RpdmUgPyBDb2xvcjQuQmxhY2soKSA6IENvbG9yNC5mcm9tSGV4U3RyaW5nKCcjQTA5QkE4Jyl9XG4gICAgICAgIHVpQmFja2dyb3VuZD17eyBjb2xvcjogQ29sb3I0LmZyb21IZXhTdHJpbmcoJyNGQ0ZDRkMnKSB9fVxuICAgICAgICB1aVRyYW5zZm9ybT17e1xuICAgICAgICAgIGJvcmRlclJhZGl1czogMTIsXG4gICAgICAgICAgYm9yZGVyQ29sb3I6IENvbG9yNC5XaGl0ZSgpLFxuICAgICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgICAgaGVpZ2h0OiA4MCxcbiAgICAgICAgfX1cbiAgICAgIC8+XG5cbiAgICAgIDxVaUVudGl0eVxuICAgICAgICB1aVRyYW5zZm9ybT17e1xuICAgICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgICAgaGVpZ2h0OiA0MCxcbiAgICAgICAgICBmbGV4RGlyZWN0aW9uOiAncm93JyxcbiAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ2ZsZXgtZW5kJyxcbiAgICAgICAgICBtYXJnaW46IHsgdG9wOiAxMCB9LFxuICAgICAgICB9fVxuICAgICAgPlxuICAgICAgICB7dmlkZW8/LnNyYyAmJiBpc1ZpZGVvVXJsKHZpZGVvLnNyYykgJiYgKFxuICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgIGlkPVwidmlkZW9fY29udHJvbF9zaGFyZV9zY3JlZW5fY2xlYXJcIlxuICAgICAgICAgICAgdmFsdWU9XCI8Yj5EZWFjdGl2YXRlPC9iPlwiXG4gICAgICAgICAgICB2YXJpYW50PVwidGV4dFwiXG4gICAgICAgICAgICBmb250U2l6ZT17MTZ9XG4gICAgICAgICAgICBjb2xvcj17Q29sb3I0LldoaXRlKCl9XG4gICAgICAgICAgICB1aVRyYW5zZm9ybT17e1xuICAgICAgICAgICAgICBtYXJnaW46IHsgcmlnaHQ6IDggfSxcbiAgICAgICAgICAgICAgcGFkZGluZzogeyBsZWZ0OiA4LCByaWdodDogOCB9LFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIG9uTW91c2VEb3duPXsoKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnRyb2xzLnNldFNvdXJjZSgnJyk7XG4gICAgICAgICAgICB9fVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICAgIHsoIXZpZGVvVVJMIHx8IHZpZGVvVVJMICE9PSB2aWRlbz8uc3JjKSAmJiAoXG4gICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgZGlzYWJsZWQ9eyFpc1ZpZGVvVXJsKHZpZGVvVVJMKX1cbiAgICAgICAgICAgIGlkPVwidmlkZW9fY29udHJvbF9zaGFyZV9zY3JlZW5fc2hhcmVcIlxuICAgICAgICAgICAgdmFsdWU9e1xuICAgICAgICAgICAgICB2aWRlbz8uc3JjICYmIHZpZGVvVVJMICE9PSB2aWRlby5zcmMgJiYgdmlkZW8uc3JjICE9PSBMSVZFS0lUX1NUUkVBTV9TUkNcbiAgICAgICAgICAgICAgICA/ICc8Yj5VcGRhdGU8L2I+J1xuICAgICAgICAgICAgICAgIDogJzxiPkFjdGl2YXRlPC9iPidcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxhYmVsVHJhbnNmb3JtPXt7XG4gICAgICAgICAgICAgIG1hcmdpbjogeyBsZWZ0OiA2LCByaWdodDogNiB9LFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIGZvbnRTaXplPXsxNn1cbiAgICAgICAgICAgIHVpQmFja2dyb3VuZD17e1xuICAgICAgICAgICAgICBjb2xvcjogaXNWaWRlb1VybCh2aWRlb1VSTCkgPyBDT0xPUlMuU1VDQ0VTUyA6IENvbG9yNC5mcm9tSGV4U3RyaW5nKCcjMjc0NDMxJyksXG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgY29sb3I9e0NvbG9yNC5CbGFjaygpfVxuICAgICAgICAgICAgb25Nb3VzZURvd249eygpID0+IHtcbiAgICAgICAgICAgICAgY29udHJvbHMuc2V0U291cmNlKHZpZGVvVVJMKTtcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgIDwvVWlFbnRpdHk+XG5cbiAgICAgIDxMYWJlbFxuICAgICAgICB2YWx1ZT1cIjxiPlZpZGVvIFBsYXliYWNrPC9iPlwiXG4gICAgICAgIGZvbnRTaXplPXsxNn1cbiAgICAgICAgY29sb3I9e0NvbG9yNC5XaGl0ZSgpfVxuICAgICAgICB1aVRyYW5zZm9ybT17eyBtYXJnaW46IHsgYm90dG9tOiAxMCB9IH19XG4gICAgICAvPlxuXG4gICAgICA8VWlFbnRpdHlcbiAgICAgICAgdWlUcmFuc2Zvcm09e3tcbiAgICAgICAgICBmbGV4RGlyZWN0aW9uOiAncm93JyxcbiAgICAgICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgICAgIG1hcmdpbjogeyBib3R0b206IDEwIH0sXG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBkaXNhYmxlZD17IWlzQWN0aXZlfVxuICAgICAgICAgIGlkPVwidmlkZW9fY29udHJvbF9wbGF5XCJcbiAgICAgICAgICB2YWx1ZT1cIjxiPlBsYXk8L2I+XCJcbiAgICAgICAgICBmb250U2l6ZT17MTh9XG4gICAgICAgICAgbGFiZWxUcmFuc2Zvcm09e3sgbWFyZ2luOiB7IHJpZ2h0OiAxMCB9IH19XG4gICAgICAgICAgdWlUcmFuc2Zvcm09e3tcbiAgICAgICAgICAgIG1hcmdpbjogeyB0b3A6IDAsIHJpZ2h0OiAxNiwgYm90dG9tOiAwLCBsZWZ0OiAwIH0sXG4gICAgICAgICAgICBoZWlnaHQ6IDQyLFxuICAgICAgICAgICAgbWluV2lkdGg6IDY5LFxuICAgICAgICAgICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gICAgICAgICAgICBwYWRkaW5nOiAwLFxuICAgICAgICAgIH19XG4gICAgICAgICAgaWNvbj17SUNPTlMuUExBWV9CVVRUT059XG4gICAgICAgICAgaWNvblRyYW5zZm9ybT17e1xuICAgICAgICAgICAgd2lkdGg6IDM1LFxuICAgICAgICAgICAgaGVpZ2h0OiAzNSxcbiAgICAgICAgICB9fVxuICAgICAgICAgIG9uTW91c2VEb3duPXsoKSA9PiB7XG4gICAgICAgICAgICBjb250cm9scy5wbGF5KCk7XG4gICAgICAgICAgfX1cbiAgICAgICAgLz5cbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGRpc2FibGVkPXshaXNBY3RpdmV9XG4gICAgICAgICAgaWQ9XCJ2aWRlb19jb250cm9sX3BhdXNlXCJcbiAgICAgICAgICB2YWx1ZT1cIjxiPlBhdXNlPC9iPlwiXG4gICAgICAgICAgZm9udFNpemU9ezE4fVxuICAgICAgICAgIGxhYmVsVHJhbnNmb3JtPXt7XG4gICAgICAgICAgICBtYXJnaW46IHsgbGVmdDogNiwgcmlnaHQ6IDYgfSxcbiAgICAgICAgICB9fVxuICAgICAgICAgIHVpVHJhbnNmb3JtPXt7XG4gICAgICAgICAgICBtYXJnaW46IHsgdG9wOiAwLCByaWdodDogMTYsIGJvdHRvbTogMCwgbGVmdDogMCB9LFxuICAgICAgICAgICAgaGVpZ2h0OiA0MixcbiAgICAgICAgICAgIG1pbldpZHRoOiA3OCxcbiAgICAgICAgICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInLFxuICAgICAgICAgICAgcGFkZGluZzogMCxcbiAgICAgICAgICB9fVxuICAgICAgICAgIG9uTW91c2VEb3duPXsoKSA9PiB7XG4gICAgICAgICAgICBjb250cm9scy5wYXVzZSgpO1xuICAgICAgICAgIH19XG4gICAgICAgIC8+XG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBkaXNhYmxlZD17IWlzQWN0aXZlfVxuICAgICAgICAgIGlkPVwidmlkZW9fY29udHJvbF9yZXN0YXJ0XCJcbiAgICAgICAgICB2YWx1ZT1cIjxiPlJlc3RhcnQ8L2I+XCJcbiAgICAgICAgICBsYWJlbFRyYW5zZm9ybT17e1xuICAgICAgICAgICAgbWFyZ2luOiB7IGxlZnQ6IDYsIHJpZ2h0OiA2IH0sXG4gICAgICAgICAgfX1cbiAgICAgICAgICBmb250U2l6ZT17MTh9XG4gICAgICAgICAgdWlUcmFuc2Zvcm09e3tcbiAgICAgICAgICAgIG1hcmdpbjogeyB0b3A6IDAsIHJpZ2h0OiAxNiwgYm90dG9tOiAwLCBsZWZ0OiAwIH0sXG4gICAgICAgICAgICBoZWlnaHQ6IDQyLFxuICAgICAgICAgICAgbWluV2lkdGg6IDg4LFxuICAgICAgICAgICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gICAgICAgICAgICBwYWRkaW5nOiAwLFxuICAgICAgICAgIH19XG4gICAgICAgICAgb25Nb3VzZURvd249eygpID0+IHtcbiAgICAgICAgICAgIGNvbnRyb2xzLnJlc3RhcnQoKTtcbiAgICAgICAgICB9fVxuICAgICAgICAvPlxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgZGlzYWJsZWQ9eyFpc0FjdGl2ZX1cbiAgICAgICAgICBpZD1cInZpZGVvX2NvbnRyb2xfbG9vcFwiXG4gICAgICAgICAgb25seUljb25cbiAgICAgICAgICB2YXJpYW50PXt2aWRlbz8ubG9vcCA/ICdwcmltYXJ5JyA6ICdzZWNvbmRhcnknfVxuICAgICAgICAgIHVpVHJhbnNmb3JtPXt7XG4gICAgICAgICAgICBoZWlnaHQ6IDQyLFxuICAgICAgICAgICAgd2lkdGg6IDQ5LFxuICAgICAgICAgICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gICAgICAgICAgICBwYWRkaW5nOiAwLFxuICAgICAgICAgIH19XG4gICAgICAgICAgaWNvbj17SUNPTlMuTE9PUH1cbiAgICAgICAgICBpY29uVHJhbnNmb3JtPXt7IHdpZHRoOiAyNSwgaGVpZ2h0OiAyNSB9fVxuICAgICAgICAgIGljb25CYWNrZ3JvdW5kPXt7XG4gICAgICAgICAgICBjb2xvcjogIXZpZGVvPy5sb29wID8gQ29sb3I0LldoaXRlKCkgOiBDb2xvcjQuQmxhY2soKSxcbiAgICAgICAgICB9fVxuICAgICAgICAgIGNvbG9yPXtDb2xvcjQuV2hpdGUoKX1cbiAgICAgICAgICBvbk1vdXNlRG93bj17KCkgPT4ge1xuICAgICAgICAgICAgY29udHJvbHMuc2V0TG9vcCghdmlkZW8/Lmxvb3ApO1xuICAgICAgICAgIH19XG4gICAgICAgIC8+XG4gICAgICA8L1VpRW50aXR5PlxuICAgICAgPFZpZGVvQ29udHJvbFZvbHVtZVxuICAgICAgICBlbmdpbmU9e2VuZ2luZX1cbiAgICAgICAgZW50aXR5PXtlbnRpdHl9XG4gICAgICAgIHZpZGVvPXt2aWRlb31cbiAgICAgICAgbGFiZWw9XCI8Yj5WaWRlbyBWb2x1bWU8L2I+XCJcbiAgICAgIC8+XG4gICAgPC9VaUVudGl0eT5cbiAgKTtcbn1cbiJdfQ==
121
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVmlkZW9VcmwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYWRtaW4tdG9vbGtpdC11aS9WaWRlb0NvbnRyb2wvVmlkZW9VcmwudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdkMsT0FBTyxRQUFRLEVBQUUsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ25DLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDbkMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDdkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUM3QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsVUFBVSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sR0FBRyxDQUFDO0FBRWxDLE1BQU0scUJBQXFCLEdBQ3pCLCtFQUErRSxDQUFDO0FBQ2xGLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLGFBQWEsRUFBRSxzQ0FBc0MsQ0FBQztBQUUxRixNQUFNLFVBQVUsZUFBZSxDQUFDLEVBQzlCLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxHQUtQO0lBQ0MsTUFBTSxDQUFDLFFBQVEsRUFBRSxXQUFXLENBQUMsR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3RELFFBQVEsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1FB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TUFBTSxFQUFFLE1BQU0sRUFDZCxNQUFNLEVBQUUsTUFBTSxFQUNkLEtBQUssRUFBRSxLQUFLLEVBQ1osS0FBSyxFQUFDLHFCQUFxQixHQUMzQixDQUNPLENBQ1osQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb2xvcjQgfSBmcm9tICdAZGNsL3Nkay9tYXRoJztcbmltcG9ydCB0eXBlIHsgRGVlcFJlYWRvbmx5T2JqZWN0LCBJRW5naW5lLCBQQlZpZGVvUGxheWVyLCBFbnRpdHkgfSBmcm9tICdAZGNsL2Vjcyc7XG5pbXBvcnQgUmVhY3RFY3MsIHsgVWlFbnRpdHksIElucHV0LCBMYWJlbCB9IGZyb20gJ0BkY2wvcmVhY3QtZWNzJztcbmltcG9ydCB7IG9wZW5FeHRlcm5hbFVybCB9IGZyb20gJ35zeXN0ZW0vUmVzdHJpY3RlZEFjdGlvbnMnO1xuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSAnLi4vQnV0dG9uJztcbmltcG9ydCB7IEhlYWRlciB9IGZyb20gJy4uL0hlYWRlcic7XG5pbXBvcnQgeyBMSVZFS0lUX1NUUkVBTV9TUkMgfSBmcm9tICcuLi8uLi9kZWZpbml0aW9ucyc7XG5pbXBvcnQgeyBnZXRDb250ZW50VXJsIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IFZpZGVvQ29udHJvbFZvbHVtZSB9IGZyb20gJy4vVm9sdW1lQ29udHJvbCc7XG5pbXBvcnQgeyBjcmVhdGVWaWRlb1BsYXllckNvbnRyb2xzLCBpc1ZpZGVvVXJsIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBDT0xPUlMsIElDT05TIH0gZnJvbSAnLic7XG5cbmNvbnN0IFZJREVPX1BMQVlFUl9IRUxQX1VSTCA9XG4gICdodHRwczovL2RvY3MuZGVjZW50cmFsYW5kLm9yZy9jcmVhdG9yL3NjZW5lLWVkaXRvci9pbnRlcmFjdGl2aXR5L3ZpZGVvLXNjcmVlbic7XG5leHBvcnQgY29uc3QgZ2V0SGVscEljb24gPSAoKSA9PiBgJHtnZXRDb250ZW50VXJsKCl9L2FkbWluX3Rvb2xraXQvYXNzZXRzL2ljb25zL2hlbHAucG5nYDtcblxuZXhwb3J0IGZ1bmN0aW9uIFZpZGVvQ29udHJvbFVSTCh7XG4gIGVuZ2luZSxcbiAgdmlkZW8sXG4gIGVudGl0eSxcbn06IHtcbiAgZW5naW5lOiBJRW5naW5lO1xuICBlbnRpdHk6IEVudGl0eTtcbiAgdmlkZW86IERlZXBSZWFkb25seU9iamVjdDxQQlZpZGVvUGxheWVyPiB8IHVuZGVmaW5lZDtcbn0pIHtcbiAgY29uc3QgW3ZpZGVvVVJMLCBzZXRWaWRlb1VSTF0gPSBSZWFjdEVjcy51c2VTdGF0ZSgnJyk7XG4gIFJlYWN0RWNzLnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgdXJsID0gdmlkZW8/LnNyYz8uc3RhcnRzV2l0aCgnbGl2ZWtpdC12aWRlbzovLycpID8gJycgOiB2aWRlbz8uc3JjO1xuICAgIHNldFZpZGVvVVJMKHVybCA/PyAnJyk7XG4gIH0sIFtlbnRpdHldKTtcbiAgY29uc3QgY29udHJvbHMgPSBjcmVhdGVWaWRlb1BsYXllckNvbnRyb2xzKGVudGl0eSwgZW5naW5lKTtcbiAgY29uc3QgaXNBY3RpdmUgPSB2aWRlbyAmJiBpc1ZpZGVvVXJsKHZpZGVvLnNyYyk7XG4gIHJldHVybiAoXG4gICAgPFVpRW50aXR5IHVpVHJhbnNmb3JtPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCB3aWR0aDogJzEwMCUnIH19PlxuICAgICAgPFVpRW50aXR5IHVpVHJhbnNmb3JtPXt7IHdpZHRoOiAnMTAwJScsIGp1c3RpZnlDb250ZW50OiAnc3BhY2UtYmV0d2VlbicgfX0+XG4gICAgICAgIDxIZWFkZXJcbiAgICAgICAgICBpY29uU3JjPXtJQ09OUy5WSURFT19TT1VSQ0V9XG4gICAgICAgICAgdGl0bGU9XCJWaWRlbyBVUkxcIlxuICAgICAgICAvPlxuICAgICAgICA8VWlFbnRpdHlcbiAgICAgICAgICBvbk1vdXNlRG93bj17KCkgPT4gb3BlbkV4dGVybmFsVXJsKHsgdXJsOiBWSURFT19QTEFZRVJfSEVMUF9VUkwgfSl9XG4gICAgICAgICAgdWlUcmFuc2Zvcm09e3tcbiAgICAgICAgICAgIHdpZHRoOiAyNSxcbiAgICAgICAgICAgIGhlaWdodDogMjUsXG4gICAgICAgICAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICAgICAgICB9fVxuICAgICAgICAgIHVpQmFja2dyb3VuZD17e1xuICAgICAgICAgICAgdGV4dHVyZU1vZGU6ICdzdHJldGNoJyxcbiAgICAgICAgICAgIGNvbG9yOiBDb2xvcjQuV2hpdGUoKSxcbiAgICAgICAgICAgIHRleHR1cmU6IHsgc3JjOiBnZXRIZWxwSWNvbigpIH0sXG4gICAgICAgICAgfX1cbiAgICAgICAgLz5cbiAgICAgIDwvVWlFbnRpdHk+XG4gICAgICA8TGFiZWxcbiAgICAgICAgdmFsdWU9XCJQbGF5IHZpZGVvcyBieSBwYXN0aW5nIGFuIC5tM3U4IHZpZGVvIFVSTCBiZWxvdy5cIlxuICAgICAgICBjb2xvcj17Q29sb3I0LmZyb21IZXhTdHJpbmcoJyNBMDlCQTgnKX1cbiAgICAgICAgZm9udFNpemU9ezE2fVxuICAgICAgLz5cbiAgICAgIDxMYWJlbFxuICAgICAgICB2YWx1ZT1cIjxiPlZpZGVvIFVSTDxiPlwiXG4gICAgICAgIGNvbG9yPXtDb2xvcjQuV2hpdGUoKX1cbiAgICAgICAgZm9udFNpemU9ezE2fVxuICAgICAgICB1aVRyYW5zZm9ybT17e1xuICAgICAgICAgIG1hcmdpbjogeyB0b3A6IDE2LCBib3R0b206IDggfSxcbiAgICAgICAgfX1cbiAgICAgIC8+XG5cbiAgICAgIDxJbnB1dFxuICAgICAgICBvbkNoYW5nZT17c2V0VmlkZW9VUkx9XG4gICAgICAgIHZhbHVlPXt2aWRlb1VSTH1cbiAgICAgICAgZm9udFNpemU9ezE2fVxuICAgICAgICB0ZXh0QWxpZ249XCJtaWRkbGUtbGVmdFwiXG4gICAgICAgIHBsYWNlaG9sZGVyPVwiUGFzdGUgeW91ciB2aWRlbyBVUkxcIlxuICAgICAgICBwbGFjZWhvbGRlckNvbG9yPXtDb2xvcjQuY3JlYXRlKDE2MCAvIDI1NSwgMTU1IC8gMjU1LCAxNjggLyAyNTUsIDEpfVxuICAgICAgICBjb2xvcj17aXNBY3RpdmUgPyBDb2xvcjQuQmxhY2soKSA6IENvbG9yNC5mcm9tSGV4U3RyaW5nKCcjQTA5QkE4Jyl9XG4gICAgICAgIHVpQmFja2dyb3VuZD17eyBjb2xvcjogQ29sb3I0LmZyb21IZXhTdHJpbmcoJyNGQ0ZDRkMnKSB9fVxuICAgICAgICB1aVRyYW5zZm9ybT17e1xuICAgICAgICAgIGJvcmRlclJhZGl1czogMTIsXG4gICAgICAgICAgYm9yZGVyQ29sb3I6IENvbG9yNC5XaGl0ZSgpLFxuICAgICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgICAgaGVpZ2h0OiA4MCxcbiAgICAgICAgfX1cbiAgICAgIC8+XG5cbiAgICAgIDxVaUVudGl0eVxuICAgICAgICB1aVRyYW5zZm9ybT17e1xuICAgICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgICAgaGVpZ2h0OiA0MCxcbiAgICAgICAgICBmbGV4RGlyZWN0aW9uOiAncm93JyxcbiAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ2ZsZXgtZW5kJyxcbiAgICAgICAgICBtYXJnaW46IHsgdG9wOiAxMCB9LFxuICAgICAgICB9fVxuICAgICAgPlxuICAgICAgICB7dmlkZW8/LnNyYyAmJiBpc1ZpZGVvVXJsKHZpZGVvLnNyYykgJiYgKFxuICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgIGlkPVwidmlkZW9fY29udHJvbF9zaGFyZV9zY3JlZW5fY2xlYXJcIlxuICAgICAgICAgICAgdmFsdWU9XCI8Yj5EZWFjdGl2YXRlPC9iPlwiXG4gICAgICAgICAgICB2YXJpYW50PVwidGV4dFwiXG4gICAgICAgICAgICBmb250U2l6ZT17MTZ9XG4gICAgICAgICAgICBjb2xvcj17Q29sb3I0LldoaXRlKCl9XG4gICAgICAgICAgICB1aVRyYW5zZm9ybT17e1xuICAgICAgICAgICAgICBtYXJnaW46IHsgcmlnaHQ6IDggfSxcbiAgICAgICAgICAgICAgcGFkZGluZzogeyBsZWZ0OiA4LCByaWdodDogOCB9LFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIG9uTW91c2VEb3duPXsoKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnRyb2xzLnNldFNvdXJjZSgnJyk7XG4gICAgICAgICAgICB9fVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICAgIHsoIXZpZGVvVVJMIHx8IHZpZGVvVVJMICE9PSB2aWRlbz8uc3JjKSAmJiAoXG4gICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgZGlzYWJsZWQ9eyFpc1ZpZGVvVXJsKHZpZGVvVVJMKX1cbiAgICAgICAgICAgIGlkPVwidmlkZW9fY29udHJvbF9zaGFyZV9zY3JlZW5fc2hhcmVcIlxuICAgICAgICAgICAgdmFsdWU9e1xuICAgICAgICAgICAgICB2aWRlbz8uc3JjICYmIHZpZGVvVVJMICE9PSB2aWRlby5zcmMgJiYgdmlkZW8uc3JjICE9PSBMSVZFS0lUX1NUUkVBTV9TUkNcbiAgICAgICAgICAgICAgICA/ICc8Yj5VcGRhdGU8L2I+J1xuICAgICAgICAgICAgICAgIDogJzxiPkFjdGl2YXRlPC9iPidcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxhYmVsVHJhbnNmb3JtPXt7XG4gICAgICAgICAgICAgIG1hcmdpbjogeyBsZWZ0OiA2LCByaWdodDogNiB9LFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIGZvbnRTaXplPXsxNn1cbiAgICAgICAgICAgIHVpQmFja2dyb3VuZD17e1xuICAgICAgICAgICAgICBjb2xvcjogaXNWaWRlb1VybCh2aWRlb1VSTCkgPyBDT0xPUlMuU1VDQ0VTUyA6IENvbG9yNC5mcm9tSGV4U3RyaW5nKCcjMjc0NDMxJyksXG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgY29sb3I9e0NvbG9yNC5CbGFjaygpfVxuICAgICAgICAgICAgb25Nb3VzZURvd249eygpID0+IHtcbiAgICAgICAgICAgICAgY29udHJvbHMuc2V0U291cmNlKHZpZGVvVVJMKTtcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgIDwvVWlFbnRpdHk+XG5cbiAgICAgIDxMYWJlbFxuICAgICAgICB2YWx1ZT1cIjxiPlZpZGVvIFBsYXliYWNrPC9iPlwiXG4gICAgICAgIGZvbnRTaXplPXsxNn1cbiAgICAgICAgY29sb3I9e0NvbG9yNC5XaGl0ZSgpfVxuICAgICAgICB1aVRyYW5zZm9ybT17eyBtYXJnaW46IHsgYm90dG9tOiAxMCB9IH19XG4gICAgICAvPlxuXG4gICAgICA8VWlFbnRpdHlcbiAgICAgICAgdWlUcmFuc2Zvcm09e3tcbiAgICAgICAgICBmbGV4RGlyZWN0aW9uOiAncm93JyxcbiAgICAgICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgICAgIG1hcmdpbjogeyBib3R0b206IDEwIH0sXG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBkaXNhYmxlZD17IWlzQWN0aXZlfVxuICAgICAgICAgIGlkPVwidmlkZW9fY29udHJvbF9wbGF5XCJcbiAgICAgICAgICB2YWx1ZT1cIjxiPlBsYXk8L2I+XCJcbiAgICAgICAgICBmb250U2l6ZT17MTh9XG4gICAgICAgICAgbGFiZWxUcmFuc2Zvcm09e3sgbWFyZ2luOiB7IHJpZ2h0OiAxMCB9IH19XG4gICAgICAgICAgdWlUcmFuc2Zvcm09e3tcbiAgICAgICAgICAgIG1hcmdpbjogeyB0b3A6IDAsIHJpZ2h0OiAxNiwgYm90dG9tOiAwLCBsZWZ0OiAwIH0sXG4gICAgICAgICAgICBoZWlnaHQ6IDQyLFxuICAgICAgICAgICAgbWluV2lkdGg6IDY5LFxuICAgICAgICAgICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gICAgICAgICAgICBwYWRkaW5nOiAwLFxuICAgICAgICAgIH19XG4gICAgICAgICAgaWNvbj17SUNPTlMuUExBWV9CVVRUT059XG4gICAgICAgICAgaWNvblRyYW5zZm9ybT17e1xuICAgICAgICAgICAgd2lkdGg6IDM1LFxuICAgICAgICAgICAgaGVpZ2h0OiAzNSxcbiAgICAgICAgICB9fVxuICAgICAgICAgIG9uTW91c2VEb3duPXsoKSA9PiB7XG4gICAgICAgICAgICBjb250cm9scy5wbGF5KCk7XG4gICAgICAgICAgfX1cbiAgICAgICAgLz5cbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGRpc2FibGVkPXshaXNBY3RpdmV9XG4gICAgICAgICAgaWQ9XCJ2aWRlb19jb250cm9sX3BhdXNlXCJcbiAgICAgICAgICB2YWx1ZT1cIjxiPlBhdXNlPC9iPlwiXG4gICAgICAgICAgZm9udFNpemU9ezE4fVxuICAgICAgICAgIGxhYmVsVHJhbnNmb3JtPXt7XG4gICAgICAgICAgICBtYXJnaW46IHsgbGVmdDogNiwgcmlnaHQ6IDYgfSxcbiAgICAgICAgICB9fVxuICAgICAgICAgIHVpVHJhbnNmb3JtPXt7XG4gICAgICAgICAgICBtYXJnaW46IHsgdG9wOiAwLCByaWdodDogMTYsIGJvdHRvbTogMCwgbGVmdDogMCB9LFxuICAgICAgICAgICAgaGVpZ2h0OiA0MixcbiAgICAgICAgICAgIG1pbldpZHRoOiA3OCxcbiAgICAgICAgICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInLFxuICAgICAgICAgICAgcGFkZGluZzogMCxcbiAgICAgICAgICB9fVxuICAgICAgICAgIG9uTW91c2VEb3duPXsoKSA9PiB7XG4gICAgICAgICAgICBjb250cm9scy5wYXVzZSgpO1xuICAgICAgICAgIH19XG4gICAgICAgIC8+XG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBkaXNhYmxlZD17IWlzQWN0aXZlfVxuICAgICAgICAgIGlkPVwidmlkZW9fY29udHJvbF9yZXN0YXJ0XCJcbiAgICAgICAgICB2YWx1ZT1cIjxiPlJlc3RhcnQ8L2I+XCJcbiAgICAgICAgICBsYWJlbFRyYW5zZm9ybT17e1xuICAgICAgICAgICAgbWFyZ2luOiB7IGxlZnQ6IDYsIHJpZ2h0OiA2IH0sXG4gICAgICAgICAgfX1cbiAgICAgICAgICBmb250U2l6ZT17MTh9XG4gICAgICAgICAgdWlUcmFuc2Zvcm09e3tcbiAgICAgICAgICAgIG1hcmdpbjogeyB0b3A6IDAsIHJpZ2h0OiAxNiwgYm90dG9tOiAwLCBsZWZ0OiAwIH0sXG4gICAgICAgICAgICBoZWlnaHQ6IDQyLFxuICAgICAgICAgICAgbWluV2lkdGg6IDg4LFxuICAgICAgICAgICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gICAgICAgICAgICBwYWRkaW5nOiAwLFxuICAgICAgICAgIH19XG4gICAgICAgICAgb25Nb3VzZURvd249eygpID0+IHtcbiAgICAgICAgICAgIGNvbnRyb2xzLnJlc3RhcnQoKTtcbiAgICAgICAgICB9fVxuICAgICAgICAvPlxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgZGlzYWJsZWQ9eyFpc0FjdGl2ZX1cbiAgICAgICAgICBpZD1cInZpZGVvX2NvbnRyb2xfbG9vcFwiXG4gICAgICAgICAgb25seUljb25cbiAgICAgICAgICB2YXJpYW50PXt2aWRlbz8ubG9vcCA/ICdwcmltYXJ5JyA6ICdzZWNvbmRhcnknfVxuICAgICAgICAgIHVpVHJhbnNmb3JtPXt7XG4gICAgICAgICAgICBoZWlnaHQ6IDQyLFxuICAgICAgICAgICAgd2lkdGg6IDQ5LFxuICAgICAgICAgICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gICAgICAgICAgICBwYWRkaW5nOiAwLFxuICAgICAgICAgIH19XG4gICAgICAgICAgaWNvbj17SUNPTlMuTE9PUH1cbiAgICAgICAgICBpY29uVHJhbnNmb3JtPXt7IHdpZHRoOiAyNSwgaGVpZ2h0OiAyNSB9fVxuICAgICAgICAgIGljb25CYWNrZ3JvdW5kPXt7XG4gICAgICAgICAgICBjb2xvcjogIXZpZGVvPy5sb29wID8gQ29sb3I0LldoaXRlKCkgOiBDb2xvcjQuQmxhY2soKSxcbiAgICAgICAgICB9fVxuICAgICAgICAgIGNvbG9yPXtDb2xvcjQuV2hpdGUoKX1cbiAgICAgICAgICBvbk1vdXNlRG93bj17KCkgPT4ge1xuICAgICAgICAgICAgY29udHJvbHMuc2V0TG9vcCghdmlkZW8/Lmxvb3ApO1xuICAgICAgICAgIH19XG4gICAgICAgIC8+XG4gICAgICA8L1VpRW50aXR5PlxuICAgICAgPFZpZGVvQ29udHJvbFZvbHVtZVxuICAgICAgICBlbmdpbmU9e2VuZ2luZX1cbiAgICAgICAgZW50aXR5PXtlbnRpdHl9XG4gICAgICAgIHZpZGVvPXt2aWRlb31cbiAgICAgICAgbGFiZWw9XCI8Yj5WaWRlbyBWb2x1bWU8L2I+XCJcbiAgICAgIC8+XG4gICAgPC9VaUVudGl0eT5cbiAgKTtcbn1cbiJdfQ==
@@ -1,8 +1,9 @@
1
- import { DeepReadonlyObject, Entity, IEngine, PBVideoPlayer } from '@dcl/ecs';
1
+ import type { DeepReadonlyObject, Entity, IEngine, PBVideoPlayer } from '@dcl/ecs';
2
2
  import ReactEcs from '@dcl/react-ecs';
3
- export declare function VideoControlVolume({ engine, label, entity, video, }: {
3
+ export declare function VideoControlVolume({ engine, label, entity, video, idPrefix, }: {
4
4
  engine: IEngine;
5
5
  label: string;
6
6
  entity: Entity;
7
7
  video: DeepReadonlyObject<PBVideoPlayer> | undefined;
8
+ idPrefix?: string;
8
9
  }): ReactEcs.JSX.Element;
@@ -3,7 +3,7 @@ import { Color4 } from '@dcl/ecs-math';
3
3
  import { Button } from '../Button';
4
4
  import { createVideoPlayerControls, getAdminToolkitVideoControl } from './utils';
5
5
  import { COLORS, DEFAULT_VOLUME, ICONS, VOLUME_STEP } from '.';
6
- export function VideoControlVolume({ engine, label, entity, video, }) {
6
+ export function VideoControlVolume({ engine, label, entity, video, idPrefix = 'video_control_volume', }) {
7
7
  const controls = createVideoPlayerControls(entity, engine);
8
8
  const videoControl = getAdminToolkitVideoControl(engine);
9
9
  const isSoundDisabled = videoControl?.disableVideoPlayersSound;
@@ -44,7 +44,7 @@ export function VideoControlVolume({ engine, label, entity, video, }) {
44
44
  ReactEcs.createElement(UiEntity, { uiTransform: {
45
45
  flexDirection: 'row',
46
46
  } },
47
- ReactEcs.createElement(Button, { id: "video_control_volume_minus", value: "Minus", fontSize: 14, uiTransform: {
47
+ ReactEcs.createElement(Button, { id: `${idPrefix}_minus`, value: "Minus", fontSize: 14, uiTransform: {
48
48
  margin: { top: 0, right: 16, bottom: 0, left: 0 },
49
49
  width: 49,
50
50
  alignItems: 'center',
@@ -53,7 +53,7 @@ export function VideoControlVolume({ engine, label, entity, video, }) {
53
53
  }, icon: ICONS.VOLUME_MINUS_BUTTON, onlyIcon: true, iconTransform: {
54
54
  width: 25,
55
55
  height: 25,
56
- }, onMouseDown: () => controls.setVolume(-VOLUME_STEP), disabled: isSoundDisabled || !video?.volume }),
56
+ }, onMouseDown: () => controls.setVolume(-VOLUME_STEP), disabled: isSoundDisabled || video?.volume === 0 }),
57
57
  ReactEcs.createElement(Label, { value: volumePercentage, fontSize: 18, color: COLORS.GRAY, uiTransform: {
58
58
  margin: { top: 0, right: 16, bottom: 0, left: 0 },
59
59
  alignItems: 'center',
@@ -61,7 +61,7 @@ export function VideoControlVolume({ engine, label, entity, video, }) {
61
61
  padding: 0,
62
62
  width: 60,
63
63
  } }),
64
- ReactEcs.createElement(Button, { id: "video_control_volume_plus", value: "Plus", fontSize: 14, icon: ICONS.VOLUME_PLUS_BUTTON, onlyIcon: true, iconTransform: {
64
+ ReactEcs.createElement(Button, { id: `${idPrefix}_plus`, value: "Plus", fontSize: 14, icon: ICONS.VOLUME_PLUS_BUTTON, onlyIcon: true, iconTransform: {
65
65
  width: 25,
66
66
  height: 25,
67
67
  }, uiTransform: {
@@ -71,18 +71,16 @@ export function VideoControlVolume({ engine, label, entity, video, }) {
71
71
  justifyContent: 'center',
72
72
  padding: 0,
73
73
  }, onMouseDown: () => controls.setVolume(VOLUME_STEP), disabled: isSoundDisabled || video?.volume === 1 }),
74
- ReactEcs.createElement(Button, { id: "video_control_volume_mute", variant: !video?.volume ? 'primary' : 'secondary', fontSize: 18, iconTransform: { width: 24, height: 24 }, onlyIcon: true, icon: ICONS.MUTE, iconBackground: {
75
- color: video?.volume ? Color4.White() : Color4.Black(),
74
+ ReactEcs.createElement(Button, { id: `${idPrefix}_mute`, variant: video?.volume === 0 ? 'primary' : 'secondary', fontSize: 18, iconTransform: { width: 24, height: 24 }, onlyIcon: true, icon: ICONS.MUTE, iconBackground: {
75
+ color: video?.volume === 0 ? Color4.Black() : Color4.White(),
76
76
  }, uiTransform: {
77
- borderColor: Color4.fromHexString('#FCFCFC'),
78
- borderWidth: 2,
79
77
  width: 49,
80
78
  height: 42,
81
79
  alignItems: 'center',
82
80
  justifyContent: 'center',
83
81
  padding: 0,
84
82
  }, onMouseDown: () => {
85
- controls.setVolume(!video?.volume ? 100 : 0);
83
+ controls.setVolume(video?.volume === 0 ? 100 : 0);
86
84
  }, disabled: isSoundDisabled }))));
87
85
  }
88
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVm9sdW1lQ29udHJvbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hZG1pbi10b29sa2l0LXVpL1ZpZGVvQ29udHJvbC9Wb2x1bWVDb250cm9sLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLFFBQVEsRUFBRSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDbkMsT0FBTyxFQUFFLHlCQUF5QixFQUFFLDJCQUEyQixFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSxHQUFHLENBQUM7QUFFL0QsTUFBTSxVQUFVLGtCQUFrQixDQUFDLEVBQ2pDLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLEtBQUssR0FNTjtJQUNDLE1BQU0sUUFBUSxHQUFHLHlCQUF5QixDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztJQUMzRCxNQUFNLFlBQVksR0FBRywyQkFBMkIsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN6RCxNQUFNLGVBQWUsR0FBRyxZQUFZLEVBQUUsd0JBQXdCLENBQUM7SUFDL0QsTUFBTSxnQkFBZ0IsR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsTUFBTSxJQUFJLGNBQWMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUM7SUFFbkYsSUFBSSxlQUFlLEVBQUUsQ0FBQztRQUNwQixPQUFPLENBQ0wsdUJBQUMsUUFBUSxJQUFDLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUMzQyx1QkFBQyxRQUFRLElBQ1AsV0FBVyxFQUFFO29C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LEtBQUssRUFBRTtpQkFDdkQsRUFDRCxXQUFXLEVBQUU7b0JBQ1gsV0FBVyxFQUFFLE1BQU0sQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDO29CQUM1QyxXQUFXLEVBQUUsQ0FBQztvQkFDZCxLQUFLLEVBQUUsRUFBRTtvQkFDVCxNQUFNLEVBQUUsRUFBRTtvQkFDVixVQUFVLEVBQUUsUUFBUTtvQkFDcEIsY0FBYyxFQUFFLFFBQVE7b0JBQ3hCLE9BQU8sRUFBRSxDQUFDO2lCQUNYLEVBQ0QsV0FBVyxFQUFFLEdBQUcsRUFBRTtvQkFDaEIsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQy9DLENBQUMsRUFDRCxRQUFRLEVBQUUsZUFBZSxHQUN6QixDQUNPLENBQ0YsQ0FDWixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERlZXBSZWFkb25seU9iamVjdCwgRW50aXR5LCBJRW5naW5lLCBQQlZpZGVvUGxheWVyIH0gZnJvbSAnQGRjbC9lY3MnO1xuaW1wb3J0IFJlYWN0RWNzLCB7IExhYmVsLCBVaUVudGl0eSB9IGZyb20gJ0BkY2wvcmVhY3QtZWNzJztcbmltcG9ydCB7IENvbG9yNCB9IGZyb20gJ0BkY2wvZWNzLW1hdGgnO1xuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSAnLi4vQnV0dG9uJztcbmltcG9ydCB7IGNyZWF0ZVZpZGVvUGxheWVyQ29udHJvbHMsIGdldEFkbWluVG9vbGtpdFZpZGVvQ29udHJvbCB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgQ09MT1JTLCBERUZBVUxUX1ZPTFVNRSwgSUNPTlMsIFZPTFVNRV9TVEVQIH0gZnJvbSAnLic7XG5cbmV4cG9ydCBmdW5jdGlvbiBWaWRlb0NvbnRyb2xWb2x1bWUoe1xuICBlbmdpbmUsXG4gIGxhYmVsLFxuICBlbnRpdHksXG4gIHZpZGVvLFxufToge1xuICBlbmdpbmU6IElFbmdpbmU7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIGVudGl0eTogRW50aXR5O1xuICB2aWRlbzogRGVlcFJlYWRvbmx5T2JqZWN0PFBCVmlkZW9QbGF5ZXI+IHwgdW5kZWZpbmVkO1xufSkge1xuICBjb25zdCBjb250cm9scyA9IGNyZWF0ZVZpZGVvUGxheWVyQ29udHJvbHMoZW50aXR5LCBlbmdpbmUpO1xuICBjb25zdCB2aWRlb0NvbnRyb2wgPSBnZXRBZG1pblRvb2xraXRWaWRlb0NvbnRyb2woZW5naW5lKTtcbiAgY29uc3QgaXNTb3VuZERpc2FibGVkID0gdmlkZW9Db250cm9sPy5kaXNhYmxlVmlkZW9QbGF5ZXJzU291bmQ7XG4gIGNvbnN0IHZvbHVtZVBlcmNlbnRhZ2UgPSBgJHtNYXRoLnJvdW5kKCh2aWRlbz8udm9sdW1lID8/IERFRkFVTFRfVk9MVU1FKSAqIDEwMCl9JWA7XG5cbiAgaWYgKGlzU291bmREaXNhYmxlZCkge1xuICAgIHJldHVybiAoXG4gICAgICA8VWlFbnRpdHkgdWlUcmFuc2Zvcm09e3sgbWFyZ2luOiB7IHRvcDogNCB9IH19PlxuICAgICAgICA8VWlFbnRpdHlcbiAgICAgICAgICB1aVRyYW5zZm9ybT17e1xuICAgICAgICAgICAgd2lkdGg6IDI0LFxuICAgICAgICAgICAgaGVpZ2h0OiAyNCxcbiAgICAgICAgICAgIG1hcmdpbjogeyByaWdodDogOCB9LFxuICAgICAgICAgIH19XG4gICAgICAgICAgdWlCYWNrZ3JvdW5kPXt7XG4gICAgICAgICAgICB0ZXh0dXJlTW9kZTogJ3N0cmV0Y2gnLFxuICAgICAgICAgICAgdGV4dHVyZToge1xuICAgICAgICAgICAgICBzcmM6IElDT05TLk1VVEUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY29sb3I6IENvbG9yNC5mcm9tSGV4U3RyaW5nKCcjQTA5QkE4JyksXG4gICAgICAgICAgfX1cbiAgICAgICAgLz5cbiAgICAgICAgPExhYmVsXG4gICAgICAgICAgdmFsdWU9XCJTb3VuZCBpcyBkaXNhYmxlZCBmb3IgYWxsIHNjcmVlbnNcIlxuICAgICAgICAgIGNvbG9yPXtDb2xvcjQuZnJvbUhleFN0cmluZygnI0EwOUJBOCcpfVxuICAgICAgICAgIGZvbnRTaXplPXsxNH1cbiAgICAgICAgLz5cbiAgICAgICAgPFVpRW50aXR5XG4gICAgICAgICAgdWlUcmFuc2Zvcm09e3tcbiAgICAgICAgICAgIHdpZHRoOiAyNSxcbiAgICAgICAgICAgIGhlaWdodDogMjUsXG4gICAgICAgICAgICBtYXJnaW46IHsgbGVmdDogOCB9LFxuICAgICAgICAgIH19XG4gICAgICAgICAgdWlCYWNrZ3JvdW5kPXt7XG4gICAgICAgICAgICB0ZXh0dXJlTW9kZTogJ3N0cmV0Y2gnLFxuICAgICAgICAgICAgdGV4dHVyZToge1xuICAgICAgICAgICAgICBzcmM6IElDT05TLklORk8sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY29sb3I6IENvbG9yNC5XaGl0ZSgpLFxuICAgICAgICAgIH19XG4gICAgICAgIC8+XG4gICAgICA8L1VpRW50aXR5PlxuICAgICk7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxVaUVudGl0eVxuICAgICAgdWlUcmFuc2Zvcm09e3tcbiAgICAgICAgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsXG4gICAgICAgIG1hcmdpbjogeyB0b3A6IDE2IH0sXG4gICAgICB9fVxuICAgID5cbiAgICAgIDxMYWJlbFxuICAgICAgICB2YWx1ZT17bGFiZWx9XG4gICAgICAgIGZvbnRTaXplPXsxNn1cbiAgICAgICAgY29sb3I9e0NPTE9SUy5XSElURX1cbiAgICAgICAgdWlUcmFuc2Zvcm09e3tcbiAgICAgICAgICBtYXJnaW46IHsgdG9wOiAwLCByaWdodDogMCwgYm90dG9tOiAxMCwgbGVmdDogMCB9LFxuICAgICAgICB9fVxuICAgICAgLz5cblxuICAgICAgPFVpRW50aXR5XG4gICAgICAgIHVpVHJhbnNmb3JtPXt7XG4gICAgICAgICAgZmxleERpcmVjdGlvbjogJ3JvdycsXG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBpZD1cInZpZGVvX2NvbnRyb2xfdm9sdW1lX21pbnVzXCJcbiAgICAgICAgICB2YWx1ZT1cIk1pbnVzXCJcbiAgICAgICAgICBmb250U2l6ZT17MTR9XG4gICAgICAgICAgdWlUcmFuc2Zvcm09e3tcbiAgICAgICAgICAgIG1hcmdpbjogeyB0b3A6IDAsIHJpZ2h0OiAxNiwgYm90dG9tOiAwLCBsZWZ0OiAwIH0sXG4gICAgICAgICAgICB3aWR0aDogNDksXG4gICAgICAgICAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICAgICAgICAgIHBhZGRpbmc6IDAsXG4gICAgICAgICAgfX1cbiAgICAgICAgICBpY29uPXtJQ09OUy5WT0xVTUVfTUlOVVNfQlVUVE9OfVxuICAgICAgICAgIG9ubHlJY29uPXt0cnVlfVxuICAgICAgICAgIGljb25UcmFuc2Zvcm09e3tcbiAgICAgICAgICAgIHdpZHRoOiAyNSxcbiAgICAgICAgICAgIGhlaWdodDogMjUsXG4gICAgICAgICAgfX1cbiAgICAgICAgICBvbk1vdXNlRG93bj17KCkgPT4gY29udHJvbHMuc2V0Vm9sdW1lKC1WT0xVTUVfU1RFUCl9XG4gICAgICAgICAgZGlzYWJsZWQ9e2lzU291bmREaXNhYmxlZCB8fCAhdmlkZW8/LnZvbHVtZX1cbiAgICAgICAgLz5cbiAgICAgICAgPExhYmVsXG4gICAgICAgICAgdmFsdWU9e3ZvbHVtZVBlcmNlbnRhZ2V9XG4gICAgICAgICAgZm9udFNpemU9ezE4fVxuICAgICAgICAgIGNvbG9yPXtDT0xPUlMuR1JBWX1cbiAgICAgICAgICB1aVRyYW5zZm9ybT17e1xuICAgICAgICAgICAgbWFyZ2luOiB7IHRvcDogMCwgcmlnaHQ6IDE2LCBib3R0b206IDAsIGxlZnQ6IDAgfSxcbiAgICAgICAgICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInLFxuICAgICAgICAgICAgcGFkZGluZzogMCxcbiAgICAgICAgICAgIHdpZHRoOiA2MCxcbiAgICAgICAgICB9fVxuICAgICAgICAvPlxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgaWQ9XCJ2aWRlb19jb250cm9sX3ZvbHVtZV9wbHVzXCJcbiAgICAgICAgICB2YWx1ZT1cIlBsdXNcIlxuICAgICAgICAgIGZvbnRTaXplPXsxNH1cbiAgICAgICAgICBpY29uPXtJQ09OUy5WT0xVTUVfUExVU19CVVRUT059XG4gICAgICAgICAgb25seUljb249e3RydWV9XG4gICAgICAgICAgaWNvblRyYW5zZm9ybT17e1xuICAgICAgICAgICAgd2lkdGg6IDI1LFxuICAgICAgICAgICAgaGVpZ2h0OiAyNSxcbiAgICAgICAgICB9fVxuICAgICAgICAgIHVpVHJhbnNmb3JtPXt7XG4gICAgICAgICAgICBtYXJnaW46IHsgdG9wOiAwLCByaWdodDogMTYsIGJvdHRvbTogMCwgbGVmdDogMCB9LFxuICAgICAgICAgICAgd2lkdGg6IDQ5LFxuICAgICAgICAgICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gICAgICAgICAgICBwYWRkaW5nOiAwLFxuICAgICAgICAgIH19XG4gICAgICAgICAgb25Nb3VzZURvd249eygpID0+IGNvbnRyb2xzLnNldFZvbHVtZShWT0xVTUVfU1RFUCl9XG4gICAgICAgICAgZGlzYWJsZWQ9e2lzU291bmREaXNhYmxlZCB8fCB2aWRlbz8udm9sdW1lID09PSAxfVxuICAgICAgICAvPlxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgaWQ9XCJ2aWRlb19jb250cm9sX3ZvbHVtZV9tdXRlXCJcbiAgICAgICAgICB2YXJpYW50PXshdmlkZW8/LnZvbHVtZSA/ICdwcmltYXJ5JyA6ICdzZWNvbmRhcnknfVxuICAgICAgICAgIGZvbnRTaXplPXsxOH1cbiAgICAgICAgICBpY29uVHJhbnNmb3JtPXt7IHdpZHRoOiAyNCwgaGVpZ2h0OiAyNCB9fVxuICAgICAgICAgIG9ubHlJY29uXG4gICAgICAgICAgaWNvbj17SUNPTlMuTVVURX1cbiAgICAgICAgICBpY29uQmFja2dyb3VuZD17e1xuICAgICAgICAgICAgY29sb3I6IHZpZGVvPy52b2x1bWUgPyBDb2xvcjQuV2hpdGUoKSA6IENvbG9yNC5CbGFjaygpLFxuICAgICAgICAgIH19XG4gICAgICAgICAgdWlUcmFuc2Zvcm09e3tcbiAgICAgICAgICAgIGJvcmRlckNvbG9yOiBDb2xvcjQuZnJvbUhleFN0cmluZygnI0ZDRkNGQycpLFxuICAgICAgICAgICAgYm9yZGVyV2lkdGg6IDIsXG4gICAgICAgICAgICB3aWR0aDogNDksXG4gICAgICAgICAgICBoZWlnaHQ6IDQyLFxuICAgICAgICAgICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gICAgICAgICAgICBwYWRkaW5nOiAwLFxuICAgICAgICAgIH19XG4gICAgICAgICAgb25Nb3VzZURvd249eygpID0+IHtcbiAgICAgICAgICAgIGNvbnRyb2xzLnNldFZvbHVtZSghdmlkZW8/LnZvbHVtZSA/IDEwMCA6IDApO1xuICAgICAgICAgIH19XG4gICAgICAgICAgZGlzYWJsZWQ9e2lzU291bmREaXNhYmxlZH1cbiAgICAgICAgLz5cbiAgICAgIDwvVWlFbnRpdHk+XG4gICAgPC9VaUVudGl0eT5cbiAgKTtcbn1cbiJdfQ==
86
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVm9sdW1lQ29udHJvbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hZG1pbi10b29sa2l0LXVpL1ZpZGVvQ29udHJvbC9Wb2x1bWVDb250cm9sLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLFFBQVEsRUFBRSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDbkMsT0FBTyxFQUFFLHlCQUF5QixFQUFFLDJCQUEyQixFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSxHQUFHLENBQUM7QUFFL0QsTUFBTSxVQUFVLGtCQUFrQixDQUFDLEVBQ2pDLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLEtBQUssRUFDTCxRQUFRLEdBQUcsc0JBQXNCLEdBT2xDO0lBQ0MsTUFBTSxRQUFRLEdBQUcseUJBQXlCLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzNELE1BQU0sWUFBWSxHQUFHLDJCQUEyQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3pELE1BQU0sZUFBZSxHQUFHLFlBQVksRUFBRSx3QkFBd0IsQ0FBQztJQUMvRCxNQUFNLGdCQUFnQixHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssRUFBRSxNQUFNLElBQUksY0FBYyxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQztJQUVuRixJQUFJLGVBQWUsRUFBRSxDQUFDO1FBQ3BCLE9BQU8sQ0FDTCx1QkFBQyxRQUFRLElBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQzNDLHVCQUFD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QUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUU7aUJBQzdELEVBQ0QsV0FBVyxFQUFFO29CQUNYLEtBQUssRUFBRSxFQUFFO29CQUNULE1BQU0sRUFBRSxFQUFFO29CQUNWLFVBQVUsRUFBRSxRQUFRO29CQUNwQixjQUFjLEVBQUUsUUFBUTtvQkFDeEIsT0FBTyxFQUFFLENBQUM7aUJBQ1gsRUFDRCxXQUFXLEVBQUUsR0FBRyxFQUFFO29CQUNoQixRQUFRLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNwRCxDQUFDLEVBQ0QsUUFBUSxFQUFFLGVBQWUsR0FDekIsQ0FDTyxDQUNGLENBQ1osQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IERlZXBSZWFkb25seU9iamVjdCwgRW50aXR5LCBJRW5naW5lLCBQQlZpZGVvUGxheWVyIH0gZnJvbSAnQGRjbC9lY3MnO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuaW1wb3J0IFJlYWN0RWNzLCB7IExhYmVsLCBVaUVudGl0eSB9IGZyb20gJ0BkY2wvcmVhY3QtZWNzJztcbmltcG9ydCB7IENvbG9yNCB9IGZyb20gJ0BkY2wvZWNzLW1hdGgnO1xuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSAnLi4vQnV0dG9uJztcbmltcG9ydCB7IGNyZWF0ZVZpZGVvUGxheWVyQ29udHJvbHMsIGdldEFkbWluVG9vbGtpdFZpZGVvQ29udHJvbCB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgQ09MT1JTLCBERUZBVUxUX1ZPTFVNRSwgSUNPTlMsIFZPTFVNRV9TVEVQIH0gZnJvbSAnLic7XG5cbmV4cG9ydCBmdW5jdGlvbiBWaWRlb0NvbnRyb2xWb2x1bWUoe1xuICBlbmdpbmUsXG4gIGxhYmVsLFxuICBlbnRpdHksXG4gIHZpZGVvLFxuICBpZFByZWZpeCA9ICd2aWRlb19jb250cm9sX3ZvbHVtZScsXG59OiB7XG4gIGVuZ2luZTogSUVuZ2luZTtcbiAgbGFiZWw6IHN0cmluZztcbiAgZW50aXR5OiBFbnRpdHk7XG4gIHZpZGVvOiBEZWVwUmVhZG9ubHlPYmplY3Q8UEJWaWRlb1BsYXllcj4gfCB1bmRlZmluZWQ7XG4gIGlkUHJlZml4Pzogc3RyaW5nO1xufSkge1xuICBjb25zdCBjb250cm9scyA9IGNyZWF0ZVZpZGVvUGxheWVyQ29udHJvbHMoZW50aXR5LCBlbmdpbmUpO1xuICBjb25zdCB2aWRlb0NvbnRyb2wgPSBnZXRBZG1pblRvb2xraXRWaWRlb0NvbnRyb2woZW5naW5lKTtcbiAgY29uc3QgaXNTb3VuZERpc2FibGVkID0gdmlkZW9Db250cm9sPy5kaXNhYmxlVmlkZW9QbGF5ZXJzU291bmQ7XG4gIGNvbnN0IHZvbHVtZVBlcmNlbnRhZ2UgPSBgJHtNYXRoLnJvdW5kKCh2aWRlbz8udm9sdW1lID8/IERFRkFVTFRfVk9MVU1FKSAqIDEwMCl9JWA7XG5cbiAgaWYgKGlzU291bmREaXNhYmxlZCkge1xuICAgIHJldHVybiAoXG4gICAgICA8VWlFbnRpdHkgdWlUcmFuc2Zvcm09e3sgbWFyZ2luOiB7IHRvcDogNCB9IH19PlxuICAgICAgICA8VWlFbnRpdHlcbiAgICAgICAgICB1aVRyYW5zZm9ybT17e1xuICAgICAgICAgICAgd2lkdGg6IDI0LFxuICAgICAgICAgICAgaGVpZ2h0OiAyNCxcbiAgICAgICAgICAgIG1hcmdpbjogeyByaWdodDogOCB9LFxuICAgICAgICAgIH19XG4gICAgICAgICAgdWlCYWNrZ3JvdW5kPXt7XG4gICAgICAgICAgICB0ZXh0dXJlTW9kZTogJ3N0cmV0Y2gnLFxuICAgICAgICAgICAgdGV4dHVyZToge1xuICAgICAgICAgICAgICBzcmM6IElDT05TLk1VVEUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY29sb3I6IENvbG9yNC5mcm9tSGV4U3RyaW5nKCcjQTA5QkE4JyksXG4gICAgICAgICAgfX1cbiAgICAgICAgLz5cbiAgICAgICAgPExhYmVsXG4gICAgICAgICAgdmFsdWU9XCJTb3VuZCBpcyBkaXNhYmxlZCBmb3IgYWxsIHNjcmVlbnNcIlxuICAgICAgICAgIGNvbG9yPXtDb2xvcjQuZnJvbUhleFN0cmluZygnI0EwOUJBOCcpfVxuICAgICAgICAgIGZvbnRTaXplPXsxNH1cbiAgICAgICAgLz5cbiAgICAgICAgPFVpRW50aXR5XG4gICAgICAgICAgdWlUcmFuc2Zvcm09e3tcbiAgICAgICAgICAgIHdpZHRoOiAyNSxcbiAgICAgICAgICAgIGhlaWdodDogMjUsXG4gICAgICAgICAgICBtYXJnaW46IHsgbGVmdDogOCB9LFxuICAgICAgICAgIH19XG4gICAgICAgICAgdWlCYWNrZ3JvdW5kPXt7XG4gICAgICAgICAgICB0ZXh0dXJlTW9kZTogJ3N0cmV0Y2gnLFxuICAgICAgICAgICAgdGV4dHVyZToge1xuICAgICAgICAgICAgICBzcmM6IElDT05TLklORk8sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY29sb3I6IENvbG9yNC5XaGl0ZSgpLFxuICAgICAgICAgIH19XG4gICAgICAgIC8+XG4gICAgICA8L1VpRW50aXR5PlxuICAgICk7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxVaUVudGl0eVxuICAgICAgdWlUcmFuc2Zvcm09e3tcbiAgICAgICAgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsXG4gICAgICAgIG1hcmdpbjogeyB0b3A6IDE2IH0sXG4gICAgICB9fVxuICAgID5cbiAgICAgIDxMYWJlbFxuICAgICAgICB2YWx1ZT17bGFiZWx9XG4gICAgICAgIGZvbnRTaXplPXsxNn1cbiAgICAgICAgY29sb3I9e0NPTE9SUy5XSElURX1cbiAgICAgICAgdWlUcmFuc2Zvcm09e3tcbiAgICAgICAgICBtYXJnaW46IHsgdG9wOiAwLCByaWdodDogMCwgYm90dG9tOiAxMCwgbGVmdDogMCB9LFxuICAgICAgICB9fVxuICAgICAgLz5cblxuICAgICAgPFVpRW50aXR5XG4gICAgICAgIHVpVHJhbnNmb3JtPXt7XG4gICAgICAgICAgZmxleERpcmVjdGlvbjogJ3JvdycsXG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBpZD17YCR7aWRQcmVmaXh9X21pbnVzYH1cbiAgICAgICAgICB2YWx1ZT1cIk1pbnVzXCJcbiAgICAgICAgICBmb250U2l6ZT17MTR9XG4gICAgICAgICAgdWlUcmFuc2Zvcm09e3tcbiAgICAgICAgICAgIG1hcmdpbjogeyB0b3A6IDAsIHJpZ2h0OiAxNiwgYm90dG9tOiAwLCBsZWZ0OiAwIH0sXG4gICAgICAgICAgICB3aWR0aDogNDksXG4gICAgICAgICAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICAgICAgICAgIHBhZGRpbmc6IDAsXG4gICAgICAgICAgfX1cbiAgICAgICAgICBpY29uPXtJQ09OUy5WT0xVTUVfTUlOVVNfQlVUVE9OfVxuICAgICAgICAgIG9ubHlJY29uPXt0cnVlfVxuICAgICAgICAgIGljb25UcmFuc2Zvcm09e3tcbiAgICAgICAgICAgIHdpZHRoOiAyNSxcbiAgICAgICAgICAgIGhlaWdodDogMjUsXG4gICAgICAgICAgfX1cbiAgICAgICAgICBvbk1vdXNlRG93bj17KCkgPT4gY29udHJvbHMuc2V0Vm9sdW1lKC1WT0xVTUVfU1RFUCl9XG4gICAgICAgICAgZGlzYWJsZWQ9e2lzU291bmREaXNhYmxlZCB8fCB2aWRlbz8udm9sdW1lID09PSAwfVxuICAgICAgICAvPlxuICAgICAgICA8TGFiZWxcbiAgICAgICAgICB2YWx1ZT17dm9sdW1lUGVyY2VudGFnZX1cbiAgICAgICAgICBmb250U2l6ZT17MTh9XG4gICAgICAgICAgY29sb3I9e0NPTE9SUy5HUkFZfVxuICAgICAgICAgIHVpVHJhbnNmb3JtPXt7XG4gICAgICAgICAgICBtYXJnaW46IHsgdG9wOiAwLCByaWdodDogMTYsIGJvdHRvbTogMCwgbGVmdDogMCB9LFxuICAgICAgICAgICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gICAgICAgICAgICBwYWRkaW5nOiAwLFxuICAgICAgICAgICAgd2lkdGg6IDYwLFxuICAgICAgICAgIH19XG4gICAgICAgIC8+XG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBpZD17YCR7aWRQcmVmaXh9X3BsdXNgfVxuICAgICAgICAgIHZhbHVlPVwiUGx1c1wiXG4gICAgICAgICAgZm9udFNpemU9ezE0fVxuICAgICAgICAgIGljb249e0lDT05TLlZPTFVNRV9QTFVTX0JVVFRPTn1cbiAgICAgICAgICBvbmx5SWNvbj17dHJ1ZX1cbiAgICAgICAgICBpY29uVHJhbnNmb3JtPXt7XG4gICAgICAgICAgICB3aWR0aDogMjUsXG4gICAgICAgICAgICBoZWlnaHQ6IDI1LFxuICAgICAgICAgIH19XG4gICAgICAgICAgdWlUcmFuc2Zvcm09e3tcbiAgICAgICAgICAgIG1hcmdpbjogeyB0b3A6IDAsIHJpZ2h0OiAxNiwgYm90dG9tOiAwLCBsZWZ0OiAwIH0sXG4gICAgICAgICAgICB3aWR0aDogNDksXG4gICAgICAgICAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICAgICAgICAgIHBhZGRpbmc6IDAsXG4gICAgICAgICAgfX1cbiAgICAgICAgICBvbk1vdXNlRG93bj17KCkgPT4gY29udHJvbHMuc2V0Vm9sdW1lKFZPTFVNRV9TVEVQKX1cbiAgICAgICAgICBkaXNhYmxlZD17aXNTb3VuZERpc2FibGVkIHx8IHZpZGVvPy52b2x1bWUgPT09IDF9XG4gICAgICAgIC8+XG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBpZD17YCR7aWRQcmVmaXh9X211dGVgfVxuICAgICAgICAgIHZhcmlhbnQ9e3ZpZGVvPy52b2x1bWUgPT09IDAgPyAncHJpbWFyeScgOiAnc2Vjb25kYXJ5J31cbiAgICAgICAgICBmb250U2l6ZT17MTh9XG4gICAgICAgICAgaWNvblRyYW5zZm9ybT17eyB3aWR0aDogMjQsIGhlaWdodDogMjQgfX1cbiAgICAgICAgICBvbmx5SWNvblxuICAgICAgICAgIGljb249e0lDT05TLk1VVEV9XG4gICAgICAgICAgaWNvbkJhY2tncm91bmQ9e3tcbiAgICAgICAgICAgIGNvbG9yOiB2aWRlbz8udm9sdW1lID09PSAwID8gQ29sb3I0LkJsYWNrKCkgOiBDb2xvcjQuV2hpdGUoKSxcbiAgICAgICAgICB9fVxuICAgICAgICAgIHVpVHJhbnNmb3JtPXt7XG4gICAgICAgICAgICB3aWR0aDogNDksXG4gICAgICAgICAgICBoZWlnaHQ6IDQyLFxuICAgICAgICAgICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gICAgICAgICAgICBwYWRkaW5nOiAwLFxuICAgICAgICAgIH19XG4gICAgICAgICAgb25Nb3VzZURvd249eygpID0+IHtcbiAgICAgICAgICAgIGNvbnRyb2xzLnNldFZvbHVtZSh2aWRlbz8udm9sdW1lID09PSAwID8gMTAwIDogMCk7XG4gICAgICAgICAgfX1cbiAgICAgICAgICBkaXNhYmxlZD17aXNTb3VuZERpc2FibGVkfVxuICAgICAgICAvPlxuICAgICAgPC9VaUVudGl0eT5cbiAgICA8L1VpRW50aXR5PlxuICApO1xufVxuIl19
@@ -1,4 +1,5 @@
1
1
  import type { Result } from '../fetch-utils';
2
+ import type { PresentationState } from '../types';
2
3
  type StreamKeyResponse = {
3
4
  streamingUrl: string;
4
5
  streamingKey: string;
@@ -18,5 +19,53 @@ export declare function getStreamKey(): Promise<Result<StreamKeyResponse, string
18
19
  export declare function generateStreamKey(): Promise<Result<StreamKeyResponse, string>>;
19
20
  export declare function revokeStreamKey(): Promise<Result<StreamKeyResponse, string>>;
20
21
  export declare function resetStreamKey(): Promise<Result<StreamKeyResponse, string>>;
22
+ export type DclCastTracksResponse = {
23
+ participants: {
24
+ identity: string;
25
+ tracks: {
26
+ sid: string;
27
+ type: 'AUDIO' | 'VIDEO';
28
+ source: 'MICROPHONE' | 'CAMERA' | 'SCREEN_SHARE';
29
+ }[];
30
+ name: string;
31
+ }[];
32
+ };
21
33
  export declare function getDclCastInfo(): Promise<Result<DclCastResponse, string>>;
34
+ export declare function getPresenters(): Promise<Result<string[], string>>;
35
+ export declare function promotePresenter(address: string): Promise<Result<void, string>>;
36
+ export declare function ensurePresenterRole(playerAddress: string): Promise<void>;
37
+ type PresentationBotTokenResponse = {
38
+ url: string;
39
+ token: string;
40
+ roomId: string;
41
+ };
42
+ export declare function getPresentationBotToken(streamingKey: string): Promise<Result<PresentationBotTokenResponse, string>>;
43
+ export declare function startPresentation(url: string, livekitToken: string, livekitUrl: string): Promise<Result<void, string>>;
44
+ export type FlattenedTrack = {
45
+ sid: string;
46
+ identity: string;
47
+ sourceType: number;
48
+ name: string;
49
+ customName: string;
50
+ };
51
+ export type Participant = {
52
+ name: string;
53
+ identity: string;
54
+ tracks: FlattenedTrack[];
55
+ };
56
+ export declare const SOURCE_TYPE_LABELS: Record<number, string>;
57
+ export declare const getSourceLabel: (sourceType: number) => string;
58
+ export declare function isPresentationBot(name: string): boolean;
59
+ export declare function hasPresentationTrack(tracks: FlattenedTrack[]): boolean;
60
+ export declare function groupTracksByParticipant(tracks: FlattenedTrack[]): Participant[];
61
+ export declare function getActiveStreams(): Promise<FlattenedTrack[] | undefined>;
62
+ export declare function subscribeToPresentationTopic(): void;
63
+ export declare function requestPresentationState(): void;
64
+ export declare function consumePresentationMessages(): Promise<PresentationState | 'stopped' | undefined>;
65
+ export declare function nextSlide(): void;
66
+ export declare function prevSlide(): void;
67
+ export declare function playPresentationVideo(videoIndex: number): void;
68
+ export declare function pausePresentationVideo(): void;
69
+ export declare function stopPresentationVideo(): void;
70
+ export declare function stopPresentation(): void;
22
71
  export {};
@@ -1,7 +1,11 @@
1
+ import { getActiveVideoStreams, subscribeToTopic, publishData, consumeMessages, } from '~system/CommsApi';
1
2
  import { getDomain, wrapSignedFetch } from '../fetch-utils';
2
3
  const URLS = () => ({
3
4
  STREAM_KEY: `https://comms-gatekeeper.decentraland.${getDomain()}/scene-stream-access`,
4
5
  GET_DCL_CAST_INFO: `https://comms-gatekeeper.decentraland.${getDomain()}/cast/generate-stream-link`,
6
+ PRESENTERS: `https://comms-gatekeeper.decentraland.${getDomain()}/cast/presenters`,
7
+ PRESENTATION_BOT_TOKEN: `https://comms-gatekeeper.decentraland.${getDomain()}/cast/presentation-bot-token`,
8
+ PRESENTATION_SERVER: `https://cast-presenter-service.decentraland.${getDomain()}/presentations`,
5
9
  });
6
10
  export async function getStreamKey() {
7
11
  return wrapSignedFetch({ url: URLS().STREAM_KEY }, { toCamelCase: true });
@@ -21,4 +25,184 @@ export async function resetStreamKey() {
21
25
  export async function getDclCastInfo() {
22
26
  return wrapSignedFetch({ url: URLS().GET_DCL_CAST_INFO }, { toCamelCase: true });
23
27
  }
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FkbWluLXRvb2xraXQtdWkvVmlkZW9Db250cm9sL2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRzVELE1BQU0sSUFBSSxHQUFHLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDbEIsVUFBVSxFQUFFLHlDQUF5QyxTQUFTLEVBQUUsc0JBQXNCO0lBQ3RGLGlCQUFpQixFQUFFLHlDQUF5QyxTQUFTLEVBQUUsNEJBQTRCO0NBQ3BHLENBQUMsQ0FBQztBQW1CSCxNQUFNLENBQUMsS0FBSyxVQUFVLFlBQVk7SUFDaEMsT0FBTyxlQUFlLENBQW9CLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDLFVBQVUsRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7QUFDL0YsQ0FBQztBQUVELE1BQU0sQ0FBQyxLQUFLLFVBQVUsaUJBQWlCO0lBQ3JDLE9BQU8sZUFBZSxDQUNwQixFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsQ0FBQyxVQUFVLEVBQUUsSUFBSSxFQUFFLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFDakUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLENBQ3RCLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxDQUFDLEtBQUssVUFBVSxlQUFlO0lBQ25DLE9BQU8sZUFBZSxDQUFvQjtRQUN4QyxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUMsVUFBVTtRQUN0QixJQUFJLEVBQUUsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUU7S0FDeEMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVELE1BQU0sQ0FBQyxLQUFLLFVBQVUsY0FBYztJQUNsQyxPQUFPLGVBQWUsQ0FDcEIsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUMsVUFBVSxFQUFFLElBQUksRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQ2hFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxDQUN0QixDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sQ0FBQyxLQUFLLFVBQVUsY0FBYztJQUNsQyxPQUFPLGVBQWUsQ0FBa0IsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUMsaUJBQWlCLEVBQUUsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0FBQ3BHLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBnZXREb21haW4sIHdyYXBTaWduZWRGZXRjaCB9IGZyb20gJy4uL2ZldGNoLXV0aWxzJztcbmltcG9ydCB0eXBlIHsgUmVzdWx0IH0gZnJvbSAnLi4vZmV0Y2gtdXRpbHMnO1xuXG5jb25zdCBVUkxTID0gKCkgPT4gKHtcbiAgU1RSRUFNX0tFWTogYGh0dHBzOi8vY29tbXMtZ2F0ZWtlZXBlci5kZWNlbnRyYWxhbmQuJHtnZXREb21haW4oKX0vc2NlbmUtc3RyZWFtLWFjY2Vzc2AsXG4gIEdFVF9EQ0xfQ0FTVF9JTkZPOiBgaHR0cHM6Ly9jb21tcy1nYXRla2VlcGVyLmRlY2VudHJhbGFuZC4ke2dldERvbWFpbigpfS9jYXN0L2dlbmVyYXRlLXN0cmVhbS1saW5rYCxcbn0pO1xuXG50eXBlIFN0cmVhbUtleVJlc3BvbnNlID0ge1xuICBzdHJlYW1pbmdVcmw6IHN0cmluZztcbiAgc3RyZWFtaW5nS2V5OiBzdHJpbmc7XG4gIGNyZWF0ZWRBdDogbnVtYmVyO1xuICBlbmRzQXQ6IG51bWJlcjtcbn07XG5cbmV4cG9ydCB0eXBlIERjbENhc3RSZXNwb25zZSA9IHtcbiAgc3RyZWFtTGluazogc3RyaW5nO1xuICB3YXRjaGVyTGluazogc3RyaW5nO1xuICBzdHJlYW1pbmdLZXk6IHN0cmluZztcbiAgcGxhY2VJZDogc3RyaW5nO1xuICBwbGFjZU5hbWU6IHN0cmluZztcbiAgZXhwaXJlc0F0OiBudW1iZXI7XG4gIGV4cGlyZXNJbkRheXM6IG51bWJlcjtcbn07XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRTdHJlYW1LZXkoKTogUHJvbWlzZTxSZXN1bHQ8U3RyZWFtS2V5UmVzcG9uc2UsIHN0cmluZz4+IHtcbiAgcmV0dXJuIHdyYXBTaWduZWRGZXRjaDxTdHJlYW1LZXlSZXNwb25zZT4oeyB1cmw6IFVSTFMoKS5TVFJFQU1fS0VZIH0sIHsgdG9DYW1lbENhc2U6IHRydWUgfSk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZW5lcmF0ZVN0cmVhbUtleSgpOiBQcm9taXNlPFJlc3VsdDxTdHJlYW1LZXlSZXNwb25zZSwgc3RyaW5nPj4ge1xuICByZXR1cm4gd3JhcFNpZ25lZEZldGNoPFN0cmVhbUtleVJlc3BvbnNlPihcbiAgICB7IHVybDogVVJMUygpLlNUUkVBTV9LRVksIGluaXQ6IHsgbWV0aG9kOiAnUE9TVCcsIGhlYWRlcnM6IHt9IH0gfSxcbiAgICB7IHRvQ2FtZWxDYXNlOiB0cnVlIH0sXG4gICk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZXZva2VTdHJlYW1LZXkoKTogUHJvbWlzZTxSZXN1bHQ8U3RyZWFtS2V5UmVzcG9uc2UsIHN0cmluZz4+IHtcbiAgcmV0dXJuIHdyYXBTaWduZWRGZXRjaDxTdHJlYW1LZXlSZXNwb25zZT4oe1xuICAgIHVybDogVVJMUygpLlNUUkVBTV9LRVksXG4gICAgaW5pdDogeyBtZXRob2Q6ICdERUxFVEUnLCBoZWFkZXJzOiB7fSB9LFxuICB9KTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlc2V0U3RyZWFtS2V5KCk6IFByb21pc2U8UmVzdWx0PFN0cmVhbUtleVJlc3BvbnNlLCBzdHJpbmc+PiB7XG4gIHJldHVybiB3cmFwU2lnbmVkRmV0Y2g8U3RyZWFtS2V5UmVzcG9uc2U+KFxuICAgIHsgdXJsOiBVUkxTKCkuU1RSRUFNX0tFWSwgaW5pdDogeyBtZXRob2Q6ICdQVVQnLCBoZWFkZXJzOiB7fSB9IH0sXG4gICAgeyB0b0NhbWVsQ2FzZTogdHJ1ZSB9LFxuICApO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0RGNsQ2FzdEluZm8oKTogUHJvbWlzZTxSZXN1bHQ8RGNsQ2FzdFJlc3BvbnNlLCBzdHJpbmc+PiB7XG4gIHJldHVybiB3cmFwU2lnbmVkRmV0Y2g8RGNsQ2FzdFJlc3BvbnNlPih7IHVybDogVVJMUygpLkdFVF9EQ0xfQ0FTVF9JTkZPIH0sIHsgdG9DYW1lbENhc2U6IHRydWUgfSk7XG59XG4iXX0=
28
+ export async function getPresenters() {
29
+ return wrapSignedFetch({ url: URLS().PRESENTERS });
30
+ }
31
+ export async function promotePresenter(address) {
32
+ return wrapSignedFetch({
33
+ url: `${URLS().PRESENTERS}/${address}`,
34
+ init: { method: 'PUT', headers: {} },
35
+ });
36
+ }
37
+ export async function ensurePresenterRole(playerAddress) {
38
+ const [error, presenters] = await getPresenters();
39
+ console.log('[DclCast] ensurePresenterRole - error:', error, 'presenters:', JSON.stringify(presenters), 'playerAddress:', playerAddress);
40
+ if (error || !presenters)
41
+ return;
42
+ const addr = playerAddress.toLowerCase();
43
+ const isPresenter = Array.isArray(presenters) ? presenters.includes(addr) : false;
44
+ console.log('[DclCast] isPresenter:', isPresenter, 'addr:', addr);
45
+ if (!isPresenter) {
46
+ const [promoteError] = await promotePresenter(addr);
47
+ console.log('[DclCast] promotePresenter result - error:', promoteError);
48
+ }
49
+ }
50
+ export async function getPresentationBotToken(streamingKey) {
51
+ return wrapSignedFetch({
52
+ url: URLS().PRESENTATION_BOT_TOKEN,
53
+ init: {
54
+ method: 'POST',
55
+ headers: { 'Content-Type': 'application/json' },
56
+ body: JSON.stringify({ streamingKey }),
57
+ },
58
+ }, { toCamelCase: true });
59
+ }
60
+ export async function startPresentation(url, livekitToken, livekitUrl) {
61
+ try {
62
+ const response = await fetch(URLS().PRESENTATION_SERVER, {
63
+ method: 'POST',
64
+ headers: { 'Content-Type': 'application/json' },
65
+ body: JSON.stringify({ url, livekitToken, livekitUrl }),
66
+ });
67
+ if (!response.ok) {
68
+ const body = await response.text();
69
+ return [body || 'Failed to start presentation', null];
70
+ }
71
+ return [null, undefined];
72
+ }
73
+ catch (error) {
74
+ return [error.message ?? 'Failed to start presentation', null];
75
+ }
76
+ }
77
+ export const SOURCE_TYPE_LABELS = {
78
+ 1: 'Camera',
79
+ 2: 'Screen',
80
+ 3: 'Presentation',
81
+ };
82
+ export const getSourceLabel = (sourceType) => SOURCE_TYPE_LABELS[sourceType] ?? 'Unknown';
83
+ const PRESENTATION_TOPIC = 'presentation';
84
+ const PRESENTATION_SOURCE_TYPE = 3;
85
+ const PRESENTATION_BOT_PREFIX = 'presentation-bot';
86
+ export function isPresentationBot(name) {
87
+ return name.startsWith(PRESENTATION_BOT_PREFIX);
88
+ }
89
+ export function hasPresentationTrack(tracks) {
90
+ return tracks.some(track => track.sourceType === PRESENTATION_SOURCE_TYPE || isPresentationBot(track.name));
91
+ }
92
+ export function groupTracksByParticipant(tracks) {
93
+ const map = new Map();
94
+ for (const track of tracks) {
95
+ const existing = map.get(track.name);
96
+ if (existing) {
97
+ existing.tracks.push(track);
98
+ }
99
+ else {
100
+ map.set(track.name, { name: track.name, identity: track.identity, tracks: [track] });
101
+ }
102
+ }
103
+ return Array.from(map.values());
104
+ }
105
+ function getDisplayName(name) {
106
+ if (isPresentationBot(name))
107
+ return 'Presentation';
108
+ return name;
109
+ }
110
+ export async function getActiveStreams() {
111
+ const runtimeStreams = await getActiveVideoStreams({});
112
+ if (!runtimeStreams)
113
+ return;
114
+ return runtimeStreams.streams.map((stream) => {
115
+ const rawName = stream.name ?? stream.identity;
116
+ const displayName = getDisplayName(rawName);
117
+ return {
118
+ sid: stream.trackSid,
119
+ identity: stream.identity,
120
+ sourceType: stream.sourceType,
121
+ name: rawName,
122
+ customName: `${displayName} - ${getSourceLabel(stream.sourceType)}`,
123
+ };
124
+ });
125
+ }
126
+ export function subscribeToPresentationTopic() {
127
+ subscribeToTopic({ topic: PRESENTATION_TOPIC })
128
+ .then(() => {
129
+ requestPresentationState();
130
+ })
131
+ .catch(() => {
132
+ console.log('[DclCast] Failed to subscribe to presentation topic');
133
+ });
134
+ }
135
+ export function requestPresentationState() {
136
+ publishData({
137
+ topic: PRESENTATION_TOPIC,
138
+ data: JSON.stringify({ type: 'presentation:get-state' }),
139
+ });
140
+ }
141
+ export async function consumePresentationMessages() {
142
+ try {
143
+ const response = await consumeMessages({ topic: PRESENTATION_TOPIC });
144
+ let latestState;
145
+ for (const msg of response) {
146
+ try {
147
+ const parsed = JSON.parse(msg.data);
148
+ if (parsed.type === 'presentation:state') {
149
+ latestState = {
150
+ id: parsed.id,
151
+ fileName: parsed.fileName,
152
+ currentSlide: parsed.currentSlide,
153
+ slideCount: parsed.slideCount,
154
+ fileType: parsed.fileType,
155
+ slideVideos: parsed.slideVideos ?? [],
156
+ videoState: parsed.videoState ?? 'idle',
157
+ };
158
+ }
159
+ else if (parsed.type === 'presentation:stopped') {
160
+ latestState = 'stopped';
161
+ }
162
+ }
163
+ catch {
164
+ }
165
+ }
166
+ return latestState;
167
+ }
168
+ catch (error) {
169
+ return undefined;
170
+ }
171
+ }
172
+ export function nextSlide() {
173
+ publishData({
174
+ topic: PRESENTATION_TOPIC,
175
+ data: JSON.stringify({ type: 'presentation:navigate', action: 'next' }),
176
+ });
177
+ }
178
+ export function prevSlide() {
179
+ publishData({
180
+ topic: PRESENTATION_TOPIC,
181
+ data: JSON.stringify({ type: 'presentation:navigate', action: 'prev' }),
182
+ });
183
+ }
184
+ export function playPresentationVideo(videoIndex) {
185
+ publishData({
186
+ topic: PRESENTATION_TOPIC,
187
+ data: JSON.stringify({ type: 'presentation:video:play', videoIndex }),
188
+ });
189
+ }
190
+ export function pausePresentationVideo() {
191
+ publishData({
192
+ topic: PRESENTATION_TOPIC,
193
+ data: JSON.stringify({ type: 'presentation:video:pause' }),
194
+ });
195
+ }
196
+ export function stopPresentationVideo() {
197
+ publishData({
198
+ topic: PRESENTATION_TOPIC,
199
+ data: JSON.stringify({ type: 'presentation:video:stop' }),
200
+ });
201
+ }
202
+ export function stopPresentation() {
203
+ publishData({
204
+ topic: PRESENTATION_TOPIC,
205
+ data: JSON.stringify({ type: 'presentation:stop' }),
206
+ });
207
+ }
208
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FkbWluLXRvb2xraXQtdWkvVmlkZW9Db250cm9sL2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wscUJBQXFCLEVBQ3JCLGdCQUFnQixFQUNoQixXQUFXLEVBQ1gsZUFBZSxHQUNoQixNQUFNLGtCQUFrQixDQUFDO0FBQzFCLE9BQU8sRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFJNUQsTUFBTSxJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUNsQixVQUFVLEVBQUUseUNBQXlDLFNBQVMsRUFBRSxzQkFBc0I7SUFDdEYsaUJBQWlCLEVBQUUseUNBQXlDLFNBQVMsRUFBRSw0QkFBNEI7SUFDbkcsVUFBVSxFQUFFLHlDQUF5QyxTQUFTLEVBQUUsa0JBQWtCO0lBQ2xGLHNCQUFzQixFQUFFLHlDQUF5QyxTQUFTLEVBQUUsOEJBQThCO0lBQzFHLG1CQUFtQixFQUFFLCtDQUErQyxTQUFTLEVBQUUsZ0JBQWdCO0NBQ2hHLENBQUMsQ0FBQztBQW1CSCxNQUFNLENBQUMsS0FBSyxVQUFVLFlBQVk7SUFDaEMsT0FBTyxlQUFlLENBQW9CLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDLFVBQVUsRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7QUFDL0YsQ0FBQztBQUVELE1BQU0sQ0FBQyxLQUFLLFVBQVUsaUJBQWlCO0lBQ3JDLE9BQU8sZUFBZSxDQUNwQixFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsQ0FBQyxVQUFVLEVBQUUsSUFBSSxFQUFFLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFDakUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLENBQ3RCLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxDQUFDLEtBQUssVUFB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QUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBnZXRBY3RpdmVWaWRlb1N0cmVhbXMsXG4gIHN1YnNjcmliZVRvVG9waWMsXG4gIHB1Ymxpc2hEYXRhLFxuICBjb25zdW1lTWVzc2FnZXMsXG59IGZyb20gJ35zeXN0ZW0vQ29tbXNBcGknO1xuaW1wb3J0IHsgZ2V0RG9tYWluLCB3cmFwU2lnbmVkRmV0Y2ggfSBmcm9tICcuLi9mZXRjaC11dGlscyc7XG5pbXBvcnQgdHlwZSB7IFJlc3VsdCB9IGZyb20gJy4uL2ZldGNoLXV0aWxzJztcbmltcG9ydCB0eXBlIHsgUHJlc2VudGF0aW9uU3RhdGUgfSBmcm9tICcuLi90eXBlcyc7XG5cbmNvbnN0IFVSTFMgPSAoKSA9PiAoe1xuICBTVFJFQU1fS0VZOiBgaHR0cHM6Ly9jb21tcy1nYXRla2VlcGVyLmRlY2VudHJhbGFuZC4ke2dldERvbWFpbigpfS9zY2VuZS1zdHJlYW0tYWNjZXNzYCxcbiAgR0VUX0RDTF9DQVNUX0lORk86IGBodHRwczovL2NvbW1zLWdhdGVrZWVwZXIuZGVjZW50cmFsYW5kLiR7Z2V0RG9tYWluKCl9L2Nhc3QvZ2VuZXJhdGUtc3RyZWFtLWxpbmtgLFxuICBQUkVTRU5URVJTOiBgaHR0cHM6Ly9jb21tcy1nYXRla2VlcGVyLmRlY2VudHJhbGFuZC4ke2dldERvbWFpbigpfS9jYXN0L3ByZXNlbnRlcnNgLFxuICBQUkVTRU5UQVRJT05fQk9UX1RPS0VOOiBgaHR0cHM6Ly9jb21tcy1nYXRla2VlcGVyLmRlY2VudHJhbGFuZC4ke2dldERvbWFpbigpfS9jYXN0L3ByZXNlbnRhdGlvbi1ib3QtdG9rZW5gLFxuICBQUkVTRU5UQVRJT05fU0VSVkVSOiBgaHR0cHM6Ly9jYXN0LXByZXNlbnRlci1zZXJ2aWNlLmRlY2VudHJhbGFuZC4ke2dldERvbWFpbigpfS9wcmVzZW50YXRpb25zYCxcbn0pO1xuXG50eXBlIFN0cmVhbUtleVJlc3BvbnNlID0ge1xuICBzdHJlYW1pbmdVcmw6IHN0cmluZztcbiAgc3RyZWFtaW5nS2V5OiBzdHJpbmc7XG4gIGNyZWF0ZWRBdDogbnVtYmVyO1xuICBlbmRzQXQ6IG51bWJlcjtcbn07XG5cbmV4cG9ydCB0eXBlIERjbENhc3RSZXNwb25zZSA9IHtcbiAgc3RyZWFtTGluazogc3RyaW5nO1xuICB3YXRjaGVyTGluazogc3RyaW5nO1xuICBzdHJlYW1pbmdLZXk6IHN0cmluZztcbiAgcGxhY2VJZDogc3RyaW5nO1xuICBwbGFjZU5hbWU6IHN0cmluZztcbiAgZXhwaXJlc0F0OiBudW1iZXI7XG4gIGV4cGlyZXNJbkRheXM6IG51bWJlcjtcbn07XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRTdHJlYW1LZXkoKTogUHJvbWlzZTxSZXN1bHQ8U3RyZWFtS2V5UmVzcG9uc2UsIHN0cmluZz4+IHtcbiAgcmV0dXJuIHdyYXBTaWduZWRGZXRjaDxTdHJlYW1LZXlSZXNwb25zZT4oeyB1cmw6IFVSTFMoKS5TVFJFQU1fS0VZIH0sIHsgdG9DYW1lbENhc2U6IHRydWUgfSk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZW5lcmF0ZVN0cmVhbUtleSgpOiBQcm9taXNlPFJlc3VsdDxTdHJlYW1LZXlSZXNwb25zZSwgc3RyaW5nPj4ge1xuICByZXR1cm4gd3JhcFNpZ25lZEZldGNoPFN0cmVhbUtleVJlc3BvbnNlPihcbiAgICB7IHVybDogVVJMUygpLlNUUkVBTV9LRVksIGluaXQ6IHsgbWV0aG9kOiAnUE9TVCcsIGhlYWRlcnM6IHt9IH0gfSxcbiAgICB7IHRvQ2FtZWxDYXNlOiB0cnVlIH0sXG4gICk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZXZva2VTdHJlYW1LZXkoKTogUHJvbWlzZTxSZXN1bHQ8U3RyZWFtS2V5UmVzcG9uc2UsIHN0cmluZz4+IHtcbiAgcmV0dXJuIHdyYXBTaWduZWRGZXRjaDxTdHJlYW1LZXlSZXNwb25zZT4oe1xuICAgIHVybDogVVJMUygpLlNUUkVBTV9LRVksXG4gICAgaW5pdDogeyBtZXRob2Q6ICdERUxFVEUnLCBoZWFkZXJzOiB7fSB9LFxuICB9KTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlc2V0U3RyZWFtS2V5KCk6IFByb21pc2U8UmVzdWx0PFN0cmVhbUtleVJlc3BvbnNlLCBzdHJpbmc+PiB7XG4gIHJldHVybiB3cmFwU2lnbmVkRmV0Y2g8U3RyZWFtS2V5UmVzcG9uc2U+KFxuICAgIHsgdXJsOiBVUkxTKCkuU1RSRUFNX0tFWSwgaW5pdDogeyBtZXRob2Q6ICdQVVQnLCBoZWFkZXJzOiB7fSB9IH0sXG4gICAgeyB0b0NhbWVsQ2FzZTogdHJ1ZSB9LFxuICApO1xufVxuXG5leHBvcnQgdHlwZSBEY2xDYXN0VHJhY2tzUmVzcG9uc2UgPSB7XG4gIHBhcnRpY2lwYW50czoge1xuICAgIGlkZW50aXR5OiBzdHJpbmc7XG4gICAgdHJhY2tzOiB7XG4gICAgICBzaWQ6IHN0cmluZztcbiAgICAgIHR5cGU6ICdBVURJTycgfCAnVklERU8nO1xuICAgICAgc291cmNlOiAnTUlDUk9QSE9ORScgfCAnQ0FNRVJBJyB8ICdTQ1JFRU5fU0hBUkUnO1xuICAgIH1bXTtcbiAgICBuYW1lOiBzdHJpbmc7XG4gIH1bXTtcbn07XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXREY2xDYXN0SW5mbygpOiBQcm9taXNlPFJlc3VsdDxEY2xDYXN0UmVzcG9uc2UsIHN0cmluZz4+IHtcbiAgcmV0dXJuIHdyYXBTaWduZWRGZXRjaDxEY2xDYXN0UmVzcG9uc2U+KHsgdXJsOiBVUkxTKCkuR0VUX0RDTF9DQVNUX0lORk8gfSwgeyB0b0NhbWVsQ2FzZTogdHJ1ZSB9KTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldFByZXNlbnRlcnMoKTogUHJvbWlzZTxSZXN1bHQ8c3RyaW5nW10sIHN0cmluZz4+IHtcbiAgcmV0dXJuIHdyYXBTaWduZWRGZXRjaDxzdHJpbmdbXT4oeyB1cmw6IFVSTFMoKS5QUkVTRU5URVJTIH0pO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcHJvbW90ZVByZXNlbnRlcihhZGRyZXNzOiBzdHJpbmcpOiBQcm9taXNlPFJlc3VsdDx2b2lkLCBzdHJpbmc+PiB7XG4gIHJldHVybiB3cmFwU2lnbmVkRmV0Y2g8dm9pZD4oe1xuICAgIHVybDogYCR7VVJMUygpLlBSRVNFTlRFUlN9LyR7YWRkcmVzc31gLFxuICAgIGluaXQ6IHsgbWV0aG9kOiAnUFVUJywgaGVhZGVyczoge30gfSxcbiAgfSk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBlbnN1cmVQcmVzZW50ZXJSb2xlKHBsYXllckFkZHJlc3M6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBbZXJyb3IsIHByZXNlbnRlcnNdID0gYXdhaXQgZ2V0UHJlc2VudGVycygpO1xuICBjb25zb2xlLmxvZyhcbiAgICAnW0RjbENhc3RdIGVuc3VyZVByZXNlbnRlclJvbGUgLSBlcnJvcjonLFxuICAgIGVycm9yLFxuICAgICdwcmVzZW50ZXJzOicsXG4gICAgSlNPTi5zdHJpbmdpZnkocHJlc2VudGVycyksXG4gICAgJ3BsYXllckFkZHJlc3M6JyxcbiAgICBwbGF5ZXJBZGRyZXNzLFxuICApO1xuICBpZiAoZXJyb3IgfHwgIXByZXNlbnRlcnMpIHJldHVybjtcblxuICBjb25zdCBhZGRyID0gcGxheWVyQWRkcmVzcy50b0xvd2VyQ2FzZSgpO1xuICBjb25zdCBpc1ByZXNlbnRlciA9IEFycmF5LmlzQXJyYXkocHJlc2VudGVycykgPyBwcmVzZW50ZXJzLmluY2x1ZGVzKGFkZHIpIDogZmFsc2U7XG4gIGNvbnNvbGUubG9nKCdbRGNsQ2FzdF0gaXNQcmVzZW50ZXI6JywgaXNQcmVzZW50ZXIsICdhZGRyOicsIGFkZHIpO1xuXG4gIGlmICghaXNQcmVzZW50ZXIpIHtcbiAgICBjb25zdCBbcHJvbW90ZUVycm9yXSA9IGF3YWl0IHByb21vdGVQcmVzZW50ZXIoYWRkcik7XG4gICAgY29uc29sZS5sb2coJ1tEY2xDYXN0XSBwcm9tb3RlUHJlc2VudGVyIHJlc3VsdCAtIGVycm9yOicsIHByb21vdGVFcnJvcik7XG4gIH1cbn1cblxudHlwZSBQcmVzZW50YXRpb25Cb3RUb2tlblJlc3BvbnNlID0ge1xuICB1cmw6IHN0cmluZztcbiAgdG9rZW46IHN0cmluZztcbiAgcm9vbUlkOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0UHJlc2VudGF0aW9uQm90VG9rZW4oXG4gIHN0cmVhbWluZ0tleTogc3RyaW5nLFxuKTogUHJvbWlzZTxSZXN1bHQ8UHJlc2VudGF0aW9uQm90VG9rZW5SZXNwb25zZSwgc3RyaW5nPj4ge1xuICByZXR1cm4gd3JhcFNpZ25lZEZldGNoPFByZXNlbnRhdGlvbkJvdFRva2VuUmVzcG9uc2U+KFxuICAgIHtcbiAgICAgIHVybDogVVJMUygpLlBSRVNFTlRBVElPTl9CT1RfVE9LRU4sXG4gICAgICBpbml0OiB7XG4gICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICBoZWFkZXJzOiB7ICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicgfSxcbiAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoeyBzdHJlYW1pbmdLZXkgfSksXG4gICAgICB9LFxuICAgIH0sXG4gICAgeyB0b0NhbWVsQ2FzZTogdHJ1ZSB9LFxuICApO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc3RhcnRQcmVzZW50YXRpb24oXG4gIHVybDogc3RyaW5nLFxuICBsaXZla2l0VG9rZW46IHN0cmluZyxcbiAgbGl2ZWtpdFVybDogc3RyaW5nLFxuKTogUHJvbWlzZTxSZXN1bHQ8dm9pZCwgc3RyaW5nPj4ge1xuICB0cnkge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goVVJMUygpLlBSRVNFTlRBVElPTl9TRVJWRVIsIHtcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgaGVhZGVyczogeyAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nIH0sXG4gICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7IHVybCwgbGl2ZWtpdFRva2VuLCBsaXZla2l0VXJsIH0pLFxuICAgIH0pO1xuICAgIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICAgIGNvbnN0IGJvZHkgPSBhd2FpdCByZXNwb25zZS50ZXh0KCk7XG4gICAgICByZXR1cm4gW2JvZHkgfHwgJ0ZhaWxlZCB0byBzdGFydCBwcmVzZW50YXRpb24nLCBudWxsXTtcbiAgICB9XG4gICAgcmV0dXJuIFtudWxsLCB1bmRlZmluZWQgYXMgdW5rbm93biBhcyB2b2lkXTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXR1cm4gWyhlcnJvciBhcyBFcnJvcikubWVzc2FnZSA/PyAnRmFpbGVkIHRvIHN0YXJ0IHByZXNlbnRhdGlvbicsIG51bGxdO1xuICB9XG59XG5cbmV4cG9ydCB0eXBlIEZsYXR0ZW5lZFRyYWNrID0ge1xuICBzaWQ6IHN0cmluZztcbiAgaWRlbnRpdHk6IHN0cmluZztcbiAgc291cmNlVHlwZTogbnVtYmVyO1xuICBuYW1lOiBzdHJpbmc7XG4gIGN1c3RvbU5hbWU6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIFBhcnRpY2lwYW50ID0ge1xuICBuYW1lOiBzdHJpbmc7XG4gIGlkZW50aXR5OiBzdHJpbmc7XG4gIHRyYWNrczogRmxhdHRlbmVkVHJhY2tbXTtcbn07XG5cbmV4cG9ydCBjb25zdCBTT1VSQ0VfVFlQRV9MQUJFTFM6IFJlY29yZDxudW1iZXIsIHN0cmluZz4gPSB7XG4gIDE6ICdDYW1lcmEnLFxuICAyOiAnU2NyZWVuJyxcbiAgMzogJ1ByZXNlbnRhdGlvbicsXG59O1xuXG5leHBvcnQgY29uc3QgZ2V0U291cmNlTGFiZWwgPSAoc291cmNlVHlwZTogbnVtYmVyKSA9PiBTT1VSQ0VfVFlQRV9MQUJFTFNbc291cmNlVHlwZV0gPz8gJ1Vua25vd24nO1xuXG5jb25zdCBQUkVTRU5UQVRJT05fVE9QSUMgPSAncHJlc2VudGF0aW9uJztcbmNvbnN0IFBSRVNFTlRBVElPTl9TT1VSQ0VfVFlQRSA9IDM7XG5jb25zdCBQUkVTRU5UQVRJT05fQk9UX1BSRUZJWCA9ICdwcmVzZW50YXRpb24tYm90JztcblxuZXhwb3J0IGZ1bmN0aW9uIGlzUHJlc2VudGF0aW9uQm90KG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gbmFtZS5zdGFydHNXaXRoKFBSRVNFTlRBVElPTl9CT1RfUFJFRklYKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGhhc1ByZXNlbnRhdGlvblRyYWNrKHRyYWNrczogRmxhdHRlbmVkVHJhY2tbXSk6IGJvb2xlYW4ge1xuICByZXR1cm4gdHJhY2tzLnNvbWUoXG4gICAgdHJhY2sgPT4gdHJhY2suc291cmNlVHlwZSA9PT0gUFJFU0VOVEFUSU9OX1NPVVJDRV9UWVBFIHx8IGlzUHJlc2VudGF0aW9uQm90KHRyYWNrLm5hbWUpLFxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ3JvdXBUcmFja3NCeVBhcnRpY2lwYW50KHRyYWNrczogRmxhdHRlbmVkVHJhY2tbXSk6IFBhcnRpY2lwYW50W10ge1xuICBjb25zdCBtYXAgPSBuZXcgTWFwPHN0cmluZywgUGFydGljaXBhbnQ+KCk7XG4gIGZvciAoY29uc3QgdHJhY2sgb2YgdHJhY2tzKSB7XG4gICAgY29uc3QgZXhpc3RpbmcgPSBtYXAuZ2V0KHRyYWNrLm5hbWUpO1xuICAgIGlmIChleGlzdGluZykge1xuICAgICAgZXhpc3RpbmcudHJhY2tzLnB1c2godHJhY2spO1xuICAgIH0gZWxzZSB7XG4gICAgICBtYXAuc2V0KHRyYWNrLm5hbWUsIHsgbmFtZTogdHJhY2submFtZSwgaWRlbnRpdHk6IHRyYWNrLmlkZW50aXR5LCB0cmFja3M6IFt0cmFja10gfSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBBcnJheS5mcm9tKG1hcC52YWx1ZXMoKSk7XG59XG5cbmZ1bmN0aW9uIGdldERpc3BsYXlOYW1lKG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmIChpc1ByZXNlbnRhdGlvbkJvdChuYW1lKSkgcmV0dXJuICdQcmVzZW50YXRpb24nO1xuICByZXR1cm4gbmFtZTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEFjdGl2ZVN0cmVhbXMoKTogUHJvbWlzZTxGbGF0dGVuZWRUcmFja1tdIHwgdW5kZWZpbmVkPiB7XG4gIGNvbnN0IHJ1bnRpbWVTdHJlYW1zID0gYXdhaXQgZ2V0QWN0aXZlVmlkZW9TdHJlYW1zKHt9KTtcbiAgaWYgKCFydW50aW1lU3RyZWFtcykgcmV0dXJuO1xuICByZXR1cm4gcnVudGltZVN0cmVhbXMuc3RyZWFtcy5tYXAoXG4gICAgKHN0cmVhbTogeyB0cmFja1NpZDogc3RyaW5nOyBpZGVudGl0eTogc3RyaW5nOyBzb3VyY2VUeXBlOiBudW1iZXI7IG5hbWU/OiBzdHJpbmcgfSkgPT4ge1xuICAgICAgY29uc3QgcmF3TmFtZSA9IHN0cmVhbS5uYW1lID8/IHN0cmVhbS5pZGVudGl0eTtcbiAgICAgIGNvbnN0IGRpc3BsYXlOYW1lID0gZ2V0RGlzcGxheU5hbWUocmF3TmFtZSk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzaWQ6IHN0cmVhbS50cmFja1NpZCxcbiAgICAgICAgaWRlbnRpdHk6IHN0cmVhbS5pZGVudGl0eSxcbiAgICAgICAgc291cmNlVHlwZTogc3RyZWFtLnNvdXJjZVR5cGUsXG4gICAgICAgIG5hbWU6IHJhd05hbWUsXG4gICAgICAgIGN1c3RvbU5hbWU6IGAke2Rpc3BsYXlOYW1lfSAtICR7Z2V0U291cmNlTGFiZWwoc3RyZWFtLnNvdXJjZVR5cGUpfWAsXG4gICAgICB9O1xuICAgIH0sXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdWJzY3JpYmVUb1ByZXNlbnRhdGlvblRvcGljKCk6IHZvaWQge1xuICBzdWJzY3JpYmVUb1RvcGljKHsgdG9waWM6IFBSRVNFTlRBVElPTl9UT1BJQyB9KVxuICAgIC50aGVuKCgpID0+IHtcbiAgICAgIC8vIFJlcXVlc3QgY3VycmVudCBzdGF0ZSBmcm9tIGJvdCBzbyBsYXRlIGpvaW5lcnMgZ2V0IHRoZSBwcmVzZW50YXRpb24gc3RhdGVcbiAgICAgIHJlcXVlc3RQcmVzZW50YXRpb25TdGF0ZSgpO1xuICAgIH0pXG4gICAgLmNhdGNoKCgpID0+IHtcbiAgICAgIGNvbnNvbGUubG9nKCdbRGNsQ2FzdF0gRmFpbGVkIHRvIHN1YnNjcmliZSB0byBwcmVzZW50YXRpb24gdG9waWMnKTtcbiAgICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlcXVlc3RQcmVzZW50YXRpb25TdGF0ZSgpOiB2b2lkIHtcbiAgcHVibGlzaERhdGEoe1xuICAgIHRvcGljOiBQUkVTRU5UQVRJT05fVE9QSUMsXG4gICAgZGF0YTogSlNPTi5zdHJpbmdpZnkoeyB0eXBlOiAncHJlc2VudGF0aW9uOmdldC1zdGF0ZScgfSksXG4gIH0pO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY29uc3VtZVByZXNlbnRhdGlvbk1lc3NhZ2VzKCk6IFByb21pc2U8XG4gIFByZXNlbnRhdGlvblN0YXRlIHwgJ3N0b3BwZWQnIHwgdW5kZWZpbmVkXG4+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNvbnN1bWVNZXNzYWdlcyh7IHRvcGljOiBQUkVTRU5UQVRJT05fVE9QSUMgfSk7XG5cbiAgICBsZXQgbGF0ZXN0U3RhdGU6IFByZXNlbnRhdGlvblN0YXRlIHwgJ3N0b3BwZWQnIHwgdW5kZWZpbmVkO1xuICAgIGZvciAoY29uc3QgbXNnIG9mIHJlc3BvbnNlKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBwYXJzZWQgPSBKU09OLnBhcnNlKG1zZy5kYXRhKTtcbiAgICAgICAgaWYgKHBhcnNlZC50eXBlID09PSAncHJlc2VudGF0aW9uOnN0YXRlJykge1xuICAgICAgICAgIGxhdGVzdFN0YXRlID0ge1xuICAgICAgICAgICAgaWQ6IHBhcnNlZC5pZCxcbiAgICAgICAgICAgIGZpbGVOYW1lOiBwYXJzZWQuZmlsZU5hbWUsXG4gICAgICAgICAgICBjdXJyZW50U2xpZGU6IHBhcnNlZC5jdXJyZW50U2xpZGUsXG4gICAgICAgICAgICBzbGlkZUNvdW50OiBwYXJzZWQuc2xpZGVDb3VudCxcbiAgICAgICAgICAgIGZpbGVUeXBlOiBwYXJzZWQuZmlsZVR5cGUsXG4gICAgICAgICAgICBzbGlkZVZpZGVvczogcGFyc2VkLnNsaWRlVmlkZW9zID8/IFtdLFxuICAgICAgICAgICAgdmlkZW9TdGF0ZTogcGFyc2VkLnZpZGVvU3RhdGUgPz8gJ2lkbGUnLFxuICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSBpZiAocGFyc2VkLnR5cGUgPT09ICdwcmVzZW50YXRpb246c3RvcHBlZCcpIHtcbiAgICAgICAgICBsYXRlc3RTdGF0ZSA9ICdzdG9wcGVkJztcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIC8vIFNraXAgbWFsZm9ybWVkIGluZGl2aWR1YWwgbWVzc2FnZXNcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGxhdGVzdFN0YXRlO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIC8vIGNvbnN1bWVNZXNzYWdlcyBmYWlsZWQgb3Igb3V0ZXIgSlNPTiBwYXJzZSBmYWlsZWQg4oCUIHJldHVybiB1bmRlZmluZWRcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBuZXh0U2xpZGUoKTogdm9pZCB7XG4gIHB1Ymxpc2hEYXRhKHtcbiAgICB0b3BpYzogUFJFU0VOVEFUSU9OX1RPUElDLFxuICAgIGRhdGE6IEpTT04uc3RyaW5naWZ5KHsgdHlwZTogJ3ByZXNlbnRhdGlvbjpuYXZpZ2F0ZScsIGFjdGlvbjogJ25leHQnIH0pLFxuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByZXZTbGlkZSgpOiB2b2lkIHtcbiAgcHVibGlzaERhdGEoe1xuICAgIHRvcGljOiBQUkVTRU5UQVRJT05fVE9QSUMsXG4gICAgZGF0YTogSlNPTi5zdHJpbmdpZnkoeyB0eXBlOiAncHJlc2VudGF0aW9uOm5hdmlnYXRlJywgYWN0aW9uOiAncHJldicgfSksXG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGxheVByZXNlbnRhdGlvblZpZGVvKHZpZGVvSW5kZXg6IG51bWJlcik6IHZvaWQge1xuICBwdWJsaXNoRGF0YSh7XG4gICAgdG9waWM6IFBSRVNFTlRBVElPTl9UT1BJQyxcbiAgICBkYXRhOiBKU09OLnN0cmluZ2lmeSh7IHR5cGU6ICdwcmVzZW50YXRpb246dmlkZW86cGxheScsIHZpZGVvSW5kZXggfSksXG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGF1c2VQcmVzZW50YXRpb25WaWRlbygpOiB2b2lkIHtcbiAgcHVibGlzaERhdGEoe1xuICAgIHRvcGljOiBQUkVTRU5UQVRJT05fVE9QSUMsXG4gICAgZGF0YTogSlNPTi5zdHJpbmdpZnkoeyB0eXBlOiAncHJlc2VudGF0aW9uOnZpZGVvOnBhdXNlJyB9KSxcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdG9wUHJlc2VudGF0aW9uVmlkZW8oKTogdm9pZCB7XG4gIHB1Ymxpc2hEYXRhKHtcbiAgICB0b3BpYzogUFJFU0VOVEFUSU9OX1RPUElDLFxuICAgIGRhdGE6IEpTT04uc3RyaW5naWZ5KHsgdHlwZTogJ3ByZXNlbnRhdGlvbjp2aWRlbzpzdG9wJyB9KSxcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdG9wUHJlc2VudGF0aW9uKCk6IHZvaWQge1xuICBwdWJsaXNoRGF0YSh7XG4gICAgdG9waWM6IFBSRVNFTlRBVElPTl9UT1BJQyxcbiAgICBkYXRhOiBKU09OLnN0cmluZ2lmeSh7IHR5cGU6ICdwcmVzZW50YXRpb246c3RvcCcgfSksXG4gIH0pO1xufVxuIl19
@@ -1,20 +1,20 @@
1
- import { IEngine } from '@dcl/ecs';
1
+ import { type IEngine } from '@dcl/ecs';
2
2
  import ReactEcs from '@dcl/react-ecs';
3
3
  import { Color4 } from '@dcl/sdk/math';
4
- import { State } from '../types';
4
+ import { type State } from '../types';
5
5
  export declare const ICONS: {
6
- readonly VIDEO_CONTROL: "https://builder-items.decentraland.org/admin_toolkit/assets/icons/video-control.png";
7
- readonly PREVIOUS_BUTTON: "https://builder-items.decentraland.org/admin_toolkit/assets/icons/video-control-previous-button.png";
8
- readonly FORWARD_BUTTON: "https://builder-items.decentraland.org/admin_toolkit/assets/icons/video-control-forward-button.png";
9
- readonly PLAY_BUTTON: "https://builder-items.decentraland.org/admin_toolkit/assets/icons/video-control-play-button.png";
10
- readonly MUTE: "https://builder-items.decentraland.org/admin_toolkit/assets/icons/video-control-mute.png";
11
- readonly LOOP: "https://builder-items.decentraland.org/admin_toolkit/assets/icons/video-control-loop.png";
12
- readonly VOLUME_MINUS_BUTTON: "https://builder-items.decentraland.org/admin_toolkit/assets/icons/video-control-volume-minus-button.png";
13
- readonly VOLUME_PLUS_BUTTON: "https://builder-items.decentraland.org/admin_toolkit/assets/icons/video-control-volume-plus-button.png";
14
- readonly VIDEO_SOURCE: "https://builder-items.decentraland.org/admin_toolkit/assets/icons/video-control-video-icon.png";
15
- readonly LIVE_SOURCE: "https://builder-items.decentraland.org/admin_toolkit/assets/icons/video-control-live.png";
16
- readonly DCL_CAST_SOURCE: "https://builder-items.decentraland.org/admin_toolkit/assets/icons/video-control-dcl-cast.png";
17
- readonly INFO: "https://builder-items.decentraland.org/admin_toolkit/assets/icons/info.png";
6
+ readonly VIDEO_CONTROL: string;
7
+ readonly PREVIOUS_BUTTON: string;
8
+ readonly FORWARD_BUTTON: string;
9
+ readonly PLAY_BUTTON: string;
10
+ readonly MUTE: string;
11
+ readonly LOOP: string;
12
+ readonly VOLUME_MINUS_BUTTON: string;
13
+ readonly VOLUME_PLUS_BUTTON: string;
14
+ readonly VIDEO_SOURCE: string;
15
+ readonly LIVE_SOURCE: string;
16
+ readonly DCL_CAST_SOURCE: string;
17
+ readonly INFO: string;
18
18
  };
19
19
  export declare const VOLUME_STEP = 0.1;
20
20
  export declare const DEFAULT_VOLUME = 1;
@@ -23,7 +23,8 @@ export declare const COLORS: {
23
23
  readonly GRAY: Color4.MutableColor4;
24
24
  readonly SUCCESS: Color4.MutableColor4;
25
25
  };
26
- export declare function VideoControl({ engine, state }: {
26
+ export declare function VideoControl({ engine, state, playerAddress, }: {
27
27
  engine: IEngine;
28
28
  state: State;
29
+ playerAddress: string | undefined;
29
30
  }): ReactEcs.JSX.Element;