angular-debug-recorder 1.1.0 → 1.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 +57 -43
- package/esm2022/angular-debug-recorder.mjs +1 -1
- package/esm2022/lib/action-list/action-list.component.mjs +1 -1
- package/esm2022/lib/debug-panel/debug-panel.component.mjs +1 -1
- package/esm2022/lib/models/recorded-action.model.mjs +1 -1
- package/esm2022/lib/services/ai-generator.service.mjs +1 -1
- package/esm2022/lib/services/recorder.service.mjs +1 -1
- package/esm2022/lib/services/rrweb-recorder.service.mjs +1 -1
- package/esm2022/lib/session-replay/session-replay.component.mjs +1 -1
- package/esm2022/lib/settings-dialog/settings-dialog.component.mjs +1 -1
- package/esm2022/lib/test-preview/test-preview.component.mjs +1 -1
- package/esm2022/public-api.mjs +1 -1
- package/fesm2022/angular-debug-recorder.mjs.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -77,42 +77,24 @@ Das war's — das Panel erscheint als FAB-Button unten rechts.
|
|
|
77
77
|
|
|
78
78
|
Das Panel hat 4 Tabs:
|
|
79
79
|
|
|
80
|
-
- **Aktionen** — Liste aller aufgezeichneten Events
|
|
81
|
-
- **📽️ Replay** — rrweb-Player: Session visuell abspielen
|
|
80
|
+
- **Aktionen** — Liste aller aufgezeichneten Events (Klick, Input, Submit, …)
|
|
81
|
+
- **📽️ Replay** — rrweb-Player: Session visuell abspielen
|
|
82
82
|
- **🤖 Test** — KI-generierten Cypress-Test anzeigen & kopieren
|
|
83
83
|
- **Sessions** — Gespeicherte Sessions verwalten
|
|
84
84
|
|
|
85
|
-
###
|
|
86
|
-
|
|
87
|
-
`data-testid` > `data-cy` > `id` > `name` > `class`
|
|
88
|
-
|
|
89
|
-
---
|
|
90
|
-
|
|
91
|
-
## Performance & Kompatibilität
|
|
92
|
-
|
|
93
|
-
### Non-blocking Recording (OnPush-safe)
|
|
94
|
-
|
|
95
|
-
Alle DOM-Listener laufen **außerhalb der Angular Zone** (`runOutsideAngular`). Klicks, Eingaben und Scrolls lösen keine Change Detection im Host aus. Aktionen werden per `requestAnimationFrame` gebündelt — maximal ein CD-Zyklus pro Frame, unabhängig von der Event-Frequenz.
|
|
85
|
+
### Aufgezeichnete Event-Typen
|
|
96
86
|
|
|
97
|
-
|
|
87
|
+
`click` · `input` · `select` · `submit` · `keypress` · `scroll` · `navigation`
|
|
98
88
|
|
|
99
|
-
###
|
|
100
|
-
|
|
101
|
-
Die aktive Aufnahme wird beim Verlassen der Seite (`beforeunload`) in den `sessionStorage` geschrieben und beim nächsten Laden automatisch wiederhergestellt. Kein versehentlicher Datenverlust durch Seiten-Reload.
|
|
102
|
-
|
|
103
|
-
---
|
|
104
|
-
|
|
105
|
-
## rrweb Replay
|
|
106
|
-
|
|
107
|
-
### Export & Import
|
|
89
|
+
### Selektor-Priorität
|
|
108
90
|
|
|
109
|
-
|
|
91
|
+
`data-testid` > `data-cy` > `id` > `name` > `class`
|
|
110
92
|
|
|
111
93
|
---
|
|
112
94
|
|
|
113
95
|
## KI-Konfiguration (Webhook)
|
|
114
96
|
|
|
115
|
-
Das Panel schickt die aufgezeichnete Session per HTTP-POST an eine konfigurierbare URL und erwartet den Cypress-Test als Plain-Text
|
|
97
|
+
Das Panel schickt die aufgezeichnete Session per HTTP-POST an eine konfigurierbare URL und erwartet als Antwort den Cypress-Test als Plain-Text.
|
|
116
98
|
|
|
117
99
|
**Request:**
|
|
118
100
|
```
|
|
@@ -128,6 +110,7 @@ describe('Recorded session', () => {
|
|
|
128
110
|
it('should ...', () => {
|
|
129
111
|
cy.visit('/');
|
|
130
112
|
cy.get('[data-testid="btn"]').click();
|
|
113
|
+
...
|
|
131
114
|
});
|
|
132
115
|
});
|
|
133
116
|
```
|
|
@@ -140,30 +123,61 @@ Die URL wird im Panel unter ⚙️ Settings eingetragen und in `localStorage` (`
|
|
|
140
123
|
|
|
141
124
|
```typescript
|
|
142
125
|
// Komponenten
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
126
|
+
export { DebugPanelComponent } // Haupt-Einstiegspunkt
|
|
127
|
+
export { ActionListComponent }
|
|
128
|
+
export { TestPreviewComponent }
|
|
129
|
+
export { SessionReplayComponent }
|
|
130
|
+
export { SettingsDialogComponent }
|
|
131
|
+
|
|
132
|
+
// Services
|
|
133
|
+
export { RecorderService } // DOM-Event-Recording
|
|
134
|
+
export { RrwebRecorderService } // rrweb-Recording (lazy)
|
|
135
|
+
export { AiGeneratorService } // Webhook-Client
|
|
136
|
+
|
|
137
|
+
// Models
|
|
138
|
+
export { RecordedAction, RecordingSession, GeneratedTest, ... }
|
|
150
139
|
```
|
|
151
140
|
|
|
152
141
|
---
|
|
153
142
|
|
|
154
|
-
##
|
|
143
|
+
## Entwicklung
|
|
155
144
|
|
|
156
|
-
|
|
157
|
-
|
|
145
|
+
```bash
|
|
146
|
+
# Dependencies installieren
|
|
147
|
+
npm install
|
|
158
148
|
|
|
159
|
-
|
|
149
|
+
# Library bauen
|
|
150
|
+
npm run build
|
|
160
151
|
|
|
161
|
-
|
|
152
|
+
# Bei Änderungen automatisch neu bauen
|
|
153
|
+
npm run watch
|
|
154
|
+
|
|
155
|
+
# Library publishen
|
|
156
|
+
cd dist/debug-recorder && npm publish
|
|
157
|
+
```
|
|
162
158
|
|
|
163
|
-
###
|
|
164
|
-
- **Non-blocking recorder**: alle Event-Listener laufen außerhalb der NgZone (`runOutsideAngular`) + RAF-Batching → OnPush-kompatibel
|
|
165
|
-
- **F5-Persistenz**: aktive Aufnahme überlebt Seitenneuladungen via `sessionStorage`
|
|
166
|
-
- **rrweb Import**: aufgezeichnete Sessions als JSON importieren (📂-Button im Replay-Tab)
|
|
159
|
+
### Projektstruktur
|
|
167
160
|
|
|
168
|
-
|
|
169
|
-
|
|
161
|
+
```
|
|
162
|
+
src/
|
|
163
|
+
├── public-api.ts
|
|
164
|
+
└── lib/
|
|
165
|
+
├── debug-panel/ # Haupt-Panel (FAB + 4 Tabs + Drag & Resize)
|
|
166
|
+
├── action-list/ # Aufgezeichnete Aktionen
|
|
167
|
+
├── session-replay/ # rrweb-Player
|
|
168
|
+
├── test-preview/ # Syntax-Highlighting Cypress-Output
|
|
169
|
+
├── settings-dialog/ # Webhook-URL & Einstellungen
|
|
170
|
+
├── services/
|
|
171
|
+
│ ├── recorder.service.ts # DOM-Event-Recorder
|
|
172
|
+
│ ├── rrweb-recorder.service.ts # rrweb (lazy-loaded, ~156 kB)
|
|
173
|
+
│ └── ai-generator.service.ts # Webhook-Client
|
|
174
|
+
└── models/
|
|
175
|
+
└── recorded-action.model.ts # TypeScript-Interfaces
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
---
|
|
179
|
+
|
|
180
|
+
## Voraussetzungen
|
|
181
|
+
|
|
182
|
+
- Angular 17+ (Standalone Components, Signals, neue Control-Flow-Syntax)
|
|
183
|
+
- Node.js >= 18
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
* Generated bundle index. Do not edit.
|
|
3
3
|
*/
|
|
4
4
|
export * from './public-api';
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1kZWJ1Zy1yZWNvcmRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hbmd1bGFyLWRlYnVnLXJlY29yZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljLWFwaSc7XG4iXX0=
|
|
@@ -217,4 +217,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
217
217
|
}], addNote: [{
|
|
218
218
|
type: Output
|
|
219
219
|
}] } });
|
|
220
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVidWctcmVjb3JkZXIvc3JjL2xpYi9hY3Rpb24tbGlzdC9hY3Rpb24tbGlzdC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7O0FBK083QyxNQUFNLE9BQU8sbUJBQW1CO0lBNU9oQztRQTZPVyxZQUFPLEdBQTRCLElBQUksQ0FBQztRQUN2QyxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFDMUMsWUFBTyxHQUFHLElBQUksWUFBWSxFQUFnQyxDQUFDO1FBRXJFLGVBQVUsR0FBRyxNQUFNLENBQWdCLElBQUksQ0FBQyxDQUFDO1FBQ3pDLFlBQU8sR0FBMkIsRUFBRSxDQUFDO0tBd0N0QztJQXRDQyxZQUFZLENBQUMsRUFBVTtRQUNyQixJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVELFFBQVEsQ0FBQyxFQUFVLEVBQUUsQ0FBUTtRQUMzQixDQUFDLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVELFNBQVMsQ0FBQyxFQUFVO1FBQ2xCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVELGFBQWEsQ0FBQyxJQUFZO1FBQ3hCLE1BQU0sS0FBSyxHQUEyQjtZQUNwQyxLQUFLLEVBQVEsSUFBSTtZQUNqQixRQUFRLEVBQUssTUFBTTtZQUNuQixLQUFLLEVBQVEsSUFBSTtZQUNqQixNQUFNLEVBQU8sSUFBSTtZQUNqQixNQUFNLEVBQU8sSUFBSTtZQUNqQixVQUFVLEVBQUcsSUFBSTtZQUNqQixRQUFRLEVBQUssSUFBSTtZQUNqQixNQUFNLEVBQU8sSUFBSTtZQUNqQixLQUFLLEVBQVEsS0FBSztZQUNsQixTQUFTLEVBQUksR0FBRztZQUNoQixVQUFVLEVBQUcsSUFBSTtTQUNsQixDQUFDO1FBQ0YsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDO0lBQzVCLENBQUM7SUFFRCxVQUFVLENBQUMsRUFBVTtRQUNuQixPQUFPLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLE9BQU8sRUFBRSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztJQUM3RyxDQUFDO0lBRUQsY0FBYyxDQUFDLEtBQWEsRUFBRSxHQUFXO1FBQ3ZDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDM0MsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBQyxFQUFFLEdBQUcsQ0FBQztJQUM1RCxDQUFDOytHQTdDVSxtQkFBbUI7bUdBQW5CLG1CQUFtQiwwS0F4T3BCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWdGVCxvakZBakZTLFlBQVksOEJBQUUsV0FBVzs7NEZBeU94QixtQkFBbUI7a0JBNU8vQixTQUFTOytCQUNFLGlCQUFpQixjQUNmLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxXQUFXLENBQUMsWUFDMUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBZ0ZUOzhCQXlKUSxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0ksWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxPQUFPO3NCQUFoQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgUmVjb3JkZWRBY3Rpb24sIFJlY29yZGluZ1Nlc3Npb24gfSBmcm9tICcuLi9tb2RlbHMvcmVjb3JkZWQtYWN0aW9uLm1vZGVsJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLWFjdGlvbi1saXN0JyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEZvcm1zTW9kdWxlXSxcclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgPGRpdiBjbGFzcz1cImFjdGlvbi1saXN0XCIgZGF0YS1kZWJ1Zy1wYW5lbD5cclxuICAgICAgQGlmICghc2Vzc2lvbiB8fCBzZXNzaW9uLmFjdGlvbnMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImVtcHR5LXN0YXRlXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZW1wdHktaWNvblwiPvCfjqw8L2Rpdj5cclxuICAgICAgICAgIDxwPk5vY2gga2VpbmUgQWt0aW9uZW4gYXVmZ2V6ZWljaG5ldC48L3A+XHJcbiAgICAgICAgICA8cCBjbGFzcz1cImhpbnRcIj5TdGFydGUgZGllIEF1Zm5haG1lIHVuZCBpbnRlcmFnaWVyZSBtaXQgZGVyIEFwcC48L3A+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hvcnRjdXRzLWhpbnRcIj5cclxuICAgICAgICAgICAgPGtiZD5DdHJsK1NoaWZ0K0Q8L2tiZD4gUGFuZWwgJm5ic3A7XHJcbiAgICAgICAgICAgIDxrYmQ+Q3RybCtTaGlmdCtSPC9rYmQ+IFJlY29yZFxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJsaXN0LWhlYWRlclwiPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJsaXN0LWNvdW50XCI+e3sgc2Vzc2lvbi5hY3Rpb25zLmxlbmd0aCB9fSBBa3Rpb25lbjwvc3Bhbj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGlzdC1kdXJhdGlvblwiPlxyXG4gICAgICAgICAgICBAaWYgKHNlc3Npb24uZW5kVGltZSkge1xyXG4gICAgICAgICAgICAgIHt7IGZvcm1hdER1cmF0aW9uKHNlc3Npb24uc3RhcnRUaW1lLCBzZXNzaW9uLmVuZFRpbWUpIH19XHJcbiAgICAgICAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgICAgICAgIExpdmVcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICBAZm9yIChhY3Rpb24gb2Ygc2Vzc2lvbi5hY3Rpb25zOyB0cmFjayBhY3Rpb24uaWQ7IGxldCBpID0gJGluZGV4KSB7XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uLWl0ZW1cIiBbY2xhc3MuZXhwYW5kZWRdPVwiZXhwYW5kZWRJZCgpID09PSBhY3Rpb24uaWRcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFjdGlvbi1yb3dcIiAoY2xpY2spPVwidG9nZ2xlRXhwYW5kKGFjdGlvbi5pZClcIj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFjdGlvbi1pbmRleFwiPnt7IGkgKyAxIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYWN0aW9uLXR5cGUtYmFkZ2VcIiBbY2xhc3NdPVwiJ3R5cGUtJyArIGFjdGlvbi50eXBlXCI+XHJcbiAgICAgICAgICAgICAgICB7eyBnZXRBY3Rpb25JY29uKGFjdGlvbi50eXBlKSB9fVxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uLWluZm9cIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYWN0aW9uLWRlc2NcIj57eyBhY3Rpb24uZGVzY3JpcHRpb24gfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFjdGlvbi1zZWxlY3RvclwiPnt7IGFjdGlvbi5zZWxlY3RvciB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFjdGlvbi10aW1lXCI+e3sgZm9ybWF0VGltZShhY3Rpb24udGltZXN0YW1wKSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInJlbW92ZS1idG5cIlxyXG4gICAgICAgICAgICAgICAgZGF0YS1kZWJ1Zy1wYW5lbFxyXG4gICAgICAgICAgICAgICAgdGl0bGU9XCJBa3Rpb24gZW50ZmVybmVuXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvblJlbW92ZShhY3Rpb24uaWQsICRldmVudClcIlxyXG4gICAgICAgICAgICAgID7inJU8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICBAaWYgKGV4cGFuZGVkSWQoKSA9PT0gYWN0aW9uLmlkKSB7XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFjdGlvbi1kZXRhaWxcIiBkYXRhLWRlYnVnLXBhbmVsPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRldGFpbC1ncmlkXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGV0YWlsLWxhYmVsXCI+U2VsZWN0b3I8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDxjb2RlIGNsYXNzPVwiZGV0YWlsLXZhbHVlXCI+e3sgYWN0aW9uLnNlbGVjdG9yIH19PC9jb2RlPlxyXG4gICAgICAgICAgICAgICAgICBAaWYgKGFjdGlvbi52YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGV0YWlsLWxhYmVsXCI+V2VydDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8Y29kZSBjbGFzcz1cImRldGFpbC12YWx1ZVwiPnt7IGFjdGlvbi52YWx1ZSB9fTwvY29kZT5cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBAaWYgKGFjdGlvbi5lbGVtZW50Py50YWdOYW1lKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkZXRhaWwtbGFiZWxcIj5FbGVtZW50PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxjb2RlIGNsYXNzPVwiZGV0YWlsLXZhbHVlXCI+Jmx0O3t7IGFjdGlvbi5lbGVtZW50Py50YWdOYW1lIH19Jmd0OzwvY29kZT5cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRldGFpbC1sYWJlbFwiPlN0cmF0ZWdpZTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkZXRhaWwtdmFsdWUgc3RyYXRlZ3ktYmFkZ2VcIiBbY2xhc3NdPVwiJ3N0cmF0LScgKyBhY3Rpb24uc2VsZWN0b3JTdHJhdGVneVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IGFjdGlvbi5zZWxlY3RvclN0cmF0ZWd5IH19XHJcbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkZXRhaWwtbGFiZWxcIj5VUkw8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDxjb2RlIGNsYXNzPVwiZGV0YWlsLXZhbHVlIHVybC12YWxcIj57eyBhY3Rpb24udXJsIH19PC9jb2RlPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibm90ZS1hcmVhXCI+XHJcbiAgICAgICAgICAgICAgICAgIDx0ZXh0YXJlYVxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGEtZGVidWctcGFuZWxcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm5vdGUtaW5wdXRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwibm90ZU1hcFthY3Rpb24uaWRdXCJcclxuICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIk5vdGl6IHp1IGRpZXNlciBBa3Rpb24uLi5cIlxyXG4gICAgICAgICAgICAgICAgICAgIHJvd3M9XCIyXCJcclxuICAgICAgICAgICAgICAgICAgICAoYmx1cik9XCJvbkFkZE5vdGUoYWN0aW9uLmlkKVwiXHJcbiAgICAgICAgICAgICAgICAgID48L3RleHRhcmVhPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgPC9kaXY+XHJcbiAgYCxcclxuICBzdHlsZXM6IFtgXHJcbiAgICAuYWN0aW9uLWxpc3QgeyBwYWRkaW5nOiAwOyB9XHJcblxyXG4gICAgLmVtcHR5LXN0YXRlIHtcclxuICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgICBwYWRkaW5nOiAzMnB4IDIwcHg7XHJcbiAgICAgIGNvbG9yOiAjNjQ3NDhiO1xyXG4gICAgfVxyXG4gICAgLmVtcHR5LWljb24geyBmb250LXNpemU6IDQwcHg7IG1hcmdpbi1ib3R0b206IDEwcHg7IH1cclxuICAgIC5lbXB0eS1zdGF0ZSBwIHsgbWFyZ2luOiA0cHggMDsgZm9udC1zaXplOiAxM3B4OyB9XHJcbiAgICAuaGludCB7IGZvbnQtc2l6ZTogMTFweDsgY29sb3I6ICM0NzU1Njk7IH1cclxuICAgIC5zaG9ydGN1dHMtaGludCB7XHJcbiAgICAgIG1hcmdpbi10b3A6IDEycHg7XHJcbiAgICAgIGZvbnQtc2l6ZTogMTFweDtcclxuICAgICAgY29sb3I6ICM0NzU1Njk7XHJcbiAgICB9XHJcbiAgICBrYmQge1xyXG4gICAgICBiYWNrZ3JvdW5kOiAjMWUyOTNiO1xyXG4gICAgICBib3JkZXI6IDFweCBzb2xpZCAjMzM0MTU1O1xyXG4gICAgICBjb2xvcjogIzk0YTNiODtcclxuICAgICAgcGFkZGluZzogMnB4IDZweDtcclxuICAgICAgYm9yZGVyLXJhZGl1czogNHB4O1xyXG4gICAgICBmb250LXNpemU6IDEwcHg7XHJcbiAgICB9XHJcblxyXG4gICAgLmxpc3QtaGVhZGVyIHtcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xyXG4gICAgICBwYWRkaW5nOiA4cHggMTRweDtcclxuICAgICAgZm9udC1zaXplOiAxMXB4O1xyXG4gICAgICBjb2xvcjogIzY0NzQ4YjtcclxuICAgICAgYmFja2dyb3VuZDogIzBmMTcyYTtcclxuICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICMxZTI5M2I7XHJcbiAgICAgIHBvc2l0aW9uOiBzdGlja3k7XHJcbiAgICAgIHRvcDogMDtcclxuICAgIH1cclxuXHJcbiAgICAuYWN0aW9uLWl0ZW0ge1xyXG4gICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgIzFlMjkzYjtcclxuICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjFzO1xyXG4gICAgfVxyXG4gICAgLmFjdGlvbi1pdGVtOmhvdmVyIHsgYmFja2dyb3VuZDogcmdiYSgzMCw0MSw1OSwwLjUpOyB9XHJcbiAgICAuYWN0aW9uLWl0ZW0uZXhwYW5kZWQgeyBiYWNrZ3JvdW5kOiAjMWUyOTNiOyB9XHJcblxyXG4gICAgLmFjdGlvbi1yb3cge1xyXG4gICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgICBwYWRkaW5nOiA4cHggMTBweDtcclxuICAgICAgZ2FwOiA4cHg7XHJcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgIH1cclxuICAgIC5hY3Rpb24taW5kZXgge1xyXG4gICAgICBjb2xvcjogIzQ3NTU2OTtcclxuICAgICAgZm9udC1zaXplOiAxMHB4O1xyXG4gICAgICBtaW4td2lkdGg6IDE4cHg7XHJcbiAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xyXG4gICAgfVxyXG4gICAgLmFjdGlvbi10eXBlLWJhZGdlIHtcclxuICAgICAgZm9udC1zaXplOiAxNHB4O1xyXG4gICAgICBtaW4td2lkdGg6IDIwcHg7XHJcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICAgIH1cclxuICAgIC5hY3Rpb24taW5mbyB7XHJcbiAgICAgIGZsZXg6IDE7XHJcbiAgICAgIG1pbi13aWR0aDogMDtcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAgICAgZ2FwOiAxcHg7XHJcbiAgICB9XHJcbiAgICAuYWN0aW9uLWRlc2Mge1xyXG4gICAgICBmb250LXNpemU6IDEycHg7XHJcbiAgICAgIGNvbG9yOiAjY2JkNWUxO1xyXG4gICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xyXG4gICAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcclxuICAgIH1cclxuICAgIC5hY3Rpb24tc2VsZWN0b3Ige1xyXG4gICAgICBmb250LXNpemU6IDEwcHg7XHJcbiAgICAgIGNvbG9yOiAjNjQ3NDhiO1xyXG4gICAgICBmb250LWZhbWlseTogJ0Nhc2NhZGlhIENvZGUnLCAnQ29uc29sYXMnLCBtb25vc3BhY2U7XHJcbiAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XHJcbiAgICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xyXG4gICAgfVxyXG4gICAgLmFjdGlvbi10aW1lIHtcclxuICAgICAgZm9udC1zaXplOiAxMHB4O1xyXG4gICAgICBjb2xvcjogIzQ3NTU2OTtcclxuICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcclxuICAgIH1cclxuICAgIC5yZW1vdmUtYnRuIHtcclxuICAgICAgYmFja2dyb3VuZDogbm9uZTtcclxuICAgICAgYm9yZGVyOiBub25lO1xyXG4gICAgICBjb2xvcjogIzQ3NTU2OTtcclxuICAgICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgICBmb250LXNpemU6IDEycHg7XHJcbiAgICAgIHBhZGRpbmc6IDJweCA1cHg7XHJcbiAgICAgIGJvcmRlci1yYWRpdXM6IDNweDtcclxuICAgICAgb3BhY2l0eTogMDtcclxuICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjE1cywgY29sb3IgMC4xNXM7XHJcbiAgICB9XHJcbiAgICAuYWN0aW9uLXJvdzpob3ZlciAucmVtb3ZlLWJ0biB7IG9wYWNpdHk6IDE7IH1cclxuICAgIC5yZW1vdmUtYnRuOmhvdmVyIHsgY29sb3I6ICNmODcxNzE7IH1cclxuXHJcbiAgICAuYWN0aW9uLWRldGFpbCB7XHJcbiAgICAgIHBhZGRpbmc6IDEwcHggMTRweDtcclxuICAgICAgYmFja2dyb3VuZDogcmdiYSgxNSwyMyw0MiwwLjcpO1xyXG4gICAgICBib3JkZXItdG9wOiAxcHggc29saWQgIzFlMjkzYjtcclxuICAgIH1cclxuICAgIC5kZXRhaWwtZ3JpZCB7XHJcbiAgICAgIGRpc3BsYXk6IGdyaWQ7XHJcbiAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogYXV0byAxZnI7XHJcbiAgICAgIGdhcDogNHB4IDEwcHg7XHJcbiAgICAgIG1hcmdpbi1ib3R0b206IDhweDtcclxuICAgICAgYWxpZ24taXRlbXM6IHN0YXJ0O1xyXG4gICAgfVxyXG4gICAgLmRldGFpbC1sYWJlbCB7IGZvbnQtc2l6ZTogMTBweDsgY29sb3I6ICM2NDc0OGI7IHBhZGRpbmctdG9wOiAycHg7IHdoaXRlLXNwYWNlOiBub3dyYXA7IH1cclxuICAgIC5kZXRhaWwtdmFsdWUge1xyXG4gICAgICBmb250LXNpemU6IDExcHg7XHJcbiAgICAgIGNvbG9yOiAjOTNjNWZkO1xyXG4gICAgICBmb250LWZhbWlseTogJ0Nhc2NhZGlhIENvZGUnLCAnQ29uc29sYXMnLCBtb25vc3BhY2U7XHJcbiAgICAgIHdvcmQtYnJlYWs6IGJyZWFrLWFsbDtcclxuICAgIH1cclxuICAgIC51cmwtdmFsIHsgY29sb3I6ICM2ZWU3Yjc7IH1cclxuICAgIC5zdHJhdGVneS1iYWRnZSB7XHJcbiAgICAgIGZvbnQtc2l6ZTogMTBweDtcclxuICAgICAgcGFkZGluZzogMXB4IDZweDtcclxuICAgICAgYm9yZGVyLXJhZGl1czogM3B4O1xyXG4gICAgICBmb250LWZhbWlseTogbW9ub3NwYWNlO1xyXG4gICAgfVxyXG4gICAgLnN0cmF0LWRhdGEtdGVzdGlkIHsgYmFja2dyb3VuZDogIzA2NGUzYjsgY29sb3I6ICMzNGQzOTk7IH1cclxuICAgIC5zdHJhdC1kYXRhLWN5ICAgICB7IGJhY2tncm91bmQ6ICMwNjRlM2I7IGNvbG9yOiAjMzRkMzk5OyB9XHJcbiAgICAuc3RyYXQtaWQgICAgICAgICAgeyBiYWNrZ3JvdW5kOiAjMWUzYThhOyBjb2xvcjogIzkzYzVmZDsgfVxyXG4gICAgLnN0cmF0LW5hbWUgICAgICAgIHsgYmFja2dyb3VuZDogIzQ0MzM3YTsgY29sb3I6ICNjNGI1ZmQ7IH1cclxuICAgIC5zdHJhdC1jbGFzcyAgICAgICB7IGJhY2tncm91bmQ6ICMzNzQxNTE7IGNvbG9yOiAjOWNhM2FmOyB9XHJcbiAgICAuc3RyYXQtY29tYmluZWQgICAgeyBiYWNrZ3JvdW5kOiAjMjkyNTI0OyBjb2xvcjogI2Q2ZDNkMTsgfVxyXG5cclxuICAgIC5ub3RlLWFyZWEgeyBtYXJnaW4tdG9wOiA2cHg7IH1cclxuICAgIC5ub3RlLWlucHV0IHtcclxuICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcbiAgICAgIGJhY2tncm91bmQ6ICMwZjE3MmE7XHJcbiAgICAgIGJvcmRlcjogMXB4IHNvbGlkICMzMzQxNTU7XHJcbiAgICAgIGNvbG9yOiAjZTJlOGYwO1xyXG4gICAgICBib3JkZXItcmFkaXVzOiA1cHg7XHJcbiAgICAgIHBhZGRpbmc6IDZweCA4cHg7XHJcbiAgICAgIGZvbnQtc2l6ZTogMTFweDtcclxuICAgICAgcmVzaXplOiB2ZXJ0aWNhbDtcclxuICAgIH1cclxuICAgIC5ub3RlLWlucHV0OmZvY3VzIHsgb3V0bGluZTogbm9uZTsgYm9yZGVyLWNvbG9yOiAjM2I4MmY2OyB9XHJcbiAgYF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBY3Rpb25MaXN0Q29tcG9uZW50IHtcclxuICBASW5wdXQoKSBzZXNzaW9uOiBSZWNvcmRpbmdTZXNzaW9uIHwgbnVsbCA9IG51bGw7XHJcbiAgQE91dHB1dCgpIHJlbW92ZUFjdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG4gIEBPdXRwdXQoKSBhZGROb3RlID0gbmV3IEV2ZW50RW1pdHRlcjx7IGlkOiBzdHJpbmc7IG5vdGU6IHN0cmluZyB9PigpO1xyXG5cclxuICBleHBhbmRlZElkID0gc2lnbmFsPHN0cmluZyB8IG51bGw+KG51bGwpO1xyXG4gIG5vdGVNYXA6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcclxuXHJcbiAgdG9nZ2xlRXhwYW5kKGlkOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuZXhwYW5kZWRJZC51cGRhdGUodiA9PiB2ID09PSBpZCA/IG51bGwgOiBpZCk7XHJcbiAgfVxyXG5cclxuICBvblJlbW92ZShpZDogc3RyaW5nLCBlOiBFdmVudCk6IHZvaWQge1xyXG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIHRoaXMucmVtb3ZlQWN0aW9uLmVtaXQoaWQpO1xyXG4gIH1cclxuXHJcbiAgb25BZGROb3RlKGlkOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuYWRkTm90ZS5lbWl0KHsgaWQsIG5vdGU6IHRoaXMubm90ZU1hcFtpZF0gPz8gJycgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRBY3Rpb25JY29uKHR5cGU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBpY29uczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcclxuICAgICAgY2xpY2s6ICAgICAgICfwn5GGJyxcclxuICAgICAgZGJsY2xpY2s6ICAgICfwn5GG8J+RhicsXHJcbiAgICAgIGlucHV0OiAgICAgICAn4oyo77iPJyxcclxuICAgICAgc2VsZWN0OiAgICAgICfwn5OLJyxcclxuICAgICAgc3VibWl0OiAgICAgICfwn5OkJyxcclxuICAgICAgbmF2aWdhdGlvbjogICfwn5SXJyxcclxuICAgICAga2V5cHJlc3M6ICAgICfijKjvuI8nLFxyXG4gICAgICBzY3JvbGw6ICAgICAgJ+KGle+4jycsXHJcbiAgICAgIGhvdmVyOiAgICAgICAn8J+Wse+4jycsXHJcbiAgICAgIGFzc2VydGlvbjogICAn4pyFJyxcclxuICAgICAgc2NyZWVuc2hvdDogICfwn5O4JyxcclxuICAgIH07XHJcbiAgICByZXR1cm4gaWNvbnNbdHlwZV0gPz8gJ+KAoic7XHJcbiAgfVxyXG5cclxuICBmb3JtYXRUaW1lKHRzOiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIG5ldyBEYXRlKHRzKS50b0xvY2FsZVRpbWVTdHJpbmcoJ2RlLURFJywgeyBob3VyOiAnMi1kaWdpdCcsIG1pbnV0ZTogJzItZGlnaXQnLCBzZWNvbmQ6ICcyLWRpZ2l0JyB9KTtcclxuICB9XHJcblxyXG4gIGZvcm1hdER1cmF0aW9uKHN0YXJ0OiBudW1iZXIsIGVuZDogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHMgPSBNYXRoLnJvdW5kKChlbmQgLSBzdGFydCkgLyAxMDAwKTtcclxuICAgIHJldHVybiBzIDwgNjAgPyBgJHtzfXNgIDogYCR7TWF0aC5mbG9vcihzLzYwKX1tICR7cyU2MH1zYDtcclxuICB9XHJcbn1cclxuIl19
|
|
220
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9hY3Rpb24tbGlzdC9hY3Rpb24tbGlzdC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7O0FBK083QyxNQUFNLE9BQU8sbUJBQW1CO0lBNU9oQztRQTZPVyxZQUFPLEdBQTRCLElBQUksQ0FBQztRQUN2QyxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFDMUMsWUFBTyxHQUFHLElBQUksWUFBWSxFQUFnQyxDQUFDO1FBRXJFLGVBQVUsR0FBRyxNQUFNLENBQWdCLElBQUksQ0FBQyxDQUFDO1FBQ3pDLFlBQU8sR0FBMkIsRUFBRSxDQUFDO0tBd0N0QztJQXRDQyxZQUFZLENBQUMsRUFBVTtRQUNyQixJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVELFFBQVEsQ0FBQyxFQUFVLEVBQUUsQ0FBUTtRQUMzQixDQUFDLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVELFNBQVMsQ0FBQyxFQUFVO1FBQ2xCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVELGFBQWEsQ0FBQyxJQUFZO1FBQ3hCLE1BQU0sS0FBSyxHQUEyQjtZQUNwQyxLQUFLLEVBQVEsSUFBSTtZQUNqQixRQUFRLEVBQUssTUFBTTtZQUNuQixLQUFLLEVBQVEsSUFBSTtZQUNqQixNQUFNLEVBQU8sSUFBSTtZQUNqQixNQUFNLEVBQU8sSUFBSTtZQUNqQixVQUFVLEVBQUcsSUFBSTtZQUNqQixRQUFRLEVBQUssSUFBSTtZQUNqQixNQUFNLEVBQU8sSUFBSTtZQUNqQixLQUFLLEVBQVEsS0FBSztZQUNsQixTQUFTLEVBQUksR0FBRztZQUNoQixVQUFVLEVBQUcsSUFBSTtTQUNsQixDQUFDO1FBQ0YsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDO0lBQzVCLENBQUM7SUFFRCxVQUFVLENBQUMsRUFBVTtRQUNuQixPQUFPLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLE9BQU8sRUFBRSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztJQUM3RyxDQUFDO0lBRUQsY0FBYyxDQUFDLEtBQWEsRUFBRSxHQUFXO1FBQ3ZDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDM0MsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBQyxFQUFFLEdBQUcsQ0FBQztJQUM1RCxDQUFDOytHQTdDVSxtQkFBbUI7bUdBQW5CLG1CQUFtQiwwS0F4T3BCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWdGVCxvakZBakZTLFlBQVksOEJBQUUsV0FBVzs7NEZBeU94QixtQkFBbUI7a0JBNU8vQixTQUFTOytCQUNFLGlCQUFpQixjQUNmLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxXQUFXLENBQUMsWUFDMUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBZ0ZUOzhCQXlKUSxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0ksWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxPQUFPO3NCQUFoQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgUmVjb3JkZWRBY3Rpb24sIFJlY29yZGluZ1Nlc3Npb24gfSBmcm9tICcuLi9tb2RlbHMvcmVjb3JkZWQtYWN0aW9uLm1vZGVsJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLWFjdGlvbi1saXN0JyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEZvcm1zTW9kdWxlXSxcclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgPGRpdiBjbGFzcz1cImFjdGlvbi1saXN0XCIgZGF0YS1kZWJ1Zy1wYW5lbD5cclxuICAgICAgQGlmICghc2Vzc2lvbiB8fCBzZXNzaW9uLmFjdGlvbnMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImVtcHR5LXN0YXRlXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZW1wdHktaWNvblwiPvCfjqw8L2Rpdj5cclxuICAgICAgICAgIDxwPk5vY2gga2VpbmUgQWt0aW9uZW4gYXVmZ2V6ZWljaG5ldC48L3A+XHJcbiAgICAgICAgICA8cCBjbGFzcz1cImhpbnRcIj5TdGFydGUgZGllIEF1Zm5haG1lIHVuZCBpbnRlcmFnaWVyZSBtaXQgZGVyIEFwcC48L3A+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hvcnRjdXRzLWhpbnRcIj5cclxuICAgICAgICAgICAgPGtiZD5DdHJsK1NoaWZ0K0Q8L2tiZD4gUGFuZWwgJm5ic3A7XHJcbiAgICAgICAgICAgIDxrYmQ+Q3RybCtTaGlmdCtSPC9rYmQ+IFJlY29yZFxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJsaXN0LWhlYWRlclwiPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJsaXN0LWNvdW50XCI+e3sgc2Vzc2lvbi5hY3Rpb25zLmxlbmd0aCB9fSBBa3Rpb25lbjwvc3Bhbj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGlzdC1kdXJhdGlvblwiPlxyXG4gICAgICAgICAgICBAaWYgKHNlc3Npb24uZW5kVGltZSkge1xyXG4gICAgICAgICAgICAgIHt7IGZvcm1hdER1cmF0aW9uKHNlc3Npb24uc3RhcnRUaW1lLCBzZXNzaW9uLmVuZFRpbWUpIH19XHJcbiAgICAgICAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgICAgICAgIExpdmVcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICBAZm9yIChhY3Rpb24gb2Ygc2Vzc2lvbi5hY3Rpb25zOyB0cmFjayBhY3Rpb24uaWQ7IGxldCBpID0gJGluZGV4KSB7XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uLWl0ZW1cIiBbY2xhc3MuZXhwYW5kZWRdPVwiZXhwYW5kZWRJZCgpID09PSBhY3Rpb24uaWRcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFjdGlvbi1yb3dcIiAoY2xpY2spPVwidG9nZ2xlRXhwYW5kKGFjdGlvbi5pZClcIj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFjdGlvbi1pbmRleFwiPnt7IGkgKyAxIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYWN0aW9uLXR5cGUtYmFkZ2VcIiBbY2xhc3NdPVwiJ3R5cGUtJyArIGFjdGlvbi50eXBlXCI+XHJcbiAgICAgICAgICAgICAgICB7eyBnZXRBY3Rpb25JY29uKGFjdGlvbi50eXBlKSB9fVxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uLWluZm9cIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYWN0aW9uLWRlc2NcIj57eyBhY3Rpb24uZGVzY3JpcHRpb24gfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFjdGlvbi1zZWxlY3RvclwiPnt7IGFjdGlvbi5zZWxlY3RvciB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFjdGlvbi10aW1lXCI+e3sgZm9ybWF0VGltZShhY3Rpb24udGltZXN0YW1wKSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInJlbW92ZS1idG5cIlxyXG4gICAgICAgICAgICAgICAgZGF0YS1kZWJ1Zy1wYW5lbFxyXG4gICAgICAgICAgICAgICAgdGl0bGU9XCJBa3Rpb24gZW50ZmVybmVuXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvblJlbW92ZShhY3Rpb24uaWQsICRldmVudClcIlxyXG4gICAgICAgICAgICAgID7inJU8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICBAaWYgKGV4cGFuZGVkSWQoKSA9PT0gYWN0aW9uLmlkKSB7XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFjdGlvbi1kZXRhaWxcIiBkYXRhLWRlYnVnLXBhbmVsPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRldGFpbC1ncmlkXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGV0YWlsLWxhYmVsXCI+U2VsZWN0b3I8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDxjb2RlIGNsYXNzPVwiZGV0YWlsLXZhbHVlXCI+e3sgYWN0aW9uLnNlbGVjdG9yIH19PC9jb2RlPlxyXG4gICAgICAgICAgICAgICAgICBAaWYgKGFjdGlvbi52YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGV0YWlsLWxhYmVsXCI+V2VydDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8Y29kZSBjbGFzcz1cImRldGFpbC12YWx1ZVwiPnt7IGFjdGlvbi52YWx1ZSB9fTwvY29kZT5cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBAaWYgKGFjdGlvbi5lbGVtZW50Py50YWdOYW1lKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkZXRhaWwtbGFiZWxcIj5FbGVtZW50PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxjb2RlIGNsYXNzPVwiZGV0YWlsLXZhbHVlXCI+Jmx0O3t7IGFjdGlvbi5lbGVtZW50Py50YWdOYW1lIH19Jmd0OzwvY29kZT5cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRldGFpbC1sYWJlbFwiPlN0cmF0ZWdpZTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkZXRhaWwtdmFsdWUgc3RyYXRlZ3ktYmFkZ2VcIiBbY2xhc3NdPVwiJ3N0cmF0LScgKyBhY3Rpb24uc2VsZWN0b3JTdHJhdGVneVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IGFjdGlvbi5zZWxlY3RvclN0cmF0ZWd5IH19XHJcbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkZXRhaWwtbGFiZWxcIj5VUkw8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDxjb2RlIGNsYXNzPVwiZGV0YWlsLXZhbHVlIHVybC12YWxcIj57eyBhY3Rpb24udXJsIH19PC9jb2RlPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibm90ZS1hcmVhXCI+XHJcbiAgICAgICAgICAgICAgICAgIDx0ZXh0YXJlYVxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGEtZGVidWctcGFuZWxcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm5vdGUtaW5wdXRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwibm90ZU1hcFthY3Rpb24uaWRdXCJcclxuICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIk5vdGl6IHp1IGRpZXNlciBBa3Rpb24uLi5cIlxyXG4gICAgICAgICAgICAgICAgICAgIHJvd3M9XCIyXCJcclxuICAgICAgICAgICAgICAgICAgICAoYmx1cik9XCJvbkFkZE5vdGUoYWN0aW9uLmlkKVwiXHJcbiAgICAgICAgICAgICAgICAgID48L3RleHRhcmVhPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgPC9kaXY+XHJcbiAgYCxcclxuICBzdHlsZXM6IFtgXHJcbiAgICAuYWN0aW9uLWxpc3QgeyBwYWRkaW5nOiAwOyB9XHJcblxyXG4gICAgLmVtcHR5LXN0YXRlIHtcclxuICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgICBwYWRkaW5nOiAzMnB4IDIwcHg7XHJcbiAgICAgIGNvbG9yOiAjNjQ3NDhiO1xyXG4gICAgfVxyXG4gICAgLmVtcHR5LWljb24geyBmb250LXNpemU6IDQwcHg7IG1hcmdpbi1ib3R0b206IDEwcHg7IH1cclxuICAgIC5lbXB0eS1zdGF0ZSBwIHsgbWFyZ2luOiA0cHggMDsgZm9udC1zaXplOiAxM3B4OyB9XHJcbiAgICAuaGludCB7IGZvbnQtc2l6ZTogMTFweDsgY29sb3I6ICM0NzU1Njk7IH1cclxuICAgIC5zaG9ydGN1dHMtaGludCB7XHJcbiAgICAgIG1hcmdpbi10b3A6IDEycHg7XHJcbiAgICAgIGZvbnQtc2l6ZTogMTFweDtcclxuICAgICAgY29sb3I6ICM0NzU1Njk7XHJcbiAgICB9XHJcbiAgICBrYmQge1xyXG4gICAgICBiYWNrZ3JvdW5kOiAjMWUyOTNiO1xyXG4gICAgICBib3JkZXI6IDFweCBzb2xpZCAjMzM0MTU1O1xyXG4gICAgICBjb2xvcjogIzk0YTNiODtcclxuICAgICAgcGFkZGluZzogMnB4IDZweDtcclxuICAgICAgYm9yZGVyLXJhZGl1czogNHB4O1xyXG4gICAgICBmb250LXNpemU6IDEwcHg7XHJcbiAgICB9XHJcblxyXG4gICAgLmxpc3QtaGVhZGVyIHtcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xyXG4gICAgICBwYWRkaW5nOiA4cHggMTRweDtcclxuICAgICAgZm9udC1zaXplOiAxMXB4O1xyXG4gICAgICBjb2xvcjogIzY0NzQ4YjtcclxuICAgICAgYmFja2dyb3VuZDogIzBmMTcyYTtcclxuICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICMxZTI5M2I7XHJcbiAgICAgIHBvc2l0aW9uOiBzdGlja3k7XHJcbiAgICAgIHRvcDogMDtcclxuICAgIH1cclxuXHJcbiAgICAuYWN0aW9uLWl0ZW0ge1xyXG4gICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgIzFlMjkzYjtcclxuICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjFzO1xyXG4gICAgfVxyXG4gICAgLmFjdGlvbi1pdGVtOmhvdmVyIHsgYmFja2dyb3VuZDogcmdiYSgzMCw0MSw1OSwwLjUpOyB9XHJcbiAgICAuYWN0aW9uLWl0ZW0uZXhwYW5kZWQgeyBiYWNrZ3JvdW5kOiAjMWUyOTNiOyB9XHJcblxyXG4gICAgLmFjdGlvbi1yb3cge1xyXG4gICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgICBwYWRkaW5nOiA4cHggMTBweDtcclxuICAgICAgZ2FwOiA4cHg7XHJcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgIH1cclxuICAgIC5hY3Rpb24taW5kZXgge1xyXG4gICAgICBjb2xvcjogIzQ3NTU2OTtcclxuICAgICAgZm9udC1zaXplOiAxMHB4O1xyXG4gICAgICBtaW4td2lkdGg6IDE4cHg7XHJcbiAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xyXG4gICAgfVxyXG4gICAgLmFjdGlvbi10eXBlLWJhZGdlIHtcclxuICAgICAgZm9udC1zaXplOiAxNHB4O1xyXG4gICAgICBtaW4td2lkdGg6IDIwcHg7XHJcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICAgIH1cclxuICAgIC5hY3Rpb24taW5mbyB7XHJcbiAgICAgIGZsZXg6IDE7XHJcbiAgICAgIG1pbi13aWR0aDogMDtcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAgICAgZ2FwOiAxcHg7XHJcbiAgICB9XHJcbiAgICAuYWN0aW9uLWRlc2Mge1xyXG4gICAgICBmb250LXNpemU6IDEycHg7XHJcbiAgICAgIGNvbG9yOiAjY2JkNWUxO1xyXG4gICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xyXG4gICAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcclxuICAgIH1cclxuICAgIC5hY3Rpb24tc2VsZWN0b3Ige1xyXG4gICAgICBmb250LXNpemU6IDEwcHg7XHJcbiAgICAgIGNvbG9yOiAjNjQ3NDhiO1xyXG4gICAgICBmb250LWZhbWlseTogJ0Nhc2NhZGlhIENvZGUnLCAnQ29uc29sYXMnLCBtb25vc3BhY2U7XHJcbiAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XHJcbiAgICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xyXG4gICAgfVxyXG4gICAgLmFjdGlvbi10aW1lIHtcclxuICAgICAgZm9udC1zaXplOiAxMHB4O1xyXG4gICAgICBjb2xvcjogIzQ3NTU2OTtcclxuICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcclxuICAgIH1cclxuICAgIC5yZW1vdmUtYnRuIHtcclxuICAgICAgYmFja2dyb3VuZDogbm9uZTtcclxuICAgICAgYm9yZGVyOiBub25lO1xyXG4gICAgICBjb2xvcjogIzQ3NTU2OTtcclxuICAgICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgICBmb250LXNpemU6IDEycHg7XHJcbiAgICAgIHBhZGRpbmc6IDJweCA1cHg7XHJcbiAgICAgIGJvcmRlci1yYWRpdXM6IDNweDtcclxuICAgICAgb3BhY2l0eTogMDtcclxuICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjE1cywgY29sb3IgMC4xNXM7XHJcbiAgICB9XHJcbiAgICAuYWN0aW9uLXJvdzpob3ZlciAucmVtb3ZlLWJ0biB7IG9wYWNpdHk6IDE7IH1cclxuICAgIC5yZW1vdmUtYnRuOmhvdmVyIHsgY29sb3I6ICNmODcxNzE7IH1cclxuXHJcbiAgICAuYWN0aW9uLWRldGFpbCB7XHJcbiAgICAgIHBhZGRpbmc6IDEwcHggMTRweDtcclxuICAgICAgYmFja2dyb3VuZDogcmdiYSgxNSwyMyw0MiwwLjcpO1xyXG4gICAgICBib3JkZXItdG9wOiAxcHggc29saWQgIzFlMjkzYjtcclxuICAgIH1cclxuICAgIC5kZXRhaWwtZ3JpZCB7XHJcbiAgICAgIGRpc3BsYXk6IGdyaWQ7XHJcbiAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogYXV0byAxZnI7XHJcbiAgICAgIGdhcDogNHB4IDEwcHg7XHJcbiAgICAgIG1hcmdpbi1ib3R0b206IDhweDtcclxuICAgICAgYWxpZ24taXRlbXM6IHN0YXJ0O1xyXG4gICAgfVxyXG4gICAgLmRldGFpbC1sYWJlbCB7IGZvbnQtc2l6ZTogMTBweDsgY29sb3I6ICM2NDc0OGI7IHBhZGRpbmctdG9wOiAycHg7IHdoaXRlLXNwYWNlOiBub3dyYXA7IH1cclxuICAgIC5kZXRhaWwtdmFsdWUge1xyXG4gICAgICBmb250LXNpemU6IDExcHg7XHJcbiAgICAgIGNvbG9yOiAjOTNjNWZkO1xyXG4gICAgICBmb250LWZhbWlseTogJ0Nhc2NhZGlhIENvZGUnLCAnQ29uc29sYXMnLCBtb25vc3BhY2U7XHJcbiAgICAgIHdvcmQtYnJlYWs6IGJyZWFrLWFsbDtcclxuICAgIH1cclxuICAgIC51cmwtdmFsIHsgY29sb3I6ICM2ZWU3Yjc7IH1cclxuICAgIC5zdHJhdGVneS1iYWRnZSB7XHJcbiAgICAgIGZvbnQtc2l6ZTogMTBweDtcclxuICAgICAgcGFkZGluZzogMXB4IDZweDtcclxuICAgICAgYm9yZGVyLXJhZGl1czogM3B4O1xyXG4gICAgICBmb250LWZhbWlseTogbW9ub3NwYWNlO1xyXG4gICAgfVxyXG4gICAgLnN0cmF0LWRhdGEtdGVzdGlkIHsgYmFja2dyb3VuZDogIzA2NGUzYjsgY29sb3I6ICMzNGQzOTk7IH1cclxuICAgIC5zdHJhdC1kYXRhLWN5ICAgICB7IGJhY2tncm91bmQ6ICMwNjRlM2I7IGNvbG9yOiAjMzRkMzk5OyB9XHJcbiAgICAuc3RyYXQtaWQgICAgICAgICAgeyBiYWNrZ3JvdW5kOiAjMWUzYThhOyBjb2xvcjogIzkzYzVmZDsgfVxyXG4gICAgLnN0cmF0LW5hbWUgICAgICAgIHsgYmFja2dyb3VuZDogIzQ0MzM3YTsgY29sb3I6ICNjNGI1ZmQ7IH1cclxuICAgIC5zdHJhdC1jbGFzcyAgICAgICB7IGJhY2tncm91bmQ6ICMzNzQxNTE7IGNvbG9yOiAjOWNhM2FmOyB9XHJcbiAgICAuc3RyYXQtY29tYmluZWQgICAgeyBiYWNrZ3JvdW5kOiAjMjkyNTI0OyBjb2xvcjogI2Q2ZDNkMTsgfVxyXG5cclxuICAgIC5ub3RlLWFyZWEgeyBtYXJnaW4tdG9wOiA2cHg7IH1cclxuICAgIC5ub3RlLWlucHV0IHtcclxuICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcbiAgICAgIGJhY2tncm91bmQ6ICMwZjE3MmE7XHJcbiAgICAgIGJvcmRlcjogMXB4IHNvbGlkICMzMzQxNTU7XHJcbiAgICAgIGNvbG9yOiAjZTJlOGYwO1xyXG4gICAgICBib3JkZXItcmFkaXVzOiA1cHg7XHJcbiAgICAgIHBhZGRpbmc6IDZweCA4cHg7XHJcbiAgICAgIGZvbnQtc2l6ZTogMTFweDtcclxuICAgICAgcmVzaXplOiB2ZXJ0aWNhbDtcclxuICAgIH1cclxuICAgIC5ub3RlLWlucHV0OmZvY3VzIHsgb3V0bGluZTogbm9uZTsgYm9yZGVyLWNvbG9yOiAjM2I4MmY2OyB9XHJcbiAgYF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBY3Rpb25MaXN0Q29tcG9uZW50IHtcclxuICBASW5wdXQoKSBzZXNzaW9uOiBSZWNvcmRpbmdTZXNzaW9uIHwgbnVsbCA9IG51bGw7XHJcbiAgQE91dHB1dCgpIHJlbW92ZUFjdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG4gIEBPdXRwdXQoKSBhZGROb3RlID0gbmV3IEV2ZW50RW1pdHRlcjx7IGlkOiBzdHJpbmc7IG5vdGU6IHN0cmluZyB9PigpO1xyXG5cclxuICBleHBhbmRlZElkID0gc2lnbmFsPHN0cmluZyB8IG51bGw+KG51bGwpO1xyXG4gIG5vdGVNYXA6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcclxuXHJcbiAgdG9nZ2xlRXhwYW5kKGlkOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuZXhwYW5kZWRJZC51cGRhdGUodiA9PiB2ID09PSBpZCA/IG51bGwgOiBpZCk7XHJcbiAgfVxyXG5cclxuICBvblJlbW92ZShpZDogc3RyaW5nLCBlOiBFdmVudCk6IHZvaWQge1xyXG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIHRoaXMucmVtb3ZlQWN0aW9uLmVtaXQoaWQpO1xyXG4gIH1cclxuXHJcbiAgb25BZGROb3RlKGlkOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuYWRkTm90ZS5lbWl0KHsgaWQsIG5vdGU6IHRoaXMubm90ZU1hcFtpZF0gPz8gJycgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRBY3Rpb25JY29uKHR5cGU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBpY29uczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcclxuICAgICAgY2xpY2s6ICAgICAgICfwn5GGJyxcclxuICAgICAgZGJsY2xpY2s6ICAgICfwn5GG8J+RhicsXHJcbiAgICAgIGlucHV0OiAgICAgICAn4oyo77iPJyxcclxuICAgICAgc2VsZWN0OiAgICAgICfwn5OLJyxcclxuICAgICAgc3VibWl0OiAgICAgICfwn5OkJyxcclxuICAgICAgbmF2aWdhdGlvbjogICfwn5SXJyxcclxuICAgICAga2V5cHJlc3M6ICAgICfijKjvuI8nLFxyXG4gICAgICBzY3JvbGw6ICAgICAgJ+KGle+4jycsXHJcbiAgICAgIGhvdmVyOiAgICAgICAn8J+Wse+4jycsXHJcbiAgICAgIGFzc2VydGlvbjogICAn4pyFJyxcclxuICAgICAgc2NyZWVuc2hvdDogICfwn5O4JyxcclxuICAgIH07XHJcbiAgICByZXR1cm4gaWNvbnNbdHlwZV0gPz8gJ+KAoic7XHJcbiAgfVxyXG5cclxuICBmb3JtYXRUaW1lKHRzOiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIG5ldyBEYXRlKHRzKS50b0xvY2FsZVRpbWVTdHJpbmcoJ2RlLURFJywgeyBob3VyOiAnMi1kaWdpdCcsIG1pbnV0ZTogJzItZGlnaXQnLCBzZWNvbmQ6ICcyLWRpZ2l0JyB9KTtcclxuICB9XHJcblxyXG4gIGZvcm1hdER1cmF0aW9uKHN0YXJ0OiBudW1iZXIsIGVuZDogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHMgPSBNYXRoLnJvdW5kKChlbmQgLSBzdGFydCkgLyAxMDAwKTtcclxuICAgIHJldHVybiBzIDwgNjAgPyBgJHtzfXNgIDogYCR7TWF0aC5mbG9vcihzLzYwKX1tICR7cyU2MH1zYDtcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -513,4 +513,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
513
513
|
}
|
|
514
514
|
`, styles: [".debug-fab{bottom:24px;right:24px;z-index:99999;width:52px;height:52px;border-radius:50%;border:none;background:#1e293b;color:#fff;font-size:22px;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:0 4px 20px #0006;transition:transform .2s,background .2s;position:fixed}.debug-fab:hover{transform:scale(1.1);background:#334155}.debug-fab.recording{background:#dc2626}.debug-fab.pulse{animation:fabPulse 1.5s ease-in-out infinite}@keyframes fabPulse{0%,to{box-shadow:0 4px 20px #dc262666}50%{box-shadow:0 4px 30px #dc2626e6,0 0 0 8px #dc262626}}.fab-badge{position:absolute;top:-4px;right:-4px;background:#f59e0b;color:#000;font-size:10px;font-weight:700;min-width:18px;height:18px;border-radius:9px;display:flex;align-items:center;justify-content:center;padding:0 4px}.debug-panel{position:fixed;z-index:99998;width:420px;max-height:80vh;background:#0f172a;color:#e2e8f0;border-radius:12px;border:1px solid #1e3a5f;box-shadow:0 25px 60px #0009;display:flex;flex-direction:column;font-family:Segoe UI,system-ui,sans-serif;font-size:13px;overflow:hidden}.pos-bottom-right{bottom:88px;right:24px}.pos-bottom-left{bottom:88px;left:24px}.pos-top-right{top:24px;right:24px}.pos-top-left{top:24px;left:24px}.panel-header{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;background:#1e293b;border-bottom:1px solid #334155;cursor:move;-webkit-user-select:none;user-select:none;flex-shrink:0}.header-left{display:flex;align-items:center;gap:8px}.panel-icon{font-size:16px}.panel-title{font-weight:600;font-size:14px;color:#f1f5f9}.rec-indicator{font-size:10px;font-weight:700;color:#ef4444;background:#ef444426;padding:2px 7px;border-radius:4px;animation:blink 1s step-end infinite}.rec-indicator.paused{color:#f59e0b;background:#f59e0b26;animation:none}@keyframes blink{50%{opacity:.4}}.header-actions{display:flex;gap:4px}.icon-btn{background:none;border:none;color:#94a3b8;cursor:pointer;padding:4px;border-radius:4px;font-size:14px;line-height:1;transition:color .15s,background .15s}.icon-btn:hover{color:#f1f5f9;background:#334155}.session-setup{padding:10px 14px;border-bottom:1px solid #1e293b;display:flex;flex-direction:column;gap:6px;flex-shrink:0}.session-input,.session-desc{background:#1e293b;border:1px solid #334155;color:#e2e8f0;border-radius:6px;padding:6px 10px;font-size:12px;width:100%;box-sizing:border-box;resize:vertical}.session-input:focus,.session-desc:focus{outline:none;border-color:#3b82f6}.recording-controls{display:flex;gap:6px;padding:10px 14px;border-bottom:1px solid #1e293b;flex-wrap:wrap;flex-shrink:0}.ctrl-btn{border:none;border-radius:6px;padding:6px 14px;font-size:12px;font-weight:600;cursor:pointer;transition:filter .15s,transform .1s;display:flex;align-items:center;gap:5px}.ctrl-btn:hover:not(:disabled){filter:brightness(1.15);transform:translateY(-1px)}.ctrl-btn:active:not(:disabled){transform:translateY(0)}.ctrl-btn:disabled{opacity:.5;cursor:not-allowed}.ctrl-btn.start{background:#16a34a;color:#fff}.ctrl-btn.stop{background:#dc2626;color:#fff}.ctrl-btn.pause{background:#d97706;color:#fff}.ctrl-btn.generate{background:#7c3aed;color:#fff;flex:1;justify-content:center}.ctrl-btn.clear{background:#374151;color:#9ca3af;padding:6px 10px}.spinner{display:inline-block;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.error-banner{background:#dc262626;border-left:3px solid #dc2626;color:#fca5a5;padding:8px 14px;font-size:12px;flex-shrink:0}.tab-bar{display:flex;border-bottom:1px solid #1e293b;flex-shrink:0}.tab-btn{flex:1;background:none;border:none;color:#64748b;padding:8px 4px;font-size:12px;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:5px;border-bottom:2px solid transparent;transition:color .15s}.tab-btn:hover:not(:disabled){color:#cbd5e1}.tab-btn.active{color:#60a5fa;border-bottom-color:#3b82f6}.tab-btn:disabled{opacity:.4;cursor:not-allowed}.tab-badge{background:#334155;color:#94a3b8;font-size:10px;padding:1px 5px;border-radius:3px}.tab-badge.new{background:#7c3aed;color:#e9d5ff}.tab-content{overflow-y:auto;flex:1;min-height:0}.tab-content::-webkit-scrollbar{width:5px}.tab-content::-webkit-scrollbar-track{background:transparent}.tab-content::-webkit-scrollbar-thumb{background:#334155;border-radius:3px}.sessions-list{padding:10px 14px;display:flex;flex-direction:column;gap:8px}.session-card{background:#1e293b;border:1px solid #334155;border-radius:8px;padding:10px}.session-card-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.session-name{font-weight:600;color:#f1f5f9;font-size:13px}.session-meta{font-size:11px;color:#64748b}.session-card-actions{display:flex;gap:6px}.sm-btn{background:#334155;border:none;color:#cbd5e1;padding:4px 10px;border-radius:5px;font-size:11px;cursor:pointer;transition:background .15s}.sm-btn:hover{background:#475569}.sm-btn.danger{color:#fca5a5}.sm-btn.danger:hover{background:#dc262633}.resize-handle{text-align:center;color:#334155;cursor:ns-resize;font-size:16px;padding:2px;flex-shrink:0;background:#0f172a;-webkit-user-select:none;user-select:none}.resize-handle:hover{color:#64748b}\n"] }]
|
|
515
515
|
}] });
|
|
516
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVidWctcGFuZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVidWctcmVjb3JkZXIvc3JjL2xpYi9kZWJ1Zy1wYW5lbC9kZWJ1Zy1wYW5lbC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sR0FDcEMsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDdEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFFMUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDM0UsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDOUUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDdkYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNENBQTRDLENBQUM7OztBQXVjcEYsTUFBTSxPQUFPLG1CQUFtQjtJQWxjaEM7UUFtY0UsYUFBUSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNuQyxjQUFTLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDdkMsVUFBSyxHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBRXJDLGNBQVMsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUIsY0FBUyxHQUFHLE1BQU0sQ0FBVyxTQUFTLENBQUMsQ0FBQztRQUN4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QVcsRUFBRSxtQkFBbUIsRUFBRSxvQkFBb0IsRUFBRSx1QkFBdUIsRUFBRSxzQkFBc0IsQ0FBQyxZQUN0SDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBZ01UIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsIHNpZ25hbCwgY29tcHV0ZWQsIGluamVjdCwgT25Jbml0LCBPbkRlc3Ryb3ksXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBSZWNvcmRlclNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9yZWNvcmRlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQWlHZW5lcmF0b3JTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvYWktZ2VuZXJhdG9yLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBScndlYlJlY29yZGVyU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3Jyd2ViLXJlY29yZGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBSZWNvcmRpbmdTZXNzaW9uIH0gZnJvbSAnLi4vbW9kZWxzL3JlY29yZGVkLWFjdGlvbi5tb2RlbCc7XHJcbmltcG9ydCB7IEFjdGlvbkxpc3RDb21wb25lbnQgfSBmcm9tICcuLi9hY3Rpb24tbGlzdC9hY3Rpb24tbGlzdC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUZXN0UHJldmlld0NvbXBvbmVudCB9IGZyb20gJy4uL3Rlc3QtcHJldmlldy90ZXN0LXByZXZpZXcuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU2V0dGluZ3NEaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi9zZXR0aW5ncy1kaWFsb2cvc2V0dGluZ3MtZGlhbG9nLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFNlc3Npb25SZXBsYXlDb21wb25lbnQgfSBmcm9tICcuLi9zZXNzaW9uLXJlcGxheS9zZXNzaW9uLXJlcGxheS5jb21wb25lbnQnO1xyXG5cclxudHlwZSBQYW5lbFRhYiA9ICdhY3Rpb25zJyB8ICd0ZXN0JyB8ICdzZXNzaW9ucycgfCAncmVwbGF5JztcclxudHlwZSBQYW5lbFBvc2l0aW9uID0gJ2JvdHRvbS1yaWdodCcgfCAnYm90dG9tLWxlZnQnIHwgJ3RvcC1yaWdodCcgfCAndG9wLWxlZnQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtZGVidWctcGFuZWwnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRm9ybXNNb2R1bGUsIEFjdGlvbkxpc3RDb21wb25lbnQsIFRlc3RQcmV2aWV3Q29tcG9uZW50LCBTZXR0aW5nc0RpYWxvZ0NvbXBvbmVudCwgU2Vzc2lvblJlcGxheUNvbXBvbmVudF0sXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDwhLS0gVG9nZ2xlIEZBQiAtLT5cclxuICAgIDxidXR0b25cclxuICAgICAgZGF0YS1kZWJ1Zy1wYW5lbFxyXG4gICAgICBjbGFzcz1cImRlYnVnLWZhYlwiXHJcbiAgICAgIFtjbGFzcy5yZWNvcmRpbmddPVwicmVjb3JkZXIuaXNSZWNvcmRpbmcoKVwiXHJcbiAgICAgIFtjbGFzcy5wdWxzZV09XCJyZWNvcmRlci5pc1JlY29yZGluZygpICYmICFyZWNvcmRlci5pc1BhdXNlZCgpXCJcclxuICAgICAgKGNsaWNrKT1cInRvZ2dsZVBhbmVsKClcIlxyXG4gICAgICBbdGl0bGVdPVwicGFuZWxPcGVuKCkgPyAnRGVidWcgUGFuZWwgc2NobGllw59lbicgOiAnRGVidWcgUGFuZWwgw7ZmZm5lbidcIlxyXG4gICAgPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cImZhYi1pY29uXCI+e3sgcmVjb3JkZXIuaXNSZWNvcmRpbmcoKSA/ICfij7onIDogJ/CfkJsnIH19PC9zcGFuPlxyXG4gICAgICBAaWYgKHJlY29yZGVyLmlzUmVjb3JkaW5nKCkgJiYgcmVjb3JkZXIuYWN0aW9uQ291bnQoKSA+IDApIHtcclxuICAgICAgICA8c3BhbiBjbGFzcz1cImZhYi1iYWRnZVwiPnt7IHJlY29yZGVyLmFjdGlvbkNvdW50KCkgfX08L3NwYW4+XHJcbiAgICAgIH1cclxuICAgIDwvYnV0dG9uPlxyXG5cclxuICAgIDwhLS0gTWFpbiBQYW5lbCAtLT5cclxuICAgIEBpZiAocGFuZWxPcGVuKCkpIHtcclxuICAgICAgPGRpdlxyXG4gICAgICAgIGRhdGEtZGVidWctcGFuZWxcclxuICAgICAgICBjbGFzcz1cImRlYnVnLXBhbmVsXCJcclxuICAgICAgICBbY2xhc3NdPVwiJ3Bvcy0nICsgcG9zaXRpb24oKVwiXHJcbiAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cInBhbmVsV2lkdGgoKVwiXHJcbiAgICAgID5cclxuICAgICAgICA8IS0tIEhlYWRlciAtLT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicGFuZWwtaGVhZGVyXCIgKG1vdXNlZG93bik9XCJzdGFydERyYWcoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRlci1sZWZ0XCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicGFuZWwtaWNvblwiPvCfkJs8L3NwYW4+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicGFuZWwtdGl0bGVcIj5EZWJ1ZyBSZWNvcmRlcjwvc3Bhbj5cclxuICAgICAgICAgICAgQGlmIChyZWNvcmRlci5pc1JlY29yZGluZygpKSB7XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJyZWMtaW5kaWNhdG9yXCIgW2NsYXNzLnBhdXNlZF09XCJyZWNvcmRlci5pc1BhdXNlZCgpXCI+XHJcbiAgICAgICAgICAgICAgICB7eyByZWNvcmRlci5pc1BhdXNlZCgpID8gJ+KPuCBQQVVTRUQnIDogJ+KPuiBSRUMnIH19XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXItYWN0aW9uc1wiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiaWNvbi1idG5cIiB0aXRsZT1cIkVpbnN0ZWxsdW5nZW5cIiAoY2xpY2spPVwic2hvd1NldHRpbmdzLnNldCh0cnVlKVwiPuKame+4jzwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiaWNvbi1idG5cIiB0aXRsZT1cIlBvc2l0aW9uIHdlY2hzZWxuXCIgKGNsaWNrKT1cImN5Y2xlUG9zaXRpb24oKVwiPvCfk4w8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImljb24tYnRuXCIgdGl0bGU9XCJTY2hsaWXDn2VuXCIgKGNsaWNrKT1cInRvZ2dsZVBhbmVsKClcIj7inJU8L2J1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8IS0tIFNlc3Npb24gTmFtZSBJbnB1dCAob25seSB3aGVuIG5vdCByZWNvcmRpbmcpIC0tPlxyXG4gICAgICAgIEBpZiAoIXJlY29yZGVyLmlzUmVjb3JkaW5nKCkpIHtcclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZXNzaW9uLXNldHVwXCI+XHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgIGRhdGEtZGVidWctcGFuZWxcclxuICAgICAgICAgICAgICBjbGFzcz1cInNlc3Npb24taW5wdXRcIlxyXG4gICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlc3Npb25OYW1lXCJcclxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlc3Npb24tTmFtZSAob3B0aW9uYWwpXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPHRleHRhcmVhXHJcbiAgICAgICAgICAgICAgZGF0YS1kZWJ1Zy1wYW5lbFxyXG4gICAgICAgICAgICAgIGNsYXNzPVwic2Vzc2lvbi1kZXNjXCJcclxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlc3Npb25EZXNjXCJcclxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkZlaGxlcmJlc2NocmVpYnVuZy4uLlwiXHJcbiAgICAgICAgICAgICAgcm93cz1cIjJcIlxyXG4gICAgICAgICAgICA+PC90ZXh0YXJlYT5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgPCEtLSBSZWNvcmRpbmcgQ29udHJvbHMgLS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJlY29yZGluZy1jb250cm9sc1wiIGRhdGEtZGVidWctcGFuZWw+XHJcbiAgICAgICAgICBAaWYgKCFyZWNvcmRlci5pc1JlY29yZGluZygpKSB7XHJcbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjdHJsLWJ0biBzdGFydFwiIChjbGljayk9XCJzdGFydFJlY29yZGluZygpXCI+XHJcbiAgICAgICAgICAgICAg4pa2IEF1Zm5haG1lIHN0YXJ0ZW5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICB9IEBlbHNlIHtcclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImN0cmwtYnRuIHBhdXNlXCIgKGNsaWNrKT1cInJlY29yZGVyLnBhdXNlUmVjb3JkaW5nKClcIj5cclxuICAgICAgICAgICAgICB7eyByZWNvcmRlci5pc1BhdXNlZCgpID8gJ+KWtiBGb3J0c2V0emVuJyA6ICfij7ggUGF1c2UnIH19XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY3RybC1idG4gc3RvcFwiIChjbGljayk9XCJzdG9wUmVjb3JkaW5nKClcIj5cclxuICAgICAgICAgICAgICDij7kgU3RvcHBlblxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImN0cmwtYnRuIGNsZWFyXCIgdGl0bGU9XCJBa3Rpb25lbiBsw7ZzY2hlblwiIChjbGljayk9XCJyZWNvcmRlci5jbGVhckN1cnJlbnRTZXNzaW9uKClcIj5cclxuICAgICAgICAgICAgICDwn5eRXHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIEBpZiAoaGFzQWN0aW9ucygpKSB7XHJcbiAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICBjbGFzcz1cImN0cmwtYnRuIGdlbmVyYXRlXCJcclxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiYWlTZXJ2aWNlLmlzR2VuZXJhdGluZygpIHx8ICFhaVNlcnZpY2Uud2ViaG9va1VybCgpXCJcclxuICAgICAgICAgICAgICBbdGl0bGVdPVwiIWFpU2VydmljZS53ZWJob29rVXJsKCkgPyAnV2ViaG9vay1VUkwgaW4gRWluc3RlbGx1bmdlbiBlaW50cmFnZW4nIDogJ0N5cHJlc3MgVGVzdCBnZW5lcmllcmVuJ1wiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImdlbmVyYXRlVGVzdCgpXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIEBpZiAoYWlTZXJ2aWNlLmlzR2VuZXJhdGluZygpKSB7XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNwaW5uZXJcIj7in7M8L3NwYW4+IEdlbmVyaWVyZS4uLlxyXG4gICAgICAgICAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgICAgICAgICAg8J+kliDihpIgQ3lwcmVzcyBUZXN0XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIH1cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPCEtLSBFcnJvciBCYW5uZXIgLS0+XHJcbiAgICAgICAgQGlmIChhaVNlcnZpY2UuZXJyb3IoKSkge1xyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImVycm9yLWJhbm5lclwiIGRhdGEtZGVidWctcGFuZWw+XHJcbiAgICAgICAgICAgIOKaoO+4jyB7eyBhaVNlcnZpY2UuZXJyb3IoKSB9fVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICA8IS0tIFRhYnMgLS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRhYi1iYXJcIiBkYXRhLWRlYnVnLXBhbmVsPlxyXG4gICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICBjbGFzcz1cInRhYi1idG5cIlxyXG4gICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZVRhYigpID09PSAnYWN0aW9ucydcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZlVGFiLnNldCgnYWN0aW9ucycpXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgQWt0aW9uZW5cclxuICAgICAgICAgICAgQGlmIChyZWNvcmRlci5hY3Rpb25Db3VudCgpID4gMCkge1xyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGFiLWJhZGdlXCI+e3sgcmVjb3JkZXIuYWN0aW9uQ291bnQoKSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgIGNsYXNzPVwidGFiLWJ0blwiXHJcbiAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlVGFiKCkgPT09ICdyZXBsYXknXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2ZVRhYi5zZXQoJ3JlcGxheScpXCJcclxuICAgICAgICAgICAgdGl0bGU9XCJycndlYiBTZXNzaW9uIFJlcGxheVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIPCfk73vuI8gUmVwbGF5XHJcbiAgICAgICAgICAgIEBpZiAocnJ3ZWIuZXZlbnRDb3VudCgpID4gMCkge1xyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGFiLWJhZGdlXCI+e3sgcnJ3ZWIuZXZlbnRDb3VudCgpIH19PC9zcGFuPlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgY2xhc3M9XCJ0YWItYnRuXCJcclxuICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVUYWIoKSA9PT0gJ3Rlc3QnXCJcclxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFhaVNlcnZpY2UubGFzdFRlc3QoKVwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmVUYWIuc2V0KCd0ZXN0JylcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICDwn6SWIFRlc3RcclxuICAgICAgICAgICAgQGlmIChhaVNlcnZpY2UubGFzdFRlc3QoKSkge1xyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGFiLWJhZGdlIG5ld1wiPk5FVTwvc3Bhbj5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgIGNsYXNzPVwidGFiLWJ0blwiXHJcbiAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlVGFiKCkgPT09ICdzZXNzaW9ucydcIlxyXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwicmVjb3JkZXIuc2Vzc2lvbnMoKS5sZW5ndGggPT09IDBcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZlVGFiLnNldCgnc2Vzc2lvbnMnKVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIFNlc3Npb25zICh7eyByZWNvcmRlci5zZXNzaW9ucygpLmxlbmd0aCB9fSlcclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8IS0tIFRhYiBDb250ZW50IC0tPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0YWItY29udGVudFwiPlxyXG4gICAgICAgICAgQGlmIChhY3RpdmVUYWIoKSA9PT0gJ2FjdGlvbnMnKSB7XHJcbiAgICAgICAgICAgIDxhcHAtYWN0aW9uLWxpc3RcclxuICAgICAgICAgICAgICBbc2Vzc2lvbl09XCJyZWNvcmRlci5jdXJyZW50U2Vzc2lvbigpXCJcclxuICAgICAgICAgICAgICAocmVtb3ZlQWN0aW9uKT1cInJlY29yZGVyLnJlbW92ZUFjdGlvbigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAoYWRkTm90ZSk9XCJyZWNvcmRlci5hZGROb3RlKCRldmVudC5pZCwgJGV2ZW50Lm5vdGUpXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBAaWYgKGFjdGl2ZVRhYigpID09PSAncmVwbGF5Jykge1xyXG4gICAgICAgICAgICA8YXBwLXNlc3Npb24tcmVwbGF5IC8+XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgQGlmIChhY3RpdmVUYWIoKSA9PT0gJ3Rlc3QnKSB7XHJcbiAgICAgICAgICAgIDxhcHAtdGVzdC1wcmV2aWV3IFt0ZXN0XT1cImFpU2VydmljZS5sYXN0VGVzdCgpXCIgLz5cclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBAaWYgKGFjdGl2ZVRhYigpID09PSAnc2Vzc2lvbnMnKSB7XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZXNzaW9ucy1saXN0XCI+XHJcbiAgICAgICAgICAgICAgQGZvciAoc2Vzc2lvbiBvZiByZWNvcmRlci5zZXNzaW9ucygpOyB0cmFjayBzZXNzaW9uLmlkKSB7XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2Vzc2lvbi1jYXJkXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZXNzaW9uLWNhcmQtaGVhZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZXNzaW9uLW5hbWVcIj57eyBzZXNzaW9uLm5hbWUgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZXNzaW9uLW1ldGFcIj57eyBzZXNzaW9uLmFjdGlvbnMubGVuZ3RoIH19IEFrdGlvbmVuPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlc3Npb24tY2FyZC1hY3Rpb25zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInNtLWJ0blwiIChjbGljayk9XCJsb2FkQW5kR2VuZXJhdGUoc2Vzc2lvbilcIj7wn6SWIE5ldSBnZW5lcmllcmVuPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInNtLWJ0biBkYW5nZXJcIiAoY2xpY2spPVwicmVjb3JkZXIuZGVsZXRlU2Vzc2lvbihzZXNzaW9uLmlkKVwiPvCfl5E8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8IS0tIFJlc2l6ZSBIYW5kbGUgLS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJlc2l6ZS1oYW5kbGVcIiAobW91c2Vkb3duKT1cInN0YXJ0UmVzaXplKCRldmVudClcIj7ioL88L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICB9XHJcblxyXG4gICAgPCEtLSBTZXR0aW5ncyBEaWFsb2cgLS0+XHJcbiAgICBAaWYgKHNob3dTZXR0aW5ncygpKSB7XHJcbiAgICAgIDxhcHAtc2V0dGluZ3MtZGlhbG9nIChjbG9zZSk9XCJzaG93U2V0dGluZ3Muc2V0KGZhbHNlKVwiIC8+XHJcbiAgICB9XHJcbiAgYCxcclxuICBzdHlsZXM6IFtgXHJcbiAgICAuZGVidWctZmFiIHtcclxuICAgICAgcG9zaXRpb246IGZpeGVkO1xyXG4gICAgICBib3R0b206IDI0cHg7XHJcbiAgICAgIHJpZ2h0OiAyNHB4O1xyXG4gICAgICB6LWluZGV4OiA5OTk5OTtcclxuICAgICAgd2lkdGg6IDUycHg7XHJcbiAgICAgIGhlaWdodDogNTJweDtcclxuICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xyXG4gICAgICBib3JkZXI6IG5vbmU7XHJcbiAgICAgIGJhY2tncm91bmQ6ICMxZTI5M2I7XHJcbiAgICAgIGNvbG9yOiB3aGl0ZTtcclxuICAgICAgZm9udC1zaXplOiAyMnB4O1xyXG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gICAgICBib3gtc2hhZG93OiAwIDRweCAyMHB4IHJnYmEoMCwwLDAsMC40KTtcclxuICAgICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMnMsIGJhY2tncm91bmQgMC4ycztcclxuICAgICAgcG9zaXRpb246IGZpeGVkO1xyXG4gICAgfVxyXG4gICAgLmRlYnVnLWZhYjpob3ZlciB7IHRyYW5zZm9ybTogc2NhbGUoMS4xKTsgYmFja2dyb3VuZDogIzMzNDE1NTsgfVxyXG4gICAgLmRlYnVnLWZhYi5yZWNvcmRpbmcgeyBiYWNrZ3JvdW5kOiAjZGMyNjI2OyB9XHJcbiAgICAuZGVidWctZmFiLnB1bHNlIHsgYW5pbWF0aW9uOiBmYWJQdWxzZSAxLjVzIGVhc2UtaW4tb3V0IGluZmluaXRlOyB9XHJcbiAgICBAa2V5ZnJhbWVzIGZhYlB1bHNlIHtcclxuICAgICAgMCUsIDEwMCUgeyBib3gtc2hhZG93OiAwIDRweCAyMHB4IHJnYmEoMjIwLDM4LDM4LDAuNCk7IH1cclxuICAgICAgNTAlIHsgYm94LXNoYWRvdzogMCA0cHggMzBweCByZ2JhKDIyMCwzOCwzOCwwLjkpLCAwIDAgMCA4cHggcmdiYSgyMjAsMzgsMzgsMC4xNSk7IH1cclxuICAgIH1cclxuICAgIC5mYWItYmFkZ2Uge1xyXG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgIHRvcDogLTRweDtcclxuICAgICAgcmlnaHQ6IC00cHg7XHJcbiAgICAgIGJhY2tncm91bmQ6ICNmNTllMGI7XHJcbiAgICAgIGNvbG9yOiAjMDAwO1xyXG4gICAgICBmb250LXNpemU6IDEwcHg7XHJcbiAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XHJcbiAgICAgIG1pbi13aWR0aDogMThweDtcclxuICAgICAgaGVpZ2h0OiAxOHB4O1xyXG4gICAgICBib3JkZXItcmFkaXVzOiA5cHg7XHJcbiAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gICAgICBwYWRkaW5nOiAwIDRweDtcclxuICAgIH1cclxuXHJcbiAgICAuZGVidWctcGFuZWwge1xyXG4gICAgICBwb3NpdGlvbjogZml4ZWQ7XHJcbiAgICAgIHotaW5kZXg6IDk5OTk4O1xyXG4gICAgICB3aWR0aDogNDIwcHg7XHJcbiAgICAgIG1heC1oZWlnaHQ6IDgwdmg7XHJcbiAgICAgIGJhY2tncm91bmQ6ICMwZjE3MmE7XHJcbiAgICAgIGNvbG9yOiAjZTJlOGYwO1xyXG4gICAgICBib3JkZXItcmFkaXVzOiAxMnB4O1xyXG4gICAgICBib3JkZXI6IDFweCBzb2xpZCAjMWUzYTVmO1xyXG4gICAgICBib3gtc2hhZG93OiAwIDI1cHggNjBweCByZ2JhKDAsMCwwLDAuNik7XHJcbiAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgICAgIGZvbnQtZmFtaWx5OiAnU2Vnb2UgVUknLCBzeXN0ZW0tdWksIHNhbnMtc2VyaWY7XHJcbiAgICAgIGZvbnQtc2l6ZTogMTNweDtcclxuICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICAgIH1cclxuICAgIC5wb3MtYm90dG9tLXJpZ2h0IHsgYm90dG9tOiA4OHB4OyByaWdodDogMjRweDsgfVxyXG4gICAgLnBvcy1ib3R0b20tbGVmdCAgeyBib3R0b206IDg4cHg7IGxlZnQ6IDI0cHg7IH1cclxuICAgIC5wb3MtdG9wLXJpZ2h0ICAgIHsgdG9wOiAyNHB4OyByaWdodDogMjRweDsgfVxyXG4gICAgLnBvcy10b3AtbGVmdCAgICAgeyB0b3A6IDI0cHg7IGxlZnQ6IDI0cHg7IH1cclxuXHJcbiAgICAucGFuZWwtaGVhZGVyIHtcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xyXG4gICAgICBwYWRkaW5nOiAxMHB4IDE0cHg7XHJcbiAgICAgIGJhY2tncm91bmQ6ICMxZTI5M2I7XHJcbiAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjMzM0MTU1O1xyXG4gICAgICBjdXJzb3I6IG1vdmU7XHJcbiAgICAgIHVzZXItc2VsZWN0OiBub25lO1xyXG4gICAgICBmbGV4LXNocmluazogMDtcclxuICAgIH1cclxuICAgIC5oZWFkZXItbGVmdCB7IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGdhcDogOHB4OyB9XHJcbiAgICAucGFuZWwtaWNvbiB7IGZvbnQtc2l6ZTogMTZweDsgfVxyXG4gICAgLnBhbmVsLXRpdGxlIHsgZm9udC13ZWlnaHQ6IDYwMDsgZm9udC1zaXplOiAxNHB4OyBjb2xvcjogI2YxZjVmOTsgfVxyXG4gICAgLnJlYy1pbmRpY2F0b3Ige1xyXG4gICAgICBmb250LXNpemU6IDEwcHg7XHJcbiAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XHJcbiAgICAgIGNvbG9yOiAjZWY0NDQ0O1xyXG4gICAgICBiYWNrZ3JvdW5kOiByZ2JhKDIzOSw2OCw2OCwwLjE1KTtcclxuICAgICAgcGFkZGluZzogMnB4IDdweDtcclxuICAgICAgYm9yZGVyLXJhZGl1czogNHB4O1xyXG4gICAgICBhbmltYXRpb246IGJsaW5rIDFzIHN0ZXAtZW5kIGluZmluaXRlO1xyXG4gICAgfVxyXG4gICAgLnJlYy1pbmRpY2F0b3IucGF1c2VkIHsgY29sb3I6ICNmNTllMGI7IGJhY2tncm91bmQ6IHJnYmEoMjQ1LDE1OCwxMSwwLjE1KTsgYW5pbWF0aW9uOiBub25lOyB9XHJcbiAgICBAa2V5ZnJhbWVzIGJsaW5rIHsgNTAlIHsgb3BhY2l0eTogMC40OyB9IH1cclxuICAgIC5oZWFkZXItYWN0aW9ucyB7IGRpc3BsYXk6IGZsZXg7IGdhcDogNHB4OyB9XHJcbiAgICAuaWNvbi1idG4ge1xyXG4gICAgICBiYWNrZ3JvdW5kOiBub25lO1xyXG4gICAgICBib3JkZXI6IG5vbmU7XHJcbiAgICAgIGNvbG9yOiAjOTRhM2I4O1xyXG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICAgIHBhZGRpbmc6IDRweDtcclxuICAgICAgYm9yZGVyLXJhZGl1czogNHB4O1xyXG4gICAgICBmb250LXNpemU6IDE0cHg7XHJcbiAgICAgIGxpbmUtaGVpZ2h0OiAxO1xyXG4gICAgICB0cmFuc2l0aW9uOiBjb2xvciAwLjE1cywgYmFja2dyb3VuZCAwLjE1cztcclxuICAgIH1cclxuICAgIC5pY29uLWJ0bjpob3ZlciB7IGNvbG9yOiAjZjFmNWY5OyBiYWNrZ3JvdW5kOiAjMzM0MTU1OyB9XHJcblxyXG4gICAgLnNlc3Npb24tc2V0dXAge1xyXG4gICAgICBwYWRkaW5nOiAxMHB4IDE0cHg7XHJcbiAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjMWUyOTNiO1xyXG4gICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gICAgICBnYXA6IDZweDtcclxuICAgICAgZmxleC1zaHJpbms6IDA7XHJcbiAgICB9XHJcbiAgICAuc2Vzc2lvbi1pbnB1dCwgLnNlc3Npb24tZGVzYyB7XHJcbiAgICAgIGJhY2tncm91bmQ6ICMxZTI5M2I7XHJcbiAgICAgIGJvcmRlcjogMXB4IHNvbGlkICMzMzQxNTU7XHJcbiAgICAgIGNvbG9yOiAjZTJlOGYwO1xyXG4gICAgICBib3JkZXItcmFkaXVzOiA2cHg7XHJcbiAgICAgIHBhZGRpbmc6IDZweCAxMHB4O1xyXG4gICAgICBmb250LXNpemU6IDEycHg7XHJcbiAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG4gICAgICByZXNpemU6IHZlcnRpY2FsO1xyXG4gICAgfVxyXG4gICAgLnNlc3Npb24taW5wdXQ6Zm9jdXMsIC5zZXNzaW9uLWRlc2M6Zm9jdXMge1xyXG4gICAgICBvdXRsaW5lOiBub25lO1xyXG4gICAgICBib3JkZXItY29sb3I6ICMzYjgyZjY7XHJcbiAgICB9XHJcblxyXG4gICAgLnJlY29yZGluZy1jb250cm9scyB7XHJcbiAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgIGdhcDogNnB4O1xyXG4gICAgICBwYWRkaW5nOiAxMHB4IDE0cHg7XHJcbiAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjMWUyOTNiO1xyXG4gICAgICBmbGV4LXdyYXA6IHdyYXA7XHJcbiAgICAgIGZsZXgtc2hyaW5rOiAwO1xyXG4gICAgfVxyXG4gICAgLmN0cmwtYnRuIHtcclxuICAgICAgYm9yZGVyOiBub25lO1xyXG4gICAgICBib3JkZXItcmFkaXVzOiA2cHg7XHJcbiAgICAgIHBhZGRpbmc6IDZweCAxNHB4O1xyXG4gICAgICBmb250LXNpemU6IDEycHg7XHJcbiAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgICAgdHJhbnNpdGlvbjogZmlsdGVyIDAuMTVzLCB0cmFuc2Zvcm0gMC4xcztcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgICAgZ2FwOiA1cHg7XHJcbiAgICB9XHJcbiAgICAuY3RybC1idG46aG92ZXI6bm90KDpkaXNhYmxlZCkgeyBmaWx0ZXI6IGJyaWdodG5lc3MoMS4xNSk7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMXB4KTsgfVxyXG4gICAgLmN0cmwtYnRuOmFjdGl2ZTpub3QoOmRpc2FibGVkKSB7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsgfVxyXG4gICAgLmN0cmwtYnRuOmRpc2FibGVkIHsgb3BhY2l0eTogMC41OyBjdXJzb3I6IG5vdC1hbGxvd2VkOyB9XHJcbiAgICAuY3RybC1idG4uc3RhcnQgICAgeyBiYWNrZ3JvdW5kOiAjMTZhMzRhOyBjb2xvcjogI2ZmZjsgfVxyXG4gICAgLmN0cmwtYnRuLnN0b3AgICAgIHsgYmFja2dyb3VuZDogI2RjMjYyNjsgY29sb3I6ICNmZmY7IH1cclxuICAgIC5jdHJsLWJ0bi5wYXVzZSAgICB7IGJhY2tncm91bmQ6ICNkOTc3MDY7IGNvbG9yOiAjZmZmOyB9XHJcbiAgICAuY3RybC1idG4uZ2VuZXJhdGUgeyBiYWNrZ3JvdW5kOiAjN2MzYWVkOyBjb2xvcjogI2ZmZjsgZmxleDogMTsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7IH1cclxuICAgIC5jdHJsLWJ0bi5jbGVhciAgICB7IGJhY2tncm91bmQ6ICMzNzQxNTE7IGNvbG9yOiAjOWNhM2FmOyBwYWRkaW5nOiA2cHggMTBweDsgfVxyXG4gICAgLnNwaW5uZXIgeyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IGFuaW1hdGlvbjogc3BpbiAwLjhzIGxpbmVhciBpbmZpbml0ZTsgfVxyXG4gICAgQGtleWZyYW1lcyBzcGluIHsgdG8geyB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOyB9IH1cclxuXHJcbiAgICAuZXJyb3ItYmFubmVyIHtcclxuICAgICAgYmFja2dyb3VuZDogcmdiYSgyMjAsMzgsMzgsMC4xNSk7XHJcbiAgICAgIGJvcmRlci1sZWZ0OiAzcHggc29saWQgI2RjMjYyNjtcclxuICAgICAgY29sb3I6ICNmY2E1YTU7XHJcbiAgICAgIHBhZGRpbmc6IDhweCAxNHB4O1xyXG4gICAgICBmb250LXNpemU6IDEycHg7XHJcbiAgICAgIGZsZXgtc2hyaW5rOiAwO1xyXG4gICAgfVxyXG5cclxuICAgIC50YWItYmFyIHtcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICMxZTI5M2I7XHJcbiAgICAgIGZsZXgtc2hyaW5rOiAwO1xyXG4gICAgfVxyXG4gICAgLnRhYi1idG4ge1xyXG4gICAgICBmbGV4OiAxO1xyXG4gICAgICBiYWNrZ3JvdW5kOiBub25lO1xyXG4gICAgICBib3JkZXI6IG5vbmU7XHJcbiAgICAgIGNvbG9yOiAjNjQ3NDhiO1xyXG4gICAgICBwYWRkaW5nOiA4cHggNHB4O1xyXG4gICAgICBmb250LXNpemU6IDEycHg7XHJcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgICAgIGdhcDogNXB4O1xyXG4gICAgICBib3JkZXItYm90dG9tOiAycHggc29saWQgdHJhbnNwYXJlbnQ7XHJcbiAgICAgIHRyYW5zaXRpb246IGNvbG9yIDAuMTVzO1xyXG4gICAgfVxyXG4gICAgLnRhYi1idG46aG92ZXI6bm90KDpkaXNhYmxlZCkgeyBjb2xvcjogI2NiZDVlMTsgfVxyXG4gICAgLnRhYi1idG4uYWN0aXZlIHsgY29sb3I6ICM2MGE1ZmE7IGJvcmRlci1ib3R0b20tY29sb3I6ICMzYjgyZjY7IH1cclxuICAgIC50YWItYnRuOmRpc2FibGVkIHsgb3BhY2l0eTogMC40OyBjdXJzb3I6IG5vdC1hbGxvd2VkOyB9XHJcbiAgICAudGFiLWJhZGdlIHtcclxuICAgICAgYmFja2dyb3VuZDogIzMzNDE1NTtcclxuICAgICAgY29sb3I6ICM5NGEzYjg7XHJcbiAgICAgIGZvbnQtc2l6ZTogMTBweDtcclxuICAgICAgcGFkZGluZzogMXB4IDVweDtcclxuICAgICAgYm9yZGVyLXJhZGl1czogM3B4O1xyXG4gICAgfVxyXG4gICAgLnRhYi1iYWRnZS5uZXcgeyBiYWNrZ3JvdW5kOiAjN2MzYWVkOyBjb2xvcjogI2U5ZDVmZjsgfVxyXG5cclxuICAgIC50YWItY29udGVudCB7XHJcbiAgICAgIG92ZXJmbG93LXk6IGF1dG87XHJcbiAgICAgIGZsZXg6IDE7XHJcbiAgICAgIG1pbi1oZWlnaHQ6IDA7XHJcbiAgICB9XHJcbiAgICAudGFiLWNvbnRlbnQ6Oi13ZWJraXQtc2Nyb2xsYmFyIHsgd2lkdGg6IDVweDsgfVxyXG4gICAgLnRhYi1jb250ZW50Ojotd2Via2l0LXNjcm9sbGJhci10cmFjayB7IGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OyB9XHJcbiAgICAudGFiLWNvbnRlbnQ6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHsgYmFja2dyb3VuZDogIzMzNDE1NTsgYm9yZGVyLXJhZGl1czogM3B4OyB9XHJcblxyXG4gICAgLnNlc3Npb25zLWxpc3QgeyBwYWRkaW5nOiAxMHB4IDE0cHg7IGRpc3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IGdhcDogOHB4OyB9XHJcbiAgICAuc2Vzc2lvbi1jYXJkIHtcclxuICAgICAgYmFja2dyb3VuZDogIzFlMjkzYjtcclxuICAgICAgYm9yZGVyOiAxcHggc29saWQgIzMzNDE1NTtcclxuICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xyXG4gICAgICBwYWRkaW5nOiAxMHB4O1xyXG4gICAgfVxyXG4gICAgLnNlc3Npb24tY2FyZC1oZWFkZXIge1xyXG4gICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XHJcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAgIG1hcmdpbi1ib3R0b206IDhweDtcclxuICAgIH1cclxuICAgIC5zZXNzaW9uLW5hbWUgeyBmb250LXdlaWdodDogNjAwOyBjb2xvcjogI2YxZjVmOTsgZm9udC1zaXplOiAxM3B4OyB9XHJcbiAgICAuc2Vzc2lvbi1tZXRhIHsgZm9udC1zaXplOiAxMXB4OyBjb2xvcjogIzY0NzQ4YjsgfVxyXG4gICAgLnNlc3Npb24tY2FyZC1hY3Rpb25zIHsgZGlzcGxheTogZmxleDsgZ2FwOiA2cHg7IH1cclxuICAgIC5zbS1idG4ge1xyXG4gICAgICBiYWNrZ3JvdW5kOiAjMzM0MTU1O1xyXG4gICAgICBib3JkZXI6IG5vbmU7XHJcbiAgICAgIGNvbG9yOiAjY2JkNWUxO1xyXG4gICAgICBwYWRkaW5nOiA0cHggMTBweDtcclxuICAgICAgYm9yZGVyLXJhZGl1czogNXB4O1xyXG4gICAgICBmb250LXNpemU6IDExcHg7XHJcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjE1cztcclxuICAgIH1cclxuICAgIC5zbS1idG46aG92ZXIgeyBiYWNrZ3JvdW5kOiAjNDc1NTY5OyB9XHJcbiAgICAuc20tYnRuLmRhbmdlciB7IGNvbG9yOiAjZmNhNWE1OyB9XHJcbiAgICAuc20tYnRuLmRhbmdlcjpob3ZlciB7IGJhY2tncm91bmQ6IHJnYmEoMjIwLDM4LDM4LDAuMik7IH1cclxuXHJcbiAgICAucmVzaXplLWhhbmRsZSB7XHJcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICAgICAgY29sb3I6ICMzMzQxNTU7XHJcbiAgICAgIGN1cnNvcjogbnMtcmVzaXplO1xyXG4gICAgICBmb250LXNpemU6IDE2cHg7XHJcbiAgICAgIHBhZGRpbmc6IDJweDtcclxuICAgICAgZmxleC1zaHJpbms6IDA7XHJcbiAgICAgIGJhY2tncm91bmQ6ICMwZjE3MmE7XHJcbiAgICAgIHVzZXItc2VsZWN0OiBub25lO1xyXG4gICAgfVxyXG4gICAgLnJlc2l6ZS1oYW5kbGU6aG92ZXIgeyBjb2xvcjogIzY0NzQ4YjsgfVxyXG4gIGBdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRGVidWdQYW5lbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICByZWNvcmRlciA9IGluamVjdChSZWNvcmRlclNlcnZpY2UpO1xyXG4gIGFpU2VydmljZSA9IGluamVjdChBaUdlbmVyYXRvclNlcnZpY2UpO1xyXG4gIHJyd2ViID0gaW5qZWN0KFJyd2ViUmVjb3JkZXJTZXJ2aWNlKTtcclxuXHJcbiAgcGFuZWxPcGVuID0gc2lnbmFsKGZhbHNlKTtcclxuICBhY3RpdmVUYWIgPSBzaWduYWw8UGFuZWxUYWI+KCdhY3Rpb25zJyk7XHJcbiAgcG9zaXRpb24gPSBzaWduYWw8UGFuZWxQb3NpdGlvbj4oJ2JvdHRvbS1yaWdodCcpO1xyXG4gIHBhbmVsV2lkdGggPSBzaWduYWwoNDIwKTtcclxuICBzaG93U2V0dGluZ3MgPSBzaWduYWwoZmFsc2UpO1xyXG4gIHNlc3Npb25OYW1lID0gJyc7XHJcbiAgc2Vzc2lvbkRlc2MgPSAnJztcclxuXHJcbiAgaGFzQWN0aW9ucyA9IGNvbXB1dGVkKFxyXG4gICAgKCkgPT4gKHRoaXMucmVjb3JkZXIuY3VycmVudFNlc3Npb24oKT8uYWN0aW9ucy5sZW5ndGggPz8gMCkgPiAwIHx8XHJcbiAgICAgICAgICAodGhpcy5yZWNvcmRlci5zZXNzaW9ucygpLmxlbmd0aCA+IDApXHJcbiAgKTtcclxuXHJcbiAgcHJpdmF0ZSByZXNpemluZyA9IGZhbHNlO1xyXG4gIHByaXZhdGUgcmVzaXplU3RhcnRZID0gMDtcclxuICBwcml2YXRlIHJlc2l6ZVN0YXJ0SCA9IDA7XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgLy8gS2V5Ym9hcmQgc2hvcnRjdXQ6IEN0cmwrU2hpZnQrRFxyXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIHRoaXMuaGFuZGxlSG90a2V5KTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIHRoaXMuaGFuZGxlSG90a2V5KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFuZGxlSG90a2V5ID0gKGU6IEtleWJvYXJkRXZlbnQpID0+IHtcclxuICAgIGlmIChlLmN0cmxLZXkgJiYgZS5zaGlmdEtleSAmJiBlLmtleSA9PT0gJ0QnKSB7XHJcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgdGhpcy50b2dnbGVQYW5lbCgpO1xyXG4gICAgfVxyXG4gICAgaWYgKGUuY3RybEtleSAmJiBlLnNoaWZ0S2V5ICYmIGUua2V5ID09PSAnUicpIHtcclxuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICBpZiAodGhpcy5yZWNvcmRlci5pc1JlY29yZGluZygpKSB7XHJcbiAgICAgICAgdGhpcy5zdG9wUmVjb3JkaW5nKCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zdGFydFJlY29yZGluZygpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgdG9nZ2xlUGFuZWwoKTogdm9pZCB7XHJcbiAgICB0aGlzLnBhbmVsT3Blbi51cGRhdGUodiA9PiAhdik7XHJcbiAgICBpZiAodGhpcy5wYW5lbE9wZW4oKSAmJiAhdGhpcy5yZWNvcmRlci5jdXJyZW50U2Vzc2lvbigpKSB7XHJcbiAgICAgIHRoaXMuYWN0aXZlVGFiLnNldCgnYWN0aW9ucycpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY3ljbGVQb3NpdGlvbigpOiB2b2lkIHtcclxuICAgIGNvbnN0IHBvc2l0aW9uczogUGFuZWxQb3NpdGlvbltdID0gWydib3R0b20tcmlnaHQnLCAnYm90dG9tLWxlZnQnLCAndG9wLXJpZ2h0JywgJ3RvcC1sZWZ0J107XHJcbiAgICBjb25zdCBpZHggPSBwb3NpdGlvbnMuaW5kZXhPZih0aGlzLnBvc2l0aW9uKCkpO1xyXG4gICAgdGhpcy5wb3NpdGlvbi5zZXQocG9zaXRpb25zWyhpZHggKyAxKSAlIHBvc2l0aW9ucy5sZW5ndGhdKTtcclxuICB9XHJcblxyXG4gIHN0YXJ0UmVjb3JkaW5nKCk6IHZvaWQge1xyXG4gICAgdGhpcy5yZWNvcmRlci5zdGFydFJlY29yZGluZyhcclxuICAgICAgdGhpcy5zZXNzaW9uTmFtZSB8fCB1bmRlZmluZWQsXHJcbiAgICAgIHRoaXMuc2Vzc2lvbkRlc2MgfHwgdW5kZWZpbmVkXHJcbiAgICApO1xyXG4gICAgLy8gU3RhcnQgcnJ3ZWIgaW4gcGFyYWxsZWwgZm9yIHZpc3VhbCByZXBsYXlcclxuICAgIHRoaXMucnJ3ZWIuc3RhcnRSZWNvcmRpbmcoKTtcclxuICAgIHRoaXMuYWN0aXZlVGFiLnNldCgnYWN0aW9ucycpO1xyXG4gIH1cclxuXHJcbiAgc3RvcFJlY29yZGluZygpOiB2b2lkIHtcclxuICAgIGNvbnN0IHNlc3Npb24gPSB0aGlzLnJlY29yZGVyLnN0b3BSZWNvcmRpbmcoKTtcclxuICAgIHRoaXMucnJ3ZWIuc3RvcFJlY29yZGluZygpO1xyXG4gICAgaWYgKHNlc3Npb24pIHtcclxuICAgICAgdGhpcy5hY3RpdmVUYWIuc2V0KCdhY3Rpb25zJyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhc3luYyBnZW5lcmF0ZVRlc3QoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBjb25zdCBzZXNzaW9uID0gdGhpcy5yZWNvcmRlci5jdXJyZW50U2Vzc2lvbigpID8/IHRoaXMucmVjb3JkZXIuc2Vzc2lvbnMoKS5hdCgtMSk7XHJcbiAgICBpZiAoIXNlc3Npb24pIHJldHVybjtcclxuICAgIGF3YWl0IHRoaXMuYWlTZXJ2aWNlLmdlbmVyYXRlQ3lwcmVzc1Rlc3Qoc2Vzc2lvbik7XHJcbiAgICB0aGlzLmFjdGl2ZVRhYi5zZXQoJ3Rlc3QnKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIGxvYWRBbmRHZW5lcmF0ZShzZXNzaW9uOiBSZWNvcmRpbmdTZXNzaW9uKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBhd2FpdCB0aGlzLmFpU2VydmljZS5nZW5lcmF0ZUN5cHJlc3NUZXN0KHNlc3Npb24pO1xyXG4gICAgdGhpcy5hY3RpdmVUYWIuc2V0KCd0ZXN0Jyk7XHJcbiAgfVxyXG5cclxuICAvLyBEcmFnIHRvIHJlcG9zaXRpb25cclxuICBzdGFydERyYWcoZTogTW91c2VFdmVudCk6IHZvaWQge1xyXG4gICAgaWYgKChlLnRhcmdldCBhcyBIVE1MRWxlbWVudCkuY2xvc2VzdCgnYnV0dG9uJykpIHJldHVybjtcclxuICAgIGNvbnN0IHBhbmVsID0gKGUuY3VycmVudFRhcmdldCBhcyBIVE1MRWxlbWVudCkucGFyZW50RWxlbWVudCE7XHJcbiAgICBjb25zdCBzdGFydFggPSBlLmNsaWVudFggLSBwYW5lbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0O1xyXG4gICAgY29uc3Qgc3RhcnRZID0gZS5jbGllbnRZIC0gcGFuZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wO1xyXG5cclxuICAgIGNvbnN0IG9uTW92ZSA9IChldjogTW91c2VFdmVudCkgPT4ge1xyXG4gICAgICBwYW5lbC5zdHlsZS5sZWZ0ID0gYCR7ZXYuY2xpZW50WCAtIHN0YXJ0WH1weGA7XHJcbiAgICAgIHBhbmVsLnN0eWxlLnRvcCAgPSBgJHtldi5jbGllbnRZIC0gc3RhcnRZfXB4YDtcclxuICAgICAgcGFuZWwuc3R5bGUucmlnaHQgPSAnYXV0byc7XHJcbiAgICAgIHBhbmVsLnN0eWxlLmJvdHRvbSA9ICdhdXRvJztcclxuICAgIH07XHJcbiAgICBjb25zdCBvblVwID0gKCkgPT4ge1xyXG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCBvbk1vdmUpO1xyXG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgb25VcCk7XHJcbiAgICB9O1xyXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgb25Nb3ZlKTtcclxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCBvblVwKTtcclxuICB9XHJcblxyXG4gIC8vIFJlc2l6ZSBoZWlnaHRcclxuICBzdGFydFJlc2l6ZShlOiBNb3VzZUV2ZW50KTogdm9pZCB7XHJcbiAgICBjb25zdCBwYW5lbCA9IChlLmN1cnJlbnRUYXJnZXQgYXMgSFRNTEVsZW1lbnQpLnBhcmVudEVsZW1lbnQhO1xyXG4gICAgdGhpcy5yZXNpemVTdGFydFkgPSBlLmNsaWVudFk7XHJcbiAgICB0aGlzLnJlc2l6ZVN0YXJ0SCA9IHBhbmVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodDtcclxuXHJcbiAgICBjb25zdCBvbk1vdmUgPSAoZXY6IE1vdXNlRXZlbnQpID0+IHtcclxuICAgICAgY29uc3QgbmV3SCA9IE1hdGgubWF4KDI1MCwgdGhpcy5yZXNpemVTdGFydEggKyAoZXYuY2xpZW50WSAtIHRoaXMucmVzaXplU3RhcnRZKSk7XHJcbiAgICAgIHBhbmVsLnN0eWxlLm1heEhlaWdodCA9IGAke25ld0h9cHhgO1xyXG4gICAgfTtcclxuICAgIGNvbnN0IG9uVXAgPSAoKSA9PiB7XHJcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIG9uTW92ZSk7XHJcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCBvblVwKTtcclxuICAgIH07XHJcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCBvbk1vdmUpO1xyXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIG9uVXApO1xyXG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
516
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVidWctcGFuZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9kZWJ1Zy1wYW5lbC9kZWJ1Zy1wYW5lbC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sR0FDcEMsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDdEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFFMUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDM0UsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDOUUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDdkYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNENBQTRDLENBQUM7OztBQXVjcEYsTUFBTSxPQUFPLG1CQUFtQjtJQWxjaEM7UUFtY0UsYUFBUSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNuQyxjQUFTLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDdkMsVUFBSyxHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBRXJDLGNBQVMsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUIsY0FBUyxHQUFHLE1BQU0sQ0FBVyxTQUFTLENBQUMsQ0FBQztRQUN4QyxhQUFRLEdBQUcsTUFBTSxDQUFnQixj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b0IsRUFBRSx1QkFBdUIsRUFBRSxzQkFBc0IsQ0FBQyxZQUN0SDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBZ01UIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsIHNpZ25hbCwgY29tcHV0ZWQsIGluamVjdCwgT25Jbml0LCBPbkRlc3Ryb3ksXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBSZWNvcmRlclNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9yZWNvcmRlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQWlHZW5lcmF0b3JTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvYWktZ2VuZXJhdG9yLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBScndlYlJlY29yZGVyU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3Jyd2ViLXJlY29yZGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBSZWNvcmRpbmdTZXNzaW9uIH0gZnJvbSAnLi4vbW9kZWxzL3JlY29yZGVkLWFjdGlvbi5tb2RlbCc7XHJcbmltcG9ydCB7IEFjdGlvbkxpc3RDb21wb25lbnQgfSBmcm9tICcuLi9hY3Rpb24tbGlzdC9hY3Rpb24tbGlzdC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUZXN0UHJldmlld0NvbXBvbmVudCB9IGZyb20gJy4uL3Rlc3QtcHJldmlldy90ZXN0LXByZXZpZXcuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU2V0dGluZ3NEaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi9zZXR0aW5ncy1kaWFsb2cvc2V0dGluZ3MtZGlhbG9nLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFNlc3Npb25SZXBsYXlDb21wb25lbnQgfSBmcm9tICcuLi9zZXNzaW9uLXJlcGxheS9zZXNzaW9uLXJlcGxheS5jb21wb25lbnQnO1xyXG5cclxudHlwZSBQYW5lbFRhYiA9ICdhY3Rpb25zJyB8ICd0ZXN0JyB8ICdzZXNzaW9ucycgfCAncmVwbGF5JztcclxudHlwZSBQYW5lbFBvc2l0aW9uID0gJ2JvdHRvbS1yaWdodCcgfCAnYm90dG9tLWxlZnQnIHwgJ3RvcC1yaWdodCcgfCAndG9wLWxlZnQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtZGVidWctcGFuZWwnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRm9ybXNNb2R1bGUsIEFjdGlvbkxpc3RDb21wb25lbnQsIFRlc3RQcmV2aWV3Q29tcG9uZW50LCBTZXR0aW5nc0RpYWxvZ0NvbXBvbmVudCwgU2Vzc2lvblJlcGxheUNvbXBvbmVudF0sXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDwhLS0gVG9nZ2xlIEZBQiAtLT5cclxuICAgIDxidXR0b25cclxuICAgICAgZGF0YS1kZWJ1Zy1wYW5lbFxyXG4gICAgICBjbGFzcz1cImRlYnVnLWZhYlwiXHJcbiAgICAgIFtjbGFzcy5yZWNvcmRpbmddPVwicmVjb3JkZXIuaXNSZWNvcmRpbmcoKVwiXHJcbiAgICAgIFtjbGFzcy5wdWxzZV09XCJyZWNvcmRlci5pc1JlY29yZGluZygpICYmICFyZWNvcmRlci5pc1BhdXNlZCgpXCJcclxuICAgICAgKGNsaWNrKT1cInRvZ2dsZVBhbmVsKClcIlxyXG4gICAgICBbdGl0bGVdPVwicGFuZWxPcGVuKCkgPyAnRGVidWcgUGFuZWwgc2NobGllw59lbicgOiAnRGVidWcgUGFuZWwgw7ZmZm5lbidcIlxyXG4gICAgPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cImZhYi1pY29uXCI+e3sgcmVjb3JkZXIuaXNSZWNvcmRpbmcoKSA/ICfij7onIDogJ/CfkJsnIH19PC9zcGFuPlxyXG4gICAgICBAaWYgKHJlY29yZGVyLmlzUmVjb3JkaW5nKCkgJiYgcmVjb3JkZXIuYWN0aW9uQ291bnQoKSA+IDApIHtcclxuICAgICAgICA8c3BhbiBjbGFzcz1cImZhYi1iYWRnZVwiPnt7IHJlY29yZGVyLmFjdGlvbkNvdW50KCkgfX08L3NwYW4+XHJcbiAgICAgIH1cclxuICAgIDwvYnV0dG9uPlxyXG5cclxuICAgIDwhLS0gTWFpbiBQYW5lbCAtLT5cclxuICAgIEBpZiAocGFuZWxPcGVuKCkpIHtcclxuICAgICAgPGRpdlxyXG4gICAgICAgIGRhdGEtZGVidWctcGFuZWxcclxuICAgICAgICBjbGFzcz1cImRlYnVnLXBhbmVsXCJcclxuICAgICAgICBbY2xhc3NdPVwiJ3Bvcy0nICsgcG9zaXRpb24oKVwiXHJcbiAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cInBhbmVsV2lkdGgoKVwiXHJcbiAgICAgID5cclxuICAgICAgICA8IS0tIEhlYWRlciAtLT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicGFuZWwtaGVhZGVyXCIgKG1vdXNlZG93bik9XCJzdGFydERyYWcoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRlci1sZWZ0XCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicGFuZWwtaWNvblwiPvCfkJs8L3NwYW4+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicGFuZWwtdGl0bGVcIj5EZWJ1ZyBSZWNvcmRlcjwvc3Bhbj5cclxuICAgICAgICAgICAgQGlmIChyZWNvcmRlci5pc1JlY29yZGluZygpKSB7XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJyZWMtaW5kaWNhdG9yXCIgW2NsYXNzLnBhdXNlZF09XCJyZWNvcmRlci5pc1BhdXNlZCgpXCI+XHJcbiAgICAgICAgICAgICAgICB7eyByZWNvcmRlci5pc1BhdXNlZCgpID8gJ+KPuCBQQVVTRUQnIDogJ+KPuiBSRUMnIH19XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXItYWN0aW9uc1wiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiaWNvbi1idG5cIiB0aXRsZT1cIkVpbnN0ZWxsdW5nZW5cIiAoY2xpY2spPVwic2hvd1NldHRpbmdzLnNldCh0cnVlKVwiPuKame+4jzwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiaWNvbi1idG5cIiB0aXRsZT1cIlBvc2l0aW9uIHdlY2hzZWxuXCIgKGNsaWNrKT1cImN5Y2xlUG9zaXRpb24oKVwiPvCfk4w8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImljb24tYnRuXCIgdGl0bGU9XCJTY2hsaWXDn2VuXCIgKGNsaWNrKT1cInRvZ2dsZVBhbmVsKClcIj7inJU8L2J1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8IS0tIFNlc3Npb24gTmFtZSBJbnB1dCAob25seSB3aGVuIG5vdCByZWNvcmRpbmcpIC0tPlxyXG4gICAgICAgIEBpZiAoIXJlY29yZGVyLmlzUmVjb3JkaW5nKCkpIHtcclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZXNzaW9uLXNldHVwXCI+XHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgIGRhdGEtZGVidWctcGFuZWxcclxuICAgICAgICAgICAgICBjbGFzcz1cInNlc3Npb24taW5wdXRcIlxyXG4gICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlc3Npb25OYW1lXCJcclxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlc3Npb24tTmFtZSAob3B0aW9uYWwpXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPHRleHRhcmVhXHJcbiAgICAgICAgICAgICAgZGF0YS1kZWJ1Zy1wYW5lbFxyXG4gICAgICAgICAgICAgIGNsYXNzPVwic2Vzc2lvbi1kZXNjXCJcclxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlc3Npb25EZXNjXCJcclxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkZlaGxlcmJlc2NocmVpYnVuZy4uLlwiXHJcbiAgICAgICAgICAgICAgcm93cz1cIjJcIlxyXG4gICAgICAgICAgICA+PC90ZXh0YXJlYT5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgPCEtLSBSZWNvcmRpbmcgQ29udHJvbHMgLS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJlY29yZGluZy1jb250cm9sc1wiIGRhdGEtZGVidWctcGFuZWw+XHJcbiAgICAgICAgICBAaWYgKCFyZWNvcmRlci5pc1JlY29yZGluZygpKSB7XHJcbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjdHJsLWJ0biBzdGFydFwiIChjbGljayk9XCJzdGFydFJlY29yZGluZygpXCI+XHJcbiAgICAgICAgICAgICAg4pa2IEF1Zm5haG1lIHN0YXJ0ZW5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICB9IEBlbHNlIHtcclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImN0cmwtYnRuIHBhdXNlXCIgKGNsaWNrKT1cInJlY29yZGVyLnBhdXNlUmVjb3JkaW5nKClcIj5cclxuICAgICAgICAgICAgICB7eyByZWNvcmRlci5pc1BhdXNlZCgpID8gJ+KWtiBGb3J0c2V0emVuJyA6ICfij7ggUGF1c2UnIH19XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY3RybC1idG4gc3RvcFwiIChjbGljayk9XCJzdG9wUmVjb3JkaW5nKClcIj5cclxuICAgICAgICAgICAgICDij7kgU3RvcHBlblxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImN0cmwtYnRuIGNsZWFyXCIgdGl0bGU9XCJBa3Rpb25lbiBsw7ZzY2hlblwiIChjbGljayk9XCJyZWNvcmRlci5jbGVhckN1cnJlbnRTZXNzaW9uKClcIj5cclxuICAgICAgICAgICAgICDwn5eRXHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIEBpZiAoaGFzQWN0aW9ucygpKSB7XHJcbiAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICBjbGFzcz1cImN0cmwtYnRuIGdlbmVyYXRlXCJcclxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiYWlTZXJ2aWNlLmlzR2VuZXJhdGluZygpIHx8ICFhaVNlcnZpY2Uud2ViaG9va1VybCgpXCJcclxuICAgICAgICAgICAgICBbdGl0bGVdPVwiIWFpU2VydmljZS53ZWJob29rVXJsKCkgPyAnV2ViaG9vay1VUkwgaW4gRWluc3RlbGx1bmdlbiBlaW50cmFnZW4nIDogJ0N5cHJlc3MgVGVzdCBnZW5lcmllcmVuJ1wiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImdlbmVyYXRlVGVzdCgpXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIEBpZiAoYWlTZXJ2aWNlLmlzR2VuZXJhdGluZygpKSB7XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNwaW5uZXJcIj7in7M8L3NwYW4+IEdlbmVyaWVyZS4uLlxyXG4gICAgICAgICAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgICAgICAgICAg8J+kliDihpIgQ3lwcmVzcyBUZXN0XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIH1cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPCEtLSBFcnJvciBCYW5uZXIgLS0+XHJcbiAgICAgICAgQGlmIChhaVNlcnZpY2UuZXJyb3IoKSkge1xyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImVycm9yLWJhbm5lclwiIGRhdGEtZGVidWctcGFuZWw+XHJcbiAgICAgICAgICAgIOKaoO+4jyB7eyBhaVNlcnZpY2UuZXJyb3IoKSB9fVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICA8IS0tIFRhYnMgLS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRhYi1iYXJcIiBkYXRhLWRlYnVnLXBhbmVsPlxyXG4gICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICBjbGFzcz1cInRhYi1idG5cIlxyXG4gICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZVRhYigpID09PSAnYWN0aW9ucydcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZlVGFiLnNldCgnYWN0aW9ucycpXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgQWt0aW9uZW5cclxuICAgICAgICAgICAgQGlmIChyZWNvcmRlci5hY3Rpb25Db3VudCgpID4gMCkge1xyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGFiLWJhZGdlXCI+e3sgcmVjb3JkZXIuYWN0aW9uQ291bnQoKSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgIGNsYXNzPVwidGFiLWJ0blwiXHJcbiAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlVGFiKCkgPT09ICdyZXBsYXknXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2ZVRhYi5zZXQoJ3JlcGxheScpXCJcclxuICAgICAgICAgICAgdGl0bGU9XCJycndlYiBTZXNzaW9uIFJlcGxheVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIPCfk73vuI8gUmVwbGF5XHJcbiAgICAgICAgICAgIEBpZiAocnJ3ZWIuZXZlbnRDb3VudCgpID4gMCkge1xyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGFiLWJhZGdlXCI+e3sgcnJ3ZWIuZXZlbnRDb3VudCgpIH19PC9zcGFuPlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgY2xhc3M9XCJ0YWItYnRuXCJcclxuICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVUYWIoKSA9PT0gJ3Rlc3QnXCJcclxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFhaVNlcnZpY2UubGFzdFRlc3QoKVwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmVUYWIuc2V0KCd0ZXN0JylcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICDwn6SWIFRlc3RcclxuICAgICAgICAgICAgQGlmIChhaVNlcnZpY2UubGFzdFRlc3QoKSkge1xyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGFiLWJhZGdlIG5ld1wiPk5FVTwvc3Bhbj5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgIGNsYXNzPVwidGFiLWJ0blwiXHJcbiAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlVGFiKCkgPT09ICdzZXNzaW9ucydcIlxyXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwicmVjb3JkZXIuc2Vzc2lvbnMoKS5sZW5ndGggPT09IDBcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZlVGFiLnNldCgnc2Vzc2lvbnMnKVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIFNlc3Npb25zICh7eyByZWNvcmRlci5zZXNzaW9ucygpLmxlbmd0aCB9fSlcclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8IS0tIFRhYiBDb250ZW50IC0tPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0YWItY29udGVudFwiPlxyXG4gICAgICAgICAgQGlmIChhY3RpdmVUYWIoKSA9PT0gJ2FjdGlvbnMnKSB7XHJcbiAgICAgICAgICAgIDxhcHAtYWN0aW9uLWxpc3RcclxuICAgICAgICAgICAgICBbc2Vzc2lvbl09XCJyZWNvcmRlci5jdXJyZW50U2Vzc2lvbigpXCJcclxuICAgICAgICAgICAgICAocmVtb3ZlQWN0aW9uKT1cInJlY29yZGVyLnJlbW92ZUFjdGlvbigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAoYWRkTm90ZSk9XCJyZWNvcmRlci5hZGROb3RlKCRldmVudC5pZCwgJGV2ZW50Lm5vdGUpXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBAaWYgKGFjdGl2ZVRhYigpID09PSAncmVwbGF5Jykge1xyXG4gICAgICAgICAgICA8YXBwLXNlc3Npb24tcmVwbGF5IC8+XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgQGlmIChhY3RpdmVUYWIoKSA9PT0gJ3Rlc3QnKSB7XHJcbiAgICAgICAgICAgIDxhcHAtdGVzdC1wcmV2aWV3IFt0ZXN0XT1cImFpU2VydmljZS5sYXN0VGVzdCgpXCIgLz5cclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBAaWYgKGFjdGl2ZVRhYigpID09PSAnc2Vzc2lvbnMnKSB7XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZXNzaW9ucy1saXN0XCI+XHJcbiAgICAgICAgICAgICAgQGZvciAoc2Vzc2lvbiBvZiByZWNvcmRlci5zZXNzaW9ucygpOyB0cmFjayBzZXNzaW9uLmlkKSB7XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2Vzc2lvbi1jYXJkXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZXNzaW9uLWNhcmQtaGVhZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZXNzaW9uLW5hbWVcIj57eyBzZXNzaW9uLm5hbWUgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZXNzaW9uLW1ldGFcIj57eyBzZXNzaW9uLmFjdGlvbnMubGVuZ3RoIH19IEFrdGlvbmVuPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlc3Npb24tY2FyZC1hY3Rpb25zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInNtLWJ0blwiIChjbGljayk9XCJsb2FkQW5kR2VuZXJhdGUoc2Vzc2lvbilcIj7wn6SWIE5ldSBnZW5lcmllcmVuPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInNtLWJ0biBkYW5nZXJcIiAoY2xpY2spPVwicmVjb3JkZXIuZGVsZXRlU2Vzc2lvbihzZXNzaW9uLmlkKVwiPvCfl5E8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8IS0tIFJlc2l6ZSBIYW5kbGUgLS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJlc2l6ZS1oYW5kbGVcIiAobW91c2Vkb3duKT1cInN0YXJ0UmVzaXplKCRldmVudClcIj7ioL88L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICB9XHJcblxyXG4gICAgPCEtLSBTZXR0aW5ncyBEaWFsb2cgLS0+XHJcbiAgICBAaWYgKHNob3dTZXR0aW5ncygpKSB7XHJcbiAgICAgIDxhcHAtc2V0dGluZ3MtZGlhbG9nIChjbG9zZSk9XCJzaG93U2V0dGluZ3Muc2V0KGZhbHNlKVwiIC8+XHJcbiAgICB9XHJcbiAgYCxcclxuICBzdHlsZXM6IFtgXHJcbiAgICAuZGVidWctZmFiIHtcclxuICAgICAgcG9zaXRpb246IGZpeGVkO1xyXG4gICAgICBib3R0b206IDI0cHg7XHJcbiAgICAgIHJpZ2h0OiAyNHB4O1xyXG4gICAgICB6LWluZGV4OiA5OTk5OTtcclxuICAgICAgd2lkdGg6IDUycHg7XHJcbiAgICAgIGhlaWdodDogNTJweDtcclxuICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xyXG4gICAgICBib3JkZXI6IG5vbmU7XHJcbiAgICAgIGJhY2tncm91bmQ6ICMxZTI5M2I7XHJcbiAgICAgIGNvbG9yOiB3aGl0ZTtcclxuICAgICAgZm9udC1zaXplOiAyMnB4O1xyXG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gICAgICBib3gtc2hhZG93OiAwIDRweCAyMHB4IHJnYmEoMCwwLDAsMC40KTtcclxuICAgICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMnMsIGJhY2tncm91bmQgMC4ycztcclxuICAgICAgcG9zaXRpb246IGZpeGVkO1xyXG4gICAgfVxyXG4gICAgLmRlYnVnLWZhYjpob3ZlciB7IHRyYW5zZm9ybTogc2NhbGUoMS4xKTsgYmFja2dyb3VuZDogIzMzNDE1NTsgfVxyXG4gICAgLmRlYnVnLWZhYi5yZWNvcmRpbmcgeyBiYWNrZ3JvdW5kOiAjZGMyNjI2OyB9XHJcbiAgICAuZGVidWctZmFiLnB1bHNlIHsgYW5pbWF0aW9uOiBmYWJQdWxzZSAxLjVzIGVhc2UtaW4tb3V0IGluZmluaXRlOyB9XHJcbiAgICBAa2V5ZnJhbWVzIGZhYlB1bHNlIHtcclxuICAgICAgMCUsIDEwMCUgeyBib3gtc2hhZG93OiAwIDRweCAyMHB4IHJnYmEoMjIwLDM4LDM4LDAuNCk7IH1cclxuICAgICAgNTAlIHsgYm94LXNoYWRvdzogMCA0cHggMzBweCByZ2JhKDIyMCwzOCwzOCwwLjkpLCAwIDAgMCA4cHggcmdiYSgyMjAsMzgsMzgsMC4xNSk7IH1cclxuICAgIH1cclxuICAgIC5mYWItYmFkZ2Uge1xyXG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgIHRvcDogLTRweDtcclxuICAgICAgcmlnaHQ6IC00cHg7XHJcbiAgICAgIGJhY2tncm91bmQ6ICNmNTllMGI7XHJcbiAgICAgIGNvbG9yOiAjMDAwO1xyXG4gICAgICBmb250LXNpemU6IDEwcHg7XHJcbiAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XHJcbiAgICAgIG1pbi13aWR0aDogMThweDtcclxuICAgICAgaGVpZ2h0OiAxOHB4O1xyXG4gICAgICBib3JkZXItcmFkaXVzOiA5cHg7XHJcbiAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gICAgICBwYWRkaW5nOiAwIDRweDtcclxuICAgIH1cclxuXHJcbiAgICAuZGVidWctcGFuZWwge1xyXG4gICAgICBwb3NpdGlvbjogZml4ZWQ7XHJcbiAgICAgIHotaW5kZXg6IDk5OTk4O1xyXG4gICAgICB3aWR0aDogNDIwcHg7XHJcbiAgICAgIG1heC1oZWlnaHQ6IDgwdmg7XHJcbiAgICAgIGJhY2tncm91bmQ6ICMwZjE3MmE7XHJcbiAgICAgIGNvbG9yOiAjZTJlOGYwO1xyXG4gICAgICBib3JkZXItcmFkaXVzOiAxMnB4O1xyXG4gICAgICBib3JkZXI6IDFweCBzb2xpZCAjMWUzYTVmO1xyXG4gICAgICBib3gtc2hhZG93OiAwIDI1cHggNjBweCByZ2JhKDAsMCwwLDAuNik7XHJcbiAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgICAgIGZvbnQtZmFtaWx5OiAnU2Vnb2UgVUknLCBzeXN0ZW0tdWksIHNhbnMtc2VyaWY7XHJcbiAgICAgIGZvbnQtc2l6ZTogMTNweDtcclxuICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICAgIH1cclxuICAgIC5wb3MtYm90dG9tLXJpZ2h0IHsgYm90dG9tOiA4OHB4OyByaWdodDogMjRweDsgfVxyXG4gICAgLnBvcy1ib3R0b20tbGVmdCAgeyBib3R0b206IDg4cHg7IGxlZnQ6IDI0cHg7IH1cclxuICAgIC5wb3MtdG9wLXJpZ2h0ICAgIHsgdG9wOiAyNHB4OyByaWdodDogMjRweDsgfVxyXG4gICAgLnBvcy10b3AtbGVmdCAgICAgeyB0b3A6IDI0cHg7IGxlZnQ6IDI0cHg7IH1cclxuXHJcbiAgICAucGFuZWwtaGVhZGVyIHtcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xyXG4gICAgICBwYWRkaW5nOiAxMHB4IDE0cHg7XHJcbiAgICAgIGJhY2tncm91bmQ6ICMxZTI5M2I7XHJcbiAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjMzM0MTU1O1xyXG4gICAgICBjdXJzb3I6IG1vdmU7XHJcbiAgICAgIHVzZXItc2VsZWN0OiBub25lO1xyXG4gICAgICBmbGV4LXNocmluazogMDtcclxuICAgIH1cclxuICAgIC5oZWFkZXItbGVmdCB7IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGdhcDogOHB4OyB9XHJcbiAgICAucGFuZWwtaWNvbiB7IGZvbnQtc2l6ZTogMTZweDsgfVxyXG4gICAgLnBhbmVsLXRpdGxlIHsgZm9udC13ZWlnaHQ6IDYwMDsgZm9udC1zaXplOiAxNHB4OyBjb2xvcjogI2YxZjVmOTsgfVxyXG4gICAgLnJlYy1pbmRpY2F0b3Ige1xyXG4gICAgICBmb250LXNpemU6IDEwcHg7XHJcbiAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XHJcbiAgICAgIGNvbG9yOiAjZWY0NDQ0O1xyXG4gICAgICBiYWNrZ3JvdW5kOiByZ2JhKDIzOSw2OCw2OCwwLjE1KTtcclxuICAgICAgcGFkZGluZzogMnB4IDdweDtcclxuICAgICAgYm9yZGVyLXJhZGl1czogNHB4O1xyXG4gICAgICBhbmltYXRpb246IGJsaW5rIDFzIHN0ZXAtZW5kIGluZmluaXRlO1xyXG4gICAgfVxyXG4gICAgLnJlYy1pbmRpY2F0b3IucGF1c2VkIHsgY29sb3I6ICNmNTllMGI7IGJhY2tncm91bmQ6IHJnYmEoMjQ1LDE1OCwxMSwwLjE1KTsgYW5pbWF0aW9uOiBub25lOyB9XHJcbiAgICBAa2V5ZnJhbWVzIGJsaW5rIHsgNTAlIHsgb3BhY2l0eTogMC40OyB9IH1cclxuICAgIC5oZWFkZXItYWN0aW9ucyB7IGRpc3BsYXk6IGZsZXg7IGdhcDogNHB4OyB9XHJcbiAgICAuaWNvbi1idG4ge1xyXG4gICAgICBiYWNrZ3JvdW5kOiBub25lO1xyXG4gICAgICBib3JkZXI6IG5vbmU7XHJcbiAgICAgIGNvbG9yOiAjOTRhM2I4O1xyXG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICAgIHBhZGRpbmc6IDRweDtcclxuICAgICAgYm9yZGVyLXJhZGl1czogNHB4O1xyXG4gICAgICBmb250LXNpemU6IDE0cHg7XHJcbiAgICAgIGxpbmUtaGVpZ2h0OiAxO1xyXG4gICAgICB0cmFuc2l0aW9uOiBjb2xvciAwLjE1cywgYmFja2dyb3VuZCAwLjE1cztcclxuICAgIH1cclxuICAgIC5pY29uLWJ0bjpob3ZlciB7IGNvbG9yOiAjZjFmNWY5OyBiYWNrZ3JvdW5kOiAjMzM0MTU1OyB9XHJcblxyXG4gICAgLnNlc3Npb24tc2V0dXAge1xyXG4gICAgICBwYWRkaW5nOiAxMHB4IDE0cHg7XHJcbiAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjMWUyOTNiO1xyXG4gICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gICAgICBnYXA6IDZweDtcclxuICAgICAgZmxleC1zaHJpbms6IDA7XHJcbiAgICB9XHJcbiAgICAuc2Vzc2lvbi1pbnB1dCwgLnNlc3Npb24tZGVzYyB7XHJcbiAgICAgIGJhY2tncm91bmQ6ICMxZTI5M2I7XHJcbiAgICAgIGJvcmRlcjogMXB4IHNvbGlkICMzMzQxNTU7XHJcbiAgICAgIGNvbG9yOiAjZTJlOGYwO1xyXG4gICAgICBib3JkZXItcmFkaXVzOiA2cHg7XHJcbiAgICAgIHBhZGRpbmc6IDZweCAxMHB4O1xyXG4gICAgICBmb250LXNpemU6IDEycHg7XHJcbiAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG4gICAgICByZXNpemU6IHZlcnRpY2FsO1xyXG4gICAgfVxyXG4gICAgLnNlc3Npb24taW5wdXQ6Zm9jdXMsIC5zZXNzaW9uLWRlc2M6Zm9jdXMge1xyXG4gICAgICBvdXRsaW5lOiBub25lO1xyXG4gICAgICBib3JkZXItY29sb3I6ICMzYjgyZjY7XHJcbiAgICB9XHJcblxyXG4gICAgLnJlY29yZGluZy1jb250cm9scyB7XHJcbiAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgIGdhcDogNnB4O1xyXG4gICAgICBwYWRkaW5nOiAxMHB4IDE0cHg7XHJcbiAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjMWUyOTNiO1xyXG4gICAgICBmbGV4LXdyYXA6IHdyYXA7XHJcbiAgICAgIGZsZXgtc2hyaW5rOiAwO1xyXG4gICAgfVxyXG4gICAgLmN0cmwtYnRuIHtcclxuICAgICAgYm9yZGVyOiBub25lO1xyXG4gICAgICBib3JkZXItcmFkaXVzOiA2cHg7XHJcbiAgICAgIHBhZGRpbmc6IDZweCAxNHB4O1xyXG4gICAgICBmb250LXNpemU6IDEycHg7XHJcbiAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgICAgdHJhbnNpdGlvbjogZmlsdGVyIDAuMTVzLCB0cmFuc2Zvcm0gMC4xcztcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgICAgZ2FwOiA1cHg7XHJcbiAgICB9XHJcbiAgICAuY3RybC1idG46aG92ZXI6bm90KDpkaXNhYmxlZCkgeyBmaWx0ZXI6IGJyaWdodG5lc3MoMS4xNSk7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMXB4KTsgfVxyXG4gICAgLmN0cmwtYnRuOmFjdGl2ZTpub3QoOmRpc2FibGVkKSB7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsgfVxyXG4gICAgLmN0cmwtYnRuOmRpc2FibGVkIHsgb3BhY2l0eTogMC41OyBjdXJzb3I6IG5vdC1hbGxvd2VkOyB9XHJcbiAgICAuY3RybC1idG4uc3RhcnQgICAgeyBiYWNrZ3JvdW5kOiAjMTZhMzRhOyBjb2xvcjogI2ZmZjsgfVxyXG4gICAgLmN0cmwtYnRuLnN0b3AgICAgIHsgYmFja2dyb3VuZDogI2RjMjYyNjsgY29sb3I6ICNmZmY7IH1cclxuICAgIC5jdHJsLWJ0bi5wYXVzZSAgICB7IGJhY2tncm91bmQ6ICNkOTc3MDY7IGNvbG9yOiAjZmZmOyB9XHJcbiAgICAuY3RybC1idG4uZ2VuZXJhdGUgeyBiYWNrZ3JvdW5kOiAjN2MzYWVkOyBjb2xvcjogI2ZmZjsgZmxleDogMTsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7IH1cclxuICAgIC5jdHJsLWJ0bi5jbGVhciAgICB7IGJhY2tncm91bmQ6ICMzNzQxNTE7IGNvbG9yOiAjOWNhM2FmOyBwYWRkaW5nOiA2cHggMTBweDsgfVxyXG4gICAgLnNwaW5uZXIgeyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IGFuaW1hdGlvbjogc3BpbiAwLjhzIGxpbmVhciBpbmZpbml0ZTsgfVxyXG4gICAgQGtleWZyYW1lcyBzcGluIHsgdG8geyB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOyB9IH1cclxuXHJcbiAgICAuZXJyb3ItYmFubmVyIHtcclxuICAgICAgYmFja2dyb3VuZDogcmdiYSgyMjAsMzgsMzgsMC4xNSk7XHJcbiAgICAgIGJvcmRlci1sZWZ0OiAzcHggc29saWQgI2RjMjYyNjtcclxuICAgICAgY29sb3I6ICNmY2E1YTU7XHJcbiAgICAgIHBhZGRpbmc6IDhweCAxNHB4O1xyXG4gICAgICBmb250LXNpemU6IDEycHg7XHJcbiAgICAgIGZsZXgtc2hyaW5rOiAwO1xyXG4gICAgfVxyXG5cclxuICAgIC50YWItYmFyIHtcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICMxZTI5M2I7XHJcbiAgICAgIGZsZXgtc2hyaW5rOiAwO1xyXG4gICAgfVxyXG4gICAgLnRhYi1idG4ge1xyXG4gICAgICBmbGV4OiAxO1xyXG4gICAgICBiYWNrZ3JvdW5kOiBub25lO1xyXG4gICAgICBib3JkZXI6IG5vbmU7XHJcbiAgICAgIGNvbG9yOiAjNjQ3NDhiO1xyXG4gICAgICBwYWRkaW5nOiA4cHggNHB4O1xyXG4gICAgICBmb250LXNpemU6IDEycHg7XHJcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgICAgIGdhcDogNXB4O1xyXG4gICAgICBib3JkZXItYm90dG9tOiAycHggc29saWQgdHJhbnNwYXJlbnQ7XHJcbiAgICAgIHRyYW5zaXRpb246IGNvbG9yIDAuMTVzO1xyXG4gICAgfVxyXG4gICAgLnRhYi1idG46aG92ZXI6bm90KDpkaXNhYmxlZCkgeyBjb2xvcjogI2NiZDVlMTsgfVxyXG4gICAgLnRhYi1idG4uYWN0aXZlIHsgY29sb3I6ICM2MGE1ZmE7IGJvcmRlci1ib3R0b20tY29sb3I6ICMzYjgyZjY7IH1cclxuICAgIC50YWItYnRuOmRpc2FibGVkIHsgb3BhY2l0eTogMC40OyBjdXJzb3I6IG5vdC1hbGxvd2VkOyB9XHJcbiAgICAudGFiLWJhZGdlIHtcclxuICAgICAgYmFja2dyb3VuZDogIzMzNDE1NTtcclxuICAgICAgY29sb3I6ICM5NGEzYjg7XHJcbiAgICAgIGZvbnQtc2l6ZTogMTBweDtcclxuICAgICAgcGFkZGluZzogMXB4IDVweDtcclxuICAgICAgYm9yZGVyLXJhZGl1czogM3B4O1xyXG4gICAgfVxyXG4gICAgLnRhYi1iYWRnZS5uZXcgeyBiYWNrZ3JvdW5kOiAjN2MzYWVkOyBjb2xvcjogI2U5ZDVmZjsgfVxyXG5cclxuICAgIC50YWItY29udGVudCB7XHJcbiAgICAgIG92ZXJmbG93LXk6IGF1dG87XHJcbiAgICAgIGZsZXg6IDE7XHJcbiAgICAgIG1pbi1oZWlnaHQ6IDA7XHJcbiAgICB9XHJcbiAgICAudGFiLWNvbnRlbnQ6Oi13ZWJraXQtc2Nyb2xsYmFyIHsgd2lkdGg6IDVweDsgfVxyXG4gICAgLnRhYi1jb250ZW50Ojotd2Via2l0LXNjcm9sbGJhci10cmFjayB7IGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OyB9XHJcbiAgICAudGFiLWNvbnRlbnQ6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHsgYmFja2dyb3VuZDogIzMzNDE1NTsgYm9yZGVyLXJhZGl1czogM3B4OyB9XHJcblxyXG4gICAgLnNlc3Npb25zLWxpc3QgeyBwYWRkaW5nOiAxMHB4IDE0cHg7IGRpc3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IGdhcDogOHB4OyB9XHJcbiAgICAuc2Vzc2lvbi1jYXJkIHtcclxuICAgICAgYmFja2dyb3VuZDogIzFlMjkzYjtcclxuICAgICAgYm9yZGVyOiAxcHggc29saWQgIzMzNDE1NTtcclxuICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xyXG4gICAgICBwYWRkaW5nOiAxMHB4O1xyXG4gICAgfVxyXG4gICAgLnNlc3Npb24tY2FyZC1oZWFkZXIge1xyXG4gICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XHJcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAgIG1hcmdpbi1ib3R0b206IDhweDtcclxuICAgIH1cclxuICAgIC5zZXNzaW9uLW5hbWUgeyBmb250LXdlaWdodDogNjAwOyBjb2xvcjogI2YxZjVmOTsgZm9udC1zaXplOiAxM3B4OyB9XHJcbiAgICAuc2Vzc2lvbi1tZXRhIHsgZm9udC1zaXplOiAxMXB4OyBjb2xvcjogIzY0NzQ4YjsgfVxyXG4gICAgLnNlc3Npb24tY2FyZC1hY3Rpb25zIHsgZGlzcGxheTogZmxleDsgZ2FwOiA2cHg7IH1cclxuICAgIC5zbS1idG4ge1xyXG4gICAgICBiYWNrZ3JvdW5kOiAjMzM0MTU1O1xyXG4gICAgICBib3JkZXI6IG5vbmU7XHJcbiAgICAgIGNvbG9yOiAjY2JkNWUxO1xyXG4gICAgICBwYWRkaW5nOiA0cHggMTBweDtcclxuICAgICAgYm9yZGVyLXJhZGl1czogNXB4O1xyXG4gICAgICBmb250LXNpemU6IDExcHg7XHJcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjE1cztcclxuICAgIH1cclxuICAgIC5zbS1idG46aG92ZXIgeyBiYWNrZ3JvdW5kOiAjNDc1NTY5OyB9XHJcbiAgICAuc20tYnRuLmRhbmdlciB7IGNvbG9yOiAjZmNhNWE1OyB9XHJcbiAgICAuc20tYnRuLmRhbmdlcjpob3ZlciB7IGJhY2tncm91bmQ6IHJnYmEoMjIwLDM4LDM4LDAuMik7IH1cclxuXHJcbiAgICAucmVzaXplLWhhbmRsZSB7XHJcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICAgICAgY29sb3I6ICMzMzQxNTU7XHJcbiAgICAgIGN1cnNvcjogbnMtcmVzaXplO1xyXG4gICAgICBmb250LXNpemU6IDE2cHg7XHJcbiAgICAgIHBhZGRpbmc6IDJweDtcclxuICAgICAgZmxleC1zaHJpbms6IDA7XHJcbiAgICAgIGJhY2tncm91bmQ6ICMwZjE3MmE7XHJcbiAgICAgIHVzZXItc2VsZWN0OiBub25lO1xyXG4gICAgfVxyXG4gICAgLnJlc2l6ZS1oYW5kbGU6aG92ZXIgeyBjb2xvcjogIzY0NzQ4YjsgfVxyXG4gIGBdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRGVidWdQYW5lbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICByZWNvcmRlciA9IGluamVjdChSZWNvcmRlclNlcnZpY2UpO1xyXG4gIGFpU2VydmljZSA9IGluamVjdChBaUdlbmVyYXRvclNlcnZpY2UpO1xyXG4gIHJyd2ViID0gaW5qZWN0KFJyd2ViUmVjb3JkZXJTZXJ2aWNlKTtcclxuXHJcbiAgcGFuZWxPcGVuID0gc2lnbmFsKGZhbHNlKTtcclxuICBhY3RpdmVUYWIgPSBzaWduYWw8UGFuZWxUYWI+KCdhY3Rpb25zJyk7XHJcbiAgcG9zaXRpb24gPSBzaWduYWw8UGFuZWxQb3NpdGlvbj4oJ2JvdHRvbS1yaWdodCcpO1xyXG4gIHBhbmVsV2lkdGggPSBzaWduYWwoNDIwKTtcclxuICBzaG93U2V0dGluZ3MgPSBzaWduYWwoZmFsc2UpO1xyXG4gIHNlc3Npb25OYW1lID0gJyc7XHJcbiAgc2Vzc2lvbkRlc2MgPSAnJztcclxuXHJcbiAgaGFzQWN0aW9ucyA9IGNvbXB1dGVkKFxyXG4gICAgKCkgPT4gKHRoaXMucmVjb3JkZXIuY3VycmVudFNlc3Npb24oKT8uYWN0aW9ucy5sZW5ndGggPz8gMCkgPiAwIHx8XHJcbiAgICAgICAgICAodGhpcy5yZWNvcmRlci5zZXNzaW9ucygpLmxlbmd0aCA+IDApXHJcbiAgKTtcclxuXHJcbiAgcHJpdmF0ZSByZXNpemluZyA9IGZhbHNlO1xyXG4gIHByaXZhdGUgcmVzaXplU3RhcnRZID0gMDtcclxuICBwcml2YXRlIHJlc2l6ZVN0YXJ0SCA9IDA7XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgLy8gS2V5Ym9hcmQgc2hvcnRjdXQ6IEN0cmwrU2hpZnQrRFxyXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIHRoaXMuaGFuZGxlSG90a2V5KTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIHRoaXMuaGFuZGxlSG90a2V5KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFuZGxlSG90a2V5ID0gKGU6IEtleWJvYXJkRXZlbnQpID0+IHtcclxuICAgIGlmIChlLmN0cmxLZXkgJiYgZS5zaGlmdEtleSAmJiBlLmtleSA9PT0gJ0QnKSB7XHJcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgdGhpcy50b2dnbGVQYW5lbCgpO1xyXG4gICAgfVxyXG4gICAgaWYgKGUuY3RybEtleSAmJiBlLnNoaWZ0S2V5ICYmIGUua2V5ID09PSAnUicpIHtcclxuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICBpZiAodGhpcy5yZWNvcmRlci5pc1JlY29yZGluZygpKSB7XHJcbiAgICAgICAgdGhpcy5zdG9wUmVjb3JkaW5nKCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zdGFydFJlY29yZGluZygpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgdG9nZ2xlUGFuZWwoKTogdm9pZCB7XHJcbiAgICB0aGlzLnBhbmVsT3Blbi51cGRhdGUodiA9PiAhdik7XHJcbiAgICBpZiAodGhpcy5wYW5lbE9wZW4oKSAmJiAhdGhpcy5yZWNvcmRlci5jdXJyZW50U2Vzc2lvbigpKSB7XHJcbiAgICAgIHRoaXMuYWN0aXZlVGFiLnNldCgnYWN0aW9ucycpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY3ljbGVQb3NpdGlvbigpOiB2b2lkIHtcclxuICAgIGNvbnN0IHBvc2l0aW9uczogUGFuZWxQb3NpdGlvbltdID0gWydib3R0b20tcmlnaHQnLCAnYm90dG9tLWxlZnQnLCAndG9wLXJpZ2h0JywgJ3RvcC1sZWZ0J107XHJcbiAgICBjb25zdCBpZHggPSBwb3NpdGlvbnMuaW5kZXhPZih0aGlzLnBvc2l0aW9uKCkpO1xyXG4gICAgdGhpcy5wb3NpdGlvbi5zZXQocG9zaXRpb25zWyhpZHggKyAxKSAlIHBvc2l0aW9ucy5sZW5ndGhdKTtcclxuICB9XHJcblxyXG4gIHN0YXJ0UmVjb3JkaW5nKCk6IHZvaWQge1xyXG4gICAgdGhpcy5yZWNvcmRlci5zdGFydFJlY29yZGluZyhcclxuICAgICAgdGhpcy5zZXNzaW9uTmFtZSB8fCB1bmRlZmluZWQsXHJcbiAgICAgIHRoaXMuc2Vzc2lvbkRlc2MgfHwgdW5kZWZpbmVkXHJcbiAgICApO1xyXG4gICAgLy8gU3RhcnQgcnJ3ZWIgaW4gcGFyYWxsZWwgZm9yIHZpc3VhbCByZXBsYXlcclxuICAgIHRoaXMucnJ3ZWIuc3RhcnRSZWNvcmRpbmcoKTtcclxuICAgIHRoaXMuYWN0aXZlVGFiLnNldCgnYWN0aW9ucycpO1xyXG4gIH1cclxuXHJcbiAgc3RvcFJlY29yZGluZygpOiB2b2lkIHtcclxuICAgIGNvbnN0IHNlc3Npb24gPSB0aGlzLnJlY29yZGVyLnN0b3BSZWNvcmRpbmcoKTtcclxuICAgIHRoaXMucnJ3ZWIuc3RvcFJlY29yZGluZygpO1xyXG4gICAgaWYgKHNlc3Npb24pIHtcclxuICAgICAgdGhpcy5hY3RpdmVUYWIuc2V0KCdhY3Rpb25zJyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhc3luYyBnZW5lcmF0ZVRlc3QoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBjb25zdCBzZXNzaW9uID0gdGhpcy5yZWNvcmRlci5jdXJyZW50U2Vzc2lvbigpID8/IHRoaXMucmVjb3JkZXIuc2Vzc2lvbnMoKS5hdCgtMSk7XHJcbiAgICBpZiAoIXNlc3Npb24pIHJldHVybjtcclxuICAgIGF3YWl0IHRoaXMuYWlTZXJ2aWNlLmdlbmVyYXRlQ3lwcmVzc1Rlc3Qoc2Vzc2lvbik7XHJcbiAgICB0aGlzLmFjdGl2ZVRhYi5zZXQoJ3Rlc3QnKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIGxvYWRBbmRHZW5lcmF0ZShzZXNzaW9uOiBSZWNvcmRpbmdTZXNzaW9uKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBhd2FpdCB0aGlzLmFpU2VydmljZS5nZW5lcmF0ZUN5cHJlc3NUZXN0KHNlc3Npb24pO1xyXG4gICAgdGhpcy5hY3RpdmVUYWIuc2V0KCd0ZXN0Jyk7XHJcbiAgfVxyXG5cclxuICAvLyBEcmFnIHRvIHJlcG9zaXRpb25cclxuICBzdGFydERyYWcoZTogTW91c2VFdmVudCk6IHZvaWQge1xyXG4gICAgaWYgKChlLnRhcmdldCBhcyBIVE1MRWxlbWVudCkuY2xvc2VzdCgnYnV0dG9uJykpIHJldHVybjtcclxuICAgIGNvbnN0IHBhbmVsID0gKGUuY3VycmVudFRhcmdldCBhcyBIVE1MRWxlbWVudCkucGFyZW50RWxlbWVudCE7XHJcbiAgICBjb25zdCBzdGFydFggPSBlLmNsaWVudFggLSBwYW5lbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0O1xyXG4gICAgY29uc3Qgc3RhcnRZID0gZS5jbGllbnRZIC0gcGFuZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wO1xyXG5cclxuICAgIGNvbnN0IG9uTW92ZSA9IChldjogTW91c2VFdmVudCkgPT4ge1xyXG4gICAgICBwYW5lbC5zdHlsZS5sZWZ0ID0gYCR7ZXYuY2xpZW50WCAtIHN0YXJ0WH1weGA7XHJcbiAgICAgIHBhbmVsLnN0eWxlLnRvcCAgPSBgJHtldi5jbGllbnRZIC0gc3RhcnRZfXB4YDtcclxuICAgICAgcGFuZWwuc3R5bGUucmlnaHQgPSAnYXV0byc7XHJcbiAgICAgIHBhbmVsLnN0eWxlLmJvdHRvbSA9ICdhdXRvJztcclxuICAgIH07XHJcbiAgICBjb25zdCBvblVwID0gKCkgPT4ge1xyXG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCBvbk1vdmUpO1xyXG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgb25VcCk7XHJcbiAgICB9O1xyXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgb25Nb3ZlKTtcclxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCBvblVwKTtcclxuICB9XHJcblxyXG4gIC8vIFJlc2l6ZSBoZWlnaHRcclxuICBzdGFydFJlc2l6ZShlOiBNb3VzZUV2ZW50KTogdm9pZCB7XHJcbiAgICBjb25zdCBwYW5lbCA9IChlLmN1cnJlbnRUYXJnZXQgYXMgSFRNTEVsZW1lbnQpLnBhcmVudEVsZW1lbnQhO1xyXG4gICAgdGhpcy5yZXNpemVTdGFydFkgPSBlLmNsaWVudFk7XHJcbiAgICB0aGlzLnJlc2l6ZVN0YXJ0SCA9IHBhbmVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodDtcclxuXHJcbiAgICBjb25zdCBvbk1vdmUgPSAoZXY6IE1vdXNlRXZlbnQpID0+IHtcclxuICAgICAgY29uc3QgbmV3SCA9IE1hdGgubWF4KDI1MCwgdGhpcy5yZXNpemVTdGFydEggKyAoZXYuY2xpZW50WSAtIHRoaXMucmVzaXplU3RhcnRZKSk7XHJcbiAgICAgIHBhbmVsLnN0eWxlLm1heEhlaWdodCA9IGAke25ld0h9cHhgO1xyXG4gICAgfTtcclxuICAgIGNvbnN0IG9uVXAgPSAoKSA9PiB7XHJcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIG9uTW92ZSk7XHJcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCBvblVwKTtcclxuICAgIH07XHJcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCBvbk1vdmUpO1xyXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIG9uVXApO1xyXG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjb3JkZWQtYWN0aW9uLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9tb2RlbHMvcmVjb3JkZWQtYWN0aW9uLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSBBY3Rpb25UeXBlID1cclxuICB8ICdjbGljaydcclxuICB8ICdkYmxjbGljaydcclxuICB8ICdpbnB1dCdcclxuICB8ICdzZWxlY3QnXHJcbiAgfCAnc3VibWl0J1xyXG4gIHwgJ25hdmlnYXRpb24nXHJcbiAgfCAna2V5cHJlc3MnXHJcbiAgfCAnc2Nyb2xsJ1xyXG4gIHwgJ2hvdmVyJ1xyXG4gIHwgJ2Fzc2VydGlvbidcclxuICB8ICdzY3JlZW5zaG90JztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRWxlbWVudEluZm8ge1xyXG4gIHRhZ05hbWU6IHN0cmluZztcclxuICBpZD86IHN0cmluZztcclxuICBjbGFzc2VzOiBzdHJpbmdbXTtcclxuICBkYXRhVGVzdElkPzogc3RyaW5nO1xyXG4gIGRhdGFDeT86IHN0cmluZztcclxuICBuYW1lPzogc3RyaW5nO1xyXG4gIHR5cGU/OiBzdHJpbmc7XHJcbiAgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XHJcbiAgdGV4dD86IHN0cmluZztcclxuICBocmVmPzogc3RyaW5nO1xyXG4gIGFyaWFMYWJlbD86IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBSZWNvcmRlZEFjdGlvbiB7XHJcbiAgaWQ6IHN0cmluZztcclxuICB0eXBlOiBBY3Rpb25UeXBlO1xyXG4gIHRpbWVzdGFtcDogbnVtYmVyO1xyXG4gIHNlbGVjdG9yOiBzdHJpbmc7XHJcbiAgc2VsZWN0b3JTdHJhdGVneTogJ2RhdGEtdGVzdGlkJyB8ICdkYXRhLWN5JyB8ICdpZCcgfCAnbmFtZScgfCAnY2xhc3MnIHwgJ3RleHQnIHwgJ250aCcgfCAnY29tYmluZWQnO1xyXG4gIHZhbHVlPzogc3RyaW5nO1xyXG4gIHVybDogc3RyaW5nO1xyXG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XHJcbiAgZWxlbWVudD86IEVsZW1lbnRJbmZvO1xyXG4gIHNjcmVlbnNob3REYXRhVXJsPzogc3RyaW5nO1xyXG4gIG5vdGU/OiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUmVjb3JkaW5nU2Vzc2lvbiB7XHJcbiAgaWQ6IHN0cmluZztcclxuICBuYW1lOiBzdHJpbmc7XHJcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XHJcbiAgc3RhcnRUaW1lOiBudW1iZXI7XHJcbiAgZW5kVGltZT86IG51bWJlcjtcclxuICBzdGFydFVybDogc3RyaW5nO1xyXG4gIGFjdGlvbnM6IFJlY29yZGVkQWN0aW9uW107XHJcbiAgdGFncz86IHN0cmluZ1tdO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEdlbmVyYXRlZFRlc3Qge1xyXG4gIGNvZGU6IHN0cmluZztcclxuICBnZW5lcmF0ZWRBdDogbnVtYmVyO1xyXG4gIG1vZGVsOiBzdHJpbmc7XHJcbiAgc2Vzc2lvbklkOiBzdHJpbmc7XHJcbiAgcHJvbXB0VG9rZW5zPzogbnVtYmVyO1xyXG4gIGNvbXBsZXRpb25Ub2tlbnM/OiBudW1iZXI7XHJcbn1cclxuIl19
|
|
@@ -58,4 +58,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
58
58
|
type: Injectable,
|
|
59
59
|
args: [{ providedIn: 'root' }]
|
|
60
60
|
}], ctorParameters: () => [{ type: i1.HttpClient }] });
|
|
61
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWktZ2VuZXJhdG9yLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL2FpLWdlbmVyYXRvci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFLbkQsTUFBTSxPQUFPLGtCQUFrQjtJQVc3QixZQUFvQixJQUFnQjtRQUFoQixTQUFJLEdBQUosSUFBSSxDQUFZO1FBVjVCLGdCQUFXLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsMEJBQTBCLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUM3RSxrQkFBYSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM5QixXQUFNLEdBQUcsTUFBTSxDQUFnQixJQUFJLENBQUMsQ0FBQztRQUNyQyxjQUFTLEdBQUcsTUFBTSxDQUF1QixJQUFJLENBQUMsQ0FBQztRQUV2RCxlQUFVLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUMzQyxpQkFBWSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDL0MsVUFBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDakMsYUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxFQUFFLENBQUM7SUFFQSxDQUFDO0lBRXhDLGFBQWEsQ0FBQyxHQUFXO1FBQ3ZCLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzFCLFlBQVksQ0FBQyxPQUFPLENBQUMsMEJBQTBCLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVELEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxPQUF5QjtRQUNqRCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDL0IsSUFBSSxDQUFDLEdBQUc7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLGdDQUFnQyxDQUFDLENBQUM7UUFFNUQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDN0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFdEIsSUFBSSxDQUFDO1lBQ0gsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQztZQUNsRCxNQUFNLElBQUksR0FBa0I7Z0JBQzFCLElBQUk7Z0JBQ0osV0FBVyxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUU7Z0JBQ3ZCLEtBQUssRUFBRSxHQUFHO2dCQUNWLFNBQVMsRUFBRSxPQUFPLENBQUMsRUFBRTthQUN0QixDQUFDO1lBQ0YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDekIsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBQUMsT0FBTyxHQUFRLEVBQUUsQ0FBQztZQUNsQixNQUFNLEdBQUcsR0FBRyxHQUFHLEVBQUUsS0FBSyxFQUFFLE9BQU8sSUFBSSxHQUFHLEVBQUUsT0FBTyxJQUFJLG9CQUFvQixDQUFDO1lBQ3hFLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3JCLE1BQU0sR0FBRyxDQUFDO1FBQ1osQ0FBQztnQkFBUyxDQUFDO1lBQ1QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEMsQ0FBQztJQUNILENBQUM7SUFFTyxXQUFXLENBQUMsR0FBVyxFQUFFLE9BQXlCO1FBQ3hELE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDckMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLE9BQU8sRUFBRSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQztnQkFDL0QsSUFBSSxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDO2dCQUMzQixLQUFLLEVBQUUsTUFBTTthQUNkLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzsrR0FuRFUsa0JBQWtCO21IQUFsQixrQkFBa0IsY0FETCxNQUFNOzs0RkFDbkIsa0JBQWtCO2tCQUQ5QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBHZW5lcmF0ZWRUZXN0LCBSZWNvcmRpbmdTZXNzaW9uIH0gZnJvbSAnLi4vbW9kZWxzL3JlY29yZGVkLWFjdGlvbi5tb2RlbCc7XHJcblxyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxyXG5leHBvcnQgY2xhc3MgQWlHZW5lcmF0b3JTZXJ2aWNlIHtcclxuICBwcml2YXRlIF93ZWJob29rVXJsID0gc2lnbmFsKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdkZWJ1Z1JlY29yZGVyX3dlYmhvb2tVcmwnKSA/PyAnJyk7XHJcbiAgcHJpdmF0ZSBfaXNHZW5lcmF0aW5nID0gc2lnbmFsKGZhbHNlKTtcclxuICBwcml2YXRlIF9lcnJvciA9IHNpZ25hbDxzdHJpbmcgfCBudWxsPihudWxsKTtcclxuICBwcml2YXRlIF9sYXN0VGVzdCA9IHNpZ25hbDxHZW5lcmF0ZWRUZXN0IHwgbnVsbD4obnVsbCk7XHJcblxyXG4gIHdlYmhvb2tVcmwgPSB0aGlzLl93ZWJob29rVXJsLmFzUmVhZG9ubHkoKTtcclxuICBpc0dlbmVyYXRpbmcgPSB0aGlzLl9pc0dlbmVyYXRpbmcuYXNSZWFkb25seSgpO1xyXG4gIGVycm9yID0gdGhpcy5fZXJyb3IuYXNSZWFkb25seSgpO1xyXG4gIGxhc3RUZXN0ID0gdGhpcy5fbGFzdFRlc3QuYXNSZWFkb25seSgpO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQpIHt9XHJcblxyXG4gIHNldFdlYmhvb2tVcmwodXJsOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuX3dlYmhvb2tVcmwuc2V0KHVybCk7XHJcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnZGVidWdSZWNvcmRlcl93ZWJob29rVXJsJywgdXJsKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIGdlbmVyYXRlQ3lwcmVzc1Rlc3Qoc2Vzc2lvbjogUmVjb3JkaW5nU2Vzc2lvbik6IFByb21pc2U8R2VuZXJhdGVkVGVzdD4ge1xyXG4gICAgY29uc3QgdXJsID0gdGhpcy5fd2ViaG9va1VybCgpO1xyXG4gICAgaWYgKCF1cmwpIHRocm93IG5ldyBFcnJvcignS2VpbmUgV2ViaG9vay1VUkwga29uZmlndXJpZXJ0Jyk7XHJcblxyXG4gICAgdGhpcy5faXNHZW5lcmF0aW5nLnNldCh0cnVlKTtcclxuICAgIHRoaXMuX2Vycm9yLnNldChudWxsKTtcclxuXHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCBjb2RlID0gYXdhaXQgdGhpcy5wb3N0U2Vzc2lvbih1cmwsIHNlc3Npb24pO1xyXG4gICAgICBjb25zdCB0ZXN0OiBHZW5lcmF0ZWRUZXN0ID0ge1xyXG4gICAgICAgIGNvZGUsXHJcbiAgICAgICAgZ2VuZXJhdGVkQXQ6IERhdGUubm93KCksXHJcbiAgICAgICAgbW9kZWw6IHVybCxcclxuICAgICAgICBzZXNzaW9uSWQ6IHNlc3Npb24uaWQsXHJcbiAgICAgIH07XHJcbiAgICAgIHRoaXMuX2xhc3RUZXN0LnNldCh0ZXN0KTtcclxuICAgICAgcmV0dXJuIHRlc3Q7XHJcbiAgICB9IGNhdGNoIChlcnI6IGFueSkge1xyXG4gICAgICBjb25zdCBtc2cgPSBlcnI/LmVycm9yPy5tZXNzYWdlIHx8IGVycj8ubWVzc2FnZSB8fCAnRmVobGVyIGJlaW0gU2VuZGVuJztcclxuICAgICAgdGhpcy5fZXJyb3Iuc2V0KG1zZyk7XHJcbiAgICAgIHRocm93IGVycjtcclxuICAgIH0gZmluYWxseSB7XHJcbiAgICAgIHRoaXMuX2lzR2VuZXJhdGluZy5zZXQoZmFsc2UpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBwb3N0U2Vzc2lvbih1cmw6IHN0cmluZywgc2Vzc2lvbjogUmVjb3JkaW5nU2Vzc2lvbik6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICB0aGlzLmh0dHAucG9zdCh1cmwsIHNlc3Npb24sIHsgcmVzcG9uc2VUeXBlOiAndGV4dCcgfSkuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzKSA9PiByZXNvbHZlKHJlcyksXHJcbiAgICAgICAgZXJyb3I6IHJlamVjdCxcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuIl19
|