@dytesdk/angular-ui-kit 3.0.7 → 3.0.8-staging.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dytesdk/angular-ui-kit",
3
- "version": "3.0.7",
3
+ "version": "3.0.8-staging.1",
4
4
  "description": "Dyte's UI Kit to support easy UI development for Angular Projects",
5
5
  "peerDependencies": {
6
6
  "@angular/common": ">=12",
@@ -8,7 +8,7 @@
8
8
  },
9
9
  "dependencies": {
10
10
  "tslib": "^2.3.0",
11
- "@dytesdk/ui-kit": "3.0.7"
11
+ "@dytesdk/ui-kit": "*"
12
12
  },
13
13
  "publishConfig": {
14
14
  "access": "public",
@@ -21,27 +21,23 @@
21
21
  "email": "support@dyte.io"
22
22
  },
23
23
  "sideEffects": false,
24
- "scripts": {
25
- "prepublishOnly": "cp package.json package.json.bak && node prepublish.js",
26
- "postpublish": "mv package.json.bak package.json"
27
- },
28
- "module": "dist/fesm2022/dytesdk-angular-ui-kit.mjs",
29
- "typings": "dist/index.d.ts",
30
- "es2020": "dist/fesm2020/dytesdk-angular-ui-kit.mjs",
31
- "esm2020": "dist/esm2020/dytesdk-angular-ui-kit.mjs",
32
- "fesm2020": "dist/fesm2020/dytesdk-angular-ui-kit.mjs",
33
- "fesm2015": "dist/fesm2015/dytesdk-angular-ui-kit.mjs",
24
+ "module": "fesm2015/dytesdk-angular-ui-kit.mjs",
25
+ "es2020": "fesm2020/dytesdk-angular-ui-kit.mjs",
26
+ "esm2020": "esm2020/dytesdk-angular-ui-kit.mjs",
27
+ "fesm2020": "fesm2020/dytesdk-angular-ui-kit.mjs",
28
+ "fesm2015": "fesm2015/dytesdk-angular-ui-kit.mjs",
29
+ "typings": "dytesdk-angular-ui-kit.d.ts",
34
30
  "exports": {
35
31
  "./package.json": {
36
32
  "default": "./package.json"
37
33
  },
38
34
  ".": {
39
- "types": "./dist/dytesdk-angular-ui-kit.d.ts",
40
- "esm2020": "./dist/esm2020/dytesdk-angular-ui-kit.mjs",
41
- "es2020": "./dist/fesm2020/dytesdk-angular-ui-kit.mjs",
42
- "es2015": "./dist/fesm2015/dytesdk-angular-ui-kit.mjs",
43
- "node": "./dist/fesm2015/dytesdk-angular-ui-kit.mjs",
44
- "default": "./dist/fesm2020/dytesdk-angular-ui-kit.mjs"
35
+ "types": "./dytesdk-angular-ui-kit.d.ts",
36
+ "esm2020": "./esm2020/dytesdk-angular-ui-kit.mjs",
37
+ "es2020": "./fesm2020/dytesdk-angular-ui-kit.mjs",
38
+ "es2015": "./fesm2015/dytesdk-angular-ui-kit.mjs",
39
+ "node": "./fesm2015/dytesdk-angular-ui-kit.mjs",
40
+ "default": "./fesm2020/dytesdk-angular-ui-kit.mjs"
45
41
  }
46
42
  }
