@ruc-lib/screen-recorder 2.9.2 → 3.1.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/README.md CHANGED
@@ -14,7 +14,16 @@ To install the entire RUC library:
14
14
  ## Install Individual Components
15
15
  If users only need the dialog component, they can install it separately:
16
16
 
17
- `npm install @ruc-lib/screen-recorder`
17
+ `npm install @ruclib/screen-recorder`
18
+
19
+ ## Version Compatibility
20
+
21
+ Please ensure you install the correct version of `@ruc-lib/screen-recorder` based on your Angular version.
22
+
23
+ | Angular Version | Compatible `@ruc-lib/screen-recorder` Version |
24
+ |--------------------|---------------------------------------------|
25
+ | 15.x.x | `npm install @ruc-lib/screen-recorder@^3.0.0` |
26
+ | 16.x.x | `npm install @ruc-lib/screen-recorder@^3.0.0` |
18
27
 
19
28
  ## Usage
20
29
 
@@ -22,12 +31,11 @@ To use the screen recorder component in your project, follow the integration gui
22
31
 
23
32
  ## Using Selector
24
33
 
25
- 1. Import `RuclibScreenRecorderModule` from `@ruc-lib/screen-recorder` into `app.module.ts` file.
34
+ 1. Import `RuclibScreenRecorderModule` from `@ruclib/screen-recorder` into `app.module.ts` file.
26
35
  2. Use the selector in your HTML file.
27
36
 
28
37
  ```
29
- <uxp-screen-recorder
30
- [rucInputData]="recorderOptions"></uxp-screen-recorder>
38
+ <uxp-ruclib-screen-recorder [rucInputData]="recorderConfig" [customTheme]="'custom-theme'"></uxp-ruclib-screen-recorder>
31
39
 
32
40
  ```
33
41
 
@@ -140,6 +148,22 @@ export class AppComponent {
140
148
  }