47
- }
43
+ }
package/dist/README.md DELETED
@@ -1,83 +0,0 @@
1
- <!-- PROJECT LOGO -->
2
- <p align="center">
3
- <a href="https://dyte.io">
4
- <img src="https://assets.dyte.io/logo-outlined.png" alt="Logo" width="120" />
5
- </a>
6
-
7
- <h2 align="center">Angular UI Kit by dyte</h3>
8
-
9
- <p align="center">
10
- A set of UI components to truly customize your meeting UI, in Angular
11
- <br />
12
- <a href="https://docs.dyte.io"><strong>Explore the docs »</strong></a>
13
- <br />
14
- <br />
15
- <a href="https://community.dyte.io">Report Bug</a>
16
- ·
17
- <a href="https://community.dyte.io">Request Feature</a>
18
- </p>
19
- </p>
20
-
21
- <!-- TABLE OF CONTENTS -->
22
-
23
- ## Table of Contents
24
-
25
- - [Getting Started](#getting-started)
26
- - [Usage](#usage)
27
- - [About](#about)
28
-
29
- <!-- GETTING STARTED -->
30
-
31
- ## Getting Started
32
-
33
- > There are separate UI Kit packages for VanillaJS and React. Check out the links to the packages below
34
-
35
- > [UI Kit](https://npmjs.com/package/@dytesdk/ui-kit) · [React UI Kit](https://npmjs.com/package/@dytesdk/react-ui-kit)
36
-
37
- First, you will need to install the ui-kit along with the [web-core](https://npmjs.com/package/@dytesdk/web-core) package:
38
-
39
- ```sh
40
- npm i @dytesdk/angular-ui-kit @dytesdk/web-core
41
- ```
42
-
43
- The `web-core` package is the package which handles all the low level logic required for a meeting by interating with our servers. Use it to create a meeting object, which you can pass along to the UI Kit components.
44
-
45
- ## Usage
46
-
47
- Load the component in your template file (component.html):
48
-
49
- ```html
50
- <dyte-meeting #myid></dyte-meeting>
51
- ```
52
-
53
- Then initialize and pass the meeting object to the component:
54
-
55
- ```tsx
56
- class AppComponent {
57
- title = 'MyProject';
58
- @ViewChild('myid') meetingComponent: DyteMeeting;
59
- dyteMeeting: DyteClient;
60
-
61
- async ngAfterViewInit() {
62
- const meeting = await DyteClient.init({
63
- roomName: '<room-name>',
64
- authToken: '<auth-token>',
65
- defaults: {
66
- video: true,
67
- audio: true,
68
- },
69
- });
70
- meeting.joinRoom();
71
- this.dyteMeeting = meeting;
72
- if (this.meetingComponent) this.meetingComponent.meeting = meeting;
73
- }
74
- }
75
- ```
76
-
77
- ## About
78
-
79
- `angular-ui-kit` is created & maintained by Dyte, Inc. You can find us on Twitter - [@dyte_io](https://twitter.com/dyte_io) or write to us at `dev [at] dyte.io`.
80
-
81
- The names and logos for Dyte are trademarks of Dyte, Inc.
82
-
83
- We love open source software! See [our other projects](https://github.com/dyte-in) and [our products](https://dyte.io).
@@ -1,5 +0,0 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- /// <amd-module name="@dytesdk/angular-ui-kit" />
5
- export * from './public-api';
@@ -1,5 +0,0 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './public-api';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHl0ZXNkay1hbmd1bGFyLXVpLWtpdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9keXRlc2RrLWFuZ3VsYXItdWkta2l0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljLWFwaSc7XG4iXX0=
@@ -1,31 +0,0 @@
1
- import { APP_INITIALIZER, NgModule } from '@angular/core';
2
- import { DIRECTIVES } from './stencil-generated';
3
- import { defineCustomElements } from '@dytesdk/ui-kit/loader';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "./stencil-generated/components";
6
- export class DyteComponentsModule {
7
- }
8
- DyteComponentsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: DyteComponentsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
9
- DyteComponentsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: DyteComponentsModule, declarations: [i1.DyteAi, i1.DyteAiToggle, i1.DyteAiTranscriptions, i1.DyteAudioGrid, i1.DyteAudioTile, i1.DyteAudioVisualizer, i1.DyteAvatar, i1.DyteBreakoutRoomManager, i1.DyteBreakoutRoomParticipants, i1.DyteBreakoutRoomsManager, i1.DyteBreakoutRoomsToggle, i1.DyteBroadcastMessageModal, i1.DyteButton, i1.DyteCameraSelector, i1.DyteCameraToggle, i1.DyteCaptionToggle, i1.DyteChannelCreator, i1.DyteChannelDetails, i1.DyteChannelHeader, i1.DyteChannelSelectorUi, i1.DyteChannelSelectorView, i1.DyteChat, i1.DyteChatComposerUi, i1.DyteChatComposerView, i1.DyteChatMessage, i1.DyteChatMessagesUi, i1.DyteChatMessagesUiPaginated, i1.DyteChatSearchResults, i1.DyteChatSelectorUi, i1.DyteChatToggle, i1.DyteClock, i1.DyteConfirmationModal, i1.DyteControlbar, i1.DyteControlbarButton, i1.DyteCounter, i1.DyteDebugger, i1.DyteDebuggerAudio, i1.DyteDebuggerScreenshare, i1.DyteDebuggerSystem, i1.DyteDebuggerToggle, i1.DyteDebuggerVideo, i1.DyteDialog, i1.DyteDialogManager, i1.DyteDraftAttachmentView, i1.DyteEmojiPicker, i1.DyteEmojiPickerButton, i1.DyteEndedScreen, i1.DyteFileDropzone, i1.DyteFileMessage, i1.DyteFileMessageView, i1.DyteFilePickerButton, i1.DyteFullscreenToggle, i1.DyteGrid, i1.DyteGridPagination, i1.DyteHeader, i1.DyteIcon, i1.DyteIdleScreen, i1.DyteImageMessage, i1.DyteImageMessageView, i1.DyteImageViewer, i1.DyteInformationTooltip, i1.DyteJoinStage, i1.DyteLeaveButton, i1.DyteLeaveMeeting, i1.DyteLivestreamIndicator, i1.DyteLivestreamPlayer, i1.DyteLivestreamToggle, i1.DyteLogo, i1.DyteMarkdownView, i1.DyteMeeting, i1.DyteMeetingTitle, i1.DyteMenu, i1.DyteMenuItem, i1.DyteMenuList, i1.DyteMessageListView, i1.DyteMessageView, i1.DyteMicToggle, i1.DyteMicrophoneSelector, i1.DyteMixedGrid, i1.DyteMoreToggle, i1.DyteMuteAllButton, i1.DyteMuteAllConfirmation, i1.DyteNameTag, i1.DyteNetworkIndicator, i1.DyteNotification, i1.DyteNotifications, i1.DyteOverlayModal, i1.DytePaginatedList, i1.DyteParticipant, i1.DyteParticipantCount, i1.DyteParticipantSetup, i1.DyteParticipantTile, i1.DyteParticipants, i1.DyteParticipantsAudio, i1.DyteParticipantsStageList, i1.DyteParticipantsStageQueue, i1.DyteParticipantsToggle, i1.DyteParticipantsViewerList, i1.DyteParticipantsWaitingList, i1.DytePermissionsMessage, i1.DytePipToggle, i1.DytePluginMain, i1.DytePlugins, i1.DytePluginsToggle, i1.DytePoll, i1.DytePollForm, i1.DytePolls, i1.DytePollsToggle, i1.DyteRecordingIndicator, i1.DyteRecordingToggle, i1.DyteScreenShareToggle, i1.DyteScreenshareView, i1.DyteSettings, i1.DyteSettingsAudio, i1.DyteSettingsToggle, i1.DyteSettingsVideo, i1.DyteSetupScreen, i1.DyteSidebar, i1.DyteSidebarUi, i1.DyteSimpleGrid, i1.DyteSpeakerSelector, i1.DyteSpinner, i1.DyteSpotlightGrid, i1.DyteSpotlightIndicator, i1.DyteStage, i1.DyteStageToggle, i1.DyteSwitch, i1.DyteTabBar, i1.DyteTextComposerView, i1.DyteTextMessage, i1.DyteTextMessageView, i1.DyteTooltip, i1.DyteTranscript, i1.DyteTranscripts, i1.DyteUiProvider, i1.DyteViewerCount, i1.DyteVirtualizedParticipantList, i1.DyteWaitingScreen], exports: [i1.DyteAi, i1.DyteAiToggle, i1.DyteAiTranscriptions, i1.DyteAudioGrid, i1.DyteAudioTile, i1.DyteAudioVisualizer, i1.DyteAvatar, i1.DyteBreakoutRoomManager, i1.DyteBreakoutRoomParticipants, i1.DyteBreakoutRoomsManager, i1.DyteBreakoutRoomsToggle, i1.DyteBroadcastMessageModal, i1.DyteButton, i1.DyteCameraSelector, i1.DyteCameraToggle, i1.DyteCaptionToggle, i1.DyteChannelCreator, i1.DyteChannelDetails, i1.DyteChannelHeader, i1.DyteChannelSelectorUi, i1.DyteChannelSelectorView, i1.DyteChat, i1.DyteChatComposerUi, i1.DyteChatComposerView, i1.DyteChatMessage, i1.DyteChatMessagesUi, i1.DyteChatMessagesUiPaginated, i1.DyteChatSearchResults, i1.DyteChatSelectorUi, i1.DyteChatToggle, i1.DyteClock, i1.DyteConfirmationModal, i1.DyteControlbar, i1.DyteControlbarButton, i1.DyteCounter, i1.DyteDebugger, i1.DyteDebuggerAudio, i1.DyteDebuggerScreenshare, i1.DyteDebuggerSystem, i1.DyteDebuggerToggle, i1.DyteDebuggerVideo, i1.DyteDialog, i1.DyteDialogManager, i1.DyteDraftAttachmentView, i1.DyteEmojiPicker, i1.DyteEmojiPickerButton, i1.DyteEndedScreen, i1.DyteFileDropzone, i1.DyteFileMessage, i1.DyteFileMessageView, i1.DyteFilePickerButton, i1.DyteFullscreenToggle, i1.DyteGrid, i1.DyteGridPagination, i1.DyteHeader, i1.DyteIcon, i1.DyteIdleScreen, i1.DyteImageMessage, i1.DyteImageMessageView, i1.DyteImageViewer, i1.DyteInformationTooltip, i1.DyteJoinStage, i1.DyteLeaveButton, i1.DyteLeaveMeeting, i1.DyteLivestreamIndicator, i1.DyteLivestreamPlayer, i1.DyteLivestreamToggle, i1.DyteLogo, i1.DyteMarkdownView, i1.DyteMeeting, i1.DyteMeetingTitle, i1.DyteMenu, i1.DyteMenuItem, i1.DyteMenuList, i1.DyteMessageListView, i1.DyteMessageView, i1.DyteMicToggle, i1.DyteMicrophoneSelector, i1.DyteMixedGrid, i1.DyteMoreToggle, i1.DyteMuteAllButton, i1.DyteMuteAllConfirmation, i1.DyteNameTag, i1.DyteNetworkIndicator, i1.DyteNotification, i1.DyteNotifications, i1.DyteOverlayModal, i1.DytePaginatedList, i1.DyteParticipant, i1.DyteParticipantCount, i1.DyteParticipantSetup, i1.DyteParticipantTile, i1.DyteParticipants, i1.DyteParticipantsAudio, i1.DyteParticipantsStageList, i1.DyteParticipantsStageQueue, i1.DyteParticipantsToggle, i1.DyteParticipantsViewerList, i1.DyteParticipantsWaitingList, i1.DytePermissionsMessage, i1.DytePipToggle, i1.DytePluginMain, i1.DytePlugins, i1.DytePluginsToggle, i1.DytePoll, i1.DytePollForm, i1.DytePolls, i1.DytePollsToggle, i1.DyteRecordingIndicator, i1.DyteRecordingToggle, i1.DyteScreenShareToggle, i1.DyteScreenshareView, i1.DyteSettings, i1.DyteSettingsAudio, i1.DyteSettingsToggle, i1.DyteSettingsVideo, i1.DyteSetupScreen, i1.DyteSidebar, i1.DyteSidebarUi, i1.DyteSimpleGrid, i1.DyteSpeakerSelector, i1.DyteSpinner, i1.DyteSpotlightGrid, i1.DyteSpotlightIndicator, i1.DyteStage, i1.DyteStageToggle, i1.DyteSwitch, i1.DyteTabBar, i1.DyteTextComposerView, i1.DyteTextMessage, i1.DyteTextMessageView, i1.DyteTooltip, i1.DyteTranscript, i1.DyteTranscripts, i1.DyteUiProvider, i1.DyteViewerCount, i1.DyteVirtualizedParticipantList, i1.DyteWaitingScreen] });
10
- DyteComponentsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: DyteComponentsModule, providers: [
11
- {
12
- provide: APP_INITIALIZER,
13
- useFactory: () => defineCustomElements,
14
- multi: true,
15
- },
16
- ] });
17
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: DyteComponentsModule, decorators: [{
18
- type: NgModule,
19
- args: [{
20
- declarations: [...DIRECTIVES],
21
- exports: [...DIRECTIVES],
22
- providers: [
23
- {
24
- provide: APP_INITIALIZER,
25
- useFactory: () => defineCustomElements,
26
- multi: true,
27
- },
28
- ],
29
- }]
30
- }] });
31
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50cy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7O0FBYTlELE1BQU0sT0FBTyxvQkFBb0I7O2tIQUFwQixvQkFBb0I7bUhBQXBCLG9CQUFvQjttSEFBcEIsb0JBQW9CLGFBUnBCO1FBQ1Q7WUFDRSxPQUFPLEVBQUUsZUFBZTtZQUN4QixVQUFVLEVBQUUsR0FBRyxFQUFFLENBQUMsb0JBQW9CO1lBQ3RDLEtBQUssRUFBRSxJQUFJO1NBQ1o7S0FDRjs0RkFFVSxvQkFBb0I7a0JBWGhDLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMsR0FBRyxVQUFVLENBQUM7b0JBQzdCLE9BQU8sRUFBRSxDQUFDLEdBQUcsVUFBVSxDQUFDO29CQUN4QixTQUFTLEVBQUU7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGVBQWU7NEJBQ3hCLFVBQVUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxvQkFBb0I7NEJBQ3RDLEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVBQX0lOSVRJQUxJWkVSLCBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRElSRUNUSVZFUyB9IGZyb20gJy4vc3RlbmNpbC1nZW5lcmF0ZWQnO1xuaW1wb3J0IHsgZGVmaW5lQ3VzdG9tRWxlbWVudHMgfSBmcm9tICdAZHl0ZXNkay91aS1raXQvbG9hZGVyJztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbLi4uRElSRUNUSVZFU10sXG4gIGV4cG9ydHM6IFsuLi5ESVJFQ1RJVkVTXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogQVBQX0lOSVRJQUxJWkVSLFxuICAgICAgdXNlRmFjdG9yeTogKCkgPT4gZGVmaW5lQ3VzdG9tRWxlbWVudHMsXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBEeXRlQ29tcG9uZW50c01vZHVsZSB7fVxuIl19
@@ -1,59 +0,0 @@
1
- /* eslint-disable */
2
- /* tslint:disable */
3
- import { fromEvent } from 'rxjs';
4
- export const proxyInputs = (Cmp, inputs) => {
5
- const Prototype = Cmp.prototype;
6
- inputs.forEach((item) => {
7
- Object.defineProperty(Prototype, item, {
8
- get() {
9
- return this.el[item];
10
- },
11
- set(val) {
12
- this.z.runOutsideAngular(() => (this.el[item] = val));
13
- },
14
- /**
15
- * In the event that proxyInputs is called
16
- * multiple times re-defining these inputs
17
- * will cause an error to be thrown. As a result
18
- * we set configurable: true to indicate these
19
- * properties can be changed.
20
- */
21
- configurable: true,
22
- });
23
- });
24
- };
25
- export const proxyMethods = (Cmp, methods) => {
26
- const Prototype = Cmp.prototype;
27
- methods.forEach((methodName) => {
28
- Prototype[methodName] = function () {
29
- const args = arguments;
30
- return this.z.runOutsideAngular(() => this.el[methodName].apply(this.el, args));
31
- };
32
- });
33
- };
34
- export const proxyOutputs = (instance, el, events) => {
35
- events.forEach((eventName) => (instance[eventName] = fromEvent(el, eventName)));
36
- };
37
- export const defineCustomElement = (tagName, customElement) => {
38
- if (customElement !== undefined && typeof customElements !== 'undefined' && !customElements.get(tagName)) {
39
- customElements.define(tagName, customElement);
40
- }
41
- };
42
- // tslint:disable-next-line: only-arrow-functions
43
- export function ProxyCmp(opts) {
44
- const decorator = function (cls) {
45
- const { defineCustomElementFn, inputs, methods } = opts;
46
- if (defineCustomElementFn !== undefined) {
47
- defineCustomElementFn();
48
- }
49
- if (inputs) {
50
- proxyInputs(cls, inputs);
51
- }
52
- if (methods) {
53
- proxyMethods(cls, methods);
54
- }
55
- return cls;
56
- };
57
- return decorator;
58
- }
59
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3N0ZW5jaWwtZ2VuZXJhdGVkL2FuZ3VsYXItY29tcG9uZW50LWxpYi91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxvQkFBb0I7QUFDcEIsb0JBQW9CO0FBQ3BCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFakMsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLENBQUMsR0FBUSxFQUFFLE1BQWdCLEVBQUUsRUFBRTtJQUN4RCxNQUFNLFNBQVMsR0FBRyxHQUFHLENBQUMsU0FBUyxDQUFDO0lBQ2hDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtRQUN0QixNQUFNLENBQUMsY0FBYyxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUU7WUFDckMsR0FBRztnQkFDRCxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDdkIsQ0FBQztZQUNELEdBQUcsQ0FBQyxHQUFRO2dCQUNWLElBQUksQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDeEQsQ0FBQztZQUNEOzs7Ozs7ZUFNRztZQUNILFlBQVksRUFBRSxJQUFJO1NBQ25CLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLENBQUMsR0FBUSxFQUFFLE9BQWlCLEVBQUUsRUFBRTtJQUMxRCxNQUFNLFNBQVMsR0FBRyxHQUFHLENBQUMsU0FBUyxDQUFDO0lBQ2hDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRTtRQUM3QixTQUFTLENBQUMsVUFBVSxDQUFDLEdBQUc7WUFDdEIsTUFBTSxJQUFJLEdBQUcsU0FBUyxDQUFDO1lBQ3ZCLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDbEYsQ0FBQyxDQUFDO0lBQ0osQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsQ0FBQyxRQUFhLEVBQUUsRUFBTyxFQUFFLE1BQWdCLEVBQUUsRUFBRTtJQUN2RSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsR0FBRyxTQUFTLENBQUMsRUFBRSxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsRixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxDQUFDLE9BQWUsRUFBRSxhQUFrQixFQUFFLEVBQUU7SUFDekUsSUFBSSxhQUFhLEtBQUssU0FBUyxJQUFJLE9BQU8sY0FBYyxLQUFLLFdBQVcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUU7UUFDeEcsY0FBYyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsYUFBYSxDQUFDLENBQUM7S0FDL0M7QUFDSCxDQUFDLENBQUM7QUFFRixpREFBaUQ7QUFDakQsTUFBTSxVQUFVLFFBQVEsQ0FBQyxJQUF5RTtJQUNoRyxNQUFNLFNBQVMsR0FBRyxVQUFVLEdBQVE7UUFDbEMsTUFBTSxFQUFFLHFCQUFxQixFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUM7UUFFeEQsSUFBSSxxQkFBcUIsS0FBSyxTQUFTLEVBQUU7WUFDdkMscUJBQXFCLEVBQUUsQ0FBQztTQUN6QjtRQUVELElBQUksTUFBTSxFQUFFO1lBQ1YsV0FBVyxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQztTQUMxQjtRQUNELElBQUksT0FBTyxFQUFFO1lBQ1gsWUFBWSxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQztTQUM1QjtRQUNELE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQyxDQUFDO0lBQ0YsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlICovXG4vKiB0c2xpbnQ6ZGlzYWJsZSAqL1xuaW1wb3J0IHsgZnJvbUV2ZW50IH0gZnJvbSAncnhqcyc7XG5cbmV4cG9ydCBjb25zdCBwcm94eUlucHV0cyA9IChDbXA6IGFueSwgaW5wdXRzOiBzdHJpbmdbXSkgPT4ge1xuICBjb25zdCBQcm90b3R5cGUgPSBDbXAucHJvdG90eXBlO1xuICBpbnB1dHMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShQcm90b3R5cGUsIGl0ZW0sIHtcbiAgICAgIGdldCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWxbaXRlbV07XG4gICAgICB9LFxuICAgICAgc2V0KHZhbDogYW55KSB7XG4gICAgICAgIHRoaXMuei5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiAodGhpcy5lbFtpdGVtXSA9IHZhbCkpO1xuICAgICAgfSxcbiAgICAgIC8qKlxuICAgICAgICogSW4gdGhlIGV2ZW50IHRoYXQgcHJveHlJbnB1dHMgaXMgY2FsbGVkXG4gICAgICAgKiBtdWx0aXBsZSB0aW1lcyByZS1kZWZpbmluZyB0aGVzZSBpbnB1dHNcbiAgICAgICAqIHdpbGwgY2F1c2UgYW4gZXJyb3IgdG8gYmUgdGhyb3duLiBBcyBhIHJlc3VsdFxuICAgICAgICogd2Ugc2V0IGNvbmZpZ3VyYWJsZTogdHJ1ZSB0byBpbmRpY2F0ZSB0aGVzZVxuICAgICAgICogcHJvcGVydGllcyBjYW4gYmUgY2hhbmdlZC5cbiAgICAgICAqL1xuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgIH0pO1xuICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBwcm94eU1ldGhvZHMgPSAoQ21wOiBhbnksIG1ldGhvZHM6IHN0cmluZ1tdKSA9PiB7XG4gIGNvbnN0IFByb3RvdHlwZSA9IENtcC5wcm90b3R5cGU7XG4gIG1ldGhvZHMuZm9yRWFjaCgobWV0aG9kTmFtZSkgPT4ge1xuICAgIFByb3RvdHlwZVttZXRob2ROYW1lXSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGFyZ3MgPSBhcmd1bWVudHM7XG4gICAgICByZXR1cm4gdGhpcy56LnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHRoaXMuZWxbbWV0aG9kTmFtZV0uYXBwbHkodGhpcy5lbCwgYXJncykpO1xuICAgIH07XG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IHByb3h5T3V0cHV0cyA9IChpbnN0YW5jZTogYW55LCBlbDogYW55LCBldmVudHM6IHN0cmluZ1tdKSA9PiB7XG4gIGV2ZW50cy5mb3JFYWNoKChldmVudE5hbWUpID0+IChpbnN0YW5jZVtldmVudE5hbWVdID0gZnJvbUV2ZW50KGVsLCBldmVudE5hbWUpKSk7XG59O1xuXG5leHBvcnQgY29uc3QgZGVmaW5lQ3VzdG9tRWxlbWVudCA9ICh0YWdOYW1lOiBzdHJpbmcsIGN1c3RvbUVsZW1lbnQ6IGFueSkgPT4ge1xuICBpZiAoY3VzdG9tRWxlbWVudCAhPT0gdW5kZWZpbmVkICYmIHR5cGVvZiBjdXN0b21FbGVtZW50cyAhPT0gJ3VuZGVmaW5lZCcgJiYgIWN1c3RvbUVsZW1lbnRzLmdldCh0YWdOYW1lKSkge1xuICAgIGN1c3RvbUVsZW1lbnRzLmRlZmluZSh0YWdOYW1lLCBjdXN0b21FbGVtZW50KTtcbiAgfVxufTtcblxuLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBvbmx5LWFycm93LWZ1bmN0aW9uc1xuZXhwb3J0IGZ1bmN0aW9uIFByb3h5Q21wKG9wdHM6IHsgZGVmaW5lQ3VzdG9tRWxlbWVudEZuPzogKCkgPT4gdm9pZDsgaW5wdXRzPzogYW55OyBtZXRob2RzPzogYW55IH0pIHtcbiAgY29uc3QgZGVjb3JhdG9yID0gZnVuY3Rpb24gKGNsczogYW55KSB7XG4gICAgY29uc3QgeyBkZWZpbmVDdXN0b21FbGVtZW50Rm4sIGlucHV0cywgbWV0aG9kcyB9ID0gb3B0cztcblxuICAgIGlmIChkZWZpbmVDdXN0b21FbGVtZW50Rm4gIT09IHVuZGVmaW5lZCkge1xuICAgICAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuKCk7XG4gICAgfVxuXG4gICAgaWYgKGlucHV0cykge1xuICAgICAgcHJveHlJbnB1dHMoY2xzLCBpbnB1dHMpO1xuICAgIH1cbiAgICBpZiAobWV0aG9kcykge1xuICAgICAgcHJveHlNZXRob2RzKGNscywgbWV0aG9kcyk7XG4gICAgfVxuICAgIHJldHVybiBjbHM7XG4gIH07XG4gIHJldHVybiBkZWNvcmF0b3I7XG59XG4iXX0=