141
149
  ```
142
150
 
151
+ > ⚠️ **IMPORTANT: Custom Theme Usage in Angular Material**
152
+
153
+ When implementing **custom themes**, such as:
154
+
155
+ ```scss
156
+ .custom-theme-1 {
157
+ @include angular-material-theme($custom-theme);
158
+ }
159
+
160
+ // You must also include the typography mixin to ensure text styles are applied correctly as shown below:
161
+ .custom-theme-1 {
162
+ @include angular-material-theme($custom-theme);
163
+ @include mat.typography-level($theme-custom-typography-name, body-1);
164
+ }
165
+ ```
166
+
143
167
  ## Contribution
144
168
 
145
169
  Contributions are welcome! Feel free to open issues or pull requests for any enhancements or fixes.
package/esm2020/index.mjs CHANGED
@@ -2,4 +2,4 @@ export * from './lib/ruclib-screen-recorder.module';
2
2
  export * from './lib/screen-recorder/screen-recorder.component';
3
3
  export * from './lib/services/screen-recorder.service';
4
4
  export * from './lib/models/screen-recorder.models';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3J1Y2xpYi9zY3JlZW4tcmVjb3JkZXIvc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYyxpREFBaUQsQ0FBQztBQUNoRSxjQUFjLHdDQUF3QyxDQUFDO0FBQ3ZELGNBQWMscUNBQXFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2xpYi9ydWNsaWItc2NyZWVuLXJlY29yZGVyLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NjcmVlbi1yZWNvcmRlci9zY3JlZW4tcmVjb3JkZXIuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvc2NyZWVuLXJlY29yZGVyLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2RlbHMvc2NyZWVuLXJlY29yZGVyLm1vZGVscyc7Il19
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLGlEQUFpRCxDQUFDO0FBQ2hFLGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYyxxQ0FBcUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbGliL3J1Y2xpYi1zY3JlZW4tcmVjb3JkZXIubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc2NyZWVuLXJlY29yZGVyL3NjcmVlbi1yZWNvcmRlci5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlcy9zY3JlZW4tcmVjb3JkZXIuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGVscy9zY3JlZW4tcmVjb3JkZXIubW9kZWxzJzsiXX0=
@@ -17,4 +17,4 @@ export var RecordingState;
17
17
  RecordingState["Paused"] = "paused";
18
18
  RecordingState["Stopped"] = "stopped";
19
19
  })(RecordingState || (RecordingState = {}));
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NyZWVuLXJlY29yZGVyLm1vZGVscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcnVjbGliL3NjcmVlbi1yZWNvcmRlci9zcmMvbGliL21vZGVscy9zY3JlZW4tcmVjb3JkZXIubW9kZWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBTixJQUFZLHNCQUtUO0FBTEgsV0FBWSxzQkFBc0I7SUFDOUIscUNBQVcsQ0FBQTtJQUNYLDJDQUFpQixDQUFBO0lBQ2pCLHVDQUFhLENBQUE7SUFDYix5Q0FBZSxDQUFBO0FBQ2pCLENBQUMsRUFMUyxzQkFBc0IsS0FBdEIsc0JBQXNCLFFBSy9CO0FBRUQsTUFBTSxDQUFOLElBQVksYUFHWDtBQUhELFdBQVksYUFBYTtJQUN2Qiw4QkFBYSxDQUFBO0lBQ2IsOEJBQWEsQ0FBQTtBQUNmLENBQUMsRUFIVyxhQUFhLEtBQWIsYUFBYSxRQUd4QjtBQUVELE1BQU0sQ0FBTixJQUFZLGNBS1g7QUFMRCxXQUFZLGNBQWM7SUFDeEIsK0JBQWEsQ0FBQTtJQUNiLHlDQUF1QixDQUFBO0lBQ3ZCLG1DQUFpQixDQUFBO0lBQ2pCLHFDQUFtQixDQUFBO0FBQ3JCLENBQUMsRUFMVyxjQUFjLEtBQWQsY0FBYyxRQUt6QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIFNjcmVlblJlY29yZGVyUG9zaXRpb24ge1xyXG4gICAgVG9wID0gJ3RvcCcsXHJcbiAgICBCb3R0b20gPSAnYm90dG9tJyxcclxuICAgIExlZnQgPSAnbGVmdCcsXHJcbiAgICBSaWdodCA9ICdyaWdodCcsXHJcbiAgfVxyXG4gIFxyXG4gIGV4cG9ydCBlbnVtIERpc3BsYXlGb3JtYXQge1xyXG4gICAgSWNvbiA9ICdpY29uJyxcclxuICAgIFRleHQgPSAndGV4dCcsXHJcbiAgfVxyXG4gIFxyXG4gIGV4cG9ydCBlbnVtIFJlY29yZGluZ1N0YXRlIHtcclxuICAgIElkbGUgPSAnaWRsZScsXHJcbiAgICBSZWNvcmRpbmcgPSAncmVjb3JkaW5nJyxcclxuICAgIFBhdXNlZCA9ICdwYXVzZWQnLFxyXG4gICAgU3RvcHBlZCA9ICdzdG9wcGVkJyxcclxuICB9XHJcbiAgXHJcbiAgZXhwb3J0IGludGVyZmFjZSBTY3JlZW5SZWNvcmRlckljb25zIHtcclxuICAgIHJlY29yZD86IHN0cmluZzsgLy8gRGVmYXVsdDogJ+KXjycgKGZpbGxlZCBjaXJjbGUpIG9yIGEgbWF0ZXJpYWwgaWNvbiBjbGFzc1xyXG4gICAgcmVjb3JkV2l0aEF1ZGlvPzogc3RyaW5nOyAvLyBBbHRlcm5hdGl2ZSBpZiBzcGVjaWZpYyBpY29uIGZvciBcInJlY29yZCB3aXRoIGF1ZGlvXCIgaXMgbmVlZGVkXHJcbiAgICByZWNvcmRXaXRob3V0QXVkaW8/OiBzdHJpbmc7IC8vIEFsdGVybmF0aXZlIGlmIHNwZWNpZmljIGljb24gZm9yIFwicmVjb3JkIHdpdGhvdXQgYXVkaW9cIiBpcyBuZWVkZWRcclxuICAgIHN0b3A/OiBzdHJpbmc7IC8vIERlZmF1bHQ6ICfilqAnIChmaWxsZWQgc3F1YXJlKSBvciBhIG1hdGVyaWFsIGljb24gY2xhc3NcclxuICAgIHBhdXNlPzogc3RyaW5nOyAvLyBEZWZhdWx0OiAn4p2a4p2aJyAocGF1c2Ugc3ltYm9sKSBvciBhIG1hdGVyaWFsIGljb24gY2xhc3NcclxuICAgIHJlc3VtZT86IHN0cmluZzsgLy8gRGVmYXVsdDogJ+KWuicgKHBsYXkgc3ltYm9sKSBvciBhIG1hdGVyaWFsIGljb24gY2xhc3NcclxuICAgIHBsYXk/OiBzdHJpbmc7IC8vIERlZmF1bHQ6ICfilronIChwbGF5IHN5bWJvbCkgb3IgYSBtYXRlcmlhbCBpY29uIGNsYXNzXHJcbiAgICBkb3dubG9hZD86IHN0cmluZzsgLy8gRGVmYXVsdDogJ/Cfkr4nIChmbG9wcHkgZGlzaykgb3IgYSBtYXRlcmlhbCBpY29uIGNsYXNzXHJcbiAgICBhdWRpb09uPzogc3RyaW5nOyAvLyBEZWZhdWx0OiAn8J+UiicgKHNwZWFrZXIgaGlnaCB2b2x1bWUpIG9yIGEgbWF0ZXJpYWwgaWNvbiBjbGFzc1xyXG4gICAgYXVkaW9PZmY/OiBzdHJpbmc7IC8vIERlZmF1bHQ6ICfwn5SHJyAobXV0ZWQgc3BlYWtlcikgb3IgYSBtYXRlcmlhbCBpY29uIGNsYXNzXHJcbiAgfVxyXG4gIFxyXG4gIGV4cG9ydCBpbnRlcmZhY2UgU2NyZWVuUmVjb3JkZXJPcHRpb25zIHtcclxuICAgIHBvc2l0aW9uPzogU2NyZWVuUmVjb3JkZXJQb3NpdGlvbjtcclxuICAgIGRpc3BsYXlGb3JtYXQ/OiBEaXNwbGF5Rm9ybWF0O1xyXG4gICAgc2hvd0F1ZGlvVG9nZ2xlPzogYm9vbGVhbjtcclxuICAgIGRlZmF1bHRBdWRpb1N0YXRlPzogYm9vbGVhbjsgLy8gdHJ1ZSBmb3IgYXVkaW8gb24sIGZhbHNlIGZvciBhdWRpbyBvZmZcclxuICAgIGRvd25sb2FkRmlsZU5hbWU/OiBzdHJpbmc7XHJcbiAgICBpY29ucz86IFNjcmVlblJlY29yZGVySWNvbnM7IC8vIEZvciBjdXN0b20gaWNvbnMgKGUuZy4sIENTUyBjbGFzc2VzIGZvciBpY29uIGZvbnRzKVxyXG4gICAgc2hvd1RpbWVyPzogYm9vbGVhbjtcclxuICAgIHNob3dQYXVzZVJlc3VtZT86IGJvb2xlYW47XHJcbiAgICBzaG93UGxheWJhY2tDb250cm9scz86IGJvb2xlYW47IC8vIFRvIHNob3cvaGlkZSB0aGUgdmlkZW8gcGxheWVyIHByZXZpZXdcclxuICAgIHNob3dEb3dubG9hZEJ1dHRvbj86IGJvb2xlYW47XHJcbiAgICB1c2VVVENGb3JUaW1lcj86IGJvb2xlYW47XHJcbiAgICAvKiAgRm9yIHNwZWNpZmljIGFyZWE6IGdldERpc3BsYXlNZWRpYSBhbGxvd3MgdXNlciB0byBjaG9vc2Ugd2luZG93L3RhYi9zY3JlZW4uXHJcbiAgICAgIElmIGEgbW9yZSBzcGVjaWZpYyBjcm9wIGlzIG5lZWRlZCwgaXQncyBvdXRzaWRlIHN0YW5kYXJkIFdlYiBBUEkgc2NvcGUuXHJcbiAgICAgIFRoaXMgb3B0aW9uIGltcGxpZXMgd2UgZW5zdXJlIHRoZSBicm93c2VyJ3MgcGlja2VyIGlzIHVzZWQuXHJcbiAgICAqL1xyXG4gICAgYWxsb3dTcGVjaWZpY0FyZWFTZWxlY3Rpb24/OiBib29sZWFuO1xyXG4gICAgLy8gQWNjZXNzaWJpbGl0eSByZWxhdGVkIHRleHRzXHJcbiAgICBhY2Nlc3NpYmlsaXR5TGFiZWxzPzoge1xyXG4gICAgICByZWNvcmRCdXR0b24/OiBzdHJpbmc7XHJcbiAgICAgIHN0b3BCdXR0b24/OiBzdHJpbmc7XHJcbiAgICAgIHBhdXNlQnV0dG9uPzogc3RyaW5nO1xyXG4gICAgICByZXN1bWVCdXR0b24/OiBzdHJpbmc7XHJcbiAgICAgIGF1ZGlvVG9nZ2xlQnV0dG9uPzogc3RyaW5nO1xyXG4gICAgICBkb3dubG9hZEJ1dHRvbj86IHN0cmluZztcclxuICAgICAgcGxheWJhY2tWaWRlbz86IHN0cmluZztcclxuICAgIH07XHJcbiAgfVxyXG4gICJdfQ==
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NyZWVuLXJlY29yZGVyLm1vZGVscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvbW9kZWxzL3NjcmVlbi1yZWNvcmRlci5tb2RlbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFOLElBQVksc0JBS1Q7QUFMSCxXQUFZLHNCQUFzQjtJQUM5QixxQ0FBVyxDQUFBO0lBQ1gsMkNBQWlCLENBQUE7SUFDakIsdUNBQWEsQ0FBQTtJQUNiLHlDQUFlLENBQUE7QUFDakIsQ0FBQyxFQUxTLHNCQUFzQixLQUF0QixzQkFBc0IsUUFLL0I7QUFFRCxNQUFNLENBQU4sSUFBWSxhQUdYO0FBSEQsV0FBWSxhQUFhO0lBQ3ZCLDhCQUFhLENBQUE7SUFDYiw4QkFBYSxDQUFBO0FBQ2YsQ0FBQyxFQUhXLGFBQWEsS0FBYixhQUFhLFFBR3hCO0FBRUQsTUFBTSxDQUFOLElBQVksY0FLWDtBQUxELFdBQVksY0FBYztJQUN4QiwrQkFBYSxDQUFBO0lBQ2IseUNBQXVCLENBQUE7SUFDdkIsbUNBQWlCLENBQUE7SUFDakIscUNBQW1CLENBQUE7QUFDckIsQ0FBQyxFQUxXLGNBQWMsS0FBZCxjQUFjLFFBS3pCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGVudW0gU2NyZWVuUmVjb3JkZXJQb3NpdGlvbiB7XHJcbiAgICBUb3AgPSAndG9wJyxcclxuICAgIEJvdHRvbSA9ICdib3R0b20nLFxyXG4gICAgTGVmdCA9ICdsZWZ0JyxcclxuICAgIFJpZ2h0ID0gJ3JpZ2h0JyxcclxuICB9XHJcbiAgXHJcbiAgZXhwb3J0IGVudW0gRGlzcGxheUZvcm1hdCB7XHJcbiAgICBJY29uID0gJ2ljb24nLFxyXG4gICAgVGV4dCA9ICd0ZXh0JyxcclxuICB9XHJcbiAgXHJcbiAgZXhwb3J0IGVudW0gUmVjb3JkaW5nU3RhdGUge1xyXG4gICAgSWRsZSA9ICdpZGxlJyxcclxuICAgIFJlY29yZGluZyA9ICdyZWNvcmRpbmcnLFxyXG4gICAgUGF1c2VkID0gJ3BhdXNlZCcsXHJcbiAgICBTdG9wcGVkID0gJ3N0b3BwZWQnLFxyXG4gIH1cclxuICBcclxuICBleHBvcnQgaW50ZXJmYWNlIFNjcmVlblJlY29yZGVySWNvbnMge1xyXG4gICAgcmVjb3JkPzogc3RyaW5nOyAvLyBEZWZhdWx0OiAn4pePJyAoZmlsbGVkIGNpcmNsZSkgb3IgYSBtYXRlcmlhbCBpY29uIGNsYXNzXHJcbiAgICByZWNvcmRXaXRoQXVkaW8/OiBzdHJpbmc7IC8vIEFsdGVybmF0aXZlIGlmIHNwZWNpZmljIGljb24gZm9yIFwicmVjb3JkIHdpdGggYXVkaW9cIiBpcyBuZWVkZWRcclxuICAgIHJlY29yZFdpdGhvdXRBdWRpbz86IHN0cmluZzsgLy8gQWx0ZXJuYXRpdmUgaWYgc3BlY2lmaWMgaWNvbiBmb3IgXCJyZWNvcmQgd2l0aG91dCBhdWRpb1wiIGlzIG5lZWRlZFxyXG4gICAgc3RvcD86IHN0cmluZzsgLy8gRGVmYXVsdDogJ+KWoCcgKGZpbGxlZCBzcXVhcmUpIG9yIGEgbWF0ZXJpYWwgaWNvbiBjbGFzc1xyXG4gICAgcGF1c2U/OiBzdHJpbmc7IC8vIERlZmF1bHQ6ICfinZrinZonIChwYXVzZSBzeW1ib2wpIG9yIGEgbWF0ZXJpYWwgaWNvbiBjbGFzc1xyXG4gICAgcmVzdW1lPzogc3RyaW5nOyAvLyBEZWZhdWx0OiAn4pa6JyAocGxheSBzeW1ib2wpIG9yIGEgbWF0ZXJpYWwgaWNvbiBjbGFzc1xyXG4gICAgcGxheT86IHN0cmluZzsgLy8gRGVmYXVsdDogJ+KWuicgKHBsYXkgc3ltYm9sKSBvciBhIG1hdGVyaWFsIGljb24gY2xhc3NcclxuICAgIGRvd25sb2FkPzogc3RyaW5nOyAvLyBEZWZhdWx0OiAn8J+SvicgKGZsb3BweSBkaXNrKSBvciBhIG1hdGVyaWFsIGljb24gY2xhc3NcclxuICAgIGF1ZGlvT24/OiBzdHJpbmc7IC8vIERlZmF1bHQ6ICfwn5SKJyAoc3BlYWtlciBoaWdoIHZvbHVtZSkgb3IgYSBtYXRlcmlhbCBpY29uIGNsYXNzXHJcbiAgICBhdWRpb09mZj86IHN0cmluZzsgLy8gRGVmYXVsdDogJ/CflIcnIChtdXRlZCBzcGVha2VyKSBvciBhIG1hdGVyaWFsIGljb24gY2xhc3NcclxuICB9XHJcbiAgXHJcbiAgZXhwb3J0IGludGVyZmFjZSBTY3JlZW5SZWNvcmRlck9wdGlvbnMge1xyXG4gICAgcG9zaXRpb24/OiBTY3JlZW5SZWNvcmRlclBvc2l0aW9uO1xyXG4gICAgZGlzcGxheUZvcm1hdD86IERpc3BsYXlGb3JtYXQ7XHJcbiAgICBzaG93QXVkaW9Ub2dnbGU/OiBib29sZWFuO1xyXG4gICAgZGVmYXVsdEF1ZGlvU3RhdGU/OiBib29sZWFuOyAvLyB0cnVlIGZvciBhdWRpbyBvbiwgZmFsc2UgZm9yIGF1ZGlvIG9mZlxyXG4gICAgZG93bmxvYWRGaWxlTmFtZT86IHN0cmluZztcclxuICAgIGljb25zPzogU2NyZWVuUmVjb3JkZXJJY29uczsgLy8gRm9yIGN1c3RvbSBpY29ucyAoZS5nLiwgQ1NTIGNsYXNzZXMgZm9yIGljb24gZm9udHMpXHJcbiAgICBzaG93VGltZXI/OiBib29sZWFuO1xyXG4gICAgc2hvd1BhdXNlUmVzdW1lPzogYm9vbGVhbjtcclxuICAgIHNob3dQbGF5YmFja0NvbnRyb2xzPzogYm9vbGVhbjsgLy8gVG8gc2hvdy9oaWRlIHRoZSB2aWRlbyBwbGF5ZXIgcHJldmlld1xyXG4gICAgc2hvd0Rvd25sb2FkQnV0dG9uPzogYm9vbGVhbjtcclxuICAgIHVzZVVUQ0ZvclRpbWVyPzogYm9vbGVhbjtcclxuICAgIC8qICBGb3Igc3BlY2lmaWMgYXJlYTogZ2V0RGlzcGxheU1lZGlhIGFsbG93cyB1c2VyIHRvIGNob29zZSB3aW5kb3cvdGFiL3NjcmVlbi5cclxuICAgICAgSWYgYSBtb3JlIHNwZWNpZmljIGNyb3AgaXMgbmVlZGVkLCBpdCdzIG91dHNpZGUgc3RhbmRhcmQgV2ViIEFQSSBzY29wZS5cclxuICAgICAgVGhpcyBvcHRpb24gaW1wbGllcyB3ZSBlbnN1cmUgdGhlIGJyb3dzZXIncyBwaWNrZXIgaXMgdXNlZC5cclxuICAgICovXHJcbiAgICBhbGxvd1NwZWNpZmljQXJlYVNlbGVjdGlvbj86IGJvb2xlYW47XHJcbiAgICAvLyBBY2Nlc3NpYmlsaXR5IHJlbGF0ZWQgdGV4dHNcclxuICAgIGFjY2Vzc2liaWxpdHlMYWJlbHM/OiB7XHJcbiAgICAgIHJlY29yZEJ1dHRvbj86IHN0cmluZztcclxuICAgICAgc3RvcEJ1dHRvbj86IHN0cmluZztcclxuICAgICAgcGF1c2VCdXR0b24/OiBzdHJpbmc7XHJcbiAgICAgIHJlc3VtZUJ1dHRvbj86IHN0cmluZztcclxuICAgICAgYXVkaW9Ub2dnbGVCdXR0b24/OiBzdHJpbmc7XHJcbiAgICAgIGRvd25sb2FkQnV0dG9uPzogc3RyaW5nO1xyXG4gICAgICBwbGF5YmFja1ZpZGVvPzogc3RyaW5nO1xyXG4gICAgfTtcclxuICB9XHJcbiAgIl19
@@ -17,4 +17,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
17
17
  providers: [ScreenRecorderService],
18
18
  }]
19
19
  }] });
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVjbGliLXNjcmVlbi1yZWNvcmRlci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3J1Y2xpYi9zY3JlZW4tcmVjb3JkZXIvc3JjL2xpYi9ydWNsaWItc2NyZWVuLXJlY29yZGVyLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUN0RixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQzs7QUFRM0UsTUFBTSxPQUFPLDBCQUEwQjs7d0hBQTFCLDBCQUEwQjt5SEFBMUIsMEJBQTBCLGlCQUp0Qix1QkFBdUIsYUFENUIsWUFBWSxhQUVaLHVCQUF1Qjt5SEFHdEIsMEJBQTBCLGFBRjFCLENBQUMscUJBQXFCLENBQUMsWUFIeEIsWUFBWTs0RkFLWCwwQkFBMEI7a0JBTnRDLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO29CQUN2QixZQUFZLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQztvQkFDdkMsT0FBTyxFQUFFLENBQUMsdUJBQXVCLENBQUM7b0JBQ2xDLFNBQVMsRUFBRSxDQUFDLHFCQUFxQixDQUFDO2lCQUNuQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IFNjcmVlblJlY29yZGVyQ29tcG9uZW50IH0gZnJvbSAnLi9zY3JlZW4tcmVjb3JkZXIvc2NyZWVuLXJlY29yZGVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFNjcmVlblJlY29yZGVyU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvc2NyZWVuLXJlY29yZGVyLnNlcnZpY2UnO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcclxuICBkZWNsYXJhdGlvbnM6IFtTY3JlZW5SZWNvcmRlckNvbXBvbmVudF0sXHJcbiAgZXhwb3J0czogW1NjcmVlblJlY29yZGVyQ29tcG9uZW50XSxcclxuICBwcm92aWRlcnM6IFtTY3JlZW5SZWNvcmRlclNlcnZpY2VdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUnVjbGliU2NyZWVuUmVjb3JkZXJNb2R1bGUge31cclxuIl19
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVjbGliLXNjcmVlbi1yZWNvcmRlci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3J1Y2xpYi1zY3JlZW4tcmVjb3JkZXIubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDOztBQVEzRSxNQUFNLE9BQU8sMEJBQTBCOzt3SEFBMUIsMEJBQTBCO3lIQUExQiwwQkFBMEIsaUJBSnRCLHVCQUF1QixhQUQ1QixZQUFZLGFBRVosdUJBQXVCO3lIQUd0QiwwQkFBMEIsYUFGMUIsQ0FBQyxxQkFBcUIsQ0FBQyxZQUh4QixZQUFZOzRGQUtYLDBCQUEwQjtrQkFOdEMsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUM7b0JBQ3ZCLFlBQVksRUFBRSxDQUFDLHVCQUF1QixDQUFDO29CQUN2QyxPQUFPLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQztvQkFDbEMsU0FBUyxFQUFFLENBQUMscUJBQXFCLENBQUM7aUJBQ25DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgU2NyZWVuUmVjb3JkZXJDb21wb25lbnQgfSBmcm9tICcuL3NjcmVlbi1yZWNvcmRlci9zY3JlZW4tcmVjb3JkZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU2NyZWVuUmVjb3JkZXJTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9zY3JlZW4tcmVjb3JkZXIuc2VydmljZSc7XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxyXG4gIGRlY2xhcmF0aW9uczogW1NjcmVlblJlY29yZGVyQ29tcG9uZW50XSxcclxuICBleHBvcnRzOiBbU2NyZWVuUmVjb3JkZXJDb21wb25lbnRdLFxyXG4gIHByb3ZpZGVyczogW1NjcmVlblJlY29yZGVyU2VydmljZV0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSdWNsaWJTY3JlZW5SZWNvcmRlck1vZHVsZSB7fVxyXG4iXX0=
@@ -41,4 +41,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
41
41
  providedIn: 'root',
42
42
  }]
43
43
  }], ctorParameters: function () { return []; } });
44
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NyZWVuLXJlY29yZGVyLWNvbnN0YW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9ydWNsaWIvc2NyZWVuLXJlY29yZGVyL3NyYy9saWIvc2NyZWVuLXJlY29yZGVyL3NjcmVlbi1yZWNvcmRlci1jb25zdGFudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQVkzQyxNQUFNLE9BQU8sdUJBQXVCO0lBQ2hDO1FBR08sa0JBQWEsR0FBd0I7WUFDMUMsTUFBTSxFQUFFLHFCQUFxQjtZQUM3QixJQUFJLEVBQUUsTUFBTTtZQUNaLEtBQUssRUFBRSxPQUFPO1lBQ2QsTUFBTSxFQUFFLFlBQVk7WUFDcEIsSUFBSSxFQUFFLG9CQUFvQjtZQUMxQixRQUFRLEVBQUUsVUFBVTtZQUNwQixPQUFPLEVBQUUsV0FBVztZQUNwQixRQUFRLEVBQUUsWUFBWTtTQUN2QixDQUFDO1FBRUssbUJBQWMsR0FBRztZQUN0QixZQUFZLEVBQUUsaUJBQWlCO1lBQy9CLFVBQVUsRUFBRSxnQkFBZ0I7WUFDNUIsV0FBVyxFQUFFLGlCQUFpQjtZQUM5QixZQUFZLEVBQUUsa0JBQWtCO1lBQ2hDLGlCQUFpQixFQUFFLGNBQWM7WUFDakMsY0FBYyxFQUFFLG9CQUFvQjtZQUNwQyxhQUFhLEVBQUUsMkJBQTJCO1NBQzNDLENBQUM7UUFFSyxhQUFRLEdBQUcsVUFBVSxDQUFDO1FBRXRCLGFBQVEsR0FBRyxVQUFVLENBQUM7UUFDdEIsY0FBUyxHQUFHLFdBQVcsQ0FBQztRQUV4QixnQ0FBMkIsR0FBRyxtQ0FBbUMsQ0FBQztRQUNsRSw2Q0FBd0MsR0FBRyxvQ0FBb0MsQ0FBQztRQUNoRixvQkFBZSxHQUFHLGlEQUFpRCxDQUFDO1FBQ3BFLDBCQUFxQixHQUFHLHFDQUFxQyxDQUFDO1FBQzlELGdCQUFXLEdBQUcscUJBQXFCLENBQUM7UUFDcEMsc0JBQWlCLEdBQUcsc0VBQXNFLENBQUM7UUFDM0YsZUFBVSxHQUFHLG9EQUFvRCxDQUFDO0lBakN6RSxDQUFDOztxSEFIUSx1QkFBdUI7eUhBQXZCLHVCQUF1QixjQUZwQixNQUFNOzRGQUVULHVCQUF1QjtrQkFIbkMsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtcclxuICBTY3JlZW5SZWNvcmRlck9wdGlvbnMsXHJcbiAgU2NyZWVuUmVjb3JkZXJQb3NpdGlvbixcclxuICBEaXNwbGF5Rm9ybWF0LFxyXG4gIFJlY29yZGluZ1N0YXRlLFxyXG4gIFNjcmVlblJlY29yZGVySWNvbnMsXHJcbn0gZnJvbSAnLi4vbW9kZWxzL3NjcmVlbi1yZWNvcmRlci5tb2RlbHMnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2NyZWVuUmVjb3JkZXJDb25zdGFudHN7XHJcbiAgICBjb25zdHJ1Y3Rvcigpe1xyXG5cclxuICAgIH1cclxuICAgIHB1YmxpYyBERUZBVUxUX0lDT05TOiBTY3JlZW5SZWNvcmRlckljb25zID0ge1xyXG4gICAgICByZWNvcmQ6ICdmaWJlcl9tYW51YWxfcmVjb3JkJywgLy8gTWF0ZXJpYWwgSWNvbiBuYW1lXHJcbiAgICAgIHN0b3A6ICdzdG9wJyxcclxuICAgICAgcGF1c2U6ICdwYXVzZScsXHJcbiAgICAgIHJlc3VtZTogJ3BsYXlfYXJyb3cnLFxyXG4gICAgICBwbGF5OiAncGxheV9jaXJjbGVfZmlsbGVkJyxcclxuICAgICAgZG93bmxvYWQ6ICdkb3dubG9hZCcsXHJcbiAgICAgIGF1ZGlvT246ICd2b2x1bWVfdXAnLFxyXG4gICAgICBhdWRpb09mZjogJ3ZvbHVtZV9vZmYnLFxyXG4gICAgfTtcclxuICAgIFxyXG4gICAgcHVibGljIERFRkFVTFRfTEFCRUxTID0ge1xyXG4gICAgICByZWNvcmRCdXR0b246ICdTdGFydCBSZWNvcmRpbmcnLFxyXG4gICAgICBzdG9wQnV0dG9uOiAnU3RvcCBSZWNvcmRpbmcnLFxyXG4gICAgICBwYXVzZUJ1dHRvbjogJ1BhdXNlIFJlY29yZGluZycsXHJcbiAgICAgIHJlc3VtZUJ1dHRvbjogJ1Jlc3VtZSBSZWNvcmRpbmcnLFxyXG4gICAgICBhdWRpb1RvZ2dsZUJ1dHRvbjogJ1RvZ2dsZSBBdWRpbycsXHJcbiAgICAgIGRvd25sb2FkQnV0dG9uOiAnRG93bmxvYWQgUmVjb3JkaW5nJyxcclxuICAgICAgcGxheWJhY2tWaWRlbzogJ1NjcmVlbiBSZWNvcmRpbmcgUGxheWJhY2snLFxyXG4gICAgfTtcclxuXHJcbiAgICBwdWJsaWMgSU5BQ1RJVkUgPSAnaW5hY3RpdmUnO1xyXG5cclxuICAgIHB1YmxpYyBBVURJT19PTiA9ICdBdWRpbyBPTic7XHJcbiAgICBwdWJsaWMgQVVESU9fT0ZGID0gJ0F1ZGlvIE9GRic7XHJcblxyXG4gICAgcHVibGljIFJFQ09SRElOR19JTl9QUk9HUkVTU19FUlJPUiA9ICdSZWNvcmRpbmcgaXMgYWxyZWFkeSBpbiBwcm9ncmVzcy4nO1xyXG4gICAgcHVibGljIEZBSUxFRF9UT19HRVRfRElTUExBWV9NRURJQV9TVFJFQU1fRVJST1IgPSAnRmFpbGVkIHRvIGdldCBkaXNwbGF5IG1lZGlhIHN0cmVhbSc7XHJcbiAgICBwdWJsaWMgTk9fU1VQUE9SVF9NSU1FID0gJ05vIHN1cHBvcnRlZCBNSU1FIHR5cGUgZm91bmQgZm9yIE1lZGlhUmVjb3JkZXIuJztcclxuICAgIHB1YmxpYyBOT19SRUNPUkRJTkdfRE9XTkxPQUQgPSAnTm8gcmVjb3JkaW5nIGF2YWlsYWJsZSB0byBkb3dubG9hZC4nO1xyXG4gICAgcHVibGljIE1FRElBX0VSUk9SID0gJ01lZGlhUmVjb3JkZXIgZXJyb3InO1xyXG4gICAgcHVibGljIFBFUk1JU1NJT05fREVOSUVEID0gXCJFcnJvciBzdGFydGluZyBzY3JlZW4gcmVjb3JkaW5nOiBOb3RBbGxvd2VkRXJyb3IgLSBQZXJtaXNzaW9uIGRlbmllZFwiO1xyXG4gICAgcHVibGljIE5PX1NVUFBPUlQgPSAnU2NyZWVuIHJlY29yZGluZyBpcyBub3Qgc3VwcG9ydGVkIGluIHRoaXMgYnJvd3Nlci4nO1xyXG5cclxufSJdfQ==
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NyZWVuLXJlY29yZGVyLWNvbnN0YW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9zY3JlZW4tcmVjb3JkZXIvc2NyZWVuLXJlY29yZGVyLWNvbnN0YW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBWTNDLE1BQU0sT0FBTyx1QkFBdUI7SUFDaEM7UUFHTyxrQkFBYSxHQUF3QjtZQUMxQyxNQUFNLEVBQUUscUJBQXFCO1lBQzdCLElBQUksRUFBRSxNQUFNO1lBQ1osS0FBSyxFQUFFLE9BQU87WUFDZCxNQUFNLEVBQUUsWUFBWTtZQUNwQixJQUFJLEVBQUUsb0JBQW9CO1lBQzFCLFFBQVEsRUFBRSxVQUFVO1lBQ3BCLE9BQU8sRUFBRSxXQUFXO1lBQ3BCLFFBQVEsRUFBRSxZQUFZO1NBQ3ZCLENBQUM7UUFFSyxtQkFBYyxHQUFHO1lBQ3RCLFlBQVksRUFBRSxpQkFBaUI7WUFDL0IsVUFBVSxFQUFFLGdCQUFnQjtZQUM1QixXQUFXLEVBQUUsaUJBQWlCO1lBQzlCLFlBQVksRUFBRSxrQkFBa0I7WUFDaEMsaUJBQWlCLEVBQUUsY0FBYztZQUNqQyxjQUFjLEVBQUUsb0JBQW9CO1lBQ3BDLGFBQWEsRUFBRSwyQkFBMkI7U0FDM0MsQ0FBQztRQUVLLGFBQVEsR0FBRyxVQUFVLENBQUM7UUFFdEIsYUFBUSxHQUFHLFVBQVUsQ0FBQztRQUN0QixjQUFTLEdBQUcsV0FBVyxDQUFDO1FBRXhCLGdDQUEyQixHQUFHLG1DQUFtQyxDQUFDO1FBQ2xFLDZDQUF3QyxHQUFHLG9DQUFvQyxDQUFDO1FBQ2hGLG9CQUFlLEdBQUcsaURBQWlELENBQUM7UUFDcEUsMEJBQXFCLEdBQUcscUNBQXFDLENBQUM7UUFDOUQsZ0JBQVcsR0FBRyxxQkFBcUIsQ0FBQztRQUNwQyxzQkFBaUIsR0FBRyxzRUFBc0UsQ0FBQztRQUMzRixlQUFVLEdBQUcsb0RBQW9ELENBQUM7SUFqQ3pFLENBQUM7O3FIQUhRLHVCQUF1Qjt5SEFBdkIsdUJBQXVCLGNBRnBCLE1BQU07NEZBRVQsdUJBQXVCO2tCQUhuQyxVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge1xyXG4gIFNjcmVlblJlY29yZGVyT3B0aW9ucyxcclxuICBTY3JlZW5SZWNvcmRlclBvc2l0aW9uLFxyXG4gIERpc3BsYXlGb3JtYXQsXHJcbiAgUmVjb3JkaW5nU3RhdGUsXHJcbiAgU2NyZWVuUmVjb3JkZXJJY29ucyxcclxufSBmcm9tICcuLi9tb2RlbHMvc2NyZWVuLXJlY29yZGVyLm1vZGVscyc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTY3JlZW5SZWNvcmRlckNvbnN0YW50c3tcclxuICAgIGNvbnN0cnVjdG9yKCl7XHJcblxyXG4gICAgfVxyXG4gICAgcHVibGljIERFRkFVTFRfSUNPTlM6IFNjcmVlblJlY29yZGVySWNvbnMgPSB7XHJcbiAgICAgIHJlY29yZDogJ2ZpYmVyX21hbnVhbF9yZWNvcmQnLCAvLyBNYXRlcmlhbCBJY29uIG5hbWVcclxuICAgICAgc3RvcDogJ3N0b3AnLFxyXG4gICAgICBwYXVzZTogJ3BhdXNlJyxcclxuICAgICAgcmVzdW1lOiAncGxheV9hcnJvdycsXHJcbiAgICAgIHBsYXk6ICdwbGF5X2NpcmNsZV9maWxsZWQnLFxyXG4gICAgICBkb3dubG9hZDogJ2Rvd25sb2FkJyxcclxuICAgICAgYXVkaW9PbjogJ3ZvbHVtZV91cCcsXHJcbiAgICAgIGF1ZGlvT2ZmOiAndm9sdW1lX29mZicsXHJcbiAgICB9O1xyXG4gICAgXHJcbiAgICBwdWJsaWMgREVGQVVMVF9MQUJFTFMgPSB7XHJcbiAgICAgIHJlY29yZEJ1dHRvbjogJ1N0YXJ0IFJlY29yZGluZycsXHJcbiAgICAgIHN0b3BCdXR0b246ICdTdG9wIFJlY29yZGluZycsXHJcbiAgICAgIHBhdXNlQnV0dG9uOiAnUGF1c2UgUmVjb3JkaW5nJyxcclxuICAgICAgcmVzdW1lQnV0dG9uOiAnUmVzdW1lIFJlY29yZGluZycsXHJcbiAgICAgIGF1ZGlvVG9nZ2xlQnV0dG9uOiAnVG9nZ2xlIEF1ZGlvJyxcclxuICAgICAgZG93bmxvYWRCdXR0b246ICdEb3dubG9hZCBSZWNvcmRpbmcnLFxyXG4gICAgICBwbGF5YmFja1ZpZGVvOiAnU2NyZWVuIFJlY29yZGluZyBQbGF5YmFjaycsXHJcbiAgICB9O1xyXG5cclxuICAgIHB1YmxpYyBJTkFDVElWRSA9ICdpbmFjdGl2ZSc7XHJcblxyXG4gICAgcHVibGljIEFVRElPX09OID0gJ0F1ZGlvIE9OJztcclxuICAgIHB1YmxpYyBBVURJT19PRkYgPSAnQXVkaW8gT0ZGJztcclxuXHJcbiAgICBwdWJsaWMgUkVDT1JESU5HX0lOX1BST0dSRVNTX0VSUk9SID0gJ1JlY29yZGluZyBpcyBhbHJlYWR5IGluIHByb2dyZXNzLic7XHJcbiAgICBwdWJsaWMgRkFJTEVEX1RPX0dFVF9ESVNQTEFZX01FRElBX1NUUkVBTV9FUlJPUiA9ICdGYWlsZWQgdG8gZ2V0IGRpc3BsYXkgbWVkaWEgc3RyZWFtJztcclxuICAgIHB1YmxpYyBOT19TVVBQT1JUX01JTUUgPSAnTm8gc3VwcG9ydGVkIE1JTUUgdHlwZSBmb3VuZCBmb3IgTWVkaWFSZWNvcmRlci4nO1xyXG4gICAgcHVibGljIE5PX1JFQ09SRElOR19ET1dOTE9BRCA9ICdObyByZWNvcmRpbmcgYXZhaWxhYmxlIHRvIGRvd25sb2FkLic7XHJcbiAgICBwdWJsaWMgTUVESUFfRVJST1IgPSAnTWVkaWFSZWNvcmRlciBlcnJvcic7XHJcbiAgICBwdWJsaWMgUEVSTUlTU0lPTl9ERU5JRUQgPSBcIkVycm9yIHN0YXJ0aW5nIHNjcmVlbiByZWNvcmRpbmc6IE5vdEFsbG93ZWRFcnJvciAtIFBlcm1pc3Npb24gZGVuaWVkXCI7XHJcbiAgICBwdWJsaWMgTk9fU1VQUE9SVCA9ICdTY3JlZW4gcmVjb3JkaW5nIGlzIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyBicm93c2VyLic7XHJcblxyXG59Il19
@@ -227,10 +227,10 @@ export class ScreenRecorderComponent {
227
227
  }
228
228
  }
229
229
  ScreenRecorderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ScreenRecorderComponent, deps: [{ token: i1.ScreenRecorderService }, { token: i2.DomSanitizer }, { token: i0.ChangeDetectorRef }, { token: i3.ScreenRecorderConstants }], target: i0.ɵɵFactoryTarget.Component });
230
- ScreenRecorderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: ScreenRecorderComponent, selector: "uxp-screen-recorder", inputs: { customTheme: "customTheme", rucInputData: "rucInputData" }, viewQueries: [{ propertyName: "videoPlayer", first: true, predicate: ["videoPlayer"], descendants: true }], ngImport: i0, template: "<div class=\"screen-recorder-controls\" [ngClass]=\"customTheme + ' position-' + (rucInputData.position || ScreenRecorderPosition.Bottom)\"\r\n *ngIf=\"isBrowserSupported\">\r\n\r\n <!-- Error Message -->\r\n <div *ngIf=\"errorMessage\" class=\"recorder-error\">\r\n {{ errorMessage }}\r\n </div>\r\n\r\n <!-- Record/Stop Button -->\r\n <button\r\n *ngIf=\"recordingState === RecordingState.Idle || recordingState === RecordingState.Stopped\" (click)=\"toggleRecord()\"\r\n [attr.aria-label]=\"getLabel('recordButton')\" [attr.aria-pressed]=\"false\" class=\"recorder-button record-button\">\r\n <ng-container *ngIf=\"rucInputData.displayFormat === DisplayFormat.Icon\">\r\n <span class=\"material-icons\">{{ getRecordingIcon() || getIcon('record') }}</span>\r\n </ng-container>\r\n <ng-container *ngIf=\"rucInputData.displayFormat === DisplayFormat.Text\">{{ getLabel('recordButton')\r\n }}</ng-container>\r\n </button>\r\n\r\n <button\r\n *ngIf=\"recordingState === RecordingState.Recording || recordingState === RecordingState.Paused\"\r\n (click)=\"toggleRecord()\" [attr.aria-label]=\"getLabel('stopButton')\" [attr.aria-pressed]=\"true\"\r\n class=\"recorder-button stop-button\">\r\n <ng-container *ngIf=\"rucInputData.displayFormat === DisplayFormat.Icon\">\r\n <span class=\"material-icons\">{{ getIcon('stop') }}</span>\r\n </ng-container>\r\n <ng-container *ngIf=\"rucInputData.displayFormat === DisplayFormat.Text\">{{ getLabel('stopButton') }}</ng-container>\r\n </button>\r\n\r\n <!-- Pause/Resume Button -->\r\n <button *ngIf=\"rucInputData.showPauseResume && recordingState === RecordingState.Recording\"\r\n (click)=\"togglePauseResume()\" [attr.aria-label]=\"getLabel('pauseButton')\" [attr.aria-pressed]=\"false\"\r\n class=\"recorder-button pause-button\">\r\n <ng-container *ngIf=\"rucInputData.displayFormat === DisplayFormat.Icon\">\r\n <span class=\"material-icons\">{{ getIcon('pause') }}</span>\r\n </ng-container>\r\n <ng-container *ngIf=\"rucInputData.displayFormat === DisplayFormat.Text\">{{ getLabel('pauseButton') }}</ng-container>\r\n </button>\r\n <button *ngIf=\"rucInputData.showPauseResume && recordingState === RecordingState.Paused\"\r\n (click)=\"togglePauseResume()\" [attr.aria-label]=\"getLabel('resumeButton')\" [attr.aria-pressed]=\"true\"\r\n class=\"recorder-button resume-button\">\r\n <ng-container *ngIf=\"rucInputData.displayFormat === DisplayFormat.Icon\">\r\n <span class=\"material-icons\">{{ getIcon('resume') }}</span>\r\n </ng-container>\r\n <ng-container *ngIf=\"rucInputData.displayFormat === DisplayFormat.Text\">{{ getLabel('resumeButton')\r\n }}</ng-container>\r\n </button>\r\n\r\n <!-- Audio Toggle Button -->\r\n <button\r\n *ngIf=\"rucInputData.showAudioToggle && (recordingState === RecordingState.Idle || recordingState === RecordingState.Stopped)\"\r\n (click)=\"toggleAudio()\" [attr.aria-label]=\"getLabel('audioToggleButton')\" [attr.aria-pressed]=\"isAudioEnabled\"\r\n class=\"recorder-button audio-toggle-button\">\r\n <ng-container *ngIf=\"rucInputData.displayFormat === DisplayFormat.Icon\">\r\n <span class=\"material-icons\">{{ isAudioEnabled ? getIcon('audioOn') : getIcon('audioOff') }}</span>\r\n </ng-container>\r\n <ng-container *ngIf=\"rucInputData.displayFormat === DisplayFormat.Text\">\r\n {{ isAudioEnabled ? screenRecordingConstant.AUDIO_ON : screenRecordingConstant.AUDIO_OFF }}\r\n </ng-container>\r\n </button>\r\n\r\n <!-- Timer -->\r\n <div\r\n *ngIf=\"rucInputData.showTimer && (recordingState === RecordingState.Recording || recordingState === RecordingState.Paused)\"\r\n class=\"recorder-timer\" aria-live=\"polite\" aria-atomic=\"true\">\r\n {{ formattedTime }}\r\n </div>\r\n\r\n <!-- Download Button -->\r\n <button\r\n *ngIf=\"rucInputData.showDownloadButton && recordingState === RecordingState.Stopped && safeRecordedUrl\"\r\n (click)=\"onDownload()\" [attr.aria-label]=\"getLabel('downloadButton')\" class=\"recorder-button download-button\">\r\n <ng-container *ngIf=\"rucInputData.displayFormat === DisplayFormat.Icon\">\r\n <span class=\"material-icons\">{{ getIcon('download') }}</span>\r\n </ng-container>\r\n <ng-container *ngIf=\"rucInputData.displayFormat === DisplayFormat.Text\">{{ getLabel('downloadButton')\r\n }}</ng-container>\r\n </button>\r\n\r\n <!-- Playback Area -->\r\n <div *ngIf=\"rucInputData.showPlaybackControls && recordingState === RecordingState.Stopped && safeRecordedUrl\"\r\n class=\"playback-area\">\r\n <video #videoPlayer [src]=\"safeRecordedUrl\" controls [attr.aria-label]=\"getLabel('playbackVideo')\"></video>\r\n <div class=\"video-timer-overlay\">\r\n <span>Recorded on: {{ recordingTimestamp }}</span>\r\n </div>\r\n </div>\r\n\r\n <!-- Reset Button (optional, good for testing/clearing state) -->\r\n <button *ngIf=\"recordingState === RecordingState.Stopped && safeRecordedUrl\" (click)=\"reset()\"\r\n aria-label=\"New Recording\" class=\"recorder-button reset-button\">\r\n <ng-container *ngIf=\"rucInputData.displayFormat === DisplayFormat.Icon\">\r\n <span class=\"material-icons\">refresh</span>\r\n </ng-container>\r\n <ng-container *ngIf=\"rucInputData.displayFormat === DisplayFormat.Text\">New</ng-container>\r\n </button>\r\n\r\n</div>\r\n\r\n<div *ngIf=\"!isBrowserSupported\" class=\"recorder-notsupported\" [ngClass]=\"customTheme\">\r\n {{screenRecordingConstant.NO_SUPPORT}}\r\n</div>", styles: [":host{display:block;font-family:sans-serif}.screen-recorder-controls{display:flex;gap:8px;align-items:center;padding:8px;border-radius:4px;position:relative;z-index:1000}.screen-recorder-controls.position-top-left{margin-top:10px;margin-left:10px;flex-direction:row}.screen-recorder-controls.position-top-right{margin-top:10px;margin-right:10px;flex-direction:row}.screen-recorder-controls.position-bottom-left{margin-bottom:10px;margin-left:10px;flex-direction:row}.screen-recorder-controls.position-bottom-right{margin-bottom:10px;margin-right:10px;flex-direction:row}.screen-recorder-controls.position-left,.screen-recorder-controls.position-right{float:right}.recorder-button{padding:8px 12px;border:1px solid #ccc;border-radius:4px;background-color:#fff;cursor:pointer;display:inline-flex;align-items:center;gap:4px}.recorder-button:hover{background-color:#e9e9e9}.recorder-button:active{background-color:#d0d0d0}.recorder-button.record-button{color:red}.material-icons{font-family:Material Icons;font-weight:400;font-style:normal;font-size:20px;display:inline-block;line-height:1;text-transform:none;letter-spacing:normal;word-wrap:normal;white-space:nowrap;direction:ltr;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale;font-feature-settings:\"liga\"}.recorder-timer{padding:0 8px;font-feature-settings:\"tnum\";font-variant-numeric:tabular-nums}.playback-area{width:100%;max-width:100%;margin-top:1rem;position:relative}.playback-area video{width:100%;height:auto;max-width:100%}.playback-area .video-timer-overlay{position:absolute;top:10px;right:10px;background:rgba(0,0,0,.7);color:#fff;padding:5px 10px;border-radius:4px;font-size:14px;z-index:10}.recorder-error{color:red;padding:8px;border:1px solid red;background-color:#ffe0e0;border-radius:4px;margin-bottom:8px}.recorder-notsupported{padding:10px;background-color:#fff3cd;border:1px solid #ffeeba;color:#856404;border-radius:4px}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
230
+ ScreenRecorderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: ScreenRecorderComponent, selector: "uxp-ruclib-screen-recorder", inputs: { customTheme: "customTheme", rucInputData: "rucInputData" }, viewQueries: [{ propertyName: "videoPlayer", first: true, predicate: ["videoPlayer"], descendants: true }], ngImport: i0, template: "<div class=\"main\">\r\n <div class=\"screen-recorder-controls\"\r\n [ngClass]=\"customTheme + ' position-' + (rucInputData.position || ScreenRecorderPosition.Bottom)\"\r\n *ngIf=\"isBrowserSupported\">\r\n\r\n <!-- Error Message -->\r\n <div *ngIf=\"errorMessage\" class=\"recorder-error\">\r\n {{ errorMessage }}\r\n </div>\r\n\r\n <!-- Record/Stop Button -->\r\n <button *ngIf=\"recordingState === RecordingState.Idle || recordingState === RecordingState.Stopped\"\r\n (click)=\"toggleRecord()\" [attr.aria-label]=\"getLabel('recordButton')\" [attr.aria-pressed]=\"false\"\r\n class=\"recorder-button record-button\">\r\n <ng-container *ngIf=\"rucInputData.displayFormat === DisplayFormat.Icon\">\r\n <span class=\"material-icons\">{{ getRecordingIcon() || getIcon('record') }}</span>\r\n </ng-container>\r\n <ng-container *ngIf=\"rucInputData.displayFormat === DisplayFormat.Text\">{{ getLabel('recordButton')\r\n }}</ng-container>\r\n </button>\r\n\r\n <button *ngIf=\"recordingState === RecordingState.Recording || recordingState === RecordingState.Paused\"\r\n (click)=\"toggleRecord()\" [attr.aria-label]=\"getLabel('stopButton')\" [attr.aria-pressed]=\"true\"\r\n class=\"recorder-button stop-button\">\r\n <ng-container *ngIf=\"rucInputData.displayFormat === DisplayFormat.Icon\">\r\n <span class=\"material-icons\">{{ getIcon('stop') }}</span>\r\n </ng-container>\r\n <ng-container *ngIf=\"rucInputData.displayFormat === DisplayFormat.Text\">{{ getLabel('stopButton')\r\n }}</ng-container>\r\n </button>\r\n\r\n <!-- Pause/Resume Button -->\r\n <button *ngIf=\"rucInputData.showPauseResume && recordingState === RecordingState.Recording\"\r\n (click)=\"togglePauseResume()\" [attr.aria-label]=\"getLabel('pauseButton')\" [attr.aria-pressed]=\"false\"\r\n class=\"recorder-button pause-button\">\r\n <ng-container *ngIf=\"rucInputData.displayFormat === DisplayFormat.Icon\">\r\n <span class=\"material-icons\">{{ getIcon('pause') }}</span>\r\n </ng-container>\r\n <ng-container *ngIf=\"rucInputData.displayFormat === DisplayFormat.Text\">{{ getLabel('pauseButton')\r\n }}</ng-container>\r\n </button>\r\n <button *ngIf=\"rucInputData.showPauseResume && recordingState === RecordingState.Paused\"\r\n (click)=\"togglePauseResume()\" [attr.aria-label]=\"getLabel('resumeButton')\" [attr.aria-pressed]=\"true\"\r\n class=\"recorder-button resume-button\">\r\n <ng-container *ngIf=\"rucInputData.displayFormat === DisplayFormat.Icon\">\r\n <span class=\"material-icons\">{{ getIcon('resume') }}</span>\r\n </ng-container>\r\n <ng-container *ngIf=\"rucInputData.displayFormat === DisplayFormat.Text\">{{ getLabel('resumeButton')\r\n }}</ng-container>\r\n </button>\r\n\r\n <!-- Audio Toggle Button -->\r\n <button\r\n *ngIf=\"rucInputData.showAudioToggle && (recordingState === RecordingState.Idle || recordingState === RecordingState.Stopped)\"\r\n (click)=\"toggleAudio()\" [attr.aria-label]=\"getLabel('audioToggleButton')\" [attr.aria-pressed]=\"isAudioEnabled\"\r\n class=\"recorder-button audio-toggle-button\">\r\n <ng-container *ngIf=\"rucInputData.displayFormat === DisplayFormat.Icon\">\r\n <span class=\"material-icons\">{{ isAudioEnabled ? getIcon('audioOn') : getIcon('audioOff') }}</span>\r\n </ng-container>\r\n <ng-container *ngIf=\"rucInputData.displayFormat === DisplayFormat.Text\">\r\n {{ isAudioEnabled ? screenRecordingConstant.AUDIO_ON : screenRecordingConstant.AUDIO_OFF }}\r\n </ng-container>\r\n </button>\r\n\r\n <!-- Timer -->\r\n <div\r\n *ngIf=\"rucInputData.showTimer && (recordingState === RecordingState.Recording || recordingState === RecordingState.Paused)\"\r\n class=\"recorder-timer\" aria-live=\"polite\" aria-atomic=\"true\">\r\n {{ formattedTime }}\r\n </div>\r\n\r\n <!-- Download Button -->\r\n <button *ngIf=\"rucInputData.showDownloadButton && recordingState === RecordingState.Stopped && safeRecordedUrl\"\r\n (click)=\"onDownload()\" [attr.aria-label]=\"getLabel('downloadButton')\" class=\"recorder-button download-button\">\r\n <ng-container *ngIf=\"rucInputData.displayFormat === DisplayFormat.Icon\">\r\n <span class=\"material-icons\">{{ getIcon('download') }}</span>\r\n </ng-container>\r\n <ng-container *ngIf=\"rucInputData.displayFormat === DisplayFormat.Text\">{{ getLabel('downloadButton')\r\n }}</ng-container>\r\n </button>\r\n\r\n <!-- Playback Area -->\r\n <div *ngIf=\"rucInputData.showPlaybackControls && recordingState === RecordingState.Stopped && safeRecordedUrl\"\r\n class=\"playback-area\">\r\n <video #videoPlayer [src]=\"safeRecordedUrl\" controls [attr.aria-label]=\"getLabel('playbackVideo')\"></video>\r\n <div class=\"video-timer-overlay\">\r\n <span>Recorded on: {{ recordingTimestamp }}</span>\r\n </div>\r\n </div>\r\n\r\n <!-- Reset Button (optional, good for testing/clearing state) -->\r\n <button *ngIf=\"recordingState === RecordingState.Stopped && safeRecordedUrl\" (click)=\"reset()\"\r\n aria-label=\"New Recording\" class=\"recorder-button reset-button\">\r\n <ng-container *ngIf=\"rucInputData.displayFormat === DisplayFormat.Icon\">\r\n <span class=\"material-icons\">refresh</span>\r\n </ng-container>\r\n <ng-container *ngIf=\"rucInputData.displayFormat === DisplayFormat.Text\">New</ng-container>\r\n </button>\r\n\r\n </div>\r\n\r\n <div *ngIf=\"!isBrowserSupported\" class=\"recorder-notsupported\" [ngClass]=\"customTheme\">\r\n {{screenRecordingConstant.NO_SUPPORT}}\r\n </div>\r\n</div>", styles: [".mat-ripple{overflow:hidden;position:relative}.mat-ripple:not(:empty){transform:translateZ(0)}.mat-ripple.mat-ripple-unbounded{overflow:visible}.mat-ripple-element{position:absolute;border-radius:50%;pointer-events:none;transition:opacity,transform 0ms cubic-bezier(0,0,.2,1);transform:scale3d(0,0,0)}.cdk-high-contrast-active .mat-ripple-element{display:none}.cdk-visually-hidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap;outline:0;-webkit-appearance:none;-moz-appearance:none;left:0}[dir=rtl] .cdk-visually-hidden{left:auto;right:0}.cdk-overlay-container,.cdk-global-overlay-wrapper{pointer-events:none;top:0;left:0;height:100%;width:100%}.cdk-overlay-container{position:fixed;z-index:1000}.cdk-overlay-container:empty{display:none}.cdk-global-overlay-wrapper{display:flex;position:absolute;z-index:1000}.cdk-overlay-pane{position:absolute;pointer-events:auto;box-sizing:border-box;z-index:1000;display:flex;max-width:100%;max-height:100%}.cdk-overlay-backdrop{position:absolute;inset:0;z-index:1000;pointer-events:auto;-webkit-tap-highlight-color:transparent;transition:opacity .4s cubic-bezier(.25,.8,.25,1);opacity:0}.cdk-overlay-backdrop.cdk-overlay-backdrop-showing{opacity:1}.cdk-high-contrast-active .cdk-overlay-backdrop.cdk-overlay-backdrop-showing{opacity:.6}.cdk-overlay-dark-backdrop{background:rgba(0,0,0,.32)}.cdk-overlay-transparent-backdrop{transition:visibility 1ms linear,opacity 1ms linear;visibility:hidden;opacity:1}.cdk-overlay-transparent-backdrop.cdk-overlay-backdrop-showing{opacity:0;visibility:visible}.cdk-overlay-backdrop-noop-animation{transition:none}.cdk-overlay-connected-position-bounding-box{position:absolute;z-index:1000;display:flex;flex-direction:column;min-width:1px;min-height:1px}.cdk-global-scrollblock{position:fixed;width:100%;overflow-y:scroll}textarea.cdk-textarea-autosize{resize:none}textarea.cdk-textarea-autosize-measuring{padding:2px 0!important;box-sizing:content-box!important;height:auto!important;overflow:hidden!important}textarea.cdk-textarea-autosize-measuring-firefox{padding:2px 0!important;box-sizing:content-box!important;height:0!important}@keyframes cdk-text-field-autofill-start{}@keyframes cdk-text-field-autofill-end{}.cdk-text-field-autofill-monitored:-webkit-autofill{animation:cdk-text-field-autofill-start 0s 1ms}.cdk-text-field-autofill-monitored:not(:-webkit-autofill){animation:cdk-text-field-autofill-end 0s 1ms}.mat-focus-indicator{position:relative}.mat-focus-indicator:before{inset:0;position:absolute;box-sizing:border-box;pointer-events:none;display:var(--mat-focus-indicator-display, none);border:var(--mat-focus-indicator-border-width, 3px) var(--mat-focus-indicator-border-style, solid) var(--mat-focus-indicator-border-color, transparent);border-radius:var(--mat-focus-indicator-border-radius, 4px)}.mat-focus-indicator:focus:before{content:\"\"}.cdk-high-contrast-active{--mat-focus-indicator-display: block}.mat-mdc-focus-indicator{position:relative}.mat-mdc-focus-indicator:before{inset:0;position:absolute;box-sizing:border-box;pointer-events:none;display:var(--mat-mdc-focus-indicator-display, none);border:var(--mat-mdc-focus-indicator-border-width, 3px) var(--mat-mdc-focus-indicator-border-style, solid) var(--mat-mdc-focus-indicator-border-color, transparent);border-radius:var(--mat-mdc-focus-indicator-border-radius, 4px)}.mat-mdc-focus-indicator:focus:before{content:\"\"}.cdk-high-contrast-active{--mat-mdc-focus-indicator-display: block}.main{font-size:16px;font-weight:400;line-height:24px;font-family:Roboto,sans-serif;letter-spacing:.03125em}.ruc-custom-theme{font-size:14px;font-weight:400;line-height:20px;font-family:Roboto,sans-serif;letter-spacing:normal}.ruc-custom-theme .mat-mdc-option{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-body1-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-body1-font-size, 15px);line-height:var(--mdc-typography-body1-line-height, 24px);font-weight:var(--mdc-typography-body1-font-weight, 400);letter-spacing:var(--mdc-typography-body1-letter-spacing, normal)}.ruc-custom-theme .mat-mdc-card-title{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-headline6-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-headline6-font-size, 20px);line-height:var(--mdc-typography-headline6-line-height, 32px);font-weight:var(--mdc-typography-headline6-font-weight, 500);letter-spacing:var(--mdc-typography-headline6-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-headline6-text-decoration, inherit);text-decoration:var(--mdc-typography-headline6-text-decoration, inherit);text-transform:var(--mdc-typography-headline6-text-transform, none)}.ruc-custom-theme .mat-mdc-card-subtitle{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-subtitle2-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-subtitle2-font-size, 20px);line-height:var(--mdc-typography-subtitle2-line-height, 24px);font-weight:var(--mdc-typography-subtitle2-font-weight, 500);letter-spacing:var(--mdc-typography-subtitle2-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-subtitle2-text-decoration, inherit);text-decoration:var(--mdc-typography-subtitle2-text-decoration, inherit);text-transform:var(--mdc-typography-subtitle2-text-transform, none)}.ruc-custom-theme .mat-mdc-tooltip{--mdc-plain-tooltip-supporting-text-font: Roboto, sans-serif;--mdc-plain-tooltip-supporting-text-size: 12px;--mdc-plain-tooltip-supporting-text-weight: 400;--mdc-plain-tooltip-supporting-text-tracking: normal}.ruc-custom-theme .mat-mdc-form-field-infix{min-height:56px}.ruc-custom-theme .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-floating-label{top:28px}.ruc-custom-theme .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{--mat-mdc-form-field-label-transform: translateY( -34.75px) scale(var(--mat-mdc-form-field-floating-label-scale, .75));transform:var(--mat-mdc-form-field-label-transform)}.ruc-custom-theme .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mat-mdc-form-field-infix{padding-top:16px;padding-bottom:16px}.ruc-custom-theme .mat-mdc-text-field-wrapper:not(.mdc-text-field--outlined) .mat-mdc-form-field-infix{padding-top:24px;padding-bottom:8px}.ruc-custom-theme .mdc-text-field--no-label:not(.mdc-text-field--outlined):not(.mdc-text-field--textarea) .mat-mdc-form-field-infix{padding-top:16px;padding-bottom:16px}.ruc-custom-theme .mdc-text-field__input,.ruc-custom-theme .mdc-text-field__affix{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-subtitle1-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-subtitle1-font-size, 16px);font-weight:var(--mdc-typography-subtitle1-font-weight, 400);letter-spacing:var(--mdc-typography-subtitle1-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-subtitle1-text-decoration, inherit);text-decoration:var(--mdc-typography-subtitle1-text-decoration, inherit);text-transform:var(--mdc-typography-subtitle1-text-transform, none)}.ruc-custom-theme .mdc-text-field--textarea .mdc-text-field__input{line-height:1.5rem}.ruc-custom-theme .mdc-floating-label{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-subtitle1-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-subtitle1-font-size, 16px);font-weight:var(--mdc-typography-subtitle1-font-weight, 400);letter-spacing:var(--mdc-typography-subtitle1-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-subtitle1-text-decoration, inherit);text-decoration:var(--mdc-typography-subtitle1-text-decoration, inherit);text-transform:var(--mdc-typography-subtitle1-text-transform, none)}.ruc-custom-theme .mat-mdc-form-field-subscript-wrapper,.ruc-custom-theme .mat-mdc-form-field-bottom-align:before{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-caption-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-caption-font-size, 12px);line-height:var(--mdc-typography-caption-line-height, 20px);font-weight:var(--mdc-typography-caption-font-weight, 400);letter-spacing:var(--mdc-typography-caption-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-caption-text-decoration, inherit);text-decoration:var(--mdc-typography-caption-text-decoration, inherit);text-transform:var(--mdc-typography-caption-text-transform, none)}.ruc-custom-theme .mat-mdc-form-field,.ruc-custom-theme .mat-mdc-floating-label{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-body1-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-body1-font-size, 15px);line-height:var(--mdc-typography-body1-line-height, 24px);font-weight:var(--mdc-typography-body1-font-weight, 400);letter-spacing:var(--mdc-typography-body1-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-body1-text-decoration, inherit);text-decoration:var(--mdc-typography-body1-text-decoration, inherit);text-transform:var(--mdc-typography-body1-text-transform, none)}.ruc-custom-theme .mat-mdc-form-field .mdc-text-field--outlined .mdc-floating-label--float-above{font-size:calc(15px * var(--mat-mdc-form-field-floating-label-scale, .75))}.ruc-custom-theme .mat-mdc-form-field .mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{font-size:15px}.ruc-custom-theme .mat-mdc-select-panel{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-subtitle1-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-subtitle1-font-size, 16px);line-height:var(--mdc-typography-subtitle1-line-height, 28px);font-weight:var(--mdc-typography-subtitle1-font-weight, 400);letter-spacing:var(--mdc-typography-subtitle1-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-subtitle1-text-decoration, inherit);text-decoration:var(--mdc-typography-subtitle1-text-decoration, inherit);text-transform:var(--mdc-typography-subtitle1-text-transform, none);line-height:24px}.ruc-custom-theme .mat-mdc-select{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-body1-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-body1-font-size, 15px);line-height:var(--mdc-typography-body1-line-height, 24px);font-weight:var(--mdc-typography-body1-font-weight, 400);letter-spacing:var(--mdc-typography-body1-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-body1-text-decoration, inherit);text-decoration:var(--mdc-typography-body1-text-decoration, inherit);text-transform:var(--mdc-typography-body1-text-transform, none)}.ruc-custom-theme .mat-mdc-autocomplete-panel{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-subtitle1-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-subtitle1-font-size, 16px);line-height:var(--mdc-typography-subtitle1-line-height, 28px);font-weight:var(--mdc-typography-subtitle1-font-weight, 400);letter-spacing:var(--mdc-typography-subtitle1-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-subtitle1-text-decoration, inherit);text-decoration:var(--mdc-typography-subtitle1-text-decoration, inherit);text-transform:var(--mdc-typography-subtitle1-text-transform, none);line-height:24px}.ruc-custom-theme .mat-mdc-dialog-container{--mdc-dialog-subhead-font: Roboto, sans-serif;--mdc-dialog-subhead-line-height: 32px;--mdc-dialog-subhead-size: 20px;--mdc-dialog-subhead-weight: 500;--mdc-dialog-subhead-tracking: normal;--mdc-dialog-supporting-text-font: Roboto, sans-serif;--mdc-dialog-supporting-text-line-height: 24px;--mdc-dialog-supporting-text-size: 15px;--mdc-dialog-supporting-text-weight: 400;--mdc-dialog-supporting-text-tracking: normal}.ruc-custom-theme .mat-mdc-chip{height:32px}.ruc-custom-theme .mat-mdc-standard-chip{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-body2-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-body2-font-size, 14px);line-height:var(--mdc-typography-body2-line-height, 20px);font-weight:var(--mdc-typography-body2-font-weight, 400);letter-spacing:var(--mdc-typography-body2-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-body2-text-decoration, inherit);text-decoration:var(--mdc-typography-body2-text-decoration, inherit);text-transform:var(--mdc-typography-body2-text-transform, none)}.ruc-custom-theme .mat-mdc-slide-toggle{--mdc-switch-state-layer-size: 48px}.ruc-custom-theme .mat-mdc-radio-button .mdc-radio{padding:10px}.ruc-custom-theme .mat-mdc-radio-button .mdc-radio .mdc-radio__background:before{top:-10px;left:-10px;width:40px;height:40px}.ruc-custom-theme .mat-mdc-radio-button .mdc-radio .mdc-radio__native-control{top:0;right:0;left:0;width:40px;height:40px}.ruc-custom-theme .mat-mdc-slider{--mdc-slider-label-label-text-font: Roboto, sans-serif;--mdc-slider-label-label-text-size: 20px;--mdc-slider-label-label-text-line-height: 24px;--mdc-slider-label-label-text-tracking: normal;--mdc-slider-label-label-text-weight: 500}.ruc-custom-theme .mat-mdc-menu-content{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-subtitle1-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-subtitle1-font-size, 16px);line-height:var(--mdc-typography-subtitle1-line-height, 28px);font-weight:var(--mdc-typography-subtitle1-font-weight, 400);letter-spacing:var(--mdc-typography-subtitle1-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-subtitle1-text-decoration, inherit);text-decoration:var(--mdc-typography-subtitle1-text-decoration, inherit);text-transform:var(--mdc-typography-subtitle1-text-transform, none);line-height:24px}.ruc-custom-theme .mat-mdc-menu-content,.ruc-custom-theme .mat-mdc-menu-content .mat-mdc-menu-item .mdc-list-item__primary-text{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-body1-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-body1-font-size, 15px);line-height:var(--mdc-typography-body1-line-height, 24px);font-weight:var(--mdc-typography-body1-font-weight, 400);letter-spacing:var(--mdc-typography-body1-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-body1-text-decoration, inherit);text-decoration:var(--mdc-typography-body1-text-decoration, inherit);text-transform:var(--mdc-typography-body1-text-transform, none)}.ruc-custom-theme .mat-mdc-list-base{--mdc-list-list-item-one-line-container-height: 48px;--mdc-list-list-item-two-line-container-height: 64px;--mdc-list-list-item-three-line-container-height: 88px}.ruc-custom-theme .mat-mdc-list-item.mdc-list-item--with-leading-avatar.mdc-list-item--with-one-line,.ruc-custom-theme .mat-mdc-list-item.mdc-list-item--with-leading-checkbox.mdc-list-item--with-one-line,.ruc-custom-theme .mat-mdc-list-item.mdc-list-item--with-leading-icon.mdc-list-item--with-one-line{height:56px}.ruc-custom-theme .mat-mdc-list-item.mdc-list-item--with-leading-avatar.mdc-list-item--with-two-lines,.ruc-custom-theme .mat-mdc-list-item.mdc-list-item--with-leading-checkbox.mdc-list-item--with-two-lines,.ruc-custom-theme .mat-mdc-list-item.mdc-list-item--with-leading-icon.mdc-list-item--with-two-lines{height:72px}.ruc-custom-theme .mat-mdc-list-base{--mdc-list-list-item-label-text-font: Roboto, sans-serif;--mdc-list-list-item-label-text-line-height: 24px;--mdc-list-list-item-label-text-size: 15px;--mdc-list-list-item-label-text-tracking: normal;--mdc-list-list-item-label-text-weight: 400;--mdc-list-list-item-supporting-text-font: Roboto, sans-serif;--mdc-list-list-item-supporting-text-line-height: 20px;--mdc-list-list-item-supporting-text-size: 14px;--mdc-list-list-item-supporting-text-tracking: normal;--mdc-list-list-item-supporting-text-weight: 400;--mdc-list-list-item-trailing-supporting-text-font: Roboto, sans-serif;--mdc-list-list-item-trailing-supporting-text-line-height: 20px;--mdc-list-list-item-trailing-supporting-text-size: 12px;--mdc-list-list-item-trailing-supporting-text-tracking: normal;--mdc-list-list-item-trailing-supporting-text-weight: 400}.ruc-custom-theme .mdc-list-group__subheader{font-size:16px;font-weight:400;line-height:28px;font-family:Roboto,sans-serif;letter-spacing:normal}.ruc-custom-theme .mat-mdc-paginator .mat-mdc-form-field-infix{min-height:40px}.ruc-custom-theme .mat-mdc-paginator .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-floating-label{top:20px}.ruc-custom-theme .mat-mdc-paginator .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{--mat-mdc-form-field-label-transform: translateY( -26.75px) scale(var(--mat-mdc-form-field-floating-label-scale, .75));transform:var(--mat-mdc-form-field-label-transform)}.ruc-custom-theme .mat-mdc-paginator .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mat-mdc-form-field-infix{padding-top:8px;padding-bottom:8px}.ruc-custom-theme .mat-mdc-paginator .mat-mdc-text-field-wrapper:not(.mdc-text-field--outlined) .mat-mdc-form-field-infix{padding-top:8px;padding-bottom:8px}.ruc-custom-theme .mat-mdc-paginator .mdc-text-field--no-label:not(.mdc-text-field--outlined):not(.mdc-text-field--textarea) .mat-mdc-form-field-infix{padding-top:8px;padding-bottom:8px}.ruc-custom-theme .mat-mdc-paginator .mat-mdc-text-field-wrapper:not(.mdc-text-field--outlined) .mat-mdc-floating-label{display:none}.ruc-custom-theme .mat-mdc-paginator-container{min-height:56px}.ruc-custom-theme .mat-mdc-paginator{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-caption-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-caption-font-size, 12px);line-height:var(--mdc-typography-caption-line-height, 20px);font-weight:var(--mdc-typography-caption-font-weight, 400);letter-spacing:var(--mdc-typography-caption-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-caption-text-decoration, inherit);text-decoration:var(--mdc-typography-caption-text-decoration, inherit);text-transform:var(--mdc-typography-caption-text-transform, none)}.ruc-custom-theme .mat-mdc-paginator .mat-mdc-select-value{font-size:12px}.ruc-custom-theme .mat-mdc-tab-header .mdc-tab{height:48px}.ruc-custom-theme .mdc-tab{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-button-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-button-font-size, 20px);line-height:var(--mdc-typography-button-line-height, 60px);font-weight:var(--mdc-typography-button-font-weight, 500);letter-spacing:var(--mdc-typography-button-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-button-text-decoration, none);text-decoration:var(--mdc-typography-button-text-decoration, none);text-transform:var(--mdc-typography-button-text-transform, none)}.ruc-custom-theme .mat-mdc-checkbox .mdc-checkbox{padding:calc((var(--mdc-checkbox-ripple-size, 40px) - 18px) / 2);margin:calc((var(--mdc-checkbox-touch-target-size, 40px) - 40px) / 2)}.ruc-custom-theme .mat-mdc-checkbox .mdc-checkbox .mdc-checkbox__background{top:calc((var(--mdc-checkbox-ripple-size, 40px) - 18px) / 2);left:calc((var(--mdc-checkbox-ripple-size, 40px) - 18px) / 2)}.ruc-custom-theme .mat-mdc-checkbox .mdc-checkbox .mdc-checkbox__native-control{top:calc((40px - var(--mdc-checkbox-touch-target-size, 40px)) / 2);right:calc((40px - var(--mdc-checkbox-touch-target-size, 40px)) / 2);left:calc((40px - var(--mdc-checkbox-touch-target-size, 40px)) / 2);width:var(--mdc-checkbox-touch-target-size, 40px);height:var(--mdc-checkbox-touch-target-size, 40px)}@media all and (-ms-high-contrast: none){.ruc-custom-theme .mdc-checkbox .mdc-checkbox__focus-ring{display:none}}.ruc-custom-theme .mdc-form-field{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-body2-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-body2-font-size, 14px);line-height:var(--mdc-typography-body2-line-height, 20px);font-weight:var(--mdc-typography-body2-font-weight, 400);letter-spacing:var(--mdc-typography-body2-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-body2-text-decoration, inherit);text-decoration:var(--mdc-typography-body2-text-decoration, inherit);text-transform:var(--mdc-typography-body2-text-transform, none)}.ruc-custom-theme .mat-mdc-button.mat-mdc-button-base,.ruc-custom-theme .mat-mdc-raised-button.mat-mdc-button-base,.ruc-custom-theme .mat-mdc-unelevated-button.mat-mdc-button-base,.ruc-custom-theme .mat-mdc-outlined-button.mat-mdc-button-base{height:36px}.ruc-custom-theme .mdc-button{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-button-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-button-font-size, 20px);line-height:var(--mdc-typography-button-line-height, 60px);font-weight:var(--mdc-typography-button-font-weight, 500);letter-spacing:var(--mdc-typography-button-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-button-text-decoration, none);text-decoration:var(--mdc-typography-button-text-decoration, none);text-transform:var(--mdc-typography-button-text-transform, none)}.ruc-custom-theme .mat-mdc-icon-button.mat-mdc-button-base{width:48px;height:48px;padding:12px}.ruc-custom-theme .mat-mdc-icon-button.mat-mdc-button-base .mdc-icon-button__focus-ring{max-height:48px;max-width:48px}.ruc-custom-theme .mat-mdc-icon-button.mat-mdc-button-base.mdc-icon-button--reduced-size .mdc-icon-button__ripple{width:40px;height:40px;margin:4px}.ruc-custom-theme .mat-mdc-icon-button.mat-mdc-button-base.mdc-icon-button--reduced-size .mdc-icon-button__focus-ring{max-height:40px;max-width:40px}.ruc-custom-theme .mat-mdc-icon-button.mat-mdc-button-base .mdc-icon-button__touch{position:absolute;top:50%;height:48px;left:50%;width:48px;transform:translate(-50%,-50%)}.ruc-custom-theme .mdc-fab--extended{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-button-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-button-font-size, 20px);line-height:var(--mdc-typography-button-line-height, 60px);font-weight:var(--mdc-typography-button-font-weight, 500);letter-spacing:var(--mdc-typography-button-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-button-text-decoration, none);text-decoration:var(--mdc-typography-button-text-decoration, none);text-transform:var(--mdc-typography-button-text-transform, none)}.ruc-custom-theme .mat-mdc-snack-bar-container{--mdc-snackbar-supporting-text-font: Roboto, sans-serif;--mdc-snackbar-supporting-text-line-height: 20px;--mdc-snackbar-supporting-text-size: 14px;--mdc-snackbar-supporting-text-weight: 400}.ruc-custom-theme .mat-mdc-table .mdc-data-table__row{height:52px}.ruc-custom-theme .mat-mdc-table .mdc-data-table__pagination{min-height:52px}.ruc-custom-theme .mat-mdc-table .mdc-data-table__header-row{height:56px}.ruc-custom-theme .mdc-data-table__content,.ruc-custom-theme .mdc-data-table__cell{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-body2-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-body2-font-size, 14px);line-height:var(--mdc-typography-body2-line-height, 20px);font-weight:var(--mdc-typography-body2-font-weight, 400);letter-spacing:var(--mdc-typography-body2-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-body2-text-decoration, inherit);text-decoration:var(--mdc-typography-body2-text-decoration, inherit);text-transform:var(--mdc-typography-body2-text-transform, none)}.ruc-custom-theme .mdc-data-table__header-cell{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-subtitle2-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-subtitle2-font-size, 20px);line-height:var(--mdc-typography-subtitle2-line-height, 24px);font-weight:var(--mdc-typography-subtitle2-font-weight, 500);letter-spacing:var(--mdc-typography-subtitle2-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-subtitle2-text-decoration, inherit);text-decoration:var(--mdc-typography-subtitle2-text-decoration, inherit);text-transform:var(--mdc-typography-subtitle2-text-transform, none)}.ruc-custom-theme .mat-badge{position:relative}.ruc-custom-theme .mat-badge.mat-badge{overflow:visible}.ruc-custom-theme .mat-badge-hidden .mat-badge-content{display:none}.ruc-custom-theme .mat-badge-content{position:absolute;text-align:center;display:inline-block;border-radius:50%;transition:transform .2s ease-in-out;transform:scale(.6);overflow:hidden;white-space:nowrap;text-overflow:ellipsis;pointer-events:none}.ruc-custom-theme .ng-animate-disabled .mat-badge-content,.ruc-custom-theme .mat-badge-content._mat-animation-noopable{transition:none}.ruc-custom-theme .mat-badge-content.mat-badge-active{transform:none}.ruc-custom-theme .mat-badge-small .mat-badge-content{width:16px;height:16px;line-height:16px}.ruc-custom-theme .mat-badge-small.mat-badge-above .mat-badge-content{top:-8px}.ruc-custom-theme .mat-badge-small.mat-badge-below .mat-badge-content{bottom:-8px}.ruc-custom-theme .mat-badge-small.mat-badge-before .mat-badge-content{left:-16px}[dir=rtl] .ruc-custom-theme .mat-badge-small.mat-badge-before .mat-badge-content{left:auto;right:-16px}.ruc-custom-theme .mat-badge-small.mat-badge-after .mat-badge-content{right:-16px}[dir=rtl] .ruc-custom-theme .mat-badge-small.mat-badge-after .mat-badge-content{right:auto;left:-16px}.ruc-custom-theme .mat-badge-small.mat-badge-overlap.mat-badge-before .mat-badge-content{left:-8px}[dir=rtl] .ruc-custom-theme .mat-badge-small.mat-badge-overlap.mat-badge-before .mat-badge-content{left:auto;right:-8px}.ruc-custom-theme .mat-badge-small.mat-badge-overlap.mat-badge-after .mat-badge-content{right:-8px}[dir=rtl] .ruc-custom-theme .mat-badge-small.mat-badge-overlap.mat-badge-after .mat-badge-content{right:auto;left:-8px}.ruc-custom-theme .mat-badge-medium .mat-badge-content{width:22px;height:22px;line-height:22px}.ruc-custom-theme .mat-badge-medium.mat-badge-above .mat-badge-content{top:-11px}.ruc-custom-theme .mat-badge-medium.mat-badge-below .mat-badge-content{bottom:-11px}.ruc-custom-theme .mat-badge-medium.mat-badge-before .mat-badge-content{left:-22px}[dir=rtl] .ruc-custom-theme .mat-badge-medium.mat-badge-before .mat-badge-content{left:auto;right:-22px}.ruc-custom-theme .mat-badge-medium.mat-badge-after .mat-badge-content{right:-22px}[dir=rtl] .ruc-custom-theme .mat-badge-medium.mat-badge-after .mat-badge-content{right:auto;left:-22px}.ruc-custom-theme .mat-badge-medium.mat-badge-overlap.mat-badge-before .mat-badge-content{left:-11px}[dir=rtl] .ruc-custom-theme .mat-badge-medium.mat-badge-overlap.mat-badge-before .mat-badge-content{left:auto;right:-11px}.ruc-custom-theme .mat-badge-medium.mat-badge-overlap.mat-badge-after .mat-badge-content{right:-11px}[dir=rtl] .ruc-custom-theme .mat-badge-medium.mat-badge-overlap.mat-badge-after .mat-badge-content{right:auto;left:-11px}.ruc-custom-theme .mat-badge-large .mat-badge-content{width:28px;height:28px;line-height:28px}.ruc-custom-theme .mat-badge-large.mat-badge-above .mat-badge-content{top:-14px}.ruc-custom-theme .mat-badge-large.mat-badge-below .mat-badge-content{bottom:-14px}.ruc-custom-theme .mat-badge-large.mat-badge-before .mat-badge-content{left:-28px}[dir=rtl] .ruc-custom-theme .mat-badge-large.mat-badge-before .mat-badge-content{left:auto;right:-28px}.ruc-custom-theme .mat-badge-large.mat-badge-after .mat-badge-content{right:-28px}[dir=rtl] .ruc-custom-theme .mat-badge-large.mat-badge-after .mat-badge-content{right:auto;left:-28px}.ruc-custom-theme .mat-badge-large.mat-badge-overlap.mat-badge-before .mat-badge-content{left:-14px}[dir=rtl] .ruc-custom-theme .mat-badge-large.mat-badge-overlap.mat-badge-before .mat-badge-content{left:auto;right:-14px}.ruc-custom-theme .mat-badge-large.mat-badge-overlap.mat-badge-after .mat-badge-content{right:-14px}[dir=rtl] .ruc-custom-theme .mat-badge-large.mat-badge-overlap.mat-badge-after .mat-badge-content{right:auto;left:-14px}.ruc-custom-theme .mat-badge-content{font-weight:600;font-size:12px;font-family:Roboto,sans-serif}.ruc-custom-theme .mat-badge-small .mat-badge-content{font-size:9px}.ruc-custom-theme .mat-badge-large .mat-badge-content{font-size:24px}.ruc-custom-theme .mat-bottom-sheet-container{font-size:14px;font-weight:400;line-height:20px;font-family:Roboto,sans-serif;letter-spacing:normal}.ruc-custom-theme .mat-button-toggle-appearance-standard .mat-button-toggle-label-content{line-height:48px}.ruc-custom-theme .mat-button-toggle{font-family:Roboto,sans-serif}.ruc-custom-theme .mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base{width:40px;height:40px;padding:8px}.ruc-custom-theme .mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base .mdc-icon-button__focus-ring{max-height:40px;max-width:40px}.ruc-custom-theme .mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base.mdc-icon-button--reduced-size .mdc-icon-button__ripple{width:40px;height:40px;margin:0}.ruc-custom-theme .mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base.mdc-icon-button--reduced-size .mdc-icon-button__focus-ring{max-height:40px;max-width:40px}.ruc-custom-theme .mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base .mdc-icon-button__touch{position:absolute;top:50%;height:40px;left:50%;width:40px;transform:translate(-50%,-50%)}.ruc-custom-theme .mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base .mat-mdc-button-touch-target{display:none}.ruc-custom-theme .mat-calendar{font-family:Roboto,sans-serif}.ruc-custom-theme .mat-calendar-body{font-size:13px}.ruc-custom-theme .mat-calendar-body-label,.ruc-custom-theme .mat-calendar-period-button{font-size:20px;font-weight:500}.ruc-custom-theme .mat-calendar-table-header th{font-size:11px;font-weight:400}.ruc-custom-theme .mat-expansion-panel-header{height:48px}.ruc-custom-theme .mat-expansion-panel-header.mat-expanded{height:64px}.ruc-custom-theme .mat-expansion-panel-header{font-family:Roboto,sans-serif;font-size:15px;font-weight:400}.ruc-custom-theme .mat-expansion-panel-content{font-size:14px;font-weight:400;line-height:20px;font-family:Roboto,sans-serif;letter-spacing:normal}.ruc-custom-theme .mat-grid-tile-header,.ruc-custom-theme .mat-grid-tile-footer{font-size:14px}.ruc-custom-theme .mat-grid-tile-header .mat-line,.ruc-custom-theme .mat-grid-tile-footer .mat-line{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block;box-sizing:border-box}.ruc-custom-theme .mat-grid-tile-header .mat-line:nth-child(n+2),.ruc-custom-theme .mat-grid-tile-footer .mat-line:nth-child(n+2){font-size:12px}.ruc-custom-theme .mat-horizontal-stepper-header{height:72px}.ruc-custom-theme .mat-stepper-label-position-bottom .mat-horizontal-stepper-header,.ruc-custom-theme .mat-vertical-stepper-header{padding:24px}.ruc-custom-theme .mat-stepper-vertical-line:before{top:-16px;bottom:-16px}.ruc-custom-theme .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:after,.ruc-custom-theme .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:before{top:36px}.ruc-custom-theme .mat-stepper-label-position-bottom .mat-stepper-horizontal-line{top:36px}.ruc-custom-theme .mat-stepper-vertical,.ruc-custom-theme .mat-stepper-horizontal{font-family:Roboto,sans-serif}.ruc-custom-theme .mat-step-label{font-size:14px;font-weight:400}.ruc-custom-theme .mat-step-sub-label-error{font-weight:400}.ruc-custom-theme .mat-step-label-error{font-size:20px}.ruc-custom-theme .mat-step-label-selected{font-size:20px;font-weight:500}.ruc-custom-theme .mat-toolbar-multiple-rows{min-height:64px}.ruc-custom-theme .mat-toolbar-row,.ruc-custom-theme .mat-toolbar-single-row{height:64px}@media (max-width: 599px){.ruc-custom-theme .mat-toolbar-multiple-rows{min-height:56px}.ruc-custom-theme .mat-toolbar-row,.ruc-custom-theme .mat-toolbar-single-row{height:56px}}.ruc-custom-theme .mat-toolbar,.ruc-custom-theme .mat-toolbar h1,.ruc-custom-theme .mat-toolbar h2,.ruc-custom-theme .mat-toolbar h3,.ruc-custom-theme .mat-toolbar h4,.ruc-custom-theme .mat-toolbar h5,.ruc-custom-theme .mat-toolbar h6{font-size:20px;font-weight:500;line-height:32px;font-family:Roboto,sans-serif;letter-spacing:normal;margin:0}.ruc-custom-theme .mat-tree-node{min-height:48px}.ruc-custom-theme .mat-tree{font-family:Roboto,sans-serif}.ruc-custom-theme .mat-tree-node,.ruc-custom-theme .mat-nested-tree-node{font-weight:400;font-size:14px}:host{display:block;font-family:sans-serif}.screen-recorder-controls{display:flex;gap:8px;align-items:center;padding:8px;border-radius:4px;position:relative;z-index:1000}.screen-recorder-controls.position-top-left{margin-top:10px;margin-left:10px;flex-direction:row}.screen-recorder-controls.position-top-right{margin-top:10px;margin-right:10px;flex-direction:row}.screen-recorder-controls.position-bottom-left{margin-bottom:10px;margin-left:10px;flex-direction:row}.screen-recorder-controls.position-bottom-right{margin-bottom:10px;margin-right:10px;flex-direction:row}.screen-recorder-controls.position-left,.screen-recorder-controls.position-right{float:right}.recorder-button{padding:8px 12px;border:1px solid #ccc;border-radius:4px;background-color:#fff;cursor:pointer;display:inline-flex;align-items:center;gap:4px}.recorder-button:hover{background-color:#e9e9e9}.recorder-button:active{background-color:#d0d0d0}.recorder-button.record-button{color:red}.material-icons{font-family:Material Icons;font-weight:400;font-style:normal;font-size:20px;display:inline-block;line-height:1;text-transform:none;letter-spacing:normal;word-wrap:normal;white-space:nowrap;direction:ltr;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale;font-feature-settings:\"liga\"}.recorder-timer{padding:0 8px;font-feature-settings:\"tnum\";font-variant-numeric:tabular-nums}.playback-area{width:100%;max-width:100%;margin-top:1rem;position:relative}.playback-area video{width:100%;height:auto;max-width:100%}.playback-area .video-timer-overlay{position:absolute;top:10px;right:10px;background:rgba(0,0,0,.7);color:#fff;padding:5px 10px;border-radius:4px;font-size:14px;z-index:10}.recorder-error{color:red;padding:8px;border:1px solid red;background-color:#ffe0e0;border-radius:4px;margin-bottom:8px}.recorder-notsupported{padding:10px;background-color:#fff3cd;border:1px solid #ffeeba;color:#856404;border-radius:4px}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
231
231
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ScreenRecorderComponent, decorators: [{
232
232
  type: Component,
233
- args: [{ selector: 'uxp-screen-recorder', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"screen-recorder-controls\" [ngClass]=\"customTheme + ' position-' + (rucInputData.position || ScreenRecorderPosition.Bottom)\"\r\n *ngIf=\"isBrowserSupported\">\r\n\r\n <!-- Error Message -->\r\n <div *ngIf=\"errorMessage\" class=\"recorder-error\">\r\n {{ errorMessage }}\r\n </div>\r\n\r\n <!-- Record/Stop Button -->\r\n <button\r\n *ngIf=\"recordingState === RecordingState.Idle || recordingState === RecordingState.Stopped\" (click)=\"toggleRecord()\"\r\n [attr.aria-label]=\"getLabel('recordButton')\" [attr.aria-pressed]=\"false\" class=\"recorder-button record-button\">\r\n <ng-container *ngIf=\"rucInputData.displayFormat === DisplayFormat.Icon\">\r\n <span class=\"material-icons\">{{ getRecordingIcon() || getIcon('record') }}</span>\r\n </ng-container>\r\n <ng-container *ngIf=\"rucInputData.displayFormat === DisplayFormat.Text\">{{ getLabel('recordButton')\r\n }}</ng-container>\r\n </button>\r\n\r\n <button\r\n *ngIf=\"recordingState === RecordingState.Recording || recordingState === RecordingState.Paused\"\r\n (click)=\"toggleRecord()\" [attr.aria-label]=\"getLabel('stopButton')\" [attr.aria-pressed]=\"true\"\r\n class=\"recorder-button stop-button\">\r\n <ng-container *ngIf=\"rucInputData.displayFormat === DisplayFormat.Icon\">\r\n <span class=\"material-icons\">{{ getIcon('stop') }}</span>\r\n </ng-container>\r\n <ng-container *ngIf=\"rucInputData.displayFormat === DisplayFormat.Text\">{{ getLabel('stopButton') }}</ng-container>\r\n </button>\r\n\r\n <!-- Pause/Resume Button -->\r\n <button *ngIf=\"rucInputData.showPauseResume && recordingState === RecordingState.Recording\"\r\n (click)=\"togglePauseResume()\" [attr.aria-label]=\"getLabel('pauseButton')\" [attr.aria-pressed]=\"false\"\r\n class=\"recorder-button pause-button\">\r\n <ng-container *ngIf=\"rucInputData.displayFormat === DisplayFormat.Icon\">\r\n <span class=\"material-icons\">{{ getIcon('pause') }}</span>\r\n </ng-container>\r\n <ng-container *ngIf=\"rucInputData.displayFormat === DisplayFormat.Text\">{{ getLabel('pauseButton') }}</ng-container>\r\n </button>\r\n <button *ngIf=\"rucInputData.showPauseResume && recordingState === RecordingState.Paused\"\r\n (click)=\"togglePauseResume()\" [attr.aria-label]=\"getLabel('resumeButton')\" [attr.aria-pressed]=\"true\"\r\n class=\"recorder-button resume-button\">\r\n <ng-container *ngIf=\"rucInputData.displayFormat === DisplayFormat.Icon\">\r\n <span class=\"material-icons\">{{ getIcon('resume') }}</span>\r\n </ng-container>\r\n <ng-container *ngIf=\"rucInputData.displayFormat === DisplayFormat.Text\">{{ getLabel('resumeButton')\r\n }}</ng-container>\r\n </button>\r\n\r\n <!-- Audio Toggle Button -->\r\n <button\r\n *ngIf=\"rucInputData.showAudioToggle && (recordingState === RecordingState.Idle || recordingState === RecordingState.Stopped)\"\r\n (click)=\"toggleAudio()\" [attr.aria-label]=\"getLabel('audioToggleButton')\" [attr.aria-pressed]=\"isAudioEnabled\"\r\n class=\"recorder-button audio-toggle-button\">\r\n <ng-container *ngIf=\"rucInputData.displayFormat === DisplayFormat.Icon\">\r\n <span class=\"material-icons\">{{ isAudioEnabled ? getIcon('audioOn') : getIcon('audioOff') }}</span>\r\n </ng-container>\r\n <ng-container *ngIf=\"rucInputData.displayFormat === DisplayFormat.Text\">\r\n {{ isAudioEnabled ? screenRecordingConstant.AUDIO_ON : screenRecordingConstant.AUDIO_OFF }}\r\n </ng-container>\r\n </button>\r\n\r\n <!-- Timer -->\r\n <div\r\n *ngIf=\"rucInputData.showTimer && (recordingState === RecordingState.Recording || recordingState === RecordingState.Paused)\"\r\n class=\"recorder-timer\" aria-live=\"polite\" aria-atomic=\"true\">\r\n {{ formattedTime }}\r\n </div>\r\n\r\n <!-- Download Button -->\r\n <button\r\n *ngIf=\"rucInputData.showDownloadButton && recordingState === RecordingState.Stopped && safeRecordedUrl\"\r\n (click)=\"onDownload()\" [attr.aria-label]=\"getLabel('downloadButton')\" class=\"recorder-button download-button\">\r\n <ng-container *ngIf=\"rucInputData.displayFormat === DisplayFormat.Icon\">\r\n <span class=\"material-icons\">{{ getIcon('download') }}</span>\r\n </ng-container>\r\n <ng-container *ngIf=\"rucInputData.displayFormat === DisplayFormat.Text\">{{ getLabel('downloadButton')\r\n }}</ng-container>\r\n </button>\r\n\r\n <!-- Playback Area -->\r\n <div *ngIf=\"rucInputData.showPlaybackControls && recordingState === RecordingState.Stopped && safeRecordedUrl\"\r\n class=\"playback-area\">\r\n <video #videoPlayer [src]=\"safeRecordedUrl\" controls [attr.aria-label]=\"getLabel('playbackVideo')\"></video>\r\n <div class=\"video-timer-overlay\">\r\n <span>Recorded on: {{ recordingTimestamp }}</span>\r\n </div>\r\n </div>\r\n\r\n <!-- Reset Button (optional, good for testing/clearing state) -->\r\n <button *ngIf=\"recordingState === RecordingState.Stopped && safeRecordedUrl\" (click)=\"reset()\"\r\n aria-label=\"New Recording\" class=\"recorder-button reset-button\">\r\n <ng-container *ngIf=\"rucInputData.displayFormat === DisplayFormat.Icon\">\r\n <span class=\"material-icons\">refresh</span>\r\n </ng-container>\r\n <ng-container *ngIf=\"rucInputData.displayFormat === DisplayFormat.Text\">New</ng-container>\r\n </button>\r\n\r\n</div>\r\n\r\n<div *ngIf=\"!isBrowserSupported\" class=\"recorder-notsupported\" [ngClass]=\"customTheme\">\r\n {{screenRecordingConstant.NO_SUPPORT}}\r\n</div>", styles: [":host{display:block;font-family:sans-serif}.screen-recorder-controls{display:flex;gap:8px;align-items:center;padding:8px;border-radius:4px;position:relative;z-index:1000}.screen-recorder-controls.position-top-left{margin-top:10px;margin-left:10px;flex-direction:row}.screen-recorder-controls.position-top-right{margin-top:10px;margin-right:10px;flex-direction:row}.screen-recorder-controls.position-bottom-left{margin-bottom:10px;margin-left:10px;flex-direction:row}.screen-recorder-controls.position-bottom-right{margin-bottom:10px;margin-right:10px;flex-direction:row}.screen-recorder-controls.position-left,.screen-recorder-controls.position-right{float:right}.recorder-button{padding:8px 12px;border:1px solid #ccc;border-radius:4px;background-color:#fff;cursor:pointer;display:inline-flex;align-items:center;gap:4px}.recorder-button:hover{background-color:#e9e9e9}.recorder-button:active{background-color:#d0d0d0}.recorder-button.record-button{color:red}.material-icons{font-family:Material Icons;font-weight:400;font-style:normal;font-size:20px;display:inline-block;line-height:1;text-transform:none;letter-spacing:normal;word-wrap:normal;white-space:nowrap;direction:ltr;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale;font-feature-settings:\"liga\"}.recorder-timer{padding:0 8px;font-feature-settings:\"tnum\";font-variant-numeric:tabular-nums}.playback-area{width:100%;max-width:100%;margin-top:1rem;position:relative}.playback-area video{width:100%;height:auto;max-width:100%}.playback-area .video-timer-overlay{position:absolute;top:10px;right:10px;background:rgba(0,0,0,.7);color:#fff;padding:5px 10px;border-radius:4px;font-size:14px;z-index:10}.recorder-error{color:red;padding:8px;border:1px solid red;background-color:#ffe0e0;border-radius:4px;margin-bottom:8px}.recorder-notsupported{padding:10px;background-color:#fff3cd;border:1px solid #ffeeba;color:#856404;border-radius:4px}\n"] }]
233
+ args: [{ selector: 'uxp-ruclib-screen-recorder', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"main\">\r\n <div class=\"screen-recorder-controls\"\r\n [ngClass]=\"customTheme + ' position-' + (rucInputData.position || ScreenRecorderPosition.Bottom)\"\r\n *ngIf=\"isBrowserSupported\">\r\n\r\n <!-- Error Message -->\r\n <div *ngIf=\"errorMessage\" class=\"recorder-error\">\r\n {{ errorMessage }}\r\n </div>\r\n\r\n <!-- Record/Stop Button -->\r\n <button *ngIf=\"recordingState === RecordingState.Idle || recordingState === RecordingState.Stopped\"\r\n (click)=\"toggleRecord()\" [attr.aria-label]=\"getLabel('recordButton')\" [attr.aria-pressed]=\"false\"\r\n class=\"recorder-button record-button\">\r\n <ng-container *ngIf=\"rucInputData.displayFormat === DisplayFormat.Icon\">\r\n <span class=\"material-icons\">{{ getRecordingIcon() || getIcon('record') }}</span>\r\n </ng-container>\r\n <ng-container *ngIf=\"rucInputData.displayFormat === DisplayFormat.Text\">{{ getLabel('recordButton')\r\n }}</ng-container>\r\n </button>\r\n\r\n <button *ngIf=\"recordingState === RecordingState.Recording || recordingState === RecordingState.Paused\"\r\n (click)=\"toggleRecord()\" [attr.aria-label]=\"getLabel('stopButton')\" [attr.aria-pressed]=\"true\"\r\n class=\"recorder-button stop-button\">\r\n <ng-container *ngIf=\"rucInputData.displayFormat === DisplayFormat.Icon\">\r\n <span class=\"material-icons\">{{ getIcon('stop') }}</span>\r\n </ng-container>\r\n <ng-container *ngIf=\"rucInputData.displayFormat === DisplayFormat.Text\">{{ getLabel('stopButton')\r\n }}</ng-container>\r\n </button>\r\n\r\n <!-- Pause/Resume Button -->\r\n <button *ngIf=\"rucInputData.showPauseResume && recordingState === RecordingState.Recording\"\r\n (click)=\"togglePauseResume()\" [attr.aria-label]=\"getLabel('pauseButton')\" [attr.aria-pressed]=\"false\"\r\n class=\"recorder-button pause-button\">\r\n <ng-container *ngIf=\"rucInputData.displayFormat === DisplayFormat.Icon\">\r\n <span class=\"material-icons\">{{ getIcon('pause') }}</span>\r\n </ng-container>\r\n <ng-container *ngIf=\"rucInputData.displayFormat === DisplayFormat.Text\">{{ getLabel('pauseButton')\r\n }}</ng-container>\r\n </button>\r\n <button *ngIf=\"rucInputData.showPauseResume && recordingState === RecordingState.Paused\"\r\n (click)=\"togglePauseResume()\" [attr.aria-label]=\"getLabel('resumeButton')\" [attr.aria-pressed]=\"true\"\r\n class=\"recorder-button resume-button\">\r\n <ng-container *ngIf=\"rucInputData.displayFormat === DisplayFormat.Icon\">\r\n <span class=\"material-icons\">{{ getIcon('resume') }}</span>\r\n </ng-container>\r\n <ng-container *ngIf=\"rucInputData.displayFormat === DisplayFormat.Text\">{{ getLabel('resumeButton')\r\n }}</ng-container>\r\n </button>\r\n\r\n <!-- Audio Toggle Button -->\r\n <button\r\n *ngIf=\"rucInputData.showAudioToggle && (recordingState === RecordingState.Idle || recordingState === RecordingState.Stopped)\"\r\n (click)=\"toggleAudio()\" [attr.aria-label]=\"getLabel('audioToggleButton')\" [attr.aria-pressed]=\"isAudioEnabled\"\r\n class=\"recorder-button audio-toggle-button\">\r\n <ng-container *ngIf=\"rucInputData.displayFormat === DisplayFormat.Icon\">\r\n <span class=\"material-icons\">{{ isAudioEnabled ? getIcon('audioOn') : getIcon('audioOff') }}</span>\r\n </ng-container>\r\n <ng-container *ngIf=\"rucInputData.displayFormat === DisplayFormat.Text\">\r\n {{ isAudioEnabled ? screenRecordingConstant.AUDIO_ON : screenRecordingConstant.AUDIO_OFF }}\r\n </ng-container>\r\n </button>\r\n\r\n <!-- Timer -->\r\n <div\r\n *ngIf=\"rucInputData.showTimer && (recordingState === RecordingState.Recording || recordingState === RecordingState.Paused)\"\r\n class=\"recorder-timer\" aria-live=\"polite\" aria-atomic=\"true\">\r\n {{ formattedTime }}\r\n </div>\r\n\r\n <!-- Download Button -->\r\n <button *ngIf=\"rucInputData.showDownloadButton && recordingState === RecordingState.Stopped && safeRecordedUrl\"\r\n (click)=\"onDownload()\" [attr.aria-label]=\"getLabel('downloadButton')\" class=\"recorder-button download-button\">\r\n <ng-container *ngIf=\"rucInputData.displayFormat === DisplayFormat.Icon\">\r\n <span class=\"material-icons\">{{ getIcon('download') }}</span>\r\n </ng-container>\r\n <ng-container *ngIf=\"rucInputData.displayFormat === DisplayFormat.Text\">{{ getLabel('downloadButton')\r\n }}</ng-container>\r\n </button>\r\n\r\n <!-- Playback Area -->\r\n <div *ngIf=\"rucInputData.showPlaybackControls && recordingState === RecordingState.Stopped && safeRecordedUrl\"\r\n class=\"playback-area\">\r\n <video #videoPlayer [src]=\"safeRecordedUrl\" controls [attr.aria-label]=\"getLabel('playbackVideo')\"></video>\r\n <div class=\"video-timer-overlay\">\r\n <span>Recorded on: {{ recordingTimestamp }}</span>\r\n </div>\r\n </div>\r\n\r\n <!-- Reset Button (optional, good for testing/clearing state) -->\r\n <button *ngIf=\"recordingState === RecordingState.Stopped && safeRecordedUrl\" (click)=\"reset()\"\r\n aria-label=\"New Recording\" class=\"recorder-button reset-button\">\r\n <ng-container *ngIf=\"rucInputData.displayFormat === DisplayFormat.Icon\">\r\n <span class=\"material-icons\">refresh</span>\r\n </ng-container>\r\n <ng-container *ngIf=\"rucInputData.displayFormat === DisplayFormat.Text\">New</ng-container>\r\n </button>\r\n\r\n </div>\r\n\r\n <div *ngIf=\"!isBrowserSupported\" class=\"recorder-notsupported\" [ngClass]=\"customTheme\">\r\n {{screenRecordingConstant.NO_SUPPORT}}\r\n </div>\r\n</div>", styles: [".mat-ripple{overflow:hidden;position:relative}.mat-ripple:not(:empty){transform:translateZ(0)}.mat-ripple.mat-ripple-unbounded{overflow:visible}.mat-ripple-element{position:absolute;border-radius:50%;pointer-events:none;transition:opacity,transform 0ms cubic-bezier(0,0,.2,1);transform:scale3d(0,0,0)}.cdk-high-contrast-active .mat-ripple-element{display:none}.cdk-visually-hidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap;outline:0;-webkit-appearance:none;-moz-appearance:none;left:0}[dir=rtl] .cdk-visually-hidden{left:auto;right:0}.cdk-overlay-container,.cdk-global-overlay-wrapper{pointer-events:none;top:0;left:0;height:100%;width:100%}.cdk-overlay-container{position:fixed;z-index:1000}.cdk-overlay-container:empty{display:none}.cdk-global-overlay-wrapper{display:flex;position:absolute;z-index:1000}.cdk-overlay-pane{position:absolute;pointer-events:auto;box-sizing:border-box;z-index:1000;display:flex;max-width:100%;max-height:100%}.cdk-overlay-backdrop{position:absolute;inset:0;z-index:1000;pointer-events:auto;-webkit-tap-highlight-color:transparent;transition:opacity .4s cubic-bezier(.25,.8,.25,1);opacity:0}.cdk-overlay-backdrop.cdk-overlay-backdrop-showing{opacity:1}.cdk-high-contrast-active .cdk-overlay-backdrop.cdk-overlay-backdrop-showing{opacity:.6}.cdk-overlay-dark-backdrop{background:rgba(0,0,0,.32)}.cdk-overlay-transparent-backdrop{transition:visibility 1ms linear,opacity 1ms linear;visibility:hidden;opacity:1}.cdk-overlay-transparent-backdrop.cdk-overlay-backdrop-showing{opacity:0;visibility:visible}.cdk-overlay-backdrop-noop-animation{transition:none}.cdk-overlay-connected-position-bounding-box{position:absolute;z-index:1000;display:flex;flex-direction:column;min-width:1px;min-height:1px}.cdk-global-scrollblock{position:fixed;width:100%;overflow-y:scroll}textarea.cdk-textarea-autosize{resize:none}textarea.cdk-textarea-autosize-measuring{padding:2px 0!important;box-sizing:content-box!important;height:auto!important;overflow:hidden!important}textarea.cdk-textarea-autosize-measuring-firefox{padding:2px 0!important;box-sizing:content-box!important;height:0!important}@keyframes cdk-text-field-autofill-start{}@keyframes cdk-text-field-autofill-end{}.cdk-text-field-autofill-monitored:-webkit-autofill{animation:cdk-text-field-autofill-start 0s 1ms}.cdk-text-field-autofill-monitored:not(:-webkit-autofill){animation:cdk-text-field-autofill-end 0s 1ms}.mat-focus-indicator{position:relative}.mat-focus-indicator:before{inset:0;position:absolute;box-sizing:border-box;pointer-events:none;display:var(--mat-focus-indicator-display, none);border:var(--mat-focus-indicator-border-width, 3px) var(--mat-focus-indicator-border-style, solid) var(--mat-focus-indicator-border-color, transparent);border-radius:var(--mat-focus-indicator-border-radius, 4px)}.mat-focus-indicator:focus:before{content:\"\"}.cdk-high-contrast-active{--mat-focus-indicator-display: block}.mat-mdc-focus-indicator{position:relative}.mat-mdc-focus-indicator:before{inset:0;position:absolute;box-sizing:border-box;pointer-events:none;display:var(--mat-mdc-focus-indicator-display, none);border:var(--mat-mdc-focus-indicator-border-width, 3px) var(--mat-mdc-focus-indicator-border-style, solid) var(--mat-mdc-focus-indicator-border-color, transparent);border-radius:var(--mat-mdc-focus-indicator-border-radius, 4px)}.mat-mdc-focus-indicator:focus:before{content:\"\"}.cdk-high-contrast-active{--mat-mdc-focus-indicator-display: block}.main{font-size:16px;font-weight:400;line-height:24px;font-family:Roboto,sans-serif;letter-spacing:.03125em}.ruc-custom-theme{font-size:14px;font-weight:400;line-height:20px;font-family:Roboto,sans-serif;letter-spacing:normal}.ruc-custom-theme .mat-mdc-option{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-body1-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-body1-font-size, 15px);line-height:var(--mdc-typography-body1-line-height, 24px);font-weight:var(--mdc-typography-body1-font-weight, 400);letter-spacing:var(--mdc-typography-body1-letter-spacing, normal)}.ruc-custom-theme .mat-mdc-card-title{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-headline6-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-headline6-font-size, 20px);line-height:var(--mdc-typography-headline6-line-height, 32px);font-weight:var(--mdc-typography-headline6-font-weight, 500);letter-spacing:var(--mdc-typography-headline6-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-headline6-text-decoration, inherit);text-decoration:var(--mdc-typography-headline6-text-decoration, inherit);text-transform:var(--mdc-typography-headline6-text-transform, none)}.ruc-custom-theme .mat-mdc-card-subtitle{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-subtitle2-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-subtitle2-font-size, 20px);line-height:var(--mdc-typography-subtitle2-line-height, 24px);font-weight:var(--mdc-typography-subtitle2-font-weight, 500);letter-spacing:var(--mdc-typography-subtitle2-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-subtitle2-text-decoration, inherit);text-decoration:var(--mdc-typography-subtitle2-text-decoration, inherit);text-transform:var(--mdc-typography-subtitle2-text-transform, none)}.ruc-custom-theme .mat-mdc-tooltip{--mdc-plain-tooltip-supporting-text-font: Roboto, sans-serif;--mdc-plain-tooltip-supporting-text-size: 12px;--mdc-plain-tooltip-supporting-text-weight: 400;--mdc-plain-tooltip-supporting-text-tracking: normal}.ruc-custom-theme .mat-mdc-form-field-infix{min-height:56px}.ruc-custom-theme .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-floating-label{top:28px}.ruc-custom-theme .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{--mat-mdc-form-field-label-transform: translateY( -34.75px) scale(var(--mat-mdc-form-field-floating-label-scale, .75));transform:var(--mat-mdc-form-field-label-transform)}.ruc-custom-theme .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mat-mdc-form-field-infix{padding-top:16px;padding-bottom:16px}.ruc-custom-theme .mat-mdc-text-field-wrapper:not(.mdc-text-field--outlined) .mat-mdc-form-field-infix{padding-top:24px;padding-bottom:8px}.ruc-custom-theme .mdc-text-field--no-label:not(.mdc-text-field--outlined):not(.mdc-text-field--textarea) .mat-mdc-form-field-infix{padding-top:16px;padding-bottom:16px}.ruc-custom-theme .mdc-text-field__input,.ruc-custom-theme .mdc-text-field__affix{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-subtitle1-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-subtitle1-font-size, 16px);font-weight:var(--mdc-typography-subtitle1-font-weight, 400);letter-spacing:var(--mdc-typography-subtitle1-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-subtitle1-text-decoration, inherit);text-decoration:var(--mdc-typography-subtitle1-text-decoration, inherit);text-transform:var(--mdc-typography-subtitle1-text-transform, none)}.ruc-custom-theme .mdc-text-field--textarea .mdc-text-field__input{line-height:1.5rem}.ruc-custom-theme .mdc-floating-label{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-subtitle1-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-subtitle1-font-size, 16px);font-weight:var(--mdc-typography-subtitle1-font-weight, 400);letter-spacing:var(--mdc-typography-subtitle1-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-subtitle1-text-decoration, inherit);text-decoration:var(--mdc-typography-subtitle1-text-decoration, inherit);text-transform:var(--mdc-typography-subtitle1-text-transform, none)}.ruc-custom-theme .mat-mdc-form-field-subscript-wrapper,.ruc-custom-theme .mat-mdc-form-field-bottom-align:before{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-caption-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-caption-font-size, 12px);line-height:var(--mdc-typography-caption-line-height, 20px);font-weight:var(--mdc-typography-caption-font-weight, 400);letter-spacing:var(--mdc-typography-caption-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-caption-text-decoration, inherit);text-decoration:var(--mdc-typography-caption-text-decoration, inherit);text-transform:var(--mdc-typography-caption-text-transform, none)}.ruc-custom-theme .mat-mdc-form-field,.ruc-custom-theme .mat-mdc-floating-label{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-body1-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-body1-font-size, 15px);line-height:var(--mdc-typography-body1-line-height, 24px);font-weight:var(--mdc-typography-body1-font-weight, 400);letter-spacing:var(--mdc-typography-body1-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-body1-text-decoration, inherit);text-decoration:var(--mdc-typography-body1-text-decoration, inherit);text-transform:var(--mdc-typography-body1-text-transform, none)}.ruc-custom-theme .mat-mdc-form-field .mdc-text-field--outlined .mdc-floating-label--float-above{font-size:calc(15px * var(--mat-mdc-form-field-floating-label-scale, .75))}.ruc-custom-theme .mat-mdc-form-field .mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{font-size:15px}.ruc-custom-theme .mat-mdc-select-panel{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-subtitle1-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-subtitle1-font-size, 16px);line-height:var(--mdc-typography-subtitle1-line-height, 28px);font-weight:var(--mdc-typography-subtitle1-font-weight, 400);letter-spacing:var(--mdc-typography-subtitle1-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-subtitle1-text-decoration, inherit);text-decoration:var(--mdc-typography-subtitle1-text-decoration, inherit);text-transform:var(--mdc-typography-subtitle1-text-transform, none);line-height:24px}.ruc-custom-theme .mat-mdc-select{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-body1-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-body1-font-size, 15px);line-height:var(--mdc-typography-body1-line-height, 24px);font-weight:var(--mdc-typography-body1-font-weight, 400);letter-spacing:var(--mdc-typography-body1-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-body1-text-decoration, inherit);text-decoration:var(--mdc-typography-body1-text-decoration, inherit);text-transform:var(--mdc-typography-body1-text-transform, none)}.ruc-custom-theme .mat-mdc-autocomplete-panel{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-subtitle1-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-subtitle1-font-size, 16px);line-height:var(--mdc-typography-subtitle1-line-height, 28px);font-weight:var(--mdc-typography-subtitle1-font-weight, 400);letter-spacing:var(--mdc-typography-subtitle1-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-subtitle1-text-decoration, inherit);text-decoration:var(--mdc-typography-subtitle1-text-decoration, inherit);text-transform:var(--mdc-typography-subtitle1-text-transform, none);line-height:24px}.ruc-custom-theme .mat-mdc-dialog-container{--mdc-dialog-subhead-font: Roboto, sans-serif;--mdc-dialog-subhead-line-height: 32px;--mdc-dialog-subhead-size: 20px;--mdc-dialog-subhead-weight: 500;--mdc-dialog-subhead-tracking: normal;--mdc-dialog-supporting-text-font: Roboto, sans-serif;--mdc-dialog-supporting-text-line-height: 24px;--mdc-dialog-supporting-text-size: 15px;--mdc-dialog-supporting-text-weight: 400;--mdc-dialog-supporting-text-tracking: normal}.ruc-custom-theme .mat-mdc-chip{height:32px}.ruc-custom-theme .mat-mdc-standard-chip{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-body2-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-body2-font-size, 14px);line-height:var(--mdc-typography-body2-line-height, 20px);font-weight:var(--mdc-typography-body2-font-weight, 400);letter-spacing:var(--mdc-typography-body2-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-body2-text-decoration, inherit);text-decoration:var(--mdc-typography-body2-text-decoration, inherit);text-transform:var(--mdc-typography-body2-text-transform, none)}.ruc-custom-theme .mat-mdc-slide-toggle{--mdc-switch-state-layer-size: 48px}.ruc-custom-theme .mat-mdc-radio-button .mdc-radio{padding:10px}.ruc-custom-theme .mat-mdc-radio-button .mdc-radio .mdc-radio__background:before{top:-10px;left:-10px;width:40px;height:40px}.ruc-custom-theme .mat-mdc-radio-button .mdc-radio .mdc-radio__native-control{top:0;right:0;left:0;width:40px;height:40px}.ruc-custom-theme .mat-mdc-slider{--mdc-slider-label-label-text-font: Roboto, sans-serif;--mdc-slider-label-label-text-size: 20px;--mdc-slider-label-label-text-line-height: 24px;--mdc-slider-label-label-text-tracking: normal;--mdc-slider-label-label-text-weight: 500}.ruc-custom-theme .mat-mdc-menu-content{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-subtitle1-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-subtitle1-font-size, 16px);line-height:var(--mdc-typography-subtitle1-line-height, 28px);font-weight:var(--mdc-typography-subtitle1-font-weight, 400);letter-spacing:var(--mdc-typography-subtitle1-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-subtitle1-text-decoration, inherit);text-decoration:var(--mdc-typography-subtitle1-text-decoration, inherit);text-transform:var(--mdc-typography-subtitle1-text-transform, none);line-height:24px}.ruc-custom-theme .mat-mdc-menu-content,.ruc-custom-theme .mat-mdc-menu-content .mat-mdc-menu-item .mdc-list-item__primary-text{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-body1-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-body1-font-size, 15px);line-height:var(--mdc-typography-body1-line-height, 24px);font-weight:var(--mdc-typography-body1-font-weight, 400);letter-spacing:var(--mdc-typography-body1-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-body1-text-decoration, inherit);text-decoration:var(--mdc-typography-body1-text-decoration, inherit);text-transform:var(--mdc-typography-body1-text-transform, none)}.ruc-custom-theme .mat-mdc-list-base{--mdc-list-list-item-one-line-container-height: 48px;--mdc-list-list-item-two-line-container-height: 64px;--mdc-list-list-item-three-line-container-height: 88px}.ruc-custom-theme .mat-mdc-list-item.mdc-list-item--with-leading-avatar.mdc-list-item--with-one-line,.ruc-custom-theme .mat-mdc-list-item.mdc-list-item--with-leading-checkbox.mdc-list-item--with-one-line,.ruc-custom-theme .mat-mdc-list-item.mdc-list-item--with-leading-icon.mdc-list-item--with-one-line{height:56px}.ruc-custom-theme .mat-mdc-list-item.mdc-list-item--with-leading-avatar.mdc-list-item--with-two-lines,.ruc-custom-theme .mat-mdc-list-item.mdc-list-item--with-leading-checkbox.mdc-list-item--with-two-lines,.ruc-custom-theme .mat-mdc-list-item.mdc-list-item--with-leading-icon.mdc-list-item--with-two-lines{height:72px}.ruc-custom-theme .mat-mdc-list-base{--mdc-list-list-item-label-text-font: Roboto, sans-serif;--mdc-list-list-item-label-text-line-height: 24px;--mdc-list-list-item-label-text-size: 15px;--mdc-list-list-item-label-text-tracking: normal;--mdc-list-list-item-label-text-weight: 400;--mdc-list-list-item-supporting-text-font: Roboto, sans-serif;--mdc-list-list-item-supporting-text-line-height: 20px;--mdc-list-list-item-supporting-text-size: 14px;--mdc-list-list-item-supporting-text-tracking: normal;--mdc-list-list-item-supporting-text-weight: 400;--mdc-list-list-item-trailing-supporting-text-font: Roboto, sans-serif;--mdc-list-list-item-trailing-supporting-text-line-height: 20px;--mdc-list-list-item-trailing-supporting-text-size: 12px;--mdc-list-list-item-trailing-supporting-text-tracking: normal;--mdc-list-list-item-trailing-supporting-text-weight: 400}.ruc-custom-theme .mdc-list-group__subheader{font-size:16px;font-weight:400;line-height:28px;font-family:Roboto,sans-serif;letter-spacing:normal}.ruc-custom-theme .mat-mdc-paginator .mat-mdc-form-field-infix{min-height:40px}.ruc-custom-theme .mat-mdc-paginator .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-floating-label{top:20px}.ruc-custom-theme .mat-mdc-paginator .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{--mat-mdc-form-field-label-transform: translateY( -26.75px) scale(var(--mat-mdc-form-field-floating-label-scale, .75));transform:var(--mat-mdc-form-field-label-transform)}.ruc-custom-theme .mat-mdc-paginator .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mat-mdc-form-field-infix{padding-top:8px;padding-bottom:8px}.ruc-custom-theme .mat-mdc-paginator .mat-mdc-text-field-wrapper:not(.mdc-text-field--outlined) .mat-mdc-form-field-infix{padding-top:8px;padding-bottom:8px}.ruc-custom-theme .mat-mdc-paginator .mdc-text-field--no-label:not(.mdc-text-field--outlined):not(.mdc-text-field--textarea) .mat-mdc-form-field-infix{padding-top:8px;padding-bottom:8px}.ruc-custom-theme .mat-mdc-paginator .mat-mdc-text-field-wrapper:not(.mdc-text-field--outlined) .mat-mdc-floating-label{display:none}.ruc-custom-theme .mat-mdc-paginator-container{min-height:56px}.ruc-custom-theme .mat-mdc-paginator{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-caption-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-caption-font-size, 12px);line-height:var(--mdc-typography-caption-line-height, 20px);font-weight:var(--mdc-typography-caption-font-weight, 400);letter-spacing:var(--mdc-typography-caption-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-caption-text-decoration, inherit);text-decoration:var(--mdc-typography-caption-text-decoration, inherit);text-transform:var(--mdc-typography-caption-text-transform, none)}.ruc-custom-theme .mat-mdc-paginator .mat-mdc-select-value{font-size:12px}.ruc-custom-theme .mat-mdc-tab-header .mdc-tab{height:48px}.ruc-custom-theme .mdc-tab{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-button-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-button-font-size, 20px);line-height:var(--mdc-typography-button-line-height, 60px);font-weight:var(--mdc-typography-button-font-weight, 500);letter-spacing:var(--mdc-typography-button-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-button-text-decoration, none);text-decoration:var(--mdc-typography-button-text-decoration, none);text-transform:var(--mdc-typography-button-text-transform, none)}.ruc-custom-theme .mat-mdc-checkbox .mdc-checkbox{padding:calc((var(--mdc-checkbox-ripple-size, 40px) - 18px) / 2);margin:calc((var(--mdc-checkbox-touch-target-size, 40px) - 40px) / 2)}.ruc-custom-theme .mat-mdc-checkbox .mdc-checkbox .mdc-checkbox__background{top:calc((var(--mdc-checkbox-ripple-size, 40px) - 18px) / 2);left:calc((var(--mdc-checkbox-ripple-size, 40px) - 18px) / 2)}.ruc-custom-theme .mat-mdc-checkbox .mdc-checkbox .mdc-checkbox__native-control{top:calc((40px - var(--mdc-checkbox-touch-target-size, 40px)) / 2);right:calc((40px - var(--mdc-checkbox-touch-target-size, 40px)) / 2);left:calc((40px - var(--mdc-checkbox-touch-target-size, 40px)) / 2);width:var(--mdc-checkbox-touch-target-size, 40px);height:var(--mdc-checkbox-touch-target-size, 40px)}@media all and (-ms-high-contrast: none){.ruc-custom-theme .mdc-checkbox .mdc-checkbox__focus-ring{display:none}}.ruc-custom-theme .mdc-form-field{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-body2-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-body2-font-size, 14px);line-height:var(--mdc-typography-body2-line-height, 20px);font-weight:var(--mdc-typography-body2-font-weight, 400);letter-spacing:var(--mdc-typography-body2-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-body2-text-decoration, inherit);text-decoration:var(--mdc-typography-body2-text-decoration, inherit);text-transform:var(--mdc-typography-body2-text-transform, none)}.ruc-custom-theme .mat-mdc-button.mat-mdc-button-base,.ruc-custom-theme .mat-mdc-raised-button.mat-mdc-button-base,.ruc-custom-theme .mat-mdc-unelevated-button.mat-mdc-button-base,.ruc-custom-theme .mat-mdc-outlined-button.mat-mdc-button-base{height:36px}.ruc-custom-theme .mdc-button{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-button-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-button-font-size, 20px);line-height:var(--mdc-typography-button-line-height, 60px);font-weight:var(--mdc-typography-button-font-weight, 500);letter-spacing:var(--mdc-typography-button-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-button-text-decoration, none);text-decoration:var(--mdc-typography-button-text-decoration, none);text-transform:var(--mdc-typography-button-text-transform, none)}.ruc-custom-theme .mat-mdc-icon-button.mat-mdc-button-base{width:48px;height:48px;padding:12px}.ruc-custom-theme .mat-mdc-icon-button.mat-mdc-button-base .mdc-icon-button__focus-ring{max-height:48px;max-width:48px}.ruc-custom-theme .mat-mdc-icon-button.mat-mdc-button-base.mdc-icon-button--reduced-size .mdc-icon-button__ripple{width:40px;height:40px;margin:4px}.ruc-custom-theme .mat-mdc-icon-button.mat-mdc-button-base.mdc-icon-button--reduced-size .mdc-icon-button__focus-ring{max-height:40px;max-width:40px}.ruc-custom-theme .mat-mdc-icon-button.mat-mdc-button-base .mdc-icon-button__touch{position:absolute;top:50%;height:48px;left:50%;width:48px;transform:translate(-50%,-50%)}.ruc-custom-theme .mdc-fab--extended{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-button-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-button-font-size, 20px);line-height:var(--mdc-typography-button-line-height, 60px);font-weight:var(--mdc-typography-button-font-weight, 500);letter-spacing:var(--mdc-typography-button-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-button-text-decoration, none);text-decoration:var(--mdc-typography-button-text-decoration, none);text-transform:var(--mdc-typography-button-text-transform, none)}.ruc-custom-theme .mat-mdc-snack-bar-container{--mdc-snackbar-supporting-text-font: Roboto, sans-serif;--mdc-snackbar-supporting-text-line-height: 20px;--mdc-snackbar-supporting-text-size: 14px;--mdc-snackbar-supporting-text-weight: 400}.ruc-custom-theme .mat-mdc-table .mdc-data-table__row{height:52px}.ruc-custom-theme .mat-mdc-table .mdc-data-table__pagination{min-height:52px}.ruc-custom-theme .mat-mdc-table .mdc-data-table__header-row{height:56px}.ruc-custom-theme .mdc-data-table__content,.ruc-custom-theme .mdc-data-table__cell{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-body2-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-body2-font-size, 14px);line-height:var(--mdc-typography-body2-line-height, 20px);font-weight:var(--mdc-typography-body2-font-weight, 400);letter-spacing:var(--mdc-typography-body2-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-body2-text-decoration, inherit);text-decoration:var(--mdc-typography-body2-text-decoration, inherit);text-transform:var(--mdc-typography-body2-text-transform, none)}.ruc-custom-theme .mdc-data-table__header-cell{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-subtitle2-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-subtitle2-font-size, 20px);line-height:var(--mdc-typography-subtitle2-line-height, 24px);font-weight:var(--mdc-typography-subtitle2-font-weight, 500);letter-spacing:var(--mdc-typography-subtitle2-letter-spacing, normal);-webkit-text-decoration:var(--mdc-typography-subtitle2-text-decoration, inherit);text-decoration:var(--mdc-typography-subtitle2-text-decoration, inherit);text-transform:var(--mdc-typography-subtitle2-text-transform, none)}.ruc-custom-theme .mat-badge{position:relative}.ruc-custom-theme .mat-badge.mat-badge{overflow:visible}.ruc-custom-theme .mat-badge-hidden .mat-badge-content{display:none}.ruc-custom-theme .mat-badge-content{position:absolute;text-align:center;display:inline-block;border-radius:50%;transition:transform .2s ease-in-out;transform:scale(.6);overflow:hidden;white-space:nowrap;text-overflow:ellipsis;pointer-events:none}.ruc-custom-theme .ng-animate-disabled .mat-badge-content,.ruc-custom-theme .mat-badge-content._mat-animation-noopable{transition:none}.ruc-custom-theme .mat-badge-content.mat-badge-active{transform:none}.ruc-custom-theme .mat-badge-small .mat-badge-content{width:16px;height:16px;line-height:16px}.ruc-custom-theme .mat-badge-small.mat-badge-above .mat-badge-content{top:-8px}.ruc-custom-theme .mat-badge-small.mat-badge-below .mat-badge-content{bottom:-8px}.ruc-custom-theme .mat-badge-small.mat-badge-before .mat-badge-content{left:-16px}[dir=rtl] .ruc-custom-theme .mat-badge-small.mat-badge-before .mat-badge-content{left:auto;right:-16px}.ruc-custom-theme .mat-badge-small.mat-badge-after .mat-badge-content{right:-16px}[dir=rtl] .ruc-custom-theme .mat-badge-small.mat-badge-after .mat-badge-content{right:auto;left:-16px}.ruc-custom-theme .mat-badge-small.mat-badge-overlap.mat-badge-before .mat-badge-content{left:-8px}[dir=rtl] .ruc-custom-theme .mat-badge-small.mat-badge-overlap.mat-badge-before .mat-badge-content{left:auto;right:-8px}.ruc-custom-theme .mat-badge-small.mat-badge-overlap.mat-badge-after .mat-badge-content{right:-8px}[dir=rtl] .ruc-custom-theme .mat-badge-small.mat-badge-overlap.mat-badge-after .mat-badge-content{right:auto;left:-8px}.ruc-custom-theme .mat-badge-medium .mat-badge-content{width:22px;height:22px;line-height:22px}.ruc-custom-theme .mat-badge-medium.mat-badge-above .mat-badge-content{top:-11px}.ruc-custom-theme .mat-badge-medium.mat-badge-below .mat-badge-content{bottom:-11px}.ruc-custom-theme .mat-badge-medium.mat-badge-before .mat-badge-content{left:-22px}[dir=rtl] .ruc-custom-theme .mat-badge-medium.mat-badge-before .mat-badge-content{left:auto;right:-22px}.ruc-custom-theme .mat-badge-medium.mat-badge-after .mat-badge-content{right:-22px}[dir=rtl] .ruc-custom-theme .mat-badge-medium.mat-badge-after .mat-badge-content{right:auto;left:-22px}.ruc-custom-theme .mat-badge-medium.mat-badge-overlap.mat-badge-before .mat-badge-content{left:-11px}[dir=rtl] .ruc-custom-theme .mat-badge-medium.mat-badge-overlap.mat-badge-before .mat-badge-content{left:auto;right:-11px}.ruc-custom-theme .mat-badge-medium.mat-badge-overlap.mat-badge-after .mat-badge-content{right:-11px}[dir=rtl] .ruc-custom-theme .mat-badge-medium.mat-badge-overlap.mat-badge-after .mat-badge-content{right:auto;left:-11px}.ruc-custom-theme .mat-badge-large .mat-badge-content{width:28px;height:28px;line-height:28px}.ruc-custom-theme .mat-badge-large.mat-badge-above .mat-badge-content{top:-14px}.ruc-custom-theme .mat-badge-large.mat-badge-below .mat-badge-content{bottom:-14px}.ruc-custom-theme .mat-badge-large.mat-badge-before .mat-badge-content{left:-28px}[dir=rtl] .ruc-custom-theme .mat-badge-large.mat-badge-before .mat-badge-content{left:auto;right:-28px}.ruc-custom-theme .mat-badge-large.mat-badge-after .mat-badge-content{right:-28px}[dir=rtl] .ruc-custom-theme .mat-badge-large.mat-badge-after .mat-badge-content{right:auto;left:-28px}.ruc-custom-theme .mat-badge-large.mat-badge-overlap.mat-badge-before .mat-badge-content{left:-14px}[dir=rtl] .ruc-custom-theme .mat-badge-large.mat-badge-overlap.mat-badge-before .mat-badge-content{left:auto;right:-14px}.ruc-custom-theme .mat-badge-large.mat-badge-overlap.mat-badge-after .mat-badge-content{right:-14px}[dir=rtl] .ruc-custom-theme .mat-badge-large.mat-badge-overlap.mat-badge-after .mat-badge-content{right:auto;left:-14px}.ruc-custom-theme .mat-badge-content{font-weight:600;font-size:12px;font-family:Roboto,sans-serif}.ruc-custom-theme .mat-badge-small .mat-badge-content{font-size:9px}.ruc-custom-theme .mat-badge-large .mat-badge-content{font-size:24px}.ruc-custom-theme .mat-bottom-sheet-container{font-size:14px;font-weight:400;line-height:20px;font-family:Roboto,sans-serif;letter-spacing:normal}.ruc-custom-theme .mat-button-toggle-appearance-standard .mat-button-toggle-label-content{line-height:48px}.ruc-custom-theme .mat-button-toggle{font-family:Roboto,sans-serif}.ruc-custom-theme .mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base{width:40px;height:40px;padding:8px}.ruc-custom-theme .mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base .mdc-icon-button__focus-ring{max-height:40px;max-width:40px}.ruc-custom-theme .mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base.mdc-icon-button--reduced-size .mdc-icon-button__ripple{width:40px;height:40px;margin:0}.ruc-custom-theme .mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base.mdc-icon-button--reduced-size .mdc-icon-button__focus-ring{max-height:40px;max-width:40px}.ruc-custom-theme .mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base .mdc-icon-button__touch{position:absolute;top:50%;height:40px;left:50%;width:40px;transform:translate(-50%,-50%)}.ruc-custom-theme .mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base .mat-mdc-button-touch-target{display:none}.ruc-custom-theme .mat-calendar{font-family:Roboto,sans-serif}.ruc-custom-theme .mat-calendar-body{font-size:13px}.ruc-custom-theme .mat-calendar-body-label,.ruc-custom-theme .mat-calendar-period-button{font-size:20px;font-weight:500}.ruc-custom-theme .mat-calendar-table-header th{font-size:11px;font-weight:400}.ruc-custom-theme .mat-expansion-panel-header{height:48px}.ruc-custom-theme .mat-expansion-panel-header.mat-expanded{height:64px}.ruc-custom-theme .mat-expansion-panel-header{font-family:Roboto,sans-serif;font-size:15px;font-weight:400}.ruc-custom-theme .mat-expansion-panel-content{font-size:14px;font-weight:400;line-height:20px;font-family:Roboto,sans-serif;letter-spacing:normal}.ruc-custom-theme .mat-grid-tile-header,.ruc-custom-theme .mat-grid-tile-footer{font-size:14px}.ruc-custom-theme .mat-grid-tile-header .mat-line,.ruc-custom-theme .mat-grid-tile-footer .mat-line{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block;box-sizing:border-box}.ruc-custom-theme .mat-grid-tile-header .mat-line:nth-child(n+2),.ruc-custom-theme .mat-grid-tile-footer .mat-line:nth-child(n+2){font-size:12px}.ruc-custom-theme .mat-horizontal-stepper-header{height:72px}.ruc-custom-theme .mat-stepper-label-position-bottom .mat-horizontal-stepper-header,.ruc-custom-theme .mat-vertical-stepper-header{padding:24px}.ruc-custom-theme .mat-stepper-vertical-line:before{top:-16px;bottom:-16px}.ruc-custom-theme .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:after,.ruc-custom-theme .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:before{top:36px}.ruc-custom-theme .mat-stepper-label-position-bottom .mat-stepper-horizontal-line{top:36px}.ruc-custom-theme .mat-stepper-vertical,.ruc-custom-theme .mat-stepper-horizontal{font-family:Roboto,sans-serif}.ruc-custom-theme .mat-step-label{font-size:14px;font-weight:400}.ruc-custom-theme .mat-step-sub-label-error{font-weight:400}.ruc-custom-theme .mat-step-label-error{font-size:20px}.ruc-custom-theme .mat-step-label-selected{font-size:20px;font-weight:500}.ruc-custom-theme .mat-toolbar-multiple-rows{min-height:64px}.ruc-custom-theme .mat-toolbar-row,.ruc-custom-theme .mat-toolbar-single-row{height:64px}@media (max-width: 599px){.ruc-custom-theme .mat-toolbar-multiple-rows{min-height:56px}.ruc-custom-theme .mat-toolbar-row,.ruc-custom-theme .mat-toolbar-single-row{height:56px}}.ruc-custom-theme .mat-toolbar,.ruc-custom-theme .mat-toolbar h1,.ruc-custom-theme .mat-toolbar h2,.ruc-custom-theme .mat-toolbar h3,.ruc-custom-theme .mat-toolbar h4,.ruc-custom-theme .mat-toolbar h5,.ruc-custom-theme .mat-toolbar h6{font-size:20px;font-weight:500;line-height:32px;font-family:Roboto,sans-serif;letter-spacing:normal;margin:0}.ruc-custom-theme .mat-tree-node{min-height:48px}.ruc-custom-theme .mat-tree{font-family:Roboto,sans-serif}.ruc-custom-theme .mat-tree-node,.ruc-custom-theme .mat-nested-tree-node{font-weight:400;font-size:14px}:host{display:block;font-family:sans-serif}.screen-recorder-controls{display:flex;gap:8px;align-items:center;padding:8px;border-radius:4px;position:relative;z-index:1000}.screen-recorder-controls.position-top-left{margin-top:10px;margin-left:10px;flex-direction:row}.screen-recorder-controls.position-top-right{margin-top:10px;margin-right:10px;flex-direction:row}.screen-recorder-controls.position-bottom-left{margin-bottom:10px;margin-left:10px;flex-direction:row}.screen-recorder-controls.position-bottom-right{margin-bottom:10px;margin-right:10px;flex-direction:row}.screen-recorder-controls.position-left,.screen-recorder-controls.position-right{float:right}.recorder-button{padding:8px 12px;border:1px solid #ccc;border-radius:4px;background-color:#fff;cursor:pointer;display:inline-flex;align-items:center;gap:4px}.recorder-button:hover{background-color:#e9e9e9}.recorder-button:active{background-color:#d0d0d0}.recorder-button.record-button{color:red}.material-icons{font-family:Material Icons;font-weight:400;font-style:normal;font-size:20px;display:inline-block;line-height:1;text-transform:none;letter-spacing:normal;word-wrap:normal;white-space:nowrap;direction:ltr;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale;font-feature-settings:\"liga\"}.recorder-timer{padding:0 8px;font-feature-settings:\"tnum\";font-variant-numeric:tabular-nums}.playback-area{width:100%;max-width:100%;margin-top:1rem;position:relative}.playback-area video{width:100%;height:auto;max-width:100%}.playback-area .video-timer-overlay{position:absolute;top:10px;right:10px;background:rgba(0,0,0,.7);color:#fff;padding:5px 10px;border-radius:4px;font-size:14px;z-index:10}.recorder-error{color:red;padding:8px;border:1px solid red;background-color:#ffe0e0;border-radius:4px;margin-bottom:8px}.recorder-notsupported{padding:10px;background-color:#fff3cd;border:1px solid #ffeeba;color:#856404;border-radius:4px}\n"] }]
234
234
  }], ctorParameters: function () { return [{ type: i1.ScreenRecorderService }, { type: i2.DomSanitizer }, { type: i0.ChangeDetectorRef }, { type: i3.ScreenRecorderConstants }]; }, propDecorators: { customTheme: [{
235
235
  type: Input
236
236
  }], rucInputData: [{
@@ -239,4 +239,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
239
239
  type: ViewChild,
240
240
  args: ['videoPlayer']
241
241
  }] } });
242
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NyZWVuLXJlY29yZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcnVjbGliL3NjcmVlbi1yZWNvcmRlci9zcmMvbGliL3NjcmVlbi1yZWNvcmRlci9zY3JlZW4tcmVjb3JkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9ydWNsaWIvc2NyZWVuLXJlY29yZGVyL3NyYy9saWIvc2NyZWVuLXJlY29yZGVyL3NjcmVlbi1yZWNvcmRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBcUIsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2SSxPQUFPLEVBQUUsWUFBWSxFQUFXLE1BQU0sMkJBQTJCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwQyxPQUFPLEVBRUwsc0JBQXNCLEVBQ3RCLGFBQWEsRUFDYixjQUFjLEdBRWYsTUFBTSxrQ0FBa0MsQ0FBQztBQUMxQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7O0FBVXJFLE1BQU0sT0FBTyx1QkFBdUI7SUFJbEMsSUFDSSxZQUFZLENBQUMsS0FBNEI7UUFDM0MsSUFBSSxDQUFDLFFBQVEsR0FBRztZQUNkLFFBQVEsRUFBRSxzQkFBc0IsQ0FBQyxNQUFNO1lBQ3ZDLGFBQWEsRUFBRSxhQUFhLENBQUMsSUFBSTtZQUNqQyxlQUFlLEVBQUUsSUFBSTtZQUNyQixpQkFBaUIsRUFBRSxJQUFJO1lBQ3ZCLGdCQUFnQixFQUFFLHVCQUF1QjtZQUN6QyxLQUFLLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FBQyx1QkFB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UUFDbEUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUMzQixDQUFDOztxSEEvUFUsdUJBQXVCO3lHQUF2Qix1QkFBdUIsNk9DckJwQyxzOEtBcUdNOzRGRGhGTyx1QkFBdUI7a0JBTm5DLFNBQVM7K0JBQ0UscUJBQXFCLG1CQUdkLHVCQUF1QixDQUFDLE1BQU07Nk1BSS9DLFdBQVc7c0JBRFYsS0FBSztnQkFJRixZQUFZO3NCQURmLEtBQUs7Z0JBZ0NvQixXQUFXO3NCQUFwQyxTQUFTO3VCQUFDLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQsIE9uRGVzdHJveSwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBWaWV3Q2hpbGQsIEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlVXJsIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge1xyXG4gIFNjcmVlblJlY29yZGVyT3B0aW9ucyxcclxuICBTY3JlZW5SZWNvcmRlclBvc2l0aW9uLFxyXG4gIERpc3BsYXlGb3JtYXQsXHJcbiAgUmVjb3JkaW5nU3RhdGUsXHJcbiAgU2NyZWVuUmVjb3JkZXJJY29ucyxcclxufSBmcm9tICcuLi9tb2RlbHMvc2NyZWVuLXJlY29yZGVyLm1vZGVscyc7XHJcbmltcG9ydCB7IFNjcmVlblJlY29yZGVyU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3NjcmVlbi1yZWNvcmRlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU2NyZWVuUmVjb3JkZXJDb25zdGFudHMgfSBmcm9tICcuL3NjcmVlbi1yZWNvcmRlci1jb25zdGFudCc7XHJcblxyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAndXhwLXNjcmVlbi1yZWNvcmRlcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3NjcmVlbi1yZWNvcmRlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vc2NyZWVuLXJlY29yZGVyLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTY3JlZW5SZWNvcmRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBASW5wdXQoKVxyXG4gIGN1c3RvbVRoZW1lOiBhbnk7XHJcbiAgXHJcbiAgQElucHV0KClcclxuICBzZXQgcnVjSW5wdXREYXRhKHZhbHVlOiBTY3JlZW5SZWNvcmRlck9wdGlvbnMpIHtcclxuICAgIHRoaXMuX29wdGlvbnMgPSB7XHJcbiAgICAgIHBvc2l0aW9uOiBTY3JlZW5SZWNvcmRlclBvc2l0aW9uLkJvdHRvbSxcclxuICAgICAgZGlzcGxheUZvcm1hdDogRGlzcGxheUZvcm1hdC5JY29uLFxyXG4gICAgICBzaG93QXVkaW9Ub2dnbGU6IHRydWUsXHJcbiAgICAgIGRlZmF1bHRBdWRpb1N0YXRlOiB0cnVlLFxyXG4gICAgICBkb3dubG9hZEZpbGVOYW1lOiAnc2NyZWVuLXJlY29yZGluZy53ZWJtJyxcclxuICAgICAgaWNvbnM6IHsgLi4udGhpcy5zY3JlZW5SZWNvcmRpbmdDb25zdGFudC5ERUZBVUxUX0lDT05TIH0sXHJcbiAgICAgIHNob3dUaW1lcjogdHJ1ZSxcclxuICAgICAgc2hvd1BhdXNlUmVzdW1lOiB0cnVlLFxyXG4gICAgICBzaG93UGxheWJhY2tDb250cm9sczogdHJ1ZSxcclxuICAgICAgc2hvd0Rvd25sb2FkQnV0dG9uOiB0cnVlLFxyXG4gICAgICB1c2VVVENGb3JUaW1lcjogZmFsc2UsXHJcbiAgICAgIGFsbG93U3BlY2lmaWNBcmVhU2VsZWN0aW9uOiB0cnVlLCAvLyBEZWZhdWx0IHRvIGFsbG93aW5nIGJyb3dzZXIncyBuYXRpdmUgcGlja2VyXHJcbiAgICAgIGFjY2Vzc2liaWxpdHlMYWJlbHM6IHsgLi4udGhpcy5zY3JlZW5SZWNvcmRpbmdDb25zdGFudC5ERUZBVUxUX0xBQkVMUyB9LFxyXG4gICAgICAuLi52YWx1ZSxcclxuICAgIH07XHJcbiAgICAvLyBEZWVwIG1lcmdlIGljb25zIGFuZCBsYWJlbHNcclxuICAgIGlmICh2YWx1ZS5pY29ucykge1xyXG4gICAgICB0aGlzLl9vcHRpb25zLmljb25zID0geyAuLi50aGlzLnNjcmVlblJlY29yZGluZ0NvbnN0YW50LkRFRkFVTFRfSUNPTlMsIC4uLnZhbHVlLmljb25zIH07XHJcbiAgICB9XHJcbiAgICBpZiAodmFsdWUuYWNjZXNzaWJpbGl0eUxhYmVscykge1xyXG4gICAgICB0aGlzLl9vcHRpb25zLmFjY2Vzc2liaWxpdHlMYWJlbHMgPSB7IC4uLnRoaXMuc2NyZWVuUmVjb3JkaW5nQ29uc3RhbnQuREVGQVVMVF9MQUJFTFMsIC4uLnZhbHVlLmFjY2Vzc2liaWxpdHlMYWJlbHMgfTtcclxuICAgIH1cclxuICAgIHRoaXMuaXNBdWRpb0VuYWJsZWQgPSB0aGlzLl9vcHRpb25zLmRlZmF1bHRBdWRpb1N0YXRlID8/IHRydWU7XHJcbiAgfVxyXG4gIGdldCBydWNJbnB1dERhdGEoKTogU2NyZWVuUmVjb3JkZXJPcHRpb25zIHtcclxuICAgIHJldHVybiB0aGlzLl9vcHRpb25zO1xyXG4gIH1cclxuICBwcml2YXRlIF9vcHRpb25zITogU2NyZWVuUmVjb3JkZXJPcHRpb25zO1xyXG5cclxuICBAVmlld0NoaWxkKCd2aWRlb1BsYXllcicpIHZpZGVvUGxheWVyITogRWxlbWVudFJlZjxIVE1MVmlkZW9FbGVtZW50PjtcclxuXHJcbiAgcmVjb3JkaW5nU3RhdGU6IFJlY29yZGluZ1N0YXRlID0gUmVjb3JkaW5nU3RhdGUuSWRsZTtcclxuICByZWNvcmRlZFRpbWU6IG51bWJlciA9IDA7XHJcbiAgZm9ybWF0dGVkVGltZTogc3RyaW5nID0gJzAwOjAwOjAwJztcclxuICBzYWZlUmVjb3JkZWRVcmw6IFNhZmVVcmwgfCBudWxsID0gbnVsbDtcclxuICByZWNvcmRpbmdUaW1lc3RhbXA6IHN0cmluZyA9ICcnO1xyXG4gIC8qKlxyXG4gICAqIENoZWNrcyBpZiByZWNvcmRpbmcgaXMgY3VycmVudGx5IGluIHByb2dyZXNzXHJcbiAgICogXHJcbiAgICogQHJldHVybnMgYm9vbGVhbiAtIFRydWUgaWYgcmVjb3JkaW5nIGlzIGluIHByb2dyZXNzLCBmYWxzZSBvdGhlcndpc2VcclxuICAgKi9cclxuICBpc1JlY29yZGluZ0luUHJvZ3Jlc3MoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5yZWNvcmRpbmdTdGF0ZSA9PT0gUmVjb3JkaW5nU3RhdGUuUmVjb3JkaW5nO1xyXG4gIH1cclxuICBlcnJvck1lc3NhZ2U6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG4gIGlzQnJvd3NlclN1cHBvcnRlZDogYm9vbGVhbiA9IHRydWU7XHJcbiAgaXNBdWRpb0VuYWJsZWQ6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICAvKipcclxuICAgKiBHZXRzIHRoZSBhcHByb3ByaWF0ZSBpY29uIGZvciByZWNvcmRpbmcgYmFzZWQgb24gYXVkaW8gc3RhdGUgYW5kIHNldHRpbmdzXHJcbiAgICogQHJldHVybnMgc3RyaW5nIC0gVGhlIGljb24gbmFtZSB0byBkaXNwbGF5XHJcbiAgICovXHJcbiAgZ2V0UmVjb3JkaW5nSWNvbigpOiBzdHJpbmcge1xyXG4gICAgaWYgKHRoaXMuaXNBdWRpb0VuYWJsZWQgJiYgdGhpcy5ydWNJbnB1dERhdGEuc2hvd0F1ZGlvVG9nZ2xlKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmdldEljb24oJ3JlY29yZFdpdGhBdWRpbycpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuZ2V0SWNvbigncmVjb3JkJyk7XHJcbiAgfVxyXG5cclxuICAvLyBFeHBvc2UgZW51bXMgdG8gdGVtcGxhdGVcclxuICBEaXNwbGF5Rm9ybWF0ID0gRGlzcGxheUZvcm1hdDtcclxuICBSZWNvcmRpbmdTdGF0ZSA9IFJlY29yZGluZ1N0YXRlO1xyXG4gIFNjcmVlblJlY29yZGVyUG9zaXRpb24gPSBTY3JlZW5SZWNvcmRlclBvc2l0aW9uO1xyXG5cclxuICBwcml2YXRlIHN1YnNjcmlwdGlvbnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIHNjcmVlblJlY29yZGVyU2VydmljZTogU2NyZWVuUmVjb3JkZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBzYW5pdGl6ZXI6IERvbVNhbml0aXplcixcclxuICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHB1YmxpYyBzY3JlZW5SZWNvcmRpbmdDb25zdGFudDogU2NyZWVuUmVjb3JkZXJDb25zdGFudHNcclxuICApIHtcclxuXHJcbiAgICAvLyBJbml0aWFsaXplIHdpdGggZGVmYXVsdCBvcHRpb25zLiBUaGUgc2V0dGVyIHdpbGwgb3ZlcnJpZGUgaWYgYW4gaW5wdXQgaXMgcHJvdmlkZWQuXHJcbiAgICBpZiAoIXRoaXMuX29wdGlvbnMpIHtcclxuICAgICAgICB0aGlzLnJ1Y0lucHV0RGF0YSA9IHt9OyAvLyBUcmlnZ2VyIHNldHRlciB3aXRoIGVtcHR5IG9iamVjdCB0byBhcHBseSBkZWZhdWx0c1xyXG4gICAgfVxyXG4gIH0gICBcclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKFxyXG4gICAgICB0aGlzLnNjcmVlblJlY29yZGVyU2VydmljZS5yZWNvcmRpbmdTdGF0ZSQuc3Vic2NyaWJlKChzdGF0ZSkgPT4ge1xyXG4gICAgICAgIHRoaXMucmVjb3JkaW5nU3RhdGUgPSBzdGF0ZTtcclxuICAgICAgICBpZiAoc3RhdGUgPT09IFJlY29yZGluZ1N0YXRlLklkbGUgfHwgc3RhdGUgPT09IFJlY29yZGluZ1N0YXRlLlN0b3BwZWQpIHtcclxuICAgICAgICAgICAgLy8gRW5zdXJlIGF1ZGlvIHRvZ2dsZSBpcyByZXNldCB0byBkZWZhdWx0IGlmIG5lZWRlZCwgb3IgYmFzZWQgb24gdXNlciBhY3Rpb25cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuXHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKFxyXG4gICAgICB0aGlzLnNjcmVlblJlY29yZGVyU2VydmljZS5yZWNvcmRpbmdUaW1lc3RhbXAkLnN1YnNjcmliZSgodGltZXN0YW1wKSA9PiB7XHJcbiAgICAgICAgdGhpcy5yZWNvcmRpbmdUaW1lc3RhbXAgPSB0aW1lc3RhbXA7XHJcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuXHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKFxyXG4gICAgICB0aGlzLnNjcmVlblJlY29yZGVyU2VydmljZS5yZWNvcmRlZFRpbWUkLnN1YnNjcmliZSgodGltZSkgPT4ge1xyXG4gICAgICAgIHRoaXMucmVjb3JkZWRUaW1lID0gdGltZTtcclxuICAgICAgICB0aGlzLmZvcm1hdHRlZFRpbWUgPSB0aGlzLmZvcm1hdFRpbWVEaXNwbGF5KHRpbWUpO1xyXG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfSlcclxuICAgICk7XHJcblxyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChcclxuICAgICAgdGhpcy5zY3JlZW5SZWNvcmRlclNlcnZpY2UucmVjb3JkZWRVcmwkLnN1YnNjcmliZSgodXJsKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zYWZlUmVjb3JkZWRVcmwgPSB1cmwgPyB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0VXJsKHVybCkgOiBudWxsO1xyXG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfSlcclxuICAgICk7XHJcblxyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChcclxuICAgICAgdGhpcy5zY3JlZW5SZWNvcmRlclNlcnZpY2UuZXJyb3IkLnN1YnNjcmliZSgoZXJyb3IpID0+IHtcclxuICAgICAgICBpZihlcnJvciAhPSB0aGlzLnNjcmVlblJlY29yZGluZ0NvbnN0YW50LlBFUk1JU1NJT05fREVOSUVEKXtcclxuICAgICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gZXJyb3I7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIGlmICh0aGlzLnN1YnNjcmlwdGlvbnMpIHtcclxuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUb2dnbGVzIHRoZSByZWNvcmRpbmcgc3RhdGUgYmV0d2VlbiBzdGFydCBhbmQgc3RvcFxyXG4gICAqIFxyXG4gICAqIEByZXR1cm5zIFByb21pc2U8dm9pZD5cclxuICAgKi9cclxuICBhc3luYyB0b2dnbGVSZWNvcmQoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICB0aGlzLmVycm9yTWVzc2FnZSA9IG51bGw7IC8vIENsZWFyIHByZXZpb3VzIGVycm9yc1xyXG4gICAgaWYgKHRoaXMucmVjb3JkaW5nU3RhdGUgPT09IFJlY29yZGluZ1N0YXRlLklkbGUgfHwgdGhpcy5yZWNvcmRpbmdTdGF0ZSA9PT0gUmVjb3JkaW5nU3RhdGUuU3RvcHBlZCkge1xyXG4gICAgICAvLyBTZXQgcmVjb3JkaW5nIHRpbWVzdGFtcCB3aGVuIHN0YXJ0aW5nIHJlY29yZGluZ1xyXG4gICAgICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xyXG4gICAgICB0aGlzLnJlY29yZGluZ1RpbWVzdGFtcCA9IG5vdy50b0xvY2FsZVN0cmluZygnZW4tSU4nLCB7XHJcbiAgICAgICAgeWVhcjogJ251bWVyaWMnLFxyXG4gICAgICAgIG1vbnRoOiAnMi1kaWdpdCcsXHJcbiAgICAgICAgZGF5OiAnMi1kaWdpdCcsXHJcbiAgICAgICAgaG91cjogJzItZGlnaXQnLFxyXG4gICAgICAgIG1pbnV0ZTogJzItZGlnaXQnLFxyXG4gICAgICAgIGhvdXIxMjogdHJ1ZVxyXG4gICAgICB9KTtcclxuICAgICAgYXdhaXQgdGhpcy5zY3JlZW5SZWNvcmRlclNlcnZpY2Uuc3RhcnRSZWNvcmRpbmcoeyBhdWRpbzogdGhpcy5pc0F1ZGlvRW5hYmxlZCB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2NyZWVuUmVjb3JkZXJTZXJ2aWNlLnN0b3BSZWNvcmRpbmcoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFRvZ2dsZXMgYmV0d2VlbiBwYXVzZSBhbmQgcmVzdW1lIHN0YXRlcyBkdXJpbmcgcmVjb3JkaW5nXHJcbiAgICogXHJcbiAgICogQHJldHVybnMgdm9pZFxyXG4gICAqL1xyXG4gIHRvZ2dsZVBhdXNlUmVzdW1lKCk6IHZvaWQge1xyXG4gICAgdGhpcy5lcnJvck1lc3NhZ2UgPSBudWxsO1xyXG4gICAgaWYgKHRoaXMucmVjb3JkaW5nU3RhdGUgPT09IFJlY29yZGluZ1N0YXRlLlJlY29yZGluZykge1xyXG4gICAgICB0aGlzLnNjcmVlblJlY29yZGVyU2VydmljZS5wYXVzZVJlY29yZGluZygpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLnJlY29yZGluZ1N0YXRlID09PSBSZWNvcmRpbmdTdGF0ZS5QYXVzZWQpIHtcclxuICAgICAgdGhpcy5zY3JlZW5SZWNvcmRlclNlcnZpY2UucmVzdW1lUmVjb3JkaW5nKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDaGVja3MgaWYgcmVjb3JkaW5nIGNhbiBiZSByZXN1bWVkXHJcbiAgICogXHJcbiAgICogQHJldHVybnMgYm9vbGVhbiAtIFRydWUgaWYgcmVjb3JkaW5nIGNhbiBiZSByZXN1bWVkLCBmYWxzZSBvdGhlcndpc2VcclxuICAgKi9cclxuICBjYW5SZXN1bWUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5yZWNvcmRpbmdTdGF0ZSA9PT0gUmVjb3JkaW5nU3RhdGUuUGF1c2VkO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRG93bmxvYWRzIHRoZSByZWNvcmRlZCB2aWRlbyBmaWxlXHJcbiAgICogXHJcbiAgICogQHJldHVybnMgdm9pZFxyXG4gICAqL1xyXG4gIG9uRG93bmxvYWQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmVycm9yTWVzc2FnZSA9IG51bGw7XHJcbiAgICB0aGlzLnNjcmVlblJlY29yZGVyU2VydmljZS5kb3dubG9hZFJlY29yZGluZyh0aGlzLnJ1Y0lucHV0RGF0YS5kb3dubG9hZEZpbGVOYW1lKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENoZWNrcyBpZiByZWNvcmRpbmcgY2FuIGJlIGRvd25sb2FkZWRcclxuICAgKiBcclxuICAgKiBAcmV0dXJucyBib29sZWFuIC0gVHJ1ZSBpZiByZWNvcmRpbmcgY2FuIGJlIGRvd25sb2FkZWQsIGZhbHNlIG90aGVyd2lzZVxyXG4gICAqL1xyXG4gIGNhbkRvd25sb2FkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMucmVjb3JkaW5nU3RhdGUgPT09IFJlY29yZGluZ1N0YXRlLlN0b3BwZWQ7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUb2dnbGVzIGF1ZGlvIHJlY29yZGluZyBvbi9vZmZcclxuICAgKiBcclxuICAgKiBAcmV0dXJucyB2b2lkXHJcbiAgICovXHJcbiAgdG9nZ2xlQXVkaW8oKTogdm9pZCB7XHJcbiAgICB0aGlzLmlzQXVkaW9FbmFibGVkID0gIXRoaXMuaXNBdWRpb0VuYWJsZWQ7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBcclxuICAgKiBAcGFyYW0gaWNvbk5hbWUgXHJcbiAgICogQHJldHVybnMgXHJcbiAgICovXHJcbiAgZ2V0SWNvbihpY29uTmFtZToga2V5b2YgU2NyZWVuUmVjb3JkZXJJY29ucyk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5ydWNJbnB1dERhdGEuaWNvbnM/LltpY29uTmFtZV0gfHwgKHRoaXMuc2NyZWVuUmVjb3JkaW5nQ29uc3RhbnQuREVGQVVMVF9JQ09OUyBhcyBhbnkpW2ljb25OYW1lXTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSBsYWJlbE5hbWUgXHJcbiAgICogQHJldHVybnMgXHJcbiAgICovXHJcbiAgZ2V0TGFiZWwobGFiZWxOYW1lOiBrZXlvZiBOb25OdWxsYWJsZTxTY3JlZW5SZWNvcmRlck9wdGlvbnNbJ2FjY2Vzc2liaWxpdHlMYWJlbHMnXT4pOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMucnVjSW5wdXREYXRhLmFjY2Vzc2liaWxpdHlMYWJlbHM/LltsYWJlbE5hbWVdIHx8ICh0aGlzLnNjcmVlblJlY29yZGluZ0NvbnN0YW50LkRFRkFVTFRfTEFCRUxTIGFzIGFueSlbbGFiZWxOYW1lXTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSB0aW1lIC0gVGhlIHRpbWUgaW4gc2Vjb25kcyB0byBmb3JtYXRcclxuICAgKiBAcmV0dXJucyBzdHJpbmcgLSBGb3JtYXR0ZWQgdGltZSBzdHJpbmcgKEhIOk1NOlNTKVxyXG4gICAqL1xyXG4gIGZvcm1hdFRpbWVEaXNwbGF5KHRpbWU6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICBjb25zdCBob3VycyA9IE1hdGguZmxvb3IodGltZSAvIDM2MDApO1xyXG4gICAgY29uc3QgbWludXRlcyA9IE1hdGguZmxvb3IoKHRpbWUgJSAzNjAwKSAvIDYwKTtcclxuICAgIGNvbnN0IHNlY29uZHMgPSB0aW1lICUgNjA7XHJcblxyXG4gICAgY29uc3QgcGFkID0gKG51bTogbnVtYmVyKSA9PiBudW0udG9TdHJpbmcoKS5wYWRTdGFydCgyLCAnMCcpO1xyXG5cclxuICAgIGlmICh0aGlzLnJ1Y0lucHV0RGF0YSAmJiB0aGlzLnJ1Y0lucHV0RGF0YS51c2VVVENGb3JUaW1lcikge1xyXG4gICAgICAgIC8vIFRoaXMgaXMgYSBzaW1wbGUgZHVyYXRpb24gZm9ybWF0LCBub3QgYSBzcGVjaWZpYyBVVEMgdGltZS5cclxuICAgICAgICAvLyBGb3IgYWN0dWFsIFVUQyB0aW1lIG9mIGRheSwgeW91J2QgdXNlIG5ldyBEYXRlKCkudG9VVENTdHJpbmcoKSBvciBzaW1pbGFyLlxyXG4gICAgICAgIC8vIEFzc3VtaW5nIHRpbWVyIHNob3VsZCBzaG93IGVsYXBzZWQgdGltZSBmb3JtYXR0ZWQgYXMgSEg6TU06U1MuXHJcbiAgICAgICAgcmV0dXJuIGAke3BhZChob3Vycyl9OiR7cGFkKG1pbnV0ZXMpfToke3BhZChzZWNvbmRzKX1gO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGAke3BhZChob3Vycyl9OiR7cGFkKG1pbnV0ZXMpfToke3BhZChzZWNvbmRzKX1gO1xyXG4gIH1cclxuXHJcbiAgLy8gTWV0aG9kIHRvIHJlc2V0IHRoZSBjb21wb25lbnQgYW5kIHNlcnZpY2UgdG8gaW5pdGlhbCBzdGF0ZVxyXG4gIHJlc2V0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zY3JlZW5SZWNvcmRlclNlcnZpY2UucmVzZXRUb0lkbGUoKTtcclxuICAgIHRoaXMuaXNBdWRpb0VuYWJsZWQgPSB0aGlzLnJ1Y0lucHV0RGF0YS5kZWZhdWx0QXVkaW9TdGF0ZSA/PyB0cnVlO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxufVxyXG5cclxuIiwiPGRpdiBjbGFzcz1cInNjcmVlbi1yZWNvcmRlci1jb250cm9sc1wiIFtuZ0NsYXNzXT1cImN1c3RvbVRoZW1lICsgJyBwb3NpdGlvbi0nICsgKHJ1Y0lucHV0RGF0YS5wb3NpdGlvbiB8fCBTY3JlZW5SZWNvcmRlclBvc2l0aW9uLkJvdHRvbSlcIlxyXG4gICpuZ0lmPVwiaXNCcm93c2VyU3VwcG9ydGVkXCI+XHJcblxyXG4gIDwhLS0gRXJyb3IgTWVzc2FnZSAtLT5cclxuICA8ZGl2ICpuZ0lmPVwiZXJyb3JNZXNzYWdlXCIgY2xhc3M9XCJyZWNvcmRlci1lcnJvclwiPlxyXG4gICAge3sgZXJyb3JNZXNzYWdlIH19XHJcbiAgPC9kaXY+XHJcblxyXG4gIDwhLS0gUmVjb3JkL1N0b3AgQnV0dG9uIC0tPlxyXG4gIDxidXR0b25cclxuICAgICpuZ0lmPVwicmVjb3JkaW5nU3RhdGUgPT09IFJlY29yZGluZ1N0YXRlLklkbGUgfHwgcmVjb3JkaW5nU3RhdGUgPT09IFJlY29yZGluZ1N0YXRlLlN0b3BwZWRcIiAoY2xpY2spPVwidG9nZ2xlUmVjb3JkKClcIlxyXG4gICAgW2F0dHIuYXJpYS1sYWJlbF09XCJnZXRMYWJlbCgncmVjb3JkQnV0dG9uJylcIiBbYXR0ci5hcmlhLXByZXNzZWRdPVwiZmFsc2VcIiBjbGFzcz1cInJlY29yZGVyLWJ1dHRvbiByZWNvcmQtYnV0dG9uXCI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicnVjSW5wdXREYXRhLmRpc3BsYXlGb3JtYXQgPT09IERpc3BsYXlGb3JtYXQuSWNvblwiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLWljb25zXCI+e3sgZ2V0UmVjb3JkaW5nSWNvbigpIHx8IGdldEljb24oJ3JlY29yZCcpIH19PC9zcGFuPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicnVjSW5wdXREYXRhLmRpc3BsYXlGb3JtYXQgPT09IERpc3BsYXlGb3JtYXQuVGV4dFwiPnt7IGdldExhYmVsKCdyZWNvcmRCdXR0b24nKVxyXG4gICAgICB9fTwvbmctY29udGFpbmVyPlxyXG4gIDwvYnV0dG9uPlxyXG5cclxuICA8YnV0dG9uXHJcbiAgICAqbmdJZj1cInJlY29yZGluZ1N0YXRlID09PSBSZWNvcmRpbmdTdGF0ZS5SZWNvcmRpbmcgfHwgcmVjb3JkaW5nU3RhdGUgPT09IFJlY29yZGluZ1N0YXRlLlBhdXNlZFwiXHJcbiAgICAoY2xpY2spPVwidG9nZ2xlUmVjb3JkKClcIiBbYXR0ci5hcmlhLWxhYmVsXT1cImdldExhYmVsKCdzdG9wQnV0dG9uJylcIiBbYXR0ci5hcmlhLXByZXNzZWRdPVwidHJ1ZVwiXHJcbiAgICBjbGFzcz1cInJlY29yZGVyLWJ1dHRvbiBzdG9wLWJ1dHRvblwiPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInJ1Y0lucHV0RGF0YS5kaXNwbGF5Rm9ybWF0ID09PSBEaXNwbGF5Rm9ybWF0Lkljb25cIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1pY29uc1wiPnt7IGdldEljb24oJ3N0b3AnKSB9fTwvc3Bhbj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInJ1Y0lucHV0RGF0YS5kaXNwbGF5Rm9ybWF0ID09PSBEaXNwbGF5Rm9ybWF0LlRleHRcIj57eyBnZXRMYWJlbCgnc3RvcEJ1dHRvbicpIH19PC9uZy1jb250YWluZXI+XHJcbiAgPC9idXR0b24+XHJcblxyXG4gIDwhLS0gUGF1c2UvUmVzdW1lIEJ1dHRvbiAtLT5cclxuICA8YnV0dG9uICpuZ0lmPVwicnVjSW5wdXREYXRhLnNob3dQYXVzZVJlc3VtZSAmJiByZWNvcmRpbmdTdGF0ZSA9PT0gUmVjb3JkaW5nU3RhdGUuUmVjb3JkaW5nXCJcclxuICAgIChjbGljayk9XCJ0b2dnbGVQYXVzZVJlc3VtZSgpXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJnZXRMYWJlbCgncGF1c2VCdXR0b24nKVwiIFthdHRyLmFyaWEtcHJlc3NlZF09XCJmYWxzZVwiXHJcbiAgICBjbGFzcz1cInJlY29yZGVyLWJ1dHRvbiBwYXVzZS1idXR0b25cIj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJydWNJbnB1dERhdGEuZGlzcGxheUZvcm1hdCA9PT0gRGlzcGxheUZvcm1hdC5JY29uXCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnNcIj57eyBnZXRJY29uKCdwYXVzZScpIH19PC9zcGFuPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicnVjSW5wdXREYXRhLmRpc3BsYXlGb3JtYXQgPT09IERpc3BsYXlGb3JtYXQuVGV4dFwiPnt7IGdldExhYmVsKCdwYXVzZUJ1dHRvbicpIH19PC9uZy1jb250YWluZXI+XHJcbiAgPC9idXR0b24+XHJcbiAgPGJ1dHRvbiAqbmdJZj1cInJ1Y0lucHV0RGF0YS5zaG93UGF1c2VSZXN1bWUgJiYgcmVjb3JkaW5nU3RhdGUgPT09IFJlY29yZGluZ1N0YXRlLlBhdXNlZFwiXHJcbiAgICAoY2xpY2spPVwidG9nZ2xlUGF1c2VSZXN1bWUoKVwiIFthdHRyLmFyaWEtbGFiZWxdPVwiZ2V0TGFiZWwoJ3Jlc3VtZUJ1dHRvbicpXCIgW2F0dHIuYXJpYS1wcmVzc2VkXT1cInRydWVcIlxyXG4gICAgY2xhc3M9XCJyZWNvcmRlci1idXR0b24gcmVzdW1lLWJ1dHRvblwiPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInJ1Y0lucHV0RGF0YS5kaXNwbGF5Rm9ybWF0ID09PSBEaXNwbGF5Rm9ybWF0Lkljb25cIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1pY29uc1wiPnt7IGdldEljb24oJ3Jlc3VtZScpIH19PC9zcGFuPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicnVjSW5wdXREYXRhLmRpc3BsYXlGb3JtYXQgPT09IERpc3BsYXlGb3JtYXQuVGV4dFwiPnt7IGdldExhYmVsKCdyZXN1bWVCdXR0b24nKVxyXG4gICAgICB9fTwvbmctY29udGFpbmVyPlxyXG4gIDwvYnV0dG9uPlxyXG5cclxuICA8IS0tIEF1ZGlvIFRvZ2dsZSBCdXR0b24gLS0+XHJcbiAgPGJ1dHRvblxyXG4gICAgKm5nSWY9XCJydWNJbnB1dERhdGEuc2hvd0F1ZGlvVG9nZ2xlICYmIChyZWNvcmRpbmdTdGF0ZSA9PT0gUmVjb3JkaW5nU3RhdGUuSWRsZSB8fCByZWNvcmRpbmdTdGF0ZSA9PT0gUmVjb3JkaW5nU3RhdGUuU3RvcHBlZClcIlxyXG4gICAgKGNsaWNrKT1cInRvZ2dsZUF1ZGlvKClcIiBbYXR0ci5hcmlhLWxhYmVsXT1cImdldExhYmVsKCdhdWRpb1RvZ2dsZUJ1dHRvbicpXCIgW2F0dHIuYXJpYS1wcmVzc2VkXT1cImlzQXVkaW9FbmFibGVkXCJcclxuICAgIGNsYXNzPVwicmVjb3JkZXItYnV0dG9uIGF1ZGlvLXRvZ2dsZS1idXR0b25cIj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJydWNJbnB1dERhdGEuZGlzcGxheUZvcm1hdCA9PT0gRGlzcGxheUZvcm1hdC5JY29uXCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnNcIj57eyBpc0F1ZGlvRW5hYmxlZCA/IGdldEljb24oJ2F1ZGlvT24nKSA6IGdldEljb24oJ2F1ZGlvT2ZmJykgfX08L3NwYW4+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJydWNJbnB1dERhdGEuZGlzcGxheUZvcm1hdCA9PT0gRGlzcGxheUZvcm1hdC5UZXh0XCI+XHJcbiAgICAgIHt7IGlzQXVkaW9FbmFibGVkID8gc2NyZWVuUmVjb3JkaW5nQ29uc3RhbnQuQVVESU9fT04gOiBzY3JlZW5SZWNvcmRpbmdDb25zdGFudC5BVURJT19PRkYgfX1cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gIDwvYnV0dG9uPlxyXG5cclxuICA8IS0tIFRpbWVyIC0tPlxyXG4gIDxkaXZcclxuICAgICpuZ0lmPVwicnVjSW5wdXREYXRhLnNob3dUaW1lciAmJiAocmVjb3JkaW5nU3RhdGUgPT09IFJlY29yZGluZ1N0YXRlLlJlY29yZGluZyB8fCByZWNvcmRpbmdTdGF0ZSA9PT0gUmVjb3JkaW5nU3RhdGUuUGF1c2VkKVwiXHJcbiAgICBjbGFzcz1cInJlY29yZGVyLXRpbWVyXCIgYXJpYS1saXZlPVwicG9saXRlXCIgYXJpYS1hdG9taWM9XCJ0cnVlXCI+XHJcbiAgICB7eyBmb3JtYXR0ZWRUaW1lIH19XHJcbiAgPC9kaXY+XHJcblxyXG4gIDwhLS0gRG93bmxvYWQgQnV0dG9uIC0tPlxyXG4gIDxidXR0b25cclxuICAgICpuZ0lmPVwicnVjSW5wdXREYXRhLnNob3dEb3dubG9hZEJ1dHRvbiAmJiByZWNvcmRpbmdTdGF0ZSA9PT0gUmVjb3JkaW5nU3RhdGUuU3RvcHBlZCAmJiBzYWZlUmVjb3JkZWRVcmxcIlxyXG4gICAgKGNsaWNrKT1cIm9uRG93bmxvYWQoKVwiIFthdHRyLmFyaWEtbGFiZWxdPVwiZ2V0TGFiZWwoJ2Rvd25sb2FkQnV0dG9uJylcIiBjbGFzcz1cInJlY29yZGVyLWJ1dHRvbiBkb3dubG9hZC1idXR0b25cIj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJydWNJbnB1dERhdGEuZGlzcGxheUZvcm1hdCA9PT0gRGlzcGxheUZvcm1hdC5JY29uXCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnNcIj57eyBnZXRJY29uKCdkb3dubG9hZCcpIH19PC9zcGFuPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicnVjSW5wdXREYXRhLmRpc3BsYXlGb3JtYXQgPT09IERpc3BsYXlGb3JtYXQuVGV4dFwiPnt7IGdldExhYmVsKCdkb3dubG9hZEJ1dHRvbicpXHJcbiAgICAgIH19PC9uZy1jb250YWluZXI+XHJcbiAgPC9idXR0b24+XHJcblxyXG4gIDwhLS0gUGxheWJhY2sgQXJlYSAtLT5cclxuICA8ZGl2ICpuZ0lmPVwicnVjSW5wdXREYXRhLnNob3dQbGF5YmFja0NvbnRyb2xzICYmIHJlY29yZGluZ1N0YXRlID09PSBSZWNvcmRpbmdTdGF0ZS5TdG9wcGVkICYmIHNhZmVSZWNvcmRlZFVybFwiXHJcbiAgICBjbGFzcz1cInBsYXliYWNrLWFyZWFcIj5cclxuICAgIDx2aWRlbyAjdmlkZW9QbGF5ZXIgW3NyY109XCJzYWZlUmVjb3JkZWRVcmxcIiBjb250cm9scyBbYXR0ci5hcmlhLWxhYmVsXT1cImdldExhYmVsKCdwbGF5YmFja1ZpZGVvJylcIj48L3ZpZGVvPlxyXG4gICAgPGRpdiBjbGFzcz1cInZpZGVvLXRpbWVyLW92ZXJsYXlcIj5cclxuICAgICAgPHNwYW4+UmVjb3JkZWQgb246IHt7IHJlY29yZGluZ1RpbWVzdGFtcCB9fTwvc3Bhbj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuICA8IS0tIFJlc2V0IEJ1dHRvbiAob3B0aW9uYWwsIGdvb2QgZm9yIHRlc3RpbmcvY2xlYXJpbmcgc3RhdGUpIC0tPlxyXG4gIDxidXR0b24gKm5nSWY9XCJyZWNvcmRpbmdTdGF0ZSA9PT0gUmVjb3JkaW5nU3RhdGUuU3RvcHBlZCAmJiBzYWZlUmVjb3JkZWRVcmxcIiAoY2xpY2spPVwicmVzZXQoKVwiXHJcbiAgICBhcmlhLWxhYmVsPVwiTmV3IFJlY29yZGluZ1wiIGNsYXNzPVwicmVjb3JkZXItYnV0dG9uIHJlc2V0LWJ1dHRvblwiPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInJ1Y0lucHV0RGF0YS5kaXNwbGF5Rm9ybWF0ID09PSBEaXNwbGF5Rm9ybWF0Lkljb25cIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1pY29uc1wiPnJlZnJlc2g8L3NwYW4+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJydWNJbnB1dERhdGEuZGlzcGxheUZvcm1hdCA9PT0gRGlzcGxheUZvcm1hdC5UZXh0XCI+TmV3PC9uZy1jb250YWluZXI+XHJcbiAgPC9idXR0b24+XHJcblxyXG48L2Rpdj5cclxuXHJcbjxkaXYgKm5nSWY9XCIhaXNCcm93c2VyU3VwcG9ydGVkXCIgY2xhc3M9XCJyZWNvcmRlci1ub3RzdXBwb3J0ZWRcIiBbbmdDbGFzc109XCJjdXN0b21UaGVtZVwiPlxyXG4gIHt7c2NyZWVuUmVjb3JkaW5nQ29uc3RhbnQuTk9fU1VQUE9SVH19XHJcbjwvZGl2PiJdfQ==
242
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NyZWVuLXJlY29yZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvc2NyZWVuLXJlY29yZGVyL3NjcmVlbi1yZWNvcmRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvbGliL3NjcmVlbi1yZWNvcmRlci9zY3JlZW4tcmVjb3JkZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXFCLHVCQUF1QixFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkksT0FBTyxFQUFFLFlBQVksRUFBVyxNQUFNLDJCQUEyQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUVMLHNCQUFzQixFQUN0QixhQUFhLEVBQ2IsY0FBYyxHQUVmLE1BQU0sa0NBQWtDLENBQUM7QUFDMUMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDNUUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNEJBQTRCLENBQUM7Ozs7OztBQVVyRSxNQUFNLE9BQU8sdUJBQXVCO0lBSWxDLElBQ0ksWUFBWSxDQUFDLEtBQTRCO1FBQzNDLElBQUksQ0FBQyxRQUFRLEdBQUc7WUFDZCxRQUFRLEVBQUUsc0JBQXNCLENBQUMsTUFBTTtZQUN2QyxhQUFhLEVBQUUsYUFBYSxDQUFDLElBQUk7WUFDakMsZUFBZSxFQUFFLElBQUk7WUFDckIsaUJBQWlCLEVBQUUsSUFBSTtZQUN2QixnQkFBZ0IsRUFBRSx1QkFBdUI7WUFDekMsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUMsdUJBQXVCLENBQUMsYUFBYSxFQUFFO1lBQ3hELFNBQVMsRUFBRSxJQUFJO1lBQ2YsZUFBZSxFQUFFLElBQUk7WUFDckIsb0JBQW9CLEVB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dUJBQXVCLG9QQ3JCcEMseXFMQXdHTTs0RkRuRk8sdUJBQXVCO2tCQU5uQyxTQUFTOytCQUNFLDRCQUE0QixtQkFHckIsdUJBQXVCLENBQUMsTUFBTTs2TUFJL0MsV0FBVztzQkFEVixLQUFLO2dCQUlGLFlBQVk7c0JBRGYsS0FBSztnQkFnQ29CLFdBQVc7c0JBQXBDLFNBQVM7dUJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCwgT25EZXN0cm95LCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIFZpZXdDaGlsZCwgRWxlbWVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIsIFNhZmVVcmwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7XHJcbiAgU2NyZWVuUmVjb3JkZXJPcHRpb25zLFxyXG4gIFNjcmVlblJlY29yZGVyUG9zaXRpb24sXHJcbiAgRGlzcGxheUZvcm1hdCxcclxuICBSZWNvcmRpbmdTdGF0ZSxcclxuICBTY3JlZW5SZWNvcmRlckljb25zLFxyXG59IGZyb20gJy4uL21vZGVscy9zY3JlZW4tcmVjb3JkZXIubW9kZWxzJztcclxuaW1wb3J0IHsgU2NyZWVuUmVjb3JkZXJTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvc2NyZWVuLXJlY29yZGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTY3JlZW5SZWNvcmRlckNvbnN0YW50cyB9IGZyb20gJy4vc2NyZWVuLXJlY29yZGVyLWNvbnN0YW50JztcclxuXHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICd1eHAtcnVjbGliLXNjcmVlbi1yZWNvcmRlcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3NjcmVlbi1yZWNvcmRlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vc2NyZWVuLXJlY29yZGVyLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTY3JlZW5SZWNvcmRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBASW5wdXQoKVxyXG4gIGN1c3RvbVRoZW1lOiBhbnk7XHJcbiAgXHJcbiAgQElucHV0KClcclxuICBzZXQgcnVjSW5wdXREYXRhKHZhbHVlOiBTY3JlZW5SZWNvcmRlck9wdGlvbnMpIHtcclxuICAgIHRoaXMuX29wdGlvbnMgPSB7XHJcbiAgICAgIHBvc2l0aW9uOiBTY3JlZW5SZWNvcmRlclBvc2l0aW9uLkJvdHRvbSxcclxuICAgICAgZGlzcGxheUZvcm1hdDogRGlzcGxheUZvcm1hdC5JY29uLFxyXG4gICAgICBzaG93QXVkaW9Ub2dnbGU6IHRydWUsXHJcbiAgICAgIGRlZmF1bHRBdWRpb1N0YXRlOiB0cnVlLFxyXG4gICAgICBkb3dubG9hZEZpbGVOYW1lOiAnc2NyZWVuLXJlY29yZGluZy53ZWJtJyxcclxuICAgICAgaWNvbnM6IHsgLi4udGhpcy5zY3JlZW5SZWNvcmRpbmdDb25zdGFudC5ERUZBVUxUX0lDT05TIH0sXHJcbiAgICAgIHNob3dUaW1lcjogdHJ1ZSxcclxuICAgICAgc2hvd1BhdXNlUmVzdW1lOiB0cnVlLFxyXG4gICAgICBzaG93UGxheWJhY2tDb250cm9sczogdHJ1ZSxcclxuICAgICAgc2hvd0Rvd25sb2FkQnV0dG9uOiB0cnVlLFxyXG4gICAgICB1c2VVVENGb3JUaW1lcjogZmFsc2UsXHJcbiAgICAgIGFsbG93U3BlY2lmaWNBcmVhU2VsZWN0aW9uOiB0cnVlLCAvLyBEZWZhdWx0IHRvIGFsbG93aW5nIGJyb3dzZXIncyBuYXRpdmUgcGlja2VyXHJcbiAgICAgIGFjY2Vzc2liaWxpdHlMYWJlbHM6IHsgLi4udGhpcy5zY3JlZW5SZWNvcmRpbmdDb25zdGFudC5ERUZBVUxUX0xBQkVMUyB9LFxyXG4gICAgICAuLi52YWx1ZSxcclxuICAgIH07XHJcbiAgICAvLyBEZWVwIG1lcmdlIGljb25zIGFuZCBsYWJlbHNcclxuICAgIGlmICh2YWx1ZS5pY29ucykge1xyXG4gICAgICB0aGlzLl9vcHRpb25zLmljb25zID0geyAuLi50aGlzLnNjcmVlblJlY29yZGluZ0NvbnN0YW50LkRFRkFVTFRfSUNPTlMsIC4uLnZhbHVlLmljb25zIH07XHJcbiAgICB9XHJcbiAgICBpZiAodmFsdWUuYWNjZXNzaWJpbGl0eUxhYmVscykge1xyXG4gICAgICB0aGlzLl9vcHRpb25zLmFjY2Vzc2liaWxpdHlMYWJlbHMgPSB7IC4uLnRoaXMuc2NyZWVuUmVjb3JkaW5nQ29uc3RhbnQuREVGQVVMVF9MQUJFTFMsIC4uLnZhbHVlLmFjY2Vzc2liaWxpdHlMYWJlbHMgfTtcclxuICAgIH1cclxuICAgIHRoaXMuaXNBdWRpb0VuYWJsZWQgPSB0aGlzLl9vcHRpb25zLmRlZmF1bHRBdWRpb1N0YXRlID8/IHRydWU7XHJcbiAgfVxyXG4gIGdldCBydWNJbnB1dERhdGEoKTogU2NyZWVuUmVjb3JkZXJPcHRpb25zIHtcclxuICAgIHJldHVybiB0aGlzLl9vcHRpb25zO1xyXG4gIH1cclxuICBwcml2YXRlIF9vcHRpb25zITogU2NyZWVuUmVjb3JkZXJPcHRpb25zO1xyXG5cclxuICBAVmlld0NoaWxkKCd2aWRlb1BsYXllcicpIHZpZGVvUGxheWVyITogRWxlbWVudFJlZjxIVE1MVmlkZW9FbGVtZW50PjtcclxuXHJcbiAgcmVjb3JkaW5nU3RhdGU6IFJlY29yZGluZ1N0YXRlID0gUmVjb3JkaW5nU3RhdGUuSWRsZTtcclxuICByZWNvcmRlZFRpbWU6IG51bWJlciA9IDA7XHJcbiAgZm9ybWF0dGVkVGltZTogc3RyaW5nID0gJzAwOjAwOjAwJztcclxuICBzYWZlUmVjb3JkZWRVcmw6IFNhZmVVcmwgfCBudWxsID0gbnVsbDtcclxuICByZWNvcmRpbmdUaW1lc3RhbXA6IHN0cmluZyA9ICcnO1xyXG4gIC8qKlxyXG4gICAqIENoZWNrcyBpZiByZWNvcmRpbmcgaXMgY3VycmVudGx5IGluIHByb2dyZXNzXHJcbiAgICogXHJcbiAgICogQHJldHVybnMgYm9vbGVhbiAtIFRydWUgaWYgcmVjb3JkaW5nIGlzIGluIHByb2dyZXNzLCBmYWxzZSBvdGhlcndpc2VcclxuICAgKi9cclxuICBpc1JlY29yZGluZ0luUHJvZ3Jlc3MoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5yZWNvcmRpbmdTdGF0ZSA9PT0gUmVjb3JkaW5nU3RhdGUuUmVjb3JkaW5nO1xyXG4gIH1cclxuICBlcnJvck1lc3NhZ2U6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG4gIGlzQnJvd3NlclN1cHBvcnRlZDogYm9vbGVhbiA9IHRydWU7XHJcbiAgaXNBdWRpb0VuYWJsZWQ6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICAvKipcclxuICAgKiBHZXRzIHRoZSBhcHByb3ByaWF0ZSBpY29uIGZvciByZWNvcmRpbmcgYmFzZWQgb24gYXVkaW8gc3RhdGUgYW5kIHNldHRpbmdzXHJcbiAgICogQHJldHVybnMgc3RyaW5nIC0gVGhlIGljb24gbmFtZSB0byBkaXNwbGF5XHJcbiAgICovXHJcbiAgZ2V0UmVjb3JkaW5nSWNvbigpOiBzdHJpbmcge1xyXG4gICAgaWYgKHRoaXMuaXNBdWRpb0VuYWJsZWQgJiYgdGhpcy5ydWNJbnB1dERhdGEuc2hvd0F1ZGlvVG9nZ2xlKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmdldEljb24oJ3JlY29yZFdpdGhBdWRpbycpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuZ2V0SWNvbigncmVjb3JkJyk7XHJcbiAgfVxyXG5cclxuICAvLyBFeHBvc2UgZW51bXMgdG8gdGVtcGxhdGVcclxuICBEaXNwbGF5Rm9ybWF0ID0gRGlzcGxheUZvcm1hdDtcclxuICBSZWNvcmRpbmdTdGF0ZSA9IFJlY29yZGluZ1N0YXRlO1xyXG4gIFNjcmVlblJlY29yZGVyUG9zaXRpb24gPSBTY3JlZW5SZWNvcmRlclBvc2l0aW9uO1xyXG5cclxuICBwcml2YXRlIHN1YnNjcmlwdGlvbnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIHNjcmVlblJlY29yZGVyU2VydmljZTogU2NyZWVuUmVjb3JkZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBzYW5pdGl6ZXI6IERvbVNhbml0aXplcixcclxuICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHB1YmxpYyBzY3JlZW5SZWNvcmRpbmdDb25zdGFudDogU2NyZWVuUmVjb3JkZXJDb25zdGFudHNcclxuICApIHtcclxuXHJcbiAgICAvLyBJbml0aWFsaXplIHdpdGggZGVmYXVsdCBvcHRpb25zLiBUaGUgc2V0dGVyIHdpbGwgb3ZlcnJpZGUgaWYgYW4gaW5wdXQgaXMgcHJvdmlkZWQuXHJcbiAgICBpZiAoIXRoaXMuX29wdGlvbnMpIHtcclxuICAgICAgICB0aGlzLnJ1Y0lucHV0RGF0YSA9IHt9OyAvLyBUcmlnZ2VyIHNldHRlciB3aXRoIGVtcHR5IG9iamVjdCB0byBhcHBseSBkZWZhdWx0c1xyXG4gICAgfVxyXG4gIH0gICBcclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKFxyXG4gICAgICB0aGlzLnNjcmVlblJlY29yZGVyU2VydmljZS5yZWNvcmRpbmdTdGF0ZSQuc3Vic2NyaWJlKChzdGF0ZSkgPT4ge1xyXG4gICAgICAgIHRoaXMucmVjb3JkaW5nU3RhdGUgPSBzdGF0ZTtcclxuICAgICAgICBpZiAoc3RhdGUgPT09IFJlY29yZGluZ1N0YXRlLklkbGUgfHwgc3RhdGUgPT09IFJlY29yZGluZ1N0YXRlLlN0b3BwZWQpIHtcclxuICAgICAgICAgICAgLy8gRW5zdXJlIGF1ZGlvIHRvZ2dsZSBpcyByZXNldCB0byBkZWZhdWx0IGlmIG5lZWRlZCwgb3IgYmFzZWQgb24gdXNlciBhY3Rpb25cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuXHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKFxyXG4gICAgICB0aGlzLnNjcmVlblJlY29yZGVyU2VydmljZS5yZWNvcmRpbmdUaW1lc3RhbXAkLnN1YnNjcmliZSgodGltZXN0YW1wKSA9PiB7XHJcbiAgICAgICAgdGhpcy5yZWNvcmRpbmdUaW1lc3RhbXAgPSB0aW1lc3RhbXA7XHJcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuXHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKFxyXG4gICAgICB0aGlzLnNjcmVlblJlY29yZGVyU2VydmljZS5yZWNvcmRlZFRpbWUkLnN1YnNjcmliZSgodGltZSkgPT4ge1xyXG4gICAgICAgIHRoaXMucmVjb3JkZWRUaW1lID0gdGltZTtcclxuICAgICAgICB0aGlzLmZvcm1hdHRlZFRpbWUgPSB0aGlzLmZvcm1hdFRpbWVEaXNwbGF5KHRpbWUpO1xyXG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfSlcclxuICAgICk7XHJcblxyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChcclxuICAgICAgdGhpcy5zY3JlZW5SZWNvcmRlclNlcnZpY2UucmVjb3JkZWRVcmwkLnN1YnNjcmliZSgodXJsKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zYWZlUmVjb3JkZWRVcmwgPSB1cmwgPyB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0VXJsKHVybCkgOiBudWxsO1xyXG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfSlcclxuICAgICk7XHJcblxyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChcclxuICAgICAgdGhpcy5zY3JlZW5SZWNvcmRlclNlcnZpY2UuZXJyb3IkLnN1YnNjcmliZSgoZXJyb3IpID0+IHtcclxuICAgICAgICBpZihlcnJvciAhPSB0aGlzLnNjcmVlblJlY29yZGluZ0NvbnN0YW50LlBFUk1JU1NJT05fREVOSUVEKXtcclxuICAgICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gZXJyb3I7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIGlmICh0aGlzLnN1YnNjcmlwdGlvbnMpIHtcclxuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUb2dnbGVzIHRoZSByZWNvcmRpbmcgc3RhdGUgYmV0d2VlbiBzdGFydCBhbmQgc3RvcFxyXG4gICAqIFxyXG4gICAqIEByZXR1cm5zIFByb21pc2U8dm9pZD5cclxuICAgKi9cclxuICBhc3luYyB0b2dnbGVSZWNvcmQoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICB0aGlzLmVycm9yTWVzc2FnZSA9IG51bGw7IC8vIENsZWFyIHByZXZpb3VzIGVycm9yc1xyXG4gICAgaWYgKHRoaXMucmVjb3JkaW5nU3RhdGUgPT09IFJlY29yZGluZ1N0YXRlLklkbGUgfHwgdGhpcy5yZWNvcmRpbmdTdGF0ZSA9PT0gUmVjb3JkaW5nU3RhdGUuU3RvcHBlZCkge1xyXG4gICAgICAvLyBTZXQgcmVjb3JkaW5nIHRpbWVzdGFtcCB3aGVuIHN0YXJ0aW5nIHJlY29yZGluZ1xyXG4gICAgICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xyXG4gICAgICB0aGlzLnJlY29yZGluZ1RpbWVzdGFtcCA9IG5vdy50b0xvY2FsZVN0cmluZygnZW4tSU4nLCB7XHJcbiAgICAgICAgeWVhcjogJ251bWVyaWMnLFxyXG4gICAgICAgIG1vbnRoOiAnMi1kaWdpdCcsXHJcbiAgICAgICAgZGF5OiAnMi1kaWdpdCcsXHJcbiAgICAgICAgaG91cjogJzItZGlnaXQnLFxyXG4gICAgICAgIG1pbnV0ZTogJzItZGlnaXQnLFxyXG4gICAgICAgIGhvdXIxMjogdHJ1ZVxyXG4gICAgICB9KTtcclxuICAgICAgYXdhaXQgdGhpcy5zY3JlZW5SZWNvcmRlclNlcnZpY2Uuc3RhcnRSZWNvcmRpbmcoeyBhdWRpbzogdGhpcy5pc0F1ZGlvRW5hYmxlZCB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2NyZWVuUmVjb3JkZXJTZXJ2aWNlLnN0b3BSZWNvcmRpbmcoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFRvZ2dsZXMgYmV0d2VlbiBwYXVzZSBhbmQgcmVzdW1lIHN0YXRlcyBkdXJpbmcgcmVjb3JkaW5nXHJcbiAgICogXHJcbiAgICogQHJldHVybnMgdm9pZFxyXG4gICAqL1xyXG4gIHRvZ2dsZVBhdXNlUmVzdW1lKCk6IHZvaWQge1xyXG4gICAgdGhpcy5lcnJvck1lc3NhZ2UgPSBudWxsO1xyXG4gICAgaWYgKHRoaXMucmVjb3JkaW5nU3RhdGUgPT09IFJlY29yZGluZ1N0YXRlLlJlY29yZGluZykge1xyXG4gICAgICB0aGlzLnNjcmVlblJlY29yZGVyU2VydmljZS5wYXVzZVJlY29yZGluZygpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLnJlY29yZGluZ1N0YXRlID09PSBSZWNvcmRpbmdTdGF0ZS5QYXVzZWQpIHtcclxuICAgICAgdGhpcy5zY3JlZW5SZWNvcmRlclNlcnZpY2UucmVzdW1lUmVjb3JkaW5nKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDaGVja3MgaWYgcmVjb3JkaW5nIGNhbiBiZSByZXN1bWVkXHJcbiAgICogXHJcbiAgICogQHJldHVybnMgYm9vbGVhbiAtIFRydWUgaWYgcmVjb3JkaW5nIGNhbiBiZSByZXN1bWVkLCBmYWxzZSBvdGhlcndpc2VcclxuICAgKi9cclxuICBjYW5SZXN1bWUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5yZWNvcmRpbmdTdGF0ZSA9PT0gUmVjb3JkaW5nU3RhdGUuUGF1c2VkO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRG93bmxvYWRzIHRoZSByZWNvcmRlZCB2aWRlbyBmaWxlXHJcbiAgICogXHJcbiAgICogQHJldHVybnMgdm9pZFxyXG4gICAqL1xyXG4gIG9uRG93bmxvYWQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmVycm9yTWVzc2FnZSA9IG51bGw7XHJcbiAgICB0aGlzLnNjcmVlblJlY29yZGVyU2VydmljZS5kb3dubG9hZFJlY29yZGluZyh0aGlzLnJ1Y0lucHV0RGF0YS5kb3dubG9hZEZpbGVOYW1lKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENoZWNrcyBpZiByZWNvcmRpbmcgY2FuIGJlIGRvd25sb2FkZWRcclxuICAgKiBcclxuICAgKiBAcmV0dXJucyBib29sZWFuIC0gVHJ1ZSBpZiByZWNvcmRpbmcgY2FuIGJlIGRvd25sb2FkZWQsIGZhbHNlIG90aGVyd2lzZVxyXG4gICAqL1xyXG4gIGNhbkRvd25sb2FkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMucmVjb3JkaW5nU3RhdGUgPT09IFJlY29yZGluZ1N0YXRlLlN0b3BwZWQ7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUb2dnbGVzIGF1ZGlvIHJlY29yZGluZyBvbi9vZmZcclxuICAgKiBcclxuICAgKiBAcmV0dXJucyB2b2lkXHJcbiAgICovXHJcbiAgdG9nZ2xlQXVkaW8oKTogdm9pZCB7XHJcbiAgICB0aGlzLmlzQXVkaW9FbmFibGVkID0gIXRoaXMuaXNBdWRpb0VuYWJsZWQ7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBcclxuICAgKiBAcGFyYW0gaWNvbk5hbWUgXHJcbiAgICogQHJldHVybnMgXHJcbiAgICovXHJcbiAgZ2V0SWNvbihpY29uTmFtZToga2V5b2YgU2NyZWVuUmVjb3JkZXJJY29ucyk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5ydWNJbnB1dERhdGEuaWNvbnM/LltpY29uTmFtZV0gfHwgKHRoaXMuc2NyZWVuUmVjb3JkaW5nQ29uc3RhbnQuREVGQVVMVF9JQ09OUyBhcyBhbnkpW2ljb25OYW1lXTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSBsYWJlbE5hbWUgXHJcbiAgICogQHJldHVybnMgXHJcbiAgICovXHJcbiAgZ2V0TGFiZWwobGFiZWxOYW1lOiBrZXlvZiBOb25OdWxsYWJsZTxTY3JlZW5SZWNvcmRlck9wdGlvbnNbJ2FjY2Vzc2liaWxpdHlMYWJlbHMnXT4pOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMucnVjSW5wdXREYXRhLmFjY2Vzc2liaWxpdHlMYWJlbHM/LltsYWJlbE5hbWVdIHx8ICh0aGlzLnNjcmVlblJlY29yZGluZ0NvbnN0YW50LkRFRkFVTFRfTEFCRUxTIGFzIGFueSlbbGFiZWxOYW1lXTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSB0aW1lIC0gVGhlIHRpbWUgaW4gc2Vjb25kcyB0byBmb3JtYXRcclxuICAgKiBAcmV0dXJucyBzdHJpbmcgLSBGb3JtYXR0ZWQgdGltZSBzdHJpbmcgKEhIOk1NOlNTKVxyXG4gICAqL1xyXG4gIGZvcm1hdFRpbWVEaXNwbGF5KHRpbWU6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICBjb25zdCBob3VycyA9IE1hdGguZmxvb3IodGltZSAvIDM2MDApO1xyXG4gICAgY29uc3QgbWludXRlcyA9IE1hdGguZmxvb3IoKHRpbWUgJSAzNjAwKSAvIDYwKTtcclxuICAgIGNvbnN0IHNlY29uZHMgPSB0aW1lICUgNjA7XHJcblxyXG4gICAgY29uc3QgcGFkID0gKG51bTogbnVtYmVyKSA9PiBudW0udG9TdHJpbmcoKS5wYWRTdGFydCgyLCAnMCcpO1xyXG5cclxuICAgIGlmICh0aGlzLnJ1Y0lucHV0RGF0YSAmJiB0aGlzLnJ1Y0lucHV0RGF0YS51c2VVVENGb3JUaW1lcikge1xyXG4gICAgICAgIC8vIFRoaXMgaXMgYSBzaW1wbGUgZHVyYXRpb24gZm9ybWF0LCBub3QgYSBzcGVjaWZpYyBVVEMgdGltZS5cclxuICAgICAgICAvLyBGb3IgYWN0dWFsIFVUQyB0aW1lIG9mIGRheSwgeW91J2QgdXNlIG5ldyBEYXRlKCkudG9VVENTdHJpbmcoKSBvciBzaW1pbGFyLlxyXG4gICAgICAgIC8vIEFzc3VtaW5nIHRpbWVyIHNob3VsZCBzaG93IGVsYXBzZWQgdGltZSBmb3JtYXR0ZWQgYXMgSEg6TU06U1MuXHJcbiAgICAgICAgcmV0dXJuIGAke3BhZChob3Vycyl9OiR7cGFkKG1pbnV0ZXMpfToke3BhZChzZWNvbmRzKX1gO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGAke3BhZChob3Vycyl9OiR7cGFkKG1pbnV0ZXMpfToke3BhZChzZWNvbmRzKX1gO1xyXG4gIH1cclxuXHJcbiAgLy8gTWV0aG9kIHRvIHJlc2V0IHRoZSBjb21wb25lbnQgYW5kIHNlcnZpY2UgdG8gaW5pdGlhbCBzdGF0ZVxyXG4gIHJlc2V0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zY3JlZW5SZWNvcmRlclNlcnZpY2UucmVzZXRUb0lkbGUoKTtcclxuICAgIHRoaXMuaXNBdWRpb0VuYWJsZWQgPSB0aGlzLnJ1Y0lucHV0RGF0YS5kZWZhdWx0QXVkaW9TdGF0ZSA/PyB0cnVlO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxufVxyXG5cclxuIiwiPGRpdiBjbGFzcz1cIm1haW5cIj5cclxuICA8ZGl2IGNsYXNzPVwic2NyZWVuLXJlY29yZGVyLWNvbnRyb2xzXCJcclxuICAgIFtuZ0NsYXNzXT1cImN1c3RvbVRoZW1lICsgJyBwb3NpdGlvbi0nICsgKHJ1Y0lucHV0RGF0YS5wb3NpdGlvbiB8fCBTY3JlZW5SZWNvcmRlclBvc2l0aW9uLkJvdHRvbSlcIlxyXG4gICAgKm5nSWY9XCJpc0Jyb3dzZXJTdXBwb3J0ZWRcIj5cclxuXHJcbiAgICA8IS0tIEVycm9yIE1lc3NhZ2UgLS0+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiZXJyb3JNZXNzYWdlXCIgY2xhc3M9XCJyZWNvcmRlci1lcnJvclwiPlxyXG4gICAgICB7eyBlcnJvck1lc3NhZ2UgfX1cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDwhLS0gUmVjb3JkL1N0b3AgQnV0dG9uIC0tPlxyXG4gICAgPGJ1dHRvbiAqbmdJZj1cInJlY29yZGluZ1N0YXRlID09PSBSZWNvcmRpbmdTdGF0ZS5JZGxlIHx8IHJlY29yZGluZ1N0YXRlID09PSBSZWNvcmRpbmdTdGF0ZS5TdG9wcGVkXCJcclxuICAgICAgKGNsaWNrKT1cInRvZ2dsZVJlY29yZCgpXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJnZXRMYWJlbCgncmVjb3JkQnV0dG9uJylcIiBbYXR0ci5hcmlhLXByZXNzZWRdPVwiZmFsc2VcIlxyXG4gICAgICBjbGFzcz1cInJlY29yZGVyLWJ1dHRvbiByZWNvcmQtYnV0dG9uXCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJydWNJbnB1dERhdGEuZGlzcGxheUZvcm1hdCA9PT0gRGlzcGxheUZvcm1hdC5JY29uXCI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1pY29uc1wiPnt7IGdldFJlY29yZGluZ0ljb24oKSB8fCBnZXRJY29uKCdyZWNvcmQnKSB9fTwvc3Bhbj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJydWNJbnB1dERhdGEuZGlzcGxheUZvcm1hdCA9PT0gRGlzcGxheUZvcm1hdC5UZXh0XCI+e3sgZ2V0TGFiZWwoJ3JlY29yZEJ1dHRvbicpXHJcbiAgICAgICAgfX08L25nLWNvbnRhaW5lcj5cclxuICAgIDwvYnV0dG9uPlxyXG5cclxuICAgIDxidXR0b24gKm5nSWY9XCJyZWNvcmRpbmdTdGF0ZSA9PT0gUmVjb3JkaW5nU3RhdGUuUmVjb3JkaW5nIHx8IHJlY29yZGluZ1N0YXRlID09PSBSZWNvcmRpbmdTdGF0ZS5QYXVzZWRcIlxyXG4gICAgICAoY2xpY2spPVwidG9nZ2xlUmVjb3JkKClcIiBbYXR0ci5hcmlhLWxhYmVsXT1cImdldExhYmVsKCdzdG9wQnV0dG9uJylcIiBbYXR0ci5hcmlhLXByZXNzZWRdPVwidHJ1ZVwiXHJcbiAgICAgIGNsYXNzPVwicmVjb3JkZXItYnV0dG9uIHN0b3AtYnV0dG9uXCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJydWNJbnB1dERhdGEuZGlzcGxheUZvcm1hdCA9PT0gRGlzcGxheUZvcm1hdC5JY29uXCI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1pY29uc1wiPnt7IGdldEljb24oJ3N0b3AnKSB9fTwvc3Bhbj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJydWNJbnB1dERhdGEuZGlzcGxheUZvcm1hdCA9PT0gRGlzcGxheUZvcm1hdC5UZXh0XCI+e3sgZ2V0TGFiZWwoJ3N0b3BCdXR0b24nKVxyXG4gICAgICAgIH19PC9uZy1jb250YWluZXI+XHJcbiAgICA8L2J1dHRvbj5cclxuXHJcbiAgICA8IS0tIFBhdXNlL1Jlc3VtZSBCdXR0b24gLS0+XHJcbiAgICA8YnV0dG9uICpuZ0lmPVwicnVjSW5wdXREYXRhLnNob3dQYXVzZVJlc3VtZSAmJiByZWNvcmRpbmdTdGF0ZSA9PT0gUmVjb3JkaW5nU3RhdGUuUmVjb3JkaW5nXCJcclxuICAgICAgKGNsaWNrKT1cInRvZ2dsZVBhdXNlUmVzdW1lKClcIiBbYXR0ci5hcmlhLWxhYmVsXT1cImdldExhYmVsKCdwYXVzZUJ1dHRvbicpXCIgW2F0dHIuYXJpYS1wcmVzc2VkXT1cImZhbHNlXCJcclxuICAgICAgY2xhc3M9XCJyZWNvcmRlci1idXR0b24gcGF1c2UtYnV0dG9uXCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJydWNJbnB1dERhdGEuZGlzcGxheUZvcm1hdCA9PT0gRGlzcGxheUZvcm1hdC5JY29uXCI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1pY29uc1wiPnt7IGdldEljb24oJ3BhdXNlJykgfX08L3NwYW4+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicnVjSW5wdXREYXRhLmRpc3BsYXlGb3JtYXQgPT09IERpc3BsYXlGb3JtYXQuVGV4dFwiPnt7IGdldExhYmVsKCdwYXVzZUJ1dHRvbicpXHJcbiAgICAgICAgfX08L25nLWNvbnRhaW5lcj5cclxuICAgIDwvYnV0dG9uPlxyXG4gICAgPGJ1dHRvbiAqbmdJZj1cInJ1Y0lucHV0RGF0YS5zaG93UGF1c2VSZXN1bWUgJiYgcmVjb3JkaW5nU3RhdGUgPT09IFJlY29yZGluZ1N0YXRlLlBhdXNlZFwiXHJcbiAgICAgIChjbGljayk9XCJ0b2dnbGVQYXVzZVJlc3VtZSgpXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJnZXRMYWJlbCgncmVzdW1lQnV0dG9uJylcIiBbYXR0ci5hcmlhLXByZXNzZWRdPVwidHJ1ZVwiXHJcbiAgICAgIGNsYXNzPVwicmVjb3JkZXItYnV0dG9uIHJlc3VtZS1idXR0b25cIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInJ1Y0lucHV0RGF0YS5kaXNwbGF5Rm9ybWF0ID09PSBEaXNwbGF5Rm9ybWF0Lkljb25cIj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLWljb25zXCI+e3sgZ2V0SWNvbigncmVzdW1lJykgfX08L3NwYW4+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicnVjSW5wdXREYXRhLmRpc3BsYXlGb3JtYXQgPT09IERpc3BsYXlGb3JtYXQuVGV4dFwiPnt7IGdldExhYmVsKCdyZXN1bWVCdXR0b24nKVxyXG4gICAgICAgIH19PC9uZy1jb250YWluZXI+XHJcbiAgICA8L2J1dHRvbj5cclxuXHJcbiAgICA8IS0tIEF1ZGlvIFRvZ2dsZSBCdXR0b24gLS0+XHJcbiAgICA8YnV0dG9uXHJcbiAgICAgICpuZ0lmPVwicnVjSW5wdXREYXRhLnNob3dBdWRpb1RvZ2dsZSAmJiAocmVjb3JkaW5nU3RhdGUgPT09IFJlY29yZGluZ1N0YXRlLklkbGUgfHwgcmVjb3JkaW5nU3RhdGUgPT09IFJlY29yZGluZ1N0YXRlLlN0b3BwZWQpXCJcclxuICAgICAgKGNsaWNrKT1cInRvZ2dsZUF1ZGlvKClcIiBbYXR0ci5hcmlhLWxhYmVsXT1cImdldExhYmVsKCdhdWRpb1RvZ2dsZUJ1dHRvbicpXCIgW2F0dHIuYXJpYS1wcmVzc2VkXT1cImlzQXVkaW9FbmFibGVkXCJcclxuICAgICAgY2xhc3M9XCJyZWNvcmRlci1idXR0b24gYXVkaW8tdG9nZ2xlLWJ1dHRvblwiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicnVjSW5wdXREYXRhLmRpc3BsYXlGb3JtYXQgPT09IERpc3BsYXlGb3JtYXQuSWNvblwiPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnNcIj57eyBpc0F1ZGlvRW5hYmxlZCA/IGdldEljb24oJ2F1ZGlvT24nKSA6IGdldEljb24oJ2F1ZGlvT2ZmJykgfX08L3NwYW4+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicnVjSW5wdXREYXRhLmRpc3BsYXlGb3JtYXQgPT09IERpc3BsYXlGb3JtYXQuVGV4dFwiPlxyXG4gICAgICAgIHt7IGlzQXVkaW9FbmFibGVkID8gc2NyZWVuUmVjb3JkaW5nQ29uc3RhbnQuQVVESU9fT04gOiBzY3JlZW5SZWNvcmRpbmdDb25zdGFudC5BVURJT19PRkYgfX1cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L2J1dHRvbj5cclxuXHJcbiAgICA8IS0tIFRpbWVyIC0tPlxyXG4gICAgPGRpdlxyXG4gICAgICAqbmdJZj1cInJ1Y0lucHV0RGF0YS5zaG93VGltZXIgJiYgKHJlY29yZGluZ1N0YXRlID09PSBSZWNvcmRpbmdTdGF0ZS5SZWNvcmRpbmcgfHwgcmVjb3JkaW5nU3RhdGUgPT09IFJlY29yZGluZ1N0YXRlLlBhdXNlZClcIlxyXG4gICAgICBjbGFzcz1cInJlY29yZGVyLXRpbWVyXCIgYXJpYS1saXZlPVwicG9saXRlXCIgYXJpYS1hdG9taWM9XCJ0cnVlXCI+XHJcbiAgICAgIHt7IGZvcm1hdHRlZFRpbWUgfX1cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDwhLS0gRG93bmxvYWQgQnV0dG9uIC0tPlxyXG4gICAgPGJ1dHRvbiAqbmdJZj1cInJ1Y0lucHV0RGF0YS5zaG93RG93bmxvYWRCdXR0b24gJiYgcmVjb3JkaW5nU3RhdGUgPT09IFJlY29yZGluZ1N0YXRlLlN0b3BwZWQgJiYgc2FmZVJlY29yZGVkVXJsXCJcclxuICAgICAgKGNsaWNrKT1cIm9uRG93bmxvYWQoKVwiIFthdHRyLmFyaWEtbGFiZWxdPVwiZ2V0TGFiZWwoJ2Rvd25sb2FkQnV0dG9uJylcIiBjbGFzcz1cInJlY29yZGVyLWJ1dHRvbiBkb3dubG9hZC1idXR0b25cIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInJ1Y0lucHV0RGF0YS5kaXNwbGF5Rm9ybWF0ID09PSBEaXNwbGF5Rm9ybWF0Lkljb25cIj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLWljb25zXCI+e3sgZ2V0SWNvbignZG93bmxvYWQnKSB9fTwvc3Bhbj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJydWNJbnB1dERhdGEuZGlzcGxheUZvcm1hdCA9PT0gRGlzcGxheUZvcm1hdC5UZXh0XCI+e3sgZ2V0TGFiZWwoJ2Rvd25sb2FkQnV0dG9uJylcclxuICAgICAgICB9fTwvbmctY29udGFpbmVyPlxyXG4gICAgPC9idXR0b24+XHJcblxyXG4gICAgPCEtLSBQbGF5YmFjayBBcmVhIC0tPlxyXG4gICAgPGRpdiAqbmdJZj1cInJ1Y0lucHV0RGF0YS5zaG93UGxheWJhY2tDb250cm9scyAmJiByZWNvcmRpbmdTdGF0ZSA9PT0gUmVjb3JkaW5nU3RhdGUuU3RvcHBlZCAmJiBzYWZlUmVjb3JkZWRVcmxcIlxyXG4gICAgICBjbGFzcz1cInBsYXliYWNrLWFyZWFcIj5cclxuICAgICAgPHZpZGVvICN2aWRlb1BsYXllciBbc3JjXT1cInNhZmVSZWNvcmRlZFVybFwiIGNvbnRyb2xzIFthdHRyLmFyaWEtbGFiZWxdPVwiZ2V0TGFiZWwoJ3BsYXliYWNrVmlkZW8nKVwiPjwvdmlkZW8+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ2aWRlby10aW1lci1vdmVybGF5XCI+XHJcbiAgICAgICAgPHNwYW4+UmVjb3JkZWQgb246IHt7IHJlY29yZGluZ1RpbWVzdGFtcCB9fTwvc3Bhbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8IS0tIFJlc2V0IEJ1dHRvbiAob3B0aW9uYWwsIGdvb2QgZm9yIHRlc3RpbmcvY2xlYXJpbmcgc3RhdGUpIC0tPlxyXG4gICAgPGJ1dHRvbiAqbmdJZj1cInJlY29yZGluZ1N0YXRlID09PSBSZWNvcmRpbmdTdGF0ZS5TdG9wcGVkICYmIHNhZmVSZWNvcmRlZFVybFwiIChjbGljayk9XCJyZXNldCgpXCJcclxuICAgICAgYXJpYS1sYWJlbD1cIk5ldyBSZWNvcmRpbmdcIiBjbGFzcz1cInJlY29yZGVyLWJ1dHRvbiByZXNldC1idXR0b25cIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInJ1Y0lucHV0RGF0YS5kaXNwbGF5Rm9ybWF0ID09PSBEaXNwbGF5Rm9ybWF0Lkljb25cIj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLWljb25zXCI+cmVmcmVzaDwvc3Bhbj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJydWNJbnB1dERhdGEuZGlzcGxheUZvcm1hdCA9PT0gRGlzcGxheUZvcm1hdC5UZXh0XCI+TmV3PC9uZy1jb250YWluZXI+XHJcbiAgICA8L2J1dHRvbj5cclxuXHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXYgKm5nSWY9XCIhaXNCcm93c2VyU3VwcG9ydGVkXCIgY2xhc3M9XCJyZWNvcmRlci1ub3RzdXBwb3J0ZWRcIiBbbmdDbGFzc109XCJjdXN0b21UaGVtZVwiPlxyXG4gICAge3tzY3JlZW5SZWNvcmRpbmdDb25zdGFudC5OT19TVVBQT1JUfX1cclxuICA8L2Rpdj5cclxuPC9kaXY+Il19