valtech-components 4.0.449 → 4.0.451
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/esm2022/lib/components/organisms/mini-games/bubble-blitz-game.component.mjs +18 -9
- package/esm2022/lib/components/organisms/mini-games/chessimals-challenge-progress.service.mjs +35 -3
- package/esm2022/lib/components/organisms/mini-games/chessimals-engine.mjs +109 -16
- package/esm2022/lib/components/organisms/mini-games/chessimals-game.component.mjs +18 -9
- package/esm2022/lib/components/organisms/mini-games/christianity-game.component.mjs +1735 -0
- package/esm2022/lib/components/organisms/mini-games/memory-game.component.mjs +18 -9
- package/esm2022/lib/components/organisms/mini-games/mini-games.i18n.mjs +159 -9
- package/esm2022/lib/components/organisms/mini-games/simon-game.component.mjs +18 -9
- package/esm2022/lib/components/organisms/mini-games/types.mjs +1 -1
- package/esm2022/lib/directives/light-ripple.directive.mjs +57 -0
- package/esm2022/lib/version.mjs +2 -2
- package/esm2022/mini-games/public-api.mjs +34 -2
- package/esm2022/public-api.mjs +3 -1
- package/fesm2022/valtech-components-mini-games.mjs +34 -2
- package/fesm2022/valtech-components-mini-games.mjs.map +1 -1
- package/fesm2022/valtech-components.mjs +2156 -60
- package/fesm2022/valtech-components.mjs.map +1 -1
- package/lib/components/organisms/mini-games/bubble-blitz-game.component.d.ts +2 -0
- package/lib/components/organisms/mini-games/chessimals-challenge-progress.service.d.ts +2 -0
- package/lib/components/organisms/mini-games/chessimals-game.component.d.ts +3 -1
- package/lib/components/organisms/mini-games/christianity-game.component.d.ts +113 -0
- package/lib/components/organisms/mini-games/memory-game.component.d.ts +2 -0
- package/lib/components/organisms/mini-games/simon-game.component.d.ts +2 -0
- package/lib/components/organisms/mini-games/types.d.ts +74 -1
- package/lib/directives/light-ripple.directive.d.ts +8 -0
- package/lib/version.d.ts +1 -1
- package/mini-games/public-api.d.ts +4 -0
- package/package.json +1 -1
- package/public-api.d.ts +2 -0
- package/src/lib/assets/games/christianity/card-symbol.svg +51 -0
|
@@ -120,6 +120,7 @@ export class ChessimalsGameComponent {
|
|
|
120
120
|
});
|
|
121
121
|
this.botThinking = signal(false);
|
|
122
122
|
this.confirmAction = signal(undefined);
|
|
123
|
+
this.confirmedAction = signal(undefined);
|
|
123
124
|
this.onlineJoinCode = signal('');
|
|
124
125
|
this.onlineLoading = signal(false);
|
|
125
126
|
this.onlineAction = signal(undefined);
|
|
@@ -1097,13 +1098,12 @@ export class ChessimalsGameComponent {
|
|
|
1097
1098
|
closeConfirmModal() {
|
|
1098
1099
|
this.confirmAction.set(undefined);
|
|
1099
1100
|
}
|
|
1100
|
-
|
|
1101
|
-
if (token !== 'confirm') {
|
|
1102
|
-
this.closeConfirmModal();
|
|
1103
|
-
return;
|
|
1104
|
-
}
|
|
1105
|
-
const action = this.confirmAction();
|
|
1101
|
+
handleConfirmModalDismissed() {
|
|
1106
1102
|
this.confirmAction.set(undefined);
|
|
1103
|
+
const action = this.confirmedAction();
|
|
1104
|
+
this.confirmedAction.set(undefined);
|
|
1105
|
+
if (!action)
|
|
1106
|
+
return;
|
|
1107
1107
|
if (action === 'restart') {
|
|
1108
1108
|
this.restartGame();
|
|
1109
1109
|
return;
|
|
@@ -1125,6 +1125,15 @@ export class ChessimalsGameComponent {
|
|
|
1125
1125
|
this.createNewChallengeRun();
|
|
1126
1126
|
}
|
|
1127
1127
|
}
|
|
1128
|
+
confirmPendingAction(token) {
|
|
1129
|
+
if (token !== 'confirm') {
|
|
1130
|
+
this.closeConfirmModal();
|
|
1131
|
+
return;
|
|
1132
|
+
}
|
|
1133
|
+
const action = this.confirmAction();
|
|
1134
|
+
this.confirmedAction.set(action);
|
|
1135
|
+
this.confirmAction.set(undefined);
|
|
1136
|
+
}
|
|
1128
1137
|
resignGame() {
|
|
1129
1138
|
const game = this.game();
|
|
1130
1139
|
if (game.status === 'finished')
|
|
@@ -3206,7 +3215,7 @@ export class ChessimalsGameComponent {
|
|
|
3206
3215
|
<ion-modal
|
|
3207
3216
|
[isOpen]="!!confirmAction()"
|
|
3208
3217
|
cssClass="val-modal-adaptive"
|
|
3209
|
-
(didDismiss)="
|
|
3218
|
+
(didDismiss)="handleConfirmModalDismissed()"
|
|
3210
3219
|
>
|
|
3211
3220
|
<ng-template>
|
|
3212
3221
|
<val-modal-layout
|
|
@@ -4167,7 +4176,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
4167
4176
|
<ion-modal
|
|
4168
4177
|
[isOpen]="!!confirmAction()"
|
|
4169
4178
|
cssClass="val-modal-adaptive"
|
|
4170
|
-
(didDismiss)="
|
|
4179
|
+
(didDismiss)="handleConfirmModalDismissed()"
|
|
4171
4180
|
>
|
|
4172
4181
|
<ng-template>
|
|
4173
4182
|
<val-modal-layout
|
|
@@ -4192,4 +4201,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
4192
4201
|
}], projectionMode: [{
|
|
4193
4202
|
type: Input
|
|
4194
4203
|
}] } });
|
|
4195
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlc3NpbWFscy1nYW1lLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9vcmdhbmlzbXMvbWluaS1nYW1lcy9jaGVzc2ltYWxzLWdhbWUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsS0FBSyxFQUFFLE1BQU0sRUFBcUIsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNySSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVwQyxPQUFPLEVBQ0wsbUJBQW1CLEVBQ25CLHVCQUF1QixFQUN2Qix1QkFBdUIsRUFDdkIsMkJBQTJCLEVBQzNCLG9CQUFvQixFQUNwQix1QkFBdUIsRUFDdkIsb0JBQW9CLEVBQ3BCLFdBQVcsRUFDWCxvQkFBb0IsR0FDckIsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUM3RixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFxQjFELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQzNGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBRXhGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBRTNGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBR3BGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNsRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDM0UsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMvRCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNsRixPQUFPLEVBQUUsT0FBTyxJQUFJLDBCQUEwQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7O0FBMEN6RSxNQUFNLDRCQUE0QixHQUFHLEdBQUcsQ0FBQztBQUN6QyxNQUFNLDBCQUEwQixHQUFHLEdBQUcsQ0FBQztBQUN2QyxNQUFNLG9CQUFvQixHQUEwQixPQUFPLENBQUM7QUFDNUQsTUFBTSx5QkFBeUIsR0FBRyxDQUFDLENBQUM7QUFFcEMsTUFBTSxPQUFPLEdBQTJCO0lBQ3RDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsbUNBQW1DLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRTtJQUM5RSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLGtDQUFrQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUU7SUFDNUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxzQ0FBc0MsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFO0lBQ3BGLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsa0NBQWtDLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRTtDQUMxRSxDQUFDO0FBRUYsTUFBTSwyQkFBMkIsR0FBNkI7SUFDNUQsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLG1DQUFtQyxFQUFFO0lBQ2xJLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxxQ0FBcUMsRUFBRTtJQUN4SSxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsbUNBQW1DLEVBQUU7SUFDbEksRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLG1DQUFtQyxFQUFFO0lBQ2xJLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxxQ0FBcUMsRUFBRTtJQUN0SSxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsbUNBQW1DLEVBQUU7SUFDcEksRUFBRSxFQUFFLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLHFDQUFxQyxFQUFFO0lBQ3RJLEVBQUUsRUFBRSxFQUFFLFVB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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTY3QlQsd29xRUE5N0JTLFFBQVEsc0RBQUUsb0JBQW9CLDhNQUFFLG1CQUFtQix5R0FBRSxvQkFBb0IsMEZBQUUsbUJBQW1COzs0RkFtMEk3Rix1QkFBdUI7a0JBdDBJbkMsU0FBUzsrQkFDRSxxQkFBcUIsY0FDbkIsSUFBSSxXQUNQLENBQUMsUUFBUSxFQUFFLG9CQUFvQixFQUFFLG1CQUFtQixFQUFFLG9CQUFvQixFQUFFLG1CQUFtQixDQUFDLFlBQy9GOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E2N0JUO3dEQW82R2lDLFdBQVc7c0JBQTVDLFNBQVM7dUJBQUMsYUFBYTtnQkF3SlgsWUFBWTtzQkFBeEIsS0FBSztnQkFRRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIElucHV0LCBOZ1pvbmUsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3Q2hpbGQsIGNvbXB1dGVkLCBlZmZlY3QsIGluamVjdCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IElvbk1vZGFsIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uU3RhcnQsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtcbiAgYXBwbHlDaGVzc2ltYWxzTW92ZSxcbiAgY2hvb3NlQ2hlc3NpbWFsc0JvdE1vdmUsXG4gIENIRVNTSU1BTFNfQk9UX1BST0ZJTEVTLFxuICBjcmVhdGVDaGVzc2ltYWxzUmV2aWV3U3RhdGUsXG4gIGNyZWF0ZUNoZXNzaW1hbHNHYW1lLFxuICBnZXRDaGVzc2ltYWxzTGVnYWxNb3ZlcyxcbiAgZ2V0Q2hlc3NpbWFsc1BpZWNlQXQsXG4gIHBvc2l0aW9uS2V5LFxuICByZXNpZ25DaGVzc2ltYWxzR2FtZSxcbn0gZnJvbSAnLi9jaGVzc2ltYWxzLWVuZ2luZSc7XG5pbXBvcnQgeyBDaGVzc2ltYWxzT25saW5lU2VydmljZSB9IGZyb20gJy4vY2hlc3NpbWFscy1vbmxpbmUuc2VydmljZSc7XG5pbXBvcnQgeyBDaGVzc2ltYWxzQ2hhbGxlbmdlUHJvZ3Jlc3NTZXJ2aWNlIH0gZnJvbSAnLi9jaGVzc2ltYWxzLWNoYWxsZW5nZS1wcm9ncmVzcy5zZXJ2aWNlJztcbmltcG9ydCB7IE1JTklfR0FNRVNfSTE4TiB9IGZyb20gJy4vbWluaS1nYW1lcy5pMThuJztcbmltcG9ydCB7IFJldHJvQXVkaW9TZXJ2aWNlIH0gZnJvbSAnLi9yZXRyby1hdWRpby5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIENoZXNzaW1hbHNBbmltYWxUeXBlLFxuICBDaGVzc2ltYWxzQm90RGlmZmljdWx0eSxcbiAgQ2hlc3NpbWFsc0JvdFByb2ZpbGUsXG4gIENoZXNzaW1hbHNCb3RQcm9maWxlSWQsXG4gIENoZXNzaW1hbHNCb2FyZFNpemUsXG4gIENoZXNzaW1hbHNDaGFsbGVuZ2VCb3QsXG4gIENoZXNzaW1hbHNDaGFsbGVuZ2VSb3VuZFN0YXRzLFxuICBDaGVzc2ltYWxzQ2hhbGxlbmdlUm91bmRSZXN1bHQsXG4gIENoZXNzaW1hbHNDaGFsbGVuZ2VSdW4sXG4gIENoZXNzaW1hbHNDaGFsbGVuZ2VTdGF0cyxcbiAgQ2hlc3NpbWFsc0dhbWVTdGF0ZSxcbiAgQ2hlc3NpbWFsc0hpc3RvcnlFbnRyeSxcbiAgQ2hlc3NpbWFsc0xvY2FsTW9kZSxcbiAgQ2hlc3NpbWFsc01vdmUsXG4gIENoZXNzaW1hbHNPbmxpbmVQYXJ0aWNpcGFudCxcbiAgQ2hlc3NpbWFsc1BpZWNlLFxuICBDaGVzc2ltYWxzUGxheWVyQ29sb3IsXG4gIENoZXNzaW1hbHNQb3NpdGlvbixcbn0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBNb2RhbExheW91dENvbXBvbmVudCB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9tb2RhbC1sYXlvdXQvbW9kYWwtbGF5b3V0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBSYW5nZUlucHV0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL3JhbmdlLWlucHV0L3JhbmdlLWlucHV0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBSYW5nZUlucHV0TWV0YWRhdGEsIFJhbmdlVmFsdWUgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvcmFuZ2UtaW5wdXQvdHlwZXMnO1xuaW1wb3J0IHsgVG9nZ2xlSW5wdXRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvdG9nZ2xlLWlucHV0L3RvZ2dsZS1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVG9nZ2xlSW5wdXRNZXRhZGF0YSB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy90b2dnbGUtaW5wdXQvdHlwZXMnO1xuaW1wb3J0IHsgVXNlckF2YXRhckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL3VzZXItYXZhdGFyL3VzZXItYXZhdGFyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBVc2VyQXZhdGFyTWV0YWRhdGEgfSBmcm9tICcuLi8uLi9hdG9tcy91c2VyLWF2YXRhci90eXBlcyc7XG5pbXBvcnQgeyBCdXR0b25NZXRhZGF0YSB9IGZyb20gJy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYXV0aC9hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHsgSGFwdGljc1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9oYXB0aWNzL2hhcHRpY3Muc2VydmljZSc7XG5pbXBvcnQgeyBJMThuU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2kxOG4nO1xuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdG9hc3Quc2VydmljZSc7XG5pbXBvcnQgeyBNaW5pR2FtZVBsYXllclByb2ZpbGVTZXJ2aWNlIH0gZnJvbSAnLi9taW5pLWdhbWUtcGxheWVyLXByb2ZpbGUuc2VydmljZSc7XG5pbXBvcnQgeyBWRVJTSU9OIGFzIFZBTFRFQ0hfQ09NUE9ORU5UU19WRVJTSU9OIH0gZnJvbSAnLi4vLi4vLi4vdmVyc2lvbic7XG5cbmludGVyZmFjZSBDaGVzc2ltYWxzQW5pbWFsVmlldyB7XG4gIHR5cGU6IENoZXNzaW1hbHNBbmltYWxUeXBlO1xuICBhc3NldFNyYzogc3RyaW5nO1xuICB0b25lOiBudW1iZXI7XG59XG5cbnR5cGUgQ2hlc3NpbWFsc0NvbmZpcm1BY3Rpb24gPSAncmVzdGFydCcgfCAnbW9kZScgfCAnZ2FtZXMnIHwgJ3Jlc2lnbicgfCAnY2hhbGxlbmdlLW5ldyc7XG50eXBlIENoZXNzaW1hbHNSZW1hdGNoU3RhdGUgPSAnbm9uZScgfCAncmVxdWVzdGVkJyB8ICdpbmNvbWluZyc7XG50eXBlIENoZXNzaW1hbHNDaGFsbGVuZ2VQaGFzZSA9ICdpZGxlJyB8ICdwbGF5aW5nJyB8ICdiZXR3ZWVuJyB8ICdjb21wbGV0ZWQnIHwgJ2ZhaWxlZCc7XG5cbmludGVyZmFjZSBDaGVzc2ltYWxzVHV0b3JpYWxFeHBlY3RlZE1vdmUge1xuICBwaWVjZUlkOiBzdHJpbmc7XG4gIHRvOiBDaGVzc2ltYWxzUG9zaXRpb247XG4gIGFuaW1hbD86IENoZXNzaW1hbHNBbmltYWxUeXBlO1xufVxuXG5pbnRlcmZhY2UgQ2hlc3NpbWFsc01vdmluZ1BpZWNlVmlldyB7XG4gIGNvbG9yOiBDaGVzc2ltYWxzUGxheWVyQ29sb3I7XG4gIGZyb21Sb3c6IG51bWJlcjtcbiAgZnJvbUNvbDogbnVtYmVyO1xuICB0b1JvdzogbnVtYmVyO1xuICB0b0NvbDogbnVtYmVyO1xufVxuXG5pbnRlcmZhY2UgQ2hlc3NpbWFsc01vdmVFZmZlY3RWaWV3IHtcbiAgYW5pbWFsPzogQ2hlc3NpbWFsc0FuaW1hbFR5cGU7XG4gIGZyb206IENoZXNzaW1hbHNQb3NpdGlvbjtcbiAgdG86IENoZXNzaW1hbHNQb3NpdGlvbjtcbiAgY2FwdHVyZTogYm9vbGVhbjtcbn1cblxuaW50ZXJmYWNlIENoZXNzaW1hbHNNb3ZlVHJhaWxWaWV3IHtcbiAgeDogc3RyaW5nO1xuICB5OiBzdHJpbmc7XG4gIGxlbmd0aDogc3RyaW5nO1xuICBhbmdsZTogc3RyaW5nO1xuICBhbmltYWw/OiBDaGVzc2ltYWxzQW5pbWFsVHlwZTtcbiAgY2FwdHVyZTogYm9vbGVhbjtcbn1cblxuY29uc3QgQ0hFU1NJTUFMU19NT1ZFX0FOSU1BVElPTl9NUyA9IDM2MDtcbmNvbnN0IENIRVNTSU1BTFNfQk9UX1RISU5LSU5HX01TID0gNjIwO1xuY29uc3QgQ0hFU1NJTUFMU19CT1RfQ09MT1I6IENoZXNzaW1hbHNQbGF5ZXJDb2xvciA9ICdibGFjayc7XG5jb25zdCBDSEVTU0lNQUxTX1RVVE9SSUFMX1NURVBTID0gNztcblxuY29uc3QgQU5JTUFMUzogQ2hlc3NpbWFsc0FuaW1hbFZpZXdbXSA9IFtcbiAgeyB0eXBlOiAnZWFnbGUnLCBhc3NldFNyYzogJ2Fzc2V0cy9nYW1lcy9jaGVzc2ltYWxzL2VhZ2xlLmpwZycsIHRvbmU6IDY1OS4yNSB9LFxuICB7IHR5cGU6ICdidWxsJywgYXNzZXRTcmM6ICdhc3NldHMvZ2FtZXMvY2hlc3NpbWFscy9idWxsLmpwZycsIHRvbmU6IDI2MS42MyB9LFxuICB7IHR5cGU6ICdrYW5nYXJvbycsIGFzc2V0U3JjOiAnYXNzZXRzL2dhbWVzL2NoZXNzaW1hbHMva2FuZ2Fyb28uanBnJywgdG9uZTogNTIzLjI1IH0sXG4gIHsgdHlwZTogJ2xpb24nLCBhc3NldFNyYzogJ2Fzc2V0cy9nYW1lcy9jaGVzc2ltYWxzL2xpb24uanBnJywgdG9uZTogMzkyIH0sXG5dO1xuXG5jb25zdCBDSEVTU0lNQUxTX0NIQUxMRU5HRV9MQURERVI6IENoZXNzaW1hbHNDaGFsbGVuZ2VCb3RbXSA9IFtcbiAgeyBpZDogJ3Nwcm91dCcsIHJvdW5kOiAxLCBwcm9maWxlSWQ6ICdleHBsb3JlcicsIGRpZmZpY3VsdHk6ICdlYXN5JywgYm9hcmRTaXplOiA2LCBpbnRyb0tleTogJ2NoZXNzaW1hbHNDaGFsbGVuZ2VCb3RTcHJvdXRJbnRybycgfSxcbiAgeyBpZDogJ3NlbnRpbmVsJywgcm91bmQ6IDIsIHByb2ZpbGVJZDogJ2d1YXJkaWFuJywgZGlmZmljdWx0eTogJ25vcm1hbCcsIGJvYXJkU2l6ZTogNiwgaW50cm9LZXk6ICdjaGVzc2ltYWxzQ2hhbGxlbmdlQm90U2VudGluZWxJbnRybycgfSxcbiAgeyBpZDogJ2h1bnRlcicsIHJvdW5kOiAzLCBwcm9maWxlSWQ6ICdodW50ZXInLCBkaWZmaWN1bHR5OiAnbm9ybWFsJywgYm9hcmRTaXplOiA2LCBpbnRyb0tleTogJ2NoZXNzaW1hbHNDaGFsbGVuZ2VCb3RIdW50ZXJJbnRybycgfSxcbiAgeyBpZDogJ2p1bXBlcicsIHJvdW5kOiA0LCBwcm9maWxlSWQ6ICdqdW1wZXInLCBkaWZmaWN1bHR5OiAnbm9ybWFsJywgYm9hcmRTaXplOiA2LCBpbnRyb0tleTogJ2NoZXNzaW1hbHNDaGFsbGVuZ2VCb3RKdW1wZXJJbnRybycgfSxcbiAgeyBpZDogJ3ByZWRhdG9yJywgcm91bmQ6IDUsIHByb2ZpbGVJZDogJ3ByZWRhdG9yJywgZGlmZmljdWx0eTogJ2hhcmQnLCBib2FyZFNpemU6IDgsIGludHJvS2V5OiAnY2hlc3NpbWFsc0NoYWxsZW5nZUJvdFByZWRhdG9ySW50cm8nIH0sXG4gIHsgaWQ6ICdvcmFjbGUnLCByb3VuZDogNiwgcHJvZmlsZUlkOiAnc3RyYXRlZ2lzdCcsIGRpZmZpY3VsdHk6ICdoYXJkJywgYm9hcmRTaXplOiA4LCBpbnRyb0tleTogJ2NoZXNzaW1hbHNDaGFsbGVuZ2VCb3RPcmFjbGVJbnRybycgfSxcbiAgeyBpZDogJ3NwcmludGVyJywgcm91bmQ6IDcsIHByb2ZpbGVJZDogJ3NwcmludGVyJywgZGlmZmljdWx0eTogJ2hhcmQnLCBib2FyZFNpemU6IDgsIGludHJvS2V5OiAnY2hlc3NpbWFsc0NoYWxsZW5nZUJvdFNwcmludGVySW50cm8nIH0sXG4gIHsgaWQ6ICdjaGFtcGlvbicsIHJvdW5kOiA4LCBwcm9maWxlSWQ6ICdzZW50aW5lbCcsIGRpZmZpY3VsdHk6ICdoYXJkJywgYm9hcmRTaXplOiA4LCBpbnRyb0tleTogJ2NoZXNzaW1hbHNDaGFsbGVuZ2VCb3RDaGFtcGlvbkludHJvJyB9LFxuXTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLWNoZXNzaW1hbHMtZ2FtZScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtJb25Nb2RhbCwgTW9kYWxMYXlvdXRDb21wb25lbnQsIFJhbmdlSW5wdXRDb21wb25lbnQsIFRvZ2dsZUlucHV0Q29tcG9uZW50LCBVc2VyQXZhdGFyQ29tcG9uZW50XSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8bWFpbiBjbGFzcz1cImNoZXNzaW1hbHMtc2hlbGxcIiBbY2xhc3MuY2hlc3NpbWFscy1zaGVsbC0tcHJvamVjdGlvbl09XCJwcm9qZWN0aW9uTW9kZVwiPlxuICAgICAgQGlmIChzY3JlZW4oKSA9PT0gJ2hvbWUnKSB7XG4gICAgICAgIDxzZWN0aW9uIGNsYXNzPVwiY2hlc3NpbWFscy1oZXJvXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtaGVyb19fbG9nb1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgICAgPGltZyBzcmM9XCJhc3NldHMvZ2FtZXMvY2hlc3NpbWFscy9sb2dvLmpwZ1wiIGFsdD1cIlwiIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGgxPnt7IHQoJ2NoZXNzaW1hbHNUaXRsZScpIH19PC9oMT5cbiAgICAgICAgICA8cD57eyB0KCdjaGVzc2ltYWxzU3VidGl0bGUnKSB9fTwvcD5cbiAgICAgICAgPC9zZWN0aW9uPlxuXG4gICAgICAgIDxzZWN0aW9uIGNsYXNzPVwiY2hlc3NpbWFscy1wYW5lbFwiPlxuICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPVwiY2hlc3NpbWFscy1ob3d0b1wiPlxuICAgICAgICAgICAgPGgyPnt7IHQoJ2NoZXNzaW1hbHNIb3dUb1RpdGxlJykgfX08L2gyPlxuICAgICAgICAgICAgPHA+e3sgdCgnY2hlc3NpbWFsc0hvd1RvQm9keScpIH19PC9wPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtaG93dG9fX2FjdGlvbnNcIj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNoZXNzaW1hbHMtbGVhcm4tbW9yZVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwic3RhcnRUdXRvcmlhbCgpXCI+XG4gICAgICAgICAgICAgICAge3sgdCgnY2hlc3NpbWFsc1R1dG9yaWFsU3RhcnQnKSB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNoZXNzaW1hbHMtbGVhcm4tbW9yZVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwib3BlblJ1bGVzTW9kYWwoKVwiPlxuICAgICAgICAgICAgICAgIHt7IHQoJ2xlYXJuTW9yZScpIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9hcnRpY2xlPlxuXG4gICAgICAgICAgPGFydGljbGUgY2xhc3M9XCJjaGVzc2ltYWxzLWNoYWxsZW5nZS1jYXJkXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1jaGFsbGVuZ2UtY2FyZF9fY29weVwiPlxuICAgICAgICAgICAgICA8c3Bhbj57eyB0KCdjaGVzc2ltYWxzQ2hhbGxlbmdlRXllYnJvdycpIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8aDI+e3sgdCgnY2hlc3NpbWFsc0NoYWxsZW5nZVRpdGxlJykgfX08L2gyPlxuICAgICAgICAgICAgICA8cD57eyB0KCdjaGVzc2ltYWxzQ2hhbGxlbmdlQm9keScpIH19PC9wPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1jaGFsbGVuZ2Utcml2YWxcIj5cbiAgICAgICAgICAgICAgPHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCI+e3sgYm90UHJvZmlsZUF2YXRhcihjaGFsbGVuZ2VPcGVuaW5nQm90KCkucHJvZmlsZUlkKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnY2hlc3NpbWFsc0NoYWxsZW5nZUZpcnN0Uml2YWwnKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgPHN0cm9uZz57eyBjaGFsbGVuZ2VCb3ROYW1lKGNoYWxsZW5nZU9wZW5pbmdCb3QoKSkgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICA8cD57eyB0KGNoYWxsZW5nZU9wZW5pbmdCb3QoKS5pbnRyb0tleSkgfX08L3A+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1jaGFsbGVuZ2UtY2FyZF9fc3RhdHNcIj5cbiAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgPHNtYWxsPnt7IHQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VMaXZlcycpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICA8c3Ryb25nPjM8L3N0cm9uZz5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnY2hlc3NpbWFsc0NoYWxsZW5nZUJlc3RSb3VuZCcpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IGNoYWxsZW5nZVN0YXRzKCkuYmVzdFJvdW5kUmVhY2hlZCB8fCAnLScgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnY2hlc3NpbWFsc0NoYWxsZW5nZUJlc3RTdHJlYWsnKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgPHN0cm9uZz57eyBjaGFsbGVuZ2VTdGF0cygpLmJlc3RXaW5TdHJlYWsgfHwgJy0nIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtY2hhbGxlbmdlLXBhdGhcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VQYXRoJylcIj5cbiAgICAgICAgICAgICAgQGZvciAoYm90IG9mIGNoYWxsZW5nZUxhZGRlcjsgdHJhY2sgYm90LmlkKSB7XG4gICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1jbGVhcmVkXT1cImNoYWxsZW5nZVN0YXRzKCkuYmVzdFJvdW5kUmVhY2hlZCA+PSBib3Qucm91bmRcIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzLmlzLWN1cnJlbnRdPVwiY2hhbGxlbmdlU3RhdHMoKS5iZXN0Um91bmRSZWFjaGVkICsgMSA9PT0gYm90LnJvdW5kXCJcbiAgICAgICAgICAgICAgICAgIFthdHRyLnRpdGxlXT1cImNoYWxsZW5nZUJvdE5hbWUoYm90KVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAge3sgYm90UHJvZmlsZUF2YXRhcihib3QucHJvZmlsZUlkKSB9fVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICBAaWYgKGNoYWxsZW5nZUhpc3RvcnkoKS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtY2hhbGxlbmdlLWhpc3RvcnlcIj5cbiAgICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnY2hlc3NpbWFsc0NoYWxsZW5nZVJlY2VudFJ1bnMnKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgQGZvciAocnVuIG9mIGNoYWxsZW5nZUhpc3RvcnkoKTsgdHJhY2sgcnVuLmlkKSB7XG4gICAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPGI+e3sgY2hhbGxlbmdlUnVuU3RhdHVzTGFiZWwocnVuKSB9fTwvYj5cbiAgICAgICAgICAgICAgICAgICAge3sgY2hhbGxlbmdlUnVuTGluZShydW4pIH19XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLWNoYWxsZW5nZS1jYXJkX19hY3Rpb25zXCI+XG4gICAgICAgICAgICAgIEBpZiAoYWN0aXZlU3RvcmVkQ2hhbGxlbmdlUnVuKCk7IGFzIGFjdGl2ZVJ1bikge1xuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjaGVzc2ltYWxzLXByaW1hcnlcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInJlc3VtZUNoYWxsZW5nZShhY3RpdmVSdW4pXCI+XG4gICAgICAgICAgICAgICAgICB7eyB0KCdjaGVzc2ltYWxzQ2hhbGxlbmdlUmVzdW1lJykgfX1cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2hlc3NpbWFscy1wcmltYXJ5XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJzdGFydENoYWxsZW5nZSgpXCI+XG4gICAgICAgICAgICAgICAge3sgYWN0aXZlU3RvcmVkQ2hhbGxlbmdlUnVuKCkgPyB0KCdjaGVzc2ltYWxzQ2hhbGxlbmdlU3RhcnROZXcnKSA6IHQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VTdGFydCcpIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9hcnRpY2xlPlxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtc2l6ZVwiIHJvbGU9XCJyYWRpb2dyb3VwXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJ0KCdjaGVzc2ltYWxzQm9hcmRTaXplJylcIj5cbiAgICAgICAgICAgIEBmb3IgKHNpemUgb2YgYm9hcmRTaXplczsgdHJhY2sgc2l6ZSkge1xuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmlzLXNlbGVjdGVkXT1cInNlbGVjdGVkQm9hcmRTaXplKCkgPT09IHNpemVcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RlZEJvYXJkU2l6ZS5zZXQoc2l6ZSlcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHN0cm9uZz57eyBzaXplIH19eHt7IHNpemUgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICA8c21hbGw+e3sgc2l6ZSA9PT0gNiA/IHQoJ2NoZXNzaW1hbHNTaXplU21hbGwnKSA6IHQoJ2NoZXNzaW1hbHNTaXplTGFyZ2UnKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtbW9kZVwiIHJvbGU9XCJyYWRpb2dyb3VwXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJ0KCdjaGVzc2ltYWxzTW9kZVRpdGxlJylcIj5cbiAgICAgICAgICAgIEBmb3IgKG1vZGUgb2YgbG9jYWxNb2RlczsgdHJhY2sgbW9kZSkge1xuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmlzLXNlbGVjdGVkXT1cInNlbGVjdGVkTG9jYWxNb2RlKCkgPT09IG1vZGVcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RlZExvY2FsTW9kZS5zZXQobW9kZSlcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHN0cm9uZz57eyBsb2NhbE1vZGVMYWJlbChtb2RlKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgIDxzbWFsbD57eyBsb2NhbE1vZGVEZXNjcmlwdGlvbihtb2RlKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgQGlmIChzZWxlY3RlZExvY2FsTW9kZSgpID09PSAnYm90Jykge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtZGlmZmljdWx0eVwiIHJvbGU9XCJyYWRpb2dyb3VwXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJ0KCdjaGVzc2ltYWxzQm90RGlmZmljdWx0eScpXCI+XG4gICAgICAgICAgICAgIEBmb3IgKGRpZmZpY3VsdHkgb2YgYm90RGlmZmljdWx0aWVzOyB0cmFjayBkaWZmaWN1bHR5KSB7XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtc2VsZWN0ZWRdPVwic2VsZWN0ZWRCb3REaWZmaWN1bHR5KCkgPT09IGRpZmZpY3VsdHlcIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdEJvdERpZmZpY3VsdHkoZGlmZmljdWx0eSlcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHt7IGJvdERpZmZpY3VsdHlMYWJlbChkaWZmaWN1bHR5KSB9fVxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLWJvdHNcIiByb2xlPVwicmFkaW9ncm91cFwiIFthdHRyLmFyaWEtbGFiZWxdPVwidCgnY2hlc3NpbWFsc0JvdFN0eWxlJylcIj5cbiAgICAgICAgICAgICAgQGZvciAocHJvZmlsZSBvZiBhdmFpbGFibGVCb3RQcm9maWxlcygpOyB0cmFjayBwcm9maWxlLmlkKSB7XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtc2VsZWN0ZWRdPVwic2VsZWN0ZWRCb3RQcm9maWxlSWQoKSA9PT0gcHJvZmlsZS5pZFwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0ZWRCb3RQcm9maWxlSWQuc2V0KHByb2ZpbGUuaWQpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIj57eyBwcm9maWxlLmF2YXRhciB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgYm90UHJvZmlsZUxhYmVsKHByb2ZpbGUpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICA8c21hbGw+e3sgYm90UHJvZmlsZURlc2NyaXB0aW9uKHByb2ZpbGUpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgIEBpZiAoc2VsZWN0ZWRCb3RQcm9maWxlSWQoKSA9PT0gcHJvZmlsZS5pZCkge1xuICAgICAgICAgICAgICAgICAgICA8cD57eyBib3RQcm9maWxlVGVuZGVuY3kocHJvZmlsZSkgfX08L3A+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH1cblxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjaGVzc2ltYWxzLXByaW1hcnlcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInN0YXJ0R2FtZSgpXCI+XG4gICAgICAgICAgICB7eyB0KCdjaGVzc2ltYWxzU3RhcnQnKSB9fVxuICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgPGFydGljbGUgY2xhc3M9XCJjaGVzc2ltYWxzLW9ubGluZVwiPlxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgPGgyPnt7IHQoJ2NoZXNzaW1hbHNPbmxpbmVUaXRsZScpIH19PC9oMj5cbiAgICAgICAgICAgICAgPHA+e3sgdCgnY2hlc3NpbWFsc09ubGluZUJvZHknKSB9fTwvcD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgQGlmIChvbmxpbmVFcnJvcigpKSB7XG4gICAgICAgICAgICAgIDxwIGNsYXNzPVwiY2hlc3NpbWFscy1vbmxpbmVfX2Vycm9yXCI+e3sgb25saW5lRXJyb3IoKSB9fTwvcD5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAob25saW5lTG9hZGluZygpKSB7XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLW9ubGluZV9fbG9hZGluZ1wiIHJvbGU9XCJzdGF0dXNcIiBhcmlhLWxpdmU9XCJwb2xpdGVcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgPHN0cm9uZz57eyB0KCdjaGVzc2ltYWxzT25saW5lTG9hZGluZycpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtb25saW5lX19jcmVhdGVcIj5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlc3NpbWFscy1wcmltYXJ5XCJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuaXMtd29ya2luZ109XCJvbmxpbmVBY3Rpb24oKSA9PT0gJ2NyZWF0ZSdcIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtYnVzeV09XCJvbmxpbmVBY3Rpb24oKSA9PT0gJ2NyZWF0ZSdcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJvbmxpbmVMb2FkaW5nKClcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJjcmVhdGVPbmxpbmVHYW1lKClcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgQGlmIChvbmxpbmVBY3Rpb24oKSA9PT0gJ2NyZWF0ZScpIHtcbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1idXR0b24tc3Bpbm5lclwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAge3sgdCgnY2hlc3NpbWFsc0NyZWF0ZU9ubGluZScpIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnY2hlc3NpbWFsc0NyZWF0ZU9ubGluZUhpbnQnKSB9fTwvc21hbGw+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLW9ubGluZV9fam9pblwiPlxuICAgICAgICAgICAgICA8c3Ryb25nPnt7IHQoJ2NoZXNzaW1hbHNKb2luT25saW5lVGl0bGUnKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjaGVzc2ltYWxzLW9ubGluZS1jb2RlXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4+e3sgdCgnY2hlc3NpbWFsc0pvaW5Db2RlJykgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICBbdmFsdWVdPVwib25saW5lSm9pbkNvZGUoKVwiXG4gICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwidCgnY2hlc3NpbWFsc0pvaW5Db2RlUGxhY2Vob2xkZXInKVwiXG4gICAgICAgICAgICAgICAgICAoaW5wdXQpPVwib25saW5lSm9pbkNvZGUuc2V0KG5vcm1hbGl6ZUdhbWVJZCgkYW55KCRldmVudC50YXJnZXQpLnZhbHVlKSlcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoZXNzaW1hbHMtc2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuaXMtd29ya2luZ109XCJvbmxpbmVBY3Rpb24oKSA9PT0gJ2pvaW4nXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWJ1c3ldPVwib25saW5lQWN0aW9uKCkgPT09ICdqb2luJ1wiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIm9ubGluZUxvYWRpbmcoKSB8fCAhb25saW5lSm9pbkNvZGUoKVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImpvaW5PbmxpbmVHYW1lQnlDb2RlKClcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgQGlmIChvbmxpbmVBY3Rpb24oKSA9PT0gJ2pvaW4nKSB7XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtYnV0dG9uLXNwaW5uZXJcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHt7IHQoJ2NoZXNzaW1hbHNKb2luT25saW5lJykgfX1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2FydGljbGU+XG5cbiAgICAgICAgICBAaWYgKG9ubGluZUhpc3RvcnkoKS5sZW5ndGgpIHtcbiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPVwiY2hlc3NpbWFscy1vbmxpbmUgY2hlc3NpbWFscy1oaXN0b3J5XCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLWhpc3RvcnlfX2hlYWRpbmdcIj5cbiAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgPGgyPnt7IHQoJ2NoZXNzaW1hbHNIaXN0b3J5VGl0bGUnKSB9fTwvaDI+XG4gICAgICAgICAgICAgICAgICA8cD57eyB0KCdjaGVzc2ltYWxzSGlzdG9yeUJvZHknKSB9fTwvcD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLWhpc3RvcnlfX2xpc3RcIj5cbiAgICAgICAgICAgICAgICBAZm9yIChlbnRyeSBvZiBvbmxpbmVIaXN0b3J5KCkuc2xpY2UoMCwgNik7IHRyYWNrIGVudHJ5LmdhbWVJZCkge1xuICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJjaGVzc2ltYWxzLWhpc3RvcnlfX2l0ZW1cIiAoY2xpY2spPVwib3Blbkhpc3RvcnlHYW1lKGVudHJ5KVwiPlxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IGVudHJ5LmdhbWVJZCB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyBoaXN0b3J5T3V0Y29tZUxhYmVsKGVudHJ5KSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPGVtPnt7IHQoJ2NoZXNzaW1hbHNIaXN0b3J5T3BlbicpIH19PC9lbT5cbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2FydGljbGU+XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgPGFydGljbGUgY2xhc3M9XCJjaGVzc2ltYWxzLW9ubGluZSBjaGVzc2ltYWxzLWhvbWUtc2V0dGluZ3NcIj5cbiAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgIDxoMj57eyB0KCdjaGVzc2ltYWxzU2V0dGluZ3MnKSB9fTwvaDI+XG4gICAgICAgICAgICAgIDxwPnt7IHQoJ2NoZXNzaW1hbHNTZXR0aW5nc1N1YnRpdGxlJykgfX08L3A+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLWhvbWUtc2V0dGluZ3NfX2FjdGlvbnNcIj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNoZXNzaW1hbHMtc2Vjb25kYXJ5XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJvcGVuU2V0dGluZ3NNb2RhbCgpXCI+XG4gICAgICAgICAgICAgICAge3sgdCgnY2hlc3NpbWFsc1NldHRpbmdzJykgfX1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjaGVzc2ltYWxzLXNlY29uZGFyeVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwib3BlbkFib3V0TW9kYWwoKVwiPlxuICAgICAgICAgICAgICAgIHt7IHQoJ2NoZXNzaW1hbHNBYm91dCcpIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2hlc3NpbWFscy1zZWNvbmRhcnlcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInJlcXVlc3RDaGFuZ2VHYW1lKClcIj5cbiAgICAgICAgICAgICAgICB7eyB0KCdjaGVzc2ltYWxzQ2hhbmdlR2FtZScpIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9hcnRpY2xlPlxuICAgICAgICA8L3NlY3Rpb24+XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJjaGVzc2ltYWxzLWdhbWVcIj5cbiAgICAgICAgICBAaWYgKHJlc3VtZVNwbGFzaFZpc2libGUoKSkge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtcmVzdW1lLXNwbGFzaFwiIHJvbGU9XCJzdGF0dXNcIiBhcmlhLWxpdmU9XCJwb2xpdGVcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGVzc2ltYWxzLXJlc3VtZS1zcGxhc2hfX3Bhd1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgIPCfkL5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8c3Ryb25nPnt7IHQoJ2NoZXNzaW1hbHNSZXN1bWVTcGxhc2hUaXRsZScpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgIDxwPnt7IHQoJ2NoZXNzaW1hbHNSZXN1bWVTcGxhc2hCb2R5JykgfX08L3A+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG5cbiAgICAgICAgICA8YXJ0aWNsZVxuICAgICAgICAgICAgY2xhc3M9XCJjaGVzc2ltYWxzLXR1cm4tY2FyZFwiXG4gICAgICAgICAgICBbY2xhc3MuaXMtYmxhY2stdHVybl09XCJnYW1lKCkuY3VycmVudFR1cm4gPT09ICdibGFjaydcIlxuICAgICAgICAgICAgW2NsYXNzLmlzLWZpbmlzaGVkXT1cImdhbWUoKS5zdGF0dXMgPT09ICdmaW5pc2hlZCdcIlxuICAgICAgICAgICAgW2NsYXNzLmlzLXlvdXItdHVybl09XCJpc0FjdGlvbmFibGVUdXJuKClcIlxuICAgICAgICAgICAgW2NsYXNzLmlzLXdhaXRpbmctdHVybl09XCJpc1dhaXRpbmdGb3JUdXJuKClcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLXR1cm4tY2FyZF9fY29weVwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtdHVybi1jYXJkX19jaGlwXCI+XG4gICAgICAgICAgICAgICAge3sgdHVyblN0YXRlTGFiZWwoKSB9fVxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDxzdHJvbmc+e3sgZ2FtZSgpLnN0YXR1cyA9PT0gJ2ZpbmlzaGVkJyA/IHdpblRpdGxlKCkgOiB0dXJuVGl0bGUoKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICA8cD57eyB0dXJuU3RhdGVCb2R5KCkgfX08L3A+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtcGxheWVyLXN0cmlwXCI+XG4gICAgICAgICAgICAgIEBpZiAobG9nZ2VkSW5Vc2VyKCkpIHtcbiAgICAgICAgICAgICAgICA8dmFsLXVzZXItYXZhdGFyIFtwcm9wc109XCJsb2dnZWRQbGF5ZXJBdmF0YXJQcm9wcygpXCIgLz5cbiAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGVzc2ltYWxzLXBsYXllci1zdHJpcF9fYXZhdGFyXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICB7eyBsb2NhbFBsYXllckF2YXRhcigpIH19XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtcGxheWVyLXN0cmlwX190ZXh0XCI+XG4gICAgICAgICAgICAgICAgPHNwYW4+e3sgdChsb2dnZWRJblVzZXIoKSA/ICdsb2dnZWRQbGF5ZXInIDogJ2xvY2FsUGxheWVyJykgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPHN0cm9uZz57eyBsb2dnZWRQbGF5ZXJOYW1lKCkgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICBAaWYgKGxvZ2dlZFBsYXllckhhbmRsZSgpKSB7XG4gICAgICAgICAgICAgICAgICA8c21hbGw+e3sgbG9nZ2VkUGxheWVySGFuZGxlKCkgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2FydGljbGU+XG5cbiAgICAgICAgICBAaWYgKGdhbWUoKS5tb2RlID09PSAnb25saW5lJyAmJiBnYW1lKCkuc3RhdHVzID09PSAnd2FpdGluZycpIHtcbiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPVwiY2hlc3NpbWFscy1vbmxpbmUgY2hlc3NpbWFscy1vbmxpbmUtLXdhaXRpbmdcIj5cbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8aDI+e3sgd2FpdGluZ1RpdGxlKCkgfX08L2gyPlxuICAgICAgICAgICAgICAgIDxwPnt7IHdhaXRpbmdCb2R5KCkgfX08L3A+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICBAaWYgKGNhblJldmlld1BlbmRpbmdHdWVzdCgpKSB7XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtcGVuZGluZy1wbGF5ZXJcIj5cbiAgICAgICAgICAgICAgICAgIEBpZiAocGVuZGluZ0d1ZXN0QXZhdGFyVXJsKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgPHZhbC11c2VyLWF2YXRhciBbcHJvcHNdPVwicGVuZGluZ0d1ZXN0QXZhdGFyUHJvcHMoKVwiIC8+XG4gICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGVzc2ltYWxzLXBsYXllci1zdHJpcF9fYXZhdGFyIGNoZXNzaW1hbHMtcGxheWVyLXN0cmlwX19hdmF0YXItLWluaXRpYWxzXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAge3sgcGVuZGluZ0d1ZXN0SW5pdGlhbHMoKSB9fVxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnY2hlc3NpbWFsc0pvaW5SZXF1ZXN0UGxheWVyJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IHBlbmRpbmdHdWVzdE5hbWUoKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgICAgICBAaWYgKHBlbmRpbmdHdWVzdEhhbmRsZSgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgPHNtYWxsPnt7IHBlbmRpbmdHdWVzdEhhbmRsZSgpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtZ2FtZS1jb2RlXCI+XG4gICAgICAgICAgICAgICAgPHNtYWxsPnt7IHQoJ2NoZXNzaW1hbHNHYW1lQ29kZScpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IGdhbWUoKS5pZCB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtb25saW5lLWFjdGlvbnNcIj5cbiAgICAgICAgICAgICAgICBAaWYgKGNhblJldmlld1BlbmRpbmdHdWVzdCgpKSB7XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlc3NpbWFscy1zZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmlzLXdvcmtpbmddPVwib25saW5lQWN0aW9uKCkgPT09ICdyZWplY3QnXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1idXN5XT1cIm9ubGluZUFjdGlvbigpID09PSAncmVqZWN0J1wiXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJvbmxpbmVMb2FkaW5nKClcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVqZWN0T25saW5lR3Vlc3QoKVwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAob25saW5lQWN0aW9uKCkgPT09ICdyZWplY3QnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGVzc2ltYWxzLWJ1dHRvbi1zcGlubmVyXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHt7IHQoJ2NoZXNzaW1hbHNSZWplY3RHdWVzdCcpIH19XG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGVzc2ltYWxzLXByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmlzLXdvcmtpbmddPVwib25saW5lQWN0aW9uKCkgPT09ICdhY2NlcHQnXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1idXN5XT1cIm9ubGluZUFjdGlvbigpID09PSAnYWNjZXB0J1wiXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJvbmxpbmVMb2FkaW5nKClcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWNjZXB0T25saW5lR3Vlc3QoKVwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAob25saW5lQWN0aW9uKCkgPT09ICdhY2NlcHQnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGVzc2ltYWxzLWJ1dHRvbi1zcGlubmVyXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHt7IHQoJ2NoZXNzaW1hbHNBY2NlcHRHdWVzdCcpIH19XG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjaGVzc2ltYWxzLXNlY29uZGFyeVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiY29weU9ubGluZUxpbmsoKVwiPlxuICAgICAgICAgICAgICAgICAgICB7eyB0KCdjaGVzc2ltYWxzQ29weUxpbmsnKSB9fVxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2hlc3NpbWFscy1wcmltYXJ5XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJzaGFyZU9ubGluZUxpbmsoKVwiPlxuICAgICAgICAgICAgICAgICAgICB7eyB0KCdjaGVzc2ltYWxzU2hhcmVMaW5rJykgfX1cbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2FydGljbGU+XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtc3RhdHVzXCI+XG4gICAgICAgICAgICBAaWYgKGlzQ2hhbGxlbmdlQWN0aXZlKCkpIHtcbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnY2hlc3NpbWFsc0NoYWxsZW5nZVJvdW5kJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgY2hhbGxlbmdlUm91bmRMYWJlbCgpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdjaGVzc2ltYWxzQ2hhbGxlbmdlTGl2ZXMnKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgPHN0cm9uZz57eyBjaGFsbGVuZ2VMaXZlc0xhYmVsKCkgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnY2hlc3NpbWFsc01vdmVzJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICA8c3Ryb25nPnt7IGdhbWUoKS5tb3ZlQ291bnQgfX08L3N0cm9uZz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgPHNtYWxsPnt7IGdhbWUoKS5zdGF0dXMgPT09ICdmaW5pc2hlZCcgPyB0KCdjaGVzc2ltYWxzV2lubmVyJykgOiB0KCdjaGVzc2ltYWxzUG93ZXJzJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICA8c3Ryb25nPnt7IGdhbWUoKS5zdGF0dXMgPT09ICdmaW5pc2hlZCcgPyBwbGF5ZXJMYWJlbChnYW1lKCkud2lubmVyID8/ICd3aGl0ZScpIDogdW5sb2NrZWRMYWJlbChnYW1lKCkuY3VycmVudFR1cm4pIH19PC9zdHJvbmc+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgIDxzbWFsbD57eyBnYW1lKCkuc3RhdHVzID09PSAnZmluaXNoZWQnID8gdCgnY2hlc3NpbWFsc1Jlc3VsdCcpIDogdCgnY2hlc3NpbWFsc1JpdmFsJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICA8c3Ryb25nPnt7IGdhbWUoKS5zdGF0dXMgPT09ICdmaW5pc2hlZCcgPyB3aW5SZWFzb25MYWJlbCgpIDogcGxheWVyTGFiZWwoZ2FtZSgpLmN1cnJlbnRUdXJuID09PSAnd2hpdGUnID8gJ2JsYWNrJyA6ICd3aGl0ZScpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIEBpZiAoc2hvdWxkU2hvd09ubGluZVN0YXR1cygpKSB7XG4gICAgICAgICAgICA8YXJ0aWNsZVxuICAgICAgICAgICAgICBjbGFzcz1cImNoZXNzaW1hbHMtb25saW5lLXN0YXR1c1wiXG4gICAgICAgICAgICAgIFtjbGFzcy5pcy1lcnJvcl09XCJvbmxpbmVDb25uZWN0aW9uU3RhdGUoKSA9PT0gJ2Vycm9yJyB8fCBnYW1lKCkuc3RhdHVzID09PSAnZXhwaXJlZCdcIlxuICAgICAgICAgICAgICBbY2xhc3MuaXMtc3luY2luZ109XCJvbmxpbmVDb25uZWN0aW9uU3RhdGUoKSA9PT0gJ2Nvbm5lY3RpbmcnIHx8IG1vdmVTeW5jaW5nKClcIlxuICAgICAgICAgICAgICBhcmlhLWxpdmU9XCJwb2xpdGVcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIj48L3NwYW4+XG4gICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPHN0cm9uZz57eyBvbmxpbmVTdGF0dXNUaXRsZSgpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgPHA+e3sgb25saW5lU3RhdHVzQm9keSgpIH19PC9wPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvYXJ0aWNsZT5cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBAaWYgKHR1dG9yaWFsTW9kZSgpKSB7XG4gICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz1cImNoZXNzaW1hbHMtdHV0b3JpYWxcIiBhcmlhLWxpdmU9XCJwb2xpdGVcIj5cbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8c21hbGw+e3sgdHV0b3JpYWxQcm9ncmVzc0xhYmVsKCkgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgdHV0b3JpYWxUaXRsZSgpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgPHA+e3sgdHV0b3JpYWxCb2R5KCkgfX08L3A+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2hlc3NpbWFscy1zZWNvbmRhcnlcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImV4aXRUdXRvcmlhbCgpXCI+XG4gICAgICAgICAgICAgICAge3sgdCgnY2hlc3NpbWFsc1R1dG9yaWFsRXhpdCcpIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9hcnRpY2xlPlxuICAgICAgICAgIH1cblxuICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPVwiY2hlc3NpbWFscy1hcmVuYVwiPlxuICAgICAgICAgICAgPHNlY3Rpb25cbiAgICAgICAgICAgICAgI2JvYXJkQW5jaG9yXG4gICAgICAgICAgICAgIGNsYXNzPVwiY2hlc3NpbWFscy1ib2FyZC13cmFwXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmlzLWZpbmlzaGVkXT1cImdhbWUoKS5zdGF0dXMgPT09ICdmaW5pc2hlZCdcIlxuICAgICAgICAgICAgICBbY2xhc3MuaXMtb3JpZW50aW5nXT1cImlzQm9hcmRPcmllbnRpbmcoKVwiXG4gICAgICAgICAgICAgIFtjbGFzcy5pcy1zeW5jaW5nXT1cIm1vdmVTeW5jaW5nKClcIlxuICAgICAgICAgICAgICBbc3R5bGUuLS1ib2FyZC1zaXplXT1cInJldmlld0dhbWUoKS5ib2FyZFNpemVcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1ib2FyZC1mcmFtZVwiPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlc3NpbWFscy1ib2FyZFwiXG4gICAgICAgICAgICAgICAgICByb2xlPVwiZ3JpZFwiXG4gICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtYmxhY2stdmlld109XCJyZXZpZXdHYW1lKCkuY3VycmVudFR1cm4gPT09ICdibGFjaydcIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzLmlzLXBvd2VyLWFpbWluZ109XCIhIXNlbGVjdGVkQW5pbWFsKClcIlxuICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJ0KCdjaGVzc2ltYWxzQm9hcmQnKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgQGZvciAocm93IG9mIGRpc3BsYXlSb3dzKCk7IHRyYWNrIHJvdykge1xuICAgICAgICAgICAgICAgICAgICBAZm9yIChjb2wgb2YgZGlzcGxheUNvbHMoKTsgdHJhY2sgY29sKSB7XG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwiZ3JpZGNlbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGVzc2ltYWxzLWNlbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmlzLWRhcmstY2VsbF09XCJpc0RhcmtDZWxsKHJvdywgY29sKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtZWRnZS1jZWxsXT1cImlzRWRnZUNlbGwocm93LCBjb2wpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy53ZWFyLTBdPVwiY2VsbFdlYXIocm93LCBjb2wpID09PSAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy53ZWFyLTFdPVwiY2VsbFdlYXIocm93LCBjb2wpID09PSAxXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy53ZWFyLTJdPVwiY2VsbFdlYXIocm93LCBjb2wpID09PSAyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy53ZWFyLTNdPVwiY2VsbFdlYXIocm93LCBjb2wpID09PSAzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy53ZWFyLTRdPVwiY2VsbFdlYXIocm93LCBjb2wpID09PSA0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy53ZWFyLTVdPVwiY2VsbFdlYXIocm93LCBjb2wpID09PSA1XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1zZWxlY3RlZF09XCJpc1NlbGVjdGVkQ2VsbChyb3csIGNvbClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmlzLWxlZ2FsXT1cImlzTGVnYWxDZWxsKHJvdywgY29sKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtY2FwdHVyZV09XCJpc0NhcHR1cmVDZWxsKHJvdywgY29sKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaGFzLXRocmVhdF09XCJpc1RocmVhdGVuZWRDZWxsKHJvdywgY29sKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaGFzLWNhcHR1cmUtcmVhZHldPVwiaXNDYXB0dXJlUmVhZHlDZWxsKHJvdywgY29sKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtd2lubmluZ109XCJpc1dpbm5pbmdDZWxsKHJvdywgY29sKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtbGFzdF09XCJpc0xhc3RNb3ZlQ2VsbChyb3csIGNvbClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmlzLW1vdmluZy1zb3VyY2VdPVwiaXNNb3ZpbmdTb3VyY2VDZWxsKHJvdywgY29sKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaGFzLW1vdmUtZWZmZWN0XT1cImlzTW92ZUVmZmVjdENlbGwocm93LCBjb2wpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5oYXMtc291cmNlLWVmZmVjdF09XCJpc01vdmVFZmZlY3RTb3VyY2VDZWxsKHJvdywgY29sKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaGFzLWNhcHR1cmUtZWZmZWN0XT1cImlzTW92ZUVmZmVjdENhcHR1cmVDZWxsKHJvdywgY29sKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZWZmZWN0LWVhZ2xlXT1cImlzTW92ZUVmZmVjdENlbGwocm93LCBjb2wsICdlYWdsZScpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5lZmZlY3QtYnVsbF09XCJpc01vdmVFZmZlY3RDZWxsKHJvdywgY29sLCAnYnVsbCcpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5lZmZlY3Qta2FuZ2Fyb29dPVwiaXNNb3ZlRWZmZWN0Q2VsbChyb3csIGNvbCwgJ2thbmdhcm9vJylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmVmZmVjdC1saW9uXT1cImlzTW92ZUVmZmVjdENlbGwocm93LCBjb2wsICdsaW9uJylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInByb2plY3Rpb25Nb2RlIHx8IGdhbWUoKS5zdGF0dXMgIT09ICdpbl9wcm9ncmVzcycgfHwgIWNhblBsYXlDdXJyZW50VHVybigpIHx8ICEhbW92aW5nUGllY2UoKSB8fCBib3RUaGlua2luZygpIHx8IG1vdmVTeW5jaW5nKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdENlbGwoeyByb3csIGNvbCB9KVwiXG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGVzc2ltYWxzLWNlbGwtdGV4dHVyZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoc2hvd1JhbmtMYWJlbChjb2wpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1jZWxsLWNvb3JkaW5hdGUgY2hlc3NpbWFscy1jZWxsLWNvb3JkaW5hdGUtLXJhbmtcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyByYW5rTGFiZWwocm93KSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKHNob3dGaWxlTGFiZWwocm93KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtY2VsbC1jb29yZGluYXRlIGNoZXNzaW1hbHMtY2VsbC1jb29yZGluYXRlLS1maWxlXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZmlsZUxhYmVsKGNvbCkgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChwaWVjZUF0KHJvdywgY29sKTsgYXMgcGllY2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNoZXNzaW1hbHMtcGllY2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1ibGFja109XCJwaWVjZS5jb2xvciA9PT0gJ2JsYWNrJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJwbGF5ZXJMYWJlbChwaWVjZS5jb2xvcilcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGVzc2ltYWxzLXBpZWNlX19zaWRlXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1waWVjZV9faGVhZFwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtcGllY2VfX2NvbGxhclwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtcGllY2VfX25lY2tcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGVzc2ltYWxzLXBpZWNlX19iYXNlXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIGlmIChpc0xlZ2FsQ2VsbChyb3csIGNvbCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGVzc2ltYWxzLXRhcmdldFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGVzc2ltYWxzLWNlbnRlci1saW5lXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgQGlmIChtb3ZlVHJhaWwoKTsgYXMgdHJhaWwpIHtcbiAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNoZXNzaW1hbHMtcG93ZXItdHJhaWxcIlxuICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1jYXB0dXJlXT1cInRyYWlsLmNhcHR1cmVcIlxuICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5lZmZlY3QtZWFnbGVdPVwidHJhaWwuYW5pbWFsID09PSAnZWFnbGUnXCJcbiAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZWZmZWN0LWJ1bGxdPVwidHJhaWwuYW5pbWFsID09PSAnYnVsbCdcIlxuICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5lZmZlY3Qta2FuZ2Fyb29dPVwidHJhaWwuYW5pbWFsID09PSAna2FuZ2Fyb28nXCJcbiAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZWZmZWN0LWxpb25dPVwidHJhaWwuYW5pbWFsID09PSAnbGlvbidcIlxuICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS4tLXRyYWlsLXhdPVwidHJhaWwueFwiXG4gICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLi0tdHJhaWwteV09XCJ0cmFpbC55XCJcbiAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuLS10cmFpbC1sZW5ndGhdPVwidHJhaWwubGVuZ3RoXCJcbiAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuLS10cmFpbC1hbmdsZV09XCJ0cmFpbC5hbmdsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgQGlmIChtb3ZpbmdQaWVjZSgpOyBhcyBtb3ZpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNoZXNzaW1hbHMtbW92aW5nLXBpZWNlXCJcbiAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuLS1mcm9tLXJvd109XCJtb3ZpbmcuZnJvbVJvd1wiXG4gICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLi0tZnJvbS1jb2xdPVwibW92aW5nLmZyb21Db2xcIlxuICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS4tLXRvLXJvd109XCJtb3ZpbmcudG9Sb3dcIlxuICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS4tLXRvLWNvbF09XCJtb3ZpbmcudG9Db2xcIlxuICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtcGllY2VcIiBbY2xhc3MuaXMtYmxhY2tdPVwibW92aW5nLmNvbG9yID09PSAnYmxhY2snXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtcGllY2VfX3NpZGVcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtcGllY2VfX2hlYWRcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtcGllY2VfX2NvbGxhclwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1waWVjZV9fbmVja1wiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1waWVjZV9fYmFzZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIEBpZiAoc2hvdWxkU2hvd0ZpbmlzaGVkT3ZlcmxheSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNoZXNzaW1hbHMtYm9hcmQtb3ZlcmxheVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmlzLXZpY3RvcnldPVwiaXNDdXJyZW50UGxheWVyVmljdG9yeSgpXCJcbiAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtZGVmZWF0XT1cImlzQ3VycmVudFBsYXllckRlZmVhdCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJjaGVzc2ltYWxzLWJvYXJkLW92ZXJsYXlfX3JheXNcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJjaGVzc2ltYWxzLWJvYXJkLW92ZXJsYXlfX3JpYmJvbiByaWJib24tYVwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImNoZXNzaW1hbHMtYm9hcmQtb3ZlcmxheV9fcmliYm9uIHJpYmJvbi1iXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5X19yaWJib24gcmliYm9uLWNcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgdCgnY2hlc3NpbWFsc0dhbWVPdmVyJykgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgQGlmICh3aW5uZXJBdmF0YXJVcmwoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPVwiaGFzLWF2YXRhclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwid2lubmVyQXZhdGFyVXJsKClcIiBbYWx0XT1cIndpbm5lckRpc3BsYXlOYW1lKClcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9lbT5cbiAgICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxlbT57eyB3aW5uZXJJbml0aWFscygpIH19PC9lbT5cbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyB3aW5UaXRsZSgpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICAgICAgPGI+e3sgd2lubmVyU2lkZUxhYmVsKCkgfX08L2I+XG4gICAgICAgICAgICAgICAgICAgICAgPHNtYWxsPnt7IG1vdmVzU3VtbWFyeSgpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGwgY2xhc3M9XCJjaGVzc2ltYWxzLWJvYXJkLW92ZXJsYXlfX3N0YXRzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChzdGF0IG9mIHJlc3VsdFN0YXRzKCk7IHRyYWNrIHN0YXQubGFiZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHQ+e3sgc3RhdC5sYWJlbCB9fTwvZHQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRkPnt7IHN0YXQudmFsdWUgfX08L2RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICA8L2RsPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L3NlY3Rpb24+XG5cbiAgICAgICAgICAgIEBpZiAob25saW5lUm9sZSgpICE9PSAnc3BlY3RhdG9yJyAmJiAhcHJvamVjdGlvbk1vZGUpIHtcbiAgICAgICAgICAgICAgPHNlY3Rpb25cbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoZXNzaW1hbHMtcG93ZXJzXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuaXMtbG9ja2VkXT1cIiFwb3dlclBsYXllcigpLnBvd2VyVW5sb2NrZWRcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1yZWFkeV09XCJwb3dlclBsYXllcigpLnBvd2VyVW5sb2NrZWRcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5pcy11bmxvY2stcHVsc2VdPVwicG93ZXJVbmxvY2tQdWxzZSgpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1wb3dlcnNfX2hlYWRpbmdcIj5cbiAgICAgICAgICAgICAgICAgICAgPGgyPnt7IHQoJ2NoZXNzaW1hbHNBbmltYWxDYXJkcycpIH19PC9oMj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgcG93ZXJQbGF5ZXIoKS5wb3dlclVubG9ja2VkID8gdCgnY2hlc3NpbWFsc1VubG9ja2VkJykgOiB0KCdjaGVzc2ltYWxzTG9ja2VkJykgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxwPnt7IHBvd2VyUGxheWVyKCkucG93ZXJVbmxvY2tlZCA/IHQoJ2NoZXNzaW1hbHNDYXJkc1JlYWR5JykgOiB0KCdjaGVzc2ltYWxzQ2FyZHNMb2NrZWQnKSB9fTwvcD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1jYXJkc1wiPlxuICAgICAgICAgICAgICAgICAgQGZvciAoYW5pbWFsIG9mIGFuaW1hbHM7IHRyYWNrIGFuaW1hbC50eXBlKSB7XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtc2VsZWN0ZWRdPVwic2VsZWN0ZWRBbmltYWwoKSA9PT0gYW5pbWFsLnR5cGVcIlxuICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy11c2VkXT1cInBvd2VyUGxheWVyKCkuY2FyZHNbYW5pbWFsLnR5cGVdLnVzZWRcIlxuICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhY2FuVXNlUG93ZXJDYXJkcygpIHx8IHBvd2VyUGxheWVyKCkuY2FyZHNbYW5pbWFsLnR5cGVdLnVzZWQgfHwgaXNQb3dlckNhcmRCbG9ja2VkQnlUdXRvcmlhbChhbmltYWwudHlwZSlcIlxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVBbmltYWwoYW5pbWFsKVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtYW5pbWFsLWZhY2VcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJhbmltYWwuYXNzZXRTcmNcIiBbYWx0XT1cImFuaW1hbExhYmVsKGFuaW1hbC50eXBlKVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgYW5pbWFsTGFiZWwoYW5pbWFsLnR5cGUpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L3NlY3Rpb24+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9zZWN0aW9uPlxuXG4gICAgICAgICAgQGlmIChoYXNSZXBsYXlDb250cm9scygpKSB7XG4gICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz1cImNoZXNzaW1hbHMtcmVwbGF5XCIgYXJpYS1saXZlPVwicG9saXRlXCI+XG4gICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPHN0cm9uZz57eyB0KCdjaGVzc2ltYWxzUmVwbGF5VGl0bGUnKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgIDxzcGFuPnt7IHJlcGxheVBvc2l0aW9uTGFiZWwoKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLXJlcGxheV9fYWN0aW9uc1wiPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlc3NpbWFscy1zZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWNhblJldmlld1ByZXZpb3VzKClcIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJldmlld1ByZXZpb3VzTW92ZSgpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7eyB0KCdjaGVzc2ltYWxzUmVwbGF5UHJldmlvdXMnKSB9fVxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlc3NpbWFscy1zZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWNhblJldmlld05leHQoKVwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmV2aWV3TmV4dE1vdmUoKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAge3sgdCgnY2hlc3NpbWFsc1JlcGxheU5leHQnKSB9fVxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvYXJ0aWNsZT5cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBAaWYgKGdhbWUoKS5zdGF0dXMgPT09ICdmaW5pc2hlZCcpIHtcbiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPVwiY2hlc3NpbWFscy1yZXN1bHRcIj5cbiAgICAgICAgICAgICAgPHN0cm9uZz57eyB3aW5UaXRsZSgpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgIDxwPnt7IHdpbkJvZHkoKSB9fTwvcD5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtcmVzdWx0X19zdGF0c1wiPlxuICAgICAgICAgICAgICAgIEBmb3IgKHN0YXQgb2YgcmVzdWx0U3RhdHMoKTsgdHJhY2sgc3RhdC5sYWJlbCkge1xuICAgICAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyBzdGF0LmxhYmVsIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgICAgPGI+e3sgc3RhdC52YWx1ZSB9fTwvYj5cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8cCBjbGFzcz1cImNoZXNzaW1hbHMtcmVzdWx0X19kZXRhaWxcIj5cbiAgICAgICAgICAgICAgICB7eyB0KCdjaGVzc2ltYWxzUmVzdWx0UG93ZXJzVXNlZCcpLnJlcGxhY2UoJ3twb3dlcnN9JywgcmVzdWx0UG93ZXJzTGFiZWwoKSkgfX1cbiAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICBAaWYgKHNob3VsZFNob3dCb3RSZXBvcnQoKSkge1xuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLWJvdC1yZXBvcnRcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPnt7IGdhbWVCb3RQcm9maWxlKCk/LmF2YXRhciB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdjaGVzc2ltYWxzQm90UmVwb3J0VGl0bGUnKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgYm90UmVwb3J0VGl0bGUoKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgICAgICA8cD57eyBib3RSZXBvcnRCb2R5KCkgfX08L3A+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBAaWYgKGlzQ2hhbGxlbmdlQWN0aXZlKCkpIHtcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1jaGFsbGVuZ2Utc3VtbWFyeVwiPlxuICAgICAgICAgICAgICAgICAgPHNtYWxsPnt7IHQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VUaXRsZScpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgY2hhbGxlbmdlT3V0Y29tZVRpdGxlKCkgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgIDxwPnt7IGNoYWxsZW5nZU91dGNvbWVCb2R5KCkgfX08L3A+XG4gICAgICAgICAgICAgICAgICBAaWYgKGNoYWxsZW5nZUhhc05ld1JlY29yZCgpKSB7XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLWNoYWxsZW5nZS1yZWNvcmRcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIj7imIU8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyB0KCdjaGVzc2ltYWxzQ2hhbGxlbmdlTmV3UmVjb3JkJykgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBAaWYgKGNoYWxsZW5nZUxhc3RSb3VuZFN0YXRzKCk7IGFzIHJvdW5kU3RhdHMpIHtcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtY2hhbGxlbmdlLXN1bW1hcnlfX3N0YXRzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnY2hlc3NpbWFsc0NoYWxsZW5nZVBvd2Vyc1VzZWQnKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8Yj57eyB0b3RhbENoYWxsZW5nZVBvd2Vycyhyb3VuZFN0YXRzKSB9fTwvYj5cbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnY2hlc3NpbWFsc0NoYWxsZW5nZVBvd2VyQ2FwdHVyZXMnKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8Yj57eyByb3VuZFN0YXRzLnBvd2VyQ2FwdHVyZXMgfX08L2I+XG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsPnt7IHQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VQcm9tb3Rpb25zJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGI+e3sgcm91bmRTdGF0cy5wcm9tb3Rpb25zIH19PC9iPlxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBAaWYgKGNoYWxsZW5nZVBoYXNlKCkgPT09ICdiZXR3ZWVuJyAmJiBhY3RpdmVDaGFsbGVuZ2VCb3QoKTsgYXMgbmV4dEJvdCkge1xuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1jaGFsbGVuZ2Utcml2YWwgY2hlc3NpbWFscy1jaGFsbGVuZ2Utcml2YWwtLW5leHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIj57eyBib3RQcm9maWxlQXZhdGFyKG5leHRCb3QucHJvZmlsZUlkKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsPnt7IHQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VOZXh0Uml2YWxMYWJlbCcpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgY2hhbGxlbmdlQm90TmFtZShuZXh0Qm90KSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHA+e3sgdChuZXh0Qm90LmludHJvS2V5KSB9fTwvcD5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBAaWYgKGNoYWxsZW5nZVBoYXNlKCkgPT09ICdiZXR3ZWVuJykge1xuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2hlc3NpbWFscy1wcmltYXJ5XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJjb250aW51ZUNoYWxsZW5nZSgpXCI+XG4gICAgICAgICAgICAgICAgICAgICAge3sgdCgnY2hlc3NpbWFsc0NoYWxsZW5nZU5leHRSaXZhbCcpIH19XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjaGVzc2ltYWxzLXByaW1hcnlcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInN0YXJ0Q2hhbGxlbmdlKClcIj5cbiAgICAgICAgICAgICAgICAgICAgICB7eyB0KCdjaGVzc2ltYWxzQ2hhbGxlbmdlUGxheUFnYWluJykgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgQGlmIChzZXJpZXNTdW1tYXJ5KCkpIHtcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1zZXJpZXNcIj5cbiAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdjaGVzc2ltYWxzU2VyaWVzVGl0bGUnKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IHNlcmllc1N1bW1hcnkoKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgICAgQGlmIChsYXN0U2VyaWVzV2lubmVyTGFiZWwoKSkge1xuICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyB0KCdjaGVzc2ltYWxzU2VyaWVzTGFzdFdpbm5lcicpLnJlcGxhY2UoJ3twbGF5ZXJ9JywgbGFzdFNlcmllc1dpbm5lckxhYmVsKCkpIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2FydGljbGU+XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgQGlmIChyZW1hdGNoU3RhdGUoKSAhPT0gJ25vbmUnKSB7XG4gICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz1cImNoZXNzaW1hbHMtcmVtYXRjaC1zdGF0dXNcIiBbY2xhc3MuaXMtaW5jb21pbmddPVwicmVtYXRjaFN0YXRlKCkgPT09ICdpbmNvbWluZydcIj5cbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8c3Ryb25nPlxuICAgICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgICAgcmVtYXRjaFN0YXRlKCkgPT09ICdpbmNvbWluZydcbiAgICAgICAgICAgICAgICAgICAgICA/IHQoJ2NoZXNzaW1hbHNSZW1hdGNoSW5jb21pbmdUaXRsZScpXG4gICAgICAgICAgICAgICAgICAgICAgOiB0KCdjaGVzc2ltYWxzUmVtYXRjaFJlcXVlc3RlZFRpdGxlJylcbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgPC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICAgICByZW1hdGNoU3RhdGUoKSA9PT0gJ2luY29taW5nJ1xuICAgICAgICAgICAgICAgICAgICAgID8gdCgnY2hlc3NpbWFsc1JlbWF0Y2hJbmNvbWluZ0JvZHknKVxuICAgICAgICAgICAgICAgICAgICAgIDogdCgnY2hlc3NpbWFsc1JlbWF0Y2hSZXF1ZXN0ZWRCb2R5JylcbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgQGlmIChzZXJpZXNTdW1tYXJ5KCkpIHtcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1zZXJpZXMgY2hlc3NpbWFscy1zZXJpZXMtLWNvbXBhY3RcIj5cbiAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdjaGVzc2ltYWxzU2VyaWVzVGl0bGUnKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IHNlcmllc1N1bW1hcnkoKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgICAgQGlmIChsYXN0U2VyaWVzV2lubmVyTGFiZWwoKSkge1xuICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyB0KCdjaGVzc2ltYWxzU2VyaWVzTGFzdFdpbm5lcicpLnJlcGxhY2UoJ3twbGF5ZXJ9JywgbGFzdFNlcmllc1dpbm5lckxhYmVsKCkpIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLXBlbmRpbmctcGxheWVyIGNoZXNzaW1hbHMtcmVtYXRjaC1wbGF5ZXJcIj5cbiAgICAgICAgICAgICAgICBAaWYgKHJlbWF0Y2hPcHBvbmVudEF2YXRhclVybCgpKSB7XG4gICAgICAgICAgICAgICAgICA8dmFsLXVzZXItYXZhdGFyIFtwcm9wc109XCJyZW1hdGNoT3Bwb25lbnRBdmF0YXJQcm9wcygpXCIgLz5cbiAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1wbGF5ZXItc3RyaXBfX2F2YXRhciBjaGVzc2ltYWxzLXBsYXllci1zdHJpcF9fYXZhdGFyLS1pbml0aWFsc1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICB7eyByZW1hdGNoT3Bwb25lbnRJbml0aWFscygpIH19XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnY2hlc3NpbWFsc1JpdmFsJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyByZW1hdGNoT3Bwb25lbnROYW1lKCkgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgIEBpZiAocmVtYXRjaE9wcG9uZW50SGFuZGxlKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgPHNtYWxsPnt7IHJlbWF0Y2hPcHBvbmVudEhhbmRsZSgpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLXJlbWF0Y2gtc3RhdHVzX19hY3Rpb25zXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGVzc2ltYWxzLXNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtd29ya2luZ109XCJyZW1hdGNoTG9hZGluZygpXCJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInJlbWF0Y2hTdGF0ZSgpID09PSAncmVxdWVzdGVkJyB8fCByZW1hdGNoTG9hZGluZygpXCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZXF1ZXN0T25saW5lUmVtYXRjaCgpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICBAaWYgKHJlbWF0Y2hMb2FkaW5nKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGVzc2ltYWxzLWJ1dHRvbi1zcGlubmVyXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAge3sgcmVtYXRjaEFjdGlvbkxhYmVsKCkgfX1cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2FydGljbGU+XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtYWN0aW9uc1wiPlxuICAgICAgICAgICAgQGlmIChnYW1lKCkuc3RhdHVzICE9PSAnZmluaXNoZWQnICYmIGNhbkNvbnRyb2xDdXJyZW50R2FtZSgpKSB7XG4gICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjaGVzc2ltYWxzLXNlY29uZGFyeVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwicmVxdWVzdFJlc2lnbigpXCI+XG4gICAgICAgICAgICAgICAge3sgdCgnY2hlc3NpbWFsc1Jlc2lnbicpIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgfSBAZWxzZSBpZiAoZ2FtZSgpLm1vZGUgPT09ICdvbmxpbmUnICYmIGNhbkNvbnRyb2xDdXJyZW50R2FtZSgpICYmIHJlbWF0Y2hTdGF0ZSgpID09PSAnbm9uZScpIHtcbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlc3NpbWFscy1zZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5pcy13b3JraW5nXT1cInJlbWF0Y2hMb2FkaW5nKClcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJyZW1hdGNoU3RhdGUoKSA9PT0gJ3JlcXVlc3RlZCcgfHwgcmVtYXRjaExvYWRpbmcoKVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlcXVlc3RPbmxpbmVSZW1hdGNoKClcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgQGlmIChyZW1hdGNoTG9hZGluZygpKSB7XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtYnV0dG9uLXNwaW5uZXJcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHt7IHJlbWF0Y2hBY3Rpb25MYWJlbCgpIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmIChnYW1lKCkubW9kZSAhPT0gJ29ubGluZScgJiYgIWlzQ2hhbGxlbmdlQWN0aXZlKCkpIHtcbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNoZXNzaW1hbHMtc2Vjb25kYXJ5XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJyZXF1ZXN0UmVzdGFydEdhbWUoKVwiPlxuICAgICAgICAgICAgICAgIHt7IHQoJ3Jlc3RhcnQnKSB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAoZ2FtZSgpLm1vZGUgPT09ICdvbmxpbmUnICYmIGdhbWUoKS5pZCAmJiAhcHJvamVjdGlvbk1vZGUpIHtcbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNoZXNzaW1hbHMtc2Vjb25kYXJ5XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJzaGFyZVByb2plY3Rpb25MaW5rKClcIj5cbiAgICAgICAgICAgICAgICB7eyB0KCdjaGVzc2ltYWxzU2hhcmVQcm9qZWN0aW9uJykgfX1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2hlc3NpbWFscy1zZWNvbmRhcnlcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInJlcXVlc3RDaGFuZ2VNb2RlKClcIj5cbiAgICAgICAgICAgICAge3sgdCgnY2hlc3NpbWFsc0NoYW5nZU1vZGUnKSB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2hlc3NpbWFscy1zZWNvbmRhcnlcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInJlcXVlc3RDaGFuZ2VHYW1lKClcIj5cbiAgICAgICAgICAgICAge3sgdCgnY2hlc3NpbWFsc0NoYW5nZUdhbWUnKSB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvc2VjdGlvbj5cbiAgICAgIH1cbiAgICA8L21haW4+XG5cbiAgICA8aW9uLW1vZGFsXG4gICAgICBbaXNPcGVuXT1cImlzUnVsZXNNb2RhbE9wZW4oKVwiXG4gICAgICBjc3NDbGFzcz1cInZhbC1tb2RhbC1hZGFwdGl2ZVwiXG4gICAgICAoZGlkRGlzbWlzcyk9XCJjbG9zZVJ1bGVzTW9kYWwoKVwiXG4gICAgPlxuICAgICAgPG5nLXRlbXBsYXRlPlxuICAgICAgICA8dmFsLW1vZGFsLWxheW91dFxuICAgICAgICAgIFt0aXRsZV09XCJ0KCdjaGVzc2ltYWxzUnVsZXNUaXRsZScpXCJcbiAgICAgICAgICBbc3VidGl0bGVdPVwidCgnY2hlc3NpbWFsc1J1bGVzU3VidGl0bGUnKVwiXG4gICAgICAgICAgW2Nsb3NlTGFiZWxdPVwidCgnY2xvc2UnKVwiXG4gICAgICAgICAgW2FjdGlvbnNdPVwicnVsZXNBY3Rpb25zKClcIlxuICAgICAgICAgIGFjdGlvbnNBbGlnbj1cImVuZFwiXG4gICAgICAgICAgKGNsb3NlKT1cImNsb3NlUnVsZXNNb2RhbCgpXCJcbiAgICAgICAgICAoYWN0aW9uQ2xpY2spPVwiY2xvc2VSdWxlc01vZGFsKClcIlxuICAgICAgICA+XG4gICAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJjaGVzc2ltYWxzLXJ1bGVzXCI+XG4gICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgIGNsYXNzPVwiY2hlc3NpbWFscy1ydWxlc19faGVyb1wiXG4gICAgICAgICAgICAgIHNyYz1cImFzc2V0cy9nYW1lcy9jaGVzc2ltYWxzL3R1dG9yaWFsLXNhdmFubmEuanBnXCJcbiAgICAgICAgICAgICAgYWx0PVwiXCJcbiAgICAgICAgICAgICAgbG9hZGluZz1cImxhenlcIlxuICAgICAgICAgICAgLz5cblxuICAgICAgICAgICAgPGFydGljbGU+XG4gICAgICAgICAgICAgIDxzcGFuPjE8L3NwYW4+XG4gICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPGgzPnt7IHQoJ2NoZXNzaW1hbHNSdWxlR29hbFRpdGxlJykgfX08L2gzPlxuICAgICAgICAgICAgICAgIDxwPnt7IHQoJ2NoZXNzaW1hbHNSdWxlR29hbEJvZHknKSB9fTwvcD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2FydGljbGU+XG5cbiAgICAgICAgICAgIDxhcnRpY2xlPlxuICAgICAgICAgICAgICA8c3Bhbj4yPC9zcGFuPlxuICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxoMz57eyB0KCdjaGVzc2ltYWxzUnVsZU1vdmVUaXRsZScpIH19PC9oMz5cbiAgICAgICAgICAgICAgICA8cD57eyB0KCdjaGVzc2ltYWxzUnVsZU1vdmVCb2R5JykgfX08L3A+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9hcnRpY2xlPlxuXG4gICAgICAgICAgICA8YXJ0aWNsZT5cbiAgICAgICAgICAgICAgPHNwYW4+Mzwvc3Bhbj5cbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8aDM+e3sgdCgnY2hlc3NpbWFsc1J1bGVQb3dlcnNUaXRsZScpIH19PC9oMz5cbiAgICAgICAgICAgICAgICA8cD57eyB0KCdjaGVzc2ltYWxzUnVsZVBvd2Vyc0JvZHknKSB9fTwvcD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2FydGljbGU+XG5cbiAgICAgICAgICAgIDxhcnRpY2xlPlxuICAgICAgICAgICAgICA8c3Bhbj40PC9zcGFuPlxuICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxoMz57eyB0KCdjaGVzc2ltYWxzUnVsZUNhcmRzVGl0bGUnKSB9fTwvaDM+XG4gICAgICAgICAgICAgICAgPHVsPlxuICAgICAgICAgICAgICAgICAgPGxpPnt7IHQoJ2NoZXNzaW1hbHNSdWxlRWFnbGUnKSB9fTwvbGk+XG4gICAgICAgICAgICAgICAgICA8bGk+e3sgdCgnY2hlc3NpbWFsc1J1bGVCdWxsJykgfX08L2xpPlxuICAgICAgICAgICAgICAgICAgPGxpPnt7IHQoJ2NoZXNzaW1hbHNSdWxlS2FuZ2Fyb28nKSB9fTwvbGk+XG4gICAgICAgICAgICAgICAgICA8bGk+e3sgdCgnY2hlc3NpbWFsc1J1bGVMaW9uJykgfX08L2xpPlxuICAgICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9hcnRpY2xlPlxuXG4gICAgICAgICAgICA8YXJ0aWNsZT5cbiAgICAgICAgICAgICAgPHNwYW4+NTwvc3Bhbj5cbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8aDM+e3sgdCgnY2hlc3NpbWFsc1J1bGVMaW1pdHNUaXRsZScpIH19PC9oMz5cbiAgICAgICAgICAgICAgICA8cD57eyB0KCdjaGVzc2ltYWxzUnVsZUxpbWl0c0JvZHknKSB9fTwvcD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2FydGljbGU+XG4gICAgICAgICAgPC9zZWN0aW9uPlxuICAgICAgICA8L3ZhbC1tb2RhbC1sYXlvdXQ+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvaW9uLW1vZGFsPlxuXG4gICAgPGlvbi1tb2RhbFxuICAgICAgW2lzT3Blbl09XCJpc1NldHRpbmdzTW9kYWxPcGVuKClcIlxuICAgICAgY3NzQ2xhc3M9XCJ2YWwtbW9kYWwtYWRhcHRpdmVcIlxuICAgICAgKGRpZERpc21pc3MpPVwiY2xvc2VTZXR0aW5nc01vZGFsKClcIlxuICAgID5cbiAgICAgIDxuZy10ZW1wbGF0ZT5cbiAgICAgICAgPHZhbC1tb2RhbC1sYXlvdXRcbiAgICAgICAgICBbdGl0bGVdPVwidCgnY2hlc3NpbWFsc1NldHRpbmdzVGl0bGUnKVwiXG4gICAgICAgICAgW3N1YnRpdGxlXT1cInQoJ2NoZXNzaW1hbHNTZXR0aW5nc1N1YnRpdGxlJylcIlxuICAgICAgICAgIFtjbG9zZUxhYmVsXT1cInQoJ2Nsb3NlJylcIlxuICAgICAgICAgIFtmb290ZXJdPVwiZmFsc2VcIlxuICAgICAgICAgIChjbG9zZSk9XCJjbG9zZVNldHRpbmdzTW9kYWwoKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8c2VjdGlvbiBjbGFzcz1cImNoZXNzaW1hbHMtc2V0dGluZ3NcIj5cbiAgICAgICAgICAgIDxhcnRpY2xlPlxuICAgICAgICAgICAgICA8dmFsLXRvZ2dsZS1pbnB1dCBbcHJvcHNdPVwibXVzaWNUb2dnbGVQcm9wcygpXCIgLz5cbiAgICAgICAgICAgICAgPHZhbC1yYW5nZS1pbnB1dCBbcHJvcHNdPVwibXVzaWNWb2x1bWVQcm9wcygpXCIgKHJhbmdlQ2hhbmdlKT1cInNldE11c2ljVm9sdW1lKCRldmVudClcIiAvPlxuICAgICAgICAgICAgPC9hcnRpY2xlPlxuICAgICAgICAgICAgPGFydGljbGU+XG4gICAgICAgICAgICAgIDx2YWwtdG9nZ2xlLWlucHV0IFtwcm9wc109XCJzZnhUb2dnbGVQcm9wcygpXCIgLz5cbiAgICAgICAgICAgICAgPHZhbC1yYW5nZS1pbnB1dCBbcHJvcHNdPVwic2Z4Vm9sdW1lUHJvcHMoKVwiIChyYW5nZUNoYW5nZSk9XCJzZXRTZnhWb2x1bWUoJGV2ZW50KVwiIC8+XG4gICAgICAgICAgICA8L2FydGljbGU+XG4gICAgICAgICAgPC9zZWN0aW9uPlxuICAgICAgICA8L3ZhbC1tb2RhbC1sYXlvdXQ+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvaW9uLW1vZGFsPlxuXG4gICAgPGlvbi1tb2RhbFxuICAgICAgW2lzT3Blbl09XCJpc0Fib3V0TW9kYWxPcGVuKClcIlxuICAgICAgY3NzQ2xhc3M9XCJ2YWwtbW9kYWwtYWRhcHRpdmVcIlxuICAgICAgKGRpZERpc21pc3MpPVwiY2xvc2VBYm91dE1vZGFsKClcIlxuICAgID5cbiAgICAgIDxuZy10ZW1wbGF0ZT5cbiAgICAgICAgPHZhbC1tb2RhbC1sYXlvdXRcbiAgICAgICAgICBbdGl0bGVdPVwidCgnY2hlc3NpbWFsc0Fib3V0VGl0bGUnKVwiXG4gICAgICAgICAgW3N1YnRpdGxlXT1cInQoJ2NoZXNzaW1hbHNBYm91dFN1YnRpdGxlJylcIlxuICAgICAgICAgIFtjbG9zZUxhYmVsXT1cInQoJ2Nsb3NlJylcIlxuICAgICAgICAgIFthY3Rpb25zXT1cImFib3V0QWN0aW9ucygpXCJcbiAgICAgICAgICBhY3Rpb25zQWxpZ249XCJlbmRcIlxuICAgICAgICAgIChjbG9zZSk9XCJjbG9zZUFib3V0TW9kYWwoKVwiXG4gICAgICAgICAgKGFjdGlvbkNsaWNrKT1cImNsb3NlQWJvdXRNb2RhbCgpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPVwiY2hlc3NpbWFscy1hYm91dFwiPlxuICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICBjbGFzcz1cImNoZXNzaW1hbHMtYWJvdXRfX2xvZ29cIlxuICAgICAgICAgICAgICBzcmM9XCJhc3NldHMvZ2FtZXMvY2hlc3NpbWFscy9tZW51LWxvZ28uanBnXCJcbiAgICAgICAgICAgICAgYWx0PVwiXCJcbiAgICAgICAgICAgICAgbG9hZGluZz1cImxhenlcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxwPnt7IHQoJ2NoZXNzaW1hbHNBYm91dEJvZHknKSB9fTwvcD5cbiAgICAgICAgICAgIDxkbD5cbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8ZHQ+e3sgdCgnY2hlc3NpbWFsc0Fib3V0TGliVmVyc2lvbicpIH19PC9kdD5cbiAgICAgICAgICAgICAgICA8ZGQ+e3sgdmFsdGVjaENvbXBvbmVudHNWZXJzaW9uIH19PC9kZD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2RsPlxuICAgICAgICAgIDwvc2VjdGlvbj5cbiAgICAgICAgPC92YWwtbW9kYWwtbGF5b3V0PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2lvbi1tb2RhbD5cblxuICAgIDxpb24tbW9kYWxcbiAgICAgIFtpc09wZW5dPVwiISFjb25maXJtQWN0aW9uKClcIlxuICAgICAgY3NzQ2xhc3M9XCJ2YWwtbW9kYWwtYWRhcHRpdmVcIlxuICAgICAgKGRpZERpc21pc3MpPVwiY2xvc2VDb25maXJtTW9kYWwoKVwiXG4gICAgPlxuICAgICAgPG5nLXRlbXBsYXRlPlxuICAgICAgICA8dmFsLW1vZGFsLWxheW91dFxuICAgICAgICAgIFt0aXRsZV09XCJjb25maXJtVGl0bGUoKVwiXG4gICAgICAgICAgW3N1YnRpdGxlXT1cImNvbmZpcm1Cb2R5KClcIlxuICAgICAgICAgIFtjbG9zZUxhYmVsXT1cInQoJ2Nsb3NlJylcIlxuICAgICAgICAgIFthY3Rpb25zXT1cImNvbmZpcm1BY3Rpb25zKClcIlxuICAgICAgICAgIGFjdGlvbnNBbGlnbj1cImVuZFwiXG4gICAgICAgICAgKGNsb3NlKT1cImNsb3NlQ29uZmlybU1vZGFsKClcIlxuICAgICAgICAgIChhY3Rpb25DbGljayk9XCJjb25maXJtUGVuZGluZ0FjdGlvbigkZXZlbnQuYWN0aW9uPy50b2tlbilcIlxuICAgICAgICAvPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2lvbi1tb2RhbD5cbiAgYCxcbiAgc3R5bGVzOiBbXG4gICAgYFxuICAgICAgOmhvc3Qge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc2hlbGwge1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGFuZWw6ICNmZmZmZmY7XG4gICAgICAgIC0tY2hlc3NpbWFscy1zdXJmYWNlOiAjZmZmYWYxO1xuICAgICAgICAtLWNoZXNzaW1hbHMtYm9yZGVyOiByZ2JhKDQ2LCA1OCwgNDQsIDAuMTgpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtdGV4dDogIzJlM2EyYztcbiAgICAgICAgLS1jaGVzc2ltYWxzLW11dGVkOiAjNTE2NDNkO1xuICAgICAgICAtLWNoZXNzaW1hbHMtc29mdDogcmdiYSgxMTEsIDEyMiwgNjAsIDAuMSk7XG4gICAgICAgIC0tY2hlc3NpbWFscy1wcmltYXJ5OiAjMmU2ZjNlO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2I6IDQ2LCAxMTEsIDYyO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcHJpbWFyeS1jb250cmFzdDogI2ZmZmFmMDtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXNlY29uZGFyeTogI2E4YTA2YTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXNlY29uZGFyeS1yZ2I6IDE2OCwgMTYwLCAxMDY7XG4gICAgICAgIC0tY2hlc3NpbWFscy1za3k6ICNjMDZhM2Q7XG4gICAgICAgIC0tY2hlc3NpbWFscy1za3ktcmdiOiAxOTIsIDEwNiwgNjE7XG4gICAgICAgIC0tY2hlc3NpbWFscy1zdG9uZTogIzhlOTM2MjtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXN0b25lLXJnYjogMTQyLCAxNDcsIDk4O1xuICAgICAgICAtLWNoZXNzaW1hbHMtc2VsZWN0ZWQ6ICMzN2YyOGE7XG4gICAgICAgIC0tY2hlc3NpbWFscy1zZWxlY3RlZC1yZ2I6IDU1LCAyNDIsIDEzODtcbiAgICAgICAgLS1jaGVzc2ltYWxzLW1hZ2ljOiAjZjdkNDVhO1xuICAgICAgICAtLWNoZXNzaW1hbHMtbWFnaWMtcmdiOiAyNDcsIDIxMiwgOTA7XG4gICAgICAgIC0tY2hlc3NpbWFscy1tYWdpYy1ob3Q6ICNmZmY1NmY7XG4gICAgICAgIC0tY2hlc3NpbWFscy1tYWdpYy1kZWVwOiAjYjc3YTE4O1xuICAgICAgICAtLWNoZXNzaW1hbHMtd2FybmluZzogI2Y0YzU0MjtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXdhcm5pbmctcmdiOiAyNDQsIDE5NywgNjY7XG4gICAgICAgIC0tY2hlc3NpbWFscy1tb3ZlOiB2YXIoLS1jaGVzc2ltYWxzLXNreSk7XG4gICAgICAgIC0tY2hlc3NpbWFscy1tb3ZlLXJnYjogdmFyKC0tY2hlc3NpbWFscy1za3ktcmdiKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWNhcHR1cmU6ICMxZmNkYjM7XG4gICAgICAgIC0tY2hlc3NpbWFscy1jYXB0dXJlLXJnYjogMzEsIDIwNSwgMTc5O1xuICAgICAgICAtLWNoZXNzaW1hbHMtbGFzdDogIzhjNmI0ZjtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWxhc3QtcmdiOiAxNDAsIDEwNywgNzk7XG4gICAgICAgIC0tY2hlc3NpbWFscy1jZWxsLWxpZ2h0OiAjZjNmNGU4O1xuICAgICAgICAtLWNoZXNzaW1hbHMtY2VsbC1kYXJrOiAjN2Y5NDRkO1xuICAgICAgICAtLWNoZXNzaW1hbHMtYm9hcmQtc2hhZG93OiByZ2JhKDQ2LCA1OCwgNDQsIDAuMTQpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGllY2Utd2hpdGUtZmlsbDogI2ZmZmZmZjtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXBpZWNlLXdoaXRlLXNpZGU6ICNmM2VhZGI7XG4gICAgICAgIC0tY2hlc3NpbWFscy1waWVjZS13aGl0ZS1saW5lOiByZ2JhKDgyLCA2NSwgNDYsIDAuMTIpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGllY2Utd2hpdGUtc2hhZG93OlxuICAgICAgICAgIGRyb3Atc2hhZG93KDAgMCAxcHggcmdiYSg4NCwgNjIsIDM0LCAwLjUyKSlcbiAgICAgICAgICBkcm9wLXNoYWRvdygwIDAuMThyZW0gMC4xMnJlbSByZ2JhKDcyLCA1OCwgMzYsIDAuMjIpKVxuICAgICAgICAgIGRyb3Atc2hhZG93KDAgMC4zNHJlbSAwLjQycmVtIHJnYmEoNzIsIDU4LCAzNiwgMC4yMikpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGllY2UtYmxhY2stZmlsbDogIzI0MjkzNjtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXBpZWNlLWJsYWNrLXNpZGU6ICMxNzFiMjU7XG4gICAgICAgIC0tY2hlc3NpbWFscy1waWVjZS1ibGFjay1saW5lOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7XG4gICAgICAgIC0tY2hlc3NpbWFscy1waWVjZS1ibGFjay1zaGFkb3c6XG4gICAgICAgICAgZHJvcC1zaGFkb3coMCAwIDFweCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMzQpKVxuICAgICAgICAgIGRyb3Atc2hhZG93KDAgMC4xOHJlbSAwLjFyZW0gcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEyKSlcbiAgICAgICAgICBkcm9wLXNoYWRvdygwIDAuMzJyZW0gMC40MnJlbSByZ2JhKDAsIDAsIDAsIDAuMzYpKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXBpZWNlLWdvbGQ6ICNjNzlhNDI7XG4gICAgICAgIC0tY2hlc3NpbWFscy1waWVjZS1nb2xkLWRhcms6ICM4YTVmMjI7XG4gICAgICAgIC0tY2hlc3NpbWFscy1hbmltYWwtZmFjZS1iZzogI2ZmZmRmNztcbiAgICAgICAgLS1jaGVzc2ltYWxzLWFuaW1hbC1mYWNlLWlubmVyLWJnOiAjZmZmZmZmO1xuICAgICAgICAtLWNoZXNzaW1hbHMtYW5pbWFsLWZhY2UtYm9yZGVyOiByZ2JhKDQ2LCA1OCwgNDQsIDAuMTIpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtYW5pbWFsLWZhY2UtZmlsdGVyOiBkcm9wLXNoYWRvdygwIDAuMTJyZW0gMC4xNnJlbSByZ2JhKDQ2LCA1OCwgNDQsIDAuMTgpKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWFuaW1hbC1mYWNlLWxvY2tlZC1maWx0ZXI6IGdyYXlzY2FsZSgwLjIpIHNhdHVyYXRlKDAuNzIpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtYW5pbWFsLWZhY2UtbG9ja2VkLWltZy1vcGFjaXR5OiAwLjcyO1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDEuMTI1cmVtO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgbWF4LXdpZHRoOiBtaW4oMTAwJSwgNjByZW0pO1xuICAgICAgICBtYXJnaW46IDAgYXV0bztcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICB9XG5cbiAgICAgIEBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIHtcbiAgICAgICAgLmNoZXNzaW1hbHMtc2hlbGwge1xuICAgICAgICAgIC0tY2hlc3NpbWFscy1wYW5lbDogIzE3MjExNjtcbiAgICAgICAgICAtLWNoZXNzaW1hbHMtc3VyZmFjZTogIzBmMTcwZjtcbiAgICAgICAgICAtLWNoZXNzaW1hbHMtYm9yZGVyOiByZ2JhKDI0MiwgMjMwLCAyMTMsIDAuMik7XG4gICAgICAgICAgLS1jaGVzc2ltYWxzLXRleHQ6ICNmNmYzZTk7XG4gICAgICAgICAgLS1jaGVzc2ltYWxzLW11dGVkOiAjYzhjZmIxO1xuICAgICAgICAgIC0tY2hlc3NpbWFscy1zb2Z0OiByZ2JhKDExMSwgMTIyLCA2MCwgMC4yMik7XG4gICAgICAgICAgLS1jaGVzc2ltYWxzLXByaW1hcnk6ICMyZTZmM2U7XG4gICAgICAgICAgLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiOiA0NiwgMTExLCA2MjtcbiAgICAgICAgICAtLWNoZXNzaW1hbHMtcHJpbWFyeS1jb250cmFzdDogI2ZmZmFmMDtcbiAgICAgICAgICAtLWNoZXNzaW1hbHMtc2Vjb25kYXJ5OiAjYThhMDZhO1xuICAgICAgICAgIC0tY2hlc3NpbWFscy1zZWNvbmRhcnktcmdiOiAxNjgsIDE2MCwgMTA2O1xuICAgICAgICAgIC0tY2hlc3NpbWFscy1za3k6ICNjMDZhM2Q7XG4gICAgICAgICAgLS1jaGVzc2ltYWxzLXNreS1yZ2I6IDE5MiwgMTA2LCA2MTtcbiAgICAgICAgICAtLWNoZXNzaW1hbHMtc3RvbmU6ICM4ZTkzNjI7XG4gICAgICAgICAgLS1jaGVzc2ltYWxzLXN0b25lLXJnYjogMTQyLCAxNDcsIDk4O1xuICAgICAgICAgIC0tY2hlc3NpbWFscy1jZWxsLWxpZ2h0OiAjZjNmNGU4O1xuICAgICAgICAgIC0tY2hlc3NpbWFscy1jZWxsLWRhcms6ICM3Zjk0NGQ7XG4gICAgICAgICAgLS1jaGVzc2ltYWxzLWJvYXJkLXNoYWRvdzogcmdiYSgwLCAwLCAwLCAwLjM0KTtcbiAgICAgICAgICAtLWNoZXNzaW1hbHMtYW5pbWFsLWZhY2UtYm9yZGVyOiByZ2JhKDI0MiwgMjMwLCAyMTMsIDAuMjQpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJlc3VtZS1zcGxhc2gge1xuICAgICAgICBvcmRlcjogMDtcbiAgICAgICAgcG9zaXRpb246IGZpeGVkO1xuICAgICAgICBpbnNldDogMDtcbiAgICAgICAgei1pbmRleDogMTAwMDtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgcGxhY2UtaXRlbXM6IGNlbnRlcjtcbiAgICAgICAgYWxpZ24tY29udGVudDogY2VudGVyO1xuICAgICAgICBnYXA6IDAuNjVyZW07XG4gICAgICAgIHBhZGRpbmc6IDEuNXJlbTtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDUwJSA0MiUsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTgpLCB0cmFuc3BhcmVudCAyMnJlbSksXG4gICAgICAgICAgY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWNoZXNzaW1hbHMtcGFuZWwpIDkyJSwgdHJhbnNwYXJlbnQpO1xuICAgICAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMC45cmVtKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcmVzdW1lLXNwbGFzaF9fcGF3IHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgcGxhY2UtaXRlbXM6IGNlbnRlcjtcbiAgICAgICAgd2lkdGg6IGNsYW1wKDQuNnJlbSwgMTZ2dywgNS42cmVtKTtcbiAgICAgICAgaGVpZ2h0OiBjbGFtcCg0LjZyZW0sIDE2dncsIDUuNnJlbSk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEuNTVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCAzNSUgMjUlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOTYpLCB0cmFuc3BhcmVudCAzNCUpLFxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxNDVkZWcsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45NiksIHJnYmEodmFyKC0tY2hlc3NpbWFscy1zZWNvbmRhcnktcmdiKSwgMC4yMikpLFxuICAgICAgICAgIGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1jaGVzc2ltYWxzLXBhbmVsKSA4MiUsIHdoaXRlKTtcbiAgICAgICAgYm9yZGVyOiAwLjEycmVtIHNvbGlkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMjIpO1xuICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgIDAgMS4xNXJlbSAyLjZyZW0gcmdiYSh2YXIoLS1pb24tY29sb3ItZGFyay1yZ2IsIDQ3LCA0MiwgNTgpLCAwLjE2KSxcbiAgICAgICAgICAwIDAgMCAwLjQycmVtIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC40MiksXG4gICAgICAgICAgaW5zZXQgMCAtMC4yNXJlbSAwLjZyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4wOCk7XG4gICAgICAgIGFuaW1hdGlvbjogY2hlc3NpbWFscy1yZXN1bWUtcHVsc2UgMS4ycyBlYXNlLWluLW91dCBpbmZpbml0ZTtcbiAgICAgICAgZm9udC1zaXplOiBjbGFtcCgyLjQ1cmVtLCA5dncsIDMuMzVyZW0pO1xuICAgICAgICBsaW5lLWhlaWdodDogMTtcbiAgICAgICAgZmlsdGVyOiBkcm9wLXNoYWRvdygwIDAuMjhyZW0gMC4zOHJlbSByZ2JhKHZhcigtLWlvbi1jb2xvci1kYXJrLXJnYiwgNDcsIDQyLCA1OCksIDAuMTgpKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcmVzdW1lLXNwbGFzaCBzdHJvbmcge1xuICAgICAgICBmb250LXNpemU6IGNsYW1wKDEuNTVyZW0sIDV2dywgMi40cmVtKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMDU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJlc3VtZS1zcGxhc2ggcCB7XG4gICAgICAgIG1heC13aWR0aDogMjRyZW07XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IDFyZW07XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjM1O1xuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIGNoZXNzaW1hbHMtcmVzdW1lLXB1bHNlIHtcbiAgICAgICAgMCUsXG4gICAgICAgIDEwMCUge1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKSBzY2FsZSgxKTtcbiAgICAgICAgfVxuICAgICAgICA1MCUge1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMC4yNXJlbSkgc2NhbGUoMS4wNCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBjaGVzc2ltYWxzLXNwaW4ge1xuICAgICAgICB0byB7XG4gICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIGNoZXNzaW1hbHMtb25saW5lLXB1bHNlIHtcbiAgICAgICAgMCUsXG4gICAgICAgIDEwMCUge1xuICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7XG4gICAgICAgICAgb3BhY2l0eTogMC43ODtcbiAgICAgICAgfVxuXG4gICAgICAgIDUwJSB7XG4gICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxLjIyKTtcbiAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIDpob3N0LWNvbnRleHQoaHRtbC5pb24tcGFsZXR0ZS1kYXJrKSAuY2hlc3NpbWFscy1zaGVsbCxcbiAgICAgIDpob3N0LWNvbnRleHQoW2RhdGEtdGhlbWU9J2RhcmsnXSkgLmNoZXNzaW1hbHMtc2hlbGwge1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGFuZWw6ICMxNzIxMTY7XG4gICAgICAgIC0tY2hlc3NpbWFscy1zdXJmYWNlOiAjMGYxNzBmO1xuICAgICAgICAtLWNoZXNzaW1hbHMtYm9yZGVyOiByZ2JhKDI0NiwgMjI3LCAyMTMsIDAuMjIpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtdGV4dDogI2Y2ZjNlOTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLW11dGVkOiAjYzhjZmIxO1xuICAgICAgICAtLWNoZXNzaW1hbHMtc29mdDogcmdiYSgxMTEsIDEyMiwgNjAsIDAuMjIpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcHJpbWFyeTogIzJlNmYzZTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiOiA0NiwgMTExLCA2MjtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXByaW1hcnktY29udHJhc3Q6ICNmZmZhZjA7XG4gICAgICAgIC0tY2hlc3NpbWFscy1zZWNvbmRhcnk6ICNhOGEwNmE7XG4gICAgICAgIC0tY2hlc3NpbWFscy1zZWNvbmRhcnktcmdiOiAxNjgsIDE2MCwgMTA2O1xuICAgICAgICAtLWNoZXNzaW1hbHMtc2t5OiAjYzA2YTNkO1xuICAgICAgICAtLWNoZXNzaW1hbHMtc2t5LXJnYjogMTkyLCAxMDYsIDYxO1xuICAgICAgICAtLWNoZXNzaW1hbHMtc3RvbmU6ICM4ZTkzNjI7XG4gICAgICAgIC0tY2hlc3NpbWFscy1zdG9uZS1yZ2I6IDE0MiwgMTQ3LCA5ODtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWNlbGwtbGlnaHQ6ICNlOGVhZGM7XG4gICAgICAgIC0tY2hlc3NpbWFscy1jZWxsLWRhcms6ICM1ZjcwNDA7XG4gICAgICAgIC0tY2hlc3NpbWFscy1ib2FyZC1zaGFkb3c6IHJnYmEoMCwgMCwgMCwgMC4zNCk7XG4gICAgICAgIC0tY2hlc3NpbWFscy1jYXB0dXJlOiAjNjZmMmQ3O1xuICAgICAgICAtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2I6IDEwMiwgMjQyLCAyMTU7XG4gICAgICAgIC0tY2hlc3NpbWFscy1sYXN0OiAjY2RiZTliO1xuICAgICAgICAtLWNoZXNzaW1hbHMtbGFzdC1yZ2I6IDIwNSwgMTkwLCAxNTU7XG4gICAgICAgIC0tY2hlc3NpbWFscy1waWVjZS13aGl0ZS1maWxsOiAjZmZmYWZmO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGllY2Utd2hpdGUtc2lkZTogI2YwZTVkNDtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXBpZWNlLXdoaXRlLWxpbmU6IHJnYmEoODIsIDY1LCA0NiwgMC4xMik7XG4gICAgICAgIC0tY2hlc3NpbWFscy1waWVjZS13aGl0ZS1zaGFkb3c6XG4gICAgICAgICAgZHJvcC1zaGFkb3coMCAwIDFweCByZ2JhKDg0LCA2MiwgMzQsIDAuNDgpKVxuICAgICAgICAgIGRyb3Atc2hhZG93KDAgMC4xOHJlbSAwLjEycmVtIHJnYmEoMCwgMCwgMCwgMC4yNCkpXG4gICAgICAgICAgZHJvcC1zaGFkb3coMCAwLjM0cmVtIDAuNDJyZW0gcmdiYSgwLCAwLCAwLCAwLjMpKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXBpZWNlLWJsYWNrLWZpbGw6ICMyMDI2MzM7XG4gICAgICAgIC0tY2hlc3NpbWFscy1waWVjZS1ibGFjay1zaWRlOiAjMTExNjIwO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGllY2UtYmxhY2stbGluZTogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEyKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXBpZWNlLWJsYWNrLXNoYWRvdzpcbiAgICAgICAgICBkcm9wLXNoYWRvdygwIDAgMXB4IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4zNCkpXG4gICAgICAgICAgZHJvcC1zaGFkb3coMCAwLjE4cmVtIDAuMXJlbSByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTQpKVxuICAgICAgICAgIGRyb3Atc2hhZG93KDAgMC4zNHJlbSAwLjQ0cmVtIHJnYmEoMCwgMCwgMCwgMC41MikpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtYW5pbWFsLWZhY2UtYmc6ICNmZmZkZjc7XG4gICAgICAgIC0tY2hlc3NpbWFscy1hbmltYWwtZmFjZS1pbm5lci1iZzogI2ZmZmZmZjtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWFuaW1hbC1mYWNlLWJvcmRlcjogcmdiYSgyNDIsIDIzMCwgMjEzLCAwLjI0KTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWFuaW1hbC1mYWNlLWZpbHRlcjogZHJvcC1zaGFkb3coMCAwLjEycmVtIDAuMTZyZW0gcmdiYSgwLCAwLCAwLCAwLjIyKSk7XG4gICAgICAgIC0tY2hlc3NpbWFscy1hbmltYWwtZmFjZS1sb2NrZWQtZmlsdGVyOlxuICAgICAgICAgIGdyYXlzY2FsZSgwLjMyKVxuICAgICAgICAgIHNhdHVyYXRlKDAuNzIpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtYW5pbWFsLWZhY2UtbG9ja2VkLWltZy1vcGFjaXR5OiAwLjU4O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1oZXJvIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjc1cmVtO1xuICAgICAgICBqdXN0aWZ5LWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEuNzVyZW07XG4gICAgICAgIHBhZGRpbmc6IGNsYW1wKDEuMjVyZW0sIDV2dywgMi41cmVtKTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDE4JSAxMiUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45MiksIHRyYW5zcGFyZW50IDIwJSksXG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgI2ZkZjhlZSAwJSwgI2ZmZmZmZiA0MCUsICNlZGYzZGYgMTAwJSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNoZXNzaW1hbHMtYm9yZGVyKTtcbiAgICAgIH1cblxuICAgICAgOmhvc3QtY29udGV4dChodG1sLmlvbi1wYWxldHRlLWRhcmspIC5jaGVzc2ltYWxzLWhlcm8sXG4gICAgICA6aG9zdC1jb250ZXh0KFtkYXRhLXRoZW1lPSdkYXJrJ10pIC5jaGVzc2ltYWxzLWhlcm8ge1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgMTglIDEyJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA4KSwgdHJhbnNwYXJlbnQgMjIlKSxcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjMTExYTEwIDAlLCAjMTcyMTE2IDQ4JSwgIzBmMTcwZiAxMDAlKTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSgyNDYsIDIyNywgMjEzLCAwLjIyKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtaGVyb19fbG9nbyB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIHBsYWNlLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIHdpZHRoOiBtaW4oMjJyZW0sIDgydncpO1xuICAgICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgICAgIHBhZGRpbmc6IDAuNXJlbTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMS4zNXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogI2ZmZmZmZjtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICAwIDFyZW0gMi41cmVtIHJnYmEoNDYsIDU4LCA0NCwgMC4xKSxcbiAgICAgICAgICBpbnNldCAwIDAgMCAxcHggcmdiYSg0NiwgNTgsIDQ0LCAwLjA4KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtaGVyb19fbG9nbyBpbWcge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGhlaWdodDogYXV0bztcbiAgICAgICAgbWF4LWhlaWdodDogMTJyZW07XG4gICAgICAgIG9iamVjdC1maXQ6IGNvbnRhaW47XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDFyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWhlcm8gaDEge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIGZvbnQtc2l6ZTogY2xhbXAoMi40cmVtLCA5dncsIDQuNXJlbSk7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAwLjk1O1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1oZXJvIHAsXG4gICAgICAuY2hlc3NpbWFscy1ob3d0byBwLFxuICAgICAgLmNoZXNzaW1hbHMtdGlwIHAsXG4gICAgICAuY2hlc3NpbWFscy1yZXN1bHQgcCxcbiAgICAgIC5jaGVzc2ltYWxzLXBvd2VycyBwIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBsaW5lLWhlaWdodDogMS40NTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGFuZWwsXG4gICAgICAuY2hlc3NpbWFscy1nYW1lLFxuICAgICAgLmNoZXNzaW1hbHMtcG93ZXJzIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAxcmVtO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jaGVzc2ltYWxzLWJvcmRlcik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEuNjI1cmVtO1xuICAgICAgICBwYWRkaW5nOiBjbGFtcCgxcmVtLCA0dncsIDEuNXJlbSk7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtcGFuZWwpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1vbmxpbmUge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuODc1cmVtO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jaGVzc2ltYWxzLWJvcmRlcik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEuMzc1cmVtO1xuICAgICAgICBwYWRkaW5nOiAxcmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMDgpLCB0cmFuc3BhcmVudCksXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1wYW5lbCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW9ubGluZS0td2FpdGluZyB7XG4gICAgICAgIG9yZGVyOiAyO1xuICAgICAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMzQpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1vbmxpbmUgaDIsXG4gICAgICAuY2hlc3NpbWFscy1vbmxpbmUgcCB7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtb25saW5lIGgyIHtcbiAgICAgICAgZm9udC1zaXplOiAxLjFyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW9ubGluZSBwIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBsaW5lLWhlaWdodDogMS40O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1vbmxpbmVfX2NyZWF0ZSxcbiAgICAgIC5jaGVzc2ltYWxzLW9ubGluZV9fam9pbiB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC41NXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtb25saW5lX19jcmVhdGUgc21hbGwge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA4MDA7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjM1O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1vbmxpbmVfX2pvaW4ge1xuICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tY2hlc3NpbWFscy1ib3JkZXIpO1xuICAgICAgICBwYWRkaW5nLXRvcDogMC44NXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtb25saW5lX19qb2luID4gc3Ryb25nIHtcbiAgICAgICAgZm9udC1zaXplOiAwLjk1cmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1vbmxpbmVfX2Vycm9yIHtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMC44NzVyZW07XG4gICAgICAgIHBhZGRpbmc6IDAuN3JlbSAwLjhyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0taW9uLWNvbG9yLWRhbmdlci1yZ2IsIDIzNSwgNjgsIDkwKSwgMC4xMik7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItZGFuZ2VyLCAjZWI0NDVhKSAhaW1wb3J0YW50O1xuICAgICAgICBmb250LXdlaWdodDogODAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1vbmxpbmVfX2xvYWRpbmcge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDAuNjI1cmVtO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjIyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIHBhZGRpbmc6IDAuNjVyZW0gMC44NXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4wOCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICBmb250LXNpemU6IDAuOTJyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5MDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW9ubGluZV9fbG9hZGluZyBzcGFuIHtcbiAgICAgICAgd2lkdGg6IDFyZW07XG4gICAgICAgIGhlaWdodDogMXJlbTtcbiAgICAgICAgYm9yZGVyOiAwLjE1cmVtIHNvbGlkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMjQpO1xuICAgICAgICBib3JkZXItdG9wLWNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgYW5pbWF0aW9uOiBjaGVzc2ltYWxzLXNwaW4gMC43NXMgbGluZWFyIGluZmluaXRlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1vbmxpbmUtY29kZSB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC40cmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1vbmxpbmUtY29kZSBpbnB1dCB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBtaW4taGVpZ2h0OiAzLjNyZW07XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNoZXNzaW1hbHMtYm9yZGVyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIHBhZGRpbmc6IDAgMXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1wYW5lbCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICBmb250OiBpbmhlcml0O1xuICAgICAgICBmb250LXdlaWdodDogODUwO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wNWVtO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1nYW1lLWNvZGUge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuMnJlbTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMXJlbTtcbiAgICAgICAgcGFkZGluZzogMC44NXJlbSAxcmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLXNvZnQpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1nYW1lLWNvZGUgc21hbGwge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5MDA7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA2ZW07XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWdhbWUtY29kZSBzdHJvbmcge1xuICAgICAgICBmb250LXNpemU6IGNsYW1wKDEuMzVyZW0sIDZ2dywgMnJlbSk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA1ZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW9ubGluZS1hY3Rpb25zIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgbWlubWF4KDAsIDFmcikpO1xuICAgICAgICBnYXA6IDAuNjI1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1oaXN0b3J5IHtcbiAgICAgICAgZ2FwOiAwLjc1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1oaXN0b3J5X19oZWFkaW5nIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IHN0YXJ0O1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICAgIGdhcDogMC43NXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtaGlzdG9yeV9fbGlzdCB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC41cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1oaXN0b3J5X19pdGVtIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgICBnYXA6IDAuNzVyZW07XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jaGVzc2ltYWxzLWJvcmRlcik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDFyZW07XG4gICAgICAgIHBhZGRpbmc6IDAuN3JlbSAwLjhyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtcGFuZWwpO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgZm9udDogaW5oZXJpdDtcbiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtaGlzdG9yeV9faXRlbSBzcGFuIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjFyZW07XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtaGlzdG9yeV9faXRlbSBzdHJvbmcge1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wNGVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1oaXN0b3J5X19pdGVtIHNtYWxsIHtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IDAuODJyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA4MDA7XG4gICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1oaXN0b3J5X19pdGVtIGVtIHtcbiAgICAgICAgZmxleDogMCAwIGF1dG87XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpO1xuICAgICAgICBmb250LXNpemU6IDAuODZyZW07XG4gICAgICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtaG9tZS1zZXR0aW5ncyB7XG4gICAgICAgIGdhcDogMC44cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ob21lLXNldHRpbmdzX19hY3Rpb25zIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maXQsIG1pbm1heCg5cmVtLCAxZnIpKTtcbiAgICAgICAgZ2FwOiAwLjYyNXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGVuZGluZy1wbGF5ZXIge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDAuN3JlbTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4yMik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDFyZW07XG4gICAgICAgIHBhZGRpbmc6IDAuNzVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtc29mdCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBlbmRpbmctcGxheWVyIGRpdiB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC4xcmVtO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBlbmRpbmctcGxheWVyIHNtYWxsIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IDAuNzJyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA3ZW07XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBlbmRpbmctcGxheWVyIHN0cm9uZyB7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIGZvbnQtc2l6ZTogMS4wNXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWdhbWUge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuODc1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy10dXJuLWNhcmQge1xuICAgICAgICBvcmRlcjogMTtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgICBnYXA6IDAuNjI1cmVtO1xuICAgICAgICBtaW4taGVpZ2h0OiAzLjc1cmVtO1xuICAgICAgICBvdmVyZmxvdzogdmlzaWJsZTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4yNCk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDFyZW07XG4gICAgICAgIHBhZGRpbmc6IDAuNTVyZW0gMC42NXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDE1JSAxOCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4zNCksIHRyYW5zcGFyZW50IDE4JSksXG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4yKSwgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNlY29uZGFyeS1yZ2IpLCAwLjEpKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtdHVybi1jYXJkLmlzLWJsYWNrLXR1cm4ge1xuICAgICAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0taW9uLWNvbG9yLWRhcmstcmdiLCA0NywgNDIsIDU4KSwgMC4yOCk7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCAxNSUgMTglLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTIpLCB0cmFuc3BhcmVudCAxOCUpLFxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0taW9uLWNvbG9yLWRhcmstcmdiLCA0NywgNDIsIDU4KSwgMC4xNCksIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMSkpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy10dXJuLWNhcmQuaXMtZmluaXNoZWQge1xuICAgICAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0taW9uLWNvbG9yLXN1Y2Nlc3MtcmdiLCA0NSwgMjExLCAxMTEpLCAwLjQyKTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDE1JSAxOCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4zNSksIHRyYW5zcGFyZW50IDE4JSksXG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1pb24tY29sb3Itc3VjY2Vzcy1yZ2IsIDQ1LCAyMTEsIDExMSksIDAuMTgpLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjEyKSk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXR1cm4tY2FyZC5pcy1maW5pc2hlZCAuY2hlc3NpbWFscy10dXJuLWNhcmRfX2NoaXAge1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLXN1Y2Nlc3MsICMyZGQzNmYpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy10dXJuLWNhcmQuaXMteW91ci10dXJuIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjQ4KTtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICAwIDAgMCAwLjEycmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTIpLFxuICAgICAgICAgIDAgMC45NXJlbSAycmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTQpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy10dXJuLWNhcmQuaXMteW91ci10dXJuIC5jaGVzc2ltYWxzLXR1cm4tY2FyZF9fY2hpcCB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktY29udHJhc3QpO1xuICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAwLjMycmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTQpO1xuICAgICAgICBhbmltYXRpb246IGNoZXNzaW1hbHMtdHVybi1wdWxzZSAxLjQ1cyBlYXNlLWluLW91dCBpbmZpbml0ZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtdHVybi1jYXJkLmlzLXdhaXRpbmctdHVybiAuY2hlc3NpbWFscy10dXJuLWNhcmRfX2NoaXAge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICB9XG5cbiAgICAgIEBrZXlmcmFtZXMgY2hlc3NpbWFscy10dXJuLXB1bHNlIHtcbiAgICAgICAgMCUsXG4gICAgICAgIDEwMCUge1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWigwKSBzY2FsZSgxKTtcbiAgICAgICAgfVxuXG4gICAgICAgIDUwJSB7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVaKDApIHNjYWxlKDEuMDM1KTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy10dXJuLWNhcmRfX2NvcHkge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICAgIGdhcDogMC4xNXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtdHVybi1jYXJkX19jaGlwIHtcbiAgICAgICAganVzdGlmeS1zZWxmOiBzdGFydDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIHBhZGRpbmc6IDAuMnJlbSAwLjVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtcGFuZWwpO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5KTtcbiAgICAgICAgZm9udC1zaXplOiAwLjYycmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wNmVtO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy10dXJuLWNhcmQgc3Ryb25nIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgICAgZm9udC1zaXplOiBjbGFtcCgxcmVtLCAzLjV2dywgMS4yNXJlbSk7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjA4O1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICBvdmVyZmxvdy13cmFwOiBhbnl3aGVyZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtdHVybi1jYXJkIHAge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjc4cmVtO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4yMjtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGxheWVyLXN0cmlwIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleDogMCAwIGF1dG87XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogMC40NXJlbTtcbiAgICAgICAgbWluLXdpZHRoOiAxMHJlbTtcbiAgICAgICAgbWF4LXdpZHRoOiBtaW4oMTdyZW0sIDQyJSk7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNoZXNzaW1hbHMtYm9yZGVyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIHBhZGRpbmc6IDAuM3JlbSAwLjU1cmVtIDAuM3JlbSAwLjM1cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWlvbi1jb2xvci1saWdodC1yZ2IsIDI0NCwgMjQ1LCAyNDgpLCAwLjcyKTtcbiAgICAgIH1cblxuICAgICAgOmhvc3QtY29udGV4dChodG1sLmlvbi1wYWxldHRlLWRhcmspIC5jaGVzc2ltYWxzLXBsYXllci1zdHJpcCxcbiAgICAgIDpob3N0LWNvbnRleHQoW2RhdGEtdGhlbWU9J2RhcmsnXSkgLmNoZXNzaW1hbHMtcGxheWVyLXN0cmlwIHtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA2KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGxheWVyLXN0cmlwIHZhbC11c2VyLWF2YXRhciB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgICBmbGV4OiAwIDAgYXV0bztcbiAgICAgICAgbGluZS1oZWlnaHQ6IDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBsYXllci1zdHJpcF9fYXZhdGFyIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgcGxhY2UtaXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZmxleDogMCAwIDIuMjVyZW07XG4gICAgICAgIHdpZHRoOiAyLjI1cmVtO1xuICAgICAgICBoZWlnaHQ6IDIuMjVyZW07XG4gICAgICAgIGFzcGVjdC1yYXRpbzogMSAvIDE7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LWNvbnRyYXN0KTtcbiAgICAgICAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBsYXllci1zdHJpcF9fYXZhdGFyLS1pbml0aWFscyB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43OHJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgIH1cblxuICAgICAgOmhvc3QgOjpuZy1kZWVwIC5jaGVzc2ltYWxzLXBsYXllci1zdHJpcCAuY2hlc3NpbWFscy10dXJuLWF2YXRhciB7XG4gICAgICAgIHdpZHRoOiAyLjI1cmVtO1xuICAgICAgICBtaW4td2lkdGg6IDIuMjVyZW07XG4gICAgICAgIGhlaWdodDogMi4yNXJlbTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wbGF5ZXItc3RyaXBfX3RleHQge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICAgIGdhcDogMC4wNXJlbTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGxheWVyLXN0cmlwX190ZXh0IHNwYW4ge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC41OHJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDhlbTtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGxheWVyLXN0cmlwX190ZXh0IHN0cm9uZyB7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIGZvbnQtc2l6ZTogMC44MnJlbTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMDg7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wbGF5ZXItc3RyaXBfX3RleHQgc21hbGwge1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC42NnJlbTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMTtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWFyZW5hIHtcbiAgICAgICAgb3JkZXI6IDQ7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC44NzVyZW07XG4gICAgICAgIGFsaWduLWl0ZW1zOiBzdGFydDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtaG93dG8sXG4gICAgICAuY2hlc3NpbWFscy10aXAsXG4gICAgICAuY2hlc3NpbWFscy1yZXN1bHQsXG4gICAgICAuY2hlc3NpbWFscy1yZXBsYXksXG4gICAgICAuY2hlc3NpbWFscy1yZW1hdGNoLXN0YXR1cyB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC4zNzVyZW07XG4gICAgICAgIHBhZGRpbmc6IDFyZW07XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEuMjVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtc29mdCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWhvd3RvIHtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY2hlc3NpbWFscy1ib3JkZXIpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLXNvZnQpO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtaG93dG8gcCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtaG93dG9fX2FjdGlvbnMge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgICAgIGdhcDogMC42MjVyZW07XG4gICAgICB9XG5cbiAgICAgIDpob3N0LWNvbnRleHQoaHRtbC5pb24tcGFsZXR0ZS1kYXJrKSAuY2hlc3NpbWFscy1ob3d0byxcbiAgICAgIDpob3N0LWNvbnRleHQoW2RhdGEtdGhlbWU9J2RhcmsnXSkgLmNoZXNzaW1hbHMtaG93dG8ge1xuICAgICAgICBib3JkZXItY29sb3I6IHJnYmEoMjQ2LCAyMjcsIDIxMywgMC4yKTtcbiAgICAgICAgYmFja2dyb3VuZDogIzE3MjExNjtcbiAgICAgICAgY29sb3I6ICNmNmYzZTk7XG4gICAgICB9XG5cbiAgICAgIDpob3N0LWNvbnRleHQoaHRtbC5pb24tcGFsZXR0ZS1kYXJrKSAuY2hlc3NpbWFscy1ob3d0byBwLFxuICAgICAgOmhvc3QtY29udGV4dChbZGF0YS10aGVtZT0nZGFyayddKSAuY2hlc3NpbWFscy1ob3d0byBwIHtcbiAgICAgICAgY29sb3I6ICNjOGNmYjE7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJlc3VsdCB7XG4gICAgICAgIG9yZGVyOiA1O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1yZXN1bHRfX3N0YXRzIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNCwgbWlubWF4KDAsIDFmcikpO1xuICAgICAgICBnYXA6IDAuNXJlbTtcbiAgICAgICAgbWFyZ2luLXRvcDogMC4zNXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcmVzdWx0X19zdGF0cyBzcGFuIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjE1cmVtO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTYpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwLjg1cmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjU4cmVtIDAuNnJlbTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjA4KSwgdHJhbnNwYXJlbnQpLFxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtcGFuZWwpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1yZXN1bHRfX3N0YXRzIHNtYWxsIHtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IDAuNjhyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA1ZW07XG4gICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1yZXN1bHRfX3N0YXRzIGIge1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgZm9udC1zaXplOiAwLjkycmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4xMjtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJlc3VsdF9fZGV0YWlsIHtcbiAgICAgICAgbWFyZ2luOiAwLjJyZW0gMCAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib3QtcmVwb3J0IHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBhdXRvIG1pbm1heCgwLCAxZnIpO1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDAuNzVyZW07XG4gICAgICAgIG1hcmdpbi10b3A6IDAuMzVyZW07XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTgpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxcmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjc4cmVtIDAuODVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xKSwgdHJhbnNwYXJlbnQpLFxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtcGFuZWwpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib3QtcmVwb3J0ID4gc3BhbiB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIHBsYWNlLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIHdpZHRoOiAyLjVyZW07XG4gICAgICAgIGhlaWdodDogMi41cmVtO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwLjg1cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2Vjb25kYXJ5LXJnYiksIDAuMTQpO1xuICAgICAgICBmb250LXNpemU6IDEuNDVyZW07XG4gICAgICAgIGJveC1zaGFkb3c6IGluc2V0IDAgMCAwIDFweCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjE0KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm90LXJlcG9ydCBkaXYge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuMTJyZW07XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm90LXJlcG9ydCBzbWFsbCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjcycmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wNmVtO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib3QtcmVwb3J0IHN0cm9uZyB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICBmb250LXNpemU6IDFyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjE1O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib3QtcmVwb3J0IHAge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjg0cmVtO1xuICAgICAgICBmb250LXdlaWdodDogODIwO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4yODtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtb25saW5lLXN0YXR1cyB7XG4gICAgICAgIG9yZGVyOiAzO1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDEuMzVyZW0gbWlubWF4KDAsIDFmcik7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogMC44NXJlbTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xOCk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEuMXJlbTtcbiAgICAgICAgcGFkZGluZzogMC44NXJlbSAwLjk1cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMDkpLCB0cmFuc3BhcmVudCksXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1wYW5lbCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW9ubGluZS1zdGF0dXMgPiBzcGFuIHtcbiAgICAgICAganVzdGlmeS1zZWxmOiBjZW50ZXI7XG4gICAgICAgIHdpZHRoOiAwLjcycmVtO1xuICAgICAgICBoZWlnaHQ6IDAuNzJyZW07XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpO1xuICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAwLjM4cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTIpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1vbmxpbmUtc3RhdHVzLmlzLXN5bmNpbmcgPiBzcGFuIHtcbiAgICAgICAgYW5pbWF0aW9uOiBjaGVzc2ltYWxzLW9ubGluZS1wdWxzZSA5MDBtcyBlYXNlLWluLW91dCBpbmZpbml0ZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtb25saW5lLXN0YXR1cy5pcy1lcnJvciB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1pb24tY29sb3ItZGFuZ2VyLXJnYiwgMjM1LCA2OCwgOTApLCAwLjI4KTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWlvbi1jb2xvci1kYW5nZXItcmdiLCAyMzUsIDY4LCA5MCksIDAuMSksIHRyYW5zcGFyZW50KSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLXBhbmVsKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtb25saW5lLXN0YXR1cy5pcy1lcnJvciA+IHNwYW4ge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3ItZGFuZ2VyLCAjZWI0NDVhKTtcbiAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgMC4zOHJlbSByZ2JhKHZhcigtLWlvbi1jb2xvci1kYW5nZXItcmdiLCAyMzUsIDY4LCA5MCksIDAuMTIpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1vbmxpbmUtc3RhdHVzIGRpdiB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC4xMnJlbTtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1vbmxpbmUtc3RhdHVzIHN0cm9uZyB7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICBmb250LXNpemU6IDAuOTVyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1vbmxpbmUtc3RhdHVzIHAge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjg0cmVtO1xuICAgICAgICBmb250LXdlaWdodDogNzgwO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4yODtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc2VyaWVzIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjE4cmVtO1xuICAgICAgICBtYXJnaW4tdG9wOiAwLjM1cmVtO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjE4KTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMXJlbTtcbiAgICAgICAgcGFkZGluZzogMC43OHJlbSAwLjg1cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1zZWNvbmRhcnktcmdiKSwgMC4xMiksIHRyYW5zcGFyZW50KSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLXBhbmVsKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc2VyaWVzLS1jb21wYWN0IHtcbiAgICAgICAgbWFyZ2luLXRvcDogMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc2VyaWVzIHNtYWxsIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IDAuNzJyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA2ZW07XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXNlcmllcyBzdHJvbmcge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4xNTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc2VyaWVzIHNwYW4ge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44NHJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDgyMDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMjg7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJlcGxheSB7XG4gICAgICAgIG9yZGVyOiA1O1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IG1pbm1heCgwLCAxZnIpIGF1dG87XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogMC43NXJlbTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4yKTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjEpLCB0cmFuc3BhcmVudCksXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1wYW5lbCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJlcGxheSA+IGRpdjpmaXJzdC1jaGlsZCB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC4xNXJlbTtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1yZXBsYXkgc3Ryb25nIHtcbiAgICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1yZXBsYXkgc3BhbiB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjg2cmVtO1xuICAgICAgICBmb250LXdlaWdodDogODAwO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4yNTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcmVwbGF5X19hY3Rpb25zIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC13cmFwOiB3cmFwO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICAgICAgICBnYXA6IDAuNXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcmVwbGF5X19hY3Rpb25zIC5jaGVzc2ltYWxzLXNlY29uZGFyeSB7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDIuNXJlbTtcbiAgICAgICAgcGFkZGluZzogMCAwLjhyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXR1dG9yaWFsIHtcbiAgICAgICAgb3JkZXI6IDM7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogbWlubWF4KDAsIDFmcikgYXV0bztcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiAwLjc1cmVtO1xuICAgICAgICBwYWRkaW5nOiAxcmVtO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjI0KTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMS4yNXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjEzKSwgdHJhbnNwYXJlbnQpLFxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtcGFuZWwpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy10dXRvcmlhbCA+IGRpdiB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC4xOHJlbTtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy10dXRvcmlhbCBzbWFsbCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpO1xuICAgICAgICBmb250LXNpemU6IDAuNzZyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA2ZW07XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXR1dG9yaWFsIHN0cm9uZyB7XG4gICAgICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtdHV0b3JpYWwgcCB7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IDAuODhyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA3ODA7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjM1O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy10dXRvcmlhbCAuY2hlc3NpbWFscy1zZWNvbmRhcnkge1xuICAgICAgICBtaW4taGVpZ2h0OiAyLjVyZW07XG4gICAgICAgIHBhZGRpbmc6IDAgMC44NXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcmVtYXRjaC1zdGF0dXMge1xuICAgICAgICBvcmRlcjogNTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4yMik7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xMiksIHRyYW5zcGFyZW50KSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLXBhbmVsKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcmVtYXRjaC1zdGF0dXMuaXMtaW5jb21pbmcge1xuICAgICAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0taW9uLWNvbG9yLXN1Y2Nlc3MtcmdiLCA0NSwgMjExLCAxMTEpLCAwLjM4KTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWlvbi1jb2xvci1zdWNjZXNzLXJnYiwgNDUsIDIxMSwgMTExKSwgMC4xNCksIHRyYW5zcGFyZW50KSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLXBhbmVsKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcmVtYXRjaC1zdGF0dXMgc3Ryb25nIHtcbiAgICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1yZW1hdGNoLXN0YXR1cyBwIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44OHJlbTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMzU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJlbWF0Y2gtcGxheWVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjQ4KTtcbiAgICAgIH1cblxuICAgICAgOmhvc3QtY29udGV4dChodG1sLmlvbi1wYWxldHRlLWRhcmspIC5jaGVzc2ltYWxzLXJlbWF0Y2gtcGxheWVyLFxuICAgICAgOmhvc3QtY29udGV4dChbZGF0YS10aGVtZT0nZGFyayddKSAuY2hlc3NpbWFscy1yZW1hdGNoLXBsYXllciB7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNik7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJlbWF0Y2gtc3RhdHVzX19hY3Rpb25zIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcmVtYXRjaC1zdGF0dXNfX2FjdGlvbnMgLmNoZXNzaW1hbHMtc2Vjb25kYXJ5IHtcbiAgICAgICAgbWluLWhlaWdodDogMi41cmVtO1xuICAgICAgICBwYWRkaW5nOiAwIDAuOTVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWhvd3RvIGgyLFxuICAgICAgLmNoZXNzaW1hbHMtcG93ZXJzIGgyIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBmb250LXNpemU6IDEuMTVyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1jYXJkIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjg1cmVtO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2t5LXJnYiksIDAuMzQpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxLjI1cmVtO1xuICAgICAgICBwYWRkaW5nOiAxcmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1za3ktcmdiKSwgMC4xOCksIHRyYW5zcGFyZW50IDU0JSksXG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDE4MGRlZywgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjYyKSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjIpKSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLXBhbmVsKTtcbiAgICAgICAgYm94LXNoYWRvdzogMCAxcmVtIDIuMnJlbSByZ2JhKDc5LCA1OCwgMzUsIDAuMTIpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtY2FyZF9fY29weSB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC4yOHJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWNhcmRfX2NvcHkgc3BhbixcbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1zdW1tYXJ5IHNtYWxsIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtc2t5KTtcbiAgICAgICAgZm9udC1zaXplOiAwLjcycmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wOGVtO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtY2FyZCBoMiB7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgZm9udC1zaXplOiBjbGFtcCgxLjI1cmVtLCAzLjV2dywgMS45cmVtKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDEwMDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1jYXJkIHAsXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2Utc3VtbWFyeSBwIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC45NXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDc4MDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMzU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1jYXJkX19zdGF0cyB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDMsIG1pbm1heCgwLCAxZnIpKTtcbiAgICAgICAgZ2FwOiAwLjVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1yaXZhbCB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogYXV0byBtaW5tYXgoMCwgMWZyKTtcbiAgICAgICAgZ2FwOiAwLjdyZW07XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTgpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxcmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjdyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41NCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1yaXZhbCA+IHNwYW4ge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgICAgICB3aWR0aDogMi42NXJlbTtcbiAgICAgICAgaGVpZ2h0OiAyLjY1cmVtO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xMik7XG4gICAgICAgIGZvbnQtc2l6ZTogMS40NXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXJpdmFsIGRpdiB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC4xNHJlbTtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2Utcml2YWwgc21hbGwsXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtaGlzdG9yeSBzbWFsbCxcbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1zdW1tYXJ5X19zdGF0cyBzbWFsbCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjY2cmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTAwO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2Utcml2YWwgc3Ryb25nIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDEwMDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1yaXZhbCBwIHtcbiAgICAgICAgZm9udC1zaXplOiAwLjg0cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2Utcml2YWwtLW5leHQge1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjA4KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWNhcmRfX3N0YXRzIHNwYW4ge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuMTZyZW07XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTYpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwLjk1cmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjU1cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNTIpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtY2FyZF9fc3RhdHMgc21hbGwge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC42NnJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDkwMDtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWNhcmRfX3N0YXRzIHN0cm9uZyB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICBmb250LXNpemU6IDEuMXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDEwMDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1jYXJkX19hY3Rpb25zIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjU1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtcGF0aCB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICAgICAgZ2FwOiAwLjRyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1wYXRoIHNwYW4ge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgICAgICB3aWR0aDogMi4xNXJlbTtcbiAgICAgICAgaGVpZ2h0OiAyLjE1cmVtO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjE4KTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC42Mik7XG4gICAgICAgIGZvbnQtc2l6ZTogMS4wOHJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXBhdGggc3Bhbi5pcy1jbGVhcmVkIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLWlvbi1jb2xvci1zdWNjZXNzLXJnYiwgNDUsIDIxMSwgMTExKSwgMC4zNCk7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0taW9uLWNvbG9yLXN1Y2Nlc3MtcmdiLCA0NSwgMjExLCAxMTEpLCAwLjE2KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXBhdGggc3Bhbi5pcy1jdXJyZW50IHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2t5LXJnYiksIDAuNDgpO1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2t5LXJnYiksIDAuMTgpO1xuICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAycHggcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNreS1yZ2IpLCAwLjEyKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWhpc3Rvcnkge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuMzVyZW07XG4gICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjEyKTtcbiAgICAgICAgcGFkZGluZy10b3A6IDAuMnJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWhpc3Rvcnkgc3BhbiB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICAgICAgZ2FwOiAwLjM1cmVtO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44MnJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDgyMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWhpc3RvcnkgYiB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICBmb250LXdlaWdodDogMTAwMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXN1bW1hcnkge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuNDVyZW07XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1za3ktcmdiKSwgMC4yNCk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDFyZW07XG4gICAgICAgIHBhZGRpbmc6IDAuOHJlbTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2t5LXJnYiksIDAuMTIpLCB0cmFuc3BhcmVudCksXG4gICAgICAgICAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjQyKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXN1bW1hcnkgc3Ryb25nIHtcbiAgICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgICAgICBmb250LXdlaWdodDogMTAwMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXN1bW1hcnlfX3N0YXRzIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMywgbWlubWF4KDAsIDFmcikpO1xuICAgICAgICBnYXA6IDAuNDVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1yZWNvcmQge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDAuNDVyZW07XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1za3ktcmdiKSwgMC4zNCk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBwYWRkaW5nOiAwLjQ1cmVtIDAuNjVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tY2hlc3NpbWFscy1za3ktcmdiKSwgMC4xNCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtcmVjb3JkIHNwYW4ge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgICAgICB3aWR0aDogMS40NXJlbTtcbiAgICAgICAgaGVpZ2h0OiAxLjQ1cmVtO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1za3kpO1xuICAgICAgICBjb2xvcjogI2ZmZmFmMDtcbiAgICAgICAgZm9udC1zaXplOiAwLjgycmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtcmVjb3JkIHN0cm9uZyB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC45cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2Utc3VtbWFyeV9fc3RhdHMgc3BhbiB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC4xcmVtO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjEyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMC44cmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjQ1cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNDQpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2Utc3VtbWFyeV9fc3RhdHMgYiB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICBmb250LXNpemU6IDFyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiAxMDAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy10aXAgcCxcbiAgICAgIC5jaGVzc2ltYWxzLXBvd2VycyBwIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1sZWFybi1tb3JlIHtcbiAgICAgICAganVzdGlmeS1zZWxmOiBzdGFydDtcbiAgICAgICAgbWluLWhlaWdodDogMi43NXJlbTtcbiAgICAgICAgYm9yZGVyOiAwO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgcGFkZGluZzogMCAxcmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LWNvbnRyYXN0KTtcbiAgICAgICAgZm9udDogaW5oZXJpdDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgYm94LXNoYWRvdzogMCAwLjc1cmVtIDEuNnJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjI4KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc2l6ZSxcbiAgICAgIC5jaGVzc2ltYWxzLW1vZGUsXG4gICAgICAuY2hlc3NpbWFscy1zdGF0dXMge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCBtaW5tYXgoMCwgMWZyKSk7XG4gICAgICAgIGdhcDogMC42MjVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXN0YXR1cyB7XG4gICAgICAgIG9yZGVyOiAzO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgzLCBtaW5tYXgoMCwgMWZyKSk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXNpemUgYnV0dG9uLFxuICAgICAgLmNoZXNzaW1hbHMtbW9kZSBidXR0b24sXG4gICAgICAuY2hlc3NpbWFscy1zdGF0dXMgZGl2IHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjJyZW07XG4gICAgICAgIGFsaWduLWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgICBtaW4taGVpZ2h0OiAzLjg3NXJlbTtcbiAgICAgICAgcGFkZGluZzogMC41NXJlbSAwLjY1cmVtO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jaGVzc2ltYWxzLWJvcmRlcik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDFyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtcGFuZWwpO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgZm9udDogaW5oZXJpdDtcbiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc2l6ZSBidXR0b24uaXMtc2VsZWN0ZWQge1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeSk7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDJweCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjE2KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtbW9kZSBidXR0b24uaXMtc2VsZWN0ZWQge1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeSk7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xMyksIHRyYW5zcGFyZW50KSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLXBhbmVsKTtcbiAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgMnB4IHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTYpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1kaWZmaWN1bHR5IHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC13cmFwOiB3cmFwO1xuICAgICAgICBnYXA6IDAuNTVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWRpZmZpY3VsdHkgYnV0dG9uIHtcbiAgICAgICAgbWluLWhlaWdodDogMi43NXJlbTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY2hlc3NpbWFscy1ib3JkZXIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgcGFkZGluZzogMCAxcmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLXBhbmVsKTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIGZvbnQ6IGluaGVyaXQ7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWRpZmZpY3VsdHkgYnV0dG9uLmlzLXNlbGVjdGVkIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpO1xuICAgICAgICBjb2xvcjogI2ZmZjtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm90cyB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZml0LCBtaW5tYXgoOS41cmVtLCAxZnIpKTtcbiAgICAgICAgZ2FwOiAwLjYyNXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm90cyBidXR0b24ge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IGF1dG8gMWZyO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWFyZWFzOlxuICAgICAgICAgICdhdmF0YXIgdGl0bGUnXG4gICAgICAgICAgJ2F2YXRhciBib2R5J1xuICAgICAgICAgICdhdmF0YXIgdGVuZGVuY3knO1xuICAgICAgICBjb2x1bW4tZ2FwOiAwLjU1cmVtO1xuICAgICAgICByb3ctZ2FwOiAwLjEycmVtO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDQuNzVyZW07XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNoZXNzaW1hbHMtYm9yZGVyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMXJlbTtcbiAgICAgICAgcGFkZGluZzogMC42NXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1wYW5lbCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICBmb250OiBpbmhlcml0O1xuICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib3RzIGJ1dHRvbiA+IHNwYW4ge1xuICAgICAgICBncmlkLWFyZWE6IGF2YXRhcjtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgcGxhY2UtaXRlbXM6IGNlbnRlcjtcbiAgICAgICAgd2lkdGg6IDIuMXJlbTtcbiAgICAgICAgaGVpZ2h0OiAyLjFyZW07XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xMik7XG4gICAgICAgIGZvbnQtc2l6ZTogMS4ycmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib3RzIGJ1dHRvbiBzdHJvbmcge1xuICAgICAgICBncmlkLWFyZWE6IHRpdGxlO1xuICAgICAgICBhbGlnbi1zZWxmOiBlbmQ7XG4gICAgICAgIGZvbnQtc2l6ZTogMC45NXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm90cyBidXR0b24gc21hbGwge1xuICAgICAgICBncmlkLWFyZWE6IGJvZHk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjc1cmVtO1xuICAgICAgICBmb250LXdlaWdodDogNzUwO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4yNTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm90cyBidXR0b24gcCB7XG4gICAgICAgIGdyaWQtYXJlYTogdGVuZGVuY3k7XG4gICAgICAgIG1hcmdpbjogMC4xMnJlbSAwIDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjcycmVtO1xuICAgICAgICBmb250LXdlaWdodDogODIwO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4yNDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm90cyBidXR0b24uaXMtc2VsZWN0ZWQge1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeSk7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xMyksIHRyYW5zcGFyZW50KSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLXBhbmVsKTtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICAwIDAgMCAycHggcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xNiksXG4gICAgICAgICAgMCAwLjc1cmVtIDEuNXJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjEpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1zaXplIHN0cm9uZyxcbiAgICAgIC5jaGVzc2ltYWxzLW1vZGUgc3Ryb25nLFxuICAgICAgLmNoZXNzaW1hbHMtc3RhdHVzIHN0cm9uZyxcbiAgICAgIC5jaGVzc2ltYWxzLXJlc3VsdCBzdHJvbmcsXG4gICAgICAuY2hlc3NpbWFscy1yZW1hdGNoLXN0YXR1cyBzdHJvbmcsXG4gICAgICAuY2hlc3NpbWFscy10aXAgc3Ryb25nIHtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc3RhdHVzIHN0cm9uZyB7XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgICAgZm9udC1zaXplOiBjbGFtcCgwLjk1cmVtLCAyLjV2dywgMS4ycmVtKTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMDg7XG4gICAgICAgIG92ZXJmbG93LXdyYXA6IGFueXdoZXJlO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm9ybWFsO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1zaXplIHNtYWxsLFxuICAgICAgLmNoZXNzaW1hbHMtbW9kZSBzbWFsbCxcbiAgICAgIC5jaGVzc2ltYWxzLXN0YXR1cyBzbWFsbCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjc4cmVtO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4xMjtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm9hcmQtd3JhcCB7XG4gICAgICAgIC0tY2hlc3NpbWFscy1ib2FyZC1yYWRpdXM6IG1pbigwLjg1cmVtLCAxNHB4KTtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgICAgICBvdmVyZmxvdy14OiBhdXRvO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgcGFkZGluZzogMC4yNXJlbSAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC13cmFwLmlzLW9yaWVudGluZyAuY2hlc3NpbWFscy1ib2FyZC1mcmFtZSB7XG4gICAgICAgIGFuaW1hdGlvbjogY2hlc3NpbWFscy1vcmllbnQtYm9hcmQgMzIwbXMgZWFzZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm9hcmQtd3JhcC5pcy1maW5pc2hlZCB7XG4gICAgICAgIG92ZXJmbG93LXg6IHZpc2libGU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvYXJkLWZyYW1lIHtcbiAgICAgICAgZmxleDogMCAxIDU4cmVtO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBtYXgtd2lkdGg6IDU4cmVtO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1jaGVzc2ltYWxzLWJvYXJkLXJhZGl1cyk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvYXJkIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCh2YXIoLS1ib2FyZC1zaXplKSwgbWlubWF4KDAsIDFmcikpO1xuICAgICAgICBncmlkLXRlbXBsYXRlLXJvd3M6IHJlcGVhdCh2YXIoLS1ib2FyZC1zaXplKSwgbWlubWF4KDAsIDFmcikpO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBhc3BlY3QtcmF0aW86IDEgLyAxO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBpc29sYXRpb246IGlzb2xhdGU7XG4gICAgICAgIGNvbnRhaW46IHBhaW50O1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jaGVzc2ltYWxzLWJvcmRlcik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLWNoZXNzaW1hbHMtYm9hcmQtcmFkaXVzKTtcbiAgICAgICAgY2xpcC1wYXRoOiBpbnNldCgwIHJvdW5kIHZhcigtLWNoZXNzaW1hbHMtYm9hcmQtcmFkaXVzKSk7XG4gICAgICAgIC13ZWJraXQtbWFzay1pbWFnZTogLXdlYmtpdC1yYWRpYWwtZ3JhZGllbnQod2hpdGUsIGJsYWNrKTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoZWxsaXBzZSBhdCAxNiUgMTglLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMzQpLCB0cmFuc3BhcmVudCAxOCUpLFxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChlbGxpcHNlIGF0IDgyJSA3OCUsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMSksIHRyYW5zcGFyZW50IDIyJSksXG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGVsbGlwc2UgYXQgMzIlIDY4JSwgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXN0b25lLXJnYiksIDAuMDUpLCB0cmFuc3BhcmVudCAzMCUpLFxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChlbGxpcHNlIGF0IDY2JSAzNCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wOCksIHRyYW5zcGFyZW50IDI0JSksXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1ib3JkZXIpO1xuICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgIGluc2V0IDAgMCAwIDFweCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSksXG4gICAgICAgICAgMCAwLjg1cmVtIDIuMXJlbSB2YXIoLS1jaGVzc2ltYWxzLWJvYXJkLXNoYWRvdyk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvYXJkLXdyYXAuaXMtc3luY2luZyAuY2hlc3NpbWFscy1ib2FyZCB7XG4gICAgICAgIGN1cnNvcjogd2FpdDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbC1jb29yZGluYXRlIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB6LWluZGV4OiA1O1xuICAgICAgICBjb2xvcjogY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpIDc4JSwgdmFyKC0tY2hlc3NpbWFscy10ZXh0KSk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC42OHJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDJlbTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbC1jb29yZGluYXRlLS1yYW5rIHtcbiAgICAgICAgdG9wOiAwLjJyZW07XG4gICAgICAgIGxlZnQ6IDAuMjRyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwtY29vcmRpbmF0ZS0tZmlsZSB7XG4gICAgICAgIHJpZ2h0OiAwLjI0cmVtO1xuICAgICAgICBib3R0b206IDAuMThyZW07XG4gICAgICB9XG5cbiAgICAgIEBrZXlmcmFtZXMgY2hlc3NpbWFscy1vcmllbnQtYm9hcmQge1xuICAgICAgICAwJSB7XG4gICAgICAgICAgb3BhY2l0eTogMC43MjtcbiAgICAgICAgICBmaWx0ZXI6IGJsdXIoMC4wNnJlbSk7XG4gICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgwLjk4NSk7XG4gICAgICAgIH1cblxuICAgICAgICA1MiUge1xuICAgICAgICAgIG9wYWNpdHk6IDAuOTI7XG4gICAgICAgICAgZmlsdGVyOiBibHVyKDApO1xuICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMS4wMTIpO1xuICAgICAgICB9XG5cbiAgICAgICAgMTAwJSB7XG4gICAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgICBmaWx0ZXI6IGJsdXIoMCk7XG4gICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZW50ZXItbGluZSB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiA1MCU7XG4gICAgICAgIGxlZnQ6IDA7XG4gICAgICAgIHJpZ2h0OiAwO1xuICAgICAgICB6LWluZGV4OiAyO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgYm9yZGVyLXRvcDogMC4wOHJlbSBkYXNoZWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC41Nik7XG4gICAgICAgIGZpbHRlcjogZHJvcC1zaGFkb3coMCAwIDAuMjRyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4yNikpO1xuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcG93ZXItdHJhaWwge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGluc2V0OiAwO1xuICAgICAgICB6LWluZGV4OiA1O1xuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgICAgLS10cmFpbC1jb2xvcjogcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDAuODgpO1xuICAgICAgICAtLXRyYWlsLWdsb3c6IHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1yZ2IpLCAwLjQ4KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcG93ZXItdHJhaWwuaXMtY2FwdHVyZSB7XG4gICAgICAgIC0tdHJhaWwtY29sb3I6IHJnYmEodmFyKC0tY2hlc3NpbWFscy1jYXB0dXJlLXJnYiksIDAuODYpO1xuICAgICAgICAtLXRyYWlsLWdsb3c6IHJnYmEodmFyKC0tY2hlc3NpbWFscy1jYXB0dXJlLXJnYiksIDAuNDYpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wb3dlci10cmFpbC5lZmZlY3QtZWFnbGUge1xuICAgICAgICAtLXRyYWlsLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOTIpO1xuICAgICAgICAtLXRyYWlsLWdsb3c6IHJnYmEoMTIwLCAyMTAsIDI1NSwgMC41NCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBvd2VyLXRyYWlsLmVmZmVjdC1idWxsIHtcbiAgICAgICAgLS10cmFpbC1jb2xvcjogcmdiYSgxODgsIDEzMSwgNzYsIDAuODYpO1xuICAgICAgICAtLXRyYWlsLWdsb3c6IHJnYmEoMTg4LCAxMzEsIDc2LCAwLjM2KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcG93ZXItdHJhaWwuZWZmZWN0LWthbmdhcm9vIHtcbiAgICAgICAgLS10cmFpbC1jb2xvcjogcmdiYSgxNzQsIDEyNCwgMjU1LCAwLjg2KTtcbiAgICAgICAgLS10cmFpbC1nbG93OiByZ2JhKDE3NCwgMTI0LCAyNTUsIDAuNDIpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wb3dlci10cmFpbC5lZmZlY3QtbGlvbiB7XG4gICAgICAgIC0tdHJhaWwtY29sb3I6IHJnYmEoMjU1LCAyMjEsIDEyMCwgMC44OCk7XG4gICAgICAgIC0tdHJhaWwtZ2xvdzogcmdiYSgyNTUsIDE5MCwgNTYsIDAuNDIpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wb3dlci10cmFpbCA+IHNwYW4ge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogdmFyKC0tdHJhaWwteSk7XG4gICAgICAgIGxlZnQ6IHZhcigtLXRyYWlsLXgpO1xuICAgICAgICB3aWR0aDogdmFyKC0tdHJhaWwtbGVuZ3RoKTtcbiAgICAgICAgaGVpZ2h0OiAwLjQ1cmVtO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDkwZGVnLCB0cmFuc3BhcmVudCwgdmFyKC0tdHJhaWwtY29sb3IpIDQyJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjkyKSk7XG4gICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgMCAwIDAuNzVyZW0gdmFyKC0tdHJhaWwtZ2xvdyksXG4gICAgICAgICAgMCAwIDEuNDVyZW0gdmFyKC0tdHJhaWwtZ2xvdyk7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKSByb3RhdGUodmFyKC0tdHJhaWwtYW5nbGUpKSBzY2FsZVgoMCk7XG4gICAgICAgIHRyYW5zZm9ybS1vcmlnaW46IDAgNTAlO1xuICAgICAgICBhbmltYXRpb246IGNoZXNzaW1hbHMtcG93ZXItdHJhaWwgNzIwbXMgZWFzZS1vdXQgYm90aDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcG93ZXItdHJhaWwuZWZmZWN0LWVhZ2xlID4gc3BhbiB7XG4gICAgICAgIGhlaWdodDogMC4yOHJlbTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoOTBkZWcsIHRyYW5zcGFyZW50LCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOTUpIDQ0JSwgcmdiYSgxMjAsIDIxMCwgMjU1LCAwLjU4KSksXG4gICAgICAgICAgcmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCg5MGRlZywgdHJhbnNwYXJlbnQgMCAwLjdyZW0sIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC42NikgMC43cmVtIDAuOTJyZW0pO1xuICAgICAgICBhbmltYXRpb24tbmFtZTogY2hlc3NpbWFscy1lYWdsZS10cmFpbDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcG93ZXItdHJhaWwuZWZmZWN0LWJ1bGwgPiBzcGFuIHtcbiAgICAgICAgaGVpZ2h0OiAwLjcycmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQoOTBkZWcsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC40MikgMCAwLjE4cmVtLCB0cmFuc3BhcmVudCAwLjE4cmVtIDAuNDJyZW0pLFxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCg5MGRlZywgdHJhbnNwYXJlbnQsIHZhcigtLXRyYWlsLWNvbG9yKSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjg2KSk7XG4gICAgICAgIGFuaW1hdGlvbi1uYW1lOiBjaGVzc2ltYWxzLWJ1bGwtdHJhaWw7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBvd2VyLXRyYWlsLmVmZmVjdC1rYW5nYXJvbyA+IHNwYW4ge1xuICAgICAgICBoZWlnaHQ6IDFyZW07XG4gICAgICAgIGJvcmRlci10b3A6IDAuMTZyZW0gZGFzaGVkIHZhcigtLXRyYWlsLWNvbG9yKTtcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgICAgIGZpbHRlcjogZHJvcC1zaGFkb3coMCAwIDAuOHJlbSB2YXIoLS10cmFpbC1nbG93KSk7XG4gICAgICAgIGFuaW1hdGlvbi1uYW1lOiBjaGVzc2ltYWxzLWthbmdhcm9vLXRyYWlsO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wb3dlci10cmFpbC5lZmZlY3QtbGlvbiA+IHNwYW4ge1xuICAgICAgICBoZWlnaHQ6IDAuNjJyZW07XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDkwZGVnLCB0cmFuc3BhcmVudCwgdmFyKC0tdHJhaWwtY29sb3IpLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuODIpKSxcbiAgICAgICAgICByZXBlYXRpbmctbGluZWFyLWdyYWRpZW50KDExNWRlZywgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjU1KSAwIDAuMTJyZW0sIHRyYW5zcGFyZW50IDAuMTJyZW0gMC4zNHJlbSk7XG4gICAgICAgIGFuaW1hdGlvbi1uYW1lOiBjaGVzc2ltYWxzLWxpb24tdHJhaWw7XG4gICAgICB9XG5cbiAgICAgIEBrZXlmcmFtZXMgY2hlc3NpbWFscy1wb3dlci10cmFpbCB7XG4gICAgICAgIDAlIHtcbiAgICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKSByb3RhdGUodmFyKC0tdHJhaWwtYW5nbGUpKSBzY2FsZVgoMCk7XG4gICAgICAgIH1cblxuICAgICAgICAyOCUge1xuICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpIHJvdGF0ZSh2YXIoLS10cmFpbC1hbmdsZSkpIHNjYWxlWCgwLjcyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIDEwMCUge1xuICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpIHJvdGF0ZSh2YXIoLS10cmFpbC1hbmdsZSkpIHNjYWxlWCgxKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIGNoZXNzaW1hbHMtZWFnbGUtdHJhaWwge1xuICAgICAgICAwJSB7XG4gICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgcm90YXRlKHZhcigtLXRyYWlsLWFuZ2xlKSkgc2NhbGVYKDApIHNrZXdYKC0xMGRlZyk7XG4gICAgICAgIH1cblxuICAgICAgICAzMCUge1xuICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpIHJvdGF0ZSh2YXIoLS10cmFpbC1hbmdsZSkpIHNjYWxlWCgwLjgyKSBza2V3WCgtMTBkZWcpO1xuICAgICAgICB9XG5cbiAgICAgICAgMTAwJSB7XG4gICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgcm90YXRlKHZhcigtLXRyYWlsLWFuZ2xlKSkgc2NhbGVYKDEuMDUpIHNrZXdYKC0xMGRlZyk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBjaGVzc2ltYWxzLWJ1bGwtdHJhaWwge1xuICAgICAgICAwJSB7XG4gICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgcm90YXRlKHZhcigtLXRyYWlsLWFuZ2xlKSkgc2NhbGVYKDApIHNjYWxlWSgxKTtcbiAgICAgICAgfVxuXG4gICAgICAgIDM4JSB7XG4gICAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgcm90YXRlKHZhcigtLXRyYWlsLWFuZ2xlKSkgc2NhbGVYKDAuNykgc2NhbGVZKDEuMTgpO1xuICAgICAgICB9XG5cbiAgICAgICAgMTAwJSB7XG4gICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgcm90YXRlKHZhcigtLXRyYWlsLWFuZ2xlKSkgc2NhbGVYKDEpIHNjYWxlWSgwLjgyKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIGNoZXNzaW1hbHMta2FuZ2Fyb28tdHJhaWwge1xuICAgICAgICAwJSB7XG4gICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTAuNHJlbSkgcm90YXRlKHZhcigtLXRyYWlsLWFuZ2xlKSkgc2NhbGVYKDApO1xuICAgICAgICB9XG5cbiAgICAgICAgMzQlIHtcbiAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMS4ycmVtKSByb3RhdGUodmFyKC0tdHJhaWwtYW5nbGUpKSBzY2FsZVgoMC42Mik7XG4gICAgICAgIH1cblxuICAgICAgICAxMDAlIHtcbiAgICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKSByb3RhdGUodmFyKC0tdHJhaWwtYW5nbGUpKSBzY2FsZVgoMSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBjaGVzc2ltYWxzLWxpb24tdHJhaWwge1xuICAgICAgICAwJSB7XG4gICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgICBmaWx0ZXI6IHNhdHVyYXRlKDEpO1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKSByb3RhdGUodmFyKC0tdHJhaWwtYW5nbGUpKSBzY2FsZVgoMCk7XG4gICAgICAgIH1cblxuICAgICAgICAzNiUge1xuICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgICAgZmlsdGVyOiBzYXR1cmF0ZSgxLjQpO1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKSByb3RhdGUodmFyKC0tdHJhaWwtYW5nbGUpKSBzY2FsZVgoMC43Nik7XG4gICAgICAgIH1cblxuICAgICAgICAxMDAlIHtcbiAgICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICAgIGZpbHRlcjogc2F0dXJhdGUoMS4xKTtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgcm90YXRlKHZhcigtLXRyYWlsLWFuZ2xlKSkgc2NhbGVYKDEpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvYXJkLW92ZXJsYXkge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGluc2V0OiAwO1xuICAgICAgICB6LWluZGV4OiA4O1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBwbGFjZS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIGdhcDogMC41cmVtO1xuICAgICAgICBwYWRkaW5nOiAxLjI1cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgNTAlIDM0JSwgcmdiYSgyNTUsIDIyNiwgMTI5LCAwLjM0KSwgdHJhbnNwYXJlbnQgMjQlKSxcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDUwJSA1MiUsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMzQpLCB0cmFuc3BhcmVudCA0MiUpLFxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEoMjAsIDEyLCAyMiwgMC44OCksIHJnYmEoOCwgMTgsIDEzLCAwLjc4KSk7XG4gICAgICAgIGNvbG9yOiAjZmZmO1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigycHgpO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5LmlzLWRlZmVhdCB7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCA1MCUgMzQlLCByZ2JhKDE0MywgMTY4LCAyMDYsIDAuMjYpLCB0cmFuc3BhcmVudCAyNCUpLFxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgNTAlIDUyJSwgcmdiYSg3MiwgODYsIDExNSwgMC40MiksIHRyYW5zcGFyZW50IDQyJSksXG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSg5LCAxMiwgMjAsIDAuOSksIHJnYmEoMjgsIDMwLCA0MywgMC44KSk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvYXJkLW92ZXJsYXk6OmJlZm9yZSB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgaW5zZXQ6IDA7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCAyMCUgMzAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNTgpIDAgMC4wOHJlbSwgdHJhbnNwYXJlbnQgMC4xcmVtKSxcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDc1JSAyNSUsIHJnYmEoMjU1LCAyMjYsIDEyOSwgMC43KSAwIDAuMXJlbSwgdHJhbnNwYXJlbnQgMC4xMnJlbSksXG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCA2OCUgNzIlLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2IpLCAwLjU0KSAwIDAuMDhyZW0sIHRyYW5zcGFyZW50IDAuMXJlbSksXG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCAzNSUgNzglLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNDgpIDAgMC4wN3JlbSwgdHJhbnNwYXJlbnQgMC4wOXJlbSksXG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCA4NCUgNjYlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMzgpIDAgMC4wNnJlbSwgdHJhbnNwYXJlbnQgMC4wOHJlbSksXG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCAxNCUgNjQlLCByZ2JhKDI1NSwgMjI2LCAxMjksIDAuNDgpIDAgMC4wN3JlbSwgdHJhbnNwYXJlbnQgMC4wOXJlbSk7XG4gICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICBvcGFjaXR5OiAwLjcyO1xuICAgICAgICBhbmltYXRpb246IGNoZXNzaW1hbHMtdmljdG9yeS1zcGFya3MgMS41cyBlYXNlLWluLW91dCBpbmZpbml0ZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm9hcmQtb3ZlcmxheV9fcmF5cyB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgaW5zZXQ6IC0xOCU7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgY29uaWMtZ3JhZGllbnQoXG4gICAgICAgICAgICBmcm9tIDhkZWcsXG4gICAgICAgICAgICB0cmFuc3BhcmVudCAwIDdkZWcsXG4gICAgICAgICAgICByZ2JhKDI1NSwgMjI2LCAxMjksIDAuMTYpIDdkZWcgMTFkZWcsXG4gICAgICAgICAgICB0cmFuc3BhcmVudCAxMWRlZyAyMmRlZ1xuICAgICAgICAgICk7XG4gICAgICAgIG9wYWNpdHk6IDAuODU7XG4gICAgICAgIGFuaW1hdGlvbjogY2hlc3NpbWFscy1maW5hbGUtcmF5cyA4cyBsaW5lYXIgaW5maW5pdGU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvYXJkLW92ZXJsYXkuaXMtZGVmZWF0IC5jaGVzc2ltYWxzLWJvYXJkLW92ZXJsYXlfX3JheXMge1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIGNvbmljLWdyYWRpZW50KFxuICAgICAgICAgICAgZnJvbSA4ZGVnLFxuICAgICAgICAgICAgdHJhbnNwYXJlbnQgMCA4ZGVnLFxuICAgICAgICAgICAgcmdiYSgxODAsIDIwNCwgMjQwLCAwLjEpIDhkZWcgMTJkZWcsXG4gICAgICAgICAgICB0cmFuc3BhcmVudCAxMmRlZyAyNGRlZ1xuICAgICAgICAgICk7XG4gICAgICAgIGFuaW1hdGlvbi1kdXJhdGlvbjogMTJzO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5X19yaWJib24ge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogLTIwJTtcbiAgICAgICAgd2lkdGg6IDAuNDJyZW07XG4gICAgICAgIGhlaWdodDogNTQlO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgdHJhbnNwYXJlbnQsIHJnYmEoMjU1LCAyMjYsIDEyOSwgMC43MiksIHRyYW5zcGFyZW50KTtcbiAgICAgICAgb3BhY2l0eTogMC43O1xuICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSh2YXIoLS1yaWJib24tYW5nbGUsIDEyZGVnKSk7XG4gICAgICAgIGFuaW1hdGlvbjogY2hlc3NpbWFscy1maW5hbGUtcmliYm9uIDIuNXMgZWFzZS1pbi1vdXQgaW5maW5pdGU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvYXJkLW92ZXJsYXkuaXMtZGVmZWF0IC5jaGVzc2ltYWxzLWJvYXJkLW92ZXJsYXlfX3JpYmJvbiB7XG4gICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sIHRyYW5zcGFyZW50LCByZ2JhKDE4MCwgMjA0LCAyNDAsIDAuNDIpLCB0cmFuc3BhcmVudCk7XG4gICAgICAgIG9wYWNpdHk6IDAuNDg7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvYXJkLW92ZXJsYXlfX3JpYmJvbi5yaWJib24tYSB7XG4gICAgICAgIGxlZnQ6IDE4JTtcbiAgICAgICAgLS1yaWJib24tYW5nbGU6IC0xOGRlZztcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm9hcmQtb3ZlcmxheV9fcmliYm9uLnJpYmJvbi1iIHtcbiAgICAgICAgbGVmdDogNTAlO1xuICAgICAgICAtLXJpYmJvbi1hbmdsZTogOGRlZztcbiAgICAgICAgYW5pbWF0aW9uLWRlbGF5OiAzMjBtcztcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm9hcmQtb3ZlcmxheV9fcmliYm9uLnJpYmJvbi1jIHtcbiAgICAgICAgcmlnaHQ6IDE4JTtcbiAgICAgICAgLS1yaWJib24tYW5nbGU6IDIwZGVnO1xuICAgICAgICBhbmltYXRpb24tZGVsYXk6IDY0MG1zO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5ID4gKiB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgei1pbmRleDogMTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm9hcmQtb3ZlcmxheSBzcGFuIHtcbiAgICAgICAganVzdGlmeS1zZWxmOiBjZW50ZXI7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBwYWRkaW5nOiAwLjMycmVtIDAuN3JlbTtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KTtcbiAgICAgICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45KTtcbiAgICAgICAgZm9udC1zaXplOiAwLjc2cmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wOGVtO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5IHN0cm9uZyB7XG4gICAgICAgIGZvbnQtc2l6ZTogY2xhbXAoMS42NXJlbSwgOHZ3LCAzcmVtKTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIHRleHQtc2hhZG93OiAwIDAgMS4yNXJlbSByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMjYpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5IGVtIHtcbiAgICAgICAganVzdGlmeS1zZWxmOiBjZW50ZXI7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIHBsYWNlLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIHdpZHRoOiBjbGFtcCgzcmVtLCAxNHZ3LCA0LjZyZW0pO1xuICAgICAgICBoZWlnaHQ6IGNsYW1wKDNyZW0sIDE0dncsIDQuNnJlbSk7XG4gICAgICAgIGJvcmRlcjogMC4xNnJlbSBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNjIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCAzNSUgMjUlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNzIpLCB0cmFuc3BhcmVudCAxOCUpLFxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICNmZmUyODEsICNiOTg0MzYpO1xuICAgICAgICBjb2xvcjogIzJkMjQxMjtcbiAgICAgICAgZm9udC1zaXplOiBjbGFtcCgxLjFyZW0sIDV2dywgMS42NXJlbSk7XG4gICAgICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICAwIDAgMCAwLjQ1cmVtIHJnYmEoMjU1LCAyMjYsIDEyOSwgMC4xMiksXG4gICAgICAgICAgMCAxcmVtIDJyZW0gcmdiYSgwLCAwLCAwLCAwLjI2KTtcbiAgICAgICAgYW5pbWF0aW9uOiBjaGVzc2ltYWxzLWZpbmFsZS1tZWRhbCAxLjhzIGVhc2UtaW4tb3V0IGluZmluaXRlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5LmlzLWRlZmVhdCBlbSB7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCAzNSUgMjUlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNDgpLCB0cmFuc3BhcmVudCAxOCUpLFxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICNkOWUyZWYsICM2OTc1OGUpO1xuICAgICAgICBjb2xvcjogIzE4MjAzMjtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICAwIDAgMCAwLjQ1cmVtIHJnYmEoMTgwLCAyMDQsIDI0MCwgMC4xKSxcbiAgICAgICAgICAwIDFyZW0gMnJlbSByZ2JhKDAsIDAsIDAsIDAuMzIpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5IGVtLmhhcy1hdmF0YXIge1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBiYWNrZ3JvdW5kOiAjZmZmZmZmO1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5IGVtLmhhcy1hdmF0YXIgaW1nIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIG9iamVjdC1maXQ6IGNvdmVyO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5IGIge1xuICAgICAgICBqdXN0aWZ5LXNlbGY6IGNlbnRlcjtcbiAgICAgICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44KTtcbiAgICAgICAgZm9udC1zaXplOiAwLjhyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA4ZW07XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvYXJkLW92ZXJsYXkgc21hbGwge1xuICAgICAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjgyKTtcbiAgICAgICAgZm9udC1zaXplOiBjbGFtcCgwLjlyZW0sIDN2dywgMS4xcmVtKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDgwMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm9hcmQtb3ZlcmxheV9fc3RhdHMge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg0LCBtaW5tYXgoMCwgMWZyKSk7XG4gICAgICAgIGdhcDogMC4zNXJlbTtcbiAgICAgICAgd2lkdGg6IG1pbigyNnJlbSwgOTIlKTtcbiAgICAgICAgbWFyZ2luOiAwLjJyZW0gYXV0byAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5X19zdGF0cyBkaXYge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuMDhyZW07XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE4KTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMC43NXJlbTtcbiAgICAgICAgcGFkZGluZzogMC40MnJlbSAwLjQ2cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7XG4gICAgICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigzcHgpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5X19zdGF0cyBkdCxcbiAgICAgIC5jaGVzc2ltYWxzLWJvYXJkLW92ZXJsYXlfX3N0YXRzIGRkIHtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm9hcmQtb3ZlcmxheV9fc3RhdHMgZHQge1xuICAgICAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjY4KTtcbiAgICAgICAgZm9udC1zaXplOiBjbGFtcCgwLjUycmVtLCAyLjF2dywgMC42NnJlbSk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA0ZW07XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvYXJkLW92ZXJsYXlfX3N0YXRzIGRkIHtcbiAgICAgICAgY29sb3I6ICNmZmY7XG4gICAgICAgIGZvbnQtc2l6ZTogY2xhbXAoMC42OHJlbSwgMi44dncsIDAuODhyZW0pO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIGNoZXNzaW1hbHMtdmljdG9yeS1zcGFya3Mge1xuICAgICAgICAwJSxcbiAgICAgICAgMTAwJSB7XG4gICAgICAgICAgb3BhY2l0eTogMC40NjtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCkgc2NhbGUoMC45OCk7XG4gICAgICAgIH1cblxuICAgICAgICA1MCUge1xuICAgICAgICAgIG9wYWNpdHk6IDAuOTU7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0wLjM1cmVtKSBzY2FsZSgxLjAyKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIGNoZXNzaW1hbHMtZmluYWxlLXJheXMge1xuICAgICAgICB0byB7XG4gICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIGNoZXNzaW1hbHMtZmluYWxlLXJpYmJvbiB7XG4gICAgICAgIDAlLFxuICAgICAgICAxMDAlIHtcbiAgICAgICAgICBvcGFjaXR5OiAwLjE4O1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMC41cmVtKSByb3RhdGUodmFyKC0tcmliYm9uLWFuZ2xlKSk7XG4gICAgICAgIH1cblxuICAgICAgICA1MCUge1xuICAgICAgICAgIG9wYWNpdHk6IDAuNzU7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEuNHJlbSkgcm90YXRlKHZhcigtLXJpYmJvbi1hbmdsZSkpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIEBrZXlmcmFtZXMgY2hlc3NpbWFscy1maW5hbGUtbWVkYWwge1xuICAgICAgICAwJSxcbiAgICAgICAgMTAwJSB7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApIHNjYWxlKDEpO1xuICAgICAgICB9XG5cbiAgICAgICAgNTAlIHtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTAuMThyZW0pIHNjYWxlKDEuMDQpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIGlzb2xhdGlvbjogaXNvbGF0ZTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWNlbGwtYmc6IHZhcigtLWNoZXNzaW1hbHMtY2VsbC1saWdodCk7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIHBsYWNlLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgICAgbWluLWhlaWdodDogMDtcbiAgICAgICAgYXNwZWN0LXJhdGlvOiAxO1xuICAgICAgICBib3JkZXI6IDA7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGVsbGlwc2UgYXQgMjYlIDI0JSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEyKSwgdHJhbnNwYXJlbnQgMjQlKSxcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoZWxsaXBzZSBhdCA3OCUgNzYlLCByZ2JhKDYxLCA1NCwgMzYsIDAuMDYpLCB0cmFuc3BhcmVudCAyOCUpLFxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNCksIHRyYW5zcGFyZW50IDUyJSwgcmdiYSg1MiwgNDQsIDI4LCAwLjA0KSksXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1jZWxsLWJnKTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIGZvbnQ6IGluaGVyaXQ7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIHRyYW5zaXRpb246XG4gICAgICAgICAgYmFja2dyb3VuZCAxNjBtcyBlYXNlLFxuICAgICAgICAgIGJveC1zaGFkb3cgMTYwbXMgZWFzZSxcbiAgICAgICAgICB0cmFuc2Zvcm0gMTYwbXMgZWFzZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbDo6YmVmb3JlLFxuICAgICAgLmNoZXNzaW1hbHMtY2VsbDo6YWZ0ZXIge1xuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbC10ZXh0dXJlIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBpbnNldDogMDtcbiAgICAgICAgei1pbmRleDogMDtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgICBvcGFjaXR5OiAwLjQyO1xuICAgICAgICBtaXgtYmxlbmQtbW9kZTogbXVsdGlwbHk7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGVsbGlwc2UgYXQgdmFyKC0td2Vhci14LCAyOCUpIHZhcigtLXdlYXIteSwgMzIlKSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE2KSwgdHJhbnNwYXJlbnQgMTclKSxcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoZWxsaXBzZSBhdCB2YXIoLS13ZWFyLXgyLCA3NCUpIHZhcigtLXdlYXIteTIsIDY4JSksIHJnYmEoNzUsIDY2LCA0MiwgMC4wOSksIHRyYW5zcGFyZW50IDI1JSksXG4gICAgICAgICAgcmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCh2YXIoLS13ZWFyLWFuZ2xlLCAyNmRlZyksIHJnYmEoNzUsIDY2LCA0MiwgMC4wNDUpIDAgMXB4LCB0cmFuc3BhcmVudCAxcHggMC41MnJlbSksXG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA2KSwgdHJhbnNwYXJlbnQgNDIlLCByZ2JhKDUyLCA0NCwgMjgsIDAuMDQ1KSk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwtdGV4dHVyZTo6YWZ0ZXIge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGluc2V0OiAwLjA4cmVtO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDc1LCA2NiwgNDIsIDAuMDUpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwLjE4cmVtO1xuICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgIGluc2V0IDAuMDhyZW0gMC4wOHJlbSAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wOCksXG4gICAgICAgICAgaW5zZXQgLTAuMDhyZW0gLTAuMDhyZW0gMCByZ2JhKDUyLCA0NCwgMjgsIDAuMDQ1KTtcbiAgICAgICAgY29udGVudDogJyc7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwuaXMtZWRnZS1jZWxsIC5jaGVzc2ltYWxzLWNlbGwtdGV4dHVyZSB7XG4gICAgICAgIG9wYWNpdHk6IDAuNTY7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGVsbGlwc2UgYXQgdmFyKC0td2Vhci14LCAyOCUpIHZhcigtLXdlYXIteSwgMzIlKSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE0KSwgdHJhbnNwYXJlbnQgMTglKSxcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoZWxsaXBzZSBhdCB2YXIoLS13ZWFyLXgyLCA3NCUpIHZhcigtLXdlYXIteTIsIDY4JSksIHJnYmEoNzUsIDY2LCA0MiwgMC4xNCksIHRyYW5zcGFyZW50IDI4JSksXG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSg3MCwgNTIsIDI4LCAwLjA1NSksIHRyYW5zcGFyZW50IDQ0JSwgcmdiYSg1MiwgNDQsIDI4LCAwLjA5KSksXG4gICAgICAgICAgcmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCh2YXIoLS13ZWFyLWFuZ2xlLCAyNmRlZyksIHJnYmEoNzUsIDY2LCA0MiwgMC4wNTUpIDAgMXB4LCB0cmFuc3BhcmVudCAxcHggMC40OHJlbSk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwud2Vhci0wIHtcbiAgICAgICAgLS13ZWFyLXg6IDIyJTtcbiAgICAgICAgLS13ZWFyLXk6IDI0JTtcbiAgICAgICAgLS13ZWFyLXgyOiA3OCU7XG4gICAgICAgIC0td2Vhci15MjogNzIlO1xuICAgICAgICAtLXdlYXItYW5nbGU6IDE4ZGVnO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsLndlYXItMSB7XG4gICAgICAgIC0td2Vhci14OiA2NCU7XG4gICAgICAgIC0td2Vhci15OiAxOCU7XG4gICAgICAgIC0td2Vhci14MjogMzAlO1xuICAgICAgICAtLXdlYXIteTI6IDc2JTtcbiAgICAgICAgLS13ZWFyLWFuZ2xlOiAtMjRkZWc7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwud2Vhci0yIHtcbiAgICAgICAgLS13ZWFyLXg6IDQyJTtcbiAgICAgICAgLS13ZWFyLXk6IDU4JTtcbiAgICAgICAgLS13ZWFyLXgyOiA4MiU7XG4gICAgICAgIC0td2Vhci15MjogMjYlO1xuICAgICAgICAtLXdlYXItYW5nbGU6IDQyZGVnO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsLndlYXItMyB7XG4gICAgICAgIC0td2Vhci14OiA3NCU7XG4gICAgICAgIC0td2Vhci15OiA2OCU7XG4gICAgICAgIC0td2Vhci14MjogMjQlO1xuICAgICAgICAtLXdlYXIteTI6IDI4JTtcbiAgICAgICAgLS13ZWFyLWFuZ2xlOiAtMTJkZWc7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwud2Vhci00IHtcbiAgICAgICAgLS13ZWFyLXg6IDM0JTtcbiAgICAgICAgLS13ZWFyLXk6IDE4JTtcbiAgICAgICAgLS13ZWFyLXgyOiA2MiU7XG4gICAgICAgIC0td2Vhci15MjogODQlO1xuICAgICAgICAtLXdlYXItYW5nbGU6IDY0ZGVnO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsLndlYXItNSB7XG4gICAgICAgIC0td2Vhci14OiAxOCU7XG4gICAgICAgIC0td2Vhci15OiA3MCU7XG4gICAgICAgIC0td2Vhci14MjogNzAlO1xuICAgICAgICAtLXdlYXIteTI6IDM0JTtcbiAgICAgICAgLS13ZWFyLWFuZ2xlOiAtNDhkZWc7XG4gICAgICB9XG5cbiAgICAgIDpob3N0LWNvbnRleHQoaHRtbC5pb24tcGFsZXR0ZS1kYXJrKSAuY2hlc3NpbWFscy1jZWxsLXRleHR1cmUsXG4gICAgICA6aG9zdC1jb250ZXh0KFtkYXRhLXRoZW1lPSdkYXJrJ10pIC5jaGVzc2ltYWxzLWNlbGwtdGV4dHVyZSB7XG4gICAgICAgIG9wYWNpdHk6IDAuMzQ7XG4gICAgICAgIG1peC1ibGVuZC1tb2RlOiBzb2Z0LWxpZ2h0O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsLmlzLWRhcmstY2VsbCB7XG4gICAgICAgIC0tY2hlc3NpbWFscy1jZWxsLWJnOiB2YXIoLS1jaGVzc2ltYWxzLWNlbGwtZGFyayk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwuaXMtc2VsZWN0ZWQge1xuICAgICAgICB6LWluZGV4OiAxO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1zZWxlY3RlZC1yZ2IpLCAwLjI4KSAwIDM2JSwgdHJhbnNwYXJlbnQgNjIlKSxcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2VsZWN0ZWQtcmdiKSwgMC4yMiksIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wOCkpLFxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtY2VsbC1iZyk7XG4gICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgaW5zZXQgMCAwIDAgMC4xOHJlbSB2YXIoLS1jaGVzc2ltYWxzLXNlbGVjdGVkKSxcbiAgICAgICAgICBpbnNldCAwIDAgMC41NXJlbSByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNzIpLFxuICAgICAgICAgIGluc2V0IDAgMCAxLjhyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNlbGVjdGVkLXJnYiksIDAuNDIpLFxuICAgICAgICAgIDAgMCAwLjU1cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1zZWxlY3RlZC1yZ2IpLCAwLjU2KSxcbiAgICAgICAgICAwIDAgMS41NXJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2VsZWN0ZWQtcmdiKSwgMC4zNik7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvYXJkLmlzLXBvd2VyLWFpbWluZyAuY2hlc3NpbWFscy1jZWxsLmlzLXNlbGVjdGVkIHtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDUwJSA1MiUsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1yZ2IpLCAwLjM4KSAwIDM0JSwgdHJhbnNwYXJlbnQgNjQlKSxcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDMyJSAyNCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4zNCksIHRyYW5zcGFyZW50IDI4JSksXG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDAuMiksIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wOCkpLFxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtY2VsbC1iZyk7XG4gICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgaW5zZXQgMCAwIDAgMC4xOHJlbSB2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLWhvdCksXG4gICAgICAgICAgaW5zZXQgMCAwIDAuOHJlbSByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNjYpLFxuICAgICAgICAgIGluc2V0IDAgMCAxLjlyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDAuNSksXG4gICAgICAgICAgMCAwIDAuN3JlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtbWFnaWMtcmdiKSwgMC42MiksXG4gICAgICAgICAgMCAwIDEuNzVyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDAuNDIpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC5pcy1wb3dlci1haW1pbmcgLmNoZXNzaW1hbHMtY2VsbC5pcy1sZWdhbDpub3QoLmlzLWNhcHR1cmUpOjphZnRlciB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDAuOTQpO1xuICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgIDAgMCAwLjcycmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1yZ2IpLCAwLjQ4KSxcbiAgICAgICAgICBpbnNldCAwIDAgMC42cmVtIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm9hcmQuaXMtcG93ZXItYWltaW5nIC5jaGVzc2ltYWxzLXRhcmdldCB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtbWFnaWMtaG90KTtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICAwIDAgMCAwLjJyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDAuMiksXG4gICAgICAgICAgMCAwIDAuOTVyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDAuNjIpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsLmlzLWxlZ2FsOm5vdCguaXMtY2FwdHVyZSk6OmFmdGVyIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBpbnNldDogMTMlO1xuICAgICAgICB6LWluZGV4OiAyO1xuICAgICAgICBib3JkZXI6IG1heCgycHgsIDEuOCUpIHNvbGlkIHZhcigtLWNoZXNzaW1hbHMtbW92ZSk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDAuNTVyZW07XG4gICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICBvcGFjaXR5OiAwLjc0O1xuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbC5pcy1sYXN0Om5vdCguaXMtc2VsZWN0ZWQpOm5vdCguaXMtbGVnYWwpOm5vdCguaXMtY2FwdHVyZSkge1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1sYXN0LXJnYiksIDAuMTYpIDAgNDIlLCB0cmFuc3BhcmVudCA2OCUpLFxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtY2VsbC1iZyk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwuaXMtY2FwdHVyZSB7XG4gICAgICAgIHotaW5kZXg6IDI7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCA1MCUgNTAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMjQpLCB0cmFuc3BhcmVudCAzNCUpLFxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1jYXB0dXJlLXJnYiksIDAuMTQpLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDgpKSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLWNlbGwtYmcpO1xuICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgIGluc2V0IDAgMCAwIDAuMTRyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLWNhcHR1cmUtcmdiKSwgMC44NCksXG4gICAgICAgICAgaW5zZXQgMCAwIDEuNHJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2IpLCAwLjI0KSxcbiAgICAgICAgICAwIDAgMC45NXJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2IpLCAwLjM0KTtcbiAgICAgICAgYW5pbWF0aW9uOiBjaGVzc2ltYWxzLWNhcHR1cmUtYXVyYSAxLjM1cyBlYXNlLWluLW91dCBpbmZpbml0ZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbC5pcy1jYXB0dXJlOjpiZWZvcmUge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGluc2V0OiA0JTtcbiAgICAgICAgei1pbmRleDogMTtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDAuNjRyZW07XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDkwZGVnLCB0cmFuc3BhcmVudCwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUyKSwgdHJhbnNwYXJlbnQpLFxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgNTAlIDUwJSwgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLWNhcHR1cmUtcmdiKSwgMC4yNCksIHRyYW5zcGFyZW50IDU4JSk7XG4gICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTQyJSkgc2NhbGUoMC45KTtcbiAgICAgICAgYW5pbWF0aW9uOiBjaGVzc2ltYWxzLWNhcHR1cmUtc3dlZXAgMS4zNXMgZWFzZS1pbi1vdXQgaW5maW5pdGU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwuaXMtY2FwdHVyZTo6YWZ0ZXIge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGluc2V0OiA4JTtcbiAgICAgICAgei1pbmRleDogMztcbiAgICAgICAgYm9yZGVyOiBtYXgoMnB4LCAxLjU1JSkgc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLWNhcHR1cmUtcmdiKSwgMC45KTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMC42MnJlbTtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICAwIDAgMC43NXJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2IpLCAwLjUpLFxuICAgICAgICAgIGluc2V0IDAgMCAwLjcycmVtIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yMik7XG4gICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgICAgYW5pbWF0aW9uOiBjaGVzc2ltYWxzLWNhcHR1cmUtZnJhbWUgMS4zNXMgZWFzZS1pbi1vdXQgaW5maW5pdGU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwuaGFzLWNhcHR1cmUtcmVhZHk6bm90KC5pcy1zZWxlY3RlZCk6OmFmdGVyIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBpbnNldDogMTYlO1xuICAgICAgICB6LWluZGV4OiAzO1xuICAgICAgICBib3JkZXI6IG1heCgycHgsIDEuNDUlKSBzb2xpZCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2VsZWN0ZWQtcmdiKSwgMC43Mik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgIDAgMCAwLjY1cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1zZWxlY3RlZC1yZ2IpLCAwLjM0KSxcbiAgICAgICAgICBpbnNldCAwIDAgMC41NXJlbSByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTgpO1xuICAgICAgICBjb250ZW50OiAnJztcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbC5pcy13aW5uaW5nLmlzLWxlZ2FsOm5vdCguaXMtY2FwdHVyZSk6OmFmdGVyIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLWNoZXNzaW1hbHMtd2FybmluZy1yZ2IpLCAwLjkyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgMCAwIDAuNzVyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXdhcm5pbmctcmdiKSwgMC40OCksXG4gICAgICAgICAgaW5zZXQgMCAwIDAuNThyZW0gcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjIyKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbC5pcy13aW5uaW5nIC5jaGVzc2ltYWxzLXRhcmdldCB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtd2FybmluZyk7XG4gICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgMCAwIDAgMC4yMnJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtd2FybmluZy1yZ2IpLCAwLjIpLFxuICAgICAgICAgIDAgMCAwLjk1cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy13YXJuaW5nLXJnYiksIDAuNTYpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsLmhhcy10aHJlYXQ6bm90KC5pcy1zZWxlY3RlZCk6bm90KC5pcy1jYXB0dXJlKSB7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCA1MCUgNTIlLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtd2FybmluZy1yZ2IpLCAwLjE2KSwgdHJhbnNwYXJlbnQgNTIlKSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLWNlbGwtYmcpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsLmhhcy10aHJlYXQ6bm90KC5pcy1zZWxlY3RlZCk6bm90KC5pcy1jYXB0dXJlKSAuY2hlc3NpbWFscy1waWVjZSB7XG4gICAgICAgIGZpbHRlcjpcbiAgICAgICAgICBkcm9wLXNoYWRvdygwIDAgMC4zOHJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtd2FybmluZy1yZ2IpLCAwLjUyKSlcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLXBpZWNlLXdoaXRlLXNoYWRvdyk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwuaGFzLXRocmVhdDpub3QoLmlzLXNlbGVjdGVkKTpub3QoLmlzLWNhcHR1cmUpIC5jaGVzc2ltYWxzLXBpZWNlLmlzLWJsYWNrIHtcbiAgICAgICAgZmlsdGVyOlxuICAgICAgICAgIGRyb3Atc2hhZG93KDAgMCAwLjM4cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy13YXJuaW5nLXJnYiksIDAuNTIpKVxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtcGllY2UtYmxhY2stc2hhZG93KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbC5oYXMtdGhyZWF0Om5vdCguaXMtc2VsZWN0ZWQpOm5vdCguaXMtY2FwdHVyZSk6OmJlZm9yZSB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiAwLjI2cmVtO1xuICAgICAgICByaWdodDogMC4yNnJlbTtcbiAgICAgICAgei1pbmRleDogNDtcbiAgICAgICAgd2lkdGg6IDAuNDhyZW07XG4gICAgICAgIGhlaWdodDogMC40OHJlbTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tY2hlc3NpbWFscy13YXJuaW5nLXJnYiksIDAuOTYpO1xuICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAwLjE4cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy13YXJuaW5nLXJnYiksIDAuMjIpO1xuICAgICAgICBjb250ZW50OiAnJztcbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBjaGVzc2ltYWxzLWNhcHR1cmUtYXVyYSB7XG4gICAgICAgIDAlLFxuICAgICAgICAxMDAlIHtcbiAgICAgICAgICBmaWx0ZXI6IHNhdHVyYXRlKDEpO1xuICAgICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgICBpbnNldCAwIDAgMCAwLjEycmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1jYXB0dXJlLXJnYiksIDAuNzgpLFxuICAgICAgICAgICAgaW5zZXQgMCAwIDFyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLWNhcHR1cmUtcmdiKSwgMC4yKSxcbiAgICAgICAgICAgIDAgMCAwLjY0cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1jYXB0dXJlLXJnYiksIDAuMzIpO1xuICAgICAgICB9XG5cbiAgICAgICAgNTAlIHtcbiAgICAgICAgICBmaWx0ZXI6IHNhdHVyYXRlKDEuMjIpO1xuICAgICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgICBpbnNldCAwIDAgMCAwLjE2cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1jYXB0dXJlLXJnYiksIDAuOTYpLFxuICAgICAgICAgICAgaW5zZXQgMCAwIDEuMzRyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLWNhcHR1cmUtcmdiKSwgMC4zNCksXG4gICAgICAgICAgICAwIDAgMS4ycmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1jYXB0dXJlLXJnYiksIDAuNDgpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIEBrZXlmcmFtZXMgY2hlc3NpbWFscy1jYXB0dXJlLXN3ZWVwIHtcbiAgICAgICAgMCUge1xuICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MiUpIHNjYWxlKDAuODgpO1xuICAgICAgICB9XG5cbiAgICAgICAgNDIlIHtcbiAgICAgICAgICBvcGFjaXR5OiAwLjY2O1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKSBzY2FsZSgxKTtcbiAgICAgICAgfVxuXG4gICAgICAgIDEwMCUge1xuICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDQ4JSkgc2NhbGUoMC45Mik7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBjaGVzc2ltYWxzLWNhcHR1cmUtZnJhbWUge1xuICAgICAgICAwJSxcbiAgICAgICAgMTAwJSB7XG4gICAgICAgICAgb3BhY2l0eTogMC42ODtcbiAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDAuOTYpO1xuICAgICAgICB9XG5cbiAgICAgICAgNTAlIHtcbiAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbC5oYXMtc291cmNlLWVmZmVjdDpub3QoLmlzLW1vdmluZy1zb3VyY2UpIHtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2VsZWN0ZWQtcmdiKSwgMC4xMikgMCAzNCUsIHRyYW5zcGFyZW50IDY0JSksXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1jZWxsLWJnKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbC5oYXMtbW92ZS1lZmZlY3Qge1xuICAgICAgICB6LWluZGV4OiAyO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgNTAlIDUwJSwgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLWNhcHR1cmUtcmdiKSwgMC4yMikgMCAzNCUsIHRyYW5zcGFyZW50IDY4JSksXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1jZWxsLWJnKTtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICBpbnNldCAwIDAgMCAwLjE2cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1jYXB0dXJlLXJnYiksIDAuODYpLFxuICAgICAgICAgIGluc2V0IDAgMCAxLjJyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLWNhcHR1cmUtcmdiKSwgMC4yNiksXG4gICAgICAgICAgMCAwIDEuMXJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2IpLCAwLjQyKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbC5oYXMtbW92ZS1lZmZlY3Q6OmJlZm9yZSB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgaW5zZXQ6IDAuMTJyZW07XG4gICAgICAgIHotaW5kZXg6IDE7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwLjdyZW07XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCA1MCUgNTAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNDgpLCB0cmFuc3BhcmVudCAyMiUpLFxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgNTAlIDUwJSwgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLWNhcHR1cmUtcmdiKSwgMC40MiksIHRyYW5zcGFyZW50IDU4JSk7XG4gICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDAuNzIpO1xuICAgICAgICBhbmltYXRpb246IGNoZXNzaW1hbHMtcG93ZXItaW1wYWN0IDcwMG1zIGVhc2Utb3V0IGJvdGg7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwuaGFzLW1vdmUtZWZmZWN0OjphZnRlciB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgaW5zZXQ6IDAuMjhyZW07XG4gICAgICAgIHotaW5kZXg6IDQ7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBib3JkZXI6IDAuMTRyZW0gc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMC41OHJlbTtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICAwIDAgMC41cmVtIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4zNiksXG4gICAgICAgICAgMCAwIDFyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLWNhcHR1cmUtcmdiKSwgMC4zMik7XG4gICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICBhbmltYXRpb246IGNoZXNzaW1hbHMtcG93ZXItZnJhbWUgODYwbXMgZWFzZS1vdXQgYm90aDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbC5oYXMtY2FwdHVyZS1lZmZlY3Qge1xuICAgICAgICBhbmltYXRpb246IGNoZXNzaW1hbHMtY2FwdHVyZS1oaXQgNzgwbXMgZWFzZS1vdXQgYm90aDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbC5lZmZlY3QtZWFnbGU6OmJlZm9yZSB7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdHJhbnNwYXJlbnQgMTAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNzgpIDQ4JSwgdHJhbnNwYXJlbnQgNTIlKSxcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDUwJSA1MCUsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1jYXB0dXJlLXJnYiksIDAuMzYpLCB0cmFuc3BhcmVudCA2MiUpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsLmVmZmVjdC1idWxsOjpiZWZvcmUge1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQoOTBkZWcsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4zNCkgMCAwLjE2cmVtLCB0cmFuc3BhcmVudCAwLjE2cmVtIDAuMzRyZW0pLFxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgNTAlIDUwJSwgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLWNhcHR1cmUtcmdiKSwgMC4zOCksIHRyYW5zcGFyZW50IDYyJSk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwuZWZmZWN0LWthbmdhcm9vOjpiZWZvcmUge1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDQyJSA0NCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41OCksIHRyYW5zcGFyZW50IDE4JSksXG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCA1OCUgNTYlLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2IpLCAwLjQpLCB0cmFuc3BhcmVudCA2NCUpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsLmVmZmVjdC1saW9uOjpiZWZvcmUge1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIGNvbmljLWdyYWRpZW50KGZyb20gMGRlZywgdHJhbnNwYXJlbnQsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41NiksIHRyYW5zcGFyZW50LCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2IpLCAwLjQpLCB0cmFuc3BhcmVudCksXG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCA1MCUgNTAlLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2IpLCAwLjM0KSwgdHJhbnNwYXJlbnQgNjIlKTtcbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBjaGVzc2ltYWxzLXBvd2VyLWltcGFjdCB7XG4gICAgICAgIDAlIHtcbiAgICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMC41NCkgcm90YXRlKDBkZWcpO1xuICAgICAgICB9XG5cbiAgICAgICAgMjglIHtcbiAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMC45Nikgcm90YXRlKDJkZWcpO1xuICAgICAgICB9XG5cbiAgICAgICAgMTAwJSB7XG4gICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMykgcm90YXRlKDhkZWcpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIEBrZXlmcmFtZXMgY2hlc3NpbWFscy1wb3dlci1mcmFtZSB7XG4gICAgICAgIDAlIHtcbiAgICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMC44NCk7XG4gICAgICAgIH1cblxuICAgICAgICAzNCUge1xuICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxLjAyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIDEwMCUge1xuICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxLjE2KTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIGNoZXNzaW1hbHMtY2FwdHVyZS1oaXQge1xuICAgICAgICAwJSxcbiAgICAgICAgMTAwJSB7XG4gICAgICAgICAgZmlsdGVyOiBzYXR1cmF0ZSgxKTtcbiAgICAgICAgfVxuXG4gICAgICAgIDM1JSB7XG4gICAgICAgICAgZmlsdGVyOiBzYXR1cmF0ZSgxLjM1KSBicmlnaHRuZXNzKDEuMDgpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwuaXMtbW92aW5nLXNvdXJjZSAuY2hlc3NpbWFscy1waWVjZSB7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBpZWNlIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICB6LWluZGV4OiAyO1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgd2lkdGg6IDY4JTtcbiAgICAgICAgaGVpZ2h0OiA3NCU7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGllY2UtZmlsbDogdmFyKC0tY2hlc3NpbWFscy1waWVjZS13aGl0ZS1maWxsKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXBpZWNlLXNpZGU6IHZhcigtLWNoZXNzaW1hbHMtcGllY2Utd2hpdGUtc2lkZSk7XG4gICAgICAgIC0tY2hlc3NpbWFscy1waWVjZS1saW5lOiB2YXIoLS1jaGVzc2ltYWxzLXBpZWNlLXdoaXRlLWxpbmUpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGllY2Utb3V0bGluZTogcmdiYSg4MiwgNjUsIDQ2LCAwLjM0KTtcbiAgICAgICAgZmlsdGVyOiB2YXIoLS1jaGVzc2ltYWxzLXBpZWNlLXdoaXRlLXNoYWRvdyk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBpZWNlLmlzLWJsYWNrIHtcbiAgICAgICAgY29sb3I6ICNmZmY7XG4gICAgICAgIC0tY2hlc3NpbWFscy1waWVjZS1maWxsOiB2YXIoLS1jaGVzc2ltYWxzLXBpZWNlLWJsYWNrLWZpbGwpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGllY2Utc2lkZTogdmFyKC0tY2hlc3NpbWFscy1waWVjZS1ibGFjay1zaWRlKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXBpZWNlLWxpbmU6IHZhcigtLWNoZXNzaW1hbHMtcGllY2UtYmxhY2stbGluZSk7XG4gICAgICAgIC0tY2hlc3NpbWFscy1waWVjZS1vdXRsaW5lOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMjIpO1xuICAgICAgICBmaWx0ZXI6IHZhcigtLWNoZXNzaW1hbHMtcGllY2UtYmxhY2stc2hhZG93KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtbW92aW5nLXBpZWNlIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IDA7XG4gICAgICAgIGxlZnQ6IDA7XG4gICAgICAgIHotaW5kZXg6IDY7XG4gICAgICAgIHdpZHRoOiBjYWxjKDEwMCUgLyB2YXIoLS1ib2FyZC1zaXplKSk7XG4gICAgICAgIGhlaWdodDogY2FsYygxMDAlIC8gdmFyKC0tYm9hcmQtc2l6ZSkpO1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoXG4gICAgICAgICAgY2FsYyh2YXIoLS1mcm9tLWNvbCkgKiAxMDAlKSxcbiAgICAgICAgICBjYWxjKHZhcigtLWZyb20tcm93KSAqIDEwMCUpXG4gICAgICAgICk7XG4gICAgICAgIGFuaW1hdGlvbjogY2hlc3NpbWFscy1waWVjZS10cmF2ZWwgMzYwbXMgY3ViaWMtYmV6aWVyKDAuMiwgMC44MiwgMC4yNCwgMSkgYm90aDtcbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBjaGVzc2ltYWxzLXBpZWNlLXRyYXZlbCB7XG4gICAgICAgIDAlIHtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZShcbiAgICAgICAgICAgICAgY2FsYyh2YXIoLS1mcm9tLWNvbCkgKiAxMDAlKSxcbiAgICAgICAgICAgICAgY2FsYyh2YXIoLS1mcm9tLXJvdykgKiAxMDAlKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgc2NhbGUoMSk7XG4gICAgICAgIH1cblxuICAgICAgICA2OCUge1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKFxuICAgICAgICAgICAgICBjYWxjKHZhcigtLXRvLWNvbCkgKiAxMDAlKSxcbiAgICAgICAgICAgICAgY2FsYyh2YXIoLS10by1yb3cpICogMTAwJSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIHNjYWxlKDEuMDcpO1xuICAgICAgICB9XG5cbiAgICAgICAgMTAwJSB7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoXG4gICAgICAgICAgICAgIGNhbGModmFyKC0tdG8tY29sKSAqIDEwMCUpLFxuICAgICAgICAgICAgICBjYWxjKHZhcigtLXRvLXJvdykgKiAxMDAlKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgc2NhbGUoMSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGllY2VfX3NpZGUsXG4gICAgICAuY2hlc3NpbWFscy1waWVjZV9faGVhZCxcbiAgICAgIC5jaGVzc2ltYWxzLXBpZWNlX19jb2xsYXIsXG4gICAgICAuY2hlc3NpbWFscy1waWVjZV9fbmVjayxcbiAgICAgIC5jaGVzc2ltYWxzLXBpZWNlX19iYXNlIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgbGVmdDogNTAlO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLXBpZWNlLWZpbGwpO1xuICAgICAgICBib3JkZXI6IG1heCgxcHgsIDEuMjUlKSBzb2xpZCB2YXIoLS1jaGVzc2ltYWxzLXBpZWNlLW91dGxpbmUpO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBpZWNlX19zaWRlIHtcbiAgICAgICAgdG9wOiA0NiU7XG4gICAgICAgIHotaW5kZXg6IDA7XG4gICAgICAgIHdpZHRoOiA1OCU7XG4gICAgICAgIGhlaWdodDogNDElO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAzNCUgMzQlIDEyJSAxMiU7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDk2ZGVnLCB2YXIoLS1jaGVzc2ltYWxzLXBpZWNlLXNpZGUpIDAgMzQlLCB0cmFuc3BhcmVudCAzNSUpLFxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtcGllY2UtZmlsbCk7XG4gICAgICAgIGNsaXAtcGF0aDogcG9seWdvbigyMiUgMCwgNzglIDAsIDk2JSAxMDAlLCA0JSAxMDAlKTtcbiAgICAgICAgb3BhY2l0eTogMC45MjtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGllY2VfX2hlYWQge1xuICAgICAgICB0b3A6IDElO1xuICAgICAgICB6LWluZGV4OiA0O1xuICAgICAgICB3aWR0aDogNDglO1xuICAgICAgICBoZWlnaHQ6IDQwJTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCAzMCUgMjIlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNzIpIDAgMTMlLCB0cmFuc3BhcmVudCAxNCUpLFxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yOCkgMCAzNCUsIHRyYW5zcGFyZW50IDM1JSksXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1waWVjZS1maWxsKTtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICBpbnNldCAtMC4xOHJlbSAtMC4xMnJlbSAwIHJnYmEoODIsIDY1LCA0NiwgMC4wNiksXG4gICAgICAgICAgaW5zZXQgMCAtMXB4IDAgdmFyKC0tY2hlc3NpbWFscy1waWVjZS1saW5lKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGllY2UuaXMtYmxhY2sgLmNoZXNzaW1hbHMtcGllY2VfX2hlYWQge1xuICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgIGluc2V0IDAuMThyZW0gLTAuMTJyZW0gMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDYpLFxuICAgICAgICAgIGluc2V0IDAgLTFweCAwIHZhcigtLWNoZXNzaW1hbHMtcGllY2UtbGluZSk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBpZWNlX19jb2xsYXIge1xuICAgICAgICB0b3A6IDM3JTtcbiAgICAgICAgei1pbmRleDogNTtcbiAgICAgICAgd2lkdGg6IDcyJTtcbiAgICAgICAgaGVpZ2h0OiAxNSU7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxODBkZWcsICNmNWNkNzcgMCUsIHZhcigtLWNoZXNzaW1hbHMtcGllY2UtZ29sZCkgNTUlLCB2YXIoLS1jaGVzc2ltYWxzLXBpZWNlLWdvbGQtZGFyaykgMTAwJSk7XG4gICAgICAgIGJvcmRlci1jb2xvcjogY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWNoZXNzaW1hbHMtcGllY2UtZ29sZC1kYXJrKSA3MiUsIHRyYW5zcGFyZW50KTtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICBpbnNldCAwIDAuMTJyZW0gMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMjgpLFxuICAgICAgICAgIGluc2V0IDAgLTAuMDhyZW0gMCByZ2JhKDcwLCA0NiwgMTgsIDAuMjIpLFxuICAgICAgICAgIDAgMC4wOHJlbSAwLjE4cmVtIHJnYmEoNzAsIDQ2LCAxOCwgMC4xNCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBpZWNlX19uZWNrIHtcbiAgICAgICAgdG9wOiA1MCU7XG4gICAgICAgIHotaW5kZXg6IDI7XG4gICAgICAgIHdpZHRoOiA1MiU7XG4gICAgICAgIGhlaWdodDogMzElO1xuICAgICAgICBjbGlwLXBhdGg6IHBvbHlnb24oMTYlIDAsIDg0JSAwLCAxMDAlIDEwMCUsIDAgMTAwJSk7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEwMGRlZywgdmFyKC0tY2hlc3NpbWFscy1waWVjZS1zaWRlKSAwIDI4JSwgdHJhbnNwYXJlbnQgMjklKSxcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTgwZGVnLCB2YXIoLS1jaGVzc2ltYWxzLXBpZWNlLWZpbGwpLCBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tY2hlc3NpbWFscy1waWVjZS1maWxsKSA3OCUsIHZhcigtLWNoZXNzaW1hbHMtcGllY2Utc2lkZSkpKTtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICBpbnNldCAtMC4xMnJlbSAwLjFyZW0gMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDgpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1waWVjZV9fYmFzZSB7XG4gICAgICAgIGJvdHRvbTogMDtcbiAgICAgICAgei1pbmRleDogNjtcbiAgICAgICAgd2lkdGg6IDg2JTtcbiAgICAgICAgaGVpZ2h0OiAxNyU7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDAuNDJyZW0gMC40MnJlbSAwLjIycmVtIDAuMjJyZW07XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEwMGRlZywgdmFyKC0tY2hlc3NpbWFscy1waWVjZS1zaWRlKSAwIDE4JSwgdHJhbnNwYXJlbnQgMTklKSxcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTgwZGVnLCBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tY2hlc3NpbWFscy1waWVjZS1maWxsKSA5MiUsICNmZmZmZmYpLCB2YXIoLS1jaGVzc2ltYWxzLXBpZWNlLWZpbGwpKTtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICBpbnNldCAwIDAuMTJyZW0gMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTQpLFxuICAgICAgICAgIGluc2V0IDAgLTAuMXJlbSAwIHZhcigtLWNoZXNzaW1hbHMtcGllY2UtbGluZSk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXRhcmdldCB7XG4gICAgICAgIHdpZHRoOiAxNiU7XG4gICAgICAgIGhlaWdodDogMTYlO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1tb3ZlKTtcbiAgICAgICAgb3BhY2l0eTogMC45O1xuICAgICAgICBib3gtc2hhZG93OiAwIDAgMC45cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1tb3ZlLXJnYiksIDAuNDIpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jYXJkcyB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDQsIG1pbm1heCgwLCAxZnIpKTtcbiAgICAgICAgZ2FwOiAwLjYyNXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2FyZHMgYnV0dG9uIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBpc29sYXRpb246IGlzb2xhdGU7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC4zNzVyZW07XG4gICAgICAgIHBsYWNlLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDUuNzVyZW07XG4gICAgICAgIHBhZGRpbmc6IDAuNjI1cmVtO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jaGVzc2ltYWxzLWJvcmRlcik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEuMTI1cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLXBhbmVsKTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIGZvbnQ6IGluaGVyaXQ7XG4gICAgICAgIHRyYW5zaXRpb246XG4gICAgICAgICAgYm9yZGVyLWNvbG9yIDE4MG1zIGVhc2UsXG4gICAgICAgICAgYm94LXNoYWRvdyAxODBtcyBlYXNlLFxuICAgICAgICAgIHRyYW5zZm9ybSAxODBtcyBlYXNlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wb3dlcnNfX2hlYWRpbmcge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICAgIGdhcDogMC43NXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcG93ZXJzIHAge1xuICAgICAgICBkaXNwbGF5OiAtd2Via2l0LWJveDtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDtcbiAgICAgICAgLXdlYmtpdC1saW5lLWNsYW1wOiAyO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wb3dlcnNfX2hlYWRpbmcgc3BhbiB7XG4gICAgICAgIGZsZXg6IDAgMCBhdXRvO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgcGFkZGluZzogMC4yOHJlbSAwLjYycmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjEyKTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeSk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43OHJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2FyZHMgYnV0dG9uLmlzLXNlbGVjdGVkIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLWhvdCk7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCA1MCUgMTYlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNDIpLCB0cmFuc3BhcmVudCAzMCUpLFxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgNTAlIDc2JSwgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDAuMiksIHRyYW5zcGFyZW50IDU2JSksXG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDAuMiksIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNCkpLFxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtcGFuZWwpO1xuICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgIDAgMCAwIDJweCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtbWFnaWMtcmdiKSwgMC4yOCksXG4gICAgICAgICAgMCAwIDEuMzVyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDAuNDgpLFxuICAgICAgICAgIDAgMC45cmVtIDJyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDAuMTgpO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNhcmRzIGJ1dHRvbi5pcy1zZWxlY3RlZDo6YmVmb3JlLFxuICAgICAgLmNoZXNzaW1hbHMtY2FyZHMgYnV0dG9uLmlzLXNlbGVjdGVkOjphZnRlciB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgaW5zZXQ6IC0wLjVyZW07XG4gICAgICAgIHotaW5kZXg6IDA7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IGluaGVyaXQ7XG4gICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2FyZHMgYnV0dG9uID4gKiB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgei1pbmRleDogMTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2FyZHMgYnV0dG9uLmlzLXNlbGVjdGVkOjpiZWZvcmUge1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgMTglIDI0JSwgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDAuODgpIDAgMC4wOHJlbSwgdHJhbnNwYXJlbnQgMC4xcmVtKSxcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDc4JSAyMCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44NikgMCAwLjA3cmVtLCB0cmFuc3BhcmVudCAwLjA5cmVtKSxcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDg2JSA2MiUsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1yZ2IpLCAwLjcyKSAwIDAuMDZyZW0sIHRyYW5zcGFyZW50IDAuMDhyZW0pLFxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgMjglIDc4JSwgcmdiYSgyNTUsIDI0NSwgMTExLCAwLjc4KSAwIDAuMDdyZW0sIHRyYW5zcGFyZW50IDAuMDlyZW0pLFxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgNTQlIDglLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNjgpIDAgMC4wNXJlbSwgdHJhbnNwYXJlbnQgMC4wN3JlbSk7XG4gICAgICAgIG9wYWNpdHk6IDAuODtcbiAgICAgICAgYW5pbWF0aW9uOiBjaGVzc2ltYWxzTWFnaWNQYXJ0aWNsZXMgMS44cyBlYXNlLWluLW91dCBpbmZpbml0ZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2FyZHMgYnV0dG9uLmlzLXNlbGVjdGVkOjphZnRlciB7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgY29uaWMtZ3JhZGllbnQoZnJvbSAxMmRlZywgdHJhbnNwYXJlbnQgMCAxNmRlZywgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDAuMikgMTZkZWcgMjJkZWcsIHRyYW5zcGFyZW50IDIyZGVnIDQ0ZGVnKTtcbiAgICAgICAgb3BhY2l0eTogMC42ODtcbiAgICAgICAgZmlsdGVyOiBibHVyKDAuMDRyZW0pO1xuICAgICAgICBhbmltYXRpb246IGNoZXNzaW1hbHNNYWdpY0F1cmEgMy4ycyBsaW5lYXIgaW5maW5pdGU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNhcmRzIGJ1dHRvbi5pcy11c2VkIHtcbiAgICAgICAgb3BhY2l0eTogMC40MjtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYW5pbWFsLWZhY2Uge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgICAgICB3aWR0aDogMy4yNXJlbTtcbiAgICAgICAgaGVpZ2h0OiAzLjI1cmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjM0cmVtO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxLjJyZW07XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCAzNSUgMjIlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuODIpLCB0cmFuc3BhcmVudCA1NSUpLFxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtYW5pbWFsLWZhY2UtYmcpO1xuICAgICAgICBjb2xvcjogY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWNoZXNzaW1hbHMtdGV4dCkgOTIlLCAjMDAwKTtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICBpbnNldCAwIDAgMCAxcHggdmFyKC0tY2hlc3NpbWFscy1hbmltYWwtZmFjZS1ib3JkZXIpLFxuICAgICAgICAgIDAgMC40NXJlbSAxLjE1cmVtIHJnYmEoNDYsIDU4LCA0NCwgMC4xKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYW5pbWFsLWZhY2UgaW1nIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIG9iamVjdC1maXQ6IGNvbnRhaW47XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDAuNzJyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtYW5pbWFsLWZhY2UtaW5uZXItYmcpO1xuICAgICAgICBib3gtc2hhZG93OiBpbnNldCAwIDAgMCAxcHggcmdiYSg0NiwgNTgsIDQ0LCAwLjA4KTtcbiAgICAgICAgdHJhbnNmb3JtOiBub25lO1xuICAgICAgICBmaWx0ZXI6IHZhcigtLWNoZXNzaW1hbHMtYW5pbWFsLWZhY2UtZmlsdGVyKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2FyZHMgYnV0dG9uLmlzLXNlbGVjdGVkIC5jaGVzc2ltYWxzLWFuaW1hbC1mYWNlLFxuICAgICAgLmNoZXNzaW1hbHMtcG93ZXJzLmlzLXJlYWR5IC5jaGVzc2ltYWxzLWNhcmRzIGJ1dHRvbjpub3QoLmlzLXVzZWQpIC5jaGVzc2ltYWxzLWFuaW1hbC1mYWNlIHtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDM1JSAyMiUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45KSwgdHJhbnNwYXJlbnQgNTIlKSxcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDYyJSA3OCUsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1yZ2IpLCAwLjIyKSwgdHJhbnNwYXJlbnQgNDglKSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLWFuaW1hbC1mYWNlLWJnKTtcbiAgICAgICAgY29sb3I6IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1jaGVzc2ltYWxzLXRleHQpIDk0JSwgIzAwMCk7XG4gICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgaW5zZXQgMCAwIDAgMXB4IHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1yZ2IpLCAwLjM0KSxcbiAgICAgICAgICAwIDAgMC44NXJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtbWFnaWMtcmdiKSwgMC4zNCksXG4gICAgICAgICAgMCAwLjc1cmVtIDEuNnJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtbWFnaWMtcmdiKSwgMC4xNik7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBvd2Vycy5pcy1sb2NrZWQgLmNoZXNzaW1hbHMtYW5pbWFsLWZhY2Uge1xuICAgICAgICBmaWx0ZXI6IHZhcigtLWNoZXNzaW1hbHMtYW5pbWFsLWZhY2UtbG9ja2VkLWZpbHRlcik7XG4gICAgICAgIG9wYWNpdHk6IDAuODY7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBvd2Vycy5pcy1sb2NrZWQgLmNoZXNzaW1hbHMtYW5pbWFsLWZhY2UgaW1nLFxuICAgICAgLmNoZXNzaW1hbHMtY2FyZHMgYnV0dG9uLmlzLXVzZWQgLmNoZXNzaW1hbHMtYW5pbWFsLWZhY2UgaW1nIHtcbiAgICAgICAgb3BhY2l0eTogdmFyKC0tY2hlc3NpbWFscy1hbmltYWwtZmFjZS1sb2NrZWQtaW1nLW9wYWNpdHkpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jYXJkcyBzdHJvbmcge1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44MnJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBvd2Vycy5pcy1sb2NrZWQgLmNoZXNzaW1hbHMtY2FyZHMge1xuICAgICAgICBvcGFjaXR5OiAwLjY4O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wb3dlcnMuaXMtcmVhZHkge1xuICAgICAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1yZ2IpLCAwLjQ2KTtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICAwIDAgMCAxcHggcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDAuMTIpLFxuICAgICAgICAgIDAgMXJlbSAyLjRyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDAuMTIpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wb3dlcnMuaXMtcmVhZHkgLmNoZXNzaW1hbHMtY2FyZHMgYnV0dG9uOm5vdCguaXMtdXNlZCkge1xuICAgICAgICBhbmltYXRpb246IGNoZXNzaW1hbHNQb3dlclB1bHNlIDE4MDBtcyBlYXNlLWluLW91dCBpbmZpbml0ZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcG93ZXJzLmlzLXVubG9jay1wdWxzZSB7XG4gICAgICAgIGFuaW1hdGlvbjogY2hlc3NpbWFsc1Bvd2Vyc1VubG9ja2VkIDExODBtcyBlYXNlLW91dCBib3RoO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wb3dlcnMuaXMtdW5sb2NrLXB1bHNlIC5jaGVzc2ltYWxzLWNhcmRzIGJ1dHRvbjpub3QoLmlzLXVzZWQpIHtcbiAgICAgICAgYW5pbWF0aW9uOlxuICAgICAgICAgIGNoZXNzaW1hbHNQb3dlcklnbml0ZSA3NjBtcyBlYXNlLW91dCBib3RoLFxuICAgICAgICAgIGNoZXNzaW1hbHNQb3dlclB1bHNlIDE4MDBtcyBlYXNlLWluLW91dCA3NjBtcyBpbmZpbml0ZTtcbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBjaGVzc2ltYWxzUG93ZXJQdWxzZSB7XG4gICAgICAgIDAlLFxuICAgICAgICAxMDAlIHtcbiAgICAgICAgICBib3gtc2hhZG93OiAwIDAgMCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtbWFnaWMtcmdiKSwgMCk7XG4gICAgICAgIH1cbiAgICAgICAgNTAlIHtcbiAgICAgICAgICBib3gtc2hhZG93OiAwIDAgMS40cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1yZ2IpLCAwLjI0KTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIGNoZXNzaW1hbHNQb3dlcnNVbmxvY2tlZCB7XG4gICAgICAgIDAlIHtcbiAgICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgICAgMCAwIDAgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDApLFxuICAgICAgICAgICAgMCAxcmVtIDIuNHJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtbWFnaWMtcmdiKSwgMC4xMik7XG4gICAgICAgIH1cblxuICAgICAgICAzNCUge1xuICAgICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgICAwIDAgMCAwLjE4cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1yZ2IpLCAwLjI4KSxcbiAgICAgICAgICAgIDAgMCAyLjJyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDAuMzgpLFxuICAgICAgICAgICAgMCAxcmVtIDIuNHJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtbWFnaWMtcmdiKSwgMC4xNik7XG4gICAgICAgIH1cblxuICAgICAgICAxMDAlIHtcbiAgICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgICAgMCAwIDAgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDApLFxuICAgICAgICAgICAgMCAxcmVtIDIuNHJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtbWFnaWMtcmdiKSwgMC4xMik7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBjaGVzc2ltYWxzUG93ZXJJZ25pdGUge1xuICAgICAgICAwJSB7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApIHNjYWxlKDAuOTYpO1xuICAgICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1yZ2IpLCAwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIDQyJSB7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0wLjA4cmVtKSBzY2FsZSgxLjAyNSk7XG4gICAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICAgIDAgMCAwIDAuMTRyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDAuMjQpLFxuICAgICAgICAgICAgMCAwIDEuNXJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtbWFnaWMtcmdiKSwgMC40Nik7XG4gICAgICAgIH1cblxuICAgICAgICAxMDAlIHtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCkgc2NhbGUoMSk7XG4gICAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDApO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIEBrZXlmcmFtZXMgY2hlc3NpbWFsc01hZ2ljUGFydGljbGVzIHtcbiAgICAgICAgMCUsXG4gICAgICAgIDEwMCUge1xuICAgICAgICAgIG9wYWNpdHk6IDAuNTQ7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApIHNjYWxlKDAuOTQpO1xuICAgICAgICB9XG5cbiAgICAgICAgNTAlIHtcbiAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMC4xOHJlbSkgc2NhbGUoMS4wMik7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBjaGVzc2ltYWxzTWFnaWNBdXJhIHtcbiAgICAgICAgdG8ge1xuICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDF0dXJuKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1hY3Rpb25zIHtcbiAgICAgICAgb3JkZXI6IDY7XG4gICAgICAgIGFsaWduLXNlbGY6IHN0cmV0Y2g7XG4gICAgICAgIGp1c3RpZnktc2VsZjogc3RyZXRjaDtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maXQsIG1pbm1heChtaW4oMTAwJSwgMTJyZW0pLCAxZnIpKTtcbiAgICAgICAgZ2FwOiAwLjYyNXJlbTtcbiAgICAgICAgbWFyZ2luLXRvcDogMXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc2hlbGwtLXByb2plY3Rpb24gLmNoZXNzaW1hbHMtZ2FtZSB7XG4gICAgICAgIG1heC13aWR0aDogbWluKDk2dncsIDkwcmVtKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc2hlbGwtLXByb2plY3Rpb24gLmNoZXNzaW1hbHMtdHVybi1jYXJkIHtcbiAgICAgICAgcGFkZGluZzogMC44NzVyZW0gMXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc2hlbGwtLXByb2plY3Rpb24gLmNoZXNzaW1hbHMtc3RhdHVzLFxuICAgICAgLmNoZXNzaW1hbHMtc2hlbGwtLXByb2plY3Rpb24gLmNoZXNzaW1hbHMtYWN0aW9ucyxcbiAgICAgIC5jaGVzc2ltYWxzLXNoZWxsLS1wcm9qZWN0aW9uIC5jaGVzc2ltYWxzLW9ubGluZSxcbiAgICAgIC5jaGVzc2ltYWxzLXNoZWxsLS1wcm9qZWN0aW9uIC5jaGVzc2ltYWxzLXJlcGxheSxcbiAgICAgIC5jaGVzc2ltYWxzLXNoZWxsLS1wcm9qZWN0aW9uIC5jaGVzc2ltYWxzLXJlbWF0Y2gtc3RhdHVzIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc2hlbGwtLXByb2plY3Rpb24gLmNoZXNzaW1hbHMtYXJlbmEge1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IG1pbm1heCgwLCAxZnIpO1xuICAgICAgICBqdXN0aWZ5LWl0ZW1zOiBjZW50ZXI7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXNoZWxsLS1wcm9qZWN0aW9uIC5jaGVzc2ltYWxzLWJvYXJkLXdyYXAge1xuICAgICAgICAtLWNoZXNzaW1hbHMtYm9hcmQtcmFkaXVzOiBtaW4oMC42MjVyZW0sIDEwcHgpO1xuICAgICAgICB3aWR0aDogbWluKDk2dncsIDgydmgsIDU4cmVtKTtcbiAgICAgICAgbWF4LXdpZHRoOiBub25lO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1zaGVsbC0tcHJvamVjdGlvbiAuY2hlc3NpbWFscy1ib2FyZC1mcmFtZSB7XG4gICAgICAgIGZsZXgtYmFzaXM6IGF1dG87XG4gICAgICAgIG1heC13aWR0aDogbm9uZTtcbiAgICAgIH1cblxuICAgICAgQG1lZGlhIChtaW4td2lkdGg6IDc2MHB4KSB7XG4gICAgICAgIC5jaGVzc2ltYWxzLWdhbWUge1xuICAgICAgICAgIGdhcDogMXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLXR1cm4tY2FyZCxcbiAgICAgICAgLmNoZXNzaW1hbHMtc3RhdHVzLFxuICAgICAgICAuY2hlc3NpbWFscy1hcmVuYSxcbiAgICAgICAgLmNoZXNzaW1hbHMtcmVwbGF5LFxuICAgICAgICAuY2hlc3NpbWFscy1yZXN1bHQsXG4gICAgICAgIC5jaGVzc2ltYWxzLWFjdGlvbnMge1xuICAgICAgICAgIGdyaWQtY29sdW1uOiAxIC8gLTE7XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1hcmVuYSB7XG4gICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBtaW5tYXgoMCwgMWZyKTtcbiAgICAgICAgICBqdXN0aWZ5LWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgYWxpZ24taXRlbXM6IHN0YXJ0O1xuICAgICAgICAgIGdhcDogMXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLXBvd2VycyB7XG4gICAgICAgICAgd2lkdGg6IG1pbigxMDAlLCA0NHJlbSk7XG4gICAgICAgICAgYWxpZ24tY29udGVudDogY2VudGVyO1xuICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogbWlubWF4KDExcmVtLCAwLjY4ZnIpIG1pbm1heCgwLCAxZnIpO1xuICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgZ2FwOiAxcmVtO1xuICAgICAgICAgIHBhZGRpbmc6IDFyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1jYXJkcyB7XG4gICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNCwgbWlubWF4KDAsIDFmcikpO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtY2FyZHMgYnV0dG9uIHtcbiAgICAgICAgICBtaW4taGVpZ2h0OiA1cmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtcG93ZXJzIHAge1xuICAgICAgICAgIC13ZWJraXQtbGluZS1jbGFtcDogMztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ydWxlcyB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMXJlbTtcbiAgICAgICAgcGFkZGluZy10b3A6IDAuMjVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXNldHRpbmdzIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjg1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1zZXR0aW5ncyBhcnRpY2xlIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjY1cmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjlyZW07XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTYpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxcmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMDgpLCB0cmFuc3BhcmVudCksXG4gICAgICAgICAgdmFyKC0taW9uLWNhcmQtYmFja2dyb3VuZCwgI2ZmZik7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWFib3V0IHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAganVzdGlmeS1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDFyZW07XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tdGV4dC1jb2xvciwgdmFyKC0tY2hlc3NpbWFscy10ZXh0KSk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWFib3V0X19sb2dvIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHdpZHRoOiBtaW4oMzByZW0sIDEwMCUpO1xuICAgICAgICBhc3BlY3QtcmF0aW86IDEyODAgLyA2OTg7XG4gICAgICAgIG9iamVjdC1maXQ6IGNvdmVyO1xuICAgICAgICBvYmplY3QtcG9zaXRpb246IGNlbnRlcjtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMS4yNXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogI2ZmZjtcbiAgICAgICAgYm94LXNoYWRvdzogMCAxcmVtIDJyZW0gcmdiYSg0NiwgNTgsIDQ0LCAwLjE0KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYWJvdXQgcCB7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1tZWRpdW0sIHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjk1cmVtO1xuICAgICAgICBmb250LXdlaWdodDogNzUwO1xuICAgICAgICBsaW5lLWhlaWdodDogMS40NTtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1hYm91dCBkbCB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIGdhcDogMC42NXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYWJvdXQgZGwgZGl2IHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgICBnYXA6IDFyZW07XG4gICAgICAgIHBhZGRpbmc6IDAuODVyZW0gMC45NXJlbTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xNik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDFyZW07XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4wOCksIHRyYW5zcGFyZW50KSxcbiAgICAgICAgICB2YXIoLS1pb24tY2FyZC1iYWNrZ3JvdW5kLCAjZmZmKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYWJvdXQgZHQsXG4gICAgICAuY2hlc3NpbWFscy1hYm91dCBkZCB7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYWJvdXQgZHQge1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLW1lZGl1bSwgdmFyKC0tY2hlc3NpbWFscy1tdXRlZCkpO1xuICAgICAgICBmb250LXNpemU6IDAuNzhyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA2ZW07XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWFib3V0IGRkIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi10ZXh0LWNvbG9yLCB2YXIoLS1jaGVzc2ltYWxzLXRleHQpKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjk1cmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ydWxlc19faGVybyB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgYXNwZWN0LXJhdGlvOiAxNiAvIDk7XG4gICAgICAgIG9iamVjdC1maXQ6IGNvdmVyO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxLjM1cmVtO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjE4KTtcbiAgICAgICAgYm94LXNoYWRvdzogMCAxcmVtIDIuMjVyZW0gcmdiYSg0NiwgNTgsIDQ0LCAwLjEyKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcnVsZXMgYXJ0aWNsZSB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogYXV0byBtaW5tYXgoMCwgMWZyKTtcbiAgICAgICAgYWxpZ24taXRlbXM6IHN0YXJ0O1xuICAgICAgICBnYXA6IDFyZW07XG4gICAgICAgIHBhZGRpbmc6IDFyZW07XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWlvbi1ib3JkZXItY29sb3IsICNlN2U0ZWEpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxLjI1cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY2FyZC1iYWNrZ3JvdW5kLCAjZmZmKTtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi10ZXh0LWNvbG9yLCAjMmYyYTNhKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcnVsZXMgYXJ0aWNsZSA+IHNwYW4ge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgICAgICB3aWR0aDogMnJlbTtcbiAgICAgICAgaGVpZ2h0OiAycmVtO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xMik7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ydWxlcyBhcnRpY2xlID4gZGl2IHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgICBnYXA6IDAuNDVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJ1bGVzIGgzLFxuICAgICAgLmNoZXNzaW1hbHMtcnVsZXMgcCxcbiAgICAgIC5jaGVzc2ltYWxzLXJ1bGVzIHVsIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ydWxlcyBoMyB7XG4gICAgICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMjtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcnVsZXMgcCxcbiAgICAgIC5jaGVzc2ltYWxzLXJ1bGVzIGxpIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1tZWRpdW0sICM2ZjZhN2EpO1xuICAgICAgICBsaW5lLWhlaWdodDogMS41O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ydWxlcyB1bCB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC40NXJlbTtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAxLjE1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wcmltYXJ5LFxuICAgICAgLmNoZXNzaW1hbHMtc2Vjb25kYXJ5IHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICBnYXA6IDAuNXJlbTtcbiAgICAgICAgbWluLWhlaWdodDogMy42MjVyZW07XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBmb250OiBpbmhlcml0O1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wcmltYXJ5IHtcbiAgICAgICAgYm9yZGVyOiAwO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LWNvbnRyYXN0KTtcbiAgICAgICAgYm94LXNoYWRvdzogMCAxLjEyNXJlbSAyLjhyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4yOCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXNlY29uZGFyeSB7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNoZXNzaW1hbHMtYm9yZGVyKTtcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wcmltYXJ5LmlzLXdvcmtpbmcsXG4gICAgICAuY2hlc3NpbWFscy1zZWNvbmRhcnkuaXMtd29ya2luZyB7XG4gICAgICAgIGN1cnNvcjogd2FpdDtcbiAgICAgICAgb3BhY2l0eTogMC44MjtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYnV0dG9uLXNwaW5uZXIge1xuICAgICAgICB3aWR0aDogMXJlbTtcbiAgICAgICAgaGVpZ2h0OiAxcmVtO1xuICAgICAgICBmbGV4OiAwIDAgYXV0bztcbiAgICAgICAgYm9yZGVyOiAwLjE0cmVtIHNvbGlkIGN1cnJlbnRDb2xvcjtcbiAgICAgICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIGFuaW1hdGlvbjogY2hlc3NpbWFscy1zcGluIDcyMG1zIGxpbmVhciBpbmZpbml0ZTtcbiAgICAgIH1cblxuICAgICAgQG1lZGlhIChtYXgtd2lkdGg6IDU2MHB4KSB7XG4gICAgICAgIC5jaGVzc2ltYWxzLXNpemUsXG4gICAgICAgIC5jaGVzc2ltYWxzLW1vZGUsXG4gICAgICAgIC5jaGVzc2ltYWxzLWFjdGlvbnMge1xuICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtZ2FtZSB7XG4gICAgICAgICAgZ2FwOiAwLjU1cmVtO1xuICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDEuMjVyZW07XG4gICAgICAgICAgcGFkZGluZzogMC42MjVyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy10dXJuLWNhcmQge1xuICAgICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBtaW5tYXgoMCwgMWZyKSBhdXRvO1xuICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgZ2FwOiAwLjVyZW07XG4gICAgICAgICAgbWluLWhlaWdodDogMDtcbiAgICAgICAgICBib3JkZXItcmFkaXVzOiAwLjk1cmVtO1xuICAgICAgICAgIHBhZGRpbmc6IDAuNXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLXR1cm4tY2FyZF9fY29weSB7XG4gICAgICAgICAgZ2FwOiAwLjFyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy10dXJuLWNhcmRfX2NoaXAge1xuICAgICAgICAgIG1heC13aWR0aDogMTAwJTtcbiAgICAgICAgICBwYWRkaW5nOiAwLjE4cmVtIDAuNXJlbTtcbiAgICAgICAgICBmb250LXNpemU6IDAuNnJlbTtcbiAgICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wNDVlbTtcbiAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy10dXJuLWNhcmQgc3Ryb25nIHtcbiAgICAgICAgICBmb250LXNpemU6IGNsYW1wKDAuOTJyZW0sIDQuNHZ3LCAxLjEycmVtKTtcbiAgICAgICAgICBsaW5lLWhlaWdodDogMS4wODtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLXR1cm4tY2FyZCBwIHtcbiAgICAgICAgICBkaXNwbGF5OiAtd2Via2l0LWJveDtcbiAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICAgIGZvbnQtc2l6ZTogMC43MnJlbTtcbiAgICAgICAgICBsaW5lLWhlaWdodDogMS4yO1xuICAgICAgICAgIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7XG4gICAgICAgICAgLXdlYmtpdC1saW5lLWNsYW1wOiAxO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtcGxheWVyLXN0cmlwIHtcbiAgICAgICAgICB3aWR0aDogYXV0bztcbiAgICAgICAgICBtYXgtd2lkdGg6IG5vbmU7XG4gICAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgICAgIHBhZGRpbmc6IDAuMjVyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1wbGF5ZXItc3RyaXBfX2F2YXRhciB7XG4gICAgICAgICAgZmxleDogMCAwIDEuOHJlbTtcbiAgICAgICAgICB3aWR0aDogMS44cmVtO1xuICAgICAgICAgIGhlaWdodDogMS44cmVtO1xuICAgICAgICAgIGFzcGVjdC1yYXRpbzogMSAvIDE7XG4gICAgICAgIH1cblxuICAgICAgICA6aG9zdCA6Om5nLWRlZXAgLmNoZXNzaW1hbHMtcGxheWVyLXN0cmlwIC5jaGVzc2ltYWxzLXR1cm4tYXZhdGFyIHtcbiAgICAgICAgICB3aWR0aDogMS44cmVtO1xuICAgICAgICAgIG1pbi13aWR0aDogMS44cmVtO1xuICAgICAgICAgIGhlaWdodDogMS44cmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtcGxheWVyLXN0cmlwX190ZXh0IHtcbiAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtc3RhdHVzIHtcbiAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgzLCBtaW5tYXgoMCwgMWZyKSk7XG4gICAgICAgICAgZ2FwOiAwLjNyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1zdGF0dXMgZGl2IHtcbiAgICAgICAgICBnYXA6IDAuMTRyZW07XG4gICAgICAgICAgbWluLWhlaWdodDogMi4ycmVtO1xuICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDAuODJyZW07XG4gICAgICAgICAgcGFkZGluZzogMC4zNHJlbSAwLjNyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1zdGF0dXMgc21hbGwge1xuICAgICAgICAgIGZvbnQtc2l6ZTogMC41OHJlbTtcbiAgICAgICAgICBsaW5lLWhlaWdodDogMS4wNTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLXN0YXR1cyBzdHJvbmcge1xuICAgICAgICAgIGZvbnQtc2l6ZTogY2xhbXAoMC43OHJlbSwgMy4ydncsIDAuOTRyZW0pO1xuICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjA1O1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtdGlwLFxuICAgICAgICAuY2hlc3NpbWFscy1yZXN1bHQsXG4gICAgICAgIC5jaGVzc2ltYWxzLXJlcGxheSxcbiAgICAgICAgLmNoZXNzaW1hbHMtb25saW5lLXN0YXR1cyxcbiAgICAgICAgLmNoZXNzaW1hbHMtdHV0b3JpYWwge1xuICAgICAgICAgIGdhcDogMC4ycmVtO1xuICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDFyZW07XG4gICAgICAgICAgcGFkZGluZzogMC43cmVtIDAuNzVyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy10aXAgc3Ryb25nLFxuICAgICAgICAuY2hlc3NpbWFscy1yZXN1bHQgc3Ryb25nLFxuICAgICAgICAuY2hlc3NpbWFscy1yZXBsYXkgc3Ryb25nLFxuICAgICAgICAuY2hlc3NpbWFscy10dXRvcmlhbCBzdHJvbmcge1xuICAgICAgICAgIGZvbnQtc2l6ZTogMC45NXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLXRpcCBwLFxuICAgICAgICAuY2hlc3NpbWFscy1yZXN1bHQgcCB7XG4gICAgICAgICAgZm9udC1zaXplOiAwLjlyZW07XG4gICAgICAgICAgbGluZS1oZWlnaHQ6IDEuMjg7XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1yZXN1bHRfX3N0YXRzIHtcbiAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCBtaW5tYXgoMCwgMWZyKSk7XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1yZXBsYXkge1xuICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtdHV0b3JpYWwge1xuICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtcmVwbGF5X19hY3Rpb25zIHtcbiAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHN0cmV0Y2g7XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1yZXBsYXlfX2FjdGlvbnMgLmNoZXNzaW1hbHMtc2Vjb25kYXJ5IHtcbiAgICAgICAgICBmbGV4OiAxIDEgOHJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLWFyZW5hIHtcbiAgICAgICAgICBnYXA6IDAuNXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLWJvYXJkLXdyYXAge1xuICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgIG1hcmdpbi1pbmxpbmU6IDA7XG4gICAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLWJvYXJkLWZyYW1lIHtcbiAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLXBvd2VycyB7XG4gICAgICAgICAgZ2FwOiAwLjVyZW07XG4gICAgICAgICAgYm9yZGVyLXJhZGl1czogMXJlbTtcbiAgICAgICAgICBwYWRkaW5nOiAwLjU1cmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtcG93ZXJzX19oZWFkaW5nIHtcbiAgICAgICAgICBnYXA6IDAuNHJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLXBvd2VycyBoMiB7XG4gICAgICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtcG93ZXJzX19oZWFkaW5nIHNwYW4ge1xuICAgICAgICAgIHBhZGRpbmc6IDAuMjJyZW0gMC40OHJlbTtcbiAgICAgICAgICBmb250LXNpemU6IDAuNjhyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1wb3dlcnMgcCB7XG4gICAgICAgICAgZm9udC1zaXplOiAwLjc4cmVtO1xuICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjI7XG4gICAgICAgICAgLXdlYmtpdC1saW5lLWNsYW1wOiAxO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtY2FyZHMge1xuICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDQsIG1pbm1heCgwLCAxZnIpKTtcbiAgICAgICAgICBnYXA6IDAuMzVyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1jYXJkcyBidXR0b24ge1xuICAgICAgICAgIGdhcDogMC4yNXJlbTtcbiAgICAgICAgICBtaW4taGVpZ2h0OiAzLjk1cmVtO1xuICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDAuODVyZW07XG4gICAgICAgICAgcGFkZGluZzogMC4zNHJlbSAwLjIycmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtYW5pbWFsLWZhY2Uge1xuICAgICAgICAgIHdpZHRoOiAyLjM1cmVtO1xuICAgICAgICAgIGhlaWdodDogMi4zNXJlbTtcbiAgICAgICAgICBwYWRkaW5nOiAwLjI2cmVtO1xuICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDAuODVyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1hbmltYWwtZmFjZSBpbWcge1xuICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDAuNTVyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1jYXJkcyBzdHJvbmcge1xuICAgICAgICAgIGZvbnQtc2l6ZTogMC42MnJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLWJvYXJkIHtcbiAgICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1jaGVzc2ltYWxzLWJvYXJkLXJhZGl1cyk7XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1jZWxsLWNvb3JkaW5hdGUge1xuICAgICAgICAgIGZvbnQtc2l6ZTogMC41OHJlbTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBAbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkge1xuICAgICAgICAuY2hlc3NpbWFscy1jZWxsLmlzLWNhcHR1cmUsXG4gICAgICAgIC5jaGVzc2ltYWxzLWNlbGwuaXMtY2FwdHVyZTo6YmVmb3JlLFxuICAgICAgICAuY2hlc3NpbWFscy1jZWxsLmlzLWNhcHR1cmU6OmFmdGVyLFxuICAgICAgICAuY2hlc3NpbWFscy1jZWxsLmhhcy1tb3ZlLWVmZmVjdCxcbiAgICAgICAgLmNoZXNzaW1hbHMtY2VsbC5oYXMtbW92ZS1lZmZlY3Q6OmJlZm9yZSxcbiAgICAgICAgLmNoZXNzaW1hbHMtY2VsbC5oYXMtbW92ZS1lZmZlY3Q6OmFmdGVyLFxuICAgICAgICAuY2hlc3NpbWFscy1jZWxsLmhhcy1jYXB0dXJlLWVmZmVjdCxcbiAgICAgICAgLmNoZXNzaW1hbHMtbW92aW5nLXBpZWNlIHtcbiAgICAgICAgICBhbmltYXRpb246IG5vbmUgIWltcG9ydGFudDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLW1vdmluZy1waWVjZSB7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoXG4gICAgICAgICAgICBjYWxjKHZhcigtLXRvLWNvbCkgKiAxMDAlKSxcbiAgICAgICAgICAgIGNhbGModmFyKC0tdG8tcm93KSAqIDEwMCUpXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIGAsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIENoZXNzaW1hbHNHYW1lQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIHJlYWRvbmx5IGkxOG4gPSBpbmplY3QoSTE4blNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IGF1ZGlvID0gaW5qZWN0KFJldHJvQXVkaW9TZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBvbmxpbmUgPSBpbmplY3QoQ2hlc3NpbWFsc09ubGluZVNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IGNoYWxsZW5nZVByb2dyZXNzID0gaW5qZWN0KENoZXNzaW1hbHNDaGFsbGVuZ2VQcm9ncmVzc1NlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuICBwcml2YXRlIHJlYWRvbmx5IHRvYXN0ID0gaW5qZWN0KFRvYXN0U2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgYXV0aCA9IGluamVjdChBdXRoU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgaGFwdGljcyA9IGluamVjdChIYXB0aWNzU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgcGxheWVyUHJvZmlsZXMgPSBpbmplY3QoTWluaUdhbWVQbGF5ZXJQcm9maWxlU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgbmdab25lID0gaW5qZWN0KE5nWm9uZSk7XG4gIHByaXZhdGUgYm9hcmRPcmllbnRhdGlvblRpbWVyOiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PiB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBtb3ZlQW5pbWF0aW9uVGltZXI6IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+IHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIGJvdFR1cm5UaW1lcjogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4gfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgcm91dGVTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gIHByaXZhdGUgb25saW5lU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgaGlzdG9yeVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIGNoYWxsZW5nZVN0YXRzU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgY2hhbGxlbmdlUnVuc1N1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIGNoYWxsZW5nZUFjdGl2ZVJ1blN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIGhpc3RvcnlVaWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBoaXN0b3J5V2F0Y2hUaW1lcjogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4gfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgbW92ZUVmZmVjdFN0YXJ0VGltZXI6IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+IHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIG1vdmVFZmZlY3RDbGVhclRpbWVyOiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PiB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBwb3dlclVubG9ja1RpbWVyOiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PiB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBwZW5kaW5nT25saW5lR2FtZUlkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgb3BlbmluZ09ubGluZUdhbWVJZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIG9wZW5lZE9ubGluZUdhbWVJZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIGxhc3RPdXRjb21lU291bmRLZXk6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBsYXN0Q2hhbGxlbmdlSGFuZGxlZEtleTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIEBWaWV3Q2hpbGQoJ2JvYXJkQW5jaG9yJykgcHJpdmF0ZSBib2FyZEFuY2hvcj86IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gIHJlYWRvbmx5IGJvYXJkU2l6ZXM6IENoZXNzaW1hbHNCb2FyZFNpemVbXSA9IFs2LCA4XTtcbiAgcmVhZG9ubHkgbG9jYWxNb2RlczogQ2hlc3NpbWFsc0xvY2FsTW9kZVtdID0gWydvbmUtZGV2aWNlJywgJ2JvdCddO1xuICByZWFkb25seSBib3REaWZmaWN1bHRpZXM6IENoZXNzaW1hbHNCb3REaWZmaWN1bHR5W10gPSBbJ2Vhc3knLCAnbm9ybWFsJywgJ2hhcmQnXTtcbiAgcmVhZG9ubHkgYm90UHJvZmlsZXMgPSBDSEVTU0lNQUxTX0JPVF9QUk9GSUxFUztcbiAgcmVhZG9ubHkgY2hhbGxlbmdlTGFkZGVyID0gQ0hFU1NJTUFMU19DSEFMTEVOR0VfTEFEREVSO1xuICByZWFkb25seSBhbmltYWxzID0gQU5JTUFMUztcbiAgcmVhZG9ubHkgdmFsdGVjaENvbXBvbmVudHNWZXJzaW9uID0gVkFMVEVDSF9DT01QT05FTlRTX1ZFUlNJT047XG4gIHJlYWRvbmx5IHNjcmVlbiA9IHNpZ25hbDwnaG9tZScgfCAnZ2FtZSc+KCdob21lJyk7XG4gIHJlYWRvbmx5IHNlbGVjdGVkQm9hcmRTaXplID0gc2lnbmFsPENoZXNzaW1hbHNCb2FyZFNpemU+KDYpO1xuICByZWFkb25seSBzZWxlY3RlZExvY2FsTW9kZSA9IHNpZ25hbDxDaGVzc2ltYWxzTG9jYWxNb2RlPignb25lLWRldmljZScpO1xuICByZWFkb25seSBzZWxlY3RlZEJvdERpZmZpY3VsdHkgPSBzaWduYWw8Q2hlc3NpbWFsc0JvdERpZmZpY3VsdHk+KCdub3JtYWwnKTtcbiAgcmVhZG9ubHkgc2VsZWN0ZWRCb3RQcm9maWxlSWQgPSBzaWduYWw8Q2hlc3NpbWFsc0JvdFByb2ZpbGVJZD4oJ2h1bnRlcicpO1xuICByZWFkb25seSBnYW1lQm90UHJvZmlsZUlkID0gc2lnbmFsPENoZXNzaW1hbHNCb3RQcm9maWxlSWQgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IGdhbWUgPSBzaWduYWw8Q2hlc3NpbWFsc0dhbWVTdGF0ZT4oY3JlYXRlQ2hlc3NpbWFsc0dhbWUoNikpO1xuICByZWFkb25seSBjaGFsbGVuZ2VQaGFzZSA9IHNpZ25hbDxDaGVzc2ltYWxzQ2hhbGxlbmdlUGhhc2U+KCdpZGxlJyk7XG4gIHJlYWRvbmx5IGNoYWxsZW5nZVJ1biA9IHNpZ25hbDxDaGVzc2ltYWxzQ2hhbGxlbmdlUnVuIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICByZWFkb25seSBjaGFsbGVuZ2VTdGF0cyA9IHNpZ25hbDxDaGVzc2ltYWxzQ2hhbGxlbmdlU3RhdHM+KHRoaXMuY2hhbGxlbmdlUHJvZ3Jlc3MuZW1wdHlTdGF0cygpKTtcbiAgcmVhZG9ubHkgY2hhbGxlbmdlSGlzdG9yeSA9IHNpZ25hbDxDaGVzc2ltYWxzQ2hhbGxlbmdlUnVuW10+KFtdKTtcbiAgcmVhZG9ubHkgYWN0aXZlU3RvcmVkQ2hhbGxlbmdlUnVuID0gc2lnbmFsPENoZXNzaW1hbHNDaGFsbGVuZ2VSdW4gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IGNoYWxsZW5nZUxhc3RXb24gPSBzaWduYWw8Ym9vbGVhbiB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgY2hhbGxlbmdlTGFzdEJvdCA9IHNpZ25hbDxDaGVzc2ltYWxzQ2hhbGxlbmdlQm90IHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICByZWFkb25seSBjaGFsbGVuZ2VMYXN0Um91bmRTdGF0cyA9IHNpZ25hbDxDaGVzc2ltYWxzQ2hhbGxlbmdlUm91bmRTdGF0cyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgY2hhbGxlbmdlTmV3UmVjb3JkID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgc2VsZWN0ZWRQaWVjZUlkID0gc2lnbmFsPHN0cmluZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgc2VsZWN0ZWRBbmltYWwgPSBzaWduYWw8Q2hlc3NpbWFsc0FuaW1hbFR5cGUgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IGlzUnVsZXNNb2RhbE9wZW4gPSBzaWduYWwoZmFsc2UpO1xuICByZWFkb25seSBpc1NldHRpbmdzTW9kYWxPcGVuID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgaXNBYm91dE1vZGFsT3BlbiA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IHR1dG9yaWFsTW9kZSA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IGlzQm9hcmRPcmllbnRpbmcgPSBzaWduYWwoZmFsc2UpO1xuICByZWFkb25seSBtb3ZpbmdQaWVjZSA9IHNpZ25hbDxDaGVzc2ltYWxzTW92aW5nUGllY2VWaWV3IHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICByZWFkb25seSBtb3ZlRWZmZWN0ID0gc2lnbmFsPENoZXNzaW1hbHNNb3ZlRWZmZWN0VmlldyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgcG93ZXJVbmxvY2tQdWxzZSA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IG1vdmVUcmFpbCA9IGNvbXB1dGVkPENoZXNzaW1hbHNNb3ZlVHJhaWxWaWV3IHwgdW5kZWZpbmVkPigoKSA9PiB7XG4gICAgY29uc3QgZWZmZWN0ID0gdGhpcy5tb3ZlRWZmZWN0KCk7XG4gICAgaWYgKCFlZmZlY3QpIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCBib2FyZFNpemUgPSB0aGlzLmdhbWUoKS5ib2FyZFNpemU7XG4gICAgY29uc3QgZnJvbUNvbCA9IHRoaXMuZGlzcGxheUNvbEluZGV4KGVmZmVjdC5mcm9tLmNvbCkgKyAwLjU7XG4gICAgY29uc3QgZnJvbVJvdyA9IHRoaXMuZGlzcGxheVJvd0luZGV4KGVmZmVjdC5mcm9tLnJvdykgKyAwLjU7XG4gICAgY29uc3QgdG9Db2wgPSB0aGlzLmRpc3BsYXlDb2xJbmRleChlZmZlY3QudG8uY29sKSArIDAuNTtcbiAgICBjb25zdCB0b1JvdyA9IHRoaXMuZGlzcGxheVJvd0luZGV4KGVmZmVjdC50by5yb3cpICsgMC41O1xuICAgIGNvbnN0IGZyb21YID0gKGZyb21Db2wgLyBib2FyZFNpemUpICogMTAwO1xuICAgIGNvbnN0IGZyb21ZID0gKGZyb21Sb3cgLyBib2FyZFNpemUpICogMTAwO1xuICAgIGNvbnN0IGR4ID0gKCh0b0NvbCAtIGZyb21Db2wpIC8gYm9hcmRTaXplKSAqIDEwMDtcbiAgICBjb25zdCBkeSA9ICgodG9Sb3cgLSBmcm9tUm93KSAvIGJvYXJkU2l6ZSkgKiAxMDA7XG4gICAgY29uc3QgbGVuZ3RoID0gTWF0aC5tYXgoMTAsIE1hdGguaHlwb3QoZHgsIGR5KSk7XG4gICAgY29uc3QgYW5nbGUgPSBNYXRoLmF0YW4yKGR5LCBkeCkgKiAoMTgwIC8gTWF0aC5QSSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgeDogYCR7ZnJvbVh9JWAsXG4gICAgICB5OiBgJHtmcm9tWX0lYCxcbiAgICAgIGxlbmd0aDogYCR7bGVuZ3RofSVgLFxuICAgICAgYW5nbGU6IGAke2FuZ2xlfWRlZ2AsXG4gICAgICBhbmltYWw6IGVmZmVjdC5hbmltYWwsXG4gICAgICBjYXB0dXJlOiBlZmZlY3QuY2FwdHVyZSxcbiAgICB9O1xuICB9KTtcbiAgcmVhZG9ubHkgYm90VGhpbmtpbmcgPSBzaWduYWwoZmFsc2UpO1xuICByZWFkb25seSBjb25maXJtQWN0aW9uID0gc2lnbmFsPENoZXNzaW1hbHNDb25maXJtQWN0aW9uIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICByZWFkb25seSBvbmxpbmVKb2luQ29kZSA9IHNpZ25hbCgnJyk7XG4gIHJlYWRvbmx5IG9ubGluZUxvYWRpbmcgPSBzaWduYWwoZmFsc2UpO1xuICByZWFkb25seSBvbmxpbmVBY3Rpb24gPSBzaWduYWw8J2NyZWF0ZScgfCAnam9pbicgfCAnYWNjZXB0JyB8ICdyZWplY3QnIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICByZWFkb25seSBvbmxpbmVFcnJvciA9IHNpZ25hbCgnJyk7XG4gIHJlYWRvbmx5IG9ubGluZVVpZCA9IHNpZ25hbDxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IG9ubGluZUhpc3RvcnkgPSBzaWduYWw8Q2hlc3NpbWFsc0hpc3RvcnlFbnRyeVtdPihbXSk7XG4gIHJlYWRvbmx5IHJlc3VtZVNwbGFzaFZpc2libGUgPSBzaWduYWwoZmFsc2UpO1xuICByZWFkb25seSByZW1hdGNoTG9hZGluZyA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IG1vdmVTeW5jaW5nID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgb25saW5lQ29ubmVjdGlvblN0YXRlID0gc2lnbmFsPCdpZGxlJyB8ICdjb25uZWN0aW5nJyB8ICdsaXZlJyB8ICdlcnJvcic+KCdpZGxlJyk7XG4gIHJlYWRvbmx5IHJldmlld0luZGV4ID0gc2lnbmFsPG51bWJlciB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgbG9nZ2VkSW5Vc2VyID0gdGhpcy5hdXRoLnVzZXI7XG4gIHJlYWRvbmx5IGxvY2FsUGxheWVyUHJvZmlsZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMucGxheWVyUHJvZmlsZXMuYWN0aXZlUHJvZmlsZSgpKTtcbiAgcmVhZG9ubHkgbG9jYWxQbGF5ZXJBdmF0YXIgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmxvY2FsUGxheWVyUHJvZmlsZSgpPy5hdmF0YXIgPz8gJ/CfjJ8nKTtcbiAgcmVhZG9ubHkgbG9nZ2VkUGxheWVyTmFtZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCB1c2VyID0gdGhpcy5sb2dnZWRJblVzZXIoKTtcbiAgICBpZiAodXNlcj8ubmFtZT8udHJpbSgpKSByZXR1cm4gdXNlci5uYW1lLnRyaW0oKTtcbiAgICBpZiAodXNlcj8uZW1haWw/LnRyaW0oKSkgcmV0dXJuIHVzZXIuZW1haWwudHJpbSgpO1xuICAgIHJldHVybiB0aGlzLnBsYXllclByb2ZpbGVzLmRpc3BsYXlOYW1lKHRoaXMubG9jYWxQbGF5ZXJQcm9maWxlKCksIHRoaXMudCgnZGVmYXVsdFBsYXllck5hbWUnKSk7XG4gIH0pO1xuICByZWFkb25seSBsb2dnZWRQbGF5ZXJIYW5kbGUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgdXNlciA9IHRoaXMubG9nZ2VkSW5Vc2VyKCk7XG4gICAgY29uc3QgaGFuZGxlID0gdXNlcj8uaGFuZGxlPy50cmltKCk7XG4gICAgaWYgKGhhbmRsZSkgcmV0dXJuIGhhbmRsZS5zdGFydHNXaXRoKCdAJykgPyBoYW5kbGUgOiBgQCR7aGFuZGxlfWA7XG4gICAgaWYgKHVzZXI/LnVzZXJJZCkgcmV0dXJuIGBJRCAke3RoaXMuc2hvcnRVc2VySWQodXNlci51c2VySWQpfWA7XG4gICAgY29uc3QgcHJvZmlsZUlkID0gdGhpcy5sb2NhbFBsYXllclByb2ZpbGUoKT8uaWQ7XG4gICAgcmV0dXJuIHByb2ZpbGVJZCA/IGBJRCAke3RoaXMuc2hvcnRVc2VySWQocHJvZmlsZUlkKX1gIDogJyc7XG4gIH0pO1xuICByZWFkb25seSBsb2dnZWRQbGF5ZXJBdmF0YXJQcm9wcyA9IGNvbXB1dGVkPFVzZXJBdmF0YXJNZXRhZGF0YT4oKCkgPT4gKHtcbiAgICB1c2VyOiB0aGlzLmxvZ2dlZEluVXNlcigpLFxuICAgIHNpemU6ICdzbWFsbCcsXG4gICAgYm9yZGVyZWQ6IHRydWUsXG4gICAgY3NzQ2xhc3M6ICdjaGVzc2ltYWxzLXR1cm4tYXZhdGFyJyxcbiAgfSkpO1xuICByZWFkb25seSBtdXNpY0VuYWJsZWRDb250cm9sID0gbmV3IEZvcm1Db250cm9sKHRoaXMuYXVkaW8ubXVzaWNFbmFibGVkKCksIHsgbm9uTnVsbGFibGU6IHRydWUgfSk7XG4gIHJlYWRvbmx5IHNmeEVuYWJsZWRDb250cm9sID0gbmV3IEZvcm1Db250cm9sKHRoaXMuYXVkaW8uc2Z4RW5hYmxlZCgpLCB7IG5vbk51bGxhYmxlOiB0cnVlIH0pO1xuICByZWFkb25seSBtdXNpY1ZvbHVtZUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woTWF0aC5yb3VuZCh0aGlzLmF1ZGlvLm11c2ljVm9sdW1lKCkgKiAxMDApLCB7IG5vbk51bGxhYmxlOiB0cnVlIH0pO1xuICByZWFkb25seSBzZnhWb2x1bWVDb250cm9sID0gbmV3IEZvcm1Db250cm9sKE1hdGgucm91bmQodGhpcy5hdWRpby5zZnhWb2x1bWUoKSAqIDEwMCksIHsgbm9uTnVsbGFibGU6IHRydWUgfSk7XG4gIHJlYWRvbmx5IG11c2ljVG9nZ2xlUHJvcHMgPSBjb21wdXRlZDxUb2dnbGVJbnB1dE1ldGFkYXRhPigoKSA9PiAoe1xuICAgIGNvbnRyb2w6IHRoaXMubXVzaWNFbmFibGVkQ29udHJvbCxcbiAgICBsYWJlbDogdGhpcy50KCdjaGVzc2ltYWxzTXVzaWNFbmFibGVkJyksXG4gICAgY29sb3I6ICdwcmltYXJ5JyxcbiAgICBqdXN0aWZ5OiAnc3BhY2UtYmV0d2VlbicsXG4gIH0pKTtcbiAgcmVhZG9ubHkgc2Z4VG9nZ2xlUHJvcHMgPSBjb21wdXRlZDxUb2dnbGVJbnB1dE1ldGFkYXRhPigoKSA9PiAoe1xuICAgIGNvbnRyb2w6IHRoaXMuc2Z4RW5hYmxlZENvbnRyb2wsXG4gICAgbGFiZWw6IHRoaXMudCgnY2hlc3NpbWFsc1NmeEVuYWJsZWQnKSxcbiAgICBjb2xvcjogJ3ByaW1hcnknLFxuICAgIGp1c3RpZnk6ICdzcGFjZS1iZXR3ZWVuJyxcbiAgfSkpO1xuICByZWFkb25seSBtdXNpY1ZvbHVtZVByb3BzID0gY29tcHV0ZWQ8UmFuZ2VJbnB1dE1ldGFkYXRhPigoKSA9PiAoe1xuICAgIGNvbnRyb2w6IHRoaXMubXVzaWNWb2x1bWVDb250cm9sLFxuICAgIGxhYmVsOiBgJHt0aGlzLnQoJ2NoZXNzaW1hbHNNdXNpY1ZvbHVtZScpfSDCtyAke01hdGgucm91bmQodGhpcy5hdWRpby5tdXNpY1ZvbHVtZSgpICogMTAwKX0lYCxcbiAgICBtaW46IDAsXG4gICAgbWF4OiAxMDAsXG4gICAgc3RlcDogNSxcbiAgICBwaW46IHRydWUsXG4gICAgY29sb3I6ICdwcmltYXJ5JyxcbiAgICBzdGFydExhYmVsOiAnMCcsXG4gICAgZW5kTGFiZWw6ICcxMDAnLFxuICAgIHBpbkZvcm1hdHRlcjogKHZhbHVlKSA9PiBgJHt2YWx1ZX0lYCxcbiAgfSkpO1xuICByZWFkb25seSBzZnhWb2x1bWVQcm9wcyA9IGNvbXB1dGVkPFJhbmdlSW5wdXRNZXRhZGF0YT4oKCkgPT4gKHtcbiAgICBjb250cm9sOiB0aGlzLnNmeFZvbHVtZUNvbnRyb2wsXG4gICAgbGFiZWw6IGAke3RoaXMudCgnY2hlc3NpbWFsc1NmeFZvbHVtZScpfSDCtyAke01hdGgucm91bmQodGhpcy5hdWRpby5zZnhWb2x1bWUoKSAqIDEwMCl9JWAsXG4gICAgbWluOiAwLFxuICAgIG1heDogMTAwLFxuICAgIHN0ZXA6IDUsXG4gICAgcGluOiB0cnVlLFxuICAgIGNvbG9yOiAncHJpbWFyeScsXG4gICAgc3RhcnRMYWJlbDogJzAnLFxuICAgIGVuZExhYmVsOiAnMTAwJyxcbiAgICBwaW5Gb3JtYXR0ZXI6ICh2YWx1ZSkgPT4gYCR7dmFsdWV9JWAsXG4gIH0pKTtcbiAgcmVhZG9ubHkgYXZhaWxhYmxlQm90UHJvZmlsZXMgPSBjb21wdXRlZCgoKSA9PlxuICAgIHRoaXMuYm90UHJvZmlsZXMuZmlsdGVyKChwcm9maWxlKSA9PiBwcm9maWxlLmRpZmZpY3VsdHkgPT09IHRoaXMuc2VsZWN0ZWRCb3REaWZmaWN1bHR5KCkpLFxuICApO1xuICByZWFkb25seSBzZWxlY3RlZEJvdFByb2ZpbGUgPSBjb21wdXRlZCgoKSA9PlxuICAgIHRoaXMuYm90UHJvZmlsZXMuZmluZCgocHJvZmlsZSkgPT4gcHJvZmlsZS5pZCA9PT0gdGhpcy5zZWxlY3RlZEJvdFByb2ZpbGVJZCgpKSxcbiAgKTtcbiAgcmVhZG9ubHkgZ2FtZUJvdFByb2ZpbGUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgcHJvZmlsZUlkID0gdGhpcy5nYW1lQm90UHJvZmlsZUlkKCk7XG4gICAgcmV0dXJuIHByb2ZpbGVJZCA/IHRoaXMuYm90UHJvZmlsZXMuZmluZCgocHJvZmlsZSkgPT4gcHJvZmlsZS5pZCA9PT0gcHJvZmlsZUlkKSA6IHVuZGVmaW5lZDtcbiAgfSk7XG4gIHJlYWRvbmx5IGFjdGl2ZUNoYWxsZW5nZUJvdCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBydW4gPSB0aGlzLmNoYWxsZW5nZVJ1bigpO1xuICAgIGlmICghcnVuKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIHJldHVybiB0aGlzLmNoYWxsZW5nZUxhZGRlcltNYXRoLm1heCgwLCBydW4uY3VycmVudFJvdW5kIC0gMSldO1xuICB9KTtcblxuICBASW5wdXQoKSBzZXQgb25saW5lR2FtZUlkKHZhbHVlOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKSB7XG4gICAgY29uc3QgZ2FtZUlkID0gdGhpcy5vbmxpbmUubm9ybWFsaXplR2FtZUlkKHZhbHVlID8/ICcnKTtcbiAgICBpZiAoIWdhbWVJZCkgcmV0dXJuO1xuICAgIHRoaXMucGVuZGluZ09ubGluZUdhbWVJZCA9IGdhbWVJZDtcbiAgICBpZiAodGhpcy5vcGVuZWRPbmxpbmVHYW1lSWQgIT09IGdhbWVJZCAmJiB0aGlzLm9wZW5pbmdPbmxpbmVHYW1lSWQgIT09IGdhbWVJZCkge1xuICAgICAgdm9pZCB0aGlzLm9wZW5PbmxpbmVHYW1lKGdhbWVJZCk7XG4gICAgfVxuICB9XG4gIEBJbnB1dCgpIG1pbmlHYW1lc1JvdXRlID0gJy9taW5pLWdhbWVzJztcbiAgQElucHV0KCkgcHJvamVjdGlvbk1vZGUgPSBmYWxzZTtcblxuICByZWFkb25seSByZXBsYXlFbnRyaWVzID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5nYW1lKCkubW92ZUhpc3RvcnkgPz8gW10pO1xuICByZWFkb25seSBhY3RpdmVSZXZpZXdJbmRleCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBlbnRyaWVzID0gdGhpcy5yZXBsYXlFbnRyaWVzKCk7XG4gICAgaWYgKHRoaXMuZ2FtZSgpLnN0YXR1cyAhPT0gJ2ZpbmlzaGVkJyB8fCBlbnRyaWVzLmxlbmd0aCA8PSAxKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5yZXZpZXdJbmRleCgpID8/IGVudHJpZXMubGVuZ3RoIC0gMTtcbiAgICByZXR1cm4gTWF0aC5taW4oTWF0aC5tYXgoaW5kZXgsIDApLCBlbnRyaWVzLmxlbmd0aCAtIDEpO1xuICB9KTtcbiAgcmVhZG9ubHkgaGFzUmVwbGF5Q29udHJvbHMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmFjdGl2ZVJldmlld0luZGV4KCkgIT09IHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IHJldmlld0dhbWUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmFjdGl2ZVJldmlld0luZGV4KCk7XG4gICAgY29uc3QgZW50cnkgPSBpbmRleCA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogdGhpcy5yZXBsYXlFbnRyaWVzKClbaW5kZXhdO1xuICAgIHJldHVybiBlbnRyeSA/IGNyZWF0ZUNoZXNzaW1hbHNSZXZpZXdTdGF0ZSh0aGlzLmdhbWUoKSwgZW50cnkpIDogdGhpcy5nYW1lKCk7XG4gIH0pO1xuICByZWFkb25seSBjdXJyZW50UGxheWVyID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5nYW1lKCkucGxheWVyc1t0aGlzLmdhbWUoKS5jdXJyZW50VHVybl0pO1xuICByZWFkb25seSBwb3dlclBsYXllckNvbG9yID0gY29tcHV0ZWQoKCk6IENoZXNzaW1hbHNQbGF5ZXJDb2xvciA9PiB7XG4gICAgY29uc3QgZ2FtZSA9IHRoaXMuZ2FtZSgpO1xuICAgIGlmIChnYW1lLm1vZGUgPT09ICdvbmxpbmUnKSB7XG4gICAgICBjb25zdCByb2xlID0gdGhpcy5vbmxpbmVSb2xlKCk7XG4gICAgICByZXR1cm4gcm9sZSA9PT0gJ3doaXRlJyB8fCByb2xlID09PSAnYmxhY2snID8gcm9sZSA6IGdhbWUuY3VycmVudFR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLnNlbGVjdGVkTG9jYWxNb2RlKCkgPT09ICdib3QnKSByZXR1cm4gJ3doaXRlJztcbiAgICByZXR1cm4gZ2FtZS5jdXJyZW50VHVybjtcbiAgfSk7XG4gIHJlYWRvbmx5IHBvd2VyUGxheWVyID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5nYW1lKCkucGxheWVyc1t0aGlzLnBvd2VyUGxheWVyQ29sb3IoKV0pO1xuICByZWFkb25seSBjYW5Vc2VQb3dlckNhcmRzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGdhbWUgPSB0aGlzLmdhbWUoKTtcbiAgICByZXR1cm4gKFxuICAgICAgZ2FtZS5zdGF0dXMgPT09ICdpbl9wcm9ncmVzcycgJiZcbiAgICAgIHRoaXMucG93ZXJQbGF5ZXJDb2xvcigpID09PSBnYW1lLmN1cnJlbnRUdXJuICYmXG4gICAgICB0aGlzLmNhblBsYXlDdXJyZW50VHVybigpICYmXG4gICAgICAhdGhpcy5ib3RUaGlua2luZygpICYmXG4gICAgICAhdGhpcy5tb3ZpbmdQaWVjZSgpXG4gICAgKTtcbiAgfSk7XG4gIHJlYWRvbmx5IGxlZ2FsTW92ZXMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgcGllY2VJZCA9IHRoaXMuc2VsZWN0ZWRQaWVjZUlkKCk7XG4gICAgaWYgKCFwaWVjZUlkKSByZXR1cm4gW107XG4gICAgaWYgKCF0aGlzLmNhblBsYXlDdXJyZW50VHVybigpKSByZXR1cm4gW107XG4gICAgY29uc3QgbW92ZXMgPSBnZXRDaGVzc2ltYWxzTGVnYWxNb3Zlcyh0aGlzLmdhbWUoKSwgcGllY2VJZCwgdGhpcy5zZWxlY3RlZEFuaW1hbCgpKTtcbiAgICBjb25zdCBleHBlY3RlZCA9IHRoaXMudHV0b3JpYWxFeHBlY3RlZE1vdmUoKTtcbiAgICBpZiAoIWV4cGVjdGVkKSByZXR1cm4gbW92ZXM7XG4gICAgcmV0dXJuIG1vdmVzLmZpbHRlcihcbiAgICAgIChtb3ZlKSA9PlxuICAgICAgICBtb3ZlLnBpZWNlSWQgPT09IGV4cGVjdGVkLnBpZWNlSWQgJiZcbiAgICAgICAgcG9zaXRpb25LZXkobW92ZS50bykgPT09IHBvc2l0aW9uS2V5KGV4cGVjdGVkLnRvKSAmJlxuICAgICAgICAobW92ZS5hbmltYWwgPz8gdW5kZWZpbmVkKSA9PT0gKGV4cGVjdGVkLmFuaW1hbCA/PyB1bmRlZmluZWQpLFxuICAgICk7XG4gIH0pO1xuICByZWFkb25seSBsZWdhbE1vdmVLZXlzID0gY29tcHV0ZWQoKCkgPT4gbmV3IFNldCh0aGlzLmxlZ2FsTW92ZXMoKS5tYXAoKG1vdmUpID0+IHBvc2l0aW9uS2V5KG1vdmUudG8pKSkpO1xuICByZWFkb25seSBjYXB0dXJlTW92ZUtleXMgPSBjb21wdXRlZChcbiAgICAoKSA9PiBuZXcgU2V0KHRoaXMubGVnYWxNb3ZlcygpLmZpbHRlcigobW92ZSkgPT4gISFtb3ZlLmNhcHR1cmVzUGllY2VJZCkubWFwKChtb3ZlKSA9PiBwb3NpdGlvbktleShtb3ZlLnRvKSkpLFxuICApO1xuICByZWFkb25seSB3aW5uaW5nTW92ZUtleXMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgZ2FtZSA9IHRoaXMuZ2FtZSgpO1xuICAgIGlmIChnYW1lLnN0YXR1cyAhPT0gJ2luX3Byb2dyZXNzJykgcmV0dXJuIG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgIGNvbnN0IHByb21vdGlvblJvdyA9IGdhbWUuY3VycmVudFR1cm4gPT09ICd3aGl0ZScgPyAwIDogZ2FtZS5ib2FyZFNpemUgLSAxO1xuICAgIHJldHVybiBuZXcgU2V0KHRoaXMubGVnYWxNb3ZlcygpLmZpbHRlcigobW92ZSkgPT4gbW92ZS50by5yb3cgPT09IHByb21vdGlvblJvdykubWFwKChtb3ZlKSA9PiBwb3NpdGlvbktleShtb3ZlLnRvKSkpO1xuICB9KTtcbiAgcmVhZG9ubHkgY2FwdHVyZVJlYWR5UGllY2VJZHMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgZ2FtZSA9IHRoaXMuZ2FtZSgpO1xuICAgIGlmICh0aGlzLmFjdGl2ZVJldmlld0luZGV4KCkgIT09IHVuZGVmaW5lZCB8fCBnYW1lLnN0YXR1cyAhPT0gJ2luX3Byb2dyZXNzJykgcmV0dXJuIG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgIGNvbnN0IG1vdmVzID0gdGhpcy5iYXNpY01vdmVzRm9yQ29sb3IoZ2FtZSwgZ2FtZS5jdXJyZW50VHVybikuZmlsdGVyKChtb3ZlKSA9PiAhIW1vdmUuY2FwdHVyZXNQaWVjZUlkKTtcbiAgICByZXR1cm4gbmV3IFNldChtb3Zlcy5tYXAoKG1vdmUpID0+IG1vdmUucGllY2VJZCkpO1xuICB9KTtcbiAgcmVhZG9ubHkgdGhyZWF0ZW5lZFBpZWNlSWRzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGdhbWUgPSB0aGlzLmdhbWUoKTtcbiAgICBpZiAodGhpcy5hY3RpdmVSZXZpZXdJbmRleCgpICE9PSB1bmRlZmluZWQgfHwgZ2FtZS5zdGF0dXMgIT09ICdpbl9wcm9ncmVzcycpIHJldHVybiBuZXcgU2V0PHN0cmluZz4oKTtcbiAgICBjb25zdCBvcHBvbmVudCA9IGdhbWUuY3VycmVudFR1cm4gPT09ICd3aGl0ZScgPyAnYmxhY2snIDogJ3doaXRlJztcbiAgICBjb25zdCB0aHJlYXRlbmVkID0gdGhpcy5iYXNpY01vdmVzRm9yQ29sb3IoZ2FtZSwgb3Bwb25lbnQpXG4gICAgICAubWFwKChtb3ZlKSA9PiBtb3ZlLmNhcHR1cmVzUGllY2VJZClcbiAgICAgIC5maWx0ZXIoKHBpZWNlSWQpOiBwaWVjZUlkIGlzIHN0cmluZyA9PiAhIXBpZWNlSWQpO1xuICAgIHJldHVybiBuZXcgU2V0KHRocmVhdGVuZWQpO1xuICB9KTtcbiAgcmVhZG9ubHkgaXNBY3Rpb25hYmxlVHVybiA9IGNvbXB1dGVkKCgpID0+XG4gICAgdGhpcy5nYW1lKCkuc3RhdHVzID09PSAnaW5fcHJvZ3Jlc3MnICYmIHRoaXMuY2FuUGxheUN1cnJlbnRUdXJuKCkgJiYgIXRoaXMuYm90VGhpbmtpbmcoKSAmJiAhdGhpcy5tb3ZlU3luY2luZygpLFxuICApO1xuICByZWFkb25seSBpc1dhaXRpbmdGb3JUdXJuID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLmdhbWUoKS5zdGF0dXMgPT09ICdpbl9wcm9ncmVzcycgJiYgIXRoaXMuaXNBY3Rpb25hYmxlVHVybigpLFxuICApO1xuICByZWFkb25seSBib2FyZFJvd3MgPSBjb21wdXRlZCgoKSA9PiBBcnJheS5mcm9tKHsgbGVuZ3RoOiB0aGlzLnJldmlld0dhbWUoKS5ib2FyZFNpemUgfSwgKF8sIGluZGV4KSA9PiBpbmRleCkpO1xuICByZWFkb25seSBib2FyZENvbHMgPSBjb21wdXRlZCgoKSA9PiBBcnJheS5mcm9tKHsgbGVuZ3RoOiB0aGlzLnJldmlld0dhbWUoKS5ib2FyZFNpemUgfSwgKF8sIGluZGV4KSA9PiBpbmRleCkpO1xuICByZWFkb25seSBkaXNwbGF5Um93cyA9IGNvbXB1dGVkKCgpID0+XG4gICAgdGhpcy5ib2FyZE9yaWVudGF0aW9uQ29sb3IoKSA9PT0gJ2JsYWNrJyA/IFsuLi50aGlzLmJvYXJkUm93cygpXS5yZXZlcnNlKCkgOiB0aGlzLmJvYXJkUm93cygpLFxuICApO1xuICByZWFkb25seSBkaXNwbGF5Q29scyA9IGNvbXB1dGVkKCgpID0+XG4gICAgdGhpcy5ib2FyZE9yaWVudGF0aW9uQ29sb3IoKSA9PT0gJ2JsYWNrJyA/IFsuLi50aGlzLmJvYXJkQ29scygpXS5yZXZlcnNlKCkgOiB0aGlzLmJvYXJkQ29scygpLFxuICApO1xuICByZWFkb25seSBib2FyZE9yaWVudGF0aW9uQ29sb3IgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgZ2FtZSA9IHRoaXMuZ2FtZSgpO1xuICAgIGNvbnN0IHVpZCA9IHRoaXMub25saW5lVWlkKCk7XG4gICAgaWYgKHRoaXMudHV0b3JpYWxNb2RlKCkpIHJldHVybiAnd2hpdGUnO1xuICAgIGlmIChnYW1lLm1vZGUgPT09ICdvbmxpbmUnKSByZXR1cm4gdWlkID8gdGhpcy5vbmxpbmUucGFydGljaXBhbnRTaWRlKGdhbWUsIHVpZCkgPz8gJ3doaXRlJyA6ICd3aGl0ZSc7XG4gICAgaWYgKGdhbWUubW9kZSA9PT0gJ2xvY2FsJyAmJiB0aGlzLnNlbGVjdGVkTG9jYWxNb2RlKCkgPT09ICdib3QnKSByZXR1cm4gJ3doaXRlJztcbiAgICByZXR1cm4gZ2FtZS5jdXJyZW50VHVybjtcbiAgfSk7XG4gIHJlYWRvbmx5IG9ubGluZVJvbGUgPSBjb21wdXRlZCgoKTogQ2hlc3NpbWFsc1BsYXllckNvbG9yIHwgJ3dhaXRpbmcnIHwgJ3BlbmRpbmcnIHwgJ3NwZWN0YXRvcicgfCB1bmRlZmluZWQgPT4ge1xuICAgIGNvbnN0IGdhbWUgPSB0aGlzLmdhbWUoKTtcbiAgICBjb25zdCB1aWQgPSB0aGlzLm9ubGluZVVpZCgpO1xuICAgIGlmIChnYW1lLm1vZGUgIT09ICdvbmxpbmUnKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIGlmICghdWlkKSByZXR1cm4gJ3NwZWN0YXRvcic7XG4gICAgaWYgKHRoaXMub25saW5lLmlzSG9zdFdhaXRpbmcoZ2FtZSwgdWlkKSkgcmV0dXJuICd3YWl0aW5nJztcbiAgICBpZiAodGhpcy5vbmxpbmUuaXNQZW5kaW5nR3Vlc3QoZ2FtZSwgdWlkKSkgcmV0dXJuICdwZW5kaW5nJztcbiAgICByZXR1cm4gdGhpcy5vbmxpbmUucGFydGljaXBhbnRTaWRlKGdhbWUsIHVpZCkgPz8gJ3NwZWN0YXRvcic7XG4gIH0pO1xuICByZWFkb25seSBjYW5QbGF5Q3VycmVudFR1cm4gPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgaWYgKHRoaXMucHJvamVjdGlvbk1vZGUpIHJldHVybiBmYWxzZTtcbiAgICBjb25zdCBnYW1lID0gdGhpcy5nYW1lKCk7XG4gICAgaWYgKGdhbWUubW9kZSA9PT0gJ2xvY2FsJyAmJiB0aGlzLnNlbGVjdGVkTG9jYWxNb2RlKCkgPT09ICdib3QnKSB7XG4gICAgICByZXR1cm4gZ2FtZS5jdXJyZW50VHVybiAhPT0gQ0hFU1NJTUFMU19CT1RfQ09MT1IgJiYgIXRoaXMuYm90VGhpbmtpbmcoKTtcbiAgICB9XG4gICAgaWYgKGdhbWUubW9kZSAhPT0gJ29ubGluZScpIHJldHVybiB0cnVlO1xuICAgIHJldHVybiB0aGlzLm9ubGluZVJvbGUoKSA9PT0gZ2FtZS5jdXJyZW50VHVybjtcbiAgfSk7XG4gIHJlYWRvbmx5IGNhbkNvbnRyb2xDdXJyZW50R2FtZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBpZiAodGhpcy5wcm9qZWN0aW9uTW9kZSkgcmV0dXJuIGZhbHNlO1xuICAgIGNvbnN0IGdhbWUgPSB0aGlzLmdhbWUoKTtcbiAgICBpZiAoZ2FtZS5tb2RlICE9PSAnb25saW5lJykgcmV0dXJuIHRydWU7XG4gICAgY29uc3Qgcm9sZSA9IHRoaXMub25saW5lUm9sZSgpO1xuICAgIHJldHVybiByb2xlID09PSAnd2hpdGUnIHx8IHJvbGUgPT09ICdibGFjayc7XG4gIH0pO1xuICByZWFkb25seSByZW1hdGNoU3RhdGUgPSBjb21wdXRlZDxDaGVzc2ltYWxzUmVtYXRjaFN0YXRlPigoKSA9PiB7XG4gICAgY29uc3QgZ2FtZSA9IHRoaXMuZ2FtZSgpO1xuICAgIGlmIChnYW1lLm1vZGUgIT09ICdvbmxpbmUnIHx8IGdhbWUuc3RhdHVzICE9PSAnZmluaXNoZWQnKSByZXR1cm4gJ25vbmUnO1xuICAgIGNvbnN0IHVpZCA9IHRoaXMub25saW5lVWlkKCk7XG4gICAgaWYgKCF1aWQgfHwgdGhpcy5vbmxpbmVSb2xlKCkgPT09ICdzcGVjdGF0b3InKSByZXR1cm4gJ25vbmUnO1xuXG4gICAgY29uc3QgaGFzTWluZSA9IHRoaXMub25saW5lLmhhc0N1cnJlbnRSZW1hdGNoUmVxdWVzdChnYW1lLCB1aWQpO1xuICAgIGNvbnN0IGhhc090aGVyID0gdGhpcy5vbmxpbmUuaGFzT3Bwb25lbnRSZW1hdGNoUmVxdWVzdChnYW1lLCB1aWQpO1xuXG4gICAgaWYgKGhhc090aGVyICYmICFoYXNNaW5lKSByZXR1cm4gJ2luY29taW5nJztcbiAgICBpZiAoaGFzTWluZSkgcmV0dXJuICdyZXF1ZXN0ZWQnO1xuICAgIHJldHVybiAnbm9uZSc7XG4gIH0pO1xuICByZWFkb25seSByZW1hdGNoQWN0aW9uTGFiZWwgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3Qgc3RhdGUgPSB0aGlzLnJlbWF0Y2hTdGF0ZSgpO1xuICAgIGlmICh0aGlzLnJlbWF0Y2hMb2FkaW5nKCkpIHtcbiAgICAgIHJldHVybiB0aGlzLnQoc3RhdGUgPT09ICdpbmNvbWluZycgPyAnY2hlc3NpbWFsc0FjY2VwdGluZ1JlbWF0Y2gnIDogJ2NoZXNzaW1hbHNSZXF1ZXN0aW5nUmVtYXRjaCcpO1xuICAgIH1cbiAgICBpZiAoc3RhdGUgPT09ICdpbmNvbWluZycpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNBY2NlcHRSZW1hdGNoJyk7XG4gICAgaWYgKHN0YXRlID09PSAncmVxdWVzdGVkJykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc1JlbWF0Y2hSZXF1ZXN0ZWRBY3Rpb24nKTtcbiAgICByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzUmVtYXRjaCcpO1xuICB9KTtcbiAgcmVhZG9ubHkgc2hvdWxkU2hvd09ubGluZVN0YXR1cyA9IGNvbXB1dGVkKCgpID0+XG4gICAgIXRoaXMucHJvamVjdGlvbk1vZGUgJiYgdGhpcy5nYW1lKCkubW9kZSA9PT0gJ29ubGluZScgJiYgdGhpcy5nYW1lKCkuc3RhdHVzICE9PSAnd2FpdGluZycsXG4gICk7XG4gIHJlYWRvbmx5IG9ubGluZVN0YXR1c1RpdGxlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGdhbWUgPSB0aGlzLmdhbWUoKTtcbiAgICBjb25zdCByb2xlID0gdGhpcy5vbmxpbmVSb2xlKCk7XG4gICAgaWYgKHRoaXMub25saW5lQ29ubmVjdGlvblN0YXRlKCkgPT09ICdjb25uZWN0aW5nJyB8fCB0aGlzLm1vdmVTeW5jaW5nKCkpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNPbmxpbmVTeW5jaW5nVGl0bGUnKTtcbiAgICBpZiAodGhpcy5vbmxpbmVDb25uZWN0aW9uU3RhdGUoKSA9PT0gJ2Vycm9yJykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc09ubGluZURpc2Nvbm5lY3RlZFRpdGxlJyk7XG4gICAgaWYgKGdhbWUuc3RhdHVzID09PSAnZXhwaXJlZCcpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNPbmxpbmVFeHBpcmVkVGl0bGUnKTtcbiAgICBpZiAoZ2FtZS5zdGF0dXMgPT09ICdmaW5pc2hlZCcpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNPbmxpbmVGaW5pc2hlZFRpdGxlJyk7XG4gICAgaWYgKHJvbGUgPT09ICdwZW5kaW5nJykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc09ubGluZVBlbmRpbmdUaXRsZScpO1xuICAgIGlmIChyb2xlID09PSAnc3BlY3RhdG9yJykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc09ubGluZVNwZWN0YXRvclRpdGxlJyk7XG4gICAgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc09ubGluZUNvbm5lY3RlZFRpdGxlJyk7XG4gIH0pO1xuICByZWFkb25seSBvbmxpbmVTdGF0dXNCb2R5ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGdhbWUgPSB0aGlzLmdhbWUoKTtcbiAgICBjb25zdCByb2xlID0gdGhpcy5vbmxpbmVSb2xlKCk7XG4gICAgaWYgKHRoaXMub25saW5lQ29ubmVjdGlvblN0YXRlKCkgPT09ICdjb25uZWN0aW5nJyB8fCB0aGlzLm1vdmVTeW5jaW5nKCkpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNPbmxpbmVTeW5jaW5nQm9keScpO1xuICAgIGlmICh0aGlzLm9ubGluZUNvbm5lY3Rpb25TdGF0ZSgpID09PSAnZXJyb3InKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzT25saW5lRGlzY29ubmVjdGVkQm9keScpO1xuICAgIGlmIChnYW1lLnN0YXR1cyA9PT0gJ2V4cGlyZWQnKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzT25saW5lRXhwaXJlZEJvZHknKTtcbiAgICBpZiAoZ2FtZS5zdGF0dXMgPT09ICdmaW5pc2hlZCcpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNPbmxpbmVGaW5pc2hlZEJvZHknKTtcbiAgICBpZiAocm9sZSA9PT0gJ3BlbmRpbmcnKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzTG9iYnlHdWVzdFdhaXRpbmdCb2R5Jyk7XG4gICAgaWYgKHJvbGUgPT09ICdzcGVjdGF0b3InKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzT25saW5lVmlld2VyJyk7XG4gICAgaWYgKHRoaXMub25saW5lUm9sZSgpID09PSB0aGlzLmdhbWUoKS5jdXJyZW50VHVybikgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc1lvdXJUdXJuQm9keScpO1xuICAgIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNXYWl0aW5nVHVybicpO1xuICB9KTtcbiAgcmVhZG9ubHkgdHV0b3JpYWxTdGVwSW5kZXggPSBjb21wdXRlZCgoKSA9PiBNYXRoLm1pbih0aGlzLmdhbWUoKS5tb3ZlQ291bnQsIENIRVNTSU1BTFNfVFVUT1JJQUxfU1RFUFMpKTtcbiAgcmVhZG9ubHkgdHV0b3JpYWxQcm9ncmVzc0xhYmVsID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLmdhbWUoKS5zdGF0dXMgPT09ICdmaW5pc2hlZCdcbiAgICAgID8gdGhpcy50KCdjaGVzc2ltYWxzVHV0b3JpYWxDb21wbGV0ZVByb2dyZXNzJylcbiAgICAgIDogdGhpcy50KCdjaGVzc2ltYWxzVHV0b3JpYWxQcm9ncmVzcycpXG4gICAgICAgICAgLnJlcGxhY2UoJ3tzdGVwfScsIFN0cmluZyh0aGlzLnR1dG9yaWFsU3RlcEluZGV4KCkgKyAxKSlcbiAgICAgICAgICAucmVwbGFjZSgne3RvdGFsfScsIFN0cmluZyhDSEVTU0lNQUxTX1RVVE9SSUFMX1NURVBTKSksXG4gICk7XG4gIHJlYWRvbmx5IHR1dG9yaWFsVGl0bGUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgaWYgKHRoaXMuZ2FtZSgpLnN0YXR1cyA9PT0gJ2ZpbmlzaGVkJykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc1R1dG9yaWFsRG9uZVRpdGxlJyk7XG4gICAgcmV0dXJuIHRoaXMudChgY2hlc3NpbWFsc1R1dG9yaWFsU3RlcCR7dGhpcy50dXRvcmlhbFN0ZXBJbmRleCgpICsgMX1UaXRsZWApO1xuICB9KTtcbiAgcmVhZG9ubHkgdHV0b3JpYWxCb2R5ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGlmICh0aGlzLmdhbWUoKS5zdGF0dXMgPT09ICdmaW5pc2hlZCcpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNUdXRvcmlhbERvbmVCb2R5Jyk7XG4gICAgcmV0dXJuIHRoaXMudChgY2hlc3NpbWFsc1R1dG9yaWFsU3RlcCR7dGhpcy50dXRvcmlhbFN0ZXBJbmRleCgpICsgMX1Cb2R5YCk7XG4gIH0pO1xuICByZWFkb25seSBjdXJyZW50VHVyblRpdGxlID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLnQoJ2NoZXNzaW1hbHNDdXJyZW50VHVybicpLnJlcGxhY2UoJ3twbGF5ZXJ9JywgdGhpcy5wbGF5ZXJMYWJlbCh0aGlzLmdhbWUoKS5jdXJyZW50VHVybikpLFxuICApO1xuICByZWFkb25seSB3aW5UaXRsZSA9IGNvbXB1dGVkKCgpID0+XG4gICAgdGhpcy50KCdjaGVzc2ltYWxzV2luVGl0bGUnKS5yZXBsYWNlKCd7cGxheWVyfScsIHRoaXMud2lubmVyRGlzcGxheU5hbWUoKSksXG4gICk7XG4gIHJlYWRvbmx5IHdpbkJvZHkgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgcmVhc29uID0gdGhpcy5nYW1lKCkud2lubmVyUmVhc29uID8/ICdwcm9tb3Rpb24nO1xuICAgIGNvbnN0IGtleSA9XG4gICAgICByZWFzb24gPT09ICdlbGltaW5hdGlvbidcbiAgICAgICAgPyAnY2hlc3NpbWFsc1dpbkVsaW1pbmF0aW9uJ1xuICAgICAgICA6IHJlYXNvbiA9PT0gJ3Jlc2lnbmF0aW9uJ1xuICAgICAgICAgID8gJ2NoZXNzaW1hbHNXaW5SZXNpZ25hdGlvbidcbiAgICAgICAgICA6ICdjaGVzc2ltYWxzV2luUHJvbW90aW9uJztcbiAgICByZXR1cm4gdGhpcy50KGtleSk7XG4gIH0pO1xuICByZWFkb25seSB3aW5SZWFzb25MYWJlbCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCByZWFzb24gPSB0aGlzLmdhbWUoKS53aW5uZXJSZWFzb24gPz8gJ3Byb21vdGlvbic7XG4gICAgY29uc3Qga2V5ID1cbiAgICAgIHJlYXNvbiA9PT0gJ2VsaW1pbmF0aW9uJ1xuICAgICAgICA/ICdjaGVzc2ltYWxzUmVhc29uRWxpbWluYXRpb24nXG4gICAgICAgIDogcmVhc29uID09PSAncmVzaWduYXRpb24nXG4gICAgICAgICAgPyAnY2hlc3NpbWFsc1JlYXNvblJlc2lnbmF0aW9uJ1xuICAgICAgICAgIDogJ2NoZXNzaW1hbHNSZWFzb25Qcm9tb3Rpb24nO1xuICAgIHJldHVybiB0aGlzLnQoa2V5KTtcbiAgfSk7XG4gIHJlYWRvbmx5IG1vdmVzU3VtbWFyeSA9IGNvbXB1dGVkKCgpID0+XG4gICAgdGhpcy50KCdjaGVzc2ltYWxzTW92ZXNTdW1tYXJ5JykucmVwbGFjZSgne21vdmVzfScsIGAke3RoaXMuZ2FtZSgpLm1vdmVDb3VudH1gKSxcbiAgKTtcbiAgcmVhZG9ubHkgcmVzdWx0Q2FwdHVyZXMgPSBjb21wdXRlZCgoKSA9PlxuICAgIHRoaXMucmVwbGF5RW50cmllcygpLmZpbHRlcigoZW50cnkpID0+ICEhZW50cnkubW92ZT8uY2FwdHVyZXNQaWVjZUlkKS5sZW5ndGgsXG4gICk7XG4gIHJlYWRvbmx5IHJlc3VsdFBvd2VycyA9IGNvbXB1dGVkKCgpID0+XG4gICAgdGhpcy5yZXBsYXlFbnRyaWVzKClcbiAgICAgIC5tYXAoKGVudHJ5KSA9PiBlbnRyeS5tb3ZlPy5hbmltYWwpXG4gICAgICAuZmlsdGVyKChhbmltYWwpOiBhbmltYWwgaXMgQ2hlc3NpbWFsc0FuaW1hbFR5cGUgPT4gISFhbmltYWwpLFxuICApO1xuICByZWFkb25seSByZXN1bHRTdGF0cyA9IGNvbXB1dGVkKCgpID0+IFtcbiAgICB7XG4gICAgICBsYWJlbDogdGhpcy50KCdjaGVzc2ltYWxzUmVzdWx0TW92ZXMnKSxcbiAgICAgIHZhbHVlOiBTdHJpbmcodGhpcy5nYW1lKCkubW92ZUNvdW50KSxcbiAgICB9LFxuICAgIHtcbiAgICAgIGxhYmVsOiB0aGlzLnQoJ2NoZXNzaW1hbHNSZXN1bHRDYXB0dXJlcycpLFxuICAgICAgdmFsdWU6IFN0cmluZyh0aGlzLnJlc3VsdENhcHR1cmVzKCkpLFxuICAgIH0sXG4gICAge1xuICAgICAgbGFiZWw6IHRoaXMudCgnY2hlc3NpbWFsc1Jlc3VsdFBvd2VycycpLFxuICAgICAgdmFsdWU6IFN0cmluZyh0aGlzLnJlc3VsdFBvd2VycygpLmxlbmd0aCksXG4gICAgfSxcbiAgICB7XG4gICAgICBsYWJlbDogdGhpcy50KCdjaGVzc2ltYWxzUmVzdWx0UmVhc29uJyksXG4gICAgICB2YWx1ZTogdGhpcy53aW5SZWFzb25MYWJlbCgpLFxuICAgIH0sXG4gIF0pO1xuICByZWFkb25seSByZXN1bHRQb3dlcnNMYWJlbCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBwb3dlcnMgPSB0aGlzLnJlc3VsdFBvd2VycygpO1xuICAgIGlmICghcG93ZXJzLmxlbmd0aCkgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc1Jlc3VsdE5vUG93ZXJzJyk7XG4gICAgcmV0dXJuIHBvd2Vycy5tYXAoKGFuaW1hbCkgPT4gdGhpcy5hbmltYWxMYWJlbChhbmltYWwpKS5qb2luKCcgwrcgJyk7XG4gIH0pO1xuICByZWFkb25seSBzaG91bGRTaG93Qm90UmVwb3J0ID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLmdhbWUoKS5tb2RlID09PSAnbG9jYWwnICYmXG4gICAgdGhpcy5nYW1lKCkuc3RhdHVzID09PSAnZmluaXNoZWQnICYmXG4gICAgIXRoaXMudHV0b3JpYWxNb2RlKCkgJiZcbiAgICAhIXRoaXMuZ2FtZUJvdFByb2ZpbGUoKSxcbiAgKTtcbiAgcmVhZG9ubHkgYm90UmVwb3J0VGl0bGUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgcHJvZmlsZSA9IHRoaXMuZ2FtZUJvdFByb2ZpbGUoKTtcbiAgICByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQm90UmVwb3J0VnMnKS5yZXBsYWNlKFxuICAgICAgJ3tib3R9JyxcbiAgICAgIHByb2ZpbGUgPyB0aGlzLmJvdFByb2ZpbGVMYWJlbChwcm9maWxlKSA6IHRoaXMudCgnY2hlc3NpbWFsc0JvdE1vZGUnKSxcbiAgICApO1xuICB9KTtcbiAgcmVhZG9ubHkgYm90UmVwb3J0Qm9keSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBwcm9maWxlID0gdGhpcy5nYW1lQm90UHJvZmlsZSgpO1xuICAgIGNvbnN0IGJvdE1vdmVzID0gdGhpcy5yZXBsYXlFbnRyaWVzKCkuZmlsdGVyKChlbnRyeSkgPT4gZW50cnkubW92ZT8ucGllY2VJZC5zdGFydHNXaXRoKCdCJykpO1xuICAgIGNvbnN0IGNhcHR1cmVzID0gYm90TW92ZXMuZmlsdGVyKChlbnRyeSkgPT4gISFlbnRyeS5tb3ZlPy5jYXB0dXJlc1BpZWNlSWQpLmxlbmd0aDtcbiAgICBjb25zdCBwb3dlcnMgPSBib3RNb3Zlcy5maWx0ZXIoKGVudHJ5KSA9PiAhIWVudHJ5Lm1vdmU/LmFuaW1hbCkubGVuZ3RoO1xuICAgIGNvbnN0IG91dGNvbWVLZXkgPVxuICAgICAgdGhpcy5nYW1lKCkud2lubmVyID09PSBDSEVTU0lNQUxTX0JPVF9DT0xPUlxuICAgICAgICA/ICdjaGVzc2ltYWxzQm90UmVwb3J0T3V0Y29tZVdvbidcbiAgICAgICAgOiAnY2hlc3NpbWFsc0JvdFJlcG9ydE91dGNvbWVMb3N0JztcblxuICAgIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNCb3RSZXBvcnRCb2R5JylcbiAgICAgIC5yZXBsYWNlKCd7b3V0Y29tZX0nLCB0aGlzLnQob3V0Y29tZUtleSkpXG4gICAgICAucmVwbGFjZSgne2NhcHR1cmVzfScsIFN0cmluZyhjYXB0dXJlcykpXG4gICAgICAucmVwbGFjZSgne3Bvd2Vyc30nLCBTdHJpbmcocG93ZXJzKSlcbiAgICAgIC5yZXBsYWNlKCd7c3R5bGV9JywgcHJvZmlsZSA/IHRoaXMuYm90UHJvZmlsZVRlbmRlbmN5KHByb2ZpbGUpIDogJycpO1xuICB9KTtcbiAgcmVhZG9ubHkgc2VyaWVzR2FtZXMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3Qgb3Bwb25lbnRVaWQgPSB0aGlzLmN1cnJlbnRPcHBvbmVudFVpZCgpO1xuICAgIGlmICghb3Bwb25lbnRVaWQpIHJldHVybiBbXSBhcyBDaGVzc2ltYWxzSGlzdG9yeUVudHJ5W107XG4gICAgcmV0dXJuIHRoaXMub25saW5lSGlzdG9yeSgpLmZpbHRlcihcbiAgICAgIChlbnRyeSkgPT4gZW50cnkub3Bwb25lbnRVaWQgPT09IG9wcG9uZW50VWlkICYmIGVudHJ5LnN0YXR1cyA9PT0gJ2ZpbmlzaGVkJyxcbiAgICApO1xuICB9KTtcbiAgcmVhZG9ubHkgc2VyaWVzU2NvcmUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgZ2FtZXMgPSB0aGlzLnNlcmllc0dhbWVzKCk7XG4gICAgaWYgKCFnYW1lcy5sZW5ndGgpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIHtcbiAgICAgIG1pbmU6IGdhbWVzLmZpbHRlcigoZW50cnkpID0+IGVudHJ5Lm91dGNvbWUgPT09ICd3b24nKS5sZW5ndGgsXG4gICAgICByaXZhbDogZ2FtZXMuZmlsdGVyKChlbnRyeSkgPT4gZW50cnkub3V0Y29tZSA9PT0gJ2xvc3QnKS5sZW5ndGgsXG4gICAgICB0b3RhbDogZ2FtZXMubGVuZ3RoLFxuICAgIH07XG4gIH0pO1xuICByZWFkb25seSBzZXJpZXNTdW1tYXJ5ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHNjb3JlID0gdGhpcy5zZXJpZXNTY29yZSgpO1xuICAgIGlmICghc2NvcmUgfHwgc2NvcmUudG90YWwgPCAyKSByZXR1cm4gJyc7XG4gICAgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc1Nlcmllc1Njb3JlJylcbiAgICAgIC5yZXBsYWNlKCd7bWluZX0nLCBTdHJpbmcoc2NvcmUubWluZSkpXG4gICAgICAucmVwbGFjZSgne3JpdmFsfScsIFN0cmluZyhzY29yZS5yaXZhbCkpXG4gICAgICAucmVwbGFjZSgne3BsYXllcn0nLCB0aGlzLnJlbWF0Y2hPcHBvbmVudE5hbWUoKSk7XG4gIH0pO1xuICByZWFkb25seSBsYXN0U2VyaWVzV2lubmVyTGFiZWwgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgbGFzdCA9IHRoaXMuc2VyaWVzR2FtZXMoKVswXTtcbiAgICBpZiAoIWxhc3QpIHJldHVybiAnJztcbiAgICByZXR1cm4gbGFzdC5vdXRjb21lID09PSAnd29uJyA/IHRoaXMudCgnY2hlc3NpbWFsc1lvdScpIDogbGFzdC5vcHBvbmVudE5hbWUgfHwgdGhpcy5yZW1hdGNoT3Bwb25lbnROYW1lKCk7XG4gIH0pO1xuICByZWFkb25seSBjb25maXJtVGl0bGUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgYWN0aW9uID0gdGhpcy5jb25maXJtQWN0aW9uKCk7XG4gICAgaWYgKGFjdGlvbiA9PT0gJ3Jlc3RhcnQnKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQ29uZmlybVJlc3RhcnRUaXRsZScpO1xuICAgIGlmIChhY3Rpb24gPT09ICdyZXNpZ24nKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQ29uZmlybVJlc2lnblRpdGxlJyk7XG4gICAgaWYgKGFjdGlvbiA9PT0gJ2dhbWVzJykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0NvbmZpcm1HYW1lc1RpdGxlJyk7XG4gICAgaWYgKGFjdGlvbiA9PT0gJ2NoYWxsZW5nZS1uZXcnKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQ2hhbGxlbmdlQ29uZmlybU5ld1RpdGxlJyk7XG4gICAgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0NvbmZpcm1Nb2RlVGl0bGUnKTtcbiAgfSk7XG4gIHJlYWRvbmx5IGNvbmZpcm1Cb2R5ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGFjdGlvbiA9IHRoaXMuY29uZmlybUFjdGlvbigpO1xuICAgIGlmIChhY3Rpb24gPT09ICdyZXN0YXJ0JykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0NvbmZpcm1SZXN0YXJ0Qm9keScpO1xuICAgIGlmIChhY3Rpb24gPT09ICdyZXNpZ24nKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQ29uZmlybVJlc2lnbkJvZHknKTtcbiAgICBpZiAoYWN0aW9uID09PSAnZ2FtZXMnKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQ29uZmlybUdhbWVzQm9keScpO1xuICAgIGlmIChhY3Rpb24gPT09ICdjaGFsbGVuZ2UtbmV3JykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0NoYWxsZW5nZUNvbmZpcm1OZXdCb2R5Jyk7XG4gICAgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0NvbmZpcm1Nb2RlQm9keScpO1xuICB9KTtcbiAgcmVhZG9ubHkgY29uZmlybUFjdGlvbnMgPSBjb21wdXRlZDxCdXR0b25NZXRhZGF0YVtdPigoKSA9PiB7XG4gICAgY29uc3QgYWN0aW9uID0gdGhpcy5jb25maXJtQWN0aW9uKCk7XG4gICAgcmV0dXJuIFtcbiAgICAgIHtcbiAgICAgICAgdGV4dDogdGhpcy50KCdjYW5jZWwnKSxcbiAgICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgICAgc3RhdGU6ICdFTkFCTEVEJyxcbiAgICAgICAgZmlsbDogJ291dGxpbmUnLFxuICAgICAgICBzaGFwZTogJ3JvdW5kJyxcbiAgICAgICAgdHlwZTogJ2J1dHRvbicsXG4gICAgICAgIHRva2VuOiAnY2FuY2VsJyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHRleHQ6XG4gICAgICAgICAgYWN0aW9uID09PSAncmVzaWduJ1xuICAgICAgICAgICAgPyB0aGlzLnQoJ2NoZXNzaW1hbHNSZXNpZ24nKVxuICAgICAgICAgICAgOiBhY3Rpb24gPT09ICdyZXN0YXJ0J1xuICAgICAgICAgICAgICA/IHRoaXMudCgncmVzdGFydCcpXG4gICAgICAgICAgICAgIDogYWN0aW9uID09PSAnZ2FtZXMnXG4gICAgICAgICAgICAgICAgPyB0aGlzLnQoJ2NoZXNzaW1hbHNDaGFuZ2VHYW1lJylcbiAgICAgICAgICAgICAgICA6IGFjdGlvbiA9PT0gJ2NoYWxsZW5nZS1uZXcnXG4gICAgICAgICAgICAgICAgICA/IHRoaXMudCgnY2hlc3NpbWFsc0NoYWxsZW5nZVN0YXJ0TmV3Q29uZmlybScpXG4gICAgICAgICAgICAgICAgICA6IHRoaXMudCgnY2hlc3NpbWFsc0NoYW5nZU1vZGUnKSxcbiAgICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgICAgc3RhdGU6ICdFTkFCTEVEJyxcbiAgICAgICAgZmlsbDogJ291dGxpbmUnLFxuICAgICAgICBzaGFwZTogJ3JvdW5kJyxcbiAgICAgICAgdHlwZTogJ2J1dHRvbicsXG4gICAgICAgIHRva2VuOiAnY29uZmlybScsXG4gICAgICB9LFxuICAgIF07XG4gIH0pO1xuICByZWFkb25seSBydWxlc0FjdGlvbnMgPSBjb21wdXRlZDxCdXR0b25NZXRhZGF0YVtdPigoKSA9PiBbXG4gICAge1xuICAgICAgdGV4dDogdGhpcy50KCdjbG9zZScpLFxuICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgIHN0YXRlOiAnRU5BQkxFRCcsXG4gICAgICBmaWxsOiAnb3V0bGluZScsXG4gICAgICBzaGFwZTogJ3JvdW5kJyxcbiAgICAgIHR5cGU6ICdidXR0b24nLFxuICAgICAgdG9rZW46ICdjbG9zZScsXG4gICAgfSxcbiAgXSk7XG4gIHJlYWRvbmx5IGFib3V0QWN0aW9ucyA9IGNvbXB1dGVkPEJ1dHRvbk1ldGFkYXRhW10+KCgpID0+IFtcbiAgICB7XG4gICAgICB0ZXh0OiB0aGlzLnQoJ2Nsb3NlJyksXG4gICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgc3RhdGU6ICdFTkFCTEVEJyxcbiAgICAgIGZpbGw6ICdvdXRsaW5lJyxcbiAgICAgIHNoYXBlOiAncm91bmQnLFxuICAgICAgdHlwZTogJ2J1dHRvbicsXG4gICAgICB0b2tlbjogJ2Nsb3NlJyxcbiAgICB9LFxuICBdKTtcbiAgcmVhZG9ubHkgYWN0aW9uSGludCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBwaWVjZUlkID0gdGhpcy5zZWxlY3RlZFBpZWNlSWQoKTtcbiAgICBpZiAoIXBpZWNlSWQpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNQaWNrQW55UGllY2UnKTtcbiAgICBpZiAodGhpcy5zZWxlY3RlZEFuaW1hbCgpKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzUGlja1Bvd2VyVGFyZ2V0Jyk7XG4gICAgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc1BpY2tUYXJnZXQnKTtcbiAgfSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5pMThuLnJlZ2lzdGVyRGVmYXVsdHMoJ01pbmlHYW1lcycsIE1JTklfR0FNRVNfSTE4Tik7XG4gICAgdGhpcy5hdWRpby5wcmVsb2FkQ2hlc3NpbWFsc1NhbXBsZXMoKTtcbiAgICB0aGlzLmF1ZGlvLnN0b3BNdXNpYygpO1xuICAgIHRoaXMuc3RhcnRDaGVzc2ltYWxzTWVudU11c2ljU29vbigpO1xuICAgIHRoaXMucm91dGVTdWJzY3JpcHRpb24uYWRkKFxuICAgICAgdGhpcy5tdXNpY0VuYWJsZWRDb250cm9sLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKGVuYWJsZWQpID0+IHtcbiAgICAgICAgdGhpcy5hdWRpby5zZXRNdXNpY0VuYWJsZWQoZW5hYmxlZCk7XG4gICAgICAgIGlmIChlbmFibGVkKSB0aGlzLnN5bmNDaGVzc2ltYWxzTXVzaWNBZnRlclNldHRpbmdzQ2hhbmdlKCk7XG4gICAgICB9KSxcbiAgICApO1xuICAgIHRoaXMucm91dGVTdWJzY3JpcHRpb24uYWRkKFxuICAgICAgdGhpcy5zZnhFbmFibGVkQ29udHJvbC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKChlbmFibGVkKSA9PiB0aGlzLmF1ZGlvLnNldFNmeEVuYWJsZWQoZW5hYmxlZCkpLFxuICAgICk7XG4gICAgdGhpcy5yb3V0ZVN1YnNjcmlwdGlvbi5hZGQoXG4gICAgICB0aGlzLm11c2ljVm9sdW1lQ29udHJvbC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCh2b2x1bWUpID0+IHRoaXMuc2V0TXVzaWNWb2x1bWUodm9sdW1lKSksXG4gICAgKTtcbiAgICB0aGlzLnJvdXRlU3Vic2NyaXB0aW9uLmFkZChcbiAgICAgIHRoaXMuc2Z4Vm9sdW1lQ29udHJvbC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCh2b2x1bWUpID0+IHRoaXMuc2V0U2Z4Vm9sdW1lKHZvbHVtZSkpLFxuICAgICk7XG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IHVzZXIgPSB0aGlzLmxvZ2dlZEluVXNlcigpO1xuICAgICAgaWYgKHVzZXIpIHtcbiAgICAgICAgdGhpcy5xdWV1ZUhpc3RvcnlXYXRjaCgpO1xuICAgICAgICB0aGlzLndhdGNoQ2hhbGxlbmdlU3RhdHMoKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5oaXN0b3J5VWlkID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy5oaXN0b3J5U3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgICAgdGhpcy5oaXN0b3J5U3Vic2NyaXB0aW9uID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy5vbmxpbmVIaXN0b3J5LnNldChbXSk7XG4gICAgICB0aGlzLmNoYWxsZW5nZVN0YXRzU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgICAgdGhpcy5jaGFsbGVuZ2VTdGF0c1N1YnNjcmlwdGlvbiA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuY2hhbGxlbmdlUnVuc1N1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICAgIHRoaXMuY2hhbGxlbmdlUnVuc1N1YnNjcmlwdGlvbiA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuY2hhbGxlbmdlQWN0aXZlUnVuU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgICAgdGhpcy5jaGFsbGVuZ2VBY3RpdmVSdW5TdWJzY3JpcHRpb24gPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLmNoYWxsZW5nZVN0YXRzLnNldCh0aGlzLmNoYWxsZW5nZVByb2dyZXNzLmVtcHR5U3RhdHMoKSk7XG4gICAgICB0aGlzLmNoYWxsZW5nZUhpc3Rvcnkuc2V0KFtdKTtcbiAgICAgIHRoaXMuYWN0aXZlU3RvcmVkQ2hhbGxlbmdlUnVuLnNldCh1bmRlZmluZWQpO1xuICAgIH0sIHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfSk7XG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IGdhbWUgPSB0aGlzLmdhbWUoKTtcbiAgICAgIGlmIChnYW1lLnN0YXR1cyAhPT0gJ2ZpbmlzaGVkJyB8fCB0aGlzLmNoYWxsZW5nZVBoYXNlKCkgIT09ICdwbGF5aW5nJykgcmV0dXJuO1xuICAgICAgY29uc3Qga2V5ID0gYCR7Z2FtZS5pZH06JHtnYW1lLm1vdmVDb3VudH06JHtnYW1lLndpbm5lciA/PyAnbm9uZSd9OiR7Z2FtZS53aW5uZXJSZWFzb24gPz8gJ25vbmUnfWA7XG4gICAgICBpZiAodGhpcy5sYXN0Q2hhbGxlbmdlSGFuZGxlZEtleSA9PT0ga2V5KSByZXR1cm47XG4gICAgICB0aGlzLmxhc3RDaGFsbGVuZ2VIYW5kbGVkS2V5ID0ga2V5O1xuICAgICAgdGhpcy5oYW5kbGVDaGFsbGVuZ2VSb3VuZEZpbmlzaGVkKGdhbWUpO1xuICAgIH0sIHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnJlc2V0RmluaXNoZWRMb2NhbEdhbWVGb3JOZXh0VmlzaXQodHJ1ZSk7XG4gICAgdGhpcy5hdWRpby5zdG9wTXVzaWMoKTtcbiAgICB0aGlzLnJvdXRlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgaWYgKHRoaXMuYm9hcmRPcmllbnRhdGlvblRpbWVyKSBjbGVhclRpbWVvdXQodGhpcy5ib2FyZE9yaWVudGF0aW9uVGltZXIpO1xuICAgIGlmICh0aGlzLm1vdmVBbmltYXRpb25UaW1lcikgY2xlYXJUaW1lb3V0KHRoaXMubW92ZUFuaW1hdGlvblRpbWVyKTtcbiAgICBpZiAodGhpcy5tb3ZlRWZmZWN0U3RhcnRUaW1lcikgY2xlYXJUaW1lb3V0KHRoaXMubW92ZUVmZmVjdFN0YXJ0VGltZXIpO1xuICAgIGlmICh0aGlzLm1vdmVFZmZlY3RDbGVhclRpbWVyKSBjbGVhclRpbWVvdXQodGhpcy5tb3ZlRWZmZWN0Q2xlYXJUaW1lcik7XG4gICAgaWYgKHRoaXMucG93ZXJVbmxvY2tUaW1lcikgY2xlYXJUaW1lb3V0KHRoaXMucG93ZXJVbmxvY2tUaW1lcik7XG4gICAgaWYgKHRoaXMuYm90VHVyblRpbWVyKSBjbGVhclRpbWVvdXQodGhpcy5ib3RUdXJuVGltZXIpO1xuICAgIGlmICh0aGlzLmhpc3RvcnlXYXRjaFRpbWVyKSBjbGVhclRpbWVvdXQodGhpcy5oaXN0b3J5V2F0Y2hUaW1lcik7XG4gICAgdGhpcy5vbmxpbmVTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5oaXN0b3J5U3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuY2hhbGxlbmdlU3RhdHNTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5jaGFsbGVuZ2VSdW5zU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuY2hhbGxlbmdlQWN0aXZlUnVuU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5yb3V0ZVN1YnNjcmlwdGlvbi5hZGQoXG4gICAgICB0aGlzLnJvdXRlci5ldmVudHMuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICBpZiAoZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uU3RhcnQpIHtcbiAgICAgICAgICB0aGlzLnJlc2V0RmluaXNoZWRMb2NhbEdhbWVGb3JOZXh0VmlzaXQodHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgICk7XG4gICAgY29uc3QgZ2FtZUlkID0gdGhpcy5wZW5kaW5nT25saW5lR2FtZUlkO1xuICAgIGlmIChnYW1lSWQgJiYgdGhpcy5vcGVuZWRPbmxpbmVHYW1lSWQgIT09IGdhbWVJZCAmJiB0aGlzLm9wZW5pbmdPbmxpbmVHYW1lSWQgIT09IGdhbWVJZCkge1xuICAgICAgdm9pZCB0aGlzLm9wZW5PbmxpbmVHYW1lKGdhbWVJZCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIHQoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHRoaXMuaTE4bi5sYW5nKCk7XG4gICAgcmV0dXJuIHRoaXMuaTE4bi50KGtleSwgJ01pbmlHYW1lcycpO1xuICB9XG5cbiAgcHJpdmF0ZSBzaG9ydFVzZXJJZCh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBub3JtYWxpemVkID0gdmFsdWUudHJpbSgpO1xuICAgIGlmIChub3JtYWxpemVkLmxlbmd0aCA8PSAxMCkgcmV0dXJuIG5vcm1hbGl6ZWQ7XG4gICAgcmV0dXJuIGAke25vcm1hbGl6ZWQuc2xpY2UoMCwgNCl94oCmJHtub3JtYWxpemVkLnNsaWNlKC00KX1gO1xuICB9XG5cbiAgcHJpdmF0ZSByYW5nZVZhbHVlVG9OdW1iZXIodmFsdWU6IG51bWJlciB8IFJhbmdlVmFsdWUpOiBudW1iZXIge1xuICAgIGNvbnN0IHJhdyA9IHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgPyB2YWx1ZSA6IHZhbHVlLnVwcGVyID8/IHZhbHVlLmxvd2VyID8/IDA7XG4gICAgcmV0dXJuIE1hdGgubWluKDEwMCwgTWF0aC5tYXgoMCwgTWF0aC5yb3VuZChyYXcpKSk7XG4gIH1cblxuICBzdGFydENoYWxsZW5nZSgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaXNDaGFsbGVuZ2VBY3RpdmUoKSAmJiB0aGlzLmFjdGl2ZVN0b3JlZENoYWxsZW5nZVJ1bigpKSB7XG4gICAgICB0aGlzLmNvbmZpcm1BY3Rpb24uc2V0KCdjaGFsbGVuZ2UtbmV3Jyk7XG4gICAgICB0aGlzLmF1ZGlvLmZsaXAoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5jcmVhdGVOZXdDaGFsbGVuZ2VSdW4oKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlTmV3Q2hhbGxlbmdlUnVuKCk6IHZvaWQge1xuICAgIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKTtcbiAgICBjb25zdCBydW46IENoZXNzaW1hbHNDaGFsbGVuZ2VSdW4gPSB7XG4gICAgICBpZDogYGNoYWxsZW5nZS0ke0RhdGUubm93KCkudG9TdHJpbmcoMzYpfS0ke01hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnNsaWNlKDIsIDgpfWAsXG4gICAgICBzdGF0dXM6ICdhY3RpdmUnLFxuICAgICAgbGl2ZXNTdGFydDogMyxcbiAgICAgIGxpdmVzUmVtYWluaW5nOiAzLFxuICAgICAgY3VycmVudFJvdW5kOiAxLFxuICAgICAgd2luczogMCxcbiAgICAgIGxvc3NlczogMCxcbiAgICAgIGJlc3RTdHJlYWtJblJ1bjogMCxcbiAgICAgIGN1cnJlbnRTdHJlYWs6IDAsXG4gICAgICBib3RMYWRkZXI6IHRoaXMuY2hhbGxlbmdlTGFkZGVyLm1hcCgoYm90KSA9PiBib3QuaWQpLFxuICAgICAgcm91bmRSZXN1bHRzOiBbXSxcbiAgICAgIHN0YXJ0ZWRBdDogbm93LFxuICAgICAgdXBkYXRlZEF0OiBub3csXG4gICAgfTtcbiAgICB0aGlzLmNoYWxsZW5nZVJ1bi5zZXQocnVuKTtcbiAgICB0aGlzLmNoYWxsZW5nZUxhc3RXb24uc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5jaGFsbGVuZ2VMYXN0Qm90LnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuY2hhbGxlbmdlTGFzdFJvdW5kU3RhdHMuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5jaGFsbGVuZ2VOZXdSZWNvcmQuc2V0KGZhbHNlKTtcbiAgICB0aGlzLmNoYWxsZW5nZU5ld1JlY29yZC5zZXQoZmFsc2UpO1xuICAgIHRoaXMuc3RhcnRDaGFsbGVuZ2VSb3VuZChydW4pO1xuICAgIHZvaWQgdGhpcy5jaGFsbGVuZ2VQcm9ncmVzcy5yZWNvcmRDaGFsbGVuZ2VTdGFydGVkKHJ1bikuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICBjb25zb2xlLndhcm4oJ1tDaGVzc2ltYWxzXSBjaGFsbGVuZ2UgcnVuIHNhdmUgZmFpbGVkJywgZXJyb3IpO1xuICAgIH0pO1xuICB9XG5cbiAgcmVzdW1lQ2hhbGxlbmdlKHJ1biA9IHRoaXMuYWN0aXZlU3RvcmVkQ2hhbGxlbmdlUnVuKCkpOiB2b2lkIHtcbiAgICBpZiAoIXJ1biB8fCBydW4uc3RhdHVzICE9PSAnYWN0aXZlJykgcmV0dXJuO1xuICAgIHRoaXMuY2hhbGxlbmdlUnVuLnNldChydW4pO1xuICAgIHRoaXMuY2hhbGxlbmdlTGFzdFdvbi5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLmNoYWxsZW5nZUxhc3RCb3Quc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5jaGFsbGVuZ2VMYXN0Um91bmRTdGF0cy5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLmNoYWxsZW5nZU5ld1JlY29yZC5zZXQoZmFsc2UpO1xuICAgIHRoaXMuc3RhcnRDaGFsbGVuZ2VSb3VuZChydW4pO1xuICB9XG5cbiAgY29udGludWVDaGFsbGVuZ2UoKTogdm9pZCB7XG4gICAgY29uc3QgcnVuID0gdGhpcy5jaGFsbGVuZ2VSdW4oKTtcbiAgICBpZiAoIXJ1biB8fCB0aGlzLmNoYWxsZW5nZVBoYXNlKCkgIT09ICdiZXR3ZWVuJykgcmV0dXJuO1xuICAgIHRoaXMuc3RhcnRDaGFsbGVuZ2VSb3VuZChydW4pO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGFydENoYWxsZW5nZVJvdW5kKHJ1bjogQ2hlc3NpbWFsc0NoYWxsZW5nZVJ1bik6IHZvaWQge1xuICAgIGNvbnN0IGJvdCA9IHRoaXMuY2hhbGxlbmdlTGFkZGVyW01hdGgubWF4KDAsIHJ1bi5jdXJyZW50Um91bmQgLSAxKV07XG4gICAgaWYgKCFib3QpIHtcbiAgICAgIHRoaXMuY2hhbGxlbmdlUGhhc2Uuc2V0KCdjb21wbGV0ZWQnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5vbmxpbmVTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5vcGVuZWRPbmxpbmVHYW1lSWQgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5vcGVuaW5nT25saW5lR2FtZUlkID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuY2xlYXJCb3RUdXJuKCk7XG4gICAgdGhpcy50dXRvcmlhbE1vZGUuc2V0KGZhbHNlKTtcbiAgICB0aGlzLm9ubGluZUNvbm5lY3Rpb25TdGF0ZS5zZXQoJ2lkbGUnKTtcbiAgICB0aGlzLnNlbGVjdGVkTG9jYWxNb2RlLnNldCgnYm90Jyk7XG4gICAgdGhpcy5zZWxlY3RlZEJvYXJkU2l6ZS5zZXQoYm90LmJvYXJkU2l6ZSk7XG4gICAgdGhpcy5zZWxlY3RlZEJvdERpZmZpY3VsdHkuc2V0KGJvdC5kaWZmaWN1bHR5KTtcbiAgICB0aGlzLnNlbGVjdGVkQm90UHJvZmlsZUlkLnNldChib3QucHJvZmlsZUlkKTtcbiAgICB0aGlzLmdhbWVCb3RQcm9maWxlSWQuc2V0KGJvdC5wcm9maWxlSWQpO1xuICAgIHRoaXMuY2hhbGxlbmdlUGhhc2Uuc2V0KCdwbGF5aW5nJyk7XG4gICAgdGhpcy5sYXN0Q2hhbGxlbmdlSGFuZGxlZEtleSA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmxhc3RPdXRjb21lU291bmRLZXkgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5hdWRpby5zdG9wTXVzaWMoKTtcbiAgICB0aGlzLmdhbWUuc2V0KGNyZWF0ZUNoZXNzaW1hbHNHYW1lKGJvdC5ib2FyZFNpemUpKTtcbiAgICB0aGlzLmNsZWFyUmV2aWV3KCk7XG4gICAgdGhpcy5zZWxlY3RlZFBpZWNlSWQuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5zZWxlY3RlZEFuaW1hbC5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLm1vdmluZ1BpZWNlLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuc2NyZWVuLnNldCgnZ2FtZScpO1xuICAgIHRoaXMuc3RhcnRDaGVzc2ltYWxzR2FtZU11c2ljU29vbigpO1xuICAgIHRoaXMuYXVkaW8uZmxpcCgpO1xuICAgIHRoaXMuZm9jdXNCb2FyZFNvb24oKTtcbiAgfVxuXG4gIHN0YXJ0R2FtZSgpOiB2b2lkIHtcbiAgICB0aGlzLm9ubGluZVN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLm9wZW5lZE9ubGluZUdhbWVJZCA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLm9wZW5pbmdPbmxpbmVHYW1lSWQgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5jbGVhckJvdFR1cm4oKTtcbiAgICB0aGlzLmNoYWxsZW5nZVBoYXNlLnNldCgnaWRsZScpO1xuICAgIHRoaXMuY2hhbGxlbmdlUnVuLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuY2hhbGxlbmdlTGFzdFdvbi5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLmNoYWxsZW5nZUxhc3RCb3Quc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5jaGFsbGVuZ2VMYXN0Um91bmRTdGF0cy5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLmNoYWxsZW5nZU5ld1JlY29yZC5zZXQoZmFsc2UpO1xuICAgIHRoaXMudHV0b3JpYWxNb2RlLnNldChmYWxzZSk7XG4gICAgdGhpcy5vbmxpbmVDb25uZWN0aW9uU3RhdGUuc2V0KCdpZGxlJyk7XG4gICAgdGhpcy5nYW1lQm90UHJvZmlsZUlkLnNldCh0aGlzLnNlbGVjdGVkTG9jYWxNb2RlKCkgPT09ICdib3QnID8gdGhpcy5zZWxlY3RlZEJvdFByb2ZpbGVJZCgpIDogdW5kZWZpbmVkKTtcbiAgICB0aGlzLmxhc3RPdXRjb21lU291bmRLZXkgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5hdWRpby5zdG9wTXVzaWMoKTtcbiAgICB0aGlzLmdhbWUuc2V0KGNyZWF0ZUNoZXNzaW1hbHNHYW1lKHRoaXMuc2VsZWN0ZWRCb2FyZFNpemUoKSkpO1xuICAgIHRoaXMuY2xlYXJSZXZpZXcoKTtcbiAgICB0aGlzLnNlbGVjdGVkUGllY2VJZC5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLnNlbGVjdGVkQW5pbWFsLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMubW92aW5nUGllY2Uuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5zY3JlZW4uc2V0KCdnYW1lJyk7XG4gICAgdGhpcy5zdGFydENoZXNzaW1hbHNHYW1lTXVzaWNTb29uKCk7XG4gICAgdGhpcy5hdWRpby5mbGlwKCk7XG4gICAgdGhpcy5mb2N1c0JvYXJkU29vbigpO1xuICAgIHRoaXMucXVldWVCb3RUdXJuSWZOZWVkZWQoKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlQ2hhbGxlbmdlUm91bmRGaW5pc2hlZChnYW1lOiBDaGVzc2ltYWxzR2FtZVN0YXRlKTogdm9pZCB7XG4gICAgY29uc3QgcnVuID0gdGhpcy5jaGFsbGVuZ2VSdW4oKTtcbiAgICBjb25zdCBib3QgPSB0aGlzLmFjdGl2ZUNoYWxsZW5nZUJvdCgpO1xuICAgIGlmICghcnVuIHx8ICFib3QpIHJldHVybjtcblxuICAgIGNvbnN0IHdvbiA9IGdhbWUud2lubmVyID09PSAnd2hpdGUnO1xuICAgIGNvbnN0IHJvdW5kU3RhdHMgPSB0aGlzLmNyZWF0ZUNoYWxsZW5nZVJvdW5kU3RhdHMoZ2FtZSk7XG4gICAgY29uc3QgbmV4dExpdmVzID0gd29uID8gcnVuLmxpdmVzUmVtYWluaW5nIDogTWF0aC5tYXgoMCwgcnVuLmxpdmVzUmVtYWluaW5nIC0gMSk7XG4gICAgY29uc3QgbmV4dFN0cmVhayA9IHdvbiA/IHJ1bi5jdXJyZW50U3RyZWFrICsgMSA6IDA7XG4gICAgY29uc3QgY29tcGxldGVkID0gd29uICYmIHJ1bi5jdXJyZW50Um91bmQgPj0gdGhpcy5jaGFsbGVuZ2VMYWRkZXIubGVuZ3RoO1xuICAgIGNvbnN0IGZhaWxlZCA9ICF3b24gJiYgbmV4dExpdmVzIDw9IDA7XG4gICAgY29uc3QgZmluaXNoZWRBdCA9IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKTtcbiAgICBjb25zdCByb3VuZFJlc3VsdDogQ2hlc3NpbWFsc0NoYWxsZW5nZVJvdW5kUmVzdWx0ID0ge1xuICAgICAgcm91bmQ6IHJ1bi5jdXJyZW50Um91bmQsXG4gICAgICBib3RJZDogYm90LmlkLFxuICAgICAgcHJvZmlsZUlkOiBib3QucHJvZmlsZUlkLFxuICAgICAgd29uLFxuICAgICAgbGl2ZXNSZW1haW5pbmc6IG5leHRMaXZlcyxcbiAgICAgIHN0YXRzOiByb3VuZFN0YXRzLFxuICAgICAgZmluaXNoZWRBdCxcbiAgICB9O1xuICAgIGNvbnN0IG5leHRSdW46IENoZXNzaW1hbHNDaGFsbGVuZ2VSdW4gPSB7XG4gICAgICAuLi5ydW4sXG4gICAgICBzdGF0dXM6IGNvbXBsZXRlZCA/ICdjb21wbGV0ZWQnIDogZmFpbGVkID8gJ2ZhaWxlZCcgOiAnYWN0aXZlJyxcbiAgICAgIGxpdmVzUmVtYWluaW5nOiBuZXh0TGl2ZXMsXG4gICAgICB3aW5zOiBydW4ud2lucyArICh3b24gPyAxIDogMCksXG4gICAgICBsb3NzZXM6IHJ1bi5sb3NzZXMgKyAod29uID8gMCA6IDEpLFxuICAgICAgY3VycmVudFN0cmVhazogbmV4dFN0cmVhayxcbiAgICAgIGJlc3RTdHJlYWtJblJ1bjogTWF0aC5tYXgocnVuLmJlc3RTdHJlYWtJblJ1biwgbmV4dFN0cmVhayksXG4gICAgICBjdXJyZW50Um91bmQ6IGNvbXBsZXRlZCB8fCBmYWlsZWQgPyBydW4uY3VycmVudFJvdW5kIDogTWF0aC5taW4odGhpcy5jaGFsbGVuZ2VMYWRkZXIubGVuZ3RoLCBydW4uY3VycmVudFJvdW5kICsgMSksXG4gICAgICByb3VuZFJlc3VsdHM6IFsuLi5ydW4ucm91bmRSZXN1bHRzLCByb3VuZFJlc3VsdF0sXG4gICAgICB1cGRhdGVkQXQ6IGZpbmlzaGVkQXQsXG4gICAgICBmaW5pc2hlZEF0OiBjb21wbGV0ZWQgfHwgZmFpbGVkID8gZmluaXNoZWRBdCA6IHVuZGVmaW5lZCxcbiAgICB9O1xuXG4gICAgdGhpcy5jaGFsbGVuZ2VSdW4uc2V0KG5leHRSdW4pO1xuICAgIHRoaXMuY2hhbGxlbmdlTGFzdFdvbi5zZXQod29uKTtcbiAgICB0aGlzLmNoYWxsZW5nZUxhc3RCb3Quc2V0KGJvdCk7XG4gICAgdGhpcy5jaGFsbGVuZ2VMYXN0Um91bmRTdGF0cy5zZXQocm91bmRTdGF0cyk7XG4gICAgdGhpcy5jaGFsbGVuZ2VOZXdSZWNvcmQuc2V0KFxuICAgICAgcnVuLmN1cnJlbnRSb3VuZCA+IHRoaXMuY2hhbGxlbmdlU3RhdHMoKS5iZXN0Um91bmRSZWFjaGVkXG4gICAgICAgIHx8IE1hdGgubWF4KHJ1bi5iZXN0U3RyZWFrSW5SdW4sIG5leHRTdHJlYWspID4gdGhpcy5jaGFsbGVuZ2VTdGF0cygpLmJlc3RXaW5TdHJlYWssXG4gICAgKTtcbiAgICB0aGlzLmNoYWxsZW5nZVBoYXNlLnNldChjb21wbGV0ZWQgPyAnY29tcGxldGVkJyA6IGZhaWxlZCA/ICdmYWlsZWQnIDogJ2JldHdlZW4nKTtcblxuICAgIHZvaWQgdGhpcy5jaGFsbGVuZ2VQcm9ncmVzcy5hcHBseVJvdW5kUmVzdWx0KHtcbiAgICAgIHJ1bjogbmV4dFJ1bixcbiAgICAgIHJvdW5kUmVhY2hlZDogcnVuLmN1cnJlbnRSb3VuZCxcbiAgICAgIHdvbixcbiAgICAgIGNvbXBsZXRlZCxcbiAgICAgIHJvdW5kU3RhdHMsXG4gICAgfSkuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICBjb25zb2xlLndhcm4oJ1tDaGVzc2ltYWxzXSBjaGFsbGVuZ2Ugc3RhdHMgc2F2ZSBmYWlsZWQnLCBlcnJvcik7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFiYW5kb25DaGFsbGVuZ2VJZk5lZWRlZCgpOiB2b2lkIHtcbiAgICBjb25zdCBydW4gPSB0aGlzLmNoYWxsZW5nZVJ1bigpO1xuICAgIGlmICghcnVuIHx8IHJ1bi5zdGF0dXMgIT09ICdhY3RpdmUnIHx8IHRoaXMuY2hhbGxlbmdlUGhhc2UoKSA9PT0gJ2lkbGUnKSByZXR1cm47XG4gICAgdGhpcy5hYmFuZG9uQ2hhbGxlbmdlUnVuKHJ1bik7XG4gIH1cblxuICBwcml2YXRlIGFiYW5kb25DaGFsbGVuZ2VSdW4ocnVuPzogQ2hlc3NpbWFsc0NoYWxsZW5nZVJ1bik6IHZvaWQge1xuICAgIGlmICghcnVuIHx8IHJ1bi5zdGF0dXMgIT09ICdhY3RpdmUnKSByZXR1cm47XG4gICAgY29uc3Qgbm93ID0gbmV3IERhdGUoKS50b0lTT1N0cmluZygpO1xuICAgIGNvbnN0IG5leHRSdW46IENoZXNzaW1hbHNDaGFsbGVuZ2VSdW4gPSB7XG4gICAgICAuLi5ydW4sXG4gICAgICBzdGF0dXM6ICdhYmFuZG9uZWQnLFxuICAgICAgdXBkYXRlZEF0OiBub3csXG4gICAgICBmaW5pc2hlZEF0OiBub3csXG4gICAgfTtcbiAgICB2b2lkIHRoaXMuY2hhbGxlbmdlUHJvZ3Jlc3Muc2F2ZVJ1bihuZXh0UnVuKS5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgIGNvbnNvbGUud2FybignW0NoZXNzaW1hbHNdIGNoYWxsZW5nZSBhYmFuZG9uIHNhdmUgZmFpbGVkJywgZXJyb3IpO1xuICAgIH0pO1xuICB9XG5cbiAgc3RhcnRUdXRvcmlhbCgpOiB2b2lkIHtcbiAgICB0aGlzLm9ubGluZVN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLm9wZW5lZE9ubGluZUdhbWVJZCA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLm9wZW5pbmdPbmxpbmVHYW1lSWQgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5jbGVhckJvdFR1cm4oKTtcbiAgICB0aGlzLnR1dG9yaWFsTW9kZS5zZXQodHJ1ZSk7XG4gICAgdGhpcy5vbmxpbmVDb25uZWN0aW9uU3RhdGUuc2V0KCdpZGxlJyk7XG4gICAgdGhpcy5nYW1lQm90UHJvZmlsZUlkLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuc2VsZWN0ZWRMb2NhbE1vZGUuc2V0KCdvbmUtZGV2aWNlJyk7XG4gICAgdGhpcy5sYXN0T3V0Y29tZVNvdW5kS2V5ID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuYXVkaW8uc3RvcE11c2ljKCk7XG4gICAgdGhpcy5nYW1lLnNldCh0aGlzLmNyZWF0ZVR1dG9yaWFsR2FtZSgpKTtcbiAgICB0aGlzLmNsZWFyUmV2aWV3KCk7XG4gICAgdGhpcy5zZWxlY3RlZFBpZWNlSWQuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5zZWxlY3RlZEFuaW1hbC5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLm1vdmluZ1BpZWNlLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuc2NyZWVuLnNldCgnZ2FtZScpO1xuICAgIHRoaXMuc3RhcnRDaGVzc2ltYWxzR2FtZU11c2ljU29vbigpO1xuICAgIHRoaXMuYXVkaW8uZmxpcCgpO1xuICAgIHRoaXMuZm9jdXNCb2FyZFNvb24oKTtcbiAgfVxuXG4gIGFzeW5jIGNyZWF0ZU9ubGluZUdhbWUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5jbGVhckJvdFR1cm4oKTtcbiAgICB0aGlzLnR1dG9yaWFsTW9kZS5zZXQoZmFsc2UpO1xuICAgIHRoaXMuZ2FtZUJvdFByb2ZpbGVJZC5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLm9ubGluZUNvbm5lY3Rpb25TdGF0ZS5zZXQoJ2Nvbm5lY3RpbmcnKTtcbiAgICB0aGlzLmF1ZGlvLnN0b3BNdXNpYygpO1xuICAgIHRoaXMub25saW5lRXJyb3Iuc2V0KCcnKTtcbiAgICB0aGlzLm9ubGluZUFjdGlvbi5zZXQoJ2NyZWF0ZScpO1xuICAgIHRoaXMub25saW5lTG9hZGluZy5zZXQodHJ1ZSk7XG4gICAgdGhpcy5yZXN1bWVTcGxhc2hWaXNpYmxlLnNldCh0cnVlKTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgZ2FtZSA9IGF3YWl0IHRoaXMub25saW5lLmNyZWF0ZUdhbWUodGhpcy5zZWxlY3RlZEJvYXJkU2l6ZSgpKTtcbiAgICAgIHRoaXMub25saW5lVWlkLnNldCh0aGlzLm9ubGluZS5jdXJyZW50VWlkKTtcbiAgICAgIHRoaXMucXVldWVIaXN0b3J5V2F0Y2goKTtcbiAgICAgIHRoaXMub3BlbmVkT25saW5lR2FtZUlkID0gZ2FtZS5pZDtcbiAgICAgIHRoaXMud2F0Y2hPbmxpbmVHYW1lKGdhbWUuaWQpO1xuICAgICAgdGhpcy5nYW1lLnNldChnYW1lKTtcbiAgICAgIHRoaXMuY2xlYXJSZXZpZXcoKTtcbiAgICAgIHRoaXMuc2NyZWVuLnNldCgnZ2FtZScpO1xuICAgICAgdGhpcy5zdGFydENoZXNzaW1hbHNHYW1lTXVzaWNTb29uKCk7XG4gICAgICB0aGlzLmF1ZGlvLmZsaXAoKTtcbiAgICAgIHZvaWQgdGhpcy5oYXB0aWNzLnN1Y2Nlc3MoKTtcbiAgICAgIHRoaXMuZm9jdXNCb2FyZFNvb24oKTtcbiAgICAgIHZvaWQgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCh0aGlzLmNoZXNzaW1hbHNHYW1lUm91dGUoZ2FtZS5pZCkpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ1tDaGVzc2ltYWxzXSBjcmVhdGUgb25saW5lIGdhbWUgZmFpbGVkJywgZXJyb3IpO1xuICAgICAgdGhpcy5vbmxpbmVFcnJvci5zZXQodGhpcy50KCdjaGVzc2ltYWxzT25saW5lRXJyb3InKSk7XG4gICAgICB0aGlzLnJlc3VtZVNwbGFzaFZpc2libGUuc2V0KGZhbHNlKTtcbiAgICAgIHRoaXMuc3RhcnRDaGVzc2ltYWxzTWVudU11c2ljU29vbigpO1xuICAgICAgdGhpcy5hdWRpby5taXNzKCk7XG4gICAgICB2b2lkIHRoaXMuaGFwdGljcy5lcnJvcigpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLm9ubGluZUFjdGlvbi5zZXQodW5kZWZpbmVkKTtcbiAgICAgIHRoaXMub25saW5lTG9hZGluZy5zZXQoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGpvaW5PbmxpbmVHYW1lQnlDb2RlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGdhbWVJZCA9IHRoaXMub25saW5lLm5vcm1hbGl6ZUdhbWVJZCh0aGlzLm9ubGluZUpvaW5Db2RlKCkpO1xuICAgIGlmICghdGhpcy5vbmxpbmUuaXNWYWxpZEdhbWVJZChnYW1lSWQpKSB7XG4gICAgICB0aGlzLm9ubGluZUVycm9yLnNldCh0aGlzLnQoJ2NoZXNzaW1hbHNPbmxpbmVJbnZhbGlkQ29kZScpKTtcbiAgICAgIHRoaXMuYXVkaW8ubWlzcygpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLm9ubGluZUpvaW5Db2RlLnNldChnYW1lSWQpO1xuICAgIHRoaXMub25saW5lQWN0aW9uLnNldCgnam9pbicpO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLm9wZW5PbmxpbmVHYW1lKGdhbWVJZCk7XG4gICAgICBpZiAodGhpcy5vcGVuZWRPbmxpbmVHYW1lSWQgPT09IGdhbWVJZCkge1xuICAgICAgICB2b2lkIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwodGhpcy5jaGVzc2ltYWxzR2FtZVJvdXRlKGdhbWVJZCkpO1xuICAgICAgfVxuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLm9ubGluZUFjdGlvbi5zZXQodW5kZWZpbmVkKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBvcGVuT25saW5lR2FtZShnYW1lSWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IG5vcm1hbGl6ZWRHYW1lSWQgPSB0aGlzLm9ubGluZS5ub3JtYWxpemVHYW1lSWQoZ2FtZUlkKTtcbiAgICBpZiAoIXRoaXMub25saW5lLmlzVmFsaWRHYW1lSWQobm9ybWFsaXplZEdhbWVJZCkpIHtcbiAgICAgIHRoaXMub25saW5lRXJyb3Iuc2V0KHRoaXMudCgnY2hlc3NpbWFsc09ubGluZUludmFsaWRDb2RlJykpO1xuICAgICAgdGhpcy5zY3JlZW4uc2V0KCdob21lJyk7XG4gICAgICB0aGlzLnN0YXJ0Q2hlc3NpbWFsc01lbnVNdXNpY1Nvb24oKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMub3BlbmVkT25saW5lR2FtZUlkID09PSBub3JtYWxpemVkR2FtZUlkIHx8IHRoaXMub3BlbmluZ09ubGluZUdhbWVJZCA9PT0gbm9ybWFsaXplZEdhbWVJZCkgcmV0dXJuO1xuXG4gICAgdGhpcy5vbmxpbmVFcnJvci5zZXQoJycpO1xuICAgIHRoaXMuY2xlYXJCb3RUdXJuKCk7XG4gICAgdGhpcy50dXRvcmlhbE1vZGUuc2V0KGZhbHNlKTtcbiAgICB0aGlzLmdhbWVCb3RQcm9maWxlSWQuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5hdWRpby5zdG9wTXVzaWMoKTtcbiAgICB0aGlzLm9ubGluZUNvbm5lY3Rpb25TdGF0ZS5zZXQoJ2Nvbm5lY3RpbmcnKTtcbiAgICB0aGlzLm9ubGluZUxvYWRpbmcuc2V0KHRydWUpO1xuICAgIHRoaXMucmVzdW1lU3BsYXNoVmlzaWJsZS5zZXQodHJ1ZSk7XG4gICAgdGhpcy5zY3JlZW4uc2V0KCdnYW1lJyk7XG4gICAgdGhpcy5vcGVuaW5nT25saW5lR2FtZUlkID0gbm9ybWFsaXplZEdhbWVJZDtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5vbmxpbmUuam9pbkdhbWUobm9ybWFsaXplZEdhbWVJZCk7XG4gICAgICB0aGlzLm9ubGluZVVpZC5zZXQodGhpcy5vbmxpbmUuY3VycmVudFVpZCk7XG4gICAgICB0aGlzLnF1ZXVlSGlzdG9yeVdhdGNoKCk7XG4gICAgICB0aGlzLm9wZW5lZE9ubGluZUdhbWVJZCA9IG5vcm1hbGl6ZWRHYW1lSWQ7XG4gICAgICB0aGlzLndhdGNoT25saW5lR2FtZShub3JtYWxpemVkR2FtZUlkKTtcbiAgICAgIHRoaXMuc2NyZWVuLnNldCgnZ2FtZScpO1xuICAgICAgdGhpcy5zdGFydENoZXNzaW1hbHNHYW1lTXVzaWNTb29uKCk7XG4gICAgICB2b2lkIHRoaXMuaGFwdGljcy5zZWxlY3Rpb24oKTtcbiAgICAgIHRoaXMuZm9jdXNCb2FyZFNvb24oKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS53YXJuKCdbQ2hlc3NpbWFsc10gb3BlbiBvbmxpbmUgZ2FtZSBmYWlsZWQnLCBlcnJvcik7XG4gICAgICB0aGlzLm9wZW5lZE9ubGluZUdhbWVJZCA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMub25saW5lQ29ubmVjdGlvblN0YXRlLnNldCgnZXJyb3InKTtcbiAgICAgIHRoaXMub25saW5lRXJyb3Iuc2V0KHRoaXMub25saW5lT3BlbkVycm9yTWVzc2FnZShlcnJvcikpO1xuICAgICAgdGhpcy5zY3JlZW4uc2V0KCdob21lJyk7XG4gICAgICB0aGlzLnJlc3VtZVNwbGFzaFZpc2libGUuc2V0KGZhbHNlKTtcbiAgICAgIHRoaXMuc3RhcnRDaGVzc2ltYWxzTWVudU11c2ljU29vbigpO1xuICAgICAgdGhpcy5hdWRpby5taXNzKCk7XG4gICAgICB2b2lkIHRoaXMuaGFwdGljcy5lcnJvcigpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLm9wZW5pbmdPbmxpbmVHYW1lSWQgPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLm9ubGluZUxvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICByZXN0YXJ0R2FtZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5nYW1lKCkubW9kZSA9PT0gJ29ubGluZScgJiYgdGhpcy5nYW1lKCkuc3RhdHVzID09PSAnZmluaXNoZWQnKSB7XG4gICAgICB2b2lkIHRoaXMucmVxdWVzdE9ubGluZVJlbWF0Y2goKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5jbGVhckJvdFR1cm4oKTtcbiAgICB0aGlzLmxhc3RPdXRjb21lU291bmRLZXkgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5nYW1lLnNldCh0aGlzLnR1dG9yaWFsTW9kZSgpID8gdGhpcy5jcmVhdGVUdXRvcmlhbEdhbWUoKSA6IGNyZWF0ZUNoZXNzaW1hbHNHYW1lKHRoaXMuZ2FtZSgpLmJvYXJkU2l6ZSkpO1xuICAgIHRoaXMuY2xlYXJSZXZpZXcoKTtcbiAgICB0aGlzLnNlbGVjdGVkUGllY2VJZC5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLnNlbGVjdGVkQW5pbWFsLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMubW92aW5nUGllY2Uuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5hdWRpby5mbGlwKCk7XG4gICAgdGhpcy5zdGFydENoZXNzaW1hbHNHYW1lTXVzaWNTb29uKCk7XG4gICAgdGhpcy5mb2N1c0JvYXJkU29vbigpO1xuICAgIHRoaXMucXVldWVCb3RUdXJuSWZOZWVkZWQoKTtcbiAgfVxuXG4gIGV4aXRUdXRvcmlhbCgpOiB2b2lkIHtcbiAgICB0aGlzLnR1dG9yaWFsTW9kZS5zZXQoZmFsc2UpO1xuICAgIHRoaXMucmVzZXRUb01vZGVTZXR1cCgpO1xuICB9XG5cbiAgcmVzZXRUb01vZGVTZXR1cCgpOiB2b2lkIHtcbiAgICB0aGlzLmFiYW5kb25DaGFsbGVuZ2VJZk5lZWRlZCgpO1xuICAgIHRoaXMuY2hhbGxlbmdlUGhhc2Uuc2V0KCdpZGxlJyk7XG4gICAgdGhpcy5jaGFsbGVuZ2VSdW4uc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5jaGFsbGVuZ2VMYXN0V29uLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuY2hhbGxlbmdlTGFzdEJvdC5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLmNoYWxsZW5nZUxhc3RSb3VuZFN0YXRzLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMudHV0b3JpYWxNb2RlLnNldChmYWxzZSk7XG4gICAgdGhpcy5yZXNldEZpbmlzaGVkTG9jYWxHYW1lRm9yTmV4dFZpc2l0KCk7XG4gICAgdGhpcy5vbmxpbmVTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5vbmxpbmVTdWJzY3JpcHRpb24gPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5vcGVuZWRPbmxpbmVHYW1lSWQgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5vcGVuaW5nT25saW5lR2FtZUlkID0gdW5kZWZpbmVkO1xuICAgIHRoaXMucmVzdW1lU3BsYXNoVmlzaWJsZS5zZXQoZmFsc2UpO1xuICAgIHRoaXMuY2xlYXJCb3RUdXJuKCk7XG4gICAgdGhpcy5vbmxpbmVDb25uZWN0aW9uU3RhdGUuc2V0KCdpZGxlJyk7XG4gICAgdGhpcy5zY3JlZW4uc2V0KCdob21lJyk7XG4gICAgdGhpcy5zdGFydENoZXNzaW1hbHNNZW51TXVzaWNTb29uKCk7XG4gICAgdGhpcy5zZWxlY3RlZFBpZWNlSWQuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5zZWxlY3RlZEFuaW1hbC5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLm1vdmluZ1BpZWNlLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuY2xlYXJSZXZpZXcoKTtcbiAgfVxuXG4gIHJlc2V0VG9HYW1lc01lbnUoKTogdm9pZCB7XG4gICAgdGhpcy5jb25maXJtQWN0aW9uLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMucmVzZXRUb01vZGVTZXR1cCgpO1xuICAgIGNvbnN0IHJvdXRlID0gdGhpcy5taW5pR2FtZXNCYXNlUm91dGUoKTtcbiAgICB2b2lkIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwocm91dGUpLmNhdGNoKCgpID0+IHtcbiAgICAgIHRoaXMuc2NyZWVuLnNldCgnaG9tZScpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSByZXNldEZpbmlzaGVkTG9jYWxHYW1lRm9yTmV4dFZpc2l0KHJldHVybkhvbWUgPSBmYWxzZSk6IHZvaWQge1xuICAgIGNvbnN0IGdhbWUgPSB0aGlzLmdhbWUoKTtcbiAgICBpZiAoZ2FtZS5tb2RlICE9PSAnbG9jYWwnIHx8IGdhbWUuc3RhdHVzICE9PSAnZmluaXNoZWQnKSByZXR1cm47XG4gICAgdGhpcy5jbGVhckJvdFR1cm4oKTtcbiAgICBpZiAodGhpcy5tb3ZlQW5pbWF0aW9uVGltZXIpIGNsZWFyVGltZW91dCh0aGlzLm1vdmVBbmltYXRpb25UaW1lcik7XG4gICAgdGhpcy5tb3ZlQW5pbWF0aW9uVGltZXIgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5zZWxlY3RlZFBpZWNlSWQuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5zZWxlY3RlZEFuaW1hbC5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLm1vdmluZ1BpZWNlLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuY2xlYXJSZXZpZXcoKTtcbiAgICB0aGlzLmNvbmZpcm1BY3Rpb24uc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5nYW1lLnNldChjcmVhdGVDaGVzc2ltYWxzR2FtZShnYW1lLmJvYXJkU2l6ZSkpO1xuICAgIGlmIChyZXR1cm5Ib21lKSB7XG4gICAgICB0aGlzLnNjcmVlbi5zZXQoJ2hvbWUnKTtcbiAgICAgIHRoaXMuc3RhcnRDaGVzc2ltYWxzTWVudU11c2ljU29vbigpO1xuICAgIH1cbiAgfVxuXG4gIHJlcXVlc3RSZXN0YXJ0R2FtZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc0NoYWxsZW5nZUFjdGl2ZSgpKSByZXR1cm47XG4gICAgaWYgKCF0aGlzLmNhbkNvbnRyb2xDdXJyZW50R2FtZSgpKSByZXR1cm47XG4gICAgdGhpcy5jb25maXJtQWN0aW9uLnNldCgncmVzdGFydCcpO1xuICAgIHRoaXMuYXVkaW8uZmxpcCgpO1xuICB9XG5cbiAgcmVxdWVzdENoYW5nZU1vZGUoKTogdm9pZCB7XG4gICAgdGhpcy5jb25maXJtQWN0aW9uLnNldCgnbW9kZScpO1xuICAgIHRoaXMuYXVkaW8uZmxpcCgpO1xuICB9XG5cbiAgcmVxdWVzdENoYW5nZUdhbWUoKTogdm9pZCB7XG4gICAgdGhpcy5jb25maXJtQWN0aW9uLnNldCgnZ2FtZXMnKTtcbiAgICB0aGlzLmF1ZGlvLmZsaXAoKTtcbiAgfVxuXG4gIHJlcXVlc3RSZXNpZ24oKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZ2FtZSgpLnN0YXR1cyA9PT0gJ2ZpbmlzaGVkJyB8fCAhdGhpcy5jYW5Db250cm9sQ3VycmVudEdhbWUoKSkgcmV0dXJuO1xuICAgIHRoaXMuY29uZmlybUFjdGlvbi5zZXQoJ3Jlc2lnbicpO1xuICAgIHRoaXMuYXVkaW8uZmxpcCgpO1xuICB9XG5cbiAgY2xvc2VDb25maXJtTW9kYWwoKTogdm9pZCB7XG4gICAgdGhpcy5jb25maXJtQWN0aW9uLnNldCh1bmRlZmluZWQpO1xuICB9XG5cbiAgY29uZmlybVBlbmRpbmdBY3Rpb24odG9rZW4/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAodG9rZW4gIT09ICdjb25maXJtJykge1xuICAgICAgdGhpcy5jbG9zZUNvbmZpcm1Nb2RhbCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGFjdGlvbiA9IHRoaXMuY29uZmlybUFjdGlvbigpO1xuICAgIHRoaXMuY29uZmlybUFjdGlvbi5zZXQodW5kZWZpbmVkKTtcblxuICAgIGlmIChhY3Rpb24gPT09ICdyZXN0YXJ0Jykge1xuICAgICAgdGhpcy5yZXN0YXJ0R2FtZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoYWN0aW9uID09PSAnbW9kZScpIHtcbiAgICAgIHRoaXMucmVzZXRUb01vZGVTZXR1cCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoYWN0aW9uID09PSAnZ2FtZXMnKSB7XG4gICAgICB0aGlzLnJlc2V0VG9HYW1lc01lbnUoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGFjdGlvbiA9PT0gJ3Jlc2lnbicpIHtcbiAgICAgIHRoaXMucmVzaWduR2FtZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoYWN0aW9uID09PSAnY2hhbGxlbmdlLW5ldycpIHtcbiAgICAgIHRoaXMuYWJhbmRvbkNoYWxsZW5nZVJ1bih0aGlzLmFjdGl2ZVN0b3JlZENoYWxsZW5nZVJ1bigpKTtcbiAgICAgIHRoaXMuY3JlYXRlTmV3Q2hhbGxlbmdlUnVuKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZXNpZ25HYW1lKCk6IHZvaWQge1xuICAgIGNvbnN0IGdhbWUgPSB0aGlzLmdhbWUoKTtcbiAgICBpZiAoZ2FtZS5zdGF0dXMgPT09ICdmaW5pc2hlZCcpIHJldHVybjtcbiAgICBpZiAoZ2FtZS5tb2RlID09PSAnb25saW5lJykge1xuICAgICAgdm9pZCB0aGlzLm9ubGluZS5yZXNpZ24oZ2FtZS5pZCkuY2F0Y2goKCkgPT4ge1xuICAgICAgICB0aGlzLm9ubGluZUVycm9yLnNldCh0aGlzLnQoJ2NoZXNzaW1hbHNPbmxpbmVFcnJvcicpKTtcbiAgICAgICAgdGhpcy5hdWRpby5taXNzKCk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5jbGVhckJvdFR1cm4oKTtcbiAgICB0aGlzLmdhbWUuc2V0KHJlc2lnbkNoZXNzaW1hbHNHYW1lKGdhbWUsIGdhbWUuY3VycmVudFR1cm4pKTtcbiAgICB0aGlzLnNob3dMYXRlc3RSZXZpZXdTbmFwc2hvdCgpO1xuICAgIHRoaXMuc2VsZWN0ZWRQaWVjZUlkLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuc2VsZWN0ZWRBbmltYWwuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5tb3ZpbmdQaWVjZS5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLnBsYXlDaGVzc2ltYWxzT3V0Y29tZVNvdW5kKCk7XG4gIH1cblxuICBvcGVuUnVsZXNNb2RhbCgpOiB2b2lkIHtcbiAgICB0aGlzLmlzUnVsZXNNb2RhbE9wZW4uc2V0KHRydWUpO1xuICAgIHRoaXMuYXVkaW8uZmxpcCgpO1xuICB9XG5cbiAgY2xvc2VSdWxlc01vZGFsKCk6IHZvaWQge1xuICAgIHRoaXMuaXNSdWxlc01vZGFsT3Blbi5zZXQoZmFsc2UpO1xuICB9XG5cbiAgb3BlblNldHRpbmdzTW9kYWwoKTogdm9pZCB7XG4gICAgdGhpcy5pc1NldHRpbmdzTW9kYWxPcGVuLnNldCh0cnVlKTtcbiAgICB0aGlzLmF1ZGlvLmZsaXAoKTtcbiAgfVxuXG4gIGNsb3NlU2V0dGluZ3NNb2RhbCgpOiB2b2lkIHtcbiAgICB0aGlzLmlzU2V0dGluZ3NNb2RhbE9wZW4uc2V0KGZhbHNlKTtcbiAgfVxuXG4gIG9wZW5BYm91dE1vZGFsKCk6IHZvaWQge1xuICAgIHRoaXMuaXNBYm91dE1vZGFsT3Blbi5zZXQodHJ1ZSk7XG4gICAgdGhpcy5hdWRpby5mbGlwKCk7XG4gIH1cblxuICBjbG9zZUFib3V0TW9kYWwoKTogdm9pZCB7XG4gICAgdGhpcy5pc0Fib3V0TW9kYWxPcGVuLnNldChmYWxzZSk7XG4gIH1cblxuICBzZXRNdXNpY1ZvbHVtZSh2YWx1ZTogbnVtYmVyIHwgUmFuZ2VWYWx1ZSk6IHZvaWQge1xuICAgIGNvbnN0IHZvbHVtZSA9IHRoaXMucmFuZ2VWYWx1ZVRvTnVtYmVyKHZhbHVlKTtcbiAgICBpZiAodGhpcy5tdXNpY1ZvbHVtZUNvbnRyb2wudmFsdWUgIT09IHZvbHVtZSkge1xuICAgICAgdGhpcy5tdXNpY1ZvbHVtZUNvbnRyb2wuc2V0VmFsdWUodm9sdW1lLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgfVxuICAgIHRoaXMuYXVkaW8uc2V0TXVzaWNWb2x1bWUodm9sdW1lIC8gMTAwKTtcbiAgICBpZiAodm9sdW1lID4gMCAmJiB0aGlzLmF1ZGlvLm11c2ljRW5hYmxlZCgpKSB0aGlzLnN5bmNDaGVzc2ltYWxzTXVzaWNBZnRlclNldHRpbmdzQ2hhbmdlKCk7XG4gIH1cblxuICBzZXRTZnhWb2x1bWUodmFsdWU6IG51bWJlciB8IFJhbmdlVmFsdWUpOiB2b2lkIHtcbiAgICBjb25zdCB2b2x1bWUgPSB0aGlzLnJhbmdlVmFsdWVUb051bWJlcih2YWx1ZSk7XG4gICAgaWYgKHRoaXMuc2Z4Vm9sdW1lQ29udHJvbC52YWx1ZSAhPT0gdm9sdW1lKSB7XG4gICAgICB0aGlzLnNmeFZvbHVtZUNvbnRyb2wuc2V0VmFsdWUodm9sdW1lLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgfVxuICAgIHRoaXMuYXVkaW8uc2V0U2Z4Vm9sdW1lKHZvbHVtZSAvIDEwMCk7XG4gIH1cblxuICBwcml2YXRlIHR1dG9yaWFsRXhwZWN0ZWRNb3ZlKCk6IENoZXNzaW1hbHNUdXRvcmlhbEV4cGVjdGVkTW92ZSB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKCF0aGlzLnR1dG9yaWFsTW9kZSgpIHx8IHRoaXMuZ2FtZSgpLnN0YXR1cyAhPT0gJ2luX3Byb2dyZXNzJykgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICBjb25zdCBzdGVwczogQ2hlc3NpbWFsc1R1dG9yaWFsRXhwZWN0ZWRNb3ZlW10gPSBbXG4gICAgICB7IHBpZWNlSWQ6ICdUVzEnLCB0bzogeyByb3c6IDMsIGNvbDogMSB9IH0sXG4gICAgICB7IHBpZWNlSWQ6ICdUQjEnLCB0bzogeyByb3c6IDIsIGNvbDogMiB9IH0sXG4gICAgICB7IHBpZWNlSWQ6ICdUVzEnLCB0bzogeyByb3c6IDIsIGNvbDogMiB9IH0sXG4gICAgICB7IHBpZWNlSWQ6ICdUQjInLCB0bzogeyByb3c6IDIsIGNvbDogNSB9IH0sXG4gICAgICB7IHBpZWNlSWQ6ICdUVzEnLCB0bzogeyByb3c6IDEsIGNvbDogNCB9LCBhbmltYWw6ICdrYW5nYXJvbycgfSxcbiAgICAgIHsgcGllY2VJZDogJ1RCMicsIHRvOiB7IHJvdzogMywgY29sOiA1IH0gfSxcbiAgICAgIHsgcGllY2VJZDogJ1RXMScsIHRvOiB7IHJvdzogMCwgY29sOiA0IH0gfSxcbiAgICBdO1xuICAgIHJldHVybiBzdGVwc1t0aGlzLmdhbWUoKS5tb3ZlQ291bnRdO1xuICB9XG5cbiAgaXNQb3dlckNhcmRCbG9ja2VkQnlUdXRvcmlhbChhbmltYWw6IENoZXNzaW1hbHNBbmltYWxUeXBlKTogYm9vbGVhbiB7XG4gICAgY29uc3QgZXhwZWN0ZWQgPSB0aGlzLnR1dG9yaWFsRXhwZWN0ZWRNb3ZlKCk7XG4gICAgcmV0dXJuICEhZXhwZWN0ZWQ/LmFuaW1hbCAmJiBleHBlY3RlZC5hbmltYWwgIT09IGFuaW1hbDtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlVHV0b3JpYWxHYW1lKCk6IENoZXNzaW1hbHNHYW1lU3RhdGUge1xuICAgIGNvbnN0IGJhc2UgPSBjcmVhdGVDaGVzc2ltYWxzR2FtZSg2KTtcbiAgICBjb25zdCBwaWVjZXM6IENoZXNzaW1hbHNQaWVjZVtdID0gW1xuICAgICAgeyBpZDogJ1RXMScsIGNvbG9yOiAnd2hpdGUnLCBwb3NpdGlvbjogeyByb3c6IDQsIGNvbDogMSB9LCBjYXB0dXJlZDogZmFsc2UgfSxcbiAgICAgIHsgaWQ6ICdUQjEnLCBjb2xvcjogJ2JsYWNrJywgcG9zaXRpb246IHsgcm93OiAxLCBjb2w6IDIgfSwgY2FwdHVyZWQ6IGZhbHNlIH0sXG4gICAgICB7IGlkOiAnVEIyJywgY29sb3I6ICdibGFjaycsIHBvc2l0aW9uOiB7IHJvdzogMSwgY29sOiA1IH0sIGNhcHR1cmVkOiBmYWxzZSB9LFxuICAgICAgeyBpZDogJ1RCMycsIGNvbG9yOiAnYmxhY2snLCBwb3NpdGlvbjogeyByb3c6IDEsIGNvbDogNCB9LCBjYXB0dXJlZDogZmFsc2UgfSxcbiAgICBdO1xuICAgIHJldHVybiB7XG4gICAgICAuLi5iYXNlLFxuICAgICAgaWQ6ICdUVVRPUklBTCcsXG4gICAgICBwaWVjZXMsXG4gICAgICBjdXJyZW50VHVybjogJ3doaXRlJyxcbiAgICAgIG1vdmVDb3VudDogMCxcbiAgICAgIHBsYXllcnM6IHtcbiAgICAgICAgd2hpdGU6IHtcbiAgICAgICAgICAuLi5iYXNlLnBsYXllcnMud2hpdGUsXG4gICAgICAgICAgcG93ZXJVbmxvY2tlZDogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICAgIGJsYWNrOiB7XG4gICAgICAgICAgLi4uYmFzZS5wbGF5ZXJzLmJsYWNrLFxuICAgICAgICAgIHBvd2VyVW5sb2NrZWQ6IGZhbHNlLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIG1vdmVIaXN0b3J5OiBbXG4gICAgICAgIHtcbiAgICAgICAgICBtb3ZlTnVtYmVyOiAwLFxuICAgICAgICAgIHBpZWNlczogcGllY2VzLm1hcCgocGllY2UpID0+ICh7IC4uLnBpZWNlLCBwb3NpdGlvbjogeyAuLi5waWVjZS5wb3NpdGlvbiB9IH0pKSxcbiAgICAgICAgICBjdXJyZW50VHVybjogJ3doaXRlJyxcbiAgICAgICAgICBzdGF0dXM6ICdpbl9wcm9ncmVzcycsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGJhc2ljTW92ZXNGb3JDb2xvcihnYW1lOiBDaGVzc2ltYWxzR2FtZVN0YXRlLCBjb2xvcjogQ2hlc3NpbWFsc1BsYXllckNvbG9yKTogQ2hlc3NpbWFsc01vdmVbXSB7XG4gICAgY29uc3QgdHVyblN0YXRlID0gY29sb3IgPT09IGdhbWUuY3VycmVudFR1cm4gPyBnYW1lIDogeyAuLi5nYW1lLCBjdXJyZW50VHVybjogY29sb3IgfTtcbiAgICByZXR1cm4gdHVyblN0YXRlLnBpZWNlc1xuICAgICAgLmZpbHRlcigocGllY2UpID0+IHBpZWNlLmNvbG9yID09PSBjb2xvciAmJiAhcGllY2UuY2FwdHVyZWQpXG4gICAgICAuZmxhdE1hcCgocGllY2UpID0+IGdldENoZXNzaW1hbHNMZWdhbE1vdmVzKHR1cm5TdGF0ZSwgcGllY2UuaWQpKTtcbiAgfVxuXG4gIHNlbGVjdENlbGwocG9zaXRpb246IENoZXNzaW1hbHNQb3NpdGlvbik6IHZvaWQge1xuICAgIGNvbnN0IGdhbWUgPSB0aGlzLmdhbWUoKTtcbiAgICBpZiAodGhpcy5wcm9qZWN0aW9uTW9kZSB8fCBnYW1lLnN0YXR1cyAhPT0gJ2luX3Byb2dyZXNzJyB8fCAhdGhpcy5jYW5QbGF5Q3VycmVudFR1cm4oKSB8fCB0aGlzLm1vdmluZ1BpZWNlKCkgfHwgdGhpcy5tb3ZlU3luY2luZygpKSByZXR1cm47XG5cbiAgICBjb25zdCBwaWVjZSA9IGdldENoZXNzaW1hbHNQaWVjZUF0KGdhbWUsIHBvc2l0aW9uKTtcbiAgICBpZiAocGllY2U/LmNvbG9yID09PSBnYW1lLmN1cnJlbnRUdXJuKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkUGllY2VJZC5zZXQocGllY2UuaWQpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG1vdmUgPSB0aGlzLmxlZ2FsTW92ZXMoKS5maW5kKChpdGVtKSA9PiBwb3NpdGlvbktleShpdGVtLnRvKSA9PT0gcG9zaXRpb25LZXkocG9zaXRpb24pKTtcbiAgICBpZiAoIW1vdmUpIHJldHVybjtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCB1cGRhdGVkID0gYXBwbHlDaGVzc2ltYWxzTW92ZShnYW1lLCBtb3ZlKTtcbiAgICAgIGlmIChtb3ZlLmFuaW1hbCkgdGhpcy5wbGF5TW92ZVNvdW5kKG1vdmUpO1xuICAgICAgaWYgKHVwZGF0ZWQuc3RhdHVzID09PSAnZmluaXNoZWQnKSB0aGlzLnBsYXlDaGVzc2ltYWxzT3V0Y29tZVNvdW5kKHVwZGF0ZWQpO1xuICAgICAgdGhpcy5hbmltYXRlTW92ZShnYW1lLCBtb3ZlLCB1cGRhdGVkKTtcbiAgICAgIGlmIChnYW1lLm1vZGUgPT09ICdvbmxpbmUnKSB7XG4gICAgICAgIHRoaXMubW92ZVN5bmNpbmcuc2V0KHRydWUpO1xuICAgICAgICB2b2lkIHRoaXMub25saW5lXG4gICAgICAgICAgLm1vdmUoZ2FtZS5pZCwgbW92ZSlcbiAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICB2b2lkIHRoaXMuaGFwdGljcy5pbXBhY3QobW92ZS5jYXB0dXJlc1BpZWNlSWQgPyAnbWVkaXVtJyA6ICdsaWdodCcpO1xuICAgICAgICAgIH0pXG4gICAgICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKCdbQ2hlc3NpbWFsc10gb25saW5lIG1vdmUgZmFpbGVkJywgeyBnYW1lSWQ6IGdhbWUuaWQsIG1vdmUsIGVycm9yIH0pO1xuICAgICAgICAgICAgdGhpcy5nYW1lLnNldChnYW1lKTtcbiAgICAgICAgICAgIHRoaXMub25saW5lRXJyb3Iuc2V0KHRoaXMudCgnY2hlc3NpbWFsc09ubGluZUVycm9yJykpO1xuICAgICAgICAgICAgdGhpcy5hdWRpby5taXNzKCk7XG4gICAgICAgICAgICB2b2lkIHRoaXMuaGFwdGljcy5lcnJvcigpO1xuICAgICAgICAgIH0pXG4gICAgICAgICAgLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5tb3ZlU3luY2luZy5zZXQoZmFsc2UpO1xuICAgICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgdGhpcy5zZWxlY3RlZFBpZWNlSWQuc2V0KHVuZGVmaW5lZCk7XG4gICAgICB0aGlzLnNlbGVjdGVkQW5pbWFsLnNldCh1bmRlZmluZWQpO1xuICAgICAgaWYgKCFtb3ZlLmFuaW1hbCkgdGhpcy5wbGF5TW92ZVNvdW5kKG1vdmUpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgdGhpcy5hdWRpby5taXNzKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhbmltYXRlTW92ZShnYW1lOiBDaGVzc2ltYWxzR2FtZVN0YXRlLCBtb3ZlOiBDaGVzc2ltYWxzTW92ZSwgdXBkYXRlZDogQ2hlc3NpbWFsc0dhbWVTdGF0ZSk6IHZvaWQge1xuICAgIGlmICh0aGlzLm1vdmVBbmltYXRpb25UaW1lcikgY2xlYXJUaW1lb3V0KHRoaXMubW92ZUFuaW1hdGlvblRpbWVyKTtcbiAgICB0aGlzLnF1ZXVlTW92ZUVmZmVjdChtb3ZlKTtcblxuICAgIGNvbnN0IG1vdmluZ1BpZWNlID0gZ2FtZS5waWVjZXMuZmluZCgocGllY2UpID0+IHBpZWNlLmlkID09PSBtb3ZlLnBpZWNlSWQpO1xuICAgIGlmICghbW92aW5nUGllY2UpIHtcbiAgICAgIHRoaXMuYXBwbHlBbmltYXRlZE1vdmUoZ2FtZSwgdXBkYXRlZCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5tb3ZpbmdQaWVjZS5zZXQoe1xuICAgICAgY29sb3I6IG1vdmluZ1BpZWNlLmNvbG9yLFxuICAgICAgZnJvbVJvdzogdGhpcy5kaXNwbGF5Um93SW5kZXgobW92ZS5mcm9tLnJvdyksXG4gICAgICBmcm9tQ29sOiB0aGlzLmRpc3BsYXlDb2xJbmRleChtb3ZlLmZyb20uY29sKSxcbiAgICAgIHRvUm93OiB0aGlzLmRpc3BsYXlSb3dJbmRleChtb3ZlLnRvLnJvdyksXG4gICAgICB0b0NvbDogdGhpcy5kaXNwbGF5Q29sSW5kZXgobW92ZS50by5jb2wpLFxuICAgIH0pO1xuXG4gICAgdGhpcy5tb3ZlQW5pbWF0aW9uVGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuYXBwbHlBbmltYXRlZE1vdmUoZ2FtZSwgdXBkYXRlZCk7XG4gICAgfSwgQ0hFU1NJTUFMU19NT1ZFX0FOSU1BVElPTl9NUyk7XG4gIH1cblxuICBwcml2YXRlIGFwcGx5QW5pbWF0ZWRNb3ZlKHByZXZpb3VzOiBDaGVzc2ltYWxzR2FtZVN0YXRlLCB1cGRhdGVkOiBDaGVzc2ltYWxzR2FtZVN0YXRlKTogdm9pZCB7XG4gICAgdGhpcy5tb3ZpbmdQaWVjZS5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLmdhbWUuc2V0KHVwZGF0ZWQpO1xuICAgIHRoaXMucGxheVBvd2VyVW5sb2NrU291bmQocHJldmlvdXMsIHVwZGF0ZWQpO1xuICAgIGlmIChcbiAgICAgIHVwZGF0ZWQuY3VycmVudFR1cm4gIT09IHByZXZpb3VzLmN1cnJlbnRUdXJuICYmXG4gICAgICB1cGRhdGVkLnN0YXR1cyAhPT0gJ2ZpbmlzaGVkJyAmJlxuICAgICAgIXRoaXMuc2hvdWxkS2VlcEJvYXJkT3JpZW50YXRpb25TdGF0aWModXBkYXRlZClcbiAgICApIHtcbiAgICAgIHRoaXMudHJpZ2dlckJvYXJkT3JpZW50YXRpb24oKTtcbiAgICB9XG4gICAgaWYgKHVwZGF0ZWQuc3RhdHVzID09PSAnZmluaXNoZWQnKSB7XG4gICAgICB0aGlzLnNob3dMYXRlc3RSZXZpZXdTbmFwc2hvdCgpO1xuICAgICAgdGhpcy5wbGF5Q2hlc3NpbWFsc091dGNvbWVTb3VuZCh1cGRhdGVkKTtcbiAgICB9XG4gICAgdGhpcy5xdWV1ZUJvdFR1cm5JZk5lZWRlZCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBwbGF5UG93ZXJVbmxvY2tTb3VuZChwcmV2aW91czogQ2hlc3NpbWFsc0dhbWVTdGF0ZSwgdXBkYXRlZDogQ2hlc3NpbWFsc0dhbWVTdGF0ZSk6IHZvaWQge1xuICAgIGNvbnN0IHdoaXRlVW5sb2NrZWQgPSAhcHJldmlvdXMucGxheWVycy53aGl0ZS5wb3dlclVubG9ja2VkICYmIHVwZGF0ZWQucGxheWVycy53aGl0ZS5wb3dlclVubG9ja2VkO1xuICAgIGNvbnN0IGJsYWNrVW5sb2NrZWQgPSAhcHJldmlvdXMucGxheWVycy5ibGFjay5wb3dlclVubG9ja2VkICYmIHVwZGF0ZWQucGxheWVycy5ibGFjay5wb3dlclVubG9ja2VkO1xuICAgIGlmICh3aGl0ZVVubG9ja2VkIHx8IGJsYWNrVW5sb2NrZWQpIHtcbiAgICAgIHRoaXMuYXVkaW8uY2hlc3NpbWFsc1Bvd2VyVW5sb2NrZWQoKTtcbiAgICAgIHRoaXMucG93ZXJVbmxvY2tQdWxzZS5zZXQoZmFsc2UpO1xuICAgICAgY29uc3Qgc3RhcnRQdWxzZSA9ICgpID0+IHtcbiAgICAgICAgdGhpcy5wb3dlclVubG9ja1B1bHNlLnNldCh0cnVlKTtcbiAgICAgICAgaWYgKHRoaXMucG93ZXJVbmxvY2tUaW1lcikgY2xlYXJUaW1lb3V0KHRoaXMucG93ZXJVbmxvY2tUaW1lcik7XG4gICAgICAgIHRoaXMucG93ZXJVbmxvY2tUaW1lciA9IHNldFRpbWVvdXQoKCkgPT4gdGhpcy5wb3dlclVubG9ja1B1bHNlLnNldChmYWxzZSksIDEzNTApO1xuICAgICAgfTtcbiAgICAgIGlmICh0eXBlb2YgcmVxdWVzdEFuaW1hdGlvbkZyYW1lID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShzdGFydFB1bHNlKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgc3RhcnRQdWxzZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcXVldWVCb3RUdXJuSWZOZWVkZWQoKTogdm9pZCB7XG4gICAgY29uc3QgZ2FtZSA9IHRoaXMuZ2FtZSgpO1xuICAgIGlmIChcbiAgICAgIHRoaXMuc2NyZWVuKCkgIT09ICdnYW1lJyB8fFxuICAgICAgZ2FtZS5tb2RlICE9PSAnbG9jYWwnIHx8XG4gICAgICB0aGlzLnNlbGVjdGVkTG9jYWxNb2RlKCkgIT09ICdib3QnIHx8XG4gICAgICBnYW1lLnN0YXR1cyAhPT0gJ2luX3Byb2dyZXNzJyB8fFxuICAgICAgZ2FtZS5jdXJyZW50VHVybiAhPT0gQ0hFU1NJTUFMU19CT1RfQ09MT1JcbiAgICApIHtcbiAgICAgIHRoaXMuY2xlYXJCb3RUdXJuKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuYm90VHVyblRpbWVyKSBjbGVhclRpbWVvdXQodGhpcy5ib3RUdXJuVGltZXIpO1xuICAgIHRoaXMuc2VsZWN0ZWRQaWVjZUlkLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuc2VsZWN0ZWRBbmltYWwuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5ib3RUaGlua2luZy5zZXQodHJ1ZSk7XG4gICAgdGhpcy5ib3RUdXJuVGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHRoaXMucGxheUJvdFR1cm4oKSwgQ0hFU1NJTUFMU19CT1RfVEhJTktJTkdfTVMpO1xuICB9XG5cbiAgcHJpdmF0ZSBwbGF5Qm90VHVybigpOiB2b2lkIHtcbiAgICB0aGlzLmJvdFR1cm5UaW1lciA9IHVuZGVmaW5lZDtcbiAgICBjb25zdCBnYW1lID0gdGhpcy5nYW1lKCk7XG4gICAgaWYgKFxuICAgICAgZ2FtZS5tb2RlICE9PSAnbG9jYWwnIHx8XG4gICAgICB0aGlzLnNlbGVjdGVkTG9jYWxNb2RlKCkgIT09ICdib3QnIHx8XG4gICAgICBnYW1lLnN0YXR1cyAhPT0gJ2luX3Byb2dyZXNzJyB8fFxuICAgICAgZ2FtZS5jdXJyZW50VHVybiAhPT0gQ0hFU1NJTUFMU19CT1RfQ09MT1JcbiAgICApIHtcbiAgICAgIHRoaXMuYm90VGhpbmtpbmcuc2V0KGZhbHNlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBtb3ZlID0gY2hvb3NlQ2hlc3NpbWFsc0JvdE1vdmUoZ2FtZSwgdGhpcy5zZWxlY3RlZEJvdERpZmZpY3VsdHkoKSwgdGhpcy5zZWxlY3RlZEJvdFByb2ZpbGVJZCgpKTtcbiAgICBpZiAoIW1vdmUpIHtcbiAgICAgIHRoaXMuZ2FtZS5zZXQocmVzaWduQ2hlc3NpbWFsc0dhbWUoZ2FtZSwgQ0hFU1NJTUFMU19CT1RfQ09MT1IpKTtcbiAgICAgIHRoaXMuc2hvd0xhdGVzdFJldmlld1NuYXBzaG90KCk7XG4gICAgICB0aGlzLmJvdFRoaW5raW5nLnNldChmYWxzZSk7XG4gICAgICB0aGlzLnBsYXlDaGVzc2ltYWxzT3V0Y29tZVNvdW5kKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHVwZGF0ZWQgPSBhcHBseUNoZXNzaW1hbHNNb3ZlKGdhbWUsIG1vdmUpO1xuICAgICAgdGhpcy5ib3RUaGlua2luZy5zZXQoZmFsc2UpO1xuICAgICAgaWYgKG1vdmUuYW5pbWFsKSB0aGlzLnBsYXlNb3ZlU291bmQobW92ZSwgdHJ1ZSk7XG4gICAgICBpZiAodXBkYXRlZC5zdGF0dXMgPT09ICdmaW5pc2hlZCcpIHRoaXMucGxheUNoZXNzaW1hbHNPdXRjb21lU291bmQodXBkYXRlZCk7XG4gICAgICB0aGlzLmFuaW1hdGVNb3ZlKGdhbWUsIG1vdmUsIHVwZGF0ZWQpO1xuICAgICAgaWYgKCFtb3ZlLmFuaW1hbCkgdGhpcy5wbGF5TW92ZVNvdW5kKG1vdmUsIHRydWUpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgdGhpcy5ib3RUaGlua2luZy5zZXQoZmFsc2UpO1xuICAgICAgdGhpcy5hdWRpby5taXNzKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjbGVhckJvdFR1cm4oKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYm90VHVyblRpbWVyKSBjbGVhclRpbWVvdXQodGhpcy5ib3RUdXJuVGltZXIpO1xuICAgIHRoaXMuYm90VHVyblRpbWVyID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuYm90VGhpbmtpbmcuc2V0KGZhbHNlKTtcbiAgfVxuXG4gIHByaXZhdGUgdHJpZ2dlckJvYXJkT3JpZW50YXRpb24oKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2hvdWxkS2VlcEJvYXJkT3JpZW50YXRpb25TdGF0aWMoKSkgcmV0dXJuO1xuICAgIGlmICh0aGlzLmJvYXJkT3JpZW50YXRpb25UaW1lcikgY2xlYXJUaW1lb3V0KHRoaXMuYm9hcmRPcmllbnRhdGlvblRpbWVyKTtcbiAgICB0aGlzLmlzQm9hcmRPcmllbnRpbmcuc2V0KGZhbHNlKTtcbiAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgdGhpcy5pc0JvYXJkT3JpZW50aW5nLnNldCh0cnVlKTtcbiAgICAgIHRoaXMuYm9hcmRPcmllbnRhdGlvblRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB0aGlzLmlzQm9hcmRPcmllbnRpbmcuc2V0KGZhbHNlKSwgMzQwKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc2hvdWxkS2VlcEJvYXJkT3JpZW50YXRpb25TdGF0aWMoZ2FtZTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSA9IHRoaXMuZ2FtZSgpKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMudHV0b3JpYWxNb2RlKCkpIHJldHVybiB0cnVlO1xuICAgIGlmIChnYW1lLm1vZGUgPT09ICdvbmxpbmUnKSByZXR1cm4gdHJ1ZTtcbiAgICByZXR1cm4gZ2FtZS5tb2RlID09PSAnbG9jYWwnICYmIHRoaXMuc2VsZWN0ZWRMb2NhbE1vZGUoKSA9PT0gJ2JvdCc7XG4gIH1cblxuICBwcml2YXRlIGZvY3VzQm9hcmRTb29uKCk6IHZvaWQge1xuICAgIGlmICh0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJyB8fCB0eXBlb2YgcmVxdWVzdEFuaW1hdGlvbkZyYW1lID09PSAndW5kZWZpbmVkJykgcmV0dXJuO1xuICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuYm9hcmRBbmNob3I/Lm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcoeyBiZWhhdmlvcjogJ3Ntb290aCcsIGJsb2NrOiAnc3RhcnQnIH0pO1xuICAgICAgfSwgODApO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGFydENoZXNzaW1hbHNNZW51TXVzaWNTb29uKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnByb2plY3Rpb25Nb2RlIHx8IHRoaXMuc2NyZWVuKCkgIT09ICdob21lJykgcmV0dXJuO1xuICAgIGlmICh0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJykgcmV0dXJuO1xuICAgIHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICh0aGlzLnByb2plY3Rpb25Nb2RlIHx8IHRoaXMuc2NyZWVuKCkgIT09ICdob21lJykgcmV0dXJuO1xuICAgICAgdm9pZCB0aGlzLmF1ZGlvLnN0YXJ0Q2hlc3NpbWFsc01lbnVNdXNpYygpLmNhdGNoKCgpID0+IHVuZGVmaW5lZCk7XG4gICAgfSwgMCk7XG4gIH1cblxuICBwcml2YXRlIHN0YXJ0Q2hlc3NpbWFsc0dhbWVNdXNpY1Nvb24oKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucHJvamVjdGlvbk1vZGUgfHwgdGhpcy5zY3JlZW4oKSAhPT0gJ2dhbWUnKSByZXR1cm47XG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnKSByZXR1cm47XG4gICAgd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMucHJvamVjdGlvbk1vZGUgfHwgdGhpcy5zY3JlZW4oKSAhPT0gJ2dhbWUnKSByZXR1cm47XG4gICAgICB2b2lkIHRoaXMuYXVkaW8uc3RhcnRDaGVzc2ltYWxzR2FtZU11c2ljKCkuY2F0Y2goKCkgPT4gdW5kZWZpbmVkKTtcbiAgICB9LCAwKTtcbiAgfVxuXG4gIHByaXZhdGUgc3luY0NoZXNzaW1hbHNNdXNpY0FmdGVyU2V0dGluZ3NDaGFuZ2UoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2NyZWVuKCkgPT09ICdob21lJykge1xuICAgICAgdGhpcy5zdGFydENoZXNzaW1hbHNNZW51TXVzaWNTb29uKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLnNjcmVlbigpID09PSAnZ2FtZScgJiYgdGhpcy5nYW1lKCkuc3RhdHVzICE9PSAnZmluaXNoZWQnKSB7XG4gICAgICB0aGlzLnN0YXJ0Q2hlc3NpbWFsc0dhbWVNdXNpY1Nvb24oKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHBsYXlNb3ZlU291bmQobW92ZTogQ2hlc3NpbWFsc01vdmUsIGlzQm90ID0gZmFsc2UpOiB2b2lkIHtcbiAgICBpZiAobW92ZS5hbmltYWwpIHtcbiAgICAgIHRoaXMuYXVkaW8uY2hlc3NpbWFsc1Bvd2VyKG1vdmUuYW5pbWFsKTtcbiAgICAgIGlmIChtb3ZlLmNhcHR1cmVzUGllY2VJZCAmJiB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB0aGlzLmF1ZGlvLmNoZXNzaW1hbHNDYXB0dXJlKCksIDE1MCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChtb3ZlLmNhcHR1cmVzUGllY2VJZCkge1xuICAgICAgdGhpcy5hdWRpby5jaGVzc2ltYWxzQ2FwdHVyZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoaXNCb3QpIHtcbiAgICAgIHRoaXMuYXVkaW8uY2hlc3NpbWFsc0JvdE1vdmUoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5hdWRpby5jaGVzc2ltYWxzTW92ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBwbGF5Q2hlc3NpbWFsc091dGNvbWVTb3VuZChnYW1lOiBDaGVzc2ltYWxzR2FtZVN0YXRlID0gdGhpcy5nYW1lKCkpOiB2b2lkIHtcbiAgICBpZiAoZ2FtZS5zdGF0dXMgIT09ICdmaW5pc2hlZCcpIHJldHVybjtcbiAgICBjb25zdCBrZXkgPSBgJHtnYW1lLmlkfToke2dhbWUuc3RhdHVzfToke2dhbWUud2lubmVyID8/ICdub25lJ306JHtnYW1lLndpbm5lclJlYXNvbiA/PyAnbm9uZSd9OiR7Z2FtZS5tb3ZlQ291bnR9YDtcbiAgICBpZiAodGhpcy5sYXN0T3V0Y29tZVNvdW5kS2V5ID09PSBrZXkpIHJldHVybjtcbiAgICB0aGlzLmxhc3RPdXRjb21lU291bmRLZXkgPSBrZXk7XG4gICAgY29uc3Qgd2lubmVyID0gZ2FtZS53aW5uZXI7XG4gICAgY29uc3Qgc2lkZSA9IHRoaXMuY3VycmVudFBsYXllclNpZGVGb3JPdXRjb21lKGdhbWUpO1xuICAgIGlmICghd2lubmVyIHx8ICFzaWRlIHx8IHdpbm5lciA9PT0gc2lkZSkge1xuICAgICAgdGhpcy5hdWRpby5jaGVzc2ltYWxzVmljdG9yeSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmF1ZGlvLmNoZXNzaW1hbHNEZWZlYXQoKTtcbiAgfVxuXG4gIHByaXZhdGUgY3VycmVudFBsYXllclNpZGVGb3JPdXRjb21lKGdhbWU6IENoZXNzaW1hbHNHYW1lU3RhdGUpOiBDaGVzc2ltYWxzUGxheWVyQ29sb3IgfCB1bmRlZmluZWQge1xuICAgIGlmICh0aGlzLnByb2plY3Rpb25Nb2RlKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIGlmIChnYW1lLm1vZGUgPT09ICdvbmxpbmUnKSB7XG4gICAgICByZXR1cm4gdGhpcy5vbmxpbmUucGFydGljaXBhbnRTaWRlKGdhbWUsIHRoaXMub25saW5lVWlkKCkgPz8gdGhpcy5vbmxpbmUuY3VycmVudFVpZCk7XG4gICAgfVxuICAgIGlmICh0aGlzLnNlbGVjdGVkTG9jYWxNb2RlKCkgPT09ICdib3QnKSByZXR1cm4gJ3doaXRlJztcbiAgICByZXR1cm4gZ2FtZS53aW5uZXJSZWFzb24gPT09ICdyZXNpZ25hdGlvbicgPyBnYW1lLmN1cnJlbnRUdXJuIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSBjbGVhclJldmlldygpOiB2b2lkIHtcbiAgICB0aGlzLnJldmlld0luZGV4LnNldCh1bmRlZmluZWQpO1xuICB9XG5cbiAgcHJpdmF0ZSBzaG93TGF0ZXN0UmV2aWV3U25hcHNob3QoKTogdm9pZCB7XG4gICAgY29uc3QgZW50cmllcyA9IHRoaXMuZ2FtZSgpLm1vdmVIaXN0b3J5ID8/IFtdO1xuICAgIHRoaXMucmV2aWV3SW5kZXguc2V0KGVudHJpZXMubGVuZ3RoID4gMSA/IGVudHJpZXMubGVuZ3RoIC0gMSA6IHVuZGVmaW5lZCk7XG4gIH1cblxuICBwcml2YXRlIHF1ZXVlTW92ZUVmZmVjdChtb3ZlOiBDaGVzc2ltYWxzTW92ZSk6IHZvaWQge1xuICAgIGlmICh0aGlzLm1vdmVFZmZlY3RTdGFydFRpbWVyKSBjbGVhclRpbWVvdXQodGhpcy5tb3ZlRWZmZWN0U3RhcnRUaW1lcik7XG4gICAgaWYgKHRoaXMubW92ZUVmZmVjdENsZWFyVGltZXIpIGNsZWFyVGltZW91dCh0aGlzLm1vdmVFZmZlY3RDbGVhclRpbWVyKTtcblxuICAgIGlmICghbW92ZS5hbmltYWwgJiYgIW1vdmUuY2FwdHVyZXNQaWVjZUlkKSB7XG4gICAgICB0aGlzLm1vdmVFZmZlY3Quc2V0KHVuZGVmaW5lZCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5tb3ZlRWZmZWN0LnNldCh1bmRlZmluZWQpO1xuICAgIGNvbnN0IGRlbGF5TXMgPSBNYXRoLm1heCgwLCBDSEVTU0lNQUxTX01PVkVfQU5JTUFUSU9OX01TIC0gOTApO1xuICAgIHRoaXMubW92ZUVmZmVjdFN0YXJ0VGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMubW92ZUVmZmVjdC5zZXQoe1xuICAgICAgICBhbmltYWw6IG1vdmUuYW5pbWFsLFxuICAgICAgICBmcm9tOiB7IC4uLm1vdmUuZnJvbSB9LFxuICAgICAgICB0bzogeyAuLi5tb3ZlLnRvIH0sXG4gICAgICAgIGNhcHR1cmU6ICEhbW92ZS5jYXB0dXJlc1BpZWNlSWQsXG4gICAgICB9KTtcbiAgICAgIHRoaXMubW92ZUVmZmVjdENsZWFyVGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHRoaXMubW92ZUVmZmVjdC5zZXQodW5kZWZpbmVkKSwgOTUwKTtcbiAgICB9LCBkZWxheU1zKTtcbiAgfVxuXG4gIHRvZ2dsZUFuaW1hbChhbmltYWw6IENoZXNzaW1hbHNBbmltYWxWaWV3KTogdm9pZCB7XG4gICAgaWYgKHRoaXMucHJvamVjdGlvbk1vZGUgfHwgIXRoaXMuY2FuVXNlUG93ZXJDYXJkcygpKSByZXR1cm47XG4gICAgaWYgKHRoaXMuaXNQb3dlckNhcmRCbG9ja2VkQnlUdXRvcmlhbChhbmltYWwudHlwZSkpIHJldHVybjtcbiAgICBjb25zdCBwbGF5ZXIgPSB0aGlzLnBvd2VyUGxheWVyKCk7XG4gICAgaWYgKCFwbGF5ZXIucG93ZXJVbmxvY2tlZCB8fCBwbGF5ZXIuY2FyZHNbYW5pbWFsLnR5cGVdLnVzZWQpIHJldHVybjtcbiAgICBjb25zdCBjdXJyZW50ID0gdGhpcy5zZWxlY3RlZEFuaW1hbCgpO1xuICAgIGNvbnN0IG5leHQgPSBjdXJyZW50ID09PSBhbmltYWwudHlwZSA/IHVuZGVmaW5lZCA6IGFuaW1hbC50eXBlO1xuICAgIHRoaXMuc2VsZWN0ZWRBbmltYWwuc2V0KG5leHQpO1xuICAgIGlmICghdGhpcy5zZWxlY3RlZFBpZWNlSWQoKSkge1xuICAgICAgY29uc3QgZmlyc3RQaWVjZSA9IHRoaXMuZ2FtZSgpLnBpZWNlcy5maW5kKFxuICAgICAgICAocGllY2UpID0+ICFwaWVjZS5jYXB0dXJlZCAmJiBwaWVjZS5jb2xvciA9PT0gdGhpcy5nYW1lKCkuY3VycmVudFR1cm4sXG4gICAgICApO1xuICAgICAgdGhpcy5zZWxlY3RlZFBpZWNlSWQuc2V0KGZpcnN0UGllY2U/LmlkKTtcbiAgICB9XG4gICAgaWYgKG5leHQpIHRoaXMuYXVkaW8uY2hlc3NpbWFsc1Bvd2VyUHJldmlldyhhbmltYWwudHlwZSk7XG4gIH1cblxuICBwaWVjZUF0KHJvdzogbnVtYmVyLCBjb2w6IG51bWJlcik6IENoZXNzaW1hbHNQaWVjZSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIGdldENoZXNzaW1hbHNQaWVjZUF0KHRoaXMucmV2aWV3R2FtZSgpLCB7IHJvdywgY29sIH0pO1xuICB9XG5cbiAgaXNEYXJrQ2VsbChyb3c6IG51bWJlciwgY29sOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKHJvdyArIGNvbCkgJSAyID09PSAxO1xuICB9XG5cbiAgaXNFZGdlQ2VsbChyb3c6IG51bWJlciwgY29sOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICBjb25zdCBsYXN0ID0gdGhpcy5yZXZpZXdHYW1lKCkuYm9hcmRTaXplIC0gMTtcbiAgICByZXR1cm4gcm93ID09PSAwIHx8IGNvbCA9PT0gMCB8fCByb3cgPT09IGxhc3QgfHwgY29sID09PSBsYXN0O1xuICB9XG5cbiAgY2VsbFdlYXIocm93OiBudW1iZXIsIGNvbDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gTWF0aC5hYnMoKHJvdyAqIDE3ICsgY29sICogMzEgKyByb3cgKiBjb2wgKiA3KSAlIDYpO1xuICB9XG5cbiAgaXNTZWxlY3RlZENlbGwocm93OiBudW1iZXIsIGNvbDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgY29uc3QgcGllY2UgPSB0aGlzLnBpZWNlQXQocm93LCBjb2wpO1xuICAgIHJldHVybiAhIXBpZWNlICYmIHBpZWNlLmlkID09PSB0aGlzLnNlbGVjdGVkUGllY2VJZCgpO1xuICB9XG5cbiAgaXNMZWdhbENlbGwocm93OiBudW1iZXIsIGNvbDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubGVnYWxNb3ZlS2V5cygpLmhhcyhwb3NpdGlvbktleSh7IHJvdywgY29sIH0pKTtcbiAgfVxuXG4gIGlzQ2FwdHVyZUNlbGwocm93OiBudW1iZXIsIGNvbDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY2FwdHVyZU1vdmVLZXlzKCkuaGFzKHBvc2l0aW9uS2V5KHsgcm93LCBjb2wgfSkpO1xuICB9XG5cbiAgaXNUaHJlYXRlbmVkQ2VsbChyb3c6IG51bWJlciwgY29sOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICBjb25zdCBwaWVjZSA9IHRoaXMucGllY2VBdChyb3csIGNvbCk7XG4gICAgcmV0dXJuICEhcGllY2UgJiYgdGhpcy50aHJlYXRlbmVkUGllY2VJZHMoKS5oYXMocGllY2UuaWQpO1xuICB9XG5cbiAgaXNDYXB0dXJlUmVhZHlDZWxsKHJvdzogbnVtYmVyLCBjb2w6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHBpZWNlID0gdGhpcy5waWVjZUF0KHJvdywgY29sKTtcbiAgICByZXR1cm4gISFwaWVjZSAmJiBwaWVjZS5jb2xvciA9PT0gdGhpcy5nYW1lKCkuY3VycmVudFR1cm4gJiYgdGhpcy5jYXB0dXJlUmVhZHlQaWVjZUlkcygpLmhhcyhwaWVjZS5pZCk7XG4gIH1cblxuICBpc1dpbm5pbmdDZWxsKHJvdzogbnVtYmVyLCBjb2w6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLndpbm5pbmdNb3ZlS2V5cygpLmhhcyhwb3NpdGlvbktleSh7IHJvdywgY29sIH0pKTtcbiAgfVxuXG4gIGlzTGFzdE1vdmVDZWxsKHJvdzogbnVtYmVyLCBjb2w6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGxhc3RNb3ZlID0gdGhpcy5yZXZpZXdHYW1lKCkubGFzdE1vdmU7XG4gICAgcmV0dXJuICF0aGlzLnNlbGVjdGVkUGllY2VJZCgpICYmICEhbGFzdE1vdmUgJiYgcG9zaXRpb25LZXkobGFzdE1vdmUudG8pID09PSBwb3NpdGlvbktleSh7IHJvdywgY29sIH0pO1xuICB9XG5cbiAgaXNNb3ZpbmdTb3VyY2VDZWxsKHJvdzogbnVtYmVyLCBjb2w6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIGNvbnN0IG1vdmluZyA9IHRoaXMubW92aW5nUGllY2UoKTtcbiAgICBpZiAoIW1vdmluZykgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiB0aGlzLmRpc3BsYXlSb3dJbmRleChyb3cpID09PSBtb3ZpbmcuZnJvbVJvdyAmJiB0aGlzLmRpc3BsYXlDb2xJbmRleChjb2wpID09PSBtb3ZpbmcuZnJvbUNvbDtcbiAgfVxuXG4gIGlzTW92ZUVmZmVjdENlbGwocm93OiBudW1iZXIsIGNvbDogbnVtYmVyLCBhbmltYWw/OiBDaGVzc2ltYWxzQW5pbWFsVHlwZSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGVmZmVjdCA9IHRoaXMubW92ZUVmZmVjdCgpO1xuICAgIGlmICghZWZmZWN0KSByZXR1cm4gZmFsc2U7XG4gICAgaWYgKGFuaW1hbCAmJiBlZmZlY3QuYW5pbWFsICE9PSBhbmltYWwpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gcG9zaXRpb25LZXkoZWZmZWN0LnRvKSA9PT0gcG9zaXRpb25LZXkoeyByb3csIGNvbCB9KTtcbiAgfVxuXG4gIGlzTW92ZUVmZmVjdFNvdXJjZUNlbGwocm93OiBudW1iZXIsIGNvbDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgY29uc3QgZWZmZWN0ID0gdGhpcy5tb3ZlRWZmZWN0KCk7XG4gICAgcmV0dXJuICEhZWZmZWN0ICYmIHBvc2l0aW9uS2V5KGVmZmVjdC5mcm9tKSA9PT0gcG9zaXRpb25LZXkoeyByb3csIGNvbCB9KTtcbiAgfVxuXG4gIGlzTW92ZUVmZmVjdENhcHR1cmVDZWxsKHJvdzogbnVtYmVyLCBjb2w6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGVmZmVjdCA9IHRoaXMubW92ZUVmZmVjdCgpO1xuICAgIHJldHVybiAhIWVmZmVjdD8uY2FwdHVyZSAmJiBwb3NpdGlvbktleShlZmZlY3QudG8pID09PSBwb3NpdGlvbktleSh7IHJvdywgY29sIH0pO1xuICB9XG5cbiAgZmlsZUxhYmVsKGNvbDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZSg2NSArIGNvbCk7XG4gIH1cblxuICByYW5rTGFiZWwocm93OiBudW1iZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLnJldmlld0dhbWUoKS5ib2FyZFNpemUgLSByb3d9YDtcbiAgfVxuXG4gIHNob3dSYW5rTGFiZWwoY29sOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICByZXR1cm4gY29sID09PSB0aGlzLmRpc3BsYXlDb2xzKClbMF07XG4gIH1cblxuICBzaG93RmlsZUxhYmVsKHJvdzogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgY29uc3Qgcm93cyA9IHRoaXMuZGlzcGxheVJvd3MoKTtcbiAgICByZXR1cm4gcm93ID09PSByb3dzW3Jvd3MubGVuZ3RoIC0gMV07XG4gIH1cblxuICBwbGF5ZXJMYWJlbChjb2xvcjogQ2hlc3NpbWFsc1BsYXllckNvbG9yKTogc3RyaW5nIHtcbiAgICByZXR1cm4gY29sb3IgPT09ICd3aGl0ZScgPyB0aGlzLnQoJ2NoZXNzaW1hbHNXaGl0ZScpIDogdGhpcy50KCdjaGVzc2ltYWxzQmxhY2snKTtcbiAgfVxuXG4gIHR1cm5TdGF0ZUxhYmVsKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuZ2FtZSgpLnN0YXR1cyA9PT0gJ2ZpbmlzaGVkJykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0ZpbmlzaGVkQ2hpcCcpO1xuICAgIGlmICh0aGlzLmlzQWN0aW9uYWJsZVR1cm4oKSkgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc1lvdXJUdXJuJyk7XG4gICAgaWYgKHRoaXMuYm90VGhpbmtpbmcoKSkgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0JvdFRoaW5raW5nVGl0bGUnKTtcbiAgICBpZiAodGhpcy5tb3ZlU3luY2luZygpKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzT25saW5lU3luY2luZ1RpdGxlJyk7XG4gICAgcmV0dXJuIHRoaXMuaXNXYWl0aW5nRm9yVHVybigpID8gdGhpcy50KCdjaGVzc2ltYWxzV2FpdGluZ1R1cm5MYWJlbCcpIDogdGhpcy5tb2RlQ2hpcExhYmVsKCk7XG4gIH1cblxuICB0dXJuU3RhdGVCb2R5KCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuZ2FtZSgpLnN0YXR1cyA9PT0gJ2ZpbmlzaGVkJykgcmV0dXJuIHRoaXMud2luQm9keSgpO1xuICAgIGlmICh0aGlzLmlzQWN0aW9uYWJsZVR1cm4oKSkge1xuICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRMb2NhbE1vZGUoKSA9PT0gJ2JvdCcgJiYgdGhpcy5nYW1lKCkubW9kZSA9PT0gJ2xvY2FsJ1xuICAgICAgICA/IHRoaXMudCgnY2hlc3NpbWFsc0JvdFlvdXJUdXJuQm9keScpXG4gICAgICAgIDogdGhpcy50KCdjaGVzc2ltYWxzWW91clR1cm5Cb2R5Jyk7XG4gICAgfVxuICAgIGlmICh0aGlzLmJvdFRoaW5raW5nKCkpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNCb3RUaGlua2luZ0JvZHknKTtcbiAgICBpZiAodGhpcy5tb3ZlU3luY2luZygpKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzT25saW5lU3luY2luZ0JvZHknKTtcbiAgICByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzV2FpdGluZ1R1cm4nKTtcbiAgfVxuXG4gIHdpbm5lckRpc3BsYXlOYW1lKCk6IHN0cmluZyB7XG4gICAgY29uc3Qgd2lubmVyID0gdGhpcy5nYW1lKCkud2lubmVyID8/ICd3aGl0ZSc7XG4gICAgcmV0dXJuIHRoaXMucGxheWVyRGlzcGxheU5hbWUod2lubmVyKTtcbiAgfVxuXG4gIHdpbm5lclNpZGVMYWJlbCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnBsYXllckxhYmVsKHRoaXMuZ2FtZSgpLndpbm5lciA/PyAnd2hpdGUnKTtcbiAgfVxuXG4gIHdpbm5lckluaXRpYWxzKCk6IHN0cmluZyB7XG4gICAgY29uc3QgbmFtZSA9IHRoaXMud2lubmVyRGlzcGxheU5hbWUoKS50cmltKCk7XG4gICAgY29uc3QgaW5pdGlhbHMgPSBuYW1lXG4gICAgICAuc3BsaXQoL1xccysvKVxuICAgICAgLmZpbHRlcihCb29sZWFuKVxuICAgICAgLnNsaWNlKDAsIDIpXG4gICAgICAubWFwKChwYXJ0KSA9PiBwYXJ0LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpKVxuICAgICAgLmpvaW4oJycpO1xuICAgIHJldHVybiBpbml0aWFscyB8fCB0aGlzLndpbm5lclNpZGVMYWJlbCgpLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpO1xuICB9XG5cbiAgd2lubmVyQXZhdGFyVXJsKCk6IHN0cmluZyB7XG4gICAgY29uc3QgZ2FtZSA9IHRoaXMuZ2FtZSgpO1xuICAgIGNvbnN0IHdpbm5lciA9IGdhbWUud2lubmVyO1xuICAgIGlmICghd2lubmVyIHx8IGdhbWUubW9kZSAhPT0gJ29ubGluZScpIHJldHVybiAnJztcbiAgICByZXR1cm4gZ2FtZS5vbmxpbmU/LnBhcnRpY2lwYW50cz8uW3dpbm5lcl0/LmF2YXRhclVybD8udHJpbSgpID8/ICcnO1xuICB9XG5cbiAgaXNDdXJyZW50UGxheWVyVmljdG9yeSgpOiBib29sZWFuIHtcbiAgICBjb25zdCBnYW1lID0gdGhpcy5nYW1lKCk7XG4gICAgaWYgKGdhbWUuc3RhdHVzICE9PSAnZmluaXNoZWQnIHx8ICFnYW1lLndpbm5lcikgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiB0aGlzLmN1cnJlbnRQbGF5ZXJTaWRlRm9yT3V0Y29tZShnYW1lKSA9PT0gZ2FtZS53aW5uZXI7XG4gIH1cblxuICBpc0N1cnJlbnRQbGF5ZXJEZWZlYXQoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgZ2FtZSA9IHRoaXMuZ2FtZSgpO1xuICAgIGlmIChnYW1lLnN0YXR1cyAhPT0gJ2ZpbmlzaGVkJyB8fCAhZ2FtZS53aW5uZXIpIHJldHVybiBmYWxzZTtcbiAgICBjb25zdCBzaWRlID0gdGhpcy5jdXJyZW50UGxheWVyU2lkZUZvck91dGNvbWUoZ2FtZSk7XG4gICAgcmV0dXJuICEhc2lkZSAmJiBzaWRlICE9PSBnYW1lLndpbm5lcjtcbiAgfVxuXG4gIHByaXZhdGUgcGxheWVyRGlzcGxheU5hbWUoY29sb3I6IENoZXNzaW1hbHNQbGF5ZXJDb2xvcik6IHN0cmluZyB7XG4gICAgY29uc3QgZ2FtZSA9IHRoaXMuZ2FtZSgpO1xuICAgIGlmIChnYW1lLm1vZGUgPT09ICdvbmxpbmUnKSB7XG4gICAgICBjb25zdCBwYXJ0aWNpcGFudCA9IGdhbWUub25saW5lPy5wYXJ0aWNpcGFudHM/Lltjb2xvcl07XG4gICAgICBjb25zdCBuYW1lID0gcGFydGljaXBhbnQ/Lm5hbWU/LnRyaW0oKTtcbiAgICAgIGlmIChuYW1lKSByZXR1cm4gbmFtZTtcbiAgICAgIGNvbnN0IGhhbmRsZSA9IHBhcnRpY2lwYW50Py5oYW5kbGU/LnRyaW0oKTtcbiAgICAgIGlmIChoYW5kbGUpIHJldHVybiBoYW5kbGU7XG4gICAgfVxuICAgIGlmIChnYW1lLm1vZGUgPT09ICdsb2NhbCcgJiYgdGhpcy5zZWxlY3RlZExvY2FsTW9kZSgpID09PSAnYm90Jykge1xuICAgICAgcmV0dXJuIGNvbG9yID09PSBDSEVTU0lNQUxTX0JPVF9DT0xPUiA/IHRoaXMudCgnY2hlc3NpbWFsc0JvdE5hbWUnKSA6IHRoaXMubG9nZ2VkUGxheWVyTmFtZSgpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5wbGF5ZXJMYWJlbChjb2xvcik7XG4gIH1cblxuICBwcml2YXRlIHJlbWF0Y2hPcHBvbmVudCgpOiBDaGVzc2ltYWxzT25saW5lUGFydGljaXBhbnQgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGdhbWUgPSB0aGlzLmdhbWUoKTtcbiAgICBjb25zdCByb2xlID0gdGhpcy5vbmxpbmVSb2xlKCk7XG4gICAgaWYgKGdhbWUubW9kZSAhPT0gJ29ubGluZScgfHwgKHJvbGUgIT09ICd3aGl0ZScgJiYgcm9sZSAhPT0gJ2JsYWNrJykpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgY29uc3Qgb3Bwb25lbnRTaWRlOiBDaGVzc2ltYWxzUGxheWVyQ29sb3IgPSByb2xlID09PSAnd2hpdGUnID8gJ2JsYWNrJyA6ICd3aGl0ZSc7XG4gICAgcmV0dXJuIGdhbWUub25saW5lPy5wYXJ0aWNpcGFudHM/LltvcHBvbmVudFNpZGVdO1xuICB9XG5cbiAgcHJpdmF0ZSBjdXJyZW50T3Bwb25lbnRVaWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5yZW1hdGNoT3Bwb25lbnQoKT8udWlkID8/ICcnO1xuICB9XG5cbiAgbW9kZUNoaXBMYWJlbCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IGdhbWUgPSB0aGlzLmdhbWUoKTtcbiAgICBpZiAoZ2FtZS5tb2RlICE9PSAnb25saW5lJykge1xuICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRMb2NhbE1vZGUoKSA9PT0gJ2JvdCcgPyB0aGlzLnQoJ2NoZXNzaW1hbHNCb3RNb2RlJykgOiB0aGlzLnQoJ2NoZXNzaW1hbHNPbmVEZXZpY2UnKTtcbiAgICB9XG4gICAgY29uc3Qgcm9sZSA9IHRoaXMub25saW5lUm9sZSgpO1xuICAgIGlmIChyb2xlID09PSAnd2FpdGluZycpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNPbmxpbmVXYWl0aW5nJyk7XG4gICAgaWYgKHJvbGUgPT09ICdwZW5kaW5nJykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc09ubGluZVBlbmRpbmcnKTtcbiAgICBpZiAocm9sZSA9PT0gJ3NwZWN0YXRvcicpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNTcGVjdGF0b3InKTtcbiAgICByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzT25saW5lUGxheWVyJyk7XG4gIH1cblxuICB0dXJuVGl0bGUoKTogc3RyaW5nIHtcbiAgICBjb25zdCBnYW1lID0gdGhpcy5nYW1lKCk7XG4gICAgaWYgKGdhbWUubW9kZSAhPT0gJ29ubGluZScpIHtcbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkTG9jYWxNb2RlKCkgPT09ICdib3QnICYmIGdhbWUuY3VycmVudFR1cm4gPT09IENIRVNTSU1BTFNfQk9UX0NPTE9SKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNCb3RUaGlua2luZ1RpdGxlJyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy5jdXJyZW50VHVyblRpdGxlKCk7XG4gICAgfVxuICAgIGlmICh0aGlzLm9ubGluZVJvbGUoKSA9PT0gZ2FtZS5jdXJyZW50VHVybikgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc1lvdXJUdXJuJyk7XG4gICAgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0N1cnJlbnRUdXJuJykucmVwbGFjZSgne3BsYXllcn0nLCB0aGlzLnBsYXllckxhYmVsKGdhbWUuY3VycmVudFR1cm4pKTtcbiAgfVxuXG4gIG5vcm1hbGl6ZUdhbWVJZCh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5vbmxpbmUubm9ybWFsaXplR2FtZUlkKHZhbHVlKTtcbiAgfVxuXG4gIGFzeW5jIGNvcHlPbmxpbmVMaW5rKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHVybCA9IHRoaXMub25saW5lLnNoYXJlVXJsKHRoaXMuZ2FtZSgpLmlkLCB0aGlzLm1pbmlHYW1lc0Jhc2VSb3V0ZSgpKTtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgbmF2aWdhdG9yLmNsaXBib2FyZD8ud3JpdGVUZXh0KHVybCk7XG4gICAgICB0aGlzLnRvYXN0LnNob3coeyBtZXNzYWdlOiB0aGlzLnQoJ2NoZXNzaW1hbHNMaW5rQ29waWVkJyksIGNvbG9yOiAnZGFyaycsIGR1cmF0aW9uOiAyMjAwLCBwb3NpdGlvbjogJ3RvcCcgfSk7XG4gICAgICB0aGlzLmF1ZGlvLmZsaXAoKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHRoaXMuYXVkaW8ubWlzcygpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHNoYXJlT25saW5lTGluaygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB1cmwgPSB0aGlzLm9ubGluZS5zaGFyZVVybCh0aGlzLmdhbWUoKS5pZCwgdGhpcy5taW5pR2FtZXNCYXNlUm91dGUoKSk7XG4gICAgaWYgKG5hdmlnYXRvci5zaGFyZSkge1xuICAgICAgYXdhaXQgbmF2aWdhdG9yLnNoYXJlKHsgdGl0bGU6IHRoaXMudCgnY2hlc3NpbWFsc1RpdGxlJyksIHRleHQ6IHRoaXMudCgnY2hlc3NpbWFsc1NoYXJlVGV4dCcpLCB1cmwgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGF3YWl0IHRoaXMuY29weU9ubGluZUxpbmsoKTtcbiAgfVxuXG4gIGFzeW5jIHNoYXJlUHJvamVjdGlvbkxpbmsoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgdXJsID0gdGhpcy5vbmxpbmUucHJvamVjdGlvblNoYXJlVXJsKHRoaXMuZ2FtZSgpLmlkLCB0aGlzLm1pbmlHYW1lc0Jhc2VSb3V0ZSgpKTtcbiAgICBpZiAobmF2aWdhdG9yLnNoYXJlKSB7XG4gICAgICBhd2FpdCBuYXZpZ2F0b3Iuc2hhcmUoe1xuICAgICAgICB0aXRsZTogdGhpcy50KCdjaGVzc2ltYWxzUHJvamVjdGlvblRpdGxlJyksXG4gICAgICAgIHRleHQ6IHRoaXMudCgnY2hlc3NpbWFsc1Byb2plY3Rpb25TaGFyZVRleHQnKSxcbiAgICAgICAgdXJsLFxuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICBhd2FpdCBuYXZpZ2F0b3IuY2xpcGJvYXJkPy53cml0ZVRleHQodXJsKTtcbiAgICAgIHRoaXMudG9hc3Quc2hvdyh7XG4gICAgICAgIG1lc3NhZ2U6IHRoaXMudCgnY2hlc3NpbWFsc1Byb2plY3Rpb25MaW5rQ29waWVkJyksXG4gICAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICAgIGR1cmF0aW9uOiAyMjAwLFxuICAgICAgICBwb3NpdGlvbjogJ3RvcCcsXG4gICAgICB9KTtcbiAgICAgIHRoaXMuYXVkaW8uZmxpcCgpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgdGhpcy5hdWRpby5taXNzKCk7XG4gICAgfVxuICB9XG5cbiAgY2FuUmV2aWV3UGVuZGluZ0d1ZXN0KCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGdhbWUgPSB0aGlzLmdhbWUoKTtcbiAgICBjb25zdCB1aWQgPSB0aGlzLm9ubGluZVVpZCgpO1xuICAgIHJldHVybiAhIXVpZFxuICAgICAgJiYgZ2FtZS5tb2RlID09PSAnb25saW5lJ1xuICAgICAgJiYgdGhpcy5vbmxpbmUuaXNIb3N0V2FpdGluZyhnYW1lLCB1aWQpXG4gICAgICAmJiAhIWdhbWUub25saW5lLnBlbmRpbmdHdWVzdDtcbiAgfVxuXG4gIHBlbmRpbmdHdWVzdE5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5nYW1lKCkub25saW5lPy5wZW5kaW5nR3Vlc3Q/Lm5hbWUgPz8gdGhpcy50KCdkZWZhdWx0UGxheWVyTmFtZScpO1xuICB9XG5cbiAgcGVuZGluZ0d1ZXN0SGFuZGxlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZ2FtZSgpLm9ubGluZT8ucGVuZGluZ0d1ZXN0Py5oYW5kbGUgPz8gJyc7XG4gIH1cblxuICBwZW5kaW5nR3Vlc3RBdmF0YXJVcmwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5nYW1lKCkub25saW5lPy5wZW5kaW5nR3Vlc3Q/LmF2YXRhclVybCA/PyAnJztcbiAgfVxuXG4gIHBlbmRpbmdHdWVzdEluaXRpYWxzKCk6IHN0cmluZyB7XG4gICAgY29uc3QgZ3Vlc3QgPSB0aGlzLmdhbWUoKS5vbmxpbmU/LnBlbmRpbmdHdWVzdDtcbiAgICBjb25zdCBuYW1lID0gKGd1ZXN0Py5uYW1lIHx8IGd1ZXN0Py5oYW5kbGUgfHwgdGhpcy50KCdkZWZhdWx0UGxheWVyTmFtZScpKS50cmltKCk7XG4gICAgY29uc3QgaW5pdGlhbHMgPSBuYW1lXG4gICAgICAuc3BsaXQoL1xccysvKVxuICAgICAgLmZpbHRlcihCb29sZWFuKVxuICAgICAgLnNsaWNlKDAsIDIpXG4gICAgICAubWFwKChwYXJ0KSA9PiBwYXJ0LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpKVxuICAgICAgLmpvaW4oJycpO1xuICAgIHJldHVybiBpbml0aWFscyB8fCAnPyc7XG4gIH1cblxuICBwZW5kaW5nR3Vlc3RBdmF0YXJQcm9wcygpOiBVc2VyQXZhdGFyTWV0YWRhdGEge1xuICAgIGNvbnN0IGd1ZXN0ID0gdGhpcy5nYW1lKCkub25saW5lPy5wZW5kaW5nR3Vlc3Q7XG4gICAgcmV0dXJuIHtcbiAgICAgIHVzZXI6IHtcbiAgICAgICAgbmFtZTogZ3Vlc3Q/Lm5hbWUsXG4gICAgICAgIGhhbmRsZTogZ3Vlc3Q/LmhhbmRsZSxcbiAgICAgICAgYXZhdGFyVXJsOiBndWVzdD8uYXZhdGFyVXJsLFxuICAgICAgfSxcbiAgICAgIHNpemU6ICdzbWFsbCcsXG4gICAgICBib3JkZXJlZDogdHJ1ZSxcbiAgICB9O1xuICB9XG5cbiAgcmVtYXRjaE9wcG9uZW50TmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnJlbWF0Y2hPcHBvbmVudCgpPy5uYW1lPy50cmltKCkgfHwgdGhpcy50KCdkZWZhdWx0UGxheWVyTmFtZScpO1xuICB9XG5cbiAgcmVtYXRjaE9wcG9uZW50SGFuZGxlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucmVtYXRjaE9wcG9uZW50KCk/LmhhbmRsZT8udHJpbSgpID8/ICcnO1xuICB9XG5cbiAgcmVtYXRjaE9wcG9uZW50QXZhdGFyVXJsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucmVtYXRjaE9wcG9uZW50KCk/LmF2YXRhclVybD8udHJpbSgpID8/ICcnO1xuICB9XG5cbiAgcmVtYXRjaE9wcG9uZW50SW5pdGlhbHMoKTogc3RyaW5nIHtcbiAgICBjb25zdCBvcHBvbmVudCA9IHRoaXMucmVtYXRjaE9wcG9uZW50KCk7XG4gICAgY29uc3QgbmFtZSA9IChvcHBvbmVudD8ubmFtZSB8fCBvcHBvbmVudD8uaGFuZGxlIHx8IHRoaXMudCgnZGVmYXVsdFBsYXllck5hbWUnKSkudHJpbSgpO1xuICAgIGNvbnN0IGluaXRpYWxzID0gbmFtZVxuICAgICAgLnNwbGl0KC9cXHMrLylcbiAgICAgIC5maWx0ZXIoQm9vbGVhbilcbiAgICAgIC5zbGljZSgwLCAyKVxuICAgICAgLm1hcCgocGFydCkgPT4gcGFydC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSlcbiAgICAgIC5qb2luKCcnKTtcbiAgICByZXR1cm4gaW5pdGlhbHMgfHwgJz8nO1xuICB9XG5cbiAgcmVtYXRjaE9wcG9uZW50QXZhdGFyUHJvcHMoKTogVXNlckF2YXRhck1ldGFkYXRhIHtcbiAgICBjb25zdCBvcHBvbmVudCA9IHRoaXMucmVtYXRjaE9wcG9uZW50KCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHVzZXI6IHtcbiAgICAgICAgbmFtZTogb3Bwb25lbnQ/Lm5hbWUsXG4gICAgICAgIGhhbmRsZTogb3Bwb25lbnQ/LmhhbmRsZSxcbiAgICAgICAgYXZhdGFyVXJsOiBvcHBvbmVudD8uYXZhdGFyVXJsLFxuICAgICAgfSxcbiAgICAgIHNpemU6ICdzbWFsbCcsXG4gICAgICBib3JkZXJlZDogdHJ1ZSxcbiAgICB9O1xuICB9XG5cbiAgd2FpdGluZ1RpdGxlKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuY2FuUmV2aWV3UGVuZGluZ0d1ZXN0KCkpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNKb2luUmVxdWVzdFRpdGxlJyk7XG4gICAgaWYgKHRoaXMub25saW5lUm9sZSgpID09PSAncGVuZGluZycpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNMb2JieUd1ZXN0V2FpdGluZ1RpdGxlJyk7XG4gICAgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc1dhaXRpbmdUaXRsZScpO1xuICB9XG5cbiAgd2FpdGluZ0JvZHkoKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5jYW5SZXZpZXdQZW5kaW5nR3Vlc3QoKSkge1xuICAgICAgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0pvaW5SZXF1ZXN0Qm9keScpLnJlcGxhY2UoJ3twbGF5ZXJ9JywgdGhpcy5wZW5kaW5nR3Vlc3ROYW1lKCkpO1xuICAgIH1cbiAgICBpZiAodGhpcy5vbmxpbmVSb2xlKCkgPT09ICdwZW5kaW5nJykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0xvYmJ5R3Vlc3RXYWl0aW5nQm9keScpO1xuICAgIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNXYWl0aW5nQm9keScpO1xuICB9XG5cbiAgYXN5bmMgYWNjZXB0T25saW5lR3Vlc3QoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCF0aGlzLmNhblJldmlld1BlbmRpbmdHdWVzdCgpKSByZXR1cm47XG4gICAgdGhpcy5vbmxpbmVBY3Rpb24uc2V0KCdhY2NlcHQnKTtcbiAgICB0aGlzLm9ubGluZUxvYWRpbmcuc2V0KHRydWUpO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLm9ubGluZS5hY2NlcHRHdWVzdCh0aGlzLmdhbWUoKS5pZCk7XG4gICAgICB0aGlzLnRvYXN0LnNob3coeyBtZXNzYWdlOiB0aGlzLnQoJ2NoZXNzaW1hbHNHdWVzdEFjY2VwdGVkJyksIGNvbG9yOiAnZGFyaycsIGR1cmF0aW9uOiAyMjAwLCBwb3NpdGlvbjogJ3RvcCcgfSk7XG4gICAgICB0aGlzLmF1ZGlvLmZsaXAoKTtcbiAgICAgIHZvaWQgdGhpcy5oYXB0aWNzLnN1Y2Nlc3MoKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS53YXJuKCdbQ2hlc3NpbWFsc10gYWNjZXB0IGd1ZXN0IGZhaWxlZCcsIGVycm9yKTtcbiAgICAgIHRoaXMub25saW5lRXJyb3Iuc2V0KHRoaXMudCgnY2hlc3NpbWFsc09ubGluZUVycm9yJykpO1xuICAgICAgdGhpcy5hdWRpby5taXNzKCk7XG4gICAgICB2b2lkIHRoaXMuaGFwdGljcy5lcnJvcigpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLm9ubGluZUFjdGlvbi5zZXQodW5kZWZpbmVkKTtcbiAgICAgIHRoaXMub25saW5lTG9hZGluZy5zZXQoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHJlamVjdE9ubGluZUd1ZXN0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghdGhpcy5jYW5SZXZpZXdQZW5kaW5nR3Vlc3QoKSkgcmV0dXJuO1xuICAgIHRoaXMub25saW5lQWN0aW9uLnNldCgncmVqZWN0Jyk7XG4gICAgdGhpcy5vbmxpbmVMb2FkaW5nLnNldCh0cnVlKTtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5vbmxpbmUucmVqZWN0R3Vlc3QodGhpcy5nYW1lKCkuaWQpO1xuICAgICAgdGhpcy50b2FzdC5zaG93KHsgbWVzc2FnZTogdGhpcy50KCdjaGVzc2ltYWxzR3Vlc3RSZWplY3RlZCcpLCBjb2xvcjogJ2RhcmsnLCBkdXJhdGlvbjogMjIwMCwgcG9zaXRpb246ICd0b3AnIH0pO1xuICAgICAgdGhpcy5hdWRpby5taXNzKCk7XG4gICAgICB2b2lkIHRoaXMuaGFwdGljcy53YXJuaW5nKCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUud2FybignW0NoZXNzaW1hbHNdIHJlamVjdCBndWVzdCBmYWlsZWQnLCBlcnJvcik7XG4gICAgICB0aGlzLm9ubGluZUVycm9yLnNldCh0aGlzLnQoJ2NoZXNzaW1hbHNPbmxpbmVFcnJvcicpKTtcbiAgICAgIHRoaXMuYXVkaW8ubWlzcygpO1xuICAgICAgdm9pZCB0aGlzLmhhcHRpY3MuZXJyb3IoKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5vbmxpbmVBY3Rpb24uc2V0KHVuZGVmaW5lZCk7XG4gICAgICB0aGlzLm9ubGluZUxvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICBvcGVuSGlzdG9yeUdhbWUoZW50cnk6IENoZXNzaW1hbHNIaXN0b3J5RW50cnkpOiB2b2lkIHtcbiAgICB0aGlzLm9ubGluZUpvaW5Db2RlLnNldChlbnRyeS5nYW1lSWQpO1xuICAgIHZvaWQgdGhpcy5vcGVuT25saW5lR2FtZShlbnRyeS5nYW1lSWQpO1xuICAgIHZvaWQgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCh0aGlzLmNoZXNzaW1hbHNHYW1lUm91dGUoZW50cnkuZ2FtZUlkKSk7XG4gIH1cblxuICBoaXN0b3J5T3V0Y29tZUxhYmVsKGVudHJ5OiBDaGVzc2ltYWxzSGlzdG9yeUVudHJ5KTogc3RyaW5nIHtcbiAgICBjb25zdCBvdXRjb21lS2V5ID0gYGNoZXNzaW1hbHNIaXN0b3J5JHtlbnRyeS5vdXRjb21lXG4gICAgICAuc3BsaXQoJ18nKVxuICAgICAgLm1hcCgocGFydCkgPT4gdGhpcy5jYXBpdGFsaXplKHBhcnQpKVxuICAgICAgLmpvaW4oJycpfWA7XG4gICAgY29uc3Qgb3Bwb25lbnQgPSBlbnRyeS5vcHBvbmVudE5hbWVcbiAgICAgID8gYCDCtyAke3RoaXMudCgnY2hlc3NpbWFsc0hpc3RvcnlBZ2FpbnN0JykucmVwbGFjZSgne3BsYXllcn0nLCBlbnRyeS5vcHBvbmVudE5hbWUpfWBcbiAgICAgIDogJyc7XG4gICAgcmV0dXJuIGAke3RoaXMudChvdXRjb21lS2V5KX0ke29wcG9uZW50fWA7XG4gIH1cblxuICBhc3luYyByZXF1ZXN0T25saW5lUmVtYXRjaCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5nYW1lKCkubW9kZSAhPT0gJ29ubGluZScpIHJldHVybjtcbiAgICBpZiAoIXRoaXMuY2FuQ29udHJvbEN1cnJlbnRHYW1lKCkpIHJldHVybjtcbiAgICBpZiAodGhpcy5yZW1hdGNoU3RhdGUoKSA9PT0gJ3JlcXVlc3RlZCcgfHwgdGhpcy5yZW1hdGNoTG9hZGluZygpKSByZXR1cm47XG4gICAgY29uc3QgYWNjZXB0aW5nID0gdGhpcy5yZW1hdGNoU3RhdGUoKSA9PT0gJ2luY29taW5nJztcbiAgICB0aGlzLnJlbWF0Y2hMb2FkaW5nLnNldCh0cnVlKTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgbmV4dCA9IGF3YWl0IHRoaXMub25saW5lLnJlcXVlc3RSZW1hdGNoKHRoaXMuZ2FtZSgpLmlkKTtcbiAgICAgIGlmIChuZXh0Py5zdGF0dXMgPT09ICdpbl9wcm9ncmVzcycpIHtcbiAgICAgICAgdGhpcy5hcHBseU9ubGluZUdhbWVTbmFwc2hvdCh0aGlzLmdhbWUoKSwgbmV4dCk7XG4gICAgICB9XG4gICAgICB0aGlzLnRvYXN0LnNob3coe1xuICAgICAgICBtZXNzYWdlOiB0aGlzLnQoYWNjZXB0aW5nID8gJ2NoZXNzaW1hbHNSZW1hdGNoQWNjZXB0ZWQnIDogJ2NoZXNzaW1hbHNSZW1hdGNoUmVxdWVzdGVkVG9hc3QnKSxcbiAgICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgICAgZHVyYXRpb246IDI0MDAsXG4gICAgICAgIHBvc2l0aW9uOiAndG9wJyxcbiAgICAgIH0pO1xuICAgICAgdGhpcy5hdWRpby5mbGlwKCk7XG4gICAgfSBjYXRjaCB7XG4gICAgICB0aGlzLm9ubGluZUVycm9yLnNldCh0aGlzLnQoJ2NoZXNzaW1hbHNPbmxpbmVFcnJvcicpKTtcbiAgICAgIHRoaXMuYXVkaW8ubWlzcygpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLnJlbWF0Y2hMb2FkaW5nLnNldChmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBxdWV1ZUhpc3RvcnlXYXRjaCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5oaXN0b3J5V2F0Y2hUaW1lcikgY2xlYXJUaW1lb3V0KHRoaXMuaGlzdG9yeVdhdGNoVGltZXIpO1xuICAgIHRoaXMuaGlzdG9yeVdhdGNoVGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHRoaXMud2F0Y2hPbmxpbmVIaXN0b3J5KCksIDIyMCk7XG4gIH1cblxuICBwcml2YXRlIHdhdGNoT25saW5lSGlzdG9yeSgpOiB2b2lkIHtcbiAgICBjb25zdCB1aWQgPSB0aGlzLm9ubGluZS5jdXJyZW50VWlkO1xuICAgIGlmICghdWlkKSByZXR1cm47XG4gICAgaWYgKHRoaXMuaGlzdG9yeVVpZCA9PT0gdWlkICYmIHRoaXMuaGlzdG9yeVN1YnNjcmlwdGlvbikgcmV0dXJuO1xuICAgIHRoaXMuaGlzdG9yeVVpZCA9IHVpZDtcbiAgICB0aGlzLmhpc3RvcnlTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5oaXN0b3J5U3Vic2NyaXB0aW9uID0gdGhpcy5vbmxpbmUud2F0Y2hIaXN0b3J5KDI0KS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKGhpc3RvcnkpID0+IHRoaXMub25saW5lSGlzdG9yeS5zZXQoaGlzdG9yeSksXG4gICAgICBlcnJvcjogKCkgPT4gdGhpcy5vbmxpbmVIaXN0b3J5LnNldChbXSksXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHdhdGNoQ2hhbGxlbmdlU3RhdHMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY2hhbGxlbmdlU3RhdHNTdWJzY3JpcHRpb24pIHJldHVybjtcbiAgICB0aGlzLmNoYWxsZW5nZVN0YXRzU3Vic2NyaXB0aW9uID0gdGhpcy5jaGFsbGVuZ2VQcm9ncmVzcy53YXRjaFN0YXRzKCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChzdGF0cykgPT4gdGhpcy5jaGFsbGVuZ2VTdGF0cy5zZXQoc3RhdHMgPz8gdGhpcy5jaGFsbGVuZ2VQcm9ncmVzcy5lbXB0eVN0YXRzKCkpLFxuICAgICAgZXJyb3I6ICgpID0+IHRoaXMuY2hhbGxlbmdlU3RhdHMuc2V0KHRoaXMuY2hhbGxlbmdlUHJvZ3Jlc3MuZW1wdHlTdGF0cygpKSxcbiAgICB9KTtcbiAgICB0aGlzLmNoYWxsZW5nZVJ1bnNTdWJzY3JpcHRpb24gPSB0aGlzLmNoYWxsZW5nZVByb2dyZXNzLndhdGNoUmVjZW50UnVucyg0KS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJ1bnMpID0+IHRoaXMuY2hhbGxlbmdlSGlzdG9yeS5zZXQocnVucyksXG4gICAgICBlcnJvcjogKCkgPT4gdGhpcy5jaGFsbGVuZ2VIaXN0b3J5LnNldChbXSksXG4gICAgfSk7XG4gICAgdGhpcy5jaGFsbGVuZ2VBY3RpdmVSdW5TdWJzY3JpcHRpb24gPSB0aGlzLmNoYWxsZW5nZVByb2dyZXNzLndhdGNoQWN0aXZlUnVuKCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChydW4pID0+IHRoaXMuYWN0aXZlU3RvcmVkQ2hhbGxlbmdlUnVuLnNldChydW4pLFxuICAgICAgZXJyb3I6ICgpID0+IHRoaXMuYWN0aXZlU3RvcmVkQ2hhbGxlbmdlUnVuLnNldCh1bmRlZmluZWQpLFxuICAgIH0pO1xuICB9XG5cbiAgdW5sb2NrZWRMYWJlbChjb2xvcjogQ2hlc3NpbWFsc1BsYXllckNvbG9yKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5nYW1lKCkucGxheWVyc1tjb2xvcl0ucG93ZXJVbmxvY2tlZCA/IHRoaXMudCgnY2hlc3NpbWFsc1VubG9ja2VkJykgOiB0aGlzLnQoJ2NoZXNzaW1hbHNMb2NrZWQnKTtcbiAgfVxuXG4gIGxvY2FsTW9kZUxhYmVsKG1vZGU6IENoZXNzaW1hbHNMb2NhbE1vZGUpOiBzdHJpbmcge1xuICAgIHJldHVybiBtb2RlID09PSAnYm90JyA/IHRoaXMudCgnY2hlc3NpbWFsc0JvdE1vZGUnKSA6IHRoaXMudCgnY2hlc3NpbWFsc09uZURldmljZScpO1xuICB9XG5cbiAgbG9jYWxNb2RlRGVzY3JpcHRpb24obW9kZTogQ2hlc3NpbWFsc0xvY2FsTW9kZSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIG1vZGUgPT09ICdib3QnID8gdGhpcy50KCdjaGVzc2ltYWxzQm90TW9kZUJvZHknKSA6IHRoaXMudCgnY2hlc3NpbWFsc09uZURldmljZUJvZHknKTtcbiAgfVxuXG4gIHNlbGVjdEJvdERpZmZpY3VsdHkoZGlmZmljdWx0eTogQ2hlc3NpbWFsc0JvdERpZmZpY3VsdHkpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkQm90RGlmZmljdWx0eS5zZXQoZGlmZmljdWx0eSk7XG4gICAgY29uc3QgcHJvZmlsZSA9IHRoaXMuYm90UHJvZmlsZXMuZmluZCgoaXRlbSkgPT4gaXRlbS5kaWZmaWN1bHR5ID09PSBkaWZmaWN1bHR5KTtcbiAgICBpZiAocHJvZmlsZSkgdGhpcy5zZWxlY3RlZEJvdFByb2ZpbGVJZC5zZXQocHJvZmlsZS5pZCk7XG4gIH1cblxuICBib3REaWZmaWN1bHR5TGFiZWwoZGlmZmljdWx0eTogQ2hlc3NpbWFsc0JvdERpZmZpY3VsdHkpOiBzdHJpbmcge1xuICAgIGlmIChkaWZmaWN1bHR5ID09PSAnZWFzeScpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNCb3RFYXN5Jyk7XG4gICAgaWYgKGRpZmZpY3VsdHkgPT09ICdoYXJkJykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0JvdEhhcmQnKTtcbiAgICByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQm90Tm9ybWFsJyk7XG4gIH1cblxuICBib3RQcm9maWxlTGFiZWwocHJvZmlsZTogQ2hlc3NpbWFsc0JvdFByb2ZpbGUpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnQocHJvZmlsZS5sYWJlbEtleSk7XG4gIH1cblxuICBib3RQcm9maWxlRGVzY3JpcHRpb24ocHJvZmlsZTogQ2hlc3NpbWFsc0JvdFByb2ZpbGUpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnQocHJvZmlsZS5kZXNjcmlwdGlvbktleSk7XG4gIH1cblxuICBib3RQcm9maWxlVGVuZGVuY3kocHJvZmlsZTogQ2hlc3NpbWFsc0JvdFByb2ZpbGUpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnQoYGNoZXNzaW1hbHNCb3Qke3RoaXMuY2FwaXRhbGl6ZShwcm9maWxlLmlkKX1UZW5kZW5jeWApO1xuICB9XG5cbiAgYm90UHJvZmlsZUF2YXRhcihwcm9maWxlSWQ6IENoZXNzaW1hbHNCb3RQcm9maWxlSWQpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmJvdFByb2ZpbGVzLmZpbmQoKHByb2ZpbGUpID0+IHByb2ZpbGUuaWQgPT09IHByb2ZpbGVJZCk/LmF2YXRhciA/PyAn4pmfJztcbiAgfVxuXG4gIGNoYWxsZW5nZU9wZW5pbmdCb3QoKTogQ2hlc3NpbWFsc0NoYWxsZW5nZUJvdCB7XG4gICAgcmV0dXJuIHRoaXMuY2hhbGxlbmdlTGFkZGVyWzBdO1xuICB9XG5cbiAgY2hhbGxlbmdlQm90TmFtZShib3Q6IENoZXNzaW1hbHNDaGFsbGVuZ2VCb3QpOiBzdHJpbmcge1xuICAgIGNvbnN0IHByb2ZpbGUgPSB0aGlzLmJvdFByb2ZpbGVzLmZpbmQoKGl0ZW0pID0+IGl0ZW0uaWQgPT09IGJvdC5wcm9maWxlSWQpO1xuICAgIHJldHVybiBwcm9maWxlID8gdGhpcy5ib3RQcm9maWxlTGFiZWwocHJvZmlsZSkgOiB0aGlzLnQoJ2NoZXNzaW1hbHNCb3ROYW1lJyk7XG4gIH1cblxuICBjaGFsbGVuZ2VSdW5TdGF0dXNMYWJlbChydW46IENoZXNzaW1hbHNDaGFsbGVuZ2VSdW4pOiBzdHJpbmcge1xuICAgIGlmIChydW4uc3RhdHVzID09PSAnY29tcGxldGVkJykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0NoYWxsZW5nZVN0YXR1c0NvbXBsZXRlZCcpO1xuICAgIGlmIChydW4uc3RhdHVzID09PSAnZmFpbGVkJykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0NoYWxsZW5nZVN0YXR1c0ZhaWxlZCcpO1xuICAgIGlmIChydW4uc3RhdHVzID09PSAnYWJhbmRvbmVkJykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0NoYWxsZW5nZVN0YXR1c0FiYW5kb25lZCcpO1xuICAgIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VTdGF0dXNBY3RpdmUnKTtcbiAgfVxuXG4gIGNoYWxsZW5nZVJ1bkxpbmUocnVuOiBDaGVzc2ltYWxzQ2hhbGxlbmdlUnVuKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQ2hhbGxlbmdlUnVuTGluZScpXG4gICAgICAucmVwbGFjZSgne3JvdW5kfScsIFN0cmluZyhydW4uY3VycmVudFJvdW5kKSlcbiAgICAgIC5yZXBsYWNlKCd7d2luc30nLCBTdHJpbmcocnVuLndpbnMpKTtcbiAgfVxuXG4gIGlzQ2hhbGxlbmdlQWN0aXZlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNoYWxsZW5nZVBoYXNlKCkgIT09ICdpZGxlJyAmJiAhIXRoaXMuY2hhbGxlbmdlUnVuKCk7XG4gIH1cblxuICBjaGFsbGVuZ2VSb3VuZExhYmVsKCk6IHN0cmluZyB7XG4gICAgY29uc3QgcnVuID0gdGhpcy5jaGFsbGVuZ2VSdW4oKTtcbiAgICBpZiAoIXJ1bikgcmV0dXJuICctJztcbiAgICByZXR1cm4gYCR7cnVuLmN1cnJlbnRSb3VuZH0vJHt0aGlzLmNoYWxsZW5nZUxhZGRlci5sZW5ndGh9YDtcbiAgfVxuXG4gIGNoYWxsZW5nZUxpdmVzTGFiZWwoKTogc3RyaW5nIHtcbiAgICBjb25zdCBydW4gPSB0aGlzLmNoYWxsZW5nZVJ1bigpO1xuICAgIGlmICghcnVuKSByZXR1cm4gJy0nO1xuICAgIHJldHVybiAn4pmlJy5yZXBlYXQoTWF0aC5tYXgoMCwgcnVuLmxpdmVzUmVtYWluaW5nKSkgfHwgJzAnO1xuICB9XG5cbiAgY2hhbGxlbmdlT3V0Y29tZVRpdGxlKCk6IHN0cmluZyB7XG4gICAgY29uc3QgcGhhc2UgPSB0aGlzLmNoYWxsZW5nZVBoYXNlKCk7XG4gICAgaWYgKHBoYXNlID09PSAnY29tcGxldGVkJykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0NoYWxsZW5nZUNvbXBsZXRlZFRpdGxlJyk7XG4gICAgaWYgKHBoYXNlID09PSAnZmFpbGVkJykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0NoYWxsZW5nZUZhaWxlZFRpdGxlJyk7XG4gICAgcmV0dXJuIHRoaXMuY2hhbGxlbmdlTGFzdFdvbigpXG4gICAgICA/IHRoaXMudCgnY2hlc3NpbWFsc0NoYWxsZW5nZVJvdW5kV29uVGl0bGUnKVxuICAgICAgOiB0aGlzLnQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VSb3VuZExvc3RUaXRsZScpO1xuICB9XG5cbiAgY2hhbGxlbmdlT3V0Y29tZUJvZHkoKTogc3RyaW5nIHtcbiAgICBjb25zdCBydW4gPSB0aGlzLmNoYWxsZW5nZVJ1bigpO1xuICAgIGNvbnN0IHN0YXRzID0gdGhpcy5jaGFsbGVuZ2VMYXN0Um91bmRTdGF0cygpO1xuICAgIGNvbnN0IGJvdCA9IHRoaXMuY2hhbGxlbmdlTGFzdEJvdCgpID8/IHRoaXMuYWN0aXZlQ2hhbGxlbmdlQm90KCk7XG4gICAgY29uc3QgYm90TmFtZSA9IGJvdCA/IHRoaXMuY2hhbGxlbmdlQm90TmFtZShib3QpIDogdGhpcy50KCdjaGVzc2ltYWxzQm90TmFtZScpO1xuICAgIGNvbnN0IGJvZHlLZXkgPVxuICAgICAgdGhpcy5jaGFsbGVuZ2VQaGFzZSgpID09PSAnY29tcGxldGVkJ1xuICAgICAgICA/ICdjaGVzc2ltYWxzQ2hhbGxlbmdlQ29tcGxldGVkQm9keSdcbiAgICAgICAgOiB0aGlzLmNoYWxsZW5nZVBoYXNlKCkgPT09ICdmYWlsZWQnXG4gICAgICAgICAgPyAnY2hlc3NpbWFsc0NoYWxsZW5nZUZhaWxlZEJvZHknXG4gICAgICAgICAgOiB0aGlzLmNoYWxsZW5nZUxhc3RXb24oKVxuICAgICAgICAgICAgPyAnY2hlc3NpbWFsc0NoYWxsZW5nZVJvdW5kV29uQm9keSdcbiAgICAgICAgICAgIDogJ2NoZXNzaW1hbHNDaGFsbGVuZ2VSb3VuZExvc3RCb2R5JztcbiAgICByZXR1cm4gdGhpcy50KGJvZHlLZXkpXG4gICAgICAucmVwbGFjZSgne2JvdH0nLCBib3ROYW1lKVxuICAgICAgLnJlcGxhY2UoJ3tsaXZlc30nLCBTdHJpbmcocnVuPy5saXZlc1JlbWFpbmluZyA/PyAwKSlcbiAgICAgIC5yZXBsYWNlKCd7d2luc30nLCBTdHJpbmcocnVuPy53aW5zID8/IDApKVxuICAgICAgLnJlcGxhY2UoJ3twb3dlcnN9JywgU3RyaW5nKHRoaXMudG90YWxDaGFsbGVuZ2VQb3dlcnMoc3RhdHMpKSk7XG4gIH1cblxuICBjaGFsbGVuZ2VIYXNOZXdSZWNvcmQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY2hhbGxlbmdlTmV3UmVjb3JkKCk7XG4gIH1cblxuICB0b3RhbENoYWxsZW5nZVBvd2VycyhzdGF0cz86IENoZXNzaW1hbHNDaGFsbGVuZ2VSb3VuZFN0YXRzKTogbnVtYmVyIHtcbiAgICBpZiAoIXN0YXRzKSByZXR1cm4gMDtcbiAgICByZXR1cm4gc3RhdHMucG93ZXJzVXNlZC5lYWdsZSArIHN0YXRzLnBvd2Vyc1VzZWQuYnVsbCArIHN0YXRzLnBvd2Vyc1VzZWQua2FuZ2Fyb28gKyBzdGF0cy5wb3dlcnNVc2VkLmxpb247XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUNoYWxsZW5nZVJvdW5kU3RhdHMoZ2FtZTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSk6IENoZXNzaW1hbHNDaGFsbGVuZ2VSb3VuZFN0YXRzIHtcbiAgICBjb25zdCBzdGF0czogQ2hlc3NpbWFsc0NoYWxsZW5nZVJvdW5kU3RhdHMgPSB7XG4gICAgICBwb3dlcnNVc2VkOiB7IGVhZ2xlOiAwLCBidWxsOiAwLCBrYW5nYXJvbzogMCwgbGlvbjogMCB9LFxuICAgICAgcG93ZXJDYXB0dXJlczogMCxcbiAgICAgIHByb21vdGlvbnM6IGdhbWUud2lubmVyID09PSAnd2hpdGUnICYmIGdhbWUud2lubmVyUmVhc29uID09PSAncHJvbW90aW9uJyA/IDEgOiAwLFxuICAgICAgY2FwdHVyZXM6IDAsXG4gICAgICBtb3ZlczogMCxcbiAgICB9O1xuICAgIGZvciAoY29uc3QgZW50cnkgb2YgZ2FtZS5tb3ZlSGlzdG9yeSA/PyBbXSkge1xuICAgICAgY29uc3QgbW92ZSA9IGVudHJ5Lm1vdmU7XG4gICAgICBpZiAoIW1vdmUgfHwgIW1vdmUucGllY2VJZC5zdGFydHNXaXRoKCdXJykpIGNvbnRpbnVlO1xuICAgICAgc3RhdHMubW92ZXMgKz0gMTtcbiAgICAgIGlmIChtb3ZlLmNhcHR1cmVzUGllY2VJZCkgc3RhdHMuY2FwdHVyZXMgKz0gMTtcbiAgICAgIGlmICghbW92ZS5hbmltYWwpIGNvbnRpbnVlO1xuICAgICAgc3RhdHMucG93ZXJzVXNlZFttb3ZlLmFuaW1hbF0gKz0gMTtcbiAgICAgIGlmIChtb3ZlLmNhcHR1cmVzUGllY2VJZCkgc3RhdHMucG93ZXJDYXB0dXJlcyArPSAxO1xuICAgIH1cbiAgICByZXR1cm4gc3RhdHM7XG4gIH1cblxuICBhbmltYWxMYWJlbCh0eXBlOiBDaGVzc2ltYWxzQW5pbWFsVHlwZSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudChgY2hlc3NpbWFsc0FuaW1hbCR7dGhpcy5jYXBpdGFsaXplKHR5cGUpfWApO1xuICB9XG5cbiAgY2FuUmV2aWV3UHJldmlvdXMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICh0aGlzLmFjdGl2ZVJldmlld0luZGV4KCkgPz8gMCkgPiAwO1xuICB9XG5cbiAgY2FuUmV2aWV3TmV4dCgpOiBib29sZWFuIHtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuYWN0aXZlUmV2aWV3SW5kZXgoKTtcbiAgICByZXR1cm4gaW5kZXggIT09IHVuZGVmaW5lZCAmJiBpbmRleCA8IHRoaXMucmVwbGF5RW50cmllcygpLmxlbmd0aCAtIDE7XG4gIH1cblxuICByZXZpZXdQcmV2aW91c01vdmUoKTogdm9pZCB7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmFjdGl2ZVJldmlld0luZGV4KCk7XG4gICAgaWYgKGluZGV4ID09PSB1bmRlZmluZWQgfHwgaW5kZXggPD0gMCkgcmV0dXJuO1xuICAgIHRoaXMucmV2aWV3SW5kZXguc2V0KGluZGV4IC0gMSk7XG4gICAgdGhpcy5zZWxlY3RlZFBpZWNlSWQuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5zZWxlY3RlZEFuaW1hbC5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLmF1ZGlvLmZsaXAoKTtcbiAgfVxuXG4gIHJldmlld05leHRNb3ZlKCk6IHZvaWQge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5hY3RpdmVSZXZpZXdJbmRleCgpO1xuICAgIGlmIChpbmRleCA9PT0gdW5kZWZpbmVkIHx8IGluZGV4ID49IHRoaXMucmVwbGF5RW50cmllcygpLmxlbmd0aCAtIDEpIHJldHVybjtcbiAgICB0aGlzLnJldmlld0luZGV4LnNldChpbmRleCArIDEpO1xuICAgIHRoaXMuc2VsZWN0ZWRQaWVjZUlkLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuc2VsZWN0ZWRBbmltYWwuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5hdWRpby5mbGlwKCk7XG4gIH1cblxuICByZXBsYXlQb3NpdGlvbkxhYmVsKCk6IHN0cmluZyB7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmFjdGl2ZVJldmlld0luZGV4KCk7XG4gICAgaWYgKGluZGV4ID09PSB1bmRlZmluZWQpIHJldHVybiAnJztcbiAgICBjb25zdCBlbnRyeSA9IHRoaXMucmVwbGF5RW50cmllcygpW2luZGV4XTtcbiAgICBpZiAoIWVudHJ5IHx8IGVudHJ5Lm1vdmVOdW1iZXIgPT09IDApIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNSZXBsYXlTdGFydCcpO1xuICAgIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNSZXBsYXlNb3ZlJylcbiAgICAgIC5yZXBsYWNlKCd7bW92ZX0nLCBgJHtlbnRyeS5tb3ZlTnVtYmVyfWApXG4gICAgICAucmVwbGFjZSgne3RvdGFsfScsIGAke3RoaXMuZ2FtZSgpLm1vdmVDb3VudH1gKTtcbiAgfVxuXG4gIHNob3VsZFNob3dGaW5pc2hlZE92ZXJsYXkoKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuZ2FtZSgpLnN0YXR1cyAhPT0gJ2ZpbmlzaGVkJykgcmV0dXJuIGZhbHNlO1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5hY3RpdmVSZXZpZXdJbmRleCgpO1xuICAgIHJldHVybiBpbmRleCA9PT0gdW5kZWZpbmVkIHx8IGluZGV4ID09PSB0aGlzLnJlcGxheUVudHJpZXMoKS5sZW5ndGggLSAxO1xuICB9XG5cbiAgcHJpdmF0ZSBkaXNwbGF5Um93SW5kZXgocm93OiBudW1iZXIpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmJvYXJkT3JpZW50YXRpb25Db2xvcigpID09PSAnYmxhY2snID8gdGhpcy5yZXZpZXdHYW1lKCkuYm9hcmRTaXplIC0gMSAtIHJvdyA6IHJvdztcbiAgfVxuXG4gIHByaXZhdGUgZGlzcGxheUNvbEluZGV4KGNvbDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5ib2FyZE9yaWVudGF0aW9uQ29sb3IoKSA9PT0gJ2JsYWNrJyA/IHRoaXMucmV2aWV3R2FtZSgpLmJvYXJkU2l6ZSAtIDEgLSBjb2wgOiBjb2w7XG4gIH1cblxuICBwcml2YXRlIHdhdGNoT25saW5lR2FtZShnYW1lSWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMub25saW5lU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMub25saW5lU3Vic2NyaXB0aW9uID0gdGhpcy5vbmxpbmUud2F0Y2hHYW1lKGdhbWVJZCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChzdGF0ZSkgPT4ge1xuICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgIGlmICghc3RhdGUpIHtcbiAgICAgICAgICAgIHRoaXMub25saW5lQ29ubmVjdGlvblN0YXRlLnNldCgnZXJyb3InKTtcbiAgICAgICAgICAgIHRoaXMub25saW5lRXJyb3Iuc2V0KHRoaXMudCgnY2hlc3NpbWFsc09ubGluZU5vdEZvdW5kJykpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLm9ubGluZUNvbm5lY3Rpb25TdGF0ZS5zZXQoJ2xpdmUnKTtcbiAgICAgICAgICB0aGlzLm9ubGluZUVycm9yLnNldCgnJyk7XG4gICAgICAgICAgY29uc3QgcHJldmlvdXMgPSB0aGlzLmdhbWUoKTtcbiAgICAgICAgICB0aGlzLmFwcGx5T25saW5lR2FtZVNuYXBzaG90KHByZXZpb3VzLCBzdGF0ZSk7XG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgdGhpcy5vbmxpbmVDb25uZWN0aW9uU3RhdGUuc2V0KCdlcnJvcicpO1xuICAgICAgICAgIHRoaXMub25saW5lRXJyb3Iuc2V0KHRoaXMudCgnY2hlc3NpbWFsc09ubGluZURpc2Nvbm5lY3RlZEJvZHknKSk7XG4gICAgICAgICAgdGhpcy5yZXN1bWVTcGxhc2hWaXNpYmxlLnNldChmYWxzZSk7XG4gICAgICAgICAgdGhpcy5zY3JlZW4uc2V0KCdob21lJyk7XG4gICAgICAgICAgdGhpcy5hdWRpby5taXNzKCk7XG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgb25saW5lT3BlbkVycm9yTWVzc2FnZShlcnJvcjogdW5rbm93bik6IHN0cmluZyB7XG4gICAgY29uc3QgbWVzc2FnZSA9IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogJyc7XG4gICAgaWYgKG1lc3NhZ2UuaW5jbHVkZXMoJ0NIRVNTSU1BTFNfR0FNRV9FWFBJUkVEJykpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNPbmxpbmVFeHBpcmVkQm9keScpO1xuICAgIGlmIChtZXNzYWdlLmluY2x1ZGVzKCdDSEVTU0lNQUxTX0dBTUVfTk9UX0ZPVU5EJykpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNPbmxpbmVOb3RGb3VuZCcpO1xuICAgIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNPbmxpbmVFcnJvcicpO1xuICB9XG5cbiAgcHJpdmF0ZSBhcHBseU9ubGluZUdhbWVTbmFwc2hvdChwcmV2aW91czogQ2hlc3NpbWFsc0dhbWVTdGF0ZSwgc3RhdGU6IENoZXNzaW1hbHNHYW1lU3RhdGUpOiB2b2lkIHtcbiAgICB0aGlzLmdhbWUuc2V0KHN0YXRlKTtcbiAgICBpZiAoc3RhdGUuc3RhdHVzID09PSAnZmluaXNoZWQnKSB7XG4gICAgICBpZiAocHJldmlvdXMuaWQgIT09IHN0YXRlLmlkIHx8IHByZXZpb3VzLnN0YXR1cyAhPT0gJ2ZpbmlzaGVkJyB8fCB0aGlzLnJldmlld0luZGV4KCkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLnNob3dMYXRlc3RSZXZpZXdTbmFwc2hvdCgpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNsZWFyUmV2aWV3KCk7XG4gICAgfVxuICAgIGlmIChwcmV2aW91cy5zdGF0dXMgPT09ICdmaW5pc2hlZCcgJiYgc3RhdGUuc3RhdHVzID09PSAnaW5fcHJvZ3Jlc3MnKSB7XG4gICAgICB0aGlzLmxhc3RPdXRjb21lU291bmRLZXkgPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLnNlbGVjdGVkUGllY2VJZC5zZXQodW5kZWZpbmVkKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRBbmltYWwuc2V0KHVuZGVmaW5lZCk7XG4gICAgICB0aGlzLm1vdmluZ1BpZWNlLnNldCh1bmRlZmluZWQpO1xuICAgICAgdGhpcy5yZW1hdGNoTG9hZGluZy5zZXQoZmFsc2UpO1xuICAgICAgdGhpcy5zdGFydENoZXNzaW1hbHNHYW1lTXVzaWNTb29uKCk7XG4gICAgICB0aGlzLmZvY3VzQm9hcmRTb29uKCk7XG4gICAgICB2b2lkIHRoaXMuaGFwdGljcy5zdWNjZXNzKCk7XG4gICAgfVxuICAgIHRoaXMuc2VsZWN0ZWRCb2FyZFNpemUuc2V0KHN0YXRlLmJvYXJkU2l6ZSk7XG4gICAgdGhpcy5yZXN1bWVTcGxhc2hWaXNpYmxlLnNldChmYWxzZSk7XG4gICAgY29uc3QgcHJldmlvdXNQZW5kaW5nS2V5ID0gcHJldmlvdXMuaWQgPT09IHN0YXRlLmlkID8gdGhpcy5vbmxpbmUucGFydGljaXBhbnRLZXkocHJldmlvdXMub25saW5lPy5wZW5kaW5nR3Vlc3QpIDogJyc7XG4gICAgY29uc3QgbmV4dFBlbmRpbmdLZXkgPSB0aGlzLm9ubGluZS5wYXJ0aWNpcGFudEtleShzdGF0ZS5vbmxpbmU/LnBlbmRpbmdHdWVzdCk7XG4gICAgaWYgKFxuICAgICAgc3RhdGUuc3RhdHVzID09PSAnd2FpdGluZycgJiZcbiAgICAgIHRoaXMub25saW5lLmlzSG9zdFdhaXRpbmcoc3RhdGUsIHRoaXMub25saW5lLmN1cnJlbnRVaWQpICYmXG4gICAgICAhIW5leHRQZW5kaW5nS2V5ICYmXG4gICAgICBuZXh0UGVuZGluZ0tleSAhPT0gcHJldmlvdXNQZW5kaW5nS2V5XG4gICAgKSB7XG4gICAgICB0aGlzLnRvYXN0LnNob3coe1xuICAgICAgICBtZXNzYWdlOiB0aGlzLnQoJ2NoZXNzaW1hbHNKb2luUmVxdWVzdEJvZHknKS5yZXBsYWNlKCd7cGxheWVyfScsIHRoaXMucGVuZGluZ0d1ZXN0TmFtZSgpKSxcbiAgICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgICAgZHVyYXRpb246IDMyMDAsXG4gICAgICAgIHBvc2l0aW9uOiAndG9wJyxcbiAgICAgIH0pO1xuICAgICAgdGhpcy5hdWRpby5jaGVzc2ltYWxzSm9pblJlcXVlc3QoKTtcbiAgICAgIHZvaWQgdGhpcy5oYXB0aWNzLnN1Y2Nlc3MoKTtcbiAgICB9XG4gICAgaWYgKFxuICAgICAgcHJldmlvdXMuY3VycmVudFR1cm4gIT09IHN0YXRlLmN1cnJlbnRUdXJuICYmXG4gICAgICBzdGF0ZS5zdGF0dXMgPT09ICdpbl9wcm9ncmVzcycgJiZcbiAgICAgICF0aGlzLnNob3VsZEtlZXBCb2FyZE9yaWVudGF0aW9uU3RhdGljKHN0YXRlKVxuICAgICkge1xuICAgICAgdGhpcy50cmlnZ2VyQm9hcmRPcmllbnRhdGlvbigpO1xuICAgIH1cbiAgICBpZiAoc3RhdGUuc3RhdHVzID09PSAnZmluaXNoZWQnICYmIHByZXZpb3VzLnN0YXR1cyAhPT0gJ2ZpbmlzaGVkJykge1xuICAgICAgdGhpcy5wbGF5Q2hlc3NpbWFsc091dGNvbWVTb3VuZChzdGF0ZSk7XG4gICAgICB2b2lkIHRoaXMuaGFwdGljcy5zdWNjZXNzKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBtaW5pR2FtZXNCYXNlUm91dGUoKTogc3RyaW5nIHtcbiAgICBjb25zdCByb3V0ZSA9ICh0aGlzLm1pbmlHYW1lc1JvdXRlIHx8ICcvbWluaS1nYW1lcycpLnRyaW0oKTtcbiAgICByZXR1cm4gYC8ke3JvdXRlLnJlcGxhY2UoL15cXC8rfFxcLyskL2csICcnKSB8fCAnbWluaS1nYW1lcyd9YDtcbiAgfVxuXG4gIHByaXZhdGUgY2hlc3NpbWFsc0dhbWVSb3V0ZShnYW1lSWQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMubWluaUdhbWVzQmFzZVJvdXRlKCl9L2NoZXNzaW1hbHMvJHtlbmNvZGVVUklDb21wb25lbnQodGhpcy5vbmxpbmUubm9ybWFsaXplR2FtZUlkKGdhbWVJZCkpfWA7XG4gIH1cblxuICBwcml2YXRlIGNhcGl0YWxpemUodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHZhbHVlLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgdmFsdWUuc2xpY2UoMSk7XG4gIH1cbn1cbiJdfQ==
|
|
4204
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlc3NpbWFscy1nYW1lLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9vcmdhbmlzbXMvbWluaS1nYW1lcy9jaGVzc2ltYWxzLWdhbWUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsS0FBSyxFQUFFLE1BQU0sRUFBcUIsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNySSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVwQyxPQUFPLEVBQ0wsbUJBQW1CLEVBQ25CLHVCQUF1QixFQUN2Qix1QkFBdUIsRUFDdkIsMkJBQTJCLEVBQzNCLG9CQUFvQixFQUNwQix1QkFBdUIsRUFDdkIsb0JBQW9CLEVBQ3BCLFdBQVcsRUFDWCxvQkFBb0IsR0FDckIsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUM3RixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFxQjFELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQzNGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBRXhGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBRTNGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBR3BGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNsRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDM0UsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMvRCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNsRixPQUFPLEVBQUUsT0FBTyxJQUFJLDBCQUEwQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7O0FBMEN6RSxNQUFNLDRCQUE0QixHQUFHLEdBQUcsQ0FBQztBQUN6QyxNQUFNLDBCQUEwQixHQUFHLEdBQUcsQ0FBQztBQUN2QyxNQUFNLG9CQUFvQixHQUEwQixPQUFPLENBQUM7QUFDNUQsTUFBTSx5QkFBeUIsR0FBRyxDQUFDLENBQUM7QUFFcEMsTUFBTSxPQUFPLEdBQTJCO0lBQ3RDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsbUNBQW1DLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRTtJQUM5RSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLGtDQUFrQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUU7SUFDNUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxzQ0FBc0MsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFO0lBQ3BGLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsa0NBQWtDLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRTtDQUMxRSxDQUFDO0FBRUYsTUFBTSwyQkFBMkIsR0FBNkI7SUFDNUQsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLG1DQUFtQyxFQUFFO0lBQ2xJLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxxQ0FBcUMsRUFBRTtJQUN4SSxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsbUNBQW1DLEVBQUU7SUFDbEksRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLG1DQUFtQyxFQUFFO0lBQ2xJLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxxQ0FBcUMsRUFBRTtJQUN0SSxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsbUNBQW1DLEVBQUU7SUFDcEksRUFBRSxFQUFFLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLHFDQUFxQyxFQUFFO0lBQ3RJLEVBQUUsRUFBRSxFQUFFLFVB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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTY3QlQ7d0RBbzZHaUMsV0FBVztzQkFBNUMsU0FBUzt1QkFBQyxhQUFhO2dCQXlKWCxZQUFZO3NCQUF4QixLQUFLO2dCQVFHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5wdXQsIE5nWm9uZSwgT25EZXN0cm95LCBPbkluaXQsIFZpZXdDaGlsZCwgY29tcHV0ZWQsIGVmZmVjdCwgaW5qZWN0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgSW9uTW9kYWwgfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IE5hdmlnYXRpb25TdGFydCwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge1xuICBhcHBseUNoZXNzaW1hbHNNb3ZlLFxuICBjaG9vc2VDaGVzc2ltYWxzQm90TW92ZSxcbiAgQ0hFU1NJTUFMU19CT1RfUFJPRklMRVMsXG4gIGNyZWF0ZUNoZXNzaW1hbHNSZXZpZXdTdGF0ZSxcbiAgY3JlYXRlQ2hlc3NpbWFsc0dhbWUsXG4gIGdldENoZXNzaW1hbHNMZWdhbE1vdmVzLFxuICBnZXRDaGVzc2ltYWxzUGllY2VBdCxcbiAgcG9zaXRpb25LZXksXG4gIHJlc2lnbkNoZXNzaW1hbHNHYW1lLFxufSBmcm9tICcuL2NoZXNzaW1hbHMtZW5naW5lJztcbmltcG9ydCB7IENoZXNzaW1hbHNPbmxpbmVTZXJ2aWNlIH0gZnJvbSAnLi9jaGVzc2ltYWxzLW9ubGluZS5zZXJ2aWNlJztcbmltcG9ydCB7IENoZXNzaW1hbHNDaGFsbGVuZ2VQcm9ncmVzc1NlcnZpY2UgfSBmcm9tICcuL2NoZXNzaW1hbHMtY2hhbGxlbmdlLXByb2dyZXNzLnNlcnZpY2UnO1xuaW1wb3J0IHsgTUlOSV9HQU1FU19JMThOIH0gZnJvbSAnLi9taW5pLWdhbWVzLmkxOG4nO1xuaW1wb3J0IHsgUmV0cm9BdWRpb1NlcnZpY2UgfSBmcm9tICcuL3JldHJvLWF1ZGlvLnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgQ2hlc3NpbWFsc0FuaW1hbFR5cGUsXG4gIENoZXNzaW1hbHNCb3REaWZmaWN1bHR5LFxuICBDaGVzc2ltYWxzQm90UHJvZmlsZSxcbiAgQ2hlc3NpbWFsc0JvdFByb2ZpbGVJZCxcbiAgQ2hlc3NpbWFsc0JvYXJkU2l6ZSxcbiAgQ2hlc3NpbWFsc0NoYWxsZW5nZUJvdCxcbiAgQ2hlc3NpbWFsc0NoYWxsZW5nZVJvdW5kU3RhdHMsXG4gIENoZXNzaW1hbHNDaGFsbGVuZ2VSb3VuZFJlc3VsdCxcbiAgQ2hlc3NpbWFsc0NoYWxsZW5nZVJ1bixcbiAgQ2hlc3NpbWFsc0NoYWxsZW5nZVN0YXRzLFxuICBDaGVzc2ltYWxzR2FtZVN0YXRlLFxuICBDaGVzc2ltYWxzSGlzdG9yeUVudHJ5LFxuICBDaGVzc2ltYWxzTG9jYWxNb2RlLFxuICBDaGVzc2ltYWxzTW92ZSxcbiAgQ2hlc3NpbWFsc09ubGluZVBhcnRpY2lwYW50LFxuICBDaGVzc2ltYWxzUGllY2UsXG4gIENoZXNzaW1hbHNQbGF5ZXJDb2xvcixcbiAgQ2hlc3NpbWFsc1Bvc2l0aW9uLFxufSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IE1vZGFsTGF5b3V0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL21vZGFsLWxheW91dC9tb2RhbC1sYXlvdXQuY29tcG9uZW50JztcbmltcG9ydCB7IFJhbmdlSW5wdXRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvcmFuZ2UtaW5wdXQvcmFuZ2UtaW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7IFJhbmdlSW5wdXRNZXRhZGF0YSwgUmFuZ2VWYWx1ZSB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9yYW5nZS1pbnB1dC90eXBlcyc7XG5pbXBvcnQgeyBUb2dnbGVJbnB1dENvbXBvbmVudCB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy90b2dnbGUtaW5wdXQvdG9nZ2xlLWlucHV0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUb2dnbGVJbnB1dE1ldGFkYXRhIH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL3RvZ2dsZS1pbnB1dC90eXBlcyc7XG5pbXBvcnQgeyBVc2VyQXZhdGFyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvdXNlci1hdmF0YXIvdXNlci1hdmF0YXIuY29tcG9uZW50JztcbmltcG9ydCB7IFVzZXJBdmF0YXJNZXRhZGF0YSB9IGZyb20gJy4uLy4uL2F0b21zL3VzZXItYXZhdGFyL3R5cGVzJztcbmltcG9ydCB7IEJ1dHRvbk1ldGFkYXRhIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9hdXRoL2F1dGguc2VydmljZSc7XG5pbXBvcnQgeyBIYXB0aWNzU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2hhcHRpY3MvaGFwdGljcy5zZXJ2aWNlJztcbmltcG9ydCB7IEkxOG5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvaTE4bic7XG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy90b2FzdC5zZXJ2aWNlJztcbmltcG9ydCB7IE1pbmlHYW1lUGxheWVyUHJvZmlsZVNlcnZpY2UgfSBmcm9tICcuL21pbmktZ2FtZS1wbGF5ZXItcHJvZmlsZS5zZXJ2aWNlJztcbmltcG9ydCB7IFZFUlNJT04gYXMgVkFMVEVDSF9DT01QT05FTlRTX1ZFUlNJT04gfSBmcm9tICcuLi8uLi8uLi92ZXJzaW9uJztcblxuaW50ZXJmYWNlIENoZXNzaW1hbHNBbmltYWxWaWV3IHtcbiAgdHlwZTogQ2hlc3NpbWFsc0FuaW1hbFR5cGU7XG4gIGFzc2V0U3JjOiBzdHJpbmc7XG4gIHRvbmU6IG51bWJlcjtcbn1cblxudHlwZSBDaGVzc2ltYWxzQ29uZmlybUFjdGlvbiA9ICdyZXN0YXJ0JyB8ICdtb2RlJyB8ICdnYW1lcycgfCAncmVzaWduJyB8ICdjaGFsbGVuZ2UtbmV3JztcbnR5cGUgQ2hlc3NpbWFsc1JlbWF0Y2hTdGF0ZSA9ICdub25lJyB8ICdyZXF1ZXN0ZWQnIHwgJ2luY29taW5nJztcbnR5cGUgQ2hlc3NpbWFsc0NoYWxsZW5nZVBoYXNlID0gJ2lkbGUnIHwgJ3BsYXlpbmcnIHwgJ2JldHdlZW4nIHwgJ2NvbXBsZXRlZCcgfCAnZmFpbGVkJztcblxuaW50ZXJmYWNlIENoZXNzaW1hbHNUdXRvcmlhbEV4cGVjdGVkTW92ZSB7XG4gIHBpZWNlSWQ6IHN0cmluZztcbiAgdG86IENoZXNzaW1hbHNQb3NpdGlvbjtcbiAgYW5pbWFsPzogQ2hlc3NpbWFsc0FuaW1hbFR5cGU7XG59XG5cbmludGVyZmFjZSBDaGVzc2ltYWxzTW92aW5nUGllY2VWaWV3IHtcbiAgY29sb3I6IENoZXNzaW1hbHNQbGF5ZXJDb2xvcjtcbiAgZnJvbVJvdzogbnVtYmVyO1xuICBmcm9tQ29sOiBudW1iZXI7XG4gIHRvUm93OiBudW1iZXI7XG4gIHRvQ29sOiBudW1iZXI7XG59XG5cbmludGVyZmFjZSBDaGVzc2ltYWxzTW92ZUVmZmVjdFZpZXcge1xuICBhbmltYWw/OiBDaGVzc2ltYWxzQW5pbWFsVHlwZTtcbiAgZnJvbTogQ2hlc3NpbWFsc1Bvc2l0aW9uO1xuICB0bzogQ2hlc3NpbWFsc1Bvc2l0aW9uO1xuICBjYXB0dXJlOiBib29sZWFuO1xufVxuXG5pbnRlcmZhY2UgQ2hlc3NpbWFsc01vdmVUcmFpbFZpZXcge1xuICB4OiBzdHJpbmc7XG4gIHk6IHN0cmluZztcbiAgbGVuZ3RoOiBzdHJpbmc7XG4gIGFuZ2xlOiBzdHJpbmc7XG4gIGFuaW1hbD86IENoZXNzaW1hbHNBbmltYWxUeXBlO1xuICBjYXB0dXJlOiBib29sZWFuO1xufVxuXG5jb25zdCBDSEVTU0lNQUxTX01PVkVfQU5JTUFUSU9OX01TID0gMzYwO1xuY29uc3QgQ0hFU1NJTUFMU19CT1RfVEhJTktJTkdfTVMgPSA2MjA7XG5jb25zdCBDSEVTU0lNQUxTX0JPVF9DT0xPUjogQ2hlc3NpbWFsc1BsYXllckNvbG9yID0gJ2JsYWNrJztcbmNvbnN0IENIRVNTSU1BTFNfVFVUT1JJQUxfU1RFUFMgPSA3O1xuXG5jb25zdCBBTklNQUxTOiBDaGVzc2ltYWxzQW5pbWFsVmlld1tdID0gW1xuICB7IHR5cGU6ICdlYWdsZScsIGFzc2V0U3JjOiAnYXNzZXRzL2dhbWVzL2NoZXNzaW1hbHMvZWFnbGUuanBnJywgdG9uZTogNjU5LjI1IH0sXG4gIHsgdHlwZTogJ2J1bGwnLCBhc3NldFNyYzogJ2Fzc2V0cy9nYW1lcy9jaGVzc2ltYWxzL2J1bGwuanBnJywgdG9uZTogMjYxLjYzIH0sXG4gIHsgdHlwZTogJ2thbmdhcm9vJywgYXNzZXRTcmM6ICdhc3NldHMvZ2FtZXMvY2hlc3NpbWFscy9rYW5nYXJvby5qcGcnLCB0b25lOiA1MjMuMjUgfSxcbiAgeyB0eXBlOiAnbGlvbicsIGFzc2V0U3JjOiAnYXNzZXRzL2dhbWVzL2NoZXNzaW1hbHMvbGlvbi5qcGcnLCB0b25lOiAzOTIgfSxcbl07XG5cbmNvbnN0IENIRVNTSU1BTFNfQ0hBTExFTkdFX0xBRERFUjogQ2hlc3NpbWFsc0NoYWxsZW5nZUJvdFtdID0gW1xuICB7IGlkOiAnc3Byb3V0Jywgcm91bmQ6IDEsIHByb2ZpbGVJZDogJ2V4cGxvcmVyJywgZGlmZmljdWx0eTogJ2Vhc3knLCBib2FyZFNpemU6IDYsIGludHJvS2V5OiAnY2hlc3NpbWFsc0NoYWxsZW5nZUJvdFNwcm91dEludHJvJyB9LFxuICB7IGlkOiAnc2VudGluZWwnLCByb3VuZDogMiwgcHJvZmlsZUlkOiAnZ3VhcmRpYW4nLCBkaWZmaWN1bHR5OiAnbm9ybWFsJywgYm9hcmRTaXplOiA2LCBpbnRyb0tleTogJ2NoZXNzaW1hbHNDaGFsbGVuZ2VCb3RTZW50aW5lbEludHJvJyB9LFxuICB7IGlkOiAnaHVudGVyJywgcm91bmQ6IDMsIHByb2ZpbGVJZDogJ2h1bnRlcicsIGRpZmZpY3VsdHk6ICdub3JtYWwnLCBib2FyZFNpemU6IDYsIGludHJvS2V5OiAnY2hlc3NpbWFsc0NoYWxsZW5nZUJvdEh1bnRlckludHJvJyB9LFxuICB7IGlkOiAnanVtcGVyJywgcm91bmQ6IDQsIHByb2ZpbGVJZDogJ2p1bXBlcicsIGRpZmZpY3VsdHk6ICdub3JtYWwnLCBib2FyZFNpemU6IDYsIGludHJvS2V5OiAnY2hlc3NpbWFsc0NoYWxsZW5nZUJvdEp1bXBlckludHJvJyB9LFxuICB7IGlkOiAncHJlZGF0b3InLCByb3VuZDogNSwgcHJvZmlsZUlkOiAncHJlZGF0b3InLCBkaWZmaWN1bHR5OiAnaGFyZCcsIGJvYXJkU2l6ZTogOCwgaW50cm9LZXk6ICdjaGVzc2ltYWxzQ2hhbGxlbmdlQm90UHJlZGF0b3JJbnRybycgfSxcbiAgeyBpZDogJ29yYWNsZScsIHJvdW5kOiA2LCBwcm9maWxlSWQ6ICdzdHJhdGVnaXN0JywgZGlmZmljdWx0eTogJ2hhcmQnLCBib2FyZFNpemU6IDgsIGludHJvS2V5OiAnY2hlc3NpbWFsc0NoYWxsZW5nZUJvdE9yYWNsZUludHJvJyB9LFxuICB7IGlkOiAnc3ByaW50ZXInLCByb3VuZDogNywgcHJvZmlsZUlkOiAnc3ByaW50ZXInLCBkaWZmaWN1bHR5OiAnaGFyZCcsIGJvYXJkU2l6ZTogOCwgaW50cm9LZXk6ICdjaGVzc2ltYWxzQ2hhbGxlbmdlQm90U3ByaW50ZXJJbnRybycgfSxcbiAgeyBpZDogJ2NoYW1waW9uJywgcm91bmQ6IDgsIHByb2ZpbGVJZDogJ3NlbnRpbmVsJywgZGlmZmljdWx0eTogJ2hhcmQnLCBib2FyZFNpemU6IDgsIGludHJvS2V5OiAnY2hlc3NpbWFsc0NoYWxsZW5nZUJvdENoYW1waW9uSW50cm8nIH0sXG5dO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtY2hlc3NpbWFscy1nYW1lJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0lvbk1vZGFsLCBNb2RhbExheW91dENvbXBvbmVudCwgUmFuZ2VJbnB1dENvbXBvbmVudCwgVG9nZ2xlSW5wdXRDb21wb25lbnQsIFVzZXJBdmF0YXJDb21wb25lbnRdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxtYWluIGNsYXNzPVwiY2hlc3NpbWFscy1zaGVsbFwiIFtjbGFzcy5jaGVzc2ltYWxzLXNoZWxsLS1wcm9qZWN0aW9uXT1cInByb2plY3Rpb25Nb2RlXCI+XG4gICAgICBAaWYgKHNjcmVlbigpID09PSAnaG9tZScpIHtcbiAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJjaGVzc2ltYWxzLWhlcm9cIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1oZXJvX19sb2dvXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgICA8aW1nIHNyYz1cImFzc2V0cy9nYW1lcy9jaGVzc2ltYWxzL2xvZ28uanBnXCIgYWx0PVwiXCIgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8aDE+e3sgdCgnY2hlc3NpbWFsc1RpdGxlJykgfX08L2gxPlxuICAgICAgICAgIDxwPnt7IHQoJ2NoZXNzaW1hbHNTdWJ0aXRsZScpIH19PC9wPlxuICAgICAgICA8L3NlY3Rpb24+XG5cbiAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJjaGVzc2ltYWxzLXBhbmVsXCI+XG4gICAgICAgICAgPGFydGljbGUgY2xhc3M9XCJjaGVzc2ltYWxzLWhvd3RvXCI+XG4gICAgICAgICAgICA8aDI+e3sgdCgnY2hlc3NpbWFsc0hvd1RvVGl0bGUnKSB9fTwvaDI+XG4gICAgICAgICAgICA8cD57eyB0KCdjaGVzc2ltYWxzSG93VG9Cb2R5JykgfX08L3A+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1ob3d0b19fYWN0aW9uc1wiPlxuICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2hlc3NpbWFscy1sZWFybi1tb3JlXCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJzdGFydFR1dG9yaWFsKClcIj5cbiAgICAgICAgICAgICAgICB7eyB0KCdjaGVzc2ltYWxzVHV0b3JpYWxTdGFydCcpIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2hlc3NpbWFscy1sZWFybi1tb3JlXCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJvcGVuUnVsZXNNb2RhbCgpXCI+XG4gICAgICAgICAgICAgICAge3sgdCgnbGVhcm5Nb3JlJykgfX1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2FydGljbGU+XG5cbiAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz1cImNoZXNzaW1hbHMtY2hhbGxlbmdlLWNhcmRcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLWNoYWxsZW5nZS1jYXJkX19jb3B5XCI+XG4gICAgICAgICAgICAgIDxzcGFuPnt7IHQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VFeWVicm93JykgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDxoMj57eyB0KCdjaGVzc2ltYWxzQ2hhbGxlbmdlVGl0bGUnKSB9fTwvaDI+XG4gICAgICAgICAgICAgIDxwPnt7IHQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VCb2R5JykgfX08L3A+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLWNoYWxsZW5nZS1yaXZhbFwiPlxuICAgICAgICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIj57eyBib3RQcm9maWxlQXZhdGFyKGNoYWxsZW5nZU9wZW5pbmdCb3QoKS5wcm9maWxlSWQpIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdjaGVzc2ltYWxzQ2hhbGxlbmdlRmlyc3RSaXZhbCcpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IGNoYWxsZW5nZUJvdE5hbWUoY2hhbGxlbmdlT3BlbmluZ0JvdCgpKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgIDxwPnt7IHQoY2hhbGxlbmdlT3BlbmluZ0JvdCgpLmludHJvS2V5KSB9fTwvcD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLWNoYWxsZW5nZS1jYXJkX19zdGF0c1wiPlxuICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnY2hlc3NpbWFsc0NoYWxsZW5nZUxpdmVzJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgIDxzdHJvbmc+Mzwvc3Ryb25nPlxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdjaGVzc2ltYWxzQ2hhbGxlbmdlQmVzdFJvdW5kJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgY2hhbGxlbmdlU3RhdHMoKS5iZXN0Um91bmRSZWFjaGVkIHx8ICctJyB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdjaGVzc2ltYWxzQ2hhbGxlbmdlQmVzdFN0cmVhaycpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IGNoYWxsZW5nZVN0YXRzKCkuYmVzdFdpblN0cmVhayB8fCAnLScgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1jaGFsbGVuZ2UtcGF0aFwiIFthdHRyLmFyaWEtbGFiZWxdPVwidCgnY2hlc3NpbWFsc0NoYWxsZW5nZVBhdGgnKVwiPlxuICAgICAgICAgICAgICBAZm9yIChib3Qgb2YgY2hhbGxlbmdlTGFkZGVyOyB0cmFjayBib3QuaWQpIHtcbiAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgW2NsYXNzLmlzLWNsZWFyZWRdPVwiY2hhbGxlbmdlU3RhdHMoKS5iZXN0Um91bmRSZWFjaGVkID49IGJvdC5yb3VuZFwiXG4gICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtY3VycmVudF09XCJjaGFsbGVuZ2VTdGF0cygpLmJlc3RSb3VuZFJlYWNoZWQgKyAxID09PSBib3Qucm91bmRcIlxuICAgICAgICAgICAgICAgICAgW2F0dHIudGl0bGVdPVwiY2hhbGxlbmdlQm90TmFtZShib3QpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7eyBib3RQcm9maWxlQXZhdGFyKGJvdC5wcm9maWxlSWQpIH19XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIEBpZiAoY2hhbGxlbmdlSGlzdG9yeSgpLmxlbmd0aCkge1xuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1jaGFsbGVuZ2UtaGlzdG9yeVwiPlxuICAgICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdjaGVzc2ltYWxzQ2hhbGxlbmdlUmVjZW50UnVucycpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICBAZm9yIChydW4gb2YgY2hhbGxlbmdlSGlzdG9yeSgpOyB0cmFjayBydW4uaWQpIHtcbiAgICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgICA8Yj57eyBjaGFsbGVuZ2VSdW5TdGF0dXNMYWJlbChydW4pIH19PC9iPlxuICAgICAgICAgICAgICAgICAgICB7eyBjaGFsbGVuZ2VSdW5MaW5lKHJ1bikgfX1cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtY2hhbGxlbmdlLWNhcmRfX2FjdGlvbnNcIj5cbiAgICAgICAgICAgICAgQGlmIChhY3RpdmVTdG9yZWRDaGFsbGVuZ2VSdW4oKTsgYXMgYWN0aXZlUnVuKSB7XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNoZXNzaW1hbHMtcHJpbWFyeVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwicmVzdW1lQ2hhbGxlbmdlKGFjdGl2ZVJ1bilcIj5cbiAgICAgICAgICAgICAgICAgIHt7IHQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VSZXN1bWUnKSB9fVxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjaGVzc2ltYWxzLXByaW1hcnlcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInN0YXJ0Q2hhbGxlbmdlKClcIj5cbiAgICAgICAgICAgICAgICB7eyBhY3RpdmVTdG9yZWRDaGFsbGVuZ2VSdW4oKSA/IHQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VTdGFydE5ldycpIDogdCgnY2hlc3NpbWFsc0NoYWxsZW5nZVN0YXJ0JykgfX1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2FydGljbGU+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1zaXplXCIgcm9sZT1cInJhZGlvZ3JvdXBcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInQoJ2NoZXNzaW1hbHNCb2FyZFNpemUnKVwiPlxuICAgICAgICAgICAgQGZvciAoc2l6ZSBvZiBib2FyZFNpemVzOyB0cmFjayBzaXplKSB7XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuaXMtc2VsZWN0ZWRdPVwic2VsZWN0ZWRCb2FyZFNpemUoKSA9PT0gc2l6ZVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdGVkQm9hcmRTaXplLnNldChzaXplKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IHNpemUgfX14e3sgc2l6ZSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgIDxzbWFsbD57eyBzaXplID09PSA2ID8gdCgnY2hlc3NpbWFsc1NpemVTbWFsbCcpIDogdCgnY2hlc3NpbWFsc1NpemVMYXJnZScpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1tb2RlXCIgcm9sZT1cInJhZGlvZ3JvdXBcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInQoJ2NoZXNzaW1hbHNNb2RlVGl0bGUnKVwiPlxuICAgICAgICAgICAgQGZvciAobW9kZSBvZiBsb2NhbE1vZGVzOyB0cmFjayBtb2RlKSB7XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuaXMtc2VsZWN0ZWRdPVwic2VsZWN0ZWRMb2NhbE1vZGUoKSA9PT0gbW9kZVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdGVkTG9jYWxNb2RlLnNldChtb2RlKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IGxvY2FsTW9kZUxhYmVsKG1vZGUpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgPHNtYWxsPnt7IGxvY2FsTW9kZURlc2NyaXB0aW9uKG1vZGUpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICBAaWYgKHNlbGVjdGVkTG9jYWxNb2RlKCkgPT09ICdib3QnKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1kaWZmaWN1bHR5XCIgcm9sZT1cInJhZGlvZ3JvdXBcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInQoJ2NoZXNzaW1hbHNCb3REaWZmaWN1bHR5JylcIj5cbiAgICAgICAgICAgICAgQGZvciAoZGlmZmljdWx0eSBvZiBib3REaWZmaWN1bHRpZXM7IHRyYWNrIGRpZmZpY3VsdHkpIHtcbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1zZWxlY3RlZF09XCJzZWxlY3RlZEJvdERpZmZpY3VsdHkoKSA9PT0gZGlmZmljdWx0eVwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0Qm90RGlmZmljdWx0eShkaWZmaWN1bHR5KVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAge3sgYm90RGlmZmljdWx0eUxhYmVsKGRpZmZpY3VsdHkpIH19XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtYm90c1wiIHJvbGU9XCJyYWRpb2dyb3VwXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJ0KCdjaGVzc2ltYWxzQm90U3R5bGUnKVwiPlxuICAgICAgICAgICAgICBAZm9yIChwcm9maWxlIG9mIGF2YWlsYWJsZUJvdFByb2ZpbGVzKCk7IHRyYWNrIHByb2ZpbGUuaWQpIHtcbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1zZWxlY3RlZF09XCJzZWxlY3RlZEJvdFByb2ZpbGVJZCgpID09PSBwcm9maWxlLmlkXCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RlZEJvdFByb2ZpbGVJZC5zZXQocHJvZmlsZS5pZClcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPnt7IHByb2ZpbGUuYXZhdGFyIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyBib3RQcm9maWxlTGFiZWwocHJvZmlsZSkgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyBib3RQcm9maWxlRGVzY3JpcHRpb24ocHJvZmlsZSkgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgQGlmIChzZWxlY3RlZEJvdFByb2ZpbGVJZCgpID09PSBwcm9maWxlLmlkKSB7XG4gICAgICAgICAgICAgICAgICAgIDxwPnt7IGJvdFByb2ZpbGVUZW5kZW5jeShwcm9maWxlKSB9fTwvcD5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNoZXNzaW1hbHMtcHJpbWFyeVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwic3RhcnRHYW1lKClcIj5cbiAgICAgICAgICAgIHt7IHQoJ2NoZXNzaW1hbHNTdGFydCcpIH19XG4gICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz1cImNoZXNzaW1hbHMtb25saW5lXCI+XG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICA8aDI+e3sgdCgnY2hlc3NpbWFsc09ubGluZVRpdGxlJykgfX08L2gyPlxuICAgICAgICAgICAgICA8cD57eyB0KCdjaGVzc2ltYWxzT25saW5lQm9keScpIH19PC9wPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICBAaWYgKG9ubGluZUVycm9yKCkpIHtcbiAgICAgICAgICAgICAgPHAgY2xhc3M9XCJjaGVzc2ltYWxzLW9ubGluZV9fZXJyb3JcIj57eyBvbmxpbmVFcnJvcigpIH19PC9wPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmIChvbmxpbmVMb2FkaW5nKCkpIHtcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtb25saW5lX19sb2FkaW5nXCIgcm9sZT1cInN0YXR1c1wiIGFyaWEtbGl2ZT1cInBvbGl0ZVwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IHQoJ2NoZXNzaW1hbHNPbmxpbmVMb2FkaW5nJykgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1vbmxpbmVfX2NyZWF0ZVwiPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjaGVzc2ltYWxzLXByaW1hcnlcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5pcy13b3JraW5nXT1cIm9ubGluZUFjdGlvbigpID09PSAnY3JlYXRlJ1wiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1idXN5XT1cIm9ubGluZUFjdGlvbigpID09PSAnY3JlYXRlJ1wiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIm9ubGluZUxvYWRpbmcoKVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImNyZWF0ZU9ubGluZUdhbWUoKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBAaWYgKG9ubGluZUFjdGlvbigpID09PSAnY3JlYXRlJykge1xuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGVzc2ltYWxzLWJ1dHRvbi1zcGlubmVyXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB7eyB0KCdjaGVzc2ltYWxzQ3JlYXRlT25saW5lJykgfX1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdjaGVzc2ltYWxzQ3JlYXRlT25saW5lSGludCcpIH19PC9zbWFsbD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtb25saW5lX19qb2luXCI+XG4gICAgICAgICAgICAgIDxzdHJvbmc+e3sgdCgnY2hlc3NpbWFsc0pvaW5PbmxpbmVUaXRsZScpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNoZXNzaW1hbHMtb25saW5lLWNvZGVcIj5cbiAgICAgICAgICAgICAgICA8c3Bhbj57eyB0KCdjaGVzc2ltYWxzSm9pbkNvZGUnKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJvbmxpbmVKb2luQ29kZSgpXCJcbiAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJ0KCdjaGVzc2ltYWxzSm9pbkNvZGVQbGFjZWhvbGRlcicpXCJcbiAgICAgICAgICAgICAgICAgIChpbnB1dCk9XCJvbmxpbmVKb2luQ29kZS5zZXQobm9ybWFsaXplR2FtZUlkKCRhbnkoJGV2ZW50LnRhcmdldCkudmFsdWUpKVwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlc3NpbWFscy1zZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5pcy13b3JraW5nXT1cIm9ubGluZUFjdGlvbigpID09PSAnam9pbidcIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtYnVzeV09XCJvbmxpbmVBY3Rpb24oKSA9PT0gJ2pvaW4nXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwib25saW5lTG9hZGluZygpIHx8ICFvbmxpbmVKb2luQ29kZSgpXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiam9pbk9ubGluZUdhbWVCeUNvZGUoKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBAaWYgKG9ubGluZUFjdGlvbigpID09PSAnam9pbicpIHtcbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1idXR0b24tc3Bpbm5lclwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAge3sgdCgnY2hlc3NpbWFsc0pvaW5PbmxpbmUnKSB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvYXJ0aWNsZT5cblxuICAgICAgICAgIEBpZiAob25saW5lSGlzdG9yeSgpLmxlbmd0aCkge1xuICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9XCJjaGVzc2ltYWxzLW9ubGluZSBjaGVzc2ltYWxzLWhpc3RvcnlcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtaGlzdG9yeV9faGVhZGluZ1wiPlxuICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICA8aDI+e3sgdCgnY2hlc3NpbWFsc0hpc3RvcnlUaXRsZScpIH19PC9oMj5cbiAgICAgICAgICAgICAgICAgIDxwPnt7IHQoJ2NoZXNzaW1hbHNIaXN0b3J5Qm9keScpIH19PC9wPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtaGlzdG9yeV9fbGlzdFwiPlxuICAgICAgICAgICAgICAgIEBmb3IgKGVudHJ5IG9mIG9ubGluZUhpc3RvcnkoKS5zbGljZSgwLCA2KTsgdHJhY2sgZW50cnkuZ2FtZUlkKSB7XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImNoZXNzaW1hbHMtaGlzdG9yeV9faXRlbVwiIChjbGljayk9XCJvcGVuSGlzdG9yeUdhbWUoZW50cnkpXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgZW50cnkuZ2FtZUlkIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICAgICAgPHNtYWxsPnt7IGhpc3RvcnlPdXRjb21lTGFiZWwoZW50cnkpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8ZW0+e3sgdCgnY2hlc3NpbWFsc0hpc3RvcnlPcGVuJykgfX08L2VtPlxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvYXJ0aWNsZT5cbiAgICAgICAgICB9XG5cbiAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz1cImNoZXNzaW1hbHMtb25saW5lIGNoZXNzaW1hbHMtaG9tZS1zZXR0aW5nc1wiPlxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgPGgyPnt7IHQoJ2NoZXNzaW1hbHNTZXR0aW5ncycpIH19PC9oMj5cbiAgICAgICAgICAgICAgPHA+e3sgdCgnY2hlc3NpbWFsc1NldHRpbmdzU3VidGl0bGUnKSB9fTwvcD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtaG9tZS1zZXR0aW5nc19fYWN0aW9uc1wiPlxuICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2hlc3NpbWFscy1zZWNvbmRhcnlcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cIm9wZW5TZXR0aW5nc01vZGFsKClcIj5cbiAgICAgICAgICAgICAgICB7eyB0KCdjaGVzc2ltYWxzU2V0dGluZ3MnKSB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNoZXNzaW1hbHMtc2Vjb25kYXJ5XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJvcGVuQWJvdXRNb2RhbCgpXCI+XG4gICAgICAgICAgICAgICAge3sgdCgnY2hlc3NpbWFsc0Fib3V0JykgfX1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjaGVzc2ltYWxzLXNlY29uZGFyeVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwicmVxdWVzdENoYW5nZUdhbWUoKVwiPlxuICAgICAgICAgICAgICAgIHt7IHQoJ2NoZXNzaW1hbHNDaGFuZ2VHYW1lJykgfX1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2FydGljbGU+XG4gICAgICAgIDwvc2VjdGlvbj5cbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICA8c2VjdGlvbiBjbGFzcz1cImNoZXNzaW1hbHMtZ2FtZVwiPlxuICAgICAgICAgIEBpZiAocmVzdW1lU3BsYXNoVmlzaWJsZSgpKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1yZXN1bWUtc3BsYXNoXCIgcm9sZT1cInN0YXR1c1wiIGFyaWEtbGl2ZT1cInBvbGl0ZVwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtcmVzdW1lLXNwbGFzaF9fcGF3XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAg8J+QvlxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDxzdHJvbmc+e3sgdCgnY2hlc3NpbWFsc1Jlc3VtZVNwbGFzaFRpdGxlJykgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgPHA+e3sgdCgnY2hlc3NpbWFsc1Jlc3VtZVNwbGFzaEJvZHknKSB9fTwvcD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH1cblxuICAgICAgICAgIDxhcnRpY2xlXG4gICAgICAgICAgICBjbGFzcz1cImNoZXNzaW1hbHMtdHVybi1jYXJkXCJcbiAgICAgICAgICAgIFtjbGFzcy5pcy1ibGFjay10dXJuXT1cImdhbWUoKS5jdXJyZW50VHVybiA9PT0gJ2JsYWNrJ1wiXG4gICAgICAgICAgICBbY2xhc3MuaXMtZmluaXNoZWRdPVwiZ2FtZSgpLnN0YXR1cyA9PT0gJ2ZpbmlzaGVkJ1wiXG4gICAgICAgICAgICBbY2xhc3MuaXMteW91ci10dXJuXT1cImlzQWN0aW9uYWJsZVR1cm4oKVwiXG4gICAgICAgICAgICBbY2xhc3MuaXMtd2FpdGluZy10dXJuXT1cImlzV2FpdGluZ0ZvclR1cm4oKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtdHVybi1jYXJkX19jb3B5XCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy10dXJuLWNhcmRfX2NoaXBcIj5cbiAgICAgICAgICAgICAgICB7eyB0dXJuU3RhdGVMYWJlbCgpIH19XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPHN0cm9uZz57eyBnYW1lKCkuc3RhdHVzID09PSAnZmluaXNoZWQnID8gd2luVGl0bGUoKSA6IHR1cm5UaXRsZSgpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgIDxwPnt7IHR1cm5TdGF0ZUJvZHkoKSB9fTwvcD5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1wbGF5ZXItc3RyaXBcIj5cbiAgICAgICAgICAgICAgQGlmIChsb2dnZWRJblVzZXIoKSkge1xuICAgICAgICAgICAgICAgIDx2YWwtdXNlci1hdmF0YXIgW3Byb3BzXT1cImxvZ2dlZFBsYXllckF2YXRhclByb3BzKClcIiAvPlxuICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtcGxheWVyLXN0cmlwX19hdmF0YXJcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgIHt7IGxvY2FsUGxheWVyQXZhdGFyKCkgfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1wbGF5ZXItc3RyaXBfX3RleHRcIj5cbiAgICAgICAgICAgICAgICA8c3Bhbj57eyB0KGxvZ2dlZEluVXNlcigpID8gJ2xvZ2dlZFBsYXllcicgOiAnbG9jYWxQbGF5ZXInKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IGxvZ2dlZFBsYXllck5hbWUoKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgIEBpZiAobG9nZ2VkUGxheWVySGFuZGxlKCkpIHtcbiAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyBsb2dnZWRQbGF5ZXJIYW5kbGUoKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvYXJ0aWNsZT5cblxuICAgICAgICAgIEBpZiAoZ2FtZSgpLm1vZGUgPT09ICdvbmxpbmUnICYmIGdhbWUoKS5zdGF0dXMgPT09ICd3YWl0aW5nJykge1xuICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9XCJjaGVzc2ltYWxzLW9ubGluZSBjaGVzc2ltYWxzLW9ubGluZS0td2FpdGluZ1wiPlxuICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxoMj57eyB3YWl0aW5nVGl0bGUoKSB9fTwvaDI+XG4gICAgICAgICAgICAgICAgPHA+e3sgd2FpdGluZ0JvZHkoKSB9fTwvcD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIEBpZiAoY2FuUmV2aWV3UGVuZGluZ0d1ZXN0KCkpIHtcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1wZW5kaW5nLXBsYXllclwiPlxuICAgICAgICAgICAgICAgICAgQGlmIChwZW5kaW5nR3Vlc3RBdmF0YXJVcmwoKSkge1xuICAgICAgICAgICAgICAgICAgICA8dmFsLXVzZXItYXZhdGFyIFtwcm9wc109XCJwZW5kaW5nR3Vlc3RBdmF0YXJQcm9wcygpXCIgLz5cbiAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtcGxheWVyLXN0cmlwX19hdmF0YXIgY2hlc3NpbWFscy1wbGF5ZXItc3RyaXBfX2F2YXRhci0taW5pdGlhbHNcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICB7eyBwZW5kaW5nR3Vlc3RJbml0aWFscygpIH19XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdjaGVzc2ltYWxzSm9pblJlcXVlc3RQbGF5ZXInKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgcGVuZGluZ0d1ZXN0TmFtZSgpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAocGVuZGluZ0d1ZXN0SGFuZGxlKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICA8c21hbGw+e3sgcGVuZGluZ0d1ZXN0SGFuZGxlKCkgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1nYW1lLWNvZGVcIj5cbiAgICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnY2hlc3NpbWFsc0dhbWVDb2RlJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgZ2FtZSgpLmlkIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1vbmxpbmUtYWN0aW9uc1wiPlxuICAgICAgICAgICAgICAgIEBpZiAoY2FuUmV2aWV3UGVuZGluZ0d1ZXN0KCkpIHtcbiAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGVzc2ltYWxzLXNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtd29ya2luZ109XCJvbmxpbmVBY3Rpb24oKSA9PT0gJ3JlamVjdCdcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWJ1c3ldPVwib25saW5lQWN0aW9uKCkgPT09ICdyZWplY3QnXCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIm9ubGluZUxvYWRpbmcoKVwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZWplY3RPbmxpbmVHdWVzdCgpXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgQGlmIChvbmxpbmVBY3Rpb24oKSA9PT0gJ3JlamVjdCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtYnV0dG9uLXNwaW5uZXJcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAge3sgdCgnY2hlc3NpbWFsc1JlamVjdEd1ZXN0JykgfX1cbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNoZXNzaW1hbHMtcHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtd29ya2luZ109XCJvbmxpbmVBY3Rpb24oKSA9PT0gJ2FjY2VwdCdcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWJ1c3ldPVwib25saW5lQWN0aW9uKCkgPT09ICdhY2NlcHQnXCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIm9ubGluZUxvYWRpbmcoKVwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhY2NlcHRPbmxpbmVHdWVzdCgpXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgQGlmIChvbmxpbmVBY3Rpb24oKSA9PT0gJ2FjY2VwdCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtYnV0dG9uLXNwaW5uZXJcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAge3sgdCgnY2hlc3NpbWFsc0FjY2VwdEd1ZXN0JykgfX1cbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNoZXNzaW1hbHMtc2Vjb25kYXJ5XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJjb3B5T25saW5lTGluaygpXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IHQoJ2NoZXNzaW1hbHNDb3B5TGluaycpIH19XG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjaGVzc2ltYWxzLXByaW1hcnlcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInNoYXJlT25saW5lTGluaygpXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IHQoJ2NoZXNzaW1hbHNTaGFyZUxpbmsnKSB9fVxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvYXJ0aWNsZT5cbiAgICAgICAgICB9XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1zdGF0dXNcIj5cbiAgICAgICAgICAgIEBpZiAoaXNDaGFsbGVuZ2VBY3RpdmUoKSkge1xuICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdjaGVzc2ltYWxzQ2hhbGxlbmdlUm91bmQnKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgPHN0cm9uZz57eyBjaGFsbGVuZ2VSb3VuZExhYmVsKCkgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPHNtYWxsPnt7IHQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VMaXZlcycpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IGNoYWxsZW5nZUxpdmVzTGFiZWwoKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdjaGVzc2ltYWxzTW92ZXMnKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgIDxzdHJvbmc+e3sgZ2FtZSgpLm1vdmVDb3VudCB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICA8c21hbGw+e3sgZ2FtZSgpLnN0YXR1cyA9PT0gJ2ZpbmlzaGVkJyA/IHQoJ2NoZXNzaW1hbHNXaW5uZXInKSA6IHQoJ2NoZXNzaW1hbHNQb3dlcnMnKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgIDxzdHJvbmc+e3sgZ2FtZSgpLnN0YXR1cyA9PT0gJ2ZpbmlzaGVkJyA/IHBsYXllckxhYmVsKGdhbWUoKS53aW5uZXIgPz8gJ3doaXRlJykgOiB1bmxvY2tlZExhYmVsKGdhbWUoKS5jdXJyZW50VHVybikgfX08L3N0cm9uZz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgPHNtYWxsPnt7IGdhbWUoKS5zdGF0dXMgPT09ICdmaW5pc2hlZCcgPyB0KCdjaGVzc2ltYWxzUmVzdWx0JykgOiB0KCdjaGVzc2ltYWxzUml2YWwnKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgIDxzdHJvbmc+e3sgZ2FtZSgpLnN0YXR1cyA9PT0gJ2ZpbmlzaGVkJyA/IHdpblJlYXNvbkxhYmVsKCkgOiBwbGF5ZXJMYWJlbChnYW1lKCkuY3VycmVudFR1cm4gPT09ICd3aGl0ZScgPyAnYmxhY2snIDogJ3doaXRlJykgfX08L3N0cm9uZz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgQGlmIChzaG91bGRTaG93T25saW5lU3RhdHVzKCkpIHtcbiAgICAgICAgICAgIDxhcnRpY2xlXG4gICAgICAgICAgICAgIGNsYXNzPVwiY2hlc3NpbWFscy1vbmxpbmUtc3RhdHVzXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmlzLWVycm9yXT1cIm9ubGluZUNvbm5lY3Rpb25TdGF0ZSgpID09PSAnZXJyb3InIHx8IGdhbWUoKS5zdGF0dXMgPT09ICdleHBpcmVkJ1wiXG4gICAgICAgICAgICAgIFtjbGFzcy5pcy1zeW5jaW5nXT1cIm9ubGluZUNvbm5lY3Rpb25TdGF0ZSgpID09PSAnY29ubmVjdGluZycgfHwgbW92ZVN5bmNpbmcoKVwiXG4gICAgICAgICAgICAgIGFyaWEtbGl2ZT1cInBvbGl0ZVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IG9ubGluZVN0YXR1c1RpdGxlKCkgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICA8cD57eyBvbmxpbmVTdGF0dXNCb2R5KCkgfX08L3A+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9hcnRpY2xlPlxuICAgICAgICAgIH1cblxuICAgICAgICAgIEBpZiAodHV0b3JpYWxNb2RlKCkpIHtcbiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPVwiY2hlc3NpbWFscy10dXRvcmlhbFwiIGFyaWEtbGl2ZT1cInBvbGl0ZVwiPlxuICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxzbWFsbD57eyB0dXRvcmlhbFByb2dyZXNzTGFiZWwoKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgPHN0cm9uZz57eyB0dXRvcmlhbFRpdGxlKCkgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICA8cD57eyB0dXRvcmlhbEJvZHkoKSB9fTwvcD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjaGVzc2ltYWxzLXNlY29uZGFyeVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiZXhpdFR1dG9yaWFsKClcIj5cbiAgICAgICAgICAgICAgICB7eyB0KCdjaGVzc2ltYWxzVHV0b3JpYWxFeGl0JykgfX1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2FydGljbGU+XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJjaGVzc2ltYWxzLWFyZW5hXCI+XG4gICAgICAgICAgICA8c2VjdGlvblxuICAgICAgICAgICAgICAjYm9hcmRBbmNob3JcbiAgICAgICAgICAgICAgY2xhc3M9XCJjaGVzc2ltYWxzLWJvYXJkLXdyYXBcIlxuICAgICAgICAgICAgICBbY2xhc3MuaXMtZmluaXNoZWRdPVwiZ2FtZSgpLnN0YXR1cyA9PT0gJ2ZpbmlzaGVkJ1wiXG4gICAgICAgICAgICAgIFtjbGFzcy5pcy1vcmllbnRpbmddPVwiaXNCb2FyZE9yaWVudGluZygpXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmlzLXN5bmNpbmddPVwibW92ZVN5bmNpbmcoKVwiXG4gICAgICAgICAgICAgIFtzdHlsZS4tLWJvYXJkLXNpemVdPVwicmV2aWV3R2FtZSgpLmJvYXJkU2l6ZVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLWJvYXJkLWZyYW1lXCI+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGVzc2ltYWxzLWJvYXJkXCJcbiAgICAgICAgICAgICAgICAgIHJvbGU9XCJncmlkXCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1ibGFjay12aWV3XT1cInJldmlld0dhbWUoKS5jdXJyZW50VHVybiA9PT0gJ2JsYWNrJ1wiXG4gICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtcG93ZXItYWltaW5nXT1cIiEhc2VsZWN0ZWRBbmltYWwoKVwiXG4gICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInQoJ2NoZXNzaW1hbHNCb2FyZCcpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICBAZm9yIChyb3cgb2YgZGlzcGxheVJvd3MoKTsgdHJhY2sgcm93KSB7XG4gICAgICAgICAgICAgICAgICAgIEBmb3IgKGNvbCBvZiBkaXNwbGF5Q29scygpOyB0cmFjayBjb2wpIHtcbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJncmlkY2VsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNoZXNzaW1hbHMtY2VsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtZGFyay1jZWxsXT1cImlzRGFya0NlbGwocm93LCBjb2wpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1lZGdlLWNlbGxdPVwiaXNFZGdlQ2VsbChyb3csIGNvbClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLndlYXItMF09XCJjZWxsV2Vhcihyb3csIGNvbCkgPT09IDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLndlYXItMV09XCJjZWxsV2Vhcihyb3csIGNvbCkgPT09IDFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLndlYXItMl09XCJjZWxsV2Vhcihyb3csIGNvbCkgPT09IDJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLndlYXItM109XCJjZWxsV2Vhcihyb3csIGNvbCkgPT09IDNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLndlYXItNF09XCJjZWxsV2Vhcihyb3csIGNvbCkgPT09IDRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLndlYXItNV09XCJjZWxsV2Vhcihyb3csIGNvbCkgPT09IDVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmlzLXNlbGVjdGVkXT1cImlzU2VsZWN0ZWRDZWxsKHJvdywgY29sKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtbGVnYWxdPVwiaXNMZWdhbENlbGwocm93LCBjb2wpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1jYXB0dXJlXT1cImlzQ2FwdHVyZUNlbGwocm93LCBjb2wpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5oYXMtdGhyZWF0XT1cImlzVGhyZWF0ZW5lZENlbGwocm93LCBjb2wpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5oYXMtY2FwdHVyZS1yZWFkeV09XCJpc0NhcHR1cmVSZWFkeUNlbGwocm93LCBjb2wpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy13aW5uaW5nXT1cImlzV2lubmluZ0NlbGwocm93LCBjb2wpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1sYXN0XT1cImlzTGFzdE1vdmVDZWxsKHJvdywgY29sKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtbW92aW5nLXNvdXJjZV09XCJpc01vdmluZ1NvdXJjZUNlbGwocm93LCBjb2wpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5oYXMtbW92ZS1lZmZlY3RdPVwiaXNNb3ZlRWZmZWN0Q2VsbChyb3csIGNvbClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmhhcy1zb3VyY2UtZWZmZWN0XT1cImlzTW92ZUVmZmVjdFNvdXJjZUNlbGwocm93LCBjb2wpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5oYXMtY2FwdHVyZS1lZmZlY3RdPVwiaXNNb3ZlRWZmZWN0Q2FwdHVyZUNlbGwocm93LCBjb2wpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5lZmZlY3QtZWFnbGVdPVwiaXNNb3ZlRWZmZWN0Q2VsbChyb3csIGNvbCwgJ2VhZ2xlJylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmVmZmVjdC1idWxsXT1cImlzTW92ZUVmZmVjdENlbGwocm93LCBjb2wsICdidWxsJylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmVmZmVjdC1rYW5nYXJvb109XCJpc01vdmVFZmZlY3RDZWxsKHJvdywgY29sLCAna2FuZ2Fyb28nKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZWZmZWN0LWxpb25dPVwiaXNNb3ZlRWZmZWN0Q2VsbChyb3csIGNvbCwgJ2xpb24nKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwicHJvamVjdGlvbk1vZGUgfHwgZ2FtZSgpLnN0YXR1cyAhPT0gJ2luX3Byb2dyZXNzJyB8fCAhY2FuUGxheUN1cnJlbnRUdXJuKCkgfHwgISFtb3ZpbmdQaWVjZSgpIHx8IGJvdFRoaW5raW5nKCkgfHwgbW92ZVN5bmNpbmcoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0Q2VsbCh7IHJvdywgY29sIH0pXCJcbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtY2VsbC10ZXh0dXJlXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChzaG93UmFua0xhYmVsKGNvbCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGVzc2ltYWxzLWNlbGwtY29vcmRpbmF0ZSBjaGVzc2ltYWxzLWNlbGwtY29vcmRpbmF0ZS0tcmFua1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHJhbmtMYWJlbChyb3cpIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoc2hvd0ZpbGVMYWJlbChyb3cpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1jZWxsLWNvb3JkaW5hdGUgY2hlc3NpbWFscy1jZWxsLWNvb3JkaW5hdGUtLWZpbGVcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBmaWxlTGFiZWwoY29sKSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKHBpZWNlQXQocm93LCBjb2wpOyBhcyBwaWVjZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlc3NpbWFscy1waWVjZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmlzLWJsYWNrXT1cInBpZWNlLmNvbG9yID09PSAnYmxhY2snXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInBsYXllckxhYmVsKHBpZWNlLmNvbG9yKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtcGllY2VfX3NpZGVcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGVzc2ltYWxzLXBpZWNlX19oZWFkXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1waWVjZV9fY29sbGFyXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1waWVjZV9fbmVja1wiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtcGllY2VfX2Jhc2VcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH0gQGVsc2UgaWYgKGlzTGVnYWxDZWxsKHJvdywgY29sKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtdGFyZ2V0XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtY2VudGVyLWxpbmVcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICBAaWYgKG1vdmVUcmFpbCgpOyBhcyB0cmFpbCkge1xuICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlc3NpbWFscy1wb3dlci10cmFpbFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmlzLWNhcHR1cmVdPVwidHJhaWwuY2FwdHVyZVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmVmZmVjdC1lYWdsZV09XCJ0cmFpbC5hbmltYWwgPT09ICdlYWdsZSdcIlxuICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5lZmZlY3QtYnVsbF09XCJ0cmFpbC5hbmltYWwgPT09ICdidWxsJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmVmZmVjdC1rYW5nYXJvb109XCJ0cmFpbC5hbmltYWwgPT09ICdrYW5nYXJvbydcIlxuICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5lZmZlY3QtbGlvbl09XCJ0cmFpbC5hbmltYWwgPT09ICdsaW9uJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLi0tdHJhaWwteF09XCJ0cmFpbC54XCJcbiAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuLS10cmFpbC15XT1cInRyYWlsLnlcIlxuICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS4tLXRyYWlsLWxlbmd0aF09XCJ0cmFpbC5sZW5ndGhcIlxuICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS4tLXRyYWlsLWFuZ2xlXT1cInRyYWlsLmFuZ2xlXCJcbiAgICAgICAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBAaWYgKG1vdmluZ1BpZWNlKCk7IGFzIG1vdmluZykge1xuICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlc3NpbWFscy1tb3ZpbmctcGllY2VcIlxuICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS4tLWZyb20tcm93XT1cIm1vdmluZy5mcm9tUm93XCJcbiAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuLS1mcm9tLWNvbF09XCJtb3ZpbmcuZnJvbUNvbFwiXG4gICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLi0tdG8tcm93XT1cIm1vdmluZy50b1Jvd1wiXG4gICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLi0tdG8tY29sXT1cIm1vdmluZy50b0NvbFwiXG4gICAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1waWVjZVwiIFtjbGFzcy5pcy1ibGFja109XCJtb3ZpbmcuY29sb3IgPT09ICdibGFjaydcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1waWVjZV9fc2lkZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1waWVjZV9faGVhZFwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1waWVjZV9fY29sbGFyXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGVzc2ltYWxzLXBpZWNlX19uZWNrXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGVzc2ltYWxzLXBpZWNlX19iYXNlXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgQGlmIChzaG91bGRTaG93RmluaXNoZWRPdmVybGF5KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5XCJcbiAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtdmljdG9yeV09XCJpc0N1cnJlbnRQbGF5ZXJWaWN0b3J5KClcIlxuICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1kZWZlYXRdPVwiaXNDdXJyZW50UGxheWVyRGVmZWF0KClcIlxuICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImNoZXNzaW1hbHMtYm9hcmQtb3ZlcmxheV9fcmF5c1wiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImNoZXNzaW1hbHMtYm9hcmQtb3ZlcmxheV9fcmliYm9uIHJpYmJvbi1hXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5X19yaWJib24gcmliYm9uLWJcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJjaGVzc2ltYWxzLWJvYXJkLW92ZXJsYXlfX3JpYmJvbiByaWJib24tY1wiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyB0KCdjaGVzc2ltYWxzR2FtZU92ZXInKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICBAaWYgKHdpbm5lckF2YXRhclVybCgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9XCJoYXMtYXZhdGFyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJ3aW5uZXJBdmF0YXJVcmwoKVwiIFthbHRdPVwid2lubmVyRGlzcGxheU5hbWUoKVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2VtPlxuICAgICAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGVtPnt7IHdpbm5lckluaXRpYWxzKCkgfX08L2VtPlxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IHdpblRpdGxlKCkgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgICA8Yj57eyB3aW5uZXJTaWRlTGFiZWwoKSB9fTwvYj5cbiAgICAgICAgICAgICAgICAgICAgICA8c21hbGw+e3sgbW92ZXNTdW1tYXJ5KCkgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgICAgIDxkbCBjbGFzcz1cImNoZXNzaW1hbHMtYm9hcmQtb3ZlcmxheV9fc3RhdHNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKHN0YXQgb2YgcmVzdWx0U3RhdHMoKTsgdHJhY2sgc3RhdC5sYWJlbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkdD57eyBzdGF0LmxhYmVsIH19PC9kdD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGQ+e3sgc3RhdC52YWx1ZSB9fTwvZGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIDwvZGw+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvc2VjdGlvbj5cblxuICAgICAgICAgICAgQGlmIChvbmxpbmVSb2xlKCkgIT09ICdzcGVjdGF0b3InICYmICFwcm9qZWN0aW9uTW9kZSkge1xuICAgICAgICAgICAgICA8c2VjdGlvblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlc3NpbWFscy1wb3dlcnNcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1sb2NrZWRdPVwiIXBvd2VyUGxheWVyKCkucG93ZXJVbmxvY2tlZFwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmlzLXJlYWR5XT1cInBvd2VyUGxheWVyKCkucG93ZXJVbmxvY2tlZFwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmlzLXVubG9jay1wdWxzZV09XCJwb3dlclVubG9ja1B1bHNlKClcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLXBvd2Vyc19faGVhZGluZ1wiPlxuICAgICAgICAgICAgICAgICAgICA8aDI+e3sgdCgnY2hlc3NpbWFsc0FuaW1hbENhcmRzJykgfX08L2gyPlxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyBwb3dlclBsYXllcigpLnBvd2VyVW5sb2NrZWQgPyB0KCdjaGVzc2ltYWxzVW5sb2NrZWQnKSA6IHQoJ2NoZXNzaW1hbHNMb2NrZWQnKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPHA+e3sgcG93ZXJQbGF5ZXIoKS5wb3dlclVubG9ja2VkID8gdCgnY2hlc3NpbWFsc0NhcmRzUmVhZHknKSA6IHQoJ2NoZXNzaW1hbHNDYXJkc0xvY2tlZCcpIH19PC9wPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLWNhcmRzXCI+XG4gICAgICAgICAgICAgICAgICBAZm9yIChhbmltYWwgb2YgYW5pbWFsczsgdHJhY2sgYW5pbWFsLnR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1zZWxlY3RlZF09XCJzZWxlY3RlZEFuaW1hbCgpID09PSBhbmltYWwudHlwZVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmlzLXVzZWRdPVwicG93ZXJQbGF5ZXIoKS5jYXJkc1thbmltYWwudHlwZV0udXNlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFjYW5Vc2VQb3dlckNhcmRzKCkgfHwgcG93ZXJQbGF5ZXIoKS5jYXJkc1thbmltYWwudHlwZV0udXNlZCB8fCBpc1Bvd2VyQ2FyZEJsb2NrZWRCeVR1dG9yaWFsKGFuaW1hbC50eXBlKVwiXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUFuaW1hbChhbmltYWwpXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1hbmltYWwtZmFjZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBbc3JjXT1cImFuaW1hbC5hc3NldFNyY1wiIFthbHRdPVwiYW5pbWFsTGFiZWwoYW5pbWFsLnR5cGUpXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyBhbmltYWxMYWJlbChhbmltYWwudHlwZSkgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvc2VjdGlvbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L3NlY3Rpb24+XG5cbiAgICAgICAgICBAaWYgKGhhc1JlcGxheUNvbnRyb2xzKCkpIHtcbiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPVwiY2hlc3NpbWFscy1yZXBsYXlcIiBhcmlhLWxpdmU9XCJwb2xpdGVcIj5cbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IHQoJ2NoZXNzaW1hbHNSZXBsYXlUaXRsZScpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgPHNwYW4+e3sgcmVwbGF5UG9zaXRpb25MYWJlbCgpIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtcmVwbGF5X19hY3Rpb25zXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGVzc2ltYWxzLXNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhY2FuUmV2aWV3UHJldmlvdXMoKVwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmV2aWV3UHJldmlvdXNNb3ZlKClcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHt7IHQoJ2NoZXNzaW1hbHNSZXBsYXlQcmV2aW91cycpIH19XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGVzc2ltYWxzLXNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhY2FuUmV2aWV3TmV4dCgpXCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZXZpZXdOZXh0TW92ZSgpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7eyB0KCdjaGVzc2ltYWxzUmVwbGF5TmV4dCcpIH19XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9hcnRpY2xlPlxuICAgICAgICAgIH1cblxuICAgICAgICAgIEBpZiAoZ2FtZSgpLnN0YXR1cyA9PT0gJ2ZpbmlzaGVkJykge1xuICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9XCJjaGVzc2ltYWxzLXJlc3VsdFwiPlxuICAgICAgICAgICAgICA8c3Ryb25nPnt7IHdpblRpdGxlKCkgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgPHA+e3sgd2luQm9keSgpIH19PC9wPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1yZXN1bHRfX3N0YXRzXCI+XG4gICAgICAgICAgICAgICAgQGZvciAoc3RhdCBvZiByZXN1bHRTdGF0cygpOyB0cmFjayBzdGF0LmxhYmVsKSB7XG4gICAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNtYWxsPnt7IHN0YXQubGFiZWwgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgICA8Yj57eyBzdGF0LnZhbHVlIH19PC9iPlxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxwIGNsYXNzPVwiY2hlc3NpbWFscy1yZXN1bHRfX2RldGFpbFwiPlxuICAgICAgICAgICAgICAgIHt7IHQoJ2NoZXNzaW1hbHNSZXN1bHRQb3dlcnNVc2VkJykucmVwbGFjZSgne3Bvd2Vyc30nLCByZXN1bHRQb3dlcnNMYWJlbCgpKSB9fVxuICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgIEBpZiAoc2hvdWxkU2hvd0JvdFJlcG9ydCgpKSB7XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtYm90LXJlcG9ydFwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCI+e3sgZ2FtZUJvdFByb2ZpbGUoKT8uYXZhdGFyIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgPHNtYWxsPnt7IHQoJ2NoZXNzaW1hbHNCb3RSZXBvcnRUaXRsZScpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyBib3RSZXBvcnRUaXRsZSgpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICAgIDxwPnt7IGJvdFJlcG9ydEJvZHkoKSB9fTwvcD5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIEBpZiAoaXNDaGFsbGVuZ2VBY3RpdmUoKSkge1xuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLWNoYWxsZW5nZS1zdW1tYXJ5XCI+XG4gICAgICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnY2hlc3NpbWFsc0NoYWxsZW5nZVRpdGxlJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyBjaGFsbGVuZ2VPdXRjb21lVGl0bGUoKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgICAgPHA+e3sgY2hhbGxlbmdlT3V0Y29tZUJvZHkoKSB9fTwvcD5cbiAgICAgICAgICAgICAgICAgIEBpZiAoY2hhbGxlbmdlSGFzTmV3UmVjb3JkKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtY2hhbGxlbmdlLXJlY29yZFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPuKYhTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IHQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VOZXdSZWNvcmQnKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIEBpZiAoY2hhbGxlbmdlTGFzdFJvdW5kU3RhdHMoKTsgYXMgcm91bmRTdGF0cykge1xuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1jaGFsbGVuZ2Utc3VtbWFyeV9fc3RhdHNcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdjaGVzc2ltYWxzQ2hhbGxlbmdlUG93ZXJzVXNlZCcpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxiPnt7IHRvdGFsQ2hhbGxlbmdlUG93ZXJzKHJvdW5kU3RhdHMpIH19PC9iPlxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdjaGVzc2ltYWxzQ2hhbGxlbmdlUG93ZXJDYXB0dXJlcycpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxiPnt7IHJvdW5kU3RhdHMucG93ZXJDYXB0dXJlcyB9fTwvYj5cbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnY2hlc3NpbWFsc0NoYWxsZW5nZVByb21vdGlvbnMnKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8Yj57eyByb3VuZFN0YXRzLnByb21vdGlvbnMgfX08L2I+XG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIEBpZiAoY2hhbGxlbmdlUGhhc2UoKSA9PT0gJ2JldHdlZW4nICYmIGFjdGl2ZUNoYWxsZW5nZUJvdCgpOyBhcyBuZXh0Qm90KSB7XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLWNoYWxsZW5nZS1yaXZhbCBjaGVzc2ltYWxzLWNoYWxsZW5nZS1yaXZhbC0tbmV4dFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPnt7IGJvdFByb2ZpbGVBdmF0YXIobmV4dEJvdC5wcm9maWxlSWQpIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c21hbGw+e3sgdCgnY2hlc3NpbWFsc0NoYWxsZW5nZU5leHRSaXZhbExhYmVsJykgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz57eyBjaGFsbGVuZ2VCb3ROYW1lKG5leHRCb3QpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cD57eyB0KG5leHRCb3QuaW50cm9LZXkpIH19PC9wPlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIEBpZiAoY2hhbGxlbmdlUGhhc2UoKSA9PT0gJ2JldHdlZW4nKSB7XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjaGVzc2ltYWxzLXByaW1hcnlcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImNvbnRpbnVlQ2hhbGxlbmdlKClcIj5cbiAgICAgICAgICAgICAgICAgICAgICB7eyB0KCdjaGVzc2ltYWxzQ2hhbGxlbmdlTmV4dFJpdmFsJykgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNoZXNzaW1hbHMtcHJpbWFyeVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwic3RhcnRDaGFsbGVuZ2UoKVwiPlxuICAgICAgICAgICAgICAgICAgICAgIHt7IHQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VQbGF5QWdhaW4nKSB9fVxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBAaWYgKHNlcmllc1N1bW1hcnkoKSkge1xuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLXNlcmllc1wiPlxuICAgICAgICAgICAgICAgICAgPHNtYWxsPnt7IHQoJ2NoZXNzaW1hbHNTZXJpZXNUaXRsZScpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgc2VyaWVzU3VtbWFyeSgpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICBAaWYgKGxhc3RTZXJpZXNXaW5uZXJMYWJlbCgpKSB7XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IHQoJ2NoZXNzaW1hbHNTZXJpZXNMYXN0V2lubmVyJykucmVwbGFjZSgne3BsYXllcn0nLCBsYXN0U2VyaWVzV2lubmVyTGFiZWwoKSkgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvYXJ0aWNsZT5cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBAaWYgKHJlbWF0Y2hTdGF0ZSgpICE9PSAnbm9uZScpIHtcbiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPVwiY2hlc3NpbWFscy1yZW1hdGNoLXN0YXR1c1wiIFtjbGFzcy5pcy1pbmNvbWluZ109XCJyZW1hdGNoU3RhdGUoKSA9PT0gJ2luY29taW5nJ1wiPlxuICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxzdHJvbmc+XG4gICAgICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICAgICByZW1hdGNoU3RhdGUoKSA9PT0gJ2luY29taW5nJ1xuICAgICAgICAgICAgICAgICAgICAgID8gdCgnY2hlc3NpbWFsc1JlbWF0Y2hJbmNvbWluZ1RpdGxlJylcbiAgICAgICAgICAgICAgICAgICAgICA6IHQoJ2NoZXNzaW1hbHNSZW1hdGNoUmVxdWVzdGVkVGl0bGUnKVxuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICA8L3N0cm9uZz5cbiAgICAgICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgIHJlbWF0Y2hTdGF0ZSgpID09PSAnaW5jb21pbmcnXG4gICAgICAgICAgICAgICAgICAgICAgPyB0KCdjaGVzc2ltYWxzUmVtYXRjaEluY29taW5nQm9keScpXG4gICAgICAgICAgICAgICAgICAgICAgOiB0KCdjaGVzc2ltYWxzUmVtYXRjaFJlcXVlc3RlZEJvZHknKVxuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICBAaWYgKHNlcmllc1N1bW1hcnkoKSkge1xuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVzc2ltYWxzLXNlcmllcyBjaGVzc2ltYWxzLXNlcmllcy0tY29tcGFjdFwiPlxuICAgICAgICAgICAgICAgICAgPHNtYWxsPnt7IHQoJ2NoZXNzaW1hbHNTZXJpZXNUaXRsZScpIH19PC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgc2VyaWVzU3VtbWFyeSgpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICBAaWYgKGxhc3RTZXJpZXNXaW5uZXJMYWJlbCgpKSB7XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IHQoJ2NoZXNzaW1hbHNTZXJpZXNMYXN0V2lubmVyJykucmVwbGFjZSgne3BsYXllcn0nLCBsYXN0U2VyaWVzV2lubmVyTGFiZWwoKSkgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtcGVuZGluZy1wbGF5ZXIgY2hlc3NpbWFscy1yZW1hdGNoLXBsYXllclwiPlxuICAgICAgICAgICAgICAgIEBpZiAocmVtYXRjaE9wcG9uZW50QXZhdGFyVXJsKCkpIHtcbiAgICAgICAgICAgICAgICAgIDx2YWwtdXNlci1hdmF0YXIgW3Byb3BzXT1cInJlbWF0Y2hPcHBvbmVudEF2YXRhclByb3BzKClcIiAvPlxuICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGVzc2ltYWxzLXBsYXllci1zdHJpcF9fYXZhdGFyIGNoZXNzaW1hbHMtcGxheWVyLXN0cmlwX19hdmF0YXItLWluaXRpYWxzXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IHJlbWF0Y2hPcHBvbmVudEluaXRpYWxzKCkgfX1cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgIDxzbWFsbD57eyB0KCdjaGVzc2ltYWxzUml2YWwnKSB9fTwvc21hbGw+XG4gICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IHJlbWF0Y2hPcHBvbmVudE5hbWUoKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgICAgQGlmIChyZW1hdGNoT3Bwb25lbnRIYW5kbGUoKSkge1xuICAgICAgICAgICAgICAgICAgICA8c21hbGw+e3sgcmVtYXRjaE9wcG9uZW50SGFuZGxlKCkgfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZXNzaW1hbHMtcmVtYXRjaC1zdGF0dXNfX2FjdGlvbnNcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNoZXNzaW1hbHMtc2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy13b3JraW5nXT1cInJlbWF0Y2hMb2FkaW5nKClcIlxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwicmVtYXRjaFN0YXRlKCkgPT09ICdyZXF1ZXN0ZWQnIHx8IHJlbWF0Y2hMb2FkaW5nKClcIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlcXVlc3RPbmxpbmVSZW1hdGNoKClcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIEBpZiAocmVtYXRjaExvYWRpbmcoKSkge1xuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZXNzaW1hbHMtYnV0dG9uLXNwaW5uZXJcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB7eyByZW1hdGNoQWN0aW9uTGFiZWwoKSB9fVxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvYXJ0aWNsZT5cbiAgICAgICAgICB9XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlc3NpbWFscy1hY3Rpb25zXCI+XG4gICAgICAgICAgICBAaWYgKGdhbWUoKS5zdGF0dXMgIT09ICdmaW5pc2hlZCcgJiYgY2FuQ29udHJvbEN1cnJlbnRHYW1lKCkpIHtcbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNoZXNzaW1hbHMtc2Vjb25kYXJ5XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJyZXF1ZXN0UmVzaWduKClcIj5cbiAgICAgICAgICAgICAgICB7eyB0KCdjaGVzc2ltYWxzUmVzaWduJykgfX1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICB9IEBlbHNlIGlmIChnYW1lKCkubW9kZSA9PT0gJ29ubGluZScgJiYgY2FuQ29udHJvbEN1cnJlbnRHYW1lKCkgJiYgcmVtYXRjaFN0YXRlKCkgPT09ICdub25lJykge1xuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjaGVzc2ltYWxzLXNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmlzLXdvcmtpbmddPVwicmVtYXRjaExvYWRpbmcoKVwiXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInJlbWF0Y2hTdGF0ZSgpID09PSAncmVxdWVzdGVkJyB8fCByZW1hdGNoTG9hZGluZygpXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVxdWVzdE9ubGluZVJlbWF0Y2goKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBAaWYgKHJlbWF0Y2hMb2FkaW5nKCkpIHtcbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlc3NpbWFscy1idXR0b24tc3Bpbm5lclwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAge3sgcmVtYXRjaEFjdGlvbkxhYmVsKCkgfX1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaWYgKGdhbWUoKS5tb2RlICE9PSAnb25saW5lJyAmJiAhaXNDaGFsbGVuZ2VBY3RpdmUoKSkge1xuICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2hlc3NpbWFscy1zZWNvbmRhcnlcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInJlcXVlc3RSZXN0YXJ0R2FtZSgpXCI+XG4gICAgICAgICAgICAgICAge3sgdCgncmVzdGFydCcpIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmIChnYW1lKCkubW9kZSA9PT0gJ29ubGluZScgJiYgZ2FtZSgpLmlkICYmICFwcm9qZWN0aW9uTW9kZSkge1xuICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2hlc3NpbWFscy1zZWNvbmRhcnlcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInNoYXJlUHJvamVjdGlvbkxpbmsoKVwiPlxuICAgICAgICAgICAgICAgIHt7IHQoJ2NoZXNzaW1hbHNTaGFyZVByb2plY3Rpb24nKSB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjaGVzc2ltYWxzLXNlY29uZGFyeVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwicmVxdWVzdENoYW5nZU1vZGUoKVwiPlxuICAgICAgICAgICAgICB7eyB0KCdjaGVzc2ltYWxzQ2hhbmdlTW9kZScpIH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjaGVzc2ltYWxzLXNlY29uZGFyeVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwicmVxdWVzdENoYW5nZUdhbWUoKVwiPlxuICAgICAgICAgICAgICB7eyB0KCdjaGVzc2ltYWxzQ2hhbmdlR2FtZScpIH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9zZWN0aW9uPlxuICAgICAgfVxuICAgIDwvbWFpbj5cblxuICAgIDxpb24tbW9kYWxcbiAgICAgIFtpc09wZW5dPVwiaXNSdWxlc01vZGFsT3BlbigpXCJcbiAgICAgIGNzc0NsYXNzPVwidmFsLW1vZGFsLWFkYXB0aXZlXCJcbiAgICAgIChkaWREaXNtaXNzKT1cImNsb3NlUnVsZXNNb2RhbCgpXCJcbiAgICA+XG4gICAgICA8bmctdGVtcGxhdGU+XG4gICAgICAgIDx2YWwtbW9kYWwtbGF5b3V0XG4gICAgICAgICAgW3RpdGxlXT1cInQoJ2NoZXNzaW1hbHNSdWxlc1RpdGxlJylcIlxuICAgICAgICAgIFtzdWJ0aXRsZV09XCJ0KCdjaGVzc2ltYWxzUnVsZXNTdWJ0aXRsZScpXCJcbiAgICAgICAgICBbY2xvc2VMYWJlbF09XCJ0KCdjbG9zZScpXCJcbiAgICAgICAgICBbYWN0aW9uc109XCJydWxlc0FjdGlvbnMoKVwiXG4gICAgICAgICAgYWN0aW9uc0FsaWduPVwiZW5kXCJcbiAgICAgICAgICAoY2xvc2UpPVwiY2xvc2VSdWxlc01vZGFsKClcIlxuICAgICAgICAgIChhY3Rpb25DbGljayk9XCJjbG9zZVJ1bGVzTW9kYWwoKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8c2VjdGlvbiBjbGFzcz1cImNoZXNzaW1hbHMtcnVsZXNcIj5cbiAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgY2xhc3M9XCJjaGVzc2ltYWxzLXJ1bGVzX19oZXJvXCJcbiAgICAgICAgICAgICAgc3JjPVwiYXNzZXRzL2dhbWVzL2NoZXNzaW1hbHMvdHV0b3JpYWwtc2F2YW5uYS5qcGdcIlxuICAgICAgICAgICAgICBhbHQ9XCJcIlxuICAgICAgICAgICAgICBsb2FkaW5nPVwibGF6eVwiXG4gICAgICAgICAgICAvPlxuXG4gICAgICAgICAgICA8YXJ0aWNsZT5cbiAgICAgICAgICAgICAgPHNwYW4+MTwvc3Bhbj5cbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8aDM+e3sgdCgnY2hlc3NpbWFsc1J1bGVHb2FsVGl0bGUnKSB9fTwvaDM+XG4gICAgICAgICAgICAgICAgPHA+e3sgdCgnY2hlc3NpbWFsc1J1bGVHb2FsQm9keScpIH19PC9wPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvYXJ0aWNsZT5cblxuICAgICAgICAgICAgPGFydGljbGU+XG4gICAgICAgICAgICAgIDxzcGFuPjI8L3NwYW4+XG4gICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPGgzPnt7IHQoJ2NoZXNzaW1hbHNSdWxlTW92ZVRpdGxlJykgfX08L2gzPlxuICAgICAgICAgICAgICAgIDxwPnt7IHQoJ2NoZXNzaW1hbHNSdWxlTW92ZUJvZHknKSB9fTwvcD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2FydGljbGU+XG5cbiAgICAgICAgICAgIDxhcnRpY2xlPlxuICAgICAgICAgICAgICA8c3Bhbj4zPC9zcGFuPlxuICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxoMz57eyB0KCdjaGVzc2ltYWxzUnVsZVBvd2Vyc1RpdGxlJykgfX08L2gzPlxuICAgICAgICAgICAgICAgIDxwPnt7IHQoJ2NoZXNzaW1hbHNSdWxlUG93ZXJzQm9keScpIH19PC9wPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvYXJ0aWNsZT5cblxuICAgICAgICAgICAgPGFydGljbGU+XG4gICAgICAgICAgICAgIDxzcGFuPjQ8L3NwYW4+XG4gICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPGgzPnt7IHQoJ2NoZXNzaW1hbHNSdWxlQ2FyZHNUaXRsZScpIH19PC9oMz5cbiAgICAgICAgICAgICAgICA8dWw+XG4gICAgICAgICAgICAgICAgICA8bGk+e3sgdCgnY2hlc3NpbWFsc1J1bGVFYWdsZScpIH19PC9saT5cbiAgICAgICAgICAgICAgICAgIDxsaT57eyB0KCdjaGVzc2ltYWxzUnVsZUJ1bGwnKSB9fTwvbGk+XG4gICAgICAgICAgICAgICAgICA8bGk+e3sgdCgnY2hlc3NpbWFsc1J1bGVLYW5nYXJvbycpIH19PC9saT5cbiAgICAgICAgICAgICAgICAgIDxsaT57eyB0KCdjaGVzc2ltYWxzUnVsZUxpb24nKSB9fTwvbGk+XG4gICAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2FydGljbGU+XG5cbiAgICAgICAgICAgIDxhcnRpY2xlPlxuICAgICAgICAgICAgICA8c3Bhbj41PC9zcGFuPlxuICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxoMz57eyB0KCdjaGVzc2ltYWxzUnVsZUxpbWl0c1RpdGxlJykgfX08L2gzPlxuICAgICAgICAgICAgICAgIDxwPnt7IHQoJ2NoZXNzaW1hbHNSdWxlTGltaXRzQm9keScpIH19PC9wPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvYXJ0aWNsZT5cbiAgICAgICAgICA8L3NlY3Rpb24+XG4gICAgICAgIDwvdmFsLW1vZGFsLWxheW91dD5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9pb24tbW9kYWw+XG5cbiAgICA8aW9uLW1vZGFsXG4gICAgICBbaXNPcGVuXT1cImlzU2V0dGluZ3NNb2RhbE9wZW4oKVwiXG4gICAgICBjc3NDbGFzcz1cInZhbC1tb2RhbC1hZGFwdGl2ZVwiXG4gICAgICAoZGlkRGlzbWlzcyk9XCJjbG9zZVNldHRpbmdzTW9kYWwoKVwiXG4gICAgPlxuICAgICAgPG5nLXRlbXBsYXRlPlxuICAgICAgICA8dmFsLW1vZGFsLWxheW91dFxuICAgICAgICAgIFt0aXRsZV09XCJ0KCdjaGVzc2ltYWxzU2V0dGluZ3NUaXRsZScpXCJcbiAgICAgICAgICBbc3VidGl0bGVdPVwidCgnY2hlc3NpbWFsc1NldHRpbmdzU3VidGl0bGUnKVwiXG4gICAgICAgICAgW2Nsb3NlTGFiZWxdPVwidCgnY2xvc2UnKVwiXG4gICAgICAgICAgW2Zvb3Rlcl09XCJmYWxzZVwiXG4gICAgICAgICAgKGNsb3NlKT1cImNsb3NlU2V0dGluZ3NNb2RhbCgpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPVwiY2hlc3NpbWFscy1zZXR0aW5nc1wiPlxuICAgICAgICAgICAgPGFydGljbGU+XG4gICAgICAgICAgICAgIDx2YWwtdG9nZ2xlLWlucHV0IFtwcm9wc109XCJtdXNpY1RvZ2dsZVByb3BzKClcIiAvPlxuICAgICAgICAgICAgICA8dmFsLXJhbmdlLWlucHV0IFtwcm9wc109XCJtdXNpY1ZvbHVtZVByb3BzKClcIiAocmFuZ2VDaGFuZ2UpPVwic2V0TXVzaWNWb2x1bWUoJGV2ZW50KVwiIC8+XG4gICAgICAgICAgICA8L2FydGljbGU+XG4gICAgICAgICAgICA8YXJ0aWNsZT5cbiAgICAgICAgICAgICAgPHZhbC10b2dnbGUtaW5wdXQgW3Byb3BzXT1cInNmeFRvZ2dsZVByb3BzKClcIiAvPlxuICAgICAgICAgICAgICA8dmFsLXJhbmdlLWlucHV0IFtwcm9wc109XCJzZnhWb2x1bWVQcm9wcygpXCIgKHJhbmdlQ2hhbmdlKT1cInNldFNmeFZvbHVtZSgkZXZlbnQpXCIgLz5cbiAgICAgICAgICAgIDwvYXJ0aWNsZT5cbiAgICAgICAgICA8L3NlY3Rpb24+XG4gICAgICAgIDwvdmFsLW1vZGFsLWxheW91dD5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9pb24tbW9kYWw+XG5cbiAgICA8aW9uLW1vZGFsXG4gICAgICBbaXNPcGVuXT1cImlzQWJvdXRNb2RhbE9wZW4oKVwiXG4gICAgICBjc3NDbGFzcz1cInZhbC1tb2RhbC1hZGFwdGl2ZVwiXG4gICAgICAoZGlkRGlzbWlzcyk9XCJjbG9zZUFib3V0TW9kYWwoKVwiXG4gICAgPlxuICAgICAgPG5nLXRlbXBsYXRlPlxuICAgICAgICA8dmFsLW1vZGFsLWxheW91dFxuICAgICAgICAgIFt0aXRsZV09XCJ0KCdjaGVzc2ltYWxzQWJvdXRUaXRsZScpXCJcbiAgICAgICAgICBbc3VidGl0bGVdPVwidCgnY2hlc3NpbWFsc0Fib3V0U3VidGl0bGUnKVwiXG4gICAgICAgICAgW2Nsb3NlTGFiZWxdPVwidCgnY2xvc2UnKVwiXG4gICAgICAgICAgW2FjdGlvbnNdPVwiYWJvdXRBY3Rpb25zKClcIlxuICAgICAgICAgIGFjdGlvbnNBbGlnbj1cImVuZFwiXG4gICAgICAgICAgKGNsb3NlKT1cImNsb3NlQWJvdXRNb2RhbCgpXCJcbiAgICAgICAgICAoYWN0aW9uQ2xpY2spPVwiY2xvc2VBYm91dE1vZGFsKClcIlxuICAgICAgICA+XG4gICAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJjaGVzc2ltYWxzLWFib3V0XCI+XG4gICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgIGNsYXNzPVwiY2hlc3NpbWFscy1hYm91dF9fbG9nb1wiXG4gICAgICAgICAgICAgIHNyYz1cImFzc2V0cy9nYW1lcy9jaGVzc2ltYWxzL21lbnUtbG9nby5qcGdcIlxuICAgICAgICAgICAgICBhbHQ9XCJcIlxuICAgICAgICAgICAgICBsb2FkaW5nPVwibGF6eVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPHA+e3sgdCgnY2hlc3NpbWFsc0Fib3V0Qm9keScpIH19PC9wPlxuICAgICAgICAgICAgPGRsPlxuICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxkdD57eyB0KCdjaGVzc2ltYWxzQWJvdXRMaWJWZXJzaW9uJykgfX08L2R0PlxuICAgICAgICAgICAgICAgIDxkZD57eyB2YWx0ZWNoQ29tcG9uZW50c1ZlcnNpb24gfX08L2RkPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGw+XG4gICAgICAgICAgPC9zZWN0aW9uPlxuICAgICAgICA8L3ZhbC1tb2RhbC1sYXlvdXQ+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvaW9uLW1vZGFsPlxuXG4gICAgPGlvbi1tb2RhbFxuICAgICAgW2lzT3Blbl09XCIhIWNvbmZpcm1BY3Rpb24oKVwiXG4gICAgICBjc3NDbGFzcz1cInZhbC1tb2RhbC1hZGFwdGl2ZVwiXG4gICAgICAoZGlkRGlzbWlzcyk9XCJoYW5kbGVDb25maXJtTW9kYWxEaXNtaXNzZWQoKVwiXG4gICAgPlxuICAgICAgPG5nLXRlbXBsYXRlPlxuICAgICAgICA8dmFsLW1vZGFsLWxheW91dFxuICAgICAgICAgIFt0aXRsZV09XCJjb25maXJtVGl0bGUoKVwiXG4gICAgICAgICAgW3N1YnRpdGxlXT1cImNvbmZpcm1Cb2R5KClcIlxuICAgICAgICAgIFtjbG9zZUxhYmVsXT1cInQoJ2Nsb3NlJylcIlxuICAgICAgICAgIFthY3Rpb25zXT1cImNvbmZpcm1BY3Rpb25zKClcIlxuICAgICAgICAgIGFjdGlvbnNBbGlnbj1cImVuZFwiXG4gICAgICAgICAgKGNsb3NlKT1cImNsb3NlQ29uZmlybU1vZGFsKClcIlxuICAgICAgICAgIChhY3Rpb25DbGljayk9XCJjb25maXJtUGVuZGluZ0FjdGlvbigkZXZlbnQuYWN0aW9uPy50b2tlbilcIlxuICAgICAgICAvPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2lvbi1tb2RhbD5cbiAgYCxcbiAgc3R5bGVzOiBbXG4gICAgYFxuICAgICAgOmhvc3Qge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc2hlbGwge1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGFuZWw6ICNmZmZmZmY7XG4gICAgICAgIC0tY2hlc3NpbWFscy1zdXJmYWNlOiAjZmZmYWYxO1xuICAgICAgICAtLWNoZXNzaW1hbHMtYm9yZGVyOiByZ2JhKDQ2LCA1OCwgNDQsIDAuMTgpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtdGV4dDogIzJlM2EyYztcbiAgICAgICAgLS1jaGVzc2ltYWxzLW11dGVkOiAjNTE2NDNkO1xuICAgICAgICAtLWNoZXNzaW1hbHMtc29mdDogcmdiYSgxMTEsIDEyMiwgNjAsIDAuMSk7XG4gICAgICAgIC0tY2hlc3NpbWFscy1wcmltYXJ5OiAjMmU2ZjNlO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2I6IDQ2LCAxMTEsIDYyO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcHJpbWFyeS1jb250cmFzdDogI2ZmZmFmMDtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXNlY29uZGFyeTogI2E4YTA2YTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXNlY29uZGFyeS1yZ2I6IDE2OCwgMTYwLCAxMDY7XG4gICAgICAgIC0tY2hlc3NpbWFscy1za3k6ICNjMDZhM2Q7XG4gICAgICAgIC0tY2hlc3NpbWFscy1za3ktcmdiOiAxOTIsIDEwNiwgNjE7XG4gICAgICAgIC0tY2hlc3NpbWFscy1zdG9uZTogIzhlOTM2MjtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXN0b25lLXJnYjogMTQyLCAxNDcsIDk4O1xuICAgICAgICAtLWNoZXNzaW1hbHMtc2VsZWN0ZWQ6ICMzN2YyOGE7XG4gICAgICAgIC0tY2hlc3NpbWFscy1zZWxlY3RlZC1yZ2I6IDU1LCAyNDIsIDEzODtcbiAgICAgICAgLS1jaGVzc2ltYWxzLW1hZ2ljOiAjZjdkNDVhO1xuICAgICAgICAtLWNoZXNzaW1hbHMtbWFnaWMtcmdiOiAyNDcsIDIxMiwgOTA7XG4gICAgICAgIC0tY2hlc3NpbWFscy1tYWdpYy1ob3Q6ICNmZmY1NmY7XG4gICAgICAgIC0tY2hlc3NpbWFscy1tYWdpYy1kZWVwOiAjYjc3YTE4O1xuICAgICAgICAtLWNoZXNzaW1hbHMtd2FybmluZzogI2Y0YzU0MjtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXdhcm5pbmctcmdiOiAyNDQsIDE5NywgNjY7XG4gICAgICAgIC0tY2hlc3NpbWFscy1tb3ZlOiB2YXIoLS1jaGVzc2ltYWxzLXNreSk7XG4gICAgICAgIC0tY2hlc3NpbWFscy1tb3ZlLXJnYjogdmFyKC0tY2hlc3NpbWFscy1za3ktcmdiKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWNhcHR1cmU6ICMxZmNkYjM7XG4gICAgICAgIC0tY2hlc3NpbWFscy1jYXB0dXJlLXJnYjogMzEsIDIwNSwgMTc5O1xuICAgICAgICAtLWNoZXNzaW1hbHMtbGFzdDogIzhjNmI0ZjtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWxhc3QtcmdiOiAxNDAsIDEwNywgNzk7XG4gICAgICAgIC0tY2hlc3NpbWFscy1jZWxsLWxpZ2h0OiAjZjNmNGU4O1xuICAgICAgICAtLWNoZXNzaW1hbHMtY2VsbC1kYXJrOiAjN2Y5NDRkO1xuICAgICAgICAtLWNoZXNzaW1hbHMtYm9hcmQtc2hhZG93OiByZ2JhKDQ2LCA1OCwgNDQsIDAuMTQpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGllY2Utd2hpdGUtZmlsbDogI2ZmZmZmZjtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXBpZWNlLXdoaXRlLXNpZGU6ICNmM2VhZGI7XG4gICAgICAgIC0tY2hlc3NpbWFscy1waWVjZS13aGl0ZS1saW5lOiByZ2JhKDgyLCA2NSwgNDYsIDAuMTIpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGllY2Utd2hpdGUtc2hhZG93OlxuICAgICAgICAgIGRyb3Atc2hhZG93KDAgMCAxcHggcmdiYSg4NCwgNjIsIDM0LCAwLjUyKSlcbiAgICAgICAgICBkcm9wLXNoYWRvdygwIDAuMThyZW0gMC4xMnJlbSByZ2JhKDcyLCA1OCwgMzYsIDAuMjIpKVxuICAgICAgICAgIGRyb3Atc2hhZG93KDAgMC4zNHJlbSAwLjQycmVtIHJnYmEoNzIsIDU4LCAzNiwgMC4yMikpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGllY2UtYmxhY2stZmlsbDogIzI0MjkzNjtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXBpZWNlLWJsYWNrLXNpZGU6ICMxNzFiMjU7XG4gICAgICAgIC0tY2hlc3NpbWFscy1waWVjZS1ibGFjay1saW5lOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7XG4gICAgICAgIC0tY2hlc3NpbWFscy1waWVjZS1ibGFjay1zaGFkb3c6XG4gICAgICAgICAgZHJvcC1zaGFkb3coMCAwIDFweCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMzQpKVxuICAgICAgICAgIGRyb3Atc2hhZG93KDAgMC4xOHJlbSAwLjFyZW0gcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEyKSlcbiAgICAgICAgICBkcm9wLXNoYWRvdygwIDAuMzJyZW0gMC40MnJlbSByZ2JhKDAsIDAsIDAsIDAuMzYpKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXBpZWNlLWdvbGQ6ICNjNzlhNDI7XG4gICAgICAgIC0tY2hlc3NpbWFscy1waWVjZS1nb2xkLWRhcms6ICM4YTVmMjI7XG4gICAgICAgIC0tY2hlc3NpbWFscy1hbmltYWwtZmFjZS1iZzogI2ZmZmRmNztcbiAgICAgICAgLS1jaGVzc2ltYWxzLWFuaW1hbC1mYWNlLWlubmVyLWJnOiAjZmZmZmZmO1xuICAgICAgICAtLWNoZXNzaW1hbHMtYW5pbWFsLWZhY2UtYm9yZGVyOiByZ2JhKDQ2LCA1OCwgNDQsIDAuMTIpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtYW5pbWFsLWZhY2UtZmlsdGVyOiBkcm9wLXNoYWRvdygwIDAuMTJyZW0gMC4xNnJlbSByZ2JhKDQ2LCA1OCwgNDQsIDAuMTgpKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWFuaW1hbC1mYWNlLWxvY2tlZC1maWx0ZXI6IGdyYXlzY2FsZSgwLjIpIHNhdHVyYXRlKDAuNzIpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtYW5pbWFsLWZhY2UtbG9ja2VkLWltZy1vcGFjaXR5OiAwLjcyO1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDEuMTI1cmVtO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgbWF4LXdpZHRoOiBtaW4oMTAwJSwgNjByZW0pO1xuICAgICAgICBtYXJnaW46IDAgYXV0bztcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICB9XG5cbiAgICAgIEBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIHtcbiAgICAgICAgLmNoZXNzaW1hbHMtc2hlbGwge1xuICAgICAgICAgIC0tY2hlc3NpbWFscy1wYW5lbDogIzE3MjExNjtcbiAgICAgICAgICAtLWNoZXNzaW1hbHMtc3VyZmFjZTogIzBmMTcwZjtcbiAgICAgICAgICAtLWNoZXNzaW1hbHMtYm9yZGVyOiByZ2JhKDI0MiwgMjMwLCAyMTMsIDAuMik7XG4gICAgICAgICAgLS1jaGVzc2ltYWxzLXRleHQ6ICNmNmYzZTk7XG4gICAgICAgICAgLS1jaGVzc2ltYWxzLW11dGVkOiAjYzhjZmIxO1xuICAgICAgICAgIC0tY2hlc3NpbWFscy1zb2Z0OiByZ2JhKDExMSwgMTIyLCA2MCwgMC4yMik7XG4gICAgICAgICAgLS1jaGVzc2ltYWxzLXByaW1hcnk6ICMyZTZmM2U7XG4gICAgICAgICAgLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiOiA0NiwgMTExLCA2MjtcbiAgICAgICAgICAtLWNoZXNzaW1hbHMtcHJpbWFyeS1jb250cmFzdDogI2ZmZmFmMDtcbiAgICAgICAgICAtLWNoZXNzaW1hbHMtc2Vjb25kYXJ5OiAjYThhMDZhO1xuICAgICAgICAgIC0tY2hlc3NpbWFscy1zZWNvbmRhcnktcmdiOiAxNjgsIDE2MCwgMTA2O1xuICAgICAgICAgIC0tY2hlc3NpbWFscy1za3k6ICNjMDZhM2Q7XG4gICAgICAgICAgLS1jaGVzc2ltYWxzLXNreS1yZ2I6IDE5MiwgMTA2LCA2MTtcbiAgICAgICAgICAtLWNoZXNzaW1hbHMtc3RvbmU6ICM4ZTkzNjI7XG4gICAgICAgICAgLS1jaGVzc2ltYWxzLXN0b25lLXJnYjogMTQyLCAxNDcsIDk4O1xuICAgICAgICAgIC0tY2hlc3NpbWFscy1jZWxsLWxpZ2h0OiAjZjNmNGU4O1xuICAgICAgICAgIC0tY2hlc3NpbWFscy1jZWxsLWRhcms6ICM3Zjk0NGQ7XG4gICAgICAgICAgLS1jaGVzc2ltYWxzLWJvYXJkLXNoYWRvdzogcmdiYSgwLCAwLCAwLCAwLjM0KTtcbiAgICAgICAgICAtLWNoZXNzaW1hbHMtYW5pbWFsLWZhY2UtYm9yZGVyOiByZ2JhKDI0MiwgMjMwLCAyMTMsIDAuMjQpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJlc3VtZS1zcGxhc2gge1xuICAgICAgICBvcmRlcjogMDtcbiAgICAgICAgcG9zaXRpb246IGZpeGVkO1xuICAgICAgICBpbnNldDogMDtcbiAgICAgICAgei1pbmRleDogMTAwMDtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgcGxhY2UtaXRlbXM6IGNlbnRlcjtcbiAgICAgICAgYWxpZ24tY29udGVudDogY2VudGVyO1xuICAgICAgICBnYXA6IDAuNjVyZW07XG4gICAgICAgIHBhZGRpbmc6IDEuNXJlbTtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDUwJSA0MiUsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTgpLCB0cmFuc3BhcmVudCAyMnJlbSksXG4gICAgICAgICAgY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWNoZXNzaW1hbHMtcGFuZWwpIDkyJSwgdHJhbnNwYXJlbnQpO1xuICAgICAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMC45cmVtKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcmVzdW1lLXNwbGFzaF9fcGF3IHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgcGxhY2UtaXRlbXM6IGNlbnRlcjtcbiAgICAgICAgd2lkdGg6IGNsYW1wKDQuNnJlbSwgMTZ2dywgNS42cmVtKTtcbiAgICAgICAgaGVpZ2h0OiBjbGFtcCg0LjZyZW0sIDE2dncsIDUuNnJlbSk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEuNTVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCAzNSUgMjUlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOTYpLCB0cmFuc3BhcmVudCAzNCUpLFxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxNDVkZWcsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45NiksIHJnYmEodmFyKC0tY2hlc3NpbWFscy1zZWNvbmRhcnktcmdiKSwgMC4yMikpLFxuICAgICAgICAgIGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1jaGVzc2ltYWxzLXBhbmVsKSA4MiUsIHdoaXRlKTtcbiAgICAgICAgYm9yZGVyOiAwLjEycmVtIHNvbGlkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMjIpO1xuICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgIDAgMS4xNXJlbSAyLjZyZW0gcmdiYSh2YXIoLS1pb24tY29sb3ItZGFyay1yZ2IsIDQ3LCA0MiwgNTgpLCAwLjE2KSxcbiAgICAgICAgICAwIDAgMCAwLjQycmVtIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC40MiksXG4gICAgICAgICAgaW5zZXQgMCAtMC4yNXJlbSAwLjZyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4wOCk7XG4gICAgICAgIGFuaW1hdGlvbjogY2hlc3NpbWFscy1yZXN1bWUtcHVsc2UgMS4ycyBlYXNlLWluLW91dCBpbmZpbml0ZTtcbiAgICAgICAgZm9udC1zaXplOiBjbGFtcCgyLjQ1cmVtLCA5dncsIDMuMzVyZW0pO1xuICAgICAgICBsaW5lLWhlaWdodDogMTtcbiAgICAgICAgZmlsdGVyOiBkcm9wLXNoYWRvdygwIDAuMjhyZW0gMC4zOHJlbSByZ2JhKHZhcigtLWlvbi1jb2xvci1kYXJrLXJnYiwgNDcsIDQyLCA1OCksIDAuMTgpKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcmVzdW1lLXNwbGFzaCBzdHJvbmcge1xuICAgICAgICBmb250LXNpemU6IGNsYW1wKDEuNTVyZW0sIDV2dywgMi40cmVtKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMDU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJlc3VtZS1zcGxhc2ggcCB7XG4gICAgICAgIG1heC13aWR0aDogMjRyZW07XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IDFyZW07XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjM1O1xuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIGNoZXNzaW1hbHMtcmVzdW1lLXB1bHNlIHtcbiAgICAgICAgMCUsXG4gICAgICAgIDEwMCUge1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKSBzY2FsZSgxKTtcbiAgICAgICAgfVxuICAgICAgICA1MCUge1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMC4yNXJlbSkgc2NhbGUoMS4wNCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBjaGVzc2ltYWxzLXNwaW4ge1xuICAgICAgICB0byB7XG4gICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIGNoZXNzaW1hbHMtb25saW5lLXB1bHNlIHtcbiAgICAgICAgMCUsXG4gICAgICAgIDEwMCUge1xuICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7XG4gICAgICAgICAgb3BhY2l0eTogMC43ODtcbiAgICAgICAgfVxuXG4gICAgICAgIDUwJSB7XG4gICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxLjIyKTtcbiAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIDpob3N0LWNvbnRleHQoaHRtbC5pb24tcGFsZXR0ZS1kYXJrKSAuY2hlc3NpbWFscy1zaGVsbCxcbiAgICAgIDpob3N0LWNvbnRleHQoW2RhdGEtdGhlbWU9J2RhcmsnXSkgLmNoZXNzaW1hbHMtc2hlbGwge1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGFuZWw6ICMxNzIxMTY7XG4gICAgICAgIC0tY2hlc3NpbWFscy1zdXJmYWNlOiAjMGYxNzBmO1xuICAgICAgICAtLWNoZXNzaW1hbHMtYm9yZGVyOiByZ2JhKDI0NiwgMjI3LCAyMTMsIDAuMjIpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtdGV4dDogI2Y2ZjNlOTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLW11dGVkOiAjYzhjZmIxO1xuICAgICAgICAtLWNoZXNzaW1hbHMtc29mdDogcmdiYSgxMTEsIDEyMiwgNjAsIDAuMjIpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcHJpbWFyeTogIzJlNmYzZTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiOiA0NiwgMTExLCA2MjtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXByaW1hcnktY29udHJhc3Q6ICNmZmZhZjA7XG4gICAgICAgIC0tY2hlc3NpbWFscy1zZWNvbmRhcnk6ICNhOGEwNmE7XG4gICAgICAgIC0tY2hlc3NpbWFscy1zZWNvbmRhcnktcmdiOiAxNjgsIDE2MCwgMTA2O1xuICAgICAgICAtLWNoZXNzaW1hbHMtc2t5OiAjYzA2YTNkO1xuICAgICAgICAtLWNoZXNzaW1hbHMtc2t5LXJnYjogMTkyLCAxMDYsIDYxO1xuICAgICAgICAtLWNoZXNzaW1hbHMtc3RvbmU6ICM4ZTkzNjI7XG4gICAgICAgIC0tY2hlc3NpbWFscy1zdG9uZS1yZ2I6IDE0MiwgMTQ3LCA5ODtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWNlbGwtbGlnaHQ6ICNlOGVhZGM7XG4gICAgICAgIC0tY2hlc3NpbWFscy1jZWxsLWRhcms6ICM1ZjcwNDA7XG4gICAgICAgIC0tY2hlc3NpbWFscy1ib2FyZC1zaGFkb3c6IHJnYmEoMCwgMCwgMCwgMC4zNCk7XG4gICAgICAgIC0tY2hlc3NpbWFscy1jYXB0dXJlOiAjNjZmMmQ3O1xuICAgICAgICAtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2I6IDEwMiwgMjQyLCAyMTU7XG4gICAgICAgIC0tY2hlc3NpbWFscy1sYXN0OiAjY2RiZTliO1xuICAgICAgICAtLWNoZXNzaW1hbHMtbGFzdC1yZ2I6IDIwNSwgMTkwLCAxNTU7XG4gICAgICAgIC0tY2hlc3NpbWFscy1waWVjZS13aGl0ZS1maWxsOiAjZmZmYWZmO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGllY2Utd2hpdGUtc2lkZTogI2YwZTVkNDtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXBpZWNlLXdoaXRlLWxpbmU6IHJnYmEoODIsIDY1LCA0NiwgMC4xMik7XG4gICAgICAgIC0tY2hlc3NpbWFscy1waWVjZS13aGl0ZS1zaGFkb3c6XG4gICAgICAgICAgZHJvcC1zaGFkb3coMCAwIDFweCByZ2JhKDg0LCA2MiwgMzQsIDAuNDgpKVxuICAgICAgICAgIGRyb3Atc2hhZG93KDAgMC4xOHJlbSAwLjEycmVtIHJnYmEoMCwgMCwgMCwgMC4yNCkpXG4gICAgICAgICAgZHJvcC1zaGFkb3coMCAwLjM0cmVtIDAuNDJyZW0gcmdiYSgwLCAwLCAwLCAwLjMpKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXBpZWNlLWJsYWNrLWZpbGw6ICMyMDI2MzM7XG4gICAgICAgIC0tY2hlc3NpbWFscy1waWVjZS1ibGFjay1zaWRlOiAjMTExNjIwO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGllY2UtYmxhY2stbGluZTogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEyKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXBpZWNlLWJsYWNrLXNoYWRvdzpcbiAgICAgICAgICBkcm9wLXNoYWRvdygwIDAgMXB4IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4zNCkpXG4gICAgICAgICAgZHJvcC1zaGFkb3coMCAwLjE4cmVtIDAuMXJlbSByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTQpKVxuICAgICAgICAgIGRyb3Atc2hhZG93KDAgMC4zNHJlbSAwLjQ0cmVtIHJnYmEoMCwgMCwgMCwgMC41MikpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtYW5pbWFsLWZhY2UtYmc6ICNmZmZkZjc7XG4gICAgICAgIC0tY2hlc3NpbWFscy1hbmltYWwtZmFjZS1pbm5lci1iZzogI2ZmZmZmZjtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWFuaW1hbC1mYWNlLWJvcmRlcjogcmdiYSgyNDIsIDIzMCwgMjEzLCAwLjI0KTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWFuaW1hbC1mYWNlLWZpbHRlcjogZHJvcC1zaGFkb3coMCAwLjEycmVtIDAuMTZyZW0gcmdiYSgwLCAwLCAwLCAwLjIyKSk7XG4gICAgICAgIC0tY2hlc3NpbWFscy1hbmltYWwtZmFjZS1sb2NrZWQtZmlsdGVyOlxuICAgICAgICAgIGdyYXlzY2FsZSgwLjMyKVxuICAgICAgICAgIHNhdHVyYXRlKDAuNzIpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtYW5pbWFsLWZhY2UtbG9ja2VkLWltZy1vcGFjaXR5OiAwLjU4O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1oZXJvIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjc1cmVtO1xuICAgICAgICBqdXN0aWZ5LWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEuNzVyZW07XG4gICAgICAgIHBhZGRpbmc6IGNsYW1wKDEuMjVyZW0sIDV2dywgMi41cmVtKTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDE4JSAxMiUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45MiksIHRyYW5zcGFyZW50IDIwJSksXG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgI2ZkZjhlZSAwJSwgI2ZmZmZmZiA0MCUsICNlZGYzZGYgMTAwJSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNoZXNzaW1hbHMtYm9yZGVyKTtcbiAgICAgIH1cblxuICAgICAgOmhvc3QtY29udGV4dChodG1sLmlvbi1wYWxldHRlLWRhcmspIC5jaGVzc2ltYWxzLWhlcm8sXG4gICAgICA6aG9zdC1jb250ZXh0KFtkYXRhLXRoZW1lPSdkYXJrJ10pIC5jaGVzc2ltYWxzLWhlcm8ge1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgMTglIDEyJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA4KSwgdHJhbnNwYXJlbnQgMjIlKSxcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjMTExYTEwIDAlLCAjMTcyMTE2IDQ4JSwgIzBmMTcwZiAxMDAlKTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSgyNDYsIDIyNywgMjEzLCAwLjIyKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtaGVyb19fbG9nbyB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIHBsYWNlLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIHdpZHRoOiBtaW4oMjJyZW0sIDgydncpO1xuICAgICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgICAgIHBhZGRpbmc6IDAuNXJlbTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMS4zNXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogI2ZmZmZmZjtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICAwIDFyZW0gMi41cmVtIHJnYmEoNDYsIDU4LCA0NCwgMC4xKSxcbiAgICAgICAgICBpbnNldCAwIDAgMCAxcHggcmdiYSg0NiwgNTgsIDQ0LCAwLjA4KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtaGVyb19fbG9nbyBpbWcge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGhlaWdodDogYXV0bztcbiAgICAgICAgbWF4LWhlaWdodDogMTJyZW07XG4gICAgICAgIG9iamVjdC1maXQ6IGNvbnRhaW47XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDFyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWhlcm8gaDEge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIGZvbnQtc2l6ZTogY2xhbXAoMi40cmVtLCA5dncsIDQuNXJlbSk7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAwLjk1O1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1oZXJvIHAsXG4gICAgICAuY2hlc3NpbWFscy1ob3d0byBwLFxuICAgICAgLmNoZXNzaW1hbHMtdGlwIHAsXG4gICAgICAuY2hlc3NpbWFscy1yZXN1bHQgcCxcbiAgICAgIC5jaGVzc2ltYWxzLXBvd2VycyBwIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBsaW5lLWhlaWdodDogMS40NTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGFuZWwsXG4gICAgICAuY2hlc3NpbWFscy1nYW1lLFxuICAgICAgLmNoZXNzaW1hbHMtcG93ZXJzIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAxcmVtO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jaGVzc2ltYWxzLWJvcmRlcik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEuNjI1cmVtO1xuICAgICAgICBwYWRkaW5nOiBjbGFtcCgxcmVtLCA0dncsIDEuNXJlbSk7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtcGFuZWwpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1vbmxpbmUge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuODc1cmVtO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jaGVzc2ltYWxzLWJvcmRlcik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEuMzc1cmVtO1xuICAgICAgICBwYWRkaW5nOiAxcmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMDgpLCB0cmFuc3BhcmVudCksXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1wYW5lbCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW9ubGluZS0td2FpdGluZyB7XG4gICAgICAgIG9yZGVyOiAyO1xuICAgICAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMzQpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1vbmxpbmUgaDIsXG4gICAgICAuY2hlc3NpbWFscy1vbmxpbmUgcCB7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtb25saW5lIGgyIHtcbiAgICAgICAgZm9udC1zaXplOiAxLjFyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW9ubGluZSBwIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBsaW5lLWhlaWdodDogMS40O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1vbmxpbmVfX2NyZWF0ZSxcbiAgICAgIC5jaGVzc2ltYWxzLW9ubGluZV9fam9pbiB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC41NXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtb25saW5lX19jcmVhdGUgc21hbGwge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA4MDA7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjM1O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1vbmxpbmVfX2pvaW4ge1xuICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tY2hlc3NpbWFscy1ib3JkZXIpO1xuICAgICAgICBwYWRkaW5nLXRvcDogMC44NXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtb25saW5lX19qb2luID4gc3Ryb25nIHtcbiAgICAgICAgZm9udC1zaXplOiAwLjk1cmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1vbmxpbmVfX2Vycm9yIHtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMC44NzVyZW07XG4gICAgICAgIHBhZGRpbmc6IDAuN3JlbSAwLjhyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0taW9uLWNvbG9yLWRhbmdlci1yZ2IsIDIzNSwgNjgsIDkwKSwgMC4xMik7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItZGFuZ2VyLCAjZWI0NDVhKSAhaW1wb3J0YW50O1xuICAgICAgICBmb250LXdlaWdodDogODAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1vbmxpbmVfX2xvYWRpbmcge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDAuNjI1cmVtO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjIyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIHBhZGRpbmc6IDAuNjVyZW0gMC44NXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4wOCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICBmb250LXNpemU6IDAuOTJyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5MDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW9ubGluZV9fbG9hZGluZyBzcGFuIHtcbiAgICAgICAgd2lkdGg6IDFyZW07XG4gICAgICAgIGhlaWdodDogMXJlbTtcbiAgICAgICAgYm9yZGVyOiAwLjE1cmVtIHNvbGlkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMjQpO1xuICAgICAgICBib3JkZXItdG9wLWNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgYW5pbWF0aW9uOiBjaGVzc2ltYWxzLXNwaW4gMC43NXMgbGluZWFyIGluZmluaXRlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1vbmxpbmUtY29kZSB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC40cmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1vbmxpbmUtY29kZSBpbnB1dCB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBtaW4taGVpZ2h0OiAzLjNyZW07XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNoZXNzaW1hbHMtYm9yZGVyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIHBhZGRpbmc6IDAgMXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1wYW5lbCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICBmb250OiBpbmhlcml0O1xuICAgICAgICBmb250LXdlaWdodDogODUwO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wNWVtO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1nYW1lLWNvZGUge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuMnJlbTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMXJlbTtcbiAgICAgICAgcGFkZGluZzogMC44NXJlbSAxcmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLXNvZnQpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1nYW1lLWNvZGUgc21hbGwge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5MDA7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA2ZW07XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWdhbWUtY29kZSBzdHJvbmcge1xuICAgICAgICBmb250LXNpemU6IGNsYW1wKDEuMzVyZW0sIDZ2dywgMnJlbSk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA1ZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW9ubGluZS1hY3Rpb25zIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgbWlubWF4KDAsIDFmcikpO1xuICAgICAgICBnYXA6IDAuNjI1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1oaXN0b3J5IHtcbiAgICAgICAgZ2FwOiAwLjc1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1oaXN0b3J5X19oZWFkaW5nIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IHN0YXJ0O1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICAgIGdhcDogMC43NXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtaGlzdG9yeV9fbGlzdCB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC41cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1oaXN0b3J5X19pdGVtIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgICBnYXA6IDAuNzVyZW07XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jaGVzc2ltYWxzLWJvcmRlcik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDFyZW07XG4gICAgICAgIHBhZGRpbmc6IDAuN3JlbSAwLjhyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtcGFuZWwpO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgZm9udDogaW5oZXJpdDtcbiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtaGlzdG9yeV9faXRlbSBzcGFuIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjFyZW07XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtaGlzdG9yeV9faXRlbSBzdHJvbmcge1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wNGVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1oaXN0b3J5X19pdGVtIHNtYWxsIHtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IDAuODJyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA4MDA7XG4gICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1oaXN0b3J5X19pdGVtIGVtIHtcbiAgICAgICAgZmxleDogMCAwIGF1dG87XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpO1xuICAgICAgICBmb250LXNpemU6IDAuODZyZW07XG4gICAgICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtaG9tZS1zZXR0aW5ncyB7XG4gICAgICAgIGdhcDogMC44cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ob21lLXNldHRpbmdzX19hY3Rpb25zIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maXQsIG1pbm1heCg5cmVtLCAxZnIpKTtcbiAgICAgICAgZ2FwOiAwLjYyNXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGVuZGluZy1wbGF5ZXIge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDAuN3JlbTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4yMik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDFyZW07XG4gICAgICAgIHBhZGRpbmc6IDAuNzVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtc29mdCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBlbmRpbmctcGxheWVyIGRpdiB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC4xcmVtO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBlbmRpbmctcGxheWVyIHNtYWxsIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IDAuNzJyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA3ZW07XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBlbmRpbmctcGxheWVyIHN0cm9uZyB7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIGZvbnQtc2l6ZTogMS4wNXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWdhbWUge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuODc1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy10dXJuLWNhcmQge1xuICAgICAgICBvcmRlcjogMTtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgICBnYXA6IDAuNjI1cmVtO1xuICAgICAgICBtaW4taGVpZ2h0OiAzLjc1cmVtO1xuICAgICAgICBvdmVyZmxvdzogdmlzaWJsZTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4yNCk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDFyZW07XG4gICAgICAgIHBhZGRpbmc6IDAuNTVyZW0gMC42NXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDE1JSAxOCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4zNCksIHRyYW5zcGFyZW50IDE4JSksXG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4yKSwgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNlY29uZGFyeS1yZ2IpLCAwLjEpKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtdHVybi1jYXJkLmlzLWJsYWNrLXR1cm4ge1xuICAgICAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0taW9uLWNvbG9yLWRhcmstcmdiLCA0NywgNDIsIDU4KSwgMC4yOCk7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCAxNSUgMTglLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTIpLCB0cmFuc3BhcmVudCAxOCUpLFxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0taW9uLWNvbG9yLWRhcmstcmdiLCA0NywgNDIsIDU4KSwgMC4xNCksIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMSkpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy10dXJuLWNhcmQuaXMtZmluaXNoZWQge1xuICAgICAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0taW9uLWNvbG9yLXN1Y2Nlc3MtcmdiLCA0NSwgMjExLCAxMTEpLCAwLjQyKTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDE1JSAxOCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4zNSksIHRyYW5zcGFyZW50IDE4JSksXG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1pb24tY29sb3Itc3VjY2Vzcy1yZ2IsIDQ1LCAyMTEsIDExMSksIDAuMTgpLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjEyKSk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXR1cm4tY2FyZC5pcy1maW5pc2hlZCAuY2hlc3NpbWFscy10dXJuLWNhcmRfX2NoaXAge1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLXN1Y2Nlc3MsICMyZGQzNmYpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy10dXJuLWNhcmQuaXMteW91ci10dXJuIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjQ4KTtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICAwIDAgMCAwLjEycmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTIpLFxuICAgICAgICAgIDAgMC45NXJlbSAycmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTQpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy10dXJuLWNhcmQuaXMteW91ci10dXJuIC5jaGVzc2ltYWxzLXR1cm4tY2FyZF9fY2hpcCB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktY29udHJhc3QpO1xuICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAwLjMycmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTQpO1xuICAgICAgICBhbmltYXRpb246IGNoZXNzaW1hbHMtdHVybi1wdWxzZSAxLjQ1cyBlYXNlLWluLW91dCBpbmZpbml0ZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtdHVybi1jYXJkLmlzLXdhaXRpbmctdHVybiAuY2hlc3NpbWFscy10dXJuLWNhcmRfX2NoaXAge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICB9XG5cbiAgICAgIEBrZXlmcmFtZXMgY2hlc3NpbWFscy10dXJuLXB1bHNlIHtcbiAgICAgICAgMCUsXG4gICAgICAgIDEwMCUge1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWigwKSBzY2FsZSgxKTtcbiAgICAgICAgfVxuXG4gICAgICAgIDUwJSB7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVaKDApIHNjYWxlKDEuMDM1KTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy10dXJuLWNhcmRfX2NvcHkge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICAgIGdhcDogMC4xNXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtdHVybi1jYXJkX19jaGlwIHtcbiAgICAgICAganVzdGlmeS1zZWxmOiBzdGFydDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIHBhZGRpbmc6IDAuMnJlbSAwLjVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtcGFuZWwpO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5KTtcbiAgICAgICAgZm9udC1zaXplOiAwLjYycmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wNmVtO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy10dXJuLWNhcmQgc3Ryb25nIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgICAgZm9udC1zaXplOiBjbGFtcCgxcmVtLCAzLjV2dywgMS4yNXJlbSk7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjA4O1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICBvdmVyZmxvdy13cmFwOiBhbnl3aGVyZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtdHVybi1jYXJkIHAge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjc4cmVtO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4yMjtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGxheWVyLXN0cmlwIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleDogMCAwIGF1dG87XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogMC40NXJlbTtcbiAgICAgICAgbWluLXdpZHRoOiAxMHJlbTtcbiAgICAgICAgbWF4LXdpZHRoOiBtaW4oMTdyZW0sIDQyJSk7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNoZXNzaW1hbHMtYm9yZGVyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIHBhZGRpbmc6IDAuM3JlbSAwLjU1cmVtIDAuM3JlbSAwLjM1cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWlvbi1jb2xvci1saWdodC1yZ2IsIDI0NCwgMjQ1LCAyNDgpLCAwLjcyKTtcbiAgICAgIH1cblxuICAgICAgOmhvc3QtY29udGV4dChodG1sLmlvbi1wYWxldHRlLWRhcmspIC5jaGVzc2ltYWxzLXBsYXllci1zdHJpcCxcbiAgICAgIDpob3N0LWNvbnRleHQoW2RhdGEtdGhlbWU9J2RhcmsnXSkgLmNoZXNzaW1hbHMtcGxheWVyLXN0cmlwIHtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA2KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGxheWVyLXN0cmlwIHZhbC11c2VyLWF2YXRhciB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgICBmbGV4OiAwIDAgYXV0bztcbiAgICAgICAgbGluZS1oZWlnaHQ6IDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBsYXllci1zdHJpcF9fYXZhdGFyIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgcGxhY2UtaXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZmxleDogMCAwIDIuMjVyZW07XG4gICAgICAgIHdpZHRoOiAyLjI1cmVtO1xuICAgICAgICBoZWlnaHQ6IDIuMjVyZW07XG4gICAgICAgIGFzcGVjdC1yYXRpbzogMSAvIDE7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LWNvbnRyYXN0KTtcbiAgICAgICAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBsYXllci1zdHJpcF9fYXZhdGFyLS1pbml0aWFscyB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43OHJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgIH1cblxuICAgICAgOmhvc3QgOjpuZy1kZWVwIC5jaGVzc2ltYWxzLXBsYXllci1zdHJpcCAuY2hlc3NpbWFscy10dXJuLWF2YXRhciB7XG4gICAgICAgIHdpZHRoOiAyLjI1cmVtO1xuICAgICAgICBtaW4td2lkdGg6IDIuMjVyZW07XG4gICAgICAgIGhlaWdodDogMi4yNXJlbTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wbGF5ZXItc3RyaXBfX3RleHQge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICAgIGdhcDogMC4wNXJlbTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGxheWVyLXN0cmlwX190ZXh0IHNwYW4ge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC41OHJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDhlbTtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGxheWVyLXN0cmlwX190ZXh0IHN0cm9uZyB7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIGZvbnQtc2l6ZTogMC44MnJlbTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMDg7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wbGF5ZXItc3RyaXBfX3RleHQgc21hbGwge1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC42NnJlbTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMTtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWFyZW5hIHtcbiAgICAgICAgb3JkZXI6IDQ7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC44NzVyZW07XG4gICAgICAgIGFsaWduLWl0ZW1zOiBzdGFydDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtaG93dG8sXG4gICAgICAuY2hlc3NpbWFscy10aXAsXG4gICAgICAuY2hlc3NpbWFscy1yZXN1bHQsXG4gICAgICAuY2hlc3NpbWFscy1yZXBsYXksXG4gICAgICAuY2hlc3NpbWFscy1yZW1hdGNoLXN0YXR1cyB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC4zNzVyZW07XG4gICAgICAgIHBhZGRpbmc6IDFyZW07XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEuMjVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtc29mdCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWhvd3RvIHtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY2hlc3NpbWFscy1ib3JkZXIpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLXNvZnQpO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtaG93dG8gcCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtaG93dG9fX2FjdGlvbnMge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgICAgIGdhcDogMC42MjVyZW07XG4gICAgICB9XG5cbiAgICAgIDpob3N0LWNvbnRleHQoaHRtbC5pb24tcGFsZXR0ZS1kYXJrKSAuY2hlc3NpbWFscy1ob3d0byxcbiAgICAgIDpob3N0LWNvbnRleHQoW2RhdGEtdGhlbWU9J2RhcmsnXSkgLmNoZXNzaW1hbHMtaG93dG8ge1xuICAgICAgICBib3JkZXItY29sb3I6IHJnYmEoMjQ2LCAyMjcsIDIxMywgMC4yKTtcbiAgICAgICAgYmFja2dyb3VuZDogIzE3MjExNjtcbiAgICAgICAgY29sb3I6ICNmNmYzZTk7XG4gICAgICB9XG5cbiAgICAgIDpob3N0LWNvbnRleHQoaHRtbC5pb24tcGFsZXR0ZS1kYXJrKSAuY2hlc3NpbWFscy1ob3d0byBwLFxuICAgICAgOmhvc3QtY29udGV4dChbZGF0YS10aGVtZT0nZGFyayddKSAuY2hlc3NpbWFscy1ob3d0byBwIHtcbiAgICAgICAgY29sb3I6ICNjOGNmYjE7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJlc3VsdCB7XG4gICAgICAgIG9yZGVyOiA1O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1yZXN1bHRfX3N0YXRzIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNCwgbWlubWF4KDAsIDFmcikpO1xuICAgICAgICBnYXA6IDAuNXJlbTtcbiAgICAgICAgbWFyZ2luLXRvcDogMC4zNXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcmVzdWx0X19zdGF0cyBzcGFuIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjE1cmVtO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTYpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwLjg1cmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjU4cmVtIDAuNnJlbTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjA4KSwgdHJhbnNwYXJlbnQpLFxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtcGFuZWwpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1yZXN1bHRfX3N0YXRzIHNtYWxsIHtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IDAuNjhyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA1ZW07XG4gICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1yZXN1bHRfX3N0YXRzIGIge1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgZm9udC1zaXplOiAwLjkycmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4xMjtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJlc3VsdF9fZGV0YWlsIHtcbiAgICAgICAgbWFyZ2luOiAwLjJyZW0gMCAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib3QtcmVwb3J0IHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBhdXRvIG1pbm1heCgwLCAxZnIpO1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDAuNzVyZW07XG4gICAgICAgIG1hcmdpbi10b3A6IDAuMzVyZW07XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTgpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxcmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjc4cmVtIDAuODVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xKSwgdHJhbnNwYXJlbnQpLFxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtcGFuZWwpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib3QtcmVwb3J0ID4gc3BhbiB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIHBsYWNlLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIHdpZHRoOiAyLjVyZW07XG4gICAgICAgIGhlaWdodDogMi41cmVtO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwLjg1cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2Vjb25kYXJ5LXJnYiksIDAuMTQpO1xuICAgICAgICBmb250LXNpemU6IDEuNDVyZW07XG4gICAgICAgIGJveC1zaGFkb3c6IGluc2V0IDAgMCAwIDFweCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjE0KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm90LXJlcG9ydCBkaXYge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuMTJyZW07XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm90LXJlcG9ydCBzbWFsbCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjcycmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wNmVtO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib3QtcmVwb3J0IHN0cm9uZyB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICBmb250LXNpemU6IDFyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjE1O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib3QtcmVwb3J0IHAge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjg0cmVtO1xuICAgICAgICBmb250LXdlaWdodDogODIwO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4yODtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtb25saW5lLXN0YXR1cyB7XG4gICAgICAgIG9yZGVyOiAzO1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDEuMzVyZW0gbWlubWF4KDAsIDFmcik7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogMC44NXJlbTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xOCk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEuMXJlbTtcbiAgICAgICAgcGFkZGluZzogMC44NXJlbSAwLjk1cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMDkpLCB0cmFuc3BhcmVudCksXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1wYW5lbCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLW9ubGluZS1zdGF0dXMgPiBzcGFuIHtcbiAgICAgICAganVzdGlmeS1zZWxmOiBjZW50ZXI7XG4gICAgICAgIHdpZHRoOiAwLjcycmVtO1xuICAgICAgICBoZWlnaHQ6IDAuNzJyZW07XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpO1xuICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAwLjM4cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTIpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1vbmxpbmUtc3RhdHVzLmlzLXN5bmNpbmcgPiBzcGFuIHtcbiAgICAgICAgYW5pbWF0aW9uOiBjaGVzc2ltYWxzLW9ubGluZS1wdWxzZSA5MDBtcyBlYXNlLWluLW91dCBpbmZpbml0ZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtb25saW5lLXN0YXR1cy5pcy1lcnJvciB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1pb24tY29sb3ItZGFuZ2VyLXJnYiwgMjM1LCA2OCwgOTApLCAwLjI4KTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWlvbi1jb2xvci1kYW5nZXItcmdiLCAyMzUsIDY4LCA5MCksIDAuMSksIHRyYW5zcGFyZW50KSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLXBhbmVsKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtb25saW5lLXN0YXR1cy5pcy1lcnJvciA+IHNwYW4ge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3ItZGFuZ2VyLCAjZWI0NDVhKTtcbiAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgMC4zOHJlbSByZ2JhKHZhcigtLWlvbi1jb2xvci1kYW5nZXItcmdiLCAyMzUsIDY4LCA5MCksIDAuMTIpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1vbmxpbmUtc3RhdHVzIGRpdiB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC4xMnJlbTtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1vbmxpbmUtc3RhdHVzIHN0cm9uZyB7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICBmb250LXNpemU6IDAuOTVyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1vbmxpbmUtc3RhdHVzIHAge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjg0cmVtO1xuICAgICAgICBmb250LXdlaWdodDogNzgwO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4yODtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc2VyaWVzIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjE4cmVtO1xuICAgICAgICBtYXJnaW4tdG9wOiAwLjM1cmVtO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjE4KTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMXJlbTtcbiAgICAgICAgcGFkZGluZzogMC43OHJlbSAwLjg1cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1zZWNvbmRhcnktcmdiKSwgMC4xMiksIHRyYW5zcGFyZW50KSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLXBhbmVsKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc2VyaWVzLS1jb21wYWN0IHtcbiAgICAgICAgbWFyZ2luLXRvcDogMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc2VyaWVzIHNtYWxsIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IDAuNzJyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA2ZW07XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXNlcmllcyBzdHJvbmcge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4xNTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc2VyaWVzIHNwYW4ge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44NHJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDgyMDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMjg7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJlcGxheSB7XG4gICAgICAgIG9yZGVyOiA1O1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IG1pbm1heCgwLCAxZnIpIGF1dG87XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogMC43NXJlbTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4yKTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjEpLCB0cmFuc3BhcmVudCksXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1wYW5lbCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJlcGxheSA+IGRpdjpmaXJzdC1jaGlsZCB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC4xNXJlbTtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1yZXBsYXkgc3Ryb25nIHtcbiAgICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1yZXBsYXkgc3BhbiB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjg2cmVtO1xuICAgICAgICBmb250LXdlaWdodDogODAwO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4yNTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcmVwbGF5X19hY3Rpb25zIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC13cmFwOiB3cmFwO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICAgICAgICBnYXA6IDAuNXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcmVwbGF5X19hY3Rpb25zIC5jaGVzc2ltYWxzLXNlY29uZGFyeSB7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDIuNXJlbTtcbiAgICAgICAgcGFkZGluZzogMCAwLjhyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXR1dG9yaWFsIHtcbiAgICAgICAgb3JkZXI6IDM7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogbWlubWF4KDAsIDFmcikgYXV0bztcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiAwLjc1cmVtO1xuICAgICAgICBwYWRkaW5nOiAxcmVtO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjI0KTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMS4yNXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjEzKSwgdHJhbnNwYXJlbnQpLFxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtcGFuZWwpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy10dXRvcmlhbCA+IGRpdiB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC4xOHJlbTtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy10dXRvcmlhbCBzbWFsbCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpO1xuICAgICAgICBmb250LXNpemU6IDAuNzZyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA2ZW07XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXR1dG9yaWFsIHN0cm9uZyB7XG4gICAgICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtdHV0b3JpYWwgcCB7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IDAuODhyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA3ODA7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjM1O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy10dXRvcmlhbCAuY2hlc3NpbWFscy1zZWNvbmRhcnkge1xuICAgICAgICBtaW4taGVpZ2h0OiAyLjVyZW07XG4gICAgICAgIHBhZGRpbmc6IDAgMC44NXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcmVtYXRjaC1zdGF0dXMge1xuICAgICAgICBvcmRlcjogNTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4yMik7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xMiksIHRyYW5zcGFyZW50KSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLXBhbmVsKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcmVtYXRjaC1zdGF0dXMuaXMtaW5jb21pbmcge1xuICAgICAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0taW9uLWNvbG9yLXN1Y2Nlc3MtcmdiLCA0NSwgMjExLCAxMTEpLCAwLjM4KTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWlvbi1jb2xvci1zdWNjZXNzLXJnYiwgNDUsIDIxMSwgMTExKSwgMC4xNCksIHRyYW5zcGFyZW50KSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLXBhbmVsKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcmVtYXRjaC1zdGF0dXMgc3Ryb25nIHtcbiAgICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1yZW1hdGNoLXN0YXR1cyBwIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44OHJlbTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMzU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJlbWF0Y2gtcGxheWVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjQ4KTtcbiAgICAgIH1cblxuICAgICAgOmhvc3QtY29udGV4dChodG1sLmlvbi1wYWxldHRlLWRhcmspIC5jaGVzc2ltYWxzLXJlbWF0Y2gtcGxheWVyLFxuICAgICAgOmhvc3QtY29udGV4dChbZGF0YS10aGVtZT0nZGFyayddKSAuY2hlc3NpbWFscy1yZW1hdGNoLXBsYXllciB7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNik7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJlbWF0Y2gtc3RhdHVzX19hY3Rpb25zIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcmVtYXRjaC1zdGF0dXNfX2FjdGlvbnMgLmNoZXNzaW1hbHMtc2Vjb25kYXJ5IHtcbiAgICAgICAgbWluLWhlaWdodDogMi41cmVtO1xuICAgICAgICBwYWRkaW5nOiAwIDAuOTVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWhvd3RvIGgyLFxuICAgICAgLmNoZXNzaW1hbHMtcG93ZXJzIGgyIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBmb250LXNpemU6IDEuMTVyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1jYXJkIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjg1cmVtO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2t5LXJnYiksIDAuMzQpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxLjI1cmVtO1xuICAgICAgICBwYWRkaW5nOiAxcmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1za3ktcmdiKSwgMC4xOCksIHRyYW5zcGFyZW50IDU0JSksXG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDE4MGRlZywgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjYyKSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjIpKSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLXBhbmVsKTtcbiAgICAgICAgYm94LXNoYWRvdzogMCAxcmVtIDIuMnJlbSByZ2JhKDc5LCA1OCwgMzUsIDAuMTIpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtY2FyZF9fY29weSB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC4yOHJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWNhcmRfX2NvcHkgc3BhbixcbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1zdW1tYXJ5IHNtYWxsIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtc2t5KTtcbiAgICAgICAgZm9udC1zaXplOiAwLjcycmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wOGVtO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtY2FyZCBoMiB7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgZm9udC1zaXplOiBjbGFtcCgxLjI1cmVtLCAzLjV2dywgMS45cmVtKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDEwMDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1jYXJkIHAsXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2Utc3VtbWFyeSBwIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC45NXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDc4MDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMzU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1jYXJkX19zdGF0cyB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDMsIG1pbm1heCgwLCAxZnIpKTtcbiAgICAgICAgZ2FwOiAwLjVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1yaXZhbCB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogYXV0byBtaW5tYXgoMCwgMWZyKTtcbiAgICAgICAgZ2FwOiAwLjdyZW07XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTgpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxcmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjdyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41NCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1yaXZhbCA+IHNwYW4ge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgICAgICB3aWR0aDogMi42NXJlbTtcbiAgICAgICAgaGVpZ2h0OiAyLjY1cmVtO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xMik7XG4gICAgICAgIGZvbnQtc2l6ZTogMS40NXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXJpdmFsIGRpdiB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC4xNHJlbTtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2Utcml2YWwgc21hbGwsXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtaGlzdG9yeSBzbWFsbCxcbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1zdW1tYXJ5X19zdGF0cyBzbWFsbCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjY2cmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTAwO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2Utcml2YWwgc3Ryb25nIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDEwMDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1yaXZhbCBwIHtcbiAgICAgICAgZm9udC1zaXplOiAwLjg0cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2Utcml2YWwtLW5leHQge1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjA4KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWNhcmRfX3N0YXRzIHNwYW4ge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuMTZyZW07XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTYpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwLjk1cmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjU1cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNTIpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtY2FyZF9fc3RhdHMgc21hbGwge1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC42NnJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDkwMDtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWNhcmRfX3N0YXRzIHN0cm9uZyB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICBmb250LXNpemU6IDEuMXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDEwMDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1jYXJkX19hY3Rpb25zIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjU1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtcGF0aCB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICAgICAgZ2FwOiAwLjRyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1wYXRoIHNwYW4ge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgICAgICB3aWR0aDogMi4xNXJlbTtcbiAgICAgICAgaGVpZ2h0OiAyLjE1cmVtO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjE4KTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC42Mik7XG4gICAgICAgIGZvbnQtc2l6ZTogMS4wOHJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXBhdGggc3Bhbi5pcy1jbGVhcmVkIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLWlvbi1jb2xvci1zdWNjZXNzLXJnYiwgNDUsIDIxMSwgMTExKSwgMC4zNCk7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0taW9uLWNvbG9yLXN1Y2Nlc3MtcmdiLCA0NSwgMjExLCAxMTEpLCAwLjE2KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXBhdGggc3Bhbi5pcy1jdXJyZW50IHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2t5LXJnYiksIDAuNDgpO1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2t5LXJnYiksIDAuMTgpO1xuICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAycHggcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNreS1yZ2IpLCAwLjEyKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWhpc3Rvcnkge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuMzVyZW07XG4gICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjEyKTtcbiAgICAgICAgcGFkZGluZy10b3A6IDAuMnJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWhpc3Rvcnkgc3BhbiB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICAgICAgZ2FwOiAwLjM1cmVtO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44MnJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDgyMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLWhpc3RvcnkgYiB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICBmb250LXdlaWdodDogMTAwMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXN1bW1hcnkge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuNDVyZW07XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1za3ktcmdiKSwgMC4yNCk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDFyZW07XG4gICAgICAgIHBhZGRpbmc6IDAuOHJlbTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2t5LXJnYiksIDAuMTIpLCB0cmFuc3BhcmVudCksXG4gICAgICAgICAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjQyKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXN1bW1hcnkgc3Ryb25nIHtcbiAgICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgICAgICBmb250LXdlaWdodDogMTAwMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2hhbGxlbmdlLXN1bW1hcnlfX3N0YXRzIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMywgbWlubWF4KDAsIDFmcikpO1xuICAgICAgICBnYXA6IDAuNDVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNoYWxsZW5nZS1yZWNvcmQge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDAuNDVyZW07XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1za3ktcmdiKSwgMC4zNCk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBwYWRkaW5nOiAwLjQ1cmVtIDAuNjVyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tY2hlc3NpbWFscy1za3ktcmdiKSwgMC4xNCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtcmVjb3JkIHNwYW4ge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgICAgICB3aWR0aDogMS40NXJlbTtcbiAgICAgICAgaGVpZ2h0OiAxLjQ1cmVtO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1za3kpO1xuICAgICAgICBjb2xvcjogI2ZmZmFmMDtcbiAgICAgICAgZm9udC1zaXplOiAwLjgycmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2UtcmVjb3JkIHN0cm9uZyB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC45cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2Utc3VtbWFyeV9fc3RhdHMgc3BhbiB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC4xcmVtO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjEyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMC44cmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjQ1cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNDQpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jaGFsbGVuZ2Utc3VtbWFyeV9fc3RhdHMgYiB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICBmb250LXNpemU6IDFyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiAxMDAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy10aXAgcCxcbiAgICAgIC5jaGVzc2ltYWxzLXBvd2VycyBwIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1sZWFybi1tb3JlIHtcbiAgICAgICAganVzdGlmeS1zZWxmOiBzdGFydDtcbiAgICAgICAgbWluLWhlaWdodDogMi43NXJlbTtcbiAgICAgICAgYm9yZGVyOiAwO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgcGFkZGluZzogMCAxcmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LWNvbnRyYXN0KTtcbiAgICAgICAgZm9udDogaW5oZXJpdDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgYm94LXNoYWRvdzogMCAwLjc1cmVtIDEuNnJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjI4KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc2l6ZSxcbiAgICAgIC5jaGVzc2ltYWxzLW1vZGUsXG4gICAgICAuY2hlc3NpbWFscy1zdGF0dXMge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCBtaW5tYXgoMCwgMWZyKSk7XG4gICAgICAgIGdhcDogMC42MjVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXN0YXR1cyB7XG4gICAgICAgIG9yZGVyOiAzO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgzLCBtaW5tYXgoMCwgMWZyKSk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXNpemUgYnV0dG9uLFxuICAgICAgLmNoZXNzaW1hbHMtbW9kZSBidXR0b24sXG4gICAgICAuY2hlc3NpbWFscy1zdGF0dXMgZGl2IHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjJyZW07XG4gICAgICAgIGFsaWduLWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgICBtaW4taGVpZ2h0OiAzLjg3NXJlbTtcbiAgICAgICAgcGFkZGluZzogMC41NXJlbSAwLjY1cmVtO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jaGVzc2ltYWxzLWJvcmRlcik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDFyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtcGFuZWwpO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy10ZXh0KTtcbiAgICAgICAgZm9udDogaW5oZXJpdDtcbiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc2l6ZSBidXR0b24uaXMtc2VsZWN0ZWQge1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeSk7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDJweCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjE2KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtbW9kZSBidXR0b24uaXMtc2VsZWN0ZWQge1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeSk7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xMyksIHRyYW5zcGFyZW50KSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLXBhbmVsKTtcbiAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgMnB4IHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTYpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1kaWZmaWN1bHR5IHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC13cmFwOiB3cmFwO1xuICAgICAgICBnYXA6IDAuNTVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWRpZmZpY3VsdHkgYnV0dG9uIHtcbiAgICAgICAgbWluLWhlaWdodDogMi43NXJlbTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY2hlc3NpbWFscy1ib3JkZXIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgcGFkZGluZzogMCAxcmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLXBhbmVsKTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIGZvbnQ6IGluaGVyaXQ7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWRpZmZpY3VsdHkgYnV0dG9uLmlzLXNlbGVjdGVkIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpO1xuICAgICAgICBjb2xvcjogI2ZmZjtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm90cyB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZml0LCBtaW5tYXgoOS41cmVtLCAxZnIpKTtcbiAgICAgICAgZ2FwOiAwLjYyNXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm90cyBidXR0b24ge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IGF1dG8gMWZyO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWFyZWFzOlxuICAgICAgICAgICdhdmF0YXIgdGl0bGUnXG4gICAgICAgICAgJ2F2YXRhciBib2R5J1xuICAgICAgICAgICdhdmF0YXIgdGVuZGVuY3knO1xuICAgICAgICBjb2x1bW4tZ2FwOiAwLjU1cmVtO1xuICAgICAgICByb3ctZ2FwOiAwLjEycmVtO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDQuNzVyZW07XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNoZXNzaW1hbHMtYm9yZGVyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMXJlbTtcbiAgICAgICAgcGFkZGluZzogMC42NXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1wYW5lbCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgICBmb250OiBpbmhlcml0O1xuICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib3RzIGJ1dHRvbiA+IHNwYW4ge1xuICAgICAgICBncmlkLWFyZWE6IGF2YXRhcjtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgcGxhY2UtaXRlbXM6IGNlbnRlcjtcbiAgICAgICAgd2lkdGg6IDIuMXJlbTtcbiAgICAgICAgaGVpZ2h0OiAyLjFyZW07XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xMik7XG4gICAgICAgIGZvbnQtc2l6ZTogMS4ycmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib3RzIGJ1dHRvbiBzdHJvbmcge1xuICAgICAgICBncmlkLWFyZWE6IHRpdGxlO1xuICAgICAgICBhbGlnbi1zZWxmOiBlbmQ7XG4gICAgICAgIGZvbnQtc2l6ZTogMC45NXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm90cyBidXR0b24gc21hbGwge1xuICAgICAgICBncmlkLWFyZWE6IGJvZHk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjc1cmVtO1xuICAgICAgICBmb250LXdlaWdodDogNzUwO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4yNTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm90cyBidXR0b24gcCB7XG4gICAgICAgIGdyaWQtYXJlYTogdGVuZGVuY3k7XG4gICAgICAgIG1hcmdpbjogMC4xMnJlbSAwIDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjcycmVtO1xuICAgICAgICBmb250LXdlaWdodDogODIwO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4yNDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm90cyBidXR0b24uaXMtc2VsZWN0ZWQge1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeSk7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xMyksIHRyYW5zcGFyZW50KSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLXBhbmVsKTtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICAwIDAgMCAycHggcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xNiksXG4gICAgICAgICAgMCAwLjc1cmVtIDEuNXJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjEpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1zaXplIHN0cm9uZyxcbiAgICAgIC5jaGVzc2ltYWxzLW1vZGUgc3Ryb25nLFxuICAgICAgLmNoZXNzaW1hbHMtc3RhdHVzIHN0cm9uZyxcbiAgICAgIC5jaGVzc2ltYWxzLXJlc3VsdCBzdHJvbmcsXG4gICAgICAuY2hlc3NpbWFscy1yZW1hdGNoLXN0YXR1cyBzdHJvbmcsXG4gICAgICAuY2hlc3NpbWFscy10aXAgc3Ryb25nIHtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc3RhdHVzIHN0cm9uZyB7XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgICAgZm9udC1zaXplOiBjbGFtcCgwLjk1cmVtLCAyLjV2dywgMS4ycmVtKTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMDg7XG4gICAgICAgIG92ZXJmbG93LXdyYXA6IGFueXdoZXJlO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm9ybWFsO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1zaXplIHNtYWxsLFxuICAgICAgLmNoZXNzaW1hbHMtbW9kZSBzbWFsbCxcbiAgICAgIC5jaGVzc2ltYWxzLXN0YXR1cyBzbWFsbCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW11dGVkKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjc4cmVtO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4xMjtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm9hcmQtd3JhcCB7XG4gICAgICAgIC0tY2hlc3NpbWFscy1ib2FyZC1yYWRpdXM6IG1pbigwLjg1cmVtLCAxNHB4KTtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgICAgICBvdmVyZmxvdy14OiBhdXRvO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgcGFkZGluZzogMC4yNXJlbSAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC13cmFwLmlzLW9yaWVudGluZyAuY2hlc3NpbWFscy1ib2FyZC1mcmFtZSB7XG4gICAgICAgIGFuaW1hdGlvbjogY2hlc3NpbWFscy1vcmllbnQtYm9hcmQgMzIwbXMgZWFzZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm9hcmQtd3JhcC5pcy1maW5pc2hlZCB7XG4gICAgICAgIG92ZXJmbG93LXg6IHZpc2libGU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvYXJkLWZyYW1lIHtcbiAgICAgICAgZmxleDogMCAxIDU4cmVtO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBtYXgtd2lkdGg6IDU4cmVtO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1jaGVzc2ltYWxzLWJvYXJkLXJhZGl1cyk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvYXJkIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCh2YXIoLS1ib2FyZC1zaXplKSwgbWlubWF4KDAsIDFmcikpO1xuICAgICAgICBncmlkLXRlbXBsYXRlLXJvd3M6IHJlcGVhdCh2YXIoLS1ib2FyZC1zaXplKSwgbWlubWF4KDAsIDFmcikpO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBhc3BlY3QtcmF0aW86IDEgLyAxO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBpc29sYXRpb246IGlzb2xhdGU7XG4gICAgICAgIGNvbnRhaW46IHBhaW50O1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jaGVzc2ltYWxzLWJvcmRlcik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLWNoZXNzaW1hbHMtYm9hcmQtcmFkaXVzKTtcbiAgICAgICAgY2xpcC1wYXRoOiBpbnNldCgwIHJvdW5kIHZhcigtLWNoZXNzaW1hbHMtYm9hcmQtcmFkaXVzKSk7XG4gICAgICAgIC13ZWJraXQtbWFzay1pbWFnZTogLXdlYmtpdC1yYWRpYWwtZ3JhZGllbnQod2hpdGUsIGJsYWNrKTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoZWxsaXBzZSBhdCAxNiUgMTglLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMzQpLCB0cmFuc3BhcmVudCAxOCUpLFxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChlbGxpcHNlIGF0IDgyJSA3OCUsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMSksIHRyYW5zcGFyZW50IDIyJSksXG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGVsbGlwc2UgYXQgMzIlIDY4JSwgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXN0b25lLXJnYiksIDAuMDUpLCB0cmFuc3BhcmVudCAzMCUpLFxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChlbGxpcHNlIGF0IDY2JSAzNCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wOCksIHRyYW5zcGFyZW50IDI0JSksXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1ib3JkZXIpO1xuICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgIGluc2V0IDAgMCAwIDFweCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSksXG4gICAgICAgICAgMCAwLjg1cmVtIDIuMXJlbSB2YXIoLS1jaGVzc2ltYWxzLWJvYXJkLXNoYWRvdyk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvYXJkLXdyYXAuaXMtc3luY2luZyAuY2hlc3NpbWFscy1ib2FyZCB7XG4gICAgICAgIGN1cnNvcjogd2FpdDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbC1jb29yZGluYXRlIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB6LWluZGV4OiA1O1xuICAgICAgICBjb2xvcjogY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpIDc4JSwgdmFyKC0tY2hlc3NpbWFscy10ZXh0KSk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC42OHJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDJlbTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbC1jb29yZGluYXRlLS1yYW5rIHtcbiAgICAgICAgdG9wOiAwLjJyZW07XG4gICAgICAgIGxlZnQ6IDAuMjRyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwtY29vcmRpbmF0ZS0tZmlsZSB7XG4gICAgICAgIHJpZ2h0OiAwLjI0cmVtO1xuICAgICAgICBib3R0b206IDAuMThyZW07XG4gICAgICB9XG5cbiAgICAgIEBrZXlmcmFtZXMgY2hlc3NpbWFscy1vcmllbnQtYm9hcmQge1xuICAgICAgICAwJSB7XG4gICAgICAgICAgb3BhY2l0eTogMC43MjtcbiAgICAgICAgICBmaWx0ZXI6IGJsdXIoMC4wNnJlbSk7XG4gICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgwLjk4NSk7XG4gICAgICAgIH1cblxuICAgICAgICA1MiUge1xuICAgICAgICAgIG9wYWNpdHk6IDAuOTI7XG4gICAgICAgICAgZmlsdGVyOiBibHVyKDApO1xuICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMS4wMTIpO1xuICAgICAgICB9XG5cbiAgICAgICAgMTAwJSB7XG4gICAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgICBmaWx0ZXI6IGJsdXIoMCk7XG4gICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZW50ZXItbGluZSB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiA1MCU7XG4gICAgICAgIGxlZnQ6IDA7XG4gICAgICAgIHJpZ2h0OiAwO1xuICAgICAgICB6LWluZGV4OiAyO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgYm9yZGVyLXRvcDogMC4wOHJlbSBkYXNoZWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC41Nik7XG4gICAgICAgIGZpbHRlcjogZHJvcC1zaGFkb3coMCAwIDAuMjRyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4yNikpO1xuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcG93ZXItdHJhaWwge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGluc2V0OiAwO1xuICAgICAgICB6LWluZGV4OiA1O1xuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgICAgLS10cmFpbC1jb2xvcjogcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDAuODgpO1xuICAgICAgICAtLXRyYWlsLWdsb3c6IHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1yZ2IpLCAwLjQ4KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcG93ZXItdHJhaWwuaXMtY2FwdHVyZSB7XG4gICAgICAgIC0tdHJhaWwtY29sb3I6IHJnYmEodmFyKC0tY2hlc3NpbWFscy1jYXB0dXJlLXJnYiksIDAuODYpO1xuICAgICAgICAtLXRyYWlsLWdsb3c6IHJnYmEodmFyKC0tY2hlc3NpbWFscy1jYXB0dXJlLXJnYiksIDAuNDYpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wb3dlci10cmFpbC5lZmZlY3QtZWFnbGUge1xuICAgICAgICAtLXRyYWlsLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOTIpO1xuICAgICAgICAtLXRyYWlsLWdsb3c6IHJnYmEoMTIwLCAyMTAsIDI1NSwgMC41NCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBvd2VyLXRyYWlsLmVmZmVjdC1idWxsIHtcbiAgICAgICAgLS10cmFpbC1jb2xvcjogcmdiYSgxODgsIDEzMSwgNzYsIDAuODYpO1xuICAgICAgICAtLXRyYWlsLWdsb3c6IHJnYmEoMTg4LCAxMzEsIDc2LCAwLjM2KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcG93ZXItdHJhaWwuZWZmZWN0LWthbmdhcm9vIHtcbiAgICAgICAgLS10cmFpbC1jb2xvcjogcmdiYSgxNzQsIDEyNCwgMjU1LCAwLjg2KTtcbiAgICAgICAgLS10cmFpbC1nbG93OiByZ2JhKDE3NCwgMTI0LCAyNTUsIDAuNDIpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wb3dlci10cmFpbC5lZmZlY3QtbGlvbiB7XG4gICAgICAgIC0tdHJhaWwtY29sb3I6IHJnYmEoMjU1LCAyMjEsIDEyMCwgMC44OCk7XG4gICAgICAgIC0tdHJhaWwtZ2xvdzogcmdiYSgyNTUsIDE5MCwgNTYsIDAuNDIpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wb3dlci10cmFpbCA+IHNwYW4ge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogdmFyKC0tdHJhaWwteSk7XG4gICAgICAgIGxlZnQ6IHZhcigtLXRyYWlsLXgpO1xuICAgICAgICB3aWR0aDogdmFyKC0tdHJhaWwtbGVuZ3RoKTtcbiAgICAgICAgaGVpZ2h0OiAwLjQ1cmVtO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDkwZGVnLCB0cmFuc3BhcmVudCwgdmFyKC0tdHJhaWwtY29sb3IpIDQyJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjkyKSk7XG4gICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgMCAwIDAuNzVyZW0gdmFyKC0tdHJhaWwtZ2xvdyksXG4gICAgICAgICAgMCAwIDEuNDVyZW0gdmFyKC0tdHJhaWwtZ2xvdyk7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKSByb3RhdGUodmFyKC0tdHJhaWwtYW5nbGUpKSBzY2FsZVgoMCk7XG4gICAgICAgIHRyYW5zZm9ybS1vcmlnaW46IDAgNTAlO1xuICAgICAgICBhbmltYXRpb246IGNoZXNzaW1hbHMtcG93ZXItdHJhaWwgNzIwbXMgZWFzZS1vdXQgYm90aDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcG93ZXItdHJhaWwuZWZmZWN0LWVhZ2xlID4gc3BhbiB7XG4gICAgICAgIGhlaWdodDogMC4yOHJlbTtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoOTBkZWcsIHRyYW5zcGFyZW50LCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOTUpIDQ0JSwgcmdiYSgxMjAsIDIxMCwgMjU1LCAwLjU4KSksXG4gICAgICAgICAgcmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCg5MGRlZywgdHJhbnNwYXJlbnQgMCAwLjdyZW0sIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC42NikgMC43cmVtIDAuOTJyZW0pO1xuICAgICAgICBhbmltYXRpb24tbmFtZTogY2hlc3NpbWFscy1lYWdsZS10cmFpbDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcG93ZXItdHJhaWwuZWZmZWN0LWJ1bGwgPiBzcGFuIHtcbiAgICAgICAgaGVpZ2h0OiAwLjcycmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQoOTBkZWcsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC40MikgMCAwLjE4cmVtLCB0cmFuc3BhcmVudCAwLjE4cmVtIDAuNDJyZW0pLFxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCg5MGRlZywgdHJhbnNwYXJlbnQsIHZhcigtLXRyYWlsLWNvbG9yKSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjg2KSk7XG4gICAgICAgIGFuaW1hdGlvbi1uYW1lOiBjaGVzc2ltYWxzLWJ1bGwtdHJhaWw7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBvd2VyLXRyYWlsLmVmZmVjdC1rYW5nYXJvbyA+IHNwYW4ge1xuICAgICAgICBoZWlnaHQ6IDFyZW07XG4gICAgICAgIGJvcmRlci10b3A6IDAuMTZyZW0gZGFzaGVkIHZhcigtLXRyYWlsLWNvbG9yKTtcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgICAgIGZpbHRlcjogZHJvcC1zaGFkb3coMCAwIDAuOHJlbSB2YXIoLS10cmFpbC1nbG93KSk7XG4gICAgICAgIGFuaW1hdGlvbi1uYW1lOiBjaGVzc2ltYWxzLWthbmdhcm9vLXRyYWlsO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wb3dlci10cmFpbC5lZmZlY3QtbGlvbiA+IHNwYW4ge1xuICAgICAgICBoZWlnaHQ6IDAuNjJyZW07XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDkwZGVnLCB0cmFuc3BhcmVudCwgdmFyKC0tdHJhaWwtY29sb3IpLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuODIpKSxcbiAgICAgICAgICByZXBlYXRpbmctbGluZWFyLWdyYWRpZW50KDExNWRlZywgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjU1KSAwIDAuMTJyZW0sIHRyYW5zcGFyZW50IDAuMTJyZW0gMC4zNHJlbSk7XG4gICAgICAgIGFuaW1hdGlvbi1uYW1lOiBjaGVzc2ltYWxzLWxpb24tdHJhaWw7XG4gICAgICB9XG5cbiAgICAgIEBrZXlmcmFtZXMgY2hlc3NpbWFscy1wb3dlci10cmFpbCB7XG4gICAgICAgIDAlIHtcbiAgICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKSByb3RhdGUodmFyKC0tdHJhaWwtYW5nbGUpKSBzY2FsZVgoMCk7XG4gICAgICAgIH1cblxuICAgICAgICAyOCUge1xuICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpIHJvdGF0ZSh2YXIoLS10cmFpbC1hbmdsZSkpIHNjYWxlWCgwLjcyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIDEwMCUge1xuICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpIHJvdGF0ZSh2YXIoLS10cmFpbC1hbmdsZSkpIHNjYWxlWCgxKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIGNoZXNzaW1hbHMtZWFnbGUtdHJhaWwge1xuICAgICAgICAwJSB7XG4gICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgcm90YXRlKHZhcigtLXRyYWlsLWFuZ2xlKSkgc2NhbGVYKDApIHNrZXdYKC0xMGRlZyk7XG4gICAgICAgIH1cblxuICAgICAgICAzMCUge1xuICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpIHJvdGF0ZSh2YXIoLS10cmFpbC1hbmdsZSkpIHNjYWxlWCgwLjgyKSBza2V3WCgtMTBkZWcpO1xuICAgICAgICB9XG5cbiAgICAgICAgMTAwJSB7XG4gICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgcm90YXRlKHZhcigtLXRyYWlsLWFuZ2xlKSkgc2NhbGVYKDEuMDUpIHNrZXdYKC0xMGRlZyk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBjaGVzc2ltYWxzLWJ1bGwtdHJhaWwge1xuICAgICAgICAwJSB7XG4gICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgcm90YXRlKHZhcigtLXRyYWlsLWFuZ2xlKSkgc2NhbGVYKDApIHNjYWxlWSgxKTtcbiAgICAgICAgfVxuXG4gICAgICAgIDM4JSB7XG4gICAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgcm90YXRlKHZhcigtLXRyYWlsLWFuZ2xlKSkgc2NhbGVYKDAuNykgc2NhbGVZKDEuMTgpO1xuICAgICAgICB9XG5cbiAgICAgICAgMTAwJSB7XG4gICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgcm90YXRlKHZhcigtLXRyYWlsLWFuZ2xlKSkgc2NhbGVYKDEpIHNjYWxlWSgwLjgyKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIGNoZXNzaW1hbHMta2FuZ2Fyb28tdHJhaWwge1xuICAgICAgICAwJSB7XG4gICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTAuNHJlbSkgcm90YXRlKHZhcigtLXRyYWlsLWFuZ2xlKSkgc2NhbGVYKDApO1xuICAgICAgICB9XG5cbiAgICAgICAgMzQlIHtcbiAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMS4ycmVtKSByb3RhdGUodmFyKC0tdHJhaWwtYW5nbGUpKSBzY2FsZVgoMC42Mik7XG4gICAgICAgIH1cblxuICAgICAgICAxMDAlIHtcbiAgICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKSByb3RhdGUodmFyKC0tdHJhaWwtYW5nbGUpKSBzY2FsZVgoMSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBjaGVzc2ltYWxzLWxpb24tdHJhaWwge1xuICAgICAgICAwJSB7XG4gICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgICBmaWx0ZXI6IHNhdHVyYXRlKDEpO1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKSByb3RhdGUodmFyKC0tdHJhaWwtYW5nbGUpKSBzY2FsZVgoMCk7XG4gICAgICAgIH1cblxuICAgICAgICAzNiUge1xuICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgICAgZmlsdGVyOiBzYXR1cmF0ZSgxLjQpO1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKSByb3RhdGUodmFyKC0tdHJhaWwtYW5nbGUpKSBzY2FsZVgoMC43Nik7XG4gICAgICAgIH1cblxuICAgICAgICAxMDAlIHtcbiAgICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICAgIGZpbHRlcjogc2F0dXJhdGUoMS4xKTtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgcm90YXRlKHZhcigtLXRyYWlsLWFuZ2xlKSkgc2NhbGVYKDEpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvYXJkLW92ZXJsYXkge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGluc2V0OiAwO1xuICAgICAgICB6LWluZGV4OiA4O1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBwbGFjZS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIGdhcDogMC41cmVtO1xuICAgICAgICBwYWRkaW5nOiAxLjI1cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgNTAlIDM0JSwgcmdiYSgyNTUsIDIyNiwgMTI5LCAwLjM0KSwgdHJhbnNwYXJlbnQgMjQlKSxcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDUwJSA1MiUsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMzQpLCB0cmFuc3BhcmVudCA0MiUpLFxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEoMjAsIDEyLCAyMiwgMC44OCksIHJnYmEoOCwgMTgsIDEzLCAwLjc4KSk7XG4gICAgICAgIGNvbG9yOiAjZmZmO1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigycHgpO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5LmlzLWRlZmVhdCB7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCA1MCUgMzQlLCByZ2JhKDE0MywgMTY4LCAyMDYsIDAuMjYpLCB0cmFuc3BhcmVudCAyNCUpLFxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgNTAlIDUyJSwgcmdiYSg3MiwgODYsIDExNSwgMC40MiksIHRyYW5zcGFyZW50IDQyJSksXG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSg5LCAxMiwgMjAsIDAuOSksIHJnYmEoMjgsIDMwLCA0MywgMC44KSk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvYXJkLW92ZXJsYXk6OmJlZm9yZSB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgaW5zZXQ6IDA7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCAyMCUgMzAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNTgpIDAgMC4wOHJlbSwgdHJhbnNwYXJlbnQgMC4xcmVtKSxcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDc1JSAyNSUsIHJnYmEoMjU1LCAyMjYsIDEyOSwgMC43KSAwIDAuMXJlbSwgdHJhbnNwYXJlbnQgMC4xMnJlbSksXG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCA2OCUgNzIlLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2IpLCAwLjU0KSAwIDAuMDhyZW0sIHRyYW5zcGFyZW50IDAuMXJlbSksXG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCAzNSUgNzglLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNDgpIDAgMC4wN3JlbSwgdHJhbnNwYXJlbnQgMC4wOXJlbSksXG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCA4NCUgNjYlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMzgpIDAgMC4wNnJlbSwgdHJhbnNwYXJlbnQgMC4wOHJlbSksXG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCAxNCUgNjQlLCByZ2JhKDI1NSwgMjI2LCAxMjksIDAuNDgpIDAgMC4wN3JlbSwgdHJhbnNwYXJlbnQgMC4wOXJlbSk7XG4gICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICBvcGFjaXR5OiAwLjcyO1xuICAgICAgICBhbmltYXRpb246IGNoZXNzaW1hbHMtdmljdG9yeS1zcGFya3MgMS41cyBlYXNlLWluLW91dCBpbmZpbml0ZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm9hcmQtb3ZlcmxheV9fcmF5cyB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgaW5zZXQ6IC0xOCU7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgY29uaWMtZ3JhZGllbnQoXG4gICAgICAgICAgICBmcm9tIDhkZWcsXG4gICAgICAgICAgICB0cmFuc3BhcmVudCAwIDdkZWcsXG4gICAgICAgICAgICByZ2JhKDI1NSwgMjI2LCAxMjksIDAuMTYpIDdkZWcgMTFkZWcsXG4gICAgICAgICAgICB0cmFuc3BhcmVudCAxMWRlZyAyMmRlZ1xuICAgICAgICAgICk7XG4gICAgICAgIG9wYWNpdHk6IDAuODU7XG4gICAgICAgIGFuaW1hdGlvbjogY2hlc3NpbWFscy1maW5hbGUtcmF5cyA4cyBsaW5lYXIgaW5maW5pdGU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvYXJkLW92ZXJsYXkuaXMtZGVmZWF0IC5jaGVzc2ltYWxzLWJvYXJkLW92ZXJsYXlfX3JheXMge1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIGNvbmljLWdyYWRpZW50KFxuICAgICAgICAgICAgZnJvbSA4ZGVnLFxuICAgICAgICAgICAgdHJhbnNwYXJlbnQgMCA4ZGVnLFxuICAgICAgICAgICAgcmdiYSgxODAsIDIwNCwgMjQwLCAwLjEpIDhkZWcgMTJkZWcsXG4gICAgICAgICAgICB0cmFuc3BhcmVudCAxMmRlZyAyNGRlZ1xuICAgICAgICAgICk7XG4gICAgICAgIGFuaW1hdGlvbi1kdXJhdGlvbjogMTJzO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5X19yaWJib24ge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogLTIwJTtcbiAgICAgICAgd2lkdGg6IDAuNDJyZW07XG4gICAgICAgIGhlaWdodDogNTQlO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgdHJhbnNwYXJlbnQsIHJnYmEoMjU1LCAyMjYsIDEyOSwgMC43MiksIHRyYW5zcGFyZW50KTtcbiAgICAgICAgb3BhY2l0eTogMC43O1xuICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSh2YXIoLS1yaWJib24tYW5nbGUsIDEyZGVnKSk7XG4gICAgICAgIGFuaW1hdGlvbjogY2hlc3NpbWFscy1maW5hbGUtcmliYm9uIDIuNXMgZWFzZS1pbi1vdXQgaW5maW5pdGU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvYXJkLW92ZXJsYXkuaXMtZGVmZWF0IC5jaGVzc2ltYWxzLWJvYXJkLW92ZXJsYXlfX3JpYmJvbiB7XG4gICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sIHRyYW5zcGFyZW50LCByZ2JhKDE4MCwgMjA0LCAyNDAsIDAuNDIpLCB0cmFuc3BhcmVudCk7XG4gICAgICAgIG9wYWNpdHk6IDAuNDg7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvYXJkLW92ZXJsYXlfX3JpYmJvbi5yaWJib24tYSB7XG4gICAgICAgIGxlZnQ6IDE4JTtcbiAgICAgICAgLS1yaWJib24tYW5nbGU6IC0xOGRlZztcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm9hcmQtb3ZlcmxheV9fcmliYm9uLnJpYmJvbi1iIHtcbiAgICAgICAgbGVmdDogNTAlO1xuICAgICAgICAtLXJpYmJvbi1hbmdsZTogOGRlZztcbiAgICAgICAgYW5pbWF0aW9uLWRlbGF5OiAzMjBtcztcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm9hcmQtb3ZlcmxheV9fcmliYm9uLnJpYmJvbi1jIHtcbiAgICAgICAgcmlnaHQ6IDE4JTtcbiAgICAgICAgLS1yaWJib24tYW5nbGU6IDIwZGVnO1xuICAgICAgICBhbmltYXRpb24tZGVsYXk6IDY0MG1zO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5ID4gKiB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgei1pbmRleDogMTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm9hcmQtb3ZlcmxheSBzcGFuIHtcbiAgICAgICAganVzdGlmeS1zZWxmOiBjZW50ZXI7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBwYWRkaW5nOiAwLjMycmVtIDAuN3JlbTtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KTtcbiAgICAgICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45KTtcbiAgICAgICAgZm9udC1zaXplOiAwLjc2cmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wOGVtO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5IHN0cm9uZyB7XG4gICAgICAgIGZvbnQtc2l6ZTogY2xhbXAoMS42NXJlbSwgOHZ3LCAzcmVtKTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIHRleHQtc2hhZG93OiAwIDAgMS4yNXJlbSByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMjYpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5IGVtIHtcbiAgICAgICAganVzdGlmeS1zZWxmOiBjZW50ZXI7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIHBsYWNlLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIHdpZHRoOiBjbGFtcCgzcmVtLCAxNHZ3LCA0LjZyZW0pO1xuICAgICAgICBoZWlnaHQ6IGNsYW1wKDNyZW0sIDE0dncsIDQuNnJlbSk7XG4gICAgICAgIGJvcmRlcjogMC4xNnJlbSBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNjIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCAzNSUgMjUlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNzIpLCB0cmFuc3BhcmVudCAxOCUpLFxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICNmZmUyODEsICNiOTg0MzYpO1xuICAgICAgICBjb2xvcjogIzJkMjQxMjtcbiAgICAgICAgZm9udC1zaXplOiBjbGFtcCgxLjFyZW0sIDV2dywgMS42NXJlbSk7XG4gICAgICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICAwIDAgMCAwLjQ1cmVtIHJnYmEoMjU1LCAyMjYsIDEyOSwgMC4xMiksXG4gICAgICAgICAgMCAxcmVtIDJyZW0gcmdiYSgwLCAwLCAwLCAwLjI2KTtcbiAgICAgICAgYW5pbWF0aW9uOiBjaGVzc2ltYWxzLWZpbmFsZS1tZWRhbCAxLjhzIGVhc2UtaW4tb3V0IGluZmluaXRlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5LmlzLWRlZmVhdCBlbSB7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCAzNSUgMjUlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNDgpLCB0cmFuc3BhcmVudCAxOCUpLFxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICNkOWUyZWYsICM2OTc1OGUpO1xuICAgICAgICBjb2xvcjogIzE4MjAzMjtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICAwIDAgMCAwLjQ1cmVtIHJnYmEoMTgwLCAyMDQsIDI0MCwgMC4xKSxcbiAgICAgICAgICAwIDFyZW0gMnJlbSByZ2JhKDAsIDAsIDAsIDAuMzIpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5IGVtLmhhcy1hdmF0YXIge1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBiYWNrZ3JvdW5kOiAjZmZmZmZmO1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5IGVtLmhhcy1hdmF0YXIgaW1nIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIG9iamVjdC1maXQ6IGNvdmVyO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5IGIge1xuICAgICAgICBqdXN0aWZ5LXNlbGY6IGNlbnRlcjtcbiAgICAgICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44KTtcbiAgICAgICAgZm9udC1zaXplOiAwLjhyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA4ZW07XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvYXJkLW92ZXJsYXkgc21hbGwge1xuICAgICAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjgyKTtcbiAgICAgICAgZm9udC1zaXplOiBjbGFtcCgwLjlyZW0sIDN2dywgMS4xcmVtKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDgwMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm9hcmQtb3ZlcmxheV9fc3RhdHMge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg0LCBtaW5tYXgoMCwgMWZyKSk7XG4gICAgICAgIGdhcDogMC4zNXJlbTtcbiAgICAgICAgd2lkdGg6IG1pbigyNnJlbSwgOTIlKTtcbiAgICAgICAgbWFyZ2luOiAwLjJyZW0gYXV0byAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5X19zdGF0cyBkaXYge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDAuMDhyZW07XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE4KTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMC43NXJlbTtcbiAgICAgICAgcGFkZGluZzogMC40MnJlbSAwLjQ2cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7XG4gICAgICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigzcHgpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC1vdmVybGF5X19zdGF0cyBkdCxcbiAgICAgIC5jaGVzc2ltYWxzLWJvYXJkLW92ZXJsYXlfX3N0YXRzIGRkIHtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm9hcmQtb3ZlcmxheV9fc3RhdHMgZHQge1xuICAgICAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjY4KTtcbiAgICAgICAgZm9udC1zaXplOiBjbGFtcCgwLjUycmVtLCAyLjF2dywgMC42NnJlbSk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA0ZW07XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvYXJkLW92ZXJsYXlfX3N0YXRzIGRkIHtcbiAgICAgICAgY29sb3I6ICNmZmY7XG4gICAgICAgIGZvbnQtc2l6ZTogY2xhbXAoMC42OHJlbSwgMi44dncsIDAuODhyZW0pO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIGNoZXNzaW1hbHMtdmljdG9yeS1zcGFya3Mge1xuICAgICAgICAwJSxcbiAgICAgICAgMTAwJSB7XG4gICAgICAgICAgb3BhY2l0eTogMC40NjtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCkgc2NhbGUoMC45OCk7XG4gICAgICAgIH1cblxuICAgICAgICA1MCUge1xuICAgICAgICAgIG9wYWNpdHk6IDAuOTU7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0wLjM1cmVtKSBzY2FsZSgxLjAyKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIGNoZXNzaW1hbHMtZmluYWxlLXJheXMge1xuICAgICAgICB0byB7XG4gICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIGNoZXNzaW1hbHMtZmluYWxlLXJpYmJvbiB7XG4gICAgICAgIDAlLFxuICAgICAgICAxMDAlIHtcbiAgICAgICAgICBvcGFjaXR5OiAwLjE4O1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMC41cmVtKSByb3RhdGUodmFyKC0tcmliYm9uLWFuZ2xlKSk7XG4gICAgICAgIH1cblxuICAgICAgICA1MCUge1xuICAgICAgICAgIG9wYWNpdHk6IDAuNzU7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEuNHJlbSkgcm90YXRlKHZhcigtLXJpYmJvbi1hbmdsZSkpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIEBrZXlmcmFtZXMgY2hlc3NpbWFscy1maW5hbGUtbWVkYWwge1xuICAgICAgICAwJSxcbiAgICAgICAgMTAwJSB7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApIHNjYWxlKDEpO1xuICAgICAgICB9XG5cbiAgICAgICAgNTAlIHtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTAuMThyZW0pIHNjYWxlKDEuMDQpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIGlzb2xhdGlvbjogaXNvbGF0ZTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLWNlbGwtYmc6IHZhcigtLWNoZXNzaW1hbHMtY2VsbC1saWdodCk7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIHBsYWNlLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgICAgbWluLWhlaWdodDogMDtcbiAgICAgICAgYXNwZWN0LXJhdGlvOiAxO1xuICAgICAgICBib3JkZXI6IDA7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGVsbGlwc2UgYXQgMjYlIDI0JSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEyKSwgdHJhbnNwYXJlbnQgMjQlKSxcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoZWxsaXBzZSBhdCA3OCUgNzYlLCByZ2JhKDYxLCA1NCwgMzYsIDAuMDYpLCB0cmFuc3BhcmVudCAyOCUpLFxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNCksIHRyYW5zcGFyZW50IDUyJSwgcmdiYSg1MiwgNDQsIDI4LCAwLjA0KSksXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1jZWxsLWJnKTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIGZvbnQ6IGluaGVyaXQ7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIHRyYW5zaXRpb246XG4gICAgICAgICAgYmFja2dyb3VuZCAxNjBtcyBlYXNlLFxuICAgICAgICAgIGJveC1zaGFkb3cgMTYwbXMgZWFzZSxcbiAgICAgICAgICB0cmFuc2Zvcm0gMTYwbXMgZWFzZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbDo6YmVmb3JlLFxuICAgICAgLmNoZXNzaW1hbHMtY2VsbDo6YWZ0ZXIge1xuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbC10ZXh0dXJlIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBpbnNldDogMDtcbiAgICAgICAgei1pbmRleDogMDtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgICBvcGFjaXR5OiAwLjQyO1xuICAgICAgICBtaXgtYmxlbmQtbW9kZTogbXVsdGlwbHk7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGVsbGlwc2UgYXQgdmFyKC0td2Vhci14LCAyOCUpIHZhcigtLXdlYXIteSwgMzIlKSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE2KSwgdHJhbnNwYXJlbnQgMTclKSxcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoZWxsaXBzZSBhdCB2YXIoLS13ZWFyLXgyLCA3NCUpIHZhcigtLXdlYXIteTIsIDY4JSksIHJnYmEoNzUsIDY2LCA0MiwgMC4wOSksIHRyYW5zcGFyZW50IDI1JSksXG4gICAgICAgICAgcmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCh2YXIoLS13ZWFyLWFuZ2xlLCAyNmRlZyksIHJnYmEoNzUsIDY2LCA0MiwgMC4wNDUpIDAgMXB4LCB0cmFuc3BhcmVudCAxcHggMC41MnJlbSksXG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA2KSwgdHJhbnNwYXJlbnQgNDIlLCByZ2JhKDUyLCA0NCwgMjgsIDAuMDQ1KSk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwtdGV4dHVyZTo6YWZ0ZXIge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGluc2V0OiAwLjA4cmVtO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDc1LCA2NiwgNDIsIDAuMDUpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwLjE4cmVtO1xuICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgIGluc2V0IDAuMDhyZW0gMC4wOHJlbSAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wOCksXG4gICAgICAgICAgaW5zZXQgLTAuMDhyZW0gLTAuMDhyZW0gMCByZ2JhKDUyLCA0NCwgMjgsIDAuMDQ1KTtcbiAgICAgICAgY29udGVudDogJyc7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwuaXMtZWRnZS1jZWxsIC5jaGVzc2ltYWxzLWNlbGwtdGV4dHVyZSB7XG4gICAgICAgIG9wYWNpdHk6IDAuNTY7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGVsbGlwc2UgYXQgdmFyKC0td2Vhci14LCAyOCUpIHZhcigtLXdlYXIteSwgMzIlKSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE0KSwgdHJhbnNwYXJlbnQgMTglKSxcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoZWxsaXBzZSBhdCB2YXIoLS13ZWFyLXgyLCA3NCUpIHZhcigtLXdlYXIteTIsIDY4JSksIHJnYmEoNzUsIDY2LCA0MiwgMC4xNCksIHRyYW5zcGFyZW50IDI4JSksXG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSg3MCwgNTIsIDI4LCAwLjA1NSksIHRyYW5zcGFyZW50IDQ0JSwgcmdiYSg1MiwgNDQsIDI4LCAwLjA5KSksXG4gICAgICAgICAgcmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCh2YXIoLS13ZWFyLWFuZ2xlLCAyNmRlZyksIHJnYmEoNzUsIDY2LCA0MiwgMC4wNTUpIDAgMXB4LCB0cmFuc3BhcmVudCAxcHggMC40OHJlbSk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwud2Vhci0wIHtcbiAgICAgICAgLS13ZWFyLXg6IDIyJTtcbiAgICAgICAgLS13ZWFyLXk6IDI0JTtcbiAgICAgICAgLS13ZWFyLXgyOiA3OCU7XG4gICAgICAgIC0td2Vhci15MjogNzIlO1xuICAgICAgICAtLXdlYXItYW5nbGU6IDE4ZGVnO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsLndlYXItMSB7XG4gICAgICAgIC0td2Vhci14OiA2NCU7XG4gICAgICAgIC0td2Vhci15OiAxOCU7XG4gICAgICAgIC0td2Vhci14MjogMzAlO1xuICAgICAgICAtLXdlYXIteTI6IDc2JTtcbiAgICAgICAgLS13ZWFyLWFuZ2xlOiAtMjRkZWc7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwud2Vhci0yIHtcbiAgICAgICAgLS13ZWFyLXg6IDQyJTtcbiAgICAgICAgLS13ZWFyLXk6IDU4JTtcbiAgICAgICAgLS13ZWFyLXgyOiA4MiU7XG4gICAgICAgIC0td2Vhci15MjogMjYlO1xuICAgICAgICAtLXdlYXItYW5nbGU6IDQyZGVnO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsLndlYXItMyB7XG4gICAgICAgIC0td2Vhci14OiA3NCU7XG4gICAgICAgIC0td2Vhci15OiA2OCU7XG4gICAgICAgIC0td2Vhci14MjogMjQlO1xuICAgICAgICAtLXdlYXIteTI6IDI4JTtcbiAgICAgICAgLS13ZWFyLWFuZ2xlOiAtMTJkZWc7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwud2Vhci00IHtcbiAgICAgICAgLS13ZWFyLXg6IDM0JTtcbiAgICAgICAgLS13ZWFyLXk6IDE4JTtcbiAgICAgICAgLS13ZWFyLXgyOiA2MiU7XG4gICAgICAgIC0td2Vhci15MjogODQlO1xuICAgICAgICAtLXdlYXItYW5nbGU6IDY0ZGVnO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsLndlYXItNSB7XG4gICAgICAgIC0td2Vhci14OiAxOCU7XG4gICAgICAgIC0td2Vhci15OiA3MCU7XG4gICAgICAgIC0td2Vhci14MjogNzAlO1xuICAgICAgICAtLXdlYXIteTI6IDM0JTtcbiAgICAgICAgLS13ZWFyLWFuZ2xlOiAtNDhkZWc7XG4gICAgICB9XG5cbiAgICAgIDpob3N0LWNvbnRleHQoaHRtbC5pb24tcGFsZXR0ZS1kYXJrKSAuY2hlc3NpbWFscy1jZWxsLXRleHR1cmUsXG4gICAgICA6aG9zdC1jb250ZXh0KFtkYXRhLXRoZW1lPSdkYXJrJ10pIC5jaGVzc2ltYWxzLWNlbGwtdGV4dHVyZSB7XG4gICAgICAgIG9wYWNpdHk6IDAuMzQ7XG4gICAgICAgIG1peC1ibGVuZC1tb2RlOiBzb2Z0LWxpZ2h0O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsLmlzLWRhcmstY2VsbCB7XG4gICAgICAgIC0tY2hlc3NpbWFscy1jZWxsLWJnOiB2YXIoLS1jaGVzc2ltYWxzLWNlbGwtZGFyayk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwuaXMtc2VsZWN0ZWQge1xuICAgICAgICB6LWluZGV4OiAxO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1zZWxlY3RlZC1yZ2IpLCAwLjI4KSAwIDM2JSwgdHJhbnNwYXJlbnQgNjIlKSxcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2VsZWN0ZWQtcmdiKSwgMC4yMiksIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wOCkpLFxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtY2VsbC1iZyk7XG4gICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgaW5zZXQgMCAwIDAgMC4xOHJlbSB2YXIoLS1jaGVzc2ltYWxzLXNlbGVjdGVkKSxcbiAgICAgICAgICBpbnNldCAwIDAgMC41NXJlbSByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNzIpLFxuICAgICAgICAgIGluc2V0IDAgMCAxLjhyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXNlbGVjdGVkLXJnYiksIDAuNDIpLFxuICAgICAgICAgIDAgMCAwLjU1cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1zZWxlY3RlZC1yZ2IpLCAwLjU2KSxcbiAgICAgICAgICAwIDAgMS41NXJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2VsZWN0ZWQtcmdiKSwgMC4zNik7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWJvYXJkLmlzLXBvd2VyLWFpbWluZyAuY2hlc3NpbWFscy1jZWxsLmlzLXNlbGVjdGVkIHtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDUwJSA1MiUsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1yZ2IpLCAwLjM4KSAwIDM0JSwgdHJhbnNwYXJlbnQgNjQlKSxcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDMyJSAyNCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4zNCksIHRyYW5zcGFyZW50IDI4JSksXG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDAuMiksIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wOCkpLFxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtY2VsbC1iZyk7XG4gICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgaW5zZXQgMCAwIDAgMC4xOHJlbSB2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLWhvdCksXG4gICAgICAgICAgaW5zZXQgMCAwIDAuOHJlbSByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNjYpLFxuICAgICAgICAgIGluc2V0IDAgMCAxLjlyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDAuNSksXG4gICAgICAgICAgMCAwIDAuN3JlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtbWFnaWMtcmdiKSwgMC42MiksXG4gICAgICAgICAgMCAwIDEuNzVyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDAuNDIpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ib2FyZC5pcy1wb3dlci1haW1pbmcgLmNoZXNzaW1hbHMtY2VsbC5pcy1sZWdhbDpub3QoLmlzLWNhcHR1cmUpOjphZnRlciB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDAuOTQpO1xuICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgIDAgMCAwLjcycmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1yZ2IpLCAwLjQ4KSxcbiAgICAgICAgICBpbnNldCAwIDAgMC42cmVtIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYm9hcmQuaXMtcG93ZXItYWltaW5nIC5jaGVzc2ltYWxzLXRhcmdldCB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtbWFnaWMtaG90KTtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICAwIDAgMCAwLjJyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDAuMiksXG4gICAgICAgICAgMCAwIDAuOTVyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDAuNjIpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsLmlzLWxlZ2FsOm5vdCguaXMtY2FwdHVyZSk6OmFmdGVyIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBpbnNldDogMTMlO1xuICAgICAgICB6LWluZGV4OiAyO1xuICAgICAgICBib3JkZXI6IG1heCgycHgsIDEuOCUpIHNvbGlkIHZhcigtLWNoZXNzaW1hbHMtbW92ZSk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDAuNTVyZW07XG4gICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICBvcGFjaXR5OiAwLjc0O1xuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbC5pcy1sYXN0Om5vdCguaXMtc2VsZWN0ZWQpOm5vdCguaXMtbGVnYWwpOm5vdCguaXMtY2FwdHVyZSkge1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1sYXN0LXJnYiksIDAuMTYpIDAgNDIlLCB0cmFuc3BhcmVudCA2OCUpLFxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtY2VsbC1iZyk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwuaXMtY2FwdHVyZSB7XG4gICAgICAgIHotaW5kZXg6IDI7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCA1MCUgNTAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMjQpLCB0cmFuc3BhcmVudCAzNCUpLFxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1jYXB0dXJlLXJnYiksIDAuMTQpLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDgpKSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLWNlbGwtYmcpO1xuICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgIGluc2V0IDAgMCAwIDAuMTRyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLWNhcHR1cmUtcmdiKSwgMC44NCksXG4gICAgICAgICAgaW5zZXQgMCAwIDEuNHJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2IpLCAwLjI0KSxcbiAgICAgICAgICAwIDAgMC45NXJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2IpLCAwLjM0KTtcbiAgICAgICAgYW5pbWF0aW9uOiBjaGVzc2ltYWxzLWNhcHR1cmUtYXVyYSAxLjM1cyBlYXNlLWluLW91dCBpbmZpbml0ZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbC5pcy1jYXB0dXJlOjpiZWZvcmUge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGluc2V0OiA0JTtcbiAgICAgICAgei1pbmRleDogMTtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDAuNjRyZW07XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDkwZGVnLCB0cmFuc3BhcmVudCwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUyKSwgdHJhbnNwYXJlbnQpLFxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgNTAlIDUwJSwgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLWNhcHR1cmUtcmdiKSwgMC4yNCksIHRyYW5zcGFyZW50IDU4JSk7XG4gICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTQyJSkgc2NhbGUoMC45KTtcbiAgICAgICAgYW5pbWF0aW9uOiBjaGVzc2ltYWxzLWNhcHR1cmUtc3dlZXAgMS4zNXMgZWFzZS1pbi1vdXQgaW5maW5pdGU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwuaXMtY2FwdHVyZTo6YWZ0ZXIge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGluc2V0OiA4JTtcbiAgICAgICAgei1pbmRleDogMztcbiAgICAgICAgYm9yZGVyOiBtYXgoMnB4LCAxLjU1JSkgc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLWNhcHR1cmUtcmdiKSwgMC45KTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMC42MnJlbTtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICAwIDAgMC43NXJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2IpLCAwLjUpLFxuICAgICAgICAgIGluc2V0IDAgMCAwLjcycmVtIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yMik7XG4gICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgICAgYW5pbWF0aW9uOiBjaGVzc2ltYWxzLWNhcHR1cmUtZnJhbWUgMS4zNXMgZWFzZS1pbi1vdXQgaW5maW5pdGU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwuaGFzLWNhcHR1cmUtcmVhZHk6bm90KC5pcy1zZWxlY3RlZCk6OmFmdGVyIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBpbnNldDogMTYlO1xuICAgICAgICB6LWluZGV4OiAzO1xuICAgICAgICBib3JkZXI6IG1heCgycHgsIDEuNDUlKSBzb2xpZCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2VsZWN0ZWQtcmdiKSwgMC43Mik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgIDAgMCAwLjY1cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1zZWxlY3RlZC1yZ2IpLCAwLjM0KSxcbiAgICAgICAgICBpbnNldCAwIDAgMC41NXJlbSByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTgpO1xuICAgICAgICBjb250ZW50OiAnJztcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbC5pcy13aW5uaW5nLmlzLWxlZ2FsOm5vdCguaXMtY2FwdHVyZSk6OmFmdGVyIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLWNoZXNzaW1hbHMtd2FybmluZy1yZ2IpLCAwLjkyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgMCAwIDAuNzVyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXdhcm5pbmctcmdiKSwgMC40OCksXG4gICAgICAgICAgaW5zZXQgMCAwIDAuNThyZW0gcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjIyKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbC5pcy13aW5uaW5nIC5jaGVzc2ltYWxzLXRhcmdldCB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtd2FybmluZyk7XG4gICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgMCAwIDAgMC4yMnJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtd2FybmluZy1yZ2IpLCAwLjIpLFxuICAgICAgICAgIDAgMCAwLjk1cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy13YXJuaW5nLXJnYiksIDAuNTYpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsLmhhcy10aHJlYXQ6bm90KC5pcy1zZWxlY3RlZCk6bm90KC5pcy1jYXB0dXJlKSB7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCA1MCUgNTIlLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtd2FybmluZy1yZ2IpLCAwLjE2KSwgdHJhbnNwYXJlbnQgNTIlKSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLWNlbGwtYmcpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsLmhhcy10aHJlYXQ6bm90KC5pcy1zZWxlY3RlZCk6bm90KC5pcy1jYXB0dXJlKSAuY2hlc3NpbWFscy1waWVjZSB7XG4gICAgICAgIGZpbHRlcjpcbiAgICAgICAgICBkcm9wLXNoYWRvdygwIDAgMC4zOHJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtd2FybmluZy1yZ2IpLCAwLjUyKSlcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLXBpZWNlLXdoaXRlLXNoYWRvdyk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwuaGFzLXRocmVhdDpub3QoLmlzLXNlbGVjdGVkKTpub3QoLmlzLWNhcHR1cmUpIC5jaGVzc2ltYWxzLXBpZWNlLmlzLWJsYWNrIHtcbiAgICAgICAgZmlsdGVyOlxuICAgICAgICAgIGRyb3Atc2hhZG93KDAgMCAwLjM4cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy13YXJuaW5nLXJnYiksIDAuNTIpKVxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtcGllY2UtYmxhY2stc2hhZG93KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbC5oYXMtdGhyZWF0Om5vdCguaXMtc2VsZWN0ZWQpOm5vdCguaXMtY2FwdHVyZSk6OmJlZm9yZSB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiAwLjI2cmVtO1xuICAgICAgICByaWdodDogMC4yNnJlbTtcbiAgICAgICAgei1pbmRleDogNDtcbiAgICAgICAgd2lkdGg6IDAuNDhyZW07XG4gICAgICAgIGhlaWdodDogMC40OHJlbTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tY2hlc3NpbWFscy13YXJuaW5nLXJnYiksIDAuOTYpO1xuICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAwLjE4cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy13YXJuaW5nLXJnYiksIDAuMjIpO1xuICAgICAgICBjb250ZW50OiAnJztcbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBjaGVzc2ltYWxzLWNhcHR1cmUtYXVyYSB7XG4gICAgICAgIDAlLFxuICAgICAgICAxMDAlIHtcbiAgICAgICAgICBmaWx0ZXI6IHNhdHVyYXRlKDEpO1xuICAgICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgICBpbnNldCAwIDAgMCAwLjEycmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1jYXB0dXJlLXJnYiksIDAuNzgpLFxuICAgICAgICAgICAgaW5zZXQgMCAwIDFyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLWNhcHR1cmUtcmdiKSwgMC4yKSxcbiAgICAgICAgICAgIDAgMCAwLjY0cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1jYXB0dXJlLXJnYiksIDAuMzIpO1xuICAgICAgICB9XG5cbiAgICAgICAgNTAlIHtcbiAgICAgICAgICBmaWx0ZXI6IHNhdHVyYXRlKDEuMjIpO1xuICAgICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgICBpbnNldCAwIDAgMCAwLjE2cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1jYXB0dXJlLXJnYiksIDAuOTYpLFxuICAgICAgICAgICAgaW5zZXQgMCAwIDEuMzRyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLWNhcHR1cmUtcmdiKSwgMC4zNCksXG4gICAgICAgICAgICAwIDAgMS4ycmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1jYXB0dXJlLXJnYiksIDAuNDgpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIEBrZXlmcmFtZXMgY2hlc3NpbWFscy1jYXB0dXJlLXN3ZWVwIHtcbiAgICAgICAgMCUge1xuICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MiUpIHNjYWxlKDAuODgpO1xuICAgICAgICB9XG5cbiAgICAgICAgNDIlIHtcbiAgICAgICAgICBvcGFjaXR5OiAwLjY2O1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKSBzY2FsZSgxKTtcbiAgICAgICAgfVxuXG4gICAgICAgIDEwMCUge1xuICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDQ4JSkgc2NhbGUoMC45Mik7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBjaGVzc2ltYWxzLWNhcHR1cmUtZnJhbWUge1xuICAgICAgICAwJSxcbiAgICAgICAgMTAwJSB7XG4gICAgICAgICAgb3BhY2l0eTogMC42ODtcbiAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDAuOTYpO1xuICAgICAgICB9XG5cbiAgICAgICAgNTAlIHtcbiAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbC5oYXMtc291cmNlLWVmZmVjdDpub3QoLmlzLW1vdmluZy1zb3VyY2UpIHtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtc2VsZWN0ZWQtcmdiKSwgMC4xMikgMCAzNCUsIHRyYW5zcGFyZW50IDY0JSksXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1jZWxsLWJnKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbC5oYXMtbW92ZS1lZmZlY3Qge1xuICAgICAgICB6LWluZGV4OiAyO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgNTAlIDUwJSwgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLWNhcHR1cmUtcmdiKSwgMC4yMikgMCAzNCUsIHRyYW5zcGFyZW50IDY4JSksXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1jZWxsLWJnKTtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICBpbnNldCAwIDAgMCAwLjE2cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1jYXB0dXJlLXJnYiksIDAuODYpLFxuICAgICAgICAgIGluc2V0IDAgMCAxLjJyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLWNhcHR1cmUtcmdiKSwgMC4yNiksXG4gICAgICAgICAgMCAwIDEuMXJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2IpLCAwLjQyKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbC5oYXMtbW92ZS1lZmZlY3Q6OmJlZm9yZSB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgaW5zZXQ6IDAuMTJyZW07XG4gICAgICAgIHotaW5kZXg6IDE7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwLjdyZW07XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCA1MCUgNTAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNDgpLCB0cmFuc3BhcmVudCAyMiUpLFxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgNTAlIDUwJSwgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLWNhcHR1cmUtcmdiKSwgMC40MiksIHRyYW5zcGFyZW50IDU4JSk7XG4gICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDAuNzIpO1xuICAgICAgICBhbmltYXRpb246IGNoZXNzaW1hbHMtcG93ZXItaW1wYWN0IDcwMG1zIGVhc2Utb3V0IGJvdGg7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwuaGFzLW1vdmUtZWZmZWN0OjphZnRlciB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgaW5zZXQ6IDAuMjhyZW07XG4gICAgICAgIHotaW5kZXg6IDQ7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBib3JkZXI6IDAuMTRyZW0gc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMC41OHJlbTtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICAwIDAgMC41cmVtIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4zNiksXG4gICAgICAgICAgMCAwIDFyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLWNhcHR1cmUtcmdiKSwgMC4zMik7XG4gICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICBhbmltYXRpb246IGNoZXNzaW1hbHMtcG93ZXItZnJhbWUgODYwbXMgZWFzZS1vdXQgYm90aDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbC5oYXMtY2FwdHVyZS1lZmZlY3Qge1xuICAgICAgICBhbmltYXRpb246IGNoZXNzaW1hbHMtY2FwdHVyZS1oaXQgNzgwbXMgZWFzZS1vdXQgYm90aDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2VsbC5lZmZlY3QtZWFnbGU6OmJlZm9yZSB7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdHJhbnNwYXJlbnQgMTAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNzgpIDQ4JSwgdHJhbnNwYXJlbnQgNTIlKSxcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDUwJSA1MCUsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1jYXB0dXJlLXJnYiksIDAuMzYpLCB0cmFuc3BhcmVudCA2MiUpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsLmVmZmVjdC1idWxsOjpiZWZvcmUge1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQoOTBkZWcsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4zNCkgMCAwLjE2cmVtLCB0cmFuc3BhcmVudCAwLjE2cmVtIDAuMzRyZW0pLFxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgNTAlIDUwJSwgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLWNhcHR1cmUtcmdiKSwgMC4zOCksIHRyYW5zcGFyZW50IDYyJSk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwuZWZmZWN0LWthbmdhcm9vOjpiZWZvcmUge1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDQyJSA0NCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41OCksIHRyYW5zcGFyZW50IDE4JSksXG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCA1OCUgNTYlLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2IpLCAwLjQpLCB0cmFuc3BhcmVudCA2NCUpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jZWxsLmVmZmVjdC1saW9uOjpiZWZvcmUge1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIGNvbmljLWdyYWRpZW50KGZyb20gMGRlZywgdHJhbnNwYXJlbnQsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41NiksIHRyYW5zcGFyZW50LCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2IpLCAwLjQpLCB0cmFuc3BhcmVudCksXG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCA1MCUgNTAlLCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtY2FwdHVyZS1yZ2IpLCAwLjM0KSwgdHJhbnNwYXJlbnQgNjIlKTtcbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBjaGVzc2ltYWxzLXBvd2VyLWltcGFjdCB7XG4gICAgICAgIDAlIHtcbiAgICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMC41NCkgcm90YXRlKDBkZWcpO1xuICAgICAgICB9XG5cbiAgICAgICAgMjglIHtcbiAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMC45Nikgcm90YXRlKDJkZWcpO1xuICAgICAgICB9XG5cbiAgICAgICAgMTAwJSB7XG4gICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMykgcm90YXRlKDhkZWcpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIEBrZXlmcmFtZXMgY2hlc3NpbWFscy1wb3dlci1mcmFtZSB7XG4gICAgICAgIDAlIHtcbiAgICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMC44NCk7XG4gICAgICAgIH1cblxuICAgICAgICAzNCUge1xuICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxLjAyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIDEwMCUge1xuICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxLjE2KTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIGNoZXNzaW1hbHMtY2FwdHVyZS1oaXQge1xuICAgICAgICAwJSxcbiAgICAgICAgMTAwJSB7XG4gICAgICAgICAgZmlsdGVyOiBzYXR1cmF0ZSgxKTtcbiAgICAgICAgfVxuXG4gICAgICAgIDM1JSB7XG4gICAgICAgICAgZmlsdGVyOiBzYXR1cmF0ZSgxLjM1KSBicmlnaHRuZXNzKDEuMDgpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNlbGwuaXMtbW92aW5nLXNvdXJjZSAuY2hlc3NpbWFscy1waWVjZSB7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBpZWNlIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICB6LWluZGV4OiAyO1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgd2lkdGg6IDY4JTtcbiAgICAgICAgaGVpZ2h0OiA3NCU7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGllY2UtZmlsbDogdmFyKC0tY2hlc3NpbWFscy1waWVjZS13aGl0ZS1maWxsKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXBpZWNlLXNpZGU6IHZhcigtLWNoZXNzaW1hbHMtcGllY2Utd2hpdGUtc2lkZSk7XG4gICAgICAgIC0tY2hlc3NpbWFscy1waWVjZS1saW5lOiB2YXIoLS1jaGVzc2ltYWxzLXBpZWNlLXdoaXRlLWxpbmUpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGllY2Utb3V0bGluZTogcmdiYSg4MiwgNjUsIDQ2LCAwLjM0KTtcbiAgICAgICAgZmlsdGVyOiB2YXIoLS1jaGVzc2ltYWxzLXBpZWNlLXdoaXRlLXNoYWRvdyk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBpZWNlLmlzLWJsYWNrIHtcbiAgICAgICAgY29sb3I6ICNmZmY7XG4gICAgICAgIC0tY2hlc3NpbWFscy1waWVjZS1maWxsOiB2YXIoLS1jaGVzc2ltYWxzLXBpZWNlLWJsYWNrLWZpbGwpO1xuICAgICAgICAtLWNoZXNzaW1hbHMtcGllY2Utc2lkZTogdmFyKC0tY2hlc3NpbWFscy1waWVjZS1ibGFjay1zaWRlKTtcbiAgICAgICAgLS1jaGVzc2ltYWxzLXBpZWNlLWxpbmU6IHZhcigtLWNoZXNzaW1hbHMtcGllY2UtYmxhY2stbGluZSk7XG4gICAgICAgIC0tY2hlc3NpbWFscy1waWVjZS1vdXRsaW5lOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMjIpO1xuICAgICAgICBmaWx0ZXI6IHZhcigtLWNoZXNzaW1hbHMtcGllY2UtYmxhY2stc2hhZG93KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtbW92aW5nLXBpZWNlIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IDA7XG4gICAgICAgIGxlZnQ6IDA7XG4gICAgICAgIHotaW5kZXg6IDY7XG4gICAgICAgIHdpZHRoOiBjYWxjKDEwMCUgLyB2YXIoLS1ib2FyZC1zaXplKSk7XG4gICAgICAgIGhlaWdodDogY2FsYygxMDAlIC8gdmFyKC0tYm9hcmQtc2l6ZSkpO1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoXG4gICAgICAgICAgY2FsYyh2YXIoLS1mcm9tLWNvbCkgKiAxMDAlKSxcbiAgICAgICAgICBjYWxjKHZhcigtLWZyb20tcm93KSAqIDEwMCUpXG4gICAgICAgICk7XG4gICAgICAgIGFuaW1hdGlvbjogY2hlc3NpbWFscy1waWVjZS10cmF2ZWwgMzYwbXMgY3ViaWMtYmV6aWVyKDAuMiwgMC44MiwgMC4yNCwgMSkgYm90aDtcbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBjaGVzc2ltYWxzLXBpZWNlLXRyYXZlbCB7XG4gICAgICAgIDAlIHtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZShcbiAgICAgICAgICAgICAgY2FsYyh2YXIoLS1mcm9tLWNvbCkgKiAxMDAlKSxcbiAgICAgICAgICAgICAgY2FsYyh2YXIoLS1mcm9tLXJvdykgKiAxMDAlKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgc2NhbGUoMSk7XG4gICAgICAgIH1cblxuICAgICAgICA2OCUge1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKFxuICAgICAgICAgICAgICBjYWxjKHZhcigtLXRvLWNvbCkgKiAxMDAlKSxcbiAgICAgICAgICAgICAgY2FsYyh2YXIoLS10by1yb3cpICogMTAwJSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIHNjYWxlKDEuMDcpO1xuICAgICAgICB9XG5cbiAgICAgICAgMTAwJSB7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoXG4gICAgICAgICAgICAgIGNhbGModmFyKC0tdG8tY29sKSAqIDEwMCUpLFxuICAgICAgICAgICAgICBjYWxjKHZhcigtLXRvLXJvdykgKiAxMDAlKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgc2NhbGUoMSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGllY2VfX3NpZGUsXG4gICAgICAuY2hlc3NpbWFscy1waWVjZV9faGVhZCxcbiAgICAgIC5jaGVzc2ltYWxzLXBpZWNlX19jb2xsYXIsXG4gICAgICAuY2hlc3NpbWFscy1waWVjZV9fbmVjayxcbiAgICAgIC5jaGVzc2ltYWxzLXBpZWNlX19iYXNlIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgbGVmdDogNTAlO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLXBpZWNlLWZpbGwpO1xuICAgICAgICBib3JkZXI6IG1heCgxcHgsIDEuMjUlKSBzb2xpZCB2YXIoLS1jaGVzc2ltYWxzLXBpZWNlLW91dGxpbmUpO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBpZWNlX19zaWRlIHtcbiAgICAgICAgdG9wOiA0NiU7XG4gICAgICAgIHotaW5kZXg6IDA7XG4gICAgICAgIHdpZHRoOiA1OCU7XG4gICAgICAgIGhlaWdodDogNDElO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAzNCUgMzQlIDEyJSAxMiU7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDk2ZGVnLCB2YXIoLS1jaGVzc2ltYWxzLXBpZWNlLXNpZGUpIDAgMzQlLCB0cmFuc3BhcmVudCAzNSUpLFxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtcGllY2UtZmlsbCk7XG4gICAgICAgIGNsaXAtcGF0aDogcG9seWdvbigyMiUgMCwgNzglIDAsIDk2JSAxMDAlLCA0JSAxMDAlKTtcbiAgICAgICAgb3BhY2l0eTogMC45MjtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGllY2VfX2hlYWQge1xuICAgICAgICB0b3A6IDElO1xuICAgICAgICB6LWluZGV4OiA0O1xuICAgICAgICB3aWR0aDogNDglO1xuICAgICAgICBoZWlnaHQ6IDQwJTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCAzMCUgMjIlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNzIpIDAgMTMlLCB0cmFuc3BhcmVudCAxNCUpLFxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yOCkgMCAzNCUsIHRyYW5zcGFyZW50IDM1JSksXG4gICAgICAgICAgdmFyKC0tY2hlc3NpbWFscy1waWVjZS1maWxsKTtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICBpbnNldCAtMC4xOHJlbSAtMC4xMnJlbSAwIHJnYmEoODIsIDY1LCA0NiwgMC4wNiksXG4gICAgICAgICAgaW5zZXQgMCAtMXB4IDAgdmFyKC0tY2hlc3NpbWFscy1waWVjZS1saW5lKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcGllY2UuaXMtYmxhY2sgLmNoZXNzaW1hbHMtcGllY2VfX2hlYWQge1xuICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgIGluc2V0IDAuMThyZW0gLTAuMTJyZW0gMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDYpLFxuICAgICAgICAgIGluc2V0IDAgLTFweCAwIHZhcigtLWNoZXNzaW1hbHMtcGllY2UtbGluZSk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBpZWNlX19jb2xsYXIge1xuICAgICAgICB0b3A6IDM3JTtcbiAgICAgICAgei1pbmRleDogNTtcbiAgICAgICAgd2lkdGg6IDcyJTtcbiAgICAgICAgaGVpZ2h0OiAxNSU7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxODBkZWcsICNmNWNkNzcgMCUsIHZhcigtLWNoZXNzaW1hbHMtcGllY2UtZ29sZCkgNTUlLCB2YXIoLS1jaGVzc2ltYWxzLXBpZWNlLWdvbGQtZGFyaykgMTAwJSk7XG4gICAgICAgIGJvcmRlci1jb2xvcjogY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWNoZXNzaW1hbHMtcGllY2UtZ29sZC1kYXJrKSA3MiUsIHRyYW5zcGFyZW50KTtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICBpbnNldCAwIDAuMTJyZW0gMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMjgpLFxuICAgICAgICAgIGluc2V0IDAgLTAuMDhyZW0gMCByZ2JhKDcwLCA0NiwgMTgsIDAuMjIpLFxuICAgICAgICAgIDAgMC4wOHJlbSAwLjE4cmVtIHJnYmEoNzAsIDQ2LCAxOCwgMC4xNCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBpZWNlX19uZWNrIHtcbiAgICAgICAgdG9wOiA1MCU7XG4gICAgICAgIHotaW5kZXg6IDI7XG4gICAgICAgIHdpZHRoOiA1MiU7XG4gICAgICAgIGhlaWdodDogMzElO1xuICAgICAgICBjbGlwLXBhdGg6IHBvbHlnb24oMTYlIDAsIDg0JSAwLCAxMDAlIDEwMCUsIDAgMTAwJSk7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEwMGRlZywgdmFyKC0tY2hlc3NpbWFscy1waWVjZS1zaWRlKSAwIDI4JSwgdHJhbnNwYXJlbnQgMjklKSxcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTgwZGVnLCB2YXIoLS1jaGVzc2ltYWxzLXBpZWNlLWZpbGwpLCBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tY2hlc3NpbWFscy1waWVjZS1maWxsKSA3OCUsIHZhcigtLWNoZXNzaW1hbHMtcGllY2Utc2lkZSkpKTtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICBpbnNldCAtMC4xMnJlbSAwLjFyZW0gMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDgpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1waWVjZV9fYmFzZSB7XG4gICAgICAgIGJvdHRvbTogMDtcbiAgICAgICAgei1pbmRleDogNjtcbiAgICAgICAgd2lkdGg6IDg2JTtcbiAgICAgICAgaGVpZ2h0OiAxNyU7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDAuNDJyZW0gMC40MnJlbSAwLjIycmVtIDAuMjJyZW07XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEwMGRlZywgdmFyKC0tY2hlc3NpbWFscy1waWVjZS1zaWRlKSAwIDE4JSwgdHJhbnNwYXJlbnQgMTklKSxcbiAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMTgwZGVnLCBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tY2hlc3NpbWFscy1waWVjZS1maWxsKSA5MiUsICNmZmZmZmYpLCB2YXIoLS1jaGVzc2ltYWxzLXBpZWNlLWZpbGwpKTtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICBpbnNldCAwIDAuMTJyZW0gMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTQpLFxuICAgICAgICAgIGluc2V0IDAgLTAuMXJlbSAwIHZhcigtLWNoZXNzaW1hbHMtcGllY2UtbGluZSk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXRhcmdldCB7XG4gICAgICAgIHdpZHRoOiAxNiU7XG4gICAgICAgIGhlaWdodDogMTYlO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2hlc3NpbWFscy1tb3ZlKTtcbiAgICAgICAgb3BhY2l0eTogMC45O1xuICAgICAgICBib3gtc2hhZG93OiAwIDAgMC45cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1tb3ZlLXJnYiksIDAuNDIpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jYXJkcyB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDQsIG1pbm1heCgwLCAxZnIpKTtcbiAgICAgICAgZ2FwOiAwLjYyNXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2FyZHMgYnV0dG9uIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBpc29sYXRpb246IGlzb2xhdGU7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC4zNzVyZW07XG4gICAgICAgIHBsYWNlLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDUuNzVyZW07XG4gICAgICAgIHBhZGRpbmc6IDAuNjI1cmVtO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jaGVzc2ltYWxzLWJvcmRlcik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEuMTI1cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLXBhbmVsKTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtdGV4dCk7XG4gICAgICAgIGZvbnQ6IGluaGVyaXQ7XG4gICAgICAgIHRyYW5zaXRpb246XG4gICAgICAgICAgYm9yZGVyLWNvbG9yIDE4MG1zIGVhc2UsXG4gICAgICAgICAgYm94LXNoYWRvdyAxODBtcyBlYXNlLFxuICAgICAgICAgIHRyYW5zZm9ybSAxODBtcyBlYXNlO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wb3dlcnNfX2hlYWRpbmcge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICAgIGdhcDogMC43NXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcG93ZXJzIHAge1xuICAgICAgICBkaXNwbGF5OiAtd2Via2l0LWJveDtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDtcbiAgICAgICAgLXdlYmtpdC1saW5lLWNsYW1wOiAyO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wb3dlcnNfX2hlYWRpbmcgc3BhbiB7XG4gICAgICAgIGZsZXg6IDAgMCBhdXRvO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgcGFkZGluZzogMC4yOHJlbSAwLjYycmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjEyKTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeSk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43OHJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2FyZHMgYnV0dG9uLmlzLXNlbGVjdGVkIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLWhvdCk7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCA1MCUgMTYlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNDIpLCB0cmFuc3BhcmVudCAzMCUpLFxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgNTAlIDc2JSwgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDAuMiksIHRyYW5zcGFyZW50IDU2JSksXG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDAuMiksIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNCkpLFxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtcGFuZWwpO1xuICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgIDAgMCAwIDJweCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtbWFnaWMtcmdiKSwgMC4yOCksXG4gICAgICAgICAgMCAwIDEuMzVyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDAuNDgpLFxuICAgICAgICAgIDAgMC45cmVtIDJyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDAuMTgpO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNhcmRzIGJ1dHRvbi5pcy1zZWxlY3RlZDo6YmVmb3JlLFxuICAgICAgLmNoZXNzaW1hbHMtY2FyZHMgYnV0dG9uLmlzLXNlbGVjdGVkOjphZnRlciB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgaW5zZXQ6IC0wLjVyZW07XG4gICAgICAgIHotaW5kZXg6IDA7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IGluaGVyaXQ7XG4gICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2FyZHMgYnV0dG9uID4gKiB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgei1pbmRleDogMTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2FyZHMgYnV0dG9uLmlzLXNlbGVjdGVkOjpiZWZvcmUge1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgMTglIDI0JSwgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDAuODgpIDAgMC4wOHJlbSwgdHJhbnNwYXJlbnQgMC4xcmVtKSxcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDc4JSAyMCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44NikgMCAwLjA3cmVtLCB0cmFuc3BhcmVudCAwLjA5cmVtKSxcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDg2JSA2MiUsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1yZ2IpLCAwLjcyKSAwIDAuMDZyZW0sIHRyYW5zcGFyZW50IDAuMDhyZW0pLFxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgMjglIDc4JSwgcmdiYSgyNTUsIDI0NSwgMTExLCAwLjc4KSAwIDAuMDdyZW0sIHRyYW5zcGFyZW50IDAuMDlyZW0pLFxuICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgNTQlIDglLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNjgpIDAgMC4wNXJlbSwgdHJhbnNwYXJlbnQgMC4wN3JlbSk7XG4gICAgICAgIG9wYWNpdHk6IDAuODtcbiAgICAgICAgYW5pbWF0aW9uOiBjaGVzc2ltYWxzTWFnaWNQYXJ0aWNsZXMgMS44cyBlYXNlLWluLW91dCBpbmZpbml0ZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2FyZHMgYnV0dG9uLmlzLXNlbGVjdGVkOjphZnRlciB7XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgY29uaWMtZ3JhZGllbnQoZnJvbSAxMmRlZywgdHJhbnNwYXJlbnQgMCAxNmRlZywgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDAuMikgMTZkZWcgMjJkZWcsIHRyYW5zcGFyZW50IDIyZGVnIDQ0ZGVnKTtcbiAgICAgICAgb3BhY2l0eTogMC42ODtcbiAgICAgICAgZmlsdGVyOiBibHVyKDAuMDRyZW0pO1xuICAgICAgICBhbmltYXRpb246IGNoZXNzaW1hbHNNYWdpY0F1cmEgMy4ycyBsaW5lYXIgaW5maW5pdGU7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWNhcmRzIGJ1dHRvbi5pcy11c2VkIHtcbiAgICAgICAgb3BhY2l0eTogMC40MjtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYW5pbWFsLWZhY2Uge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgICAgICB3aWR0aDogMy4yNXJlbTtcbiAgICAgICAgaGVpZ2h0OiAzLjI1cmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjM0cmVtO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxLjJyZW07XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCAzNSUgMjIlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuODIpLCB0cmFuc3BhcmVudCA1NSUpLFxuICAgICAgICAgIHZhcigtLWNoZXNzaW1hbHMtYW5pbWFsLWZhY2UtYmcpO1xuICAgICAgICBjb2xvcjogY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWNoZXNzaW1hbHMtdGV4dCkgOTIlLCAjMDAwKTtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICBpbnNldCAwIDAgMCAxcHggdmFyKC0tY2hlc3NpbWFscy1hbmltYWwtZmFjZS1ib3JkZXIpLFxuICAgICAgICAgIDAgMC40NXJlbSAxLjE1cmVtIHJnYmEoNDYsIDU4LCA0NCwgMC4xKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYW5pbWFsLWZhY2UgaW1nIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIG9iamVjdC1maXQ6IGNvbnRhaW47XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDAuNzJyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoZXNzaW1hbHMtYW5pbWFsLWZhY2UtaW5uZXItYmcpO1xuICAgICAgICBib3gtc2hhZG93OiBpbnNldCAwIDAgMCAxcHggcmdiYSg0NiwgNTgsIDQ0LCAwLjA4KTtcbiAgICAgICAgdHJhbnNmb3JtOiBub25lO1xuICAgICAgICBmaWx0ZXI6IHZhcigtLWNoZXNzaW1hbHMtYW5pbWFsLWZhY2UtZmlsdGVyKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtY2FyZHMgYnV0dG9uLmlzLXNlbGVjdGVkIC5jaGVzc2ltYWxzLWFuaW1hbC1mYWNlLFxuICAgICAgLmNoZXNzaW1hbHMtcG93ZXJzLmlzLXJlYWR5IC5jaGVzc2ltYWxzLWNhcmRzIGJ1dHRvbjpub3QoLmlzLXVzZWQpIC5jaGVzc2ltYWxzLWFuaW1hbC1mYWNlIHtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDM1JSAyMiUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45KSwgdHJhbnNwYXJlbnQgNTIlKSxcbiAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDYyJSA3OCUsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1yZ2IpLCAwLjIyKSwgdHJhbnNwYXJlbnQgNDglKSxcbiAgICAgICAgICB2YXIoLS1jaGVzc2ltYWxzLWFuaW1hbC1mYWNlLWJnKTtcbiAgICAgICAgY29sb3I6IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1jaGVzc2ltYWxzLXRleHQpIDk0JSwgIzAwMCk7XG4gICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgaW5zZXQgMCAwIDAgMXB4IHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1yZ2IpLCAwLjM0KSxcbiAgICAgICAgICAwIDAgMC44NXJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtbWFnaWMtcmdiKSwgMC4zNCksXG4gICAgICAgICAgMCAwLjc1cmVtIDEuNnJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtbWFnaWMtcmdiKSwgMC4xNik7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBvd2Vycy5pcy1sb2NrZWQgLmNoZXNzaW1hbHMtYW5pbWFsLWZhY2Uge1xuICAgICAgICBmaWx0ZXI6IHZhcigtLWNoZXNzaW1hbHMtYW5pbWFsLWZhY2UtbG9ja2VkLWZpbHRlcik7XG4gICAgICAgIG9wYWNpdHk6IDAuODY7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBvd2Vycy5pcy1sb2NrZWQgLmNoZXNzaW1hbHMtYW5pbWFsLWZhY2UgaW1nLFxuICAgICAgLmNoZXNzaW1hbHMtY2FyZHMgYnV0dG9uLmlzLXVzZWQgLmNoZXNzaW1hbHMtYW5pbWFsLWZhY2UgaW1nIHtcbiAgICAgICAgb3BhY2l0eTogdmFyKC0tY2hlc3NpbWFscy1hbmltYWwtZmFjZS1sb2NrZWQtaW1nLW9wYWNpdHkpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1jYXJkcyBzdHJvbmcge1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44MnJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXBvd2Vycy5pcy1sb2NrZWQgLmNoZXNzaW1hbHMtY2FyZHMge1xuICAgICAgICBvcGFjaXR5OiAwLjY4O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wb3dlcnMuaXMtcmVhZHkge1xuICAgICAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1yZ2IpLCAwLjQ2KTtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICAwIDAgMCAxcHggcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDAuMTIpLFxuICAgICAgICAgIDAgMXJlbSAyLjRyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDAuMTIpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wb3dlcnMuaXMtcmVhZHkgLmNoZXNzaW1hbHMtY2FyZHMgYnV0dG9uOm5vdCguaXMtdXNlZCkge1xuICAgICAgICBhbmltYXRpb246IGNoZXNzaW1hbHNQb3dlclB1bHNlIDE4MDBtcyBlYXNlLWluLW91dCBpbmZpbml0ZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcG93ZXJzLmlzLXVubG9jay1wdWxzZSB7XG4gICAgICAgIGFuaW1hdGlvbjogY2hlc3NpbWFsc1Bvd2Vyc1VubG9ja2VkIDExODBtcyBlYXNlLW91dCBib3RoO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wb3dlcnMuaXMtdW5sb2NrLXB1bHNlIC5jaGVzc2ltYWxzLWNhcmRzIGJ1dHRvbjpub3QoLmlzLXVzZWQpIHtcbiAgICAgICAgYW5pbWF0aW9uOlxuICAgICAgICAgIGNoZXNzaW1hbHNQb3dlcklnbml0ZSA3NjBtcyBlYXNlLW91dCBib3RoLFxuICAgICAgICAgIGNoZXNzaW1hbHNQb3dlclB1bHNlIDE4MDBtcyBlYXNlLWluLW91dCA3NjBtcyBpbmZpbml0ZTtcbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBjaGVzc2ltYWxzUG93ZXJQdWxzZSB7XG4gICAgICAgIDAlLFxuICAgICAgICAxMDAlIHtcbiAgICAgICAgICBib3gtc2hhZG93OiAwIDAgMCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtbWFnaWMtcmdiKSwgMCk7XG4gICAgICAgIH1cbiAgICAgICAgNTAlIHtcbiAgICAgICAgICBib3gtc2hhZG93OiAwIDAgMS40cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1yZ2IpLCAwLjI0KTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIGNoZXNzaW1hbHNQb3dlcnNVbmxvY2tlZCB7XG4gICAgICAgIDAlIHtcbiAgICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgICAgMCAwIDAgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDApLFxuICAgICAgICAgICAgMCAxcmVtIDIuNHJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtbWFnaWMtcmdiKSwgMC4xMik7XG4gICAgICAgIH1cblxuICAgICAgICAzNCUge1xuICAgICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgICAwIDAgMCAwLjE4cmVtIHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1yZ2IpLCAwLjI4KSxcbiAgICAgICAgICAgIDAgMCAyLjJyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDAuMzgpLFxuICAgICAgICAgICAgMCAxcmVtIDIuNHJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtbWFnaWMtcmdiKSwgMC4xNik7XG4gICAgICAgIH1cblxuICAgICAgICAxMDAlIHtcbiAgICAgICAgICBib3gtc2hhZG93OlxuICAgICAgICAgICAgMCAwIDAgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDApLFxuICAgICAgICAgICAgMCAxcmVtIDIuNHJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtbWFnaWMtcmdiKSwgMC4xMik7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBjaGVzc2ltYWxzUG93ZXJJZ25pdGUge1xuICAgICAgICAwJSB7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApIHNjYWxlKDAuOTYpO1xuICAgICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIHJnYmEodmFyKC0tY2hlc3NpbWFscy1tYWdpYy1yZ2IpLCAwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIDQyJSB7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0wLjA4cmVtKSBzY2FsZSgxLjAyNSk7XG4gICAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICAgIDAgMCAwIDAuMTRyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDAuMjQpLFxuICAgICAgICAgICAgMCAwIDEuNXJlbSByZ2JhKHZhcigtLWNoZXNzaW1hbHMtbWFnaWMtcmdiKSwgMC40Nik7XG4gICAgICAgIH1cblxuICAgICAgICAxMDAlIHtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCkgc2NhbGUoMSk7XG4gICAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLW1hZ2ljLXJnYiksIDApO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIEBrZXlmcmFtZXMgY2hlc3NpbWFsc01hZ2ljUGFydGljbGVzIHtcbiAgICAgICAgMCUsXG4gICAgICAgIDEwMCUge1xuICAgICAgICAgIG9wYWNpdHk6IDAuNTQ7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApIHNjYWxlKDAuOTQpO1xuICAgICAgICB9XG5cbiAgICAgICAgNTAlIHtcbiAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMC4xOHJlbSkgc2NhbGUoMS4wMik7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBjaGVzc2ltYWxzTWFnaWNBdXJhIHtcbiAgICAgICAgdG8ge1xuICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDF0dXJuKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1hY3Rpb25zIHtcbiAgICAgICAgb3JkZXI6IDY7XG4gICAgICAgIGFsaWduLXNlbGY6IHN0cmV0Y2g7XG4gICAgICAgIGp1c3RpZnktc2VsZjogc3RyZXRjaDtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maXQsIG1pbm1heChtaW4oMTAwJSwgMTJyZW0pLCAxZnIpKTtcbiAgICAgICAgZ2FwOiAwLjYyNXJlbTtcbiAgICAgICAgbWFyZ2luLXRvcDogMXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc2hlbGwtLXByb2plY3Rpb24gLmNoZXNzaW1hbHMtZ2FtZSB7XG4gICAgICAgIG1heC13aWR0aDogbWluKDk2dncsIDkwcmVtKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc2hlbGwtLXByb2plY3Rpb24gLmNoZXNzaW1hbHMtdHVybi1jYXJkIHtcbiAgICAgICAgcGFkZGluZzogMC44NzVyZW0gMXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc2hlbGwtLXByb2plY3Rpb24gLmNoZXNzaW1hbHMtc3RhdHVzLFxuICAgICAgLmNoZXNzaW1hbHMtc2hlbGwtLXByb2plY3Rpb24gLmNoZXNzaW1hbHMtYWN0aW9ucyxcbiAgICAgIC5jaGVzc2ltYWxzLXNoZWxsLS1wcm9qZWN0aW9uIC5jaGVzc2ltYWxzLW9ubGluZSxcbiAgICAgIC5jaGVzc2ltYWxzLXNoZWxsLS1wcm9qZWN0aW9uIC5jaGVzc2ltYWxzLXJlcGxheSxcbiAgICAgIC5jaGVzc2ltYWxzLXNoZWxsLS1wcm9qZWN0aW9uIC5jaGVzc2ltYWxzLXJlbWF0Y2gtc3RhdHVzIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtc2hlbGwtLXByb2plY3Rpb24gLmNoZXNzaW1hbHMtYXJlbmEge1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IG1pbm1heCgwLCAxZnIpO1xuICAgICAgICBqdXN0aWZ5LWl0ZW1zOiBjZW50ZXI7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXNoZWxsLS1wcm9qZWN0aW9uIC5jaGVzc2ltYWxzLWJvYXJkLXdyYXAge1xuICAgICAgICAtLWNoZXNzaW1hbHMtYm9hcmQtcmFkaXVzOiBtaW4oMC42MjVyZW0sIDEwcHgpO1xuICAgICAgICB3aWR0aDogbWluKDk2dncsIDgydmgsIDU4cmVtKTtcbiAgICAgICAgbWF4LXdpZHRoOiBub25lO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1zaGVsbC0tcHJvamVjdGlvbiAuY2hlc3NpbWFscy1ib2FyZC1mcmFtZSB7XG4gICAgICAgIGZsZXgtYmFzaXM6IGF1dG87XG4gICAgICAgIG1heC13aWR0aDogbm9uZTtcbiAgICAgIH1cblxuICAgICAgQG1lZGlhIChtaW4td2lkdGg6IDc2MHB4KSB7XG4gICAgICAgIC5jaGVzc2ltYWxzLWdhbWUge1xuICAgICAgICAgIGdhcDogMXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLXR1cm4tY2FyZCxcbiAgICAgICAgLmNoZXNzaW1hbHMtc3RhdHVzLFxuICAgICAgICAuY2hlc3NpbWFscy1hcmVuYSxcbiAgICAgICAgLmNoZXNzaW1hbHMtcmVwbGF5LFxuICAgICAgICAuY2hlc3NpbWFscy1yZXN1bHQsXG4gICAgICAgIC5jaGVzc2ltYWxzLWFjdGlvbnMge1xuICAgICAgICAgIGdyaWQtY29sdW1uOiAxIC8gLTE7XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1hcmVuYSB7XG4gICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBtaW5tYXgoMCwgMWZyKTtcbiAgICAgICAgICBqdXN0aWZ5LWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgYWxpZ24taXRlbXM6IHN0YXJ0O1xuICAgICAgICAgIGdhcDogMXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLXBvd2VycyB7XG4gICAgICAgICAgd2lkdGg6IG1pbigxMDAlLCA0NHJlbSk7XG4gICAgICAgICAgYWxpZ24tY29udGVudDogY2VudGVyO1xuICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogbWlubWF4KDExcmVtLCAwLjY4ZnIpIG1pbm1heCgwLCAxZnIpO1xuICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgZ2FwOiAxcmVtO1xuICAgICAgICAgIHBhZGRpbmc6IDFyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1jYXJkcyB7XG4gICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNCwgbWlubWF4KDAsIDFmcikpO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtY2FyZHMgYnV0dG9uIHtcbiAgICAgICAgICBtaW4taGVpZ2h0OiA1cmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtcG93ZXJzIHAge1xuICAgICAgICAgIC13ZWJraXQtbGluZS1jbGFtcDogMztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ydWxlcyB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMXJlbTtcbiAgICAgICAgcGFkZGluZy10b3A6IDAuMjVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXNldHRpbmdzIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjg1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1zZXR0aW5ncyBhcnRpY2xlIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAwLjY1cmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjlyZW07XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMTYpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxcmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LXJnYiksIDAuMDgpLCB0cmFuc3BhcmVudCksXG4gICAgICAgICAgdmFyKC0taW9uLWNhcmQtYmFja2dyb3VuZCwgI2ZmZik7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWFib3V0IHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAganVzdGlmeS1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDFyZW07XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tdGV4dC1jb2xvciwgdmFyKC0tY2hlc3NpbWFscy10ZXh0KSk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWFib3V0X19sb2dvIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHdpZHRoOiBtaW4oMzByZW0sIDEwMCUpO1xuICAgICAgICBhc3BlY3QtcmF0aW86IDEyODAgLyA2OTg7XG4gICAgICAgIG9iamVjdC1maXQ6IGNvdmVyO1xuICAgICAgICBvYmplY3QtcG9zaXRpb246IGNlbnRlcjtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMS4yNXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogI2ZmZjtcbiAgICAgICAgYm94LXNoYWRvdzogMCAxcmVtIDJyZW0gcmdiYSg0NiwgNTgsIDQ0LCAwLjE0KTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYWJvdXQgcCB7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1tZWRpdW0sIHZhcigtLWNoZXNzaW1hbHMtbXV0ZWQpKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjk1cmVtO1xuICAgICAgICBmb250LXdlaWdodDogNzUwO1xuICAgICAgICBsaW5lLWhlaWdodDogMS40NTtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1hYm91dCBkbCB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIGdhcDogMC42NXJlbTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYWJvdXQgZGwgZGl2IHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgICBnYXA6IDFyZW07XG4gICAgICAgIHBhZGRpbmc6IDAuODVyZW0gMC45NXJlbTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xNik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDFyZW07XG4gICAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4wOCksIHRyYW5zcGFyZW50KSxcbiAgICAgICAgICB2YXIoLS1pb24tY2FyZC1iYWNrZ3JvdW5kLCAjZmZmKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYWJvdXQgZHQsXG4gICAgICAuY2hlc3NpbWFscy1hYm91dCBkZCB7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYWJvdXQgZHQge1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLW1lZGl1bSwgdmFyKC0tY2hlc3NpbWFscy1tdXRlZCkpO1xuICAgICAgICBmb250LXNpemU6IDAuNzhyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5NTA7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA2ZW07XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLWFib3V0IGRkIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi10ZXh0LWNvbG9yLCB2YXIoLS1jaGVzc2ltYWxzLXRleHQpKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjk1cmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ydWxlc19faGVybyB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgYXNwZWN0LXJhdGlvOiAxNiAvIDk7XG4gICAgICAgIG9iamVjdC1maXQ6IGNvdmVyO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxLjM1cmVtO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNoZXNzaW1hbHMtcHJpbWFyeS1yZ2IpLCAwLjE4KTtcbiAgICAgICAgYm94LXNoYWRvdzogMCAxcmVtIDIuMjVyZW0gcmdiYSg0NiwgNTgsIDQ0LCAwLjEyKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcnVsZXMgYXJ0aWNsZSB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogYXV0byBtaW5tYXgoMCwgMWZyKTtcbiAgICAgICAgYWxpZ24taXRlbXM6IHN0YXJ0O1xuICAgICAgICBnYXA6IDFyZW07XG4gICAgICAgIHBhZGRpbmc6IDFyZW07XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWlvbi1ib3JkZXItY29sb3IsICNlN2U0ZWEpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxLjI1cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY2FyZC1iYWNrZ3JvdW5kLCAjZmZmKTtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi10ZXh0LWNvbG9yLCAjMmYyYTNhKTtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcnVsZXMgYXJ0aWNsZSA+IHNwYW4ge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgICAgICB3aWR0aDogMnJlbTtcbiAgICAgICAgaGVpZ2h0OiAycmVtO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4xMik7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpO1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ydWxlcyBhcnRpY2xlID4gZGl2IHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgICBnYXA6IDAuNDVyZW07XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXJ1bGVzIGgzLFxuICAgICAgLmNoZXNzaW1hbHMtcnVsZXMgcCxcbiAgICAgIC5jaGVzc2ltYWxzLXJ1bGVzIHVsIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ydWxlcyBoMyB7XG4gICAgICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDk1MDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMjtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtcnVsZXMgcCxcbiAgICAgIC5jaGVzc2ltYWxzLXJ1bGVzIGxpIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1tZWRpdW0sICM2ZjZhN2EpO1xuICAgICAgICBsaW5lLWhlaWdodDogMS41O1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1ydWxlcyB1bCB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdhcDogMC40NXJlbTtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAxLjE1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wcmltYXJ5LFxuICAgICAgLmNoZXNzaW1hbHMtc2Vjb25kYXJ5IHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICBnYXA6IDAuNXJlbTtcbiAgICAgICAgbWluLWhlaWdodDogMy42MjVyZW07XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBmb250OiBpbmhlcml0O1xuICAgICAgICBmb250LXdlaWdodDogOTUwO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wcmltYXJ5IHtcbiAgICAgICAgYm9yZGVyOiAwO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnkpO1xuICAgICAgICBjb2xvcjogdmFyKC0tY2hlc3NpbWFscy1wcmltYXJ5LWNvbnRyYXN0KTtcbiAgICAgICAgYm94LXNoYWRvdzogMCAxLjEyNXJlbSAyLjhyZW0gcmdiYSh2YXIoLS1jaGVzc2ltYWxzLXByaW1hcnktcmdiKSwgMC4yOCk7XG4gICAgICB9XG5cbiAgICAgIC5jaGVzc2ltYWxzLXNlY29uZGFyeSB7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNoZXNzaW1hbHMtYm9yZGVyKTtcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jaGVzc2ltYWxzLXRleHQpO1xuICAgICAgfVxuXG4gICAgICAuY2hlc3NpbWFscy1wcmltYXJ5LmlzLXdvcmtpbmcsXG4gICAgICAuY2hlc3NpbWFscy1zZWNvbmRhcnkuaXMtd29ya2luZyB7XG4gICAgICAgIGN1cnNvcjogd2FpdDtcbiAgICAgICAgb3BhY2l0eTogMC44MjtcbiAgICAgIH1cblxuICAgICAgLmNoZXNzaW1hbHMtYnV0dG9uLXNwaW5uZXIge1xuICAgICAgICB3aWR0aDogMXJlbTtcbiAgICAgICAgaGVpZ2h0OiAxcmVtO1xuICAgICAgICBmbGV4OiAwIDAgYXV0bztcbiAgICAgICAgYm9yZGVyOiAwLjE0cmVtIHNvbGlkIGN1cnJlbnRDb2xvcjtcbiAgICAgICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIGFuaW1hdGlvbjogY2hlc3NpbWFscy1zcGluIDcyMG1zIGxpbmVhciBpbmZpbml0ZTtcbiAgICAgIH1cblxuICAgICAgQG1lZGlhIChtYXgtd2lkdGg6IDU2MHB4KSB7XG4gICAgICAgIC5jaGVzc2ltYWxzLXNpemUsXG4gICAgICAgIC5jaGVzc2ltYWxzLW1vZGUsXG4gICAgICAgIC5jaGVzc2ltYWxzLWFjdGlvbnMge1xuICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtZ2FtZSB7XG4gICAgICAgICAgZ2FwOiAwLjU1cmVtO1xuICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDEuMjVyZW07XG4gICAgICAgICAgcGFkZGluZzogMC42MjVyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy10dXJuLWNhcmQge1xuICAgICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBtaW5tYXgoMCwgMWZyKSBhdXRvO1xuICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgZ2FwOiAwLjVyZW07XG4gICAgICAgICAgbWluLWhlaWdodDogMDtcbiAgICAgICAgICBib3JkZXItcmFkaXVzOiAwLjk1cmVtO1xuICAgICAgICAgIHBhZGRpbmc6IDAuNXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLXR1cm4tY2FyZF9fY29weSB7XG4gICAgICAgICAgZ2FwOiAwLjFyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy10dXJuLWNhcmRfX2NoaXAge1xuICAgICAgICAgIG1heC13aWR0aDogMTAwJTtcbiAgICAgICAgICBwYWRkaW5nOiAwLjE4cmVtIDAuNXJlbTtcbiAgICAgICAgICBmb250LXNpemU6IDAuNnJlbTtcbiAgICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wNDVlbTtcbiAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy10dXJuLWNhcmQgc3Ryb25nIHtcbiAgICAgICAgICBmb250LXNpemU6IGNsYW1wKDAuOTJyZW0sIDQuNHZ3LCAxLjEycmVtKTtcbiAgICAgICAgICBsaW5lLWhlaWdodDogMS4wODtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLXR1cm4tY2FyZCBwIHtcbiAgICAgICAgICBkaXNwbGF5OiAtd2Via2l0LWJveDtcbiAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICAgIGZvbnQtc2l6ZTogMC43MnJlbTtcbiAgICAgICAgICBsaW5lLWhlaWdodDogMS4yO1xuICAgICAgICAgIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7XG4gICAgICAgICAgLXdlYmtpdC1saW5lLWNsYW1wOiAxO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtcGxheWVyLXN0cmlwIHtcbiAgICAgICAgICB3aWR0aDogYXV0bztcbiAgICAgICAgICBtYXgtd2lkdGg6IG5vbmU7XG4gICAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgICAgIHBhZGRpbmc6IDAuMjVyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1wbGF5ZXItc3RyaXBfX2F2YXRhciB7XG4gICAgICAgICAgZmxleDogMCAwIDEuOHJlbTtcbiAgICAgICAgICB3aWR0aDogMS44cmVtO1xuICAgICAgICAgIGhlaWdodDogMS44cmVtO1xuICAgICAgICAgIGFzcGVjdC1yYXRpbzogMSAvIDE7XG4gICAgICAgIH1cblxuICAgICAgICA6aG9zdCA6Om5nLWRlZXAgLmNoZXNzaW1hbHMtcGxheWVyLXN0cmlwIC5jaGVzc2ltYWxzLXR1cm4tYXZhdGFyIHtcbiAgICAgICAgICB3aWR0aDogMS44cmVtO1xuICAgICAgICAgIG1pbi13aWR0aDogMS44cmVtO1xuICAgICAgICAgIGhlaWdodDogMS44cmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtcGxheWVyLXN0cmlwX190ZXh0IHtcbiAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtc3RhdHVzIHtcbiAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgzLCBtaW5tYXgoMCwgMWZyKSk7XG4gICAgICAgICAgZ2FwOiAwLjNyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1zdGF0dXMgZGl2IHtcbiAgICAgICAgICBnYXA6IDAuMTRyZW07XG4gICAgICAgICAgbWluLWhlaWdodDogMi4ycmVtO1xuICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDAuODJyZW07XG4gICAgICAgICAgcGFkZGluZzogMC4zNHJlbSAwLjNyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1zdGF0dXMgc21hbGwge1xuICAgICAgICAgIGZvbnQtc2l6ZTogMC41OHJlbTtcbiAgICAgICAgICBsaW5lLWhlaWdodDogMS4wNTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLXN0YXR1cyBzdHJvbmcge1xuICAgICAgICAgIGZvbnQtc2l6ZTogY2xhbXAoMC43OHJlbSwgMy4ydncsIDAuOTRyZW0pO1xuICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjA1O1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtdGlwLFxuICAgICAgICAuY2hlc3NpbWFscy1yZXN1bHQsXG4gICAgICAgIC5jaGVzc2ltYWxzLXJlcGxheSxcbiAgICAgICAgLmNoZXNzaW1hbHMtb25saW5lLXN0YXR1cyxcbiAgICAgICAgLmNoZXNzaW1hbHMtdHV0b3JpYWwge1xuICAgICAgICAgIGdhcDogMC4ycmVtO1xuICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDFyZW07XG4gICAgICAgICAgcGFkZGluZzogMC43cmVtIDAuNzVyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy10aXAgc3Ryb25nLFxuICAgICAgICAuY2hlc3NpbWFscy1yZXN1bHQgc3Ryb25nLFxuICAgICAgICAuY2hlc3NpbWFscy1yZXBsYXkgc3Ryb25nLFxuICAgICAgICAuY2hlc3NpbWFscy10dXRvcmlhbCBzdHJvbmcge1xuICAgICAgICAgIGZvbnQtc2l6ZTogMC45NXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLXRpcCBwLFxuICAgICAgICAuY2hlc3NpbWFscy1yZXN1bHQgcCB7XG4gICAgICAgICAgZm9udC1zaXplOiAwLjlyZW07XG4gICAgICAgICAgbGluZS1oZWlnaHQ6IDEuMjg7XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1yZXN1bHRfX3N0YXRzIHtcbiAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCBtaW5tYXgoMCwgMWZyKSk7XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1yZXBsYXkge1xuICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtdHV0b3JpYWwge1xuICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtcmVwbGF5X19hY3Rpb25zIHtcbiAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHN0cmV0Y2g7XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1yZXBsYXlfX2FjdGlvbnMgLmNoZXNzaW1hbHMtc2Vjb25kYXJ5IHtcbiAgICAgICAgICBmbGV4OiAxIDEgOHJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLWFyZW5hIHtcbiAgICAgICAgICBnYXA6IDAuNXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLWJvYXJkLXdyYXAge1xuICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgIG1hcmdpbi1pbmxpbmU6IDA7XG4gICAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLWJvYXJkLWZyYW1lIHtcbiAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLXBvd2VycyB7XG4gICAgICAgICAgZ2FwOiAwLjVyZW07XG4gICAgICAgICAgYm9yZGVyLXJhZGl1czogMXJlbTtcbiAgICAgICAgICBwYWRkaW5nOiAwLjU1cmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtcG93ZXJzX19oZWFkaW5nIHtcbiAgICAgICAgICBnYXA6IDAuNHJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLXBvd2VycyBoMiB7XG4gICAgICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtcG93ZXJzX19oZWFkaW5nIHNwYW4ge1xuICAgICAgICAgIHBhZGRpbmc6IDAuMjJyZW0gMC40OHJlbTtcbiAgICAgICAgICBmb250LXNpemU6IDAuNjhyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1wb3dlcnMgcCB7XG4gICAgICAgICAgZm9udC1zaXplOiAwLjc4cmVtO1xuICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjI7XG4gICAgICAgICAgLXdlYmtpdC1saW5lLWNsYW1wOiAxO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtY2FyZHMge1xuICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDQsIG1pbm1heCgwLCAxZnIpKTtcbiAgICAgICAgICBnYXA6IDAuMzVyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1jYXJkcyBidXR0b24ge1xuICAgICAgICAgIGdhcDogMC4yNXJlbTtcbiAgICAgICAgICBtaW4taGVpZ2h0OiAzLjk1cmVtO1xuICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDAuODVyZW07XG4gICAgICAgICAgcGFkZGluZzogMC4zNHJlbSAwLjIycmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoZXNzaW1hbHMtYW5pbWFsLWZhY2Uge1xuICAgICAgICAgIHdpZHRoOiAyLjM1cmVtO1xuICAgICAgICAgIGhlaWdodDogMi4zNXJlbTtcbiAgICAgICAgICBwYWRkaW5nOiAwLjI2cmVtO1xuICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDAuODVyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1hbmltYWwtZmFjZSBpbWcge1xuICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDAuNTVyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1jYXJkcyBzdHJvbmcge1xuICAgICAgICAgIGZvbnQtc2l6ZTogMC42MnJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLWJvYXJkIHtcbiAgICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1jaGVzc2ltYWxzLWJvYXJkLXJhZGl1cyk7XG4gICAgICAgIH1cblxuICAgICAgICAuY2hlc3NpbWFscy1jZWxsLWNvb3JkaW5hdGUge1xuICAgICAgICAgIGZvbnQtc2l6ZTogMC41OHJlbTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBAbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkge1xuICAgICAgICAuY2hlc3NpbWFscy1jZWxsLmlzLWNhcHR1cmUsXG4gICAgICAgIC5jaGVzc2ltYWxzLWNlbGwuaXMtY2FwdHVyZTo6YmVmb3JlLFxuICAgICAgICAuY2hlc3NpbWFscy1jZWxsLmlzLWNhcHR1cmU6OmFmdGVyLFxuICAgICAgICAuY2hlc3NpbWFscy1jZWxsLmhhcy1tb3ZlLWVmZmVjdCxcbiAgICAgICAgLmNoZXNzaW1hbHMtY2VsbC5oYXMtbW92ZS1lZmZlY3Q6OmJlZm9yZSxcbiAgICAgICAgLmNoZXNzaW1hbHMtY2VsbC5oYXMtbW92ZS1lZmZlY3Q6OmFmdGVyLFxuICAgICAgICAuY2hlc3NpbWFscy1jZWxsLmhhcy1jYXB0dXJlLWVmZmVjdCxcbiAgICAgICAgLmNoZXNzaW1hbHMtbW92aW5nLXBpZWNlIHtcbiAgICAgICAgICBhbmltYXRpb246IG5vbmUgIWltcG9ydGFudDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGVzc2ltYWxzLW1vdmluZy1waWVjZSB7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoXG4gICAgICAgICAgICBjYWxjKHZhcigtLXRvLWNvbCkgKiAxMDAlKSxcbiAgICAgICAgICAgIGNhbGModmFyKC0tdG8tcm93KSAqIDEwMCUpXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIGAsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIENoZXNzaW1hbHNHYW1lQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIHJlYWRvbmx5IGkxOG4gPSBpbmplY3QoSTE4blNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IGF1ZGlvID0gaW5qZWN0KFJldHJvQXVkaW9TZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBvbmxpbmUgPSBpbmplY3QoQ2hlc3NpbWFsc09ubGluZVNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IGNoYWxsZW5nZVByb2dyZXNzID0gaW5qZWN0KENoZXNzaW1hbHNDaGFsbGVuZ2VQcm9ncmVzc1NlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuICBwcml2YXRlIHJlYWRvbmx5IHRvYXN0ID0gaW5qZWN0KFRvYXN0U2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgYXV0aCA9IGluamVjdChBdXRoU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgaGFwdGljcyA9IGluamVjdChIYXB0aWNzU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgcGxheWVyUHJvZmlsZXMgPSBpbmplY3QoTWluaUdhbWVQbGF5ZXJQcm9maWxlU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgbmdab25lID0gaW5qZWN0KE5nWm9uZSk7XG4gIHByaXZhdGUgYm9hcmRPcmllbnRhdGlvblRpbWVyOiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PiB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBtb3ZlQW5pbWF0aW9uVGltZXI6IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+IHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIGJvdFR1cm5UaW1lcjogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4gfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgcm91dGVTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gIHByaXZhdGUgb25saW5lU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgaGlzdG9yeVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIGNoYWxsZW5nZVN0YXRzU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgY2hhbGxlbmdlUnVuc1N1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIGNoYWxsZW5nZUFjdGl2ZVJ1blN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIGhpc3RvcnlVaWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBoaXN0b3J5V2F0Y2hUaW1lcjogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4gfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgbW92ZUVmZmVjdFN0YXJ0VGltZXI6IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+IHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIG1vdmVFZmZlY3RDbGVhclRpbWVyOiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PiB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBwb3dlclVubG9ja1RpbWVyOiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PiB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBwZW5kaW5nT25saW5lR2FtZUlkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgb3BlbmluZ09ubGluZUdhbWVJZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIG9wZW5lZE9ubGluZUdhbWVJZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIGxhc3RPdXRjb21lU291bmRLZXk6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBsYXN0Q2hhbGxlbmdlSGFuZGxlZEtleTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIEBWaWV3Q2hpbGQoJ2JvYXJkQW5jaG9yJykgcHJpdmF0ZSBib2FyZEFuY2hvcj86IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gIHJlYWRvbmx5IGJvYXJkU2l6ZXM6IENoZXNzaW1hbHNCb2FyZFNpemVbXSA9IFs2LCA4XTtcbiAgcmVhZG9ubHkgbG9jYWxNb2RlczogQ2hlc3NpbWFsc0xvY2FsTW9kZVtdID0gWydvbmUtZGV2aWNlJywgJ2JvdCddO1xuICByZWFkb25seSBib3REaWZmaWN1bHRpZXM6IENoZXNzaW1hbHNCb3REaWZmaWN1bHR5W10gPSBbJ2Vhc3knLCAnbm9ybWFsJywgJ2hhcmQnXTtcbiAgcmVhZG9ubHkgYm90UHJvZmlsZXMgPSBDSEVTU0lNQUxTX0JPVF9QUk9GSUxFUztcbiAgcmVhZG9ubHkgY2hhbGxlbmdlTGFkZGVyID0gQ0hFU1NJTUFMU19DSEFMTEVOR0VfTEFEREVSO1xuICByZWFkb25seSBhbmltYWxzID0gQU5JTUFMUztcbiAgcmVhZG9ubHkgdmFsdGVjaENvbXBvbmVudHNWZXJzaW9uID0gVkFMVEVDSF9DT01QT05FTlRTX1ZFUlNJT047XG4gIHJlYWRvbmx5IHNjcmVlbiA9IHNpZ25hbDwnaG9tZScgfCAnZ2FtZSc+KCdob21lJyk7XG4gIHJlYWRvbmx5IHNlbGVjdGVkQm9hcmRTaXplID0gc2lnbmFsPENoZXNzaW1hbHNCb2FyZFNpemU+KDYpO1xuICByZWFkb25seSBzZWxlY3RlZExvY2FsTW9kZSA9IHNpZ25hbDxDaGVzc2ltYWxzTG9jYWxNb2RlPignb25lLWRldmljZScpO1xuICByZWFkb25seSBzZWxlY3RlZEJvdERpZmZpY3VsdHkgPSBzaWduYWw8Q2hlc3NpbWFsc0JvdERpZmZpY3VsdHk+KCdub3JtYWwnKTtcbiAgcmVhZG9ubHkgc2VsZWN0ZWRCb3RQcm9maWxlSWQgPSBzaWduYWw8Q2hlc3NpbWFsc0JvdFByb2ZpbGVJZD4oJ2h1bnRlcicpO1xuICByZWFkb25seSBnYW1lQm90UHJvZmlsZUlkID0gc2lnbmFsPENoZXNzaW1hbHNCb3RQcm9maWxlSWQgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IGdhbWUgPSBzaWduYWw8Q2hlc3NpbWFsc0dhbWVTdGF0ZT4oY3JlYXRlQ2hlc3NpbWFsc0dhbWUoNikpO1xuICByZWFkb25seSBjaGFsbGVuZ2VQaGFzZSA9IHNpZ25hbDxDaGVzc2ltYWxzQ2hhbGxlbmdlUGhhc2U+KCdpZGxlJyk7XG4gIHJlYWRvbmx5IGNoYWxsZW5nZVJ1biA9IHNpZ25hbDxDaGVzc2ltYWxzQ2hhbGxlbmdlUnVuIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICByZWFkb25seSBjaGFsbGVuZ2VTdGF0cyA9IHNpZ25hbDxDaGVzc2ltYWxzQ2hhbGxlbmdlU3RhdHM+KHRoaXMuY2hhbGxlbmdlUHJvZ3Jlc3MuZW1wdHlTdGF0cygpKTtcbiAgcmVhZG9ubHkgY2hhbGxlbmdlSGlzdG9yeSA9IHNpZ25hbDxDaGVzc2ltYWxzQ2hhbGxlbmdlUnVuW10+KFtdKTtcbiAgcmVhZG9ubHkgYWN0aXZlU3RvcmVkQ2hhbGxlbmdlUnVuID0gc2lnbmFsPENoZXNzaW1hbHNDaGFsbGVuZ2VSdW4gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IGNoYWxsZW5nZUxhc3RXb24gPSBzaWduYWw8Ym9vbGVhbiB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgY2hhbGxlbmdlTGFzdEJvdCA9IHNpZ25hbDxDaGVzc2ltYWxzQ2hhbGxlbmdlQm90IHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICByZWFkb25seSBjaGFsbGVuZ2VMYXN0Um91bmRTdGF0cyA9IHNpZ25hbDxDaGVzc2ltYWxzQ2hhbGxlbmdlUm91bmRTdGF0cyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgY2hhbGxlbmdlTmV3UmVjb3JkID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgc2VsZWN0ZWRQaWVjZUlkID0gc2lnbmFsPHN0cmluZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgc2VsZWN0ZWRBbmltYWwgPSBzaWduYWw8Q2hlc3NpbWFsc0FuaW1hbFR5cGUgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IGlzUnVsZXNNb2RhbE9wZW4gPSBzaWduYWwoZmFsc2UpO1xuICByZWFkb25seSBpc1NldHRpbmdzTW9kYWxPcGVuID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgaXNBYm91dE1vZGFsT3BlbiA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IHR1dG9yaWFsTW9kZSA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IGlzQm9hcmRPcmllbnRpbmcgPSBzaWduYWwoZmFsc2UpO1xuICByZWFkb25seSBtb3ZpbmdQaWVjZSA9IHNpZ25hbDxDaGVzc2ltYWxzTW92aW5nUGllY2VWaWV3IHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICByZWFkb25seSBtb3ZlRWZmZWN0ID0gc2lnbmFsPENoZXNzaW1hbHNNb3ZlRWZmZWN0VmlldyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgcG93ZXJVbmxvY2tQdWxzZSA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IG1vdmVUcmFpbCA9IGNvbXB1dGVkPENoZXNzaW1hbHNNb3ZlVHJhaWxWaWV3IHwgdW5kZWZpbmVkPigoKSA9PiB7XG4gICAgY29uc3QgZWZmZWN0ID0gdGhpcy5tb3ZlRWZmZWN0KCk7XG4gICAgaWYgKCFlZmZlY3QpIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCBib2FyZFNpemUgPSB0aGlzLmdhbWUoKS5ib2FyZFNpemU7XG4gICAgY29uc3QgZnJvbUNvbCA9IHRoaXMuZGlzcGxheUNvbEluZGV4KGVmZmVjdC5mcm9tLmNvbCkgKyAwLjU7XG4gICAgY29uc3QgZnJvbVJvdyA9IHRoaXMuZGlzcGxheVJvd0luZGV4KGVmZmVjdC5mcm9tLnJvdykgKyAwLjU7XG4gICAgY29uc3QgdG9Db2wgPSB0aGlzLmRpc3BsYXlDb2xJbmRleChlZmZlY3QudG8uY29sKSArIDAuNTtcbiAgICBjb25zdCB0b1JvdyA9IHRoaXMuZGlzcGxheVJvd0luZGV4KGVmZmVjdC50by5yb3cpICsgMC41O1xuICAgIGNvbnN0IGZyb21YID0gKGZyb21Db2wgLyBib2FyZFNpemUpICogMTAwO1xuICAgIGNvbnN0IGZyb21ZID0gKGZyb21Sb3cgLyBib2FyZFNpemUpICogMTAwO1xuICAgIGNvbnN0IGR4ID0gKCh0b0NvbCAtIGZyb21Db2wpIC8gYm9hcmRTaXplKSAqIDEwMDtcbiAgICBjb25zdCBkeSA9ICgodG9Sb3cgLSBmcm9tUm93KSAvIGJvYXJkU2l6ZSkgKiAxMDA7XG4gICAgY29uc3QgbGVuZ3RoID0gTWF0aC5tYXgoMTAsIE1hdGguaHlwb3QoZHgsIGR5KSk7XG4gICAgY29uc3QgYW5nbGUgPSBNYXRoLmF0YW4yKGR5LCBkeCkgKiAoMTgwIC8gTWF0aC5QSSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgeDogYCR7ZnJvbVh9JWAsXG4gICAgICB5OiBgJHtmcm9tWX0lYCxcbiAgICAgIGxlbmd0aDogYCR7bGVuZ3RofSVgLFxuICAgICAgYW5nbGU6IGAke2FuZ2xlfWRlZ2AsXG4gICAgICBhbmltYWw6IGVmZmVjdC5hbmltYWwsXG4gICAgICBjYXB0dXJlOiBlZmZlY3QuY2FwdHVyZSxcbiAgICB9O1xuICB9KTtcbiAgcmVhZG9ubHkgYm90VGhpbmtpbmcgPSBzaWduYWwoZmFsc2UpO1xuICByZWFkb25seSBjb25maXJtQWN0aW9uID0gc2lnbmFsPENoZXNzaW1hbHNDb25maXJtQWN0aW9uIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpcm1lZEFjdGlvbiA9IHNpZ25hbDxDaGVzc2ltYWxzQ29uZmlybUFjdGlvbiB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgb25saW5lSm9pbkNvZGUgPSBzaWduYWwoJycpO1xuICByZWFkb25seSBvbmxpbmVMb2FkaW5nID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgb25saW5lQWN0aW9uID0gc2lnbmFsPCdjcmVhdGUnIHwgJ2pvaW4nIHwgJ2FjY2VwdCcgfCAncmVqZWN0JyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgb25saW5lRXJyb3IgPSBzaWduYWwoJycpO1xuICByZWFkb25seSBvbmxpbmVVaWQgPSBzaWduYWw8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICByZWFkb25seSBvbmxpbmVIaXN0b3J5ID0gc2lnbmFsPENoZXNzaW1hbHNIaXN0b3J5RW50cnlbXT4oW10pO1xuICByZWFkb25seSByZXN1bWVTcGxhc2hWaXNpYmxlID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgcmVtYXRjaExvYWRpbmcgPSBzaWduYWwoZmFsc2UpO1xuICByZWFkb25seSBtb3ZlU3luY2luZyA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IG9ubGluZUNvbm5lY3Rpb25TdGF0ZSA9IHNpZ25hbDwnaWRsZScgfCAnY29ubmVjdGluZycgfCAnbGl2ZScgfCAnZXJyb3InPignaWRsZScpO1xuICByZWFkb25seSByZXZpZXdJbmRleCA9IHNpZ25hbDxudW1iZXIgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IGxvZ2dlZEluVXNlciA9IHRoaXMuYXV0aC51c2VyO1xuICByZWFkb25seSBsb2NhbFBsYXllclByb2ZpbGUgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnBsYXllclByb2ZpbGVzLmFjdGl2ZVByb2ZpbGUoKSk7XG4gIHJlYWRvbmx5IGxvY2FsUGxheWVyQXZhdGFyID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5sb2NhbFBsYXllclByb2ZpbGUoKT8uYXZhdGFyID8/ICfwn4yfJyk7XG4gIHJlYWRvbmx5IGxvZ2dlZFBsYXllck5hbWUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgdXNlciA9IHRoaXMubG9nZ2VkSW5Vc2VyKCk7XG4gICAgaWYgKHVzZXI/Lm5hbWU/LnRyaW0oKSkgcmV0dXJuIHVzZXIubmFtZS50cmltKCk7XG4gICAgaWYgKHVzZXI/LmVtYWlsPy50cmltKCkpIHJldHVybiB1c2VyLmVtYWlsLnRyaW0oKTtcbiAgICByZXR1cm4gdGhpcy5wbGF5ZXJQcm9maWxlcy5kaXNwbGF5TmFtZSh0aGlzLmxvY2FsUGxheWVyUHJvZmlsZSgpLCB0aGlzLnQoJ2RlZmF1bHRQbGF5ZXJOYW1lJykpO1xuICB9KTtcbiAgcmVhZG9ubHkgbG9nZ2VkUGxheWVySGFuZGxlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHVzZXIgPSB0aGlzLmxvZ2dlZEluVXNlcigpO1xuICAgIGNvbnN0IGhhbmRsZSA9IHVzZXI/LmhhbmRsZT8udHJpbSgpO1xuICAgIGlmIChoYW5kbGUpIHJldHVybiBoYW5kbGUuc3RhcnRzV2l0aCgnQCcpID8gaGFuZGxlIDogYEAke2hhbmRsZX1gO1xuICAgIGlmICh1c2VyPy51c2VySWQpIHJldHVybiBgSUQgJHt0aGlzLnNob3J0VXNlcklkKHVzZXIudXNlcklkKX1gO1xuICAgIGNvbnN0IHByb2ZpbGVJZCA9IHRoaXMubG9jYWxQbGF5ZXJQcm9maWxlKCk/LmlkO1xuICAgIHJldHVybiBwcm9maWxlSWQgPyBgSUQgJHt0aGlzLnNob3J0VXNlcklkKHByb2ZpbGVJZCl9YCA6ICcnO1xuICB9KTtcbiAgcmVhZG9ubHkgbG9nZ2VkUGxheWVyQXZhdGFyUHJvcHMgPSBjb21wdXRlZDxVc2VyQXZhdGFyTWV0YWRhdGE+KCgpID0+ICh7XG4gICAgdXNlcjogdGhpcy5sb2dnZWRJblVzZXIoKSxcbiAgICBzaXplOiAnc21hbGwnLFxuICAgIGJvcmRlcmVkOiB0cnVlLFxuICAgIGNzc0NsYXNzOiAnY2hlc3NpbWFscy10dXJuLWF2YXRhcicsXG4gIH0pKTtcbiAgcmVhZG9ubHkgbXVzaWNFbmFibGVkQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCh0aGlzLmF1ZGlvLm11c2ljRW5hYmxlZCgpLCB7IG5vbk51bGxhYmxlOiB0cnVlIH0pO1xuICByZWFkb25seSBzZnhFbmFibGVkQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCh0aGlzLmF1ZGlvLnNmeEVuYWJsZWQoKSwgeyBub25OdWxsYWJsZTogdHJ1ZSB9KTtcbiAgcmVhZG9ubHkgbXVzaWNWb2x1bWVDb250cm9sID0gbmV3IEZvcm1Db250cm9sKE1hdGgucm91bmQodGhpcy5hdWRpby5tdXNpY1ZvbHVtZSgpICogMTAwKSwgeyBub25OdWxsYWJsZTogdHJ1ZSB9KTtcbiAgcmVhZG9ubHkgc2Z4Vm9sdW1lQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbChNYXRoLnJvdW5kKHRoaXMuYXVkaW8uc2Z4Vm9sdW1lKCkgKiAxMDApLCB7IG5vbk51bGxhYmxlOiB0cnVlIH0pO1xuICByZWFkb25seSBtdXNpY1RvZ2dsZVByb3BzID0gY29tcHV0ZWQ8VG9nZ2xlSW5wdXRNZXRhZGF0YT4oKCkgPT4gKHtcbiAgICBjb250cm9sOiB0aGlzLm11c2ljRW5hYmxlZENvbnRyb2wsXG4gICAgbGFiZWw6IHRoaXMudCgnY2hlc3NpbWFsc011c2ljRW5hYmxlZCcpLFxuICAgIGNvbG9yOiAncHJpbWFyeScsXG4gICAganVzdGlmeTogJ3NwYWNlLWJldHdlZW4nLFxuICB9KSk7XG4gIHJlYWRvbmx5IHNmeFRvZ2dsZVByb3BzID0gY29tcHV0ZWQ8VG9nZ2xlSW5wdXRNZXRhZGF0YT4oKCkgPT4gKHtcbiAgICBjb250cm9sOiB0aGlzLnNmeEVuYWJsZWRDb250cm9sLFxuICAgIGxhYmVsOiB0aGlzLnQoJ2NoZXNzaW1hbHNTZnhFbmFibGVkJyksXG4gICAgY29sb3I6ICdwcmltYXJ5JyxcbiAgICBqdXN0aWZ5OiAnc3BhY2UtYmV0d2VlbicsXG4gIH0pKTtcbiAgcmVhZG9ubHkgbXVzaWNWb2x1bWVQcm9wcyA9IGNvbXB1dGVkPFJhbmdlSW5wdXRNZXRhZGF0YT4oKCkgPT4gKHtcbiAgICBjb250cm9sOiB0aGlzLm11c2ljVm9sdW1lQ29udHJvbCxcbiAgICBsYWJlbDogYCR7dGhpcy50KCdjaGVzc2ltYWxzTXVzaWNWb2x1bWUnKX0gwrcgJHtNYXRoLnJvdW5kKHRoaXMuYXVkaW8ubXVzaWNWb2x1bWUoKSAqIDEwMCl9JWAsXG4gICAgbWluOiAwLFxuICAgIG1heDogMTAwLFxuICAgIHN0ZXA6IDUsXG4gICAgcGluOiB0cnVlLFxuICAgIGNvbG9yOiAncHJpbWFyeScsXG4gICAgc3RhcnRMYWJlbDogJzAnLFxuICAgIGVuZExhYmVsOiAnMTAwJyxcbiAgICBwaW5Gb3JtYXR0ZXI6ICh2YWx1ZSkgPT4gYCR7dmFsdWV9JWAsXG4gIH0pKTtcbiAgcmVhZG9ubHkgc2Z4Vm9sdW1lUHJvcHMgPSBjb21wdXRlZDxSYW5nZUlucHV0TWV0YWRhdGE+KCgpID0+ICh7XG4gICAgY29udHJvbDogdGhpcy5zZnhWb2x1bWVDb250cm9sLFxuICAgIGxhYmVsOiBgJHt0aGlzLnQoJ2NoZXNzaW1hbHNTZnhWb2x1bWUnKX0gwrcgJHtNYXRoLnJvdW5kKHRoaXMuYXVkaW8uc2Z4Vm9sdW1lKCkgKiAxMDApfSVgLFxuICAgIG1pbjogMCxcbiAgICBtYXg6IDEwMCxcbiAgICBzdGVwOiA1LFxuICAgIHBpbjogdHJ1ZSxcbiAgICBjb2xvcjogJ3ByaW1hcnknLFxuICAgIHN0YXJ0TGFiZWw6ICcwJyxcbiAgICBlbmRMYWJlbDogJzEwMCcsXG4gICAgcGluRm9ybWF0dGVyOiAodmFsdWUpID0+IGAke3ZhbHVlfSVgLFxuICB9KSk7XG4gIHJlYWRvbmx5IGF2YWlsYWJsZUJvdFByb2ZpbGVzID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLmJvdFByb2ZpbGVzLmZpbHRlcigocHJvZmlsZSkgPT4gcHJvZmlsZS5kaWZmaWN1bHR5ID09PSB0aGlzLnNlbGVjdGVkQm90RGlmZmljdWx0eSgpKSxcbiAgKTtcbiAgcmVhZG9ubHkgc2VsZWN0ZWRCb3RQcm9maWxlID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLmJvdFByb2ZpbGVzLmZpbmQoKHByb2ZpbGUpID0+IHByb2ZpbGUuaWQgPT09IHRoaXMuc2VsZWN0ZWRCb3RQcm9maWxlSWQoKSksXG4gICk7XG4gIHJlYWRvbmx5IGdhbWVCb3RQcm9maWxlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHByb2ZpbGVJZCA9IHRoaXMuZ2FtZUJvdFByb2ZpbGVJZCgpO1xuICAgIHJldHVybiBwcm9maWxlSWQgPyB0aGlzLmJvdFByb2ZpbGVzLmZpbmQoKHByb2ZpbGUpID0+IHByb2ZpbGUuaWQgPT09IHByb2ZpbGVJZCkgOiB1bmRlZmluZWQ7XG4gIH0pO1xuICByZWFkb25seSBhY3RpdmVDaGFsbGVuZ2VCb3QgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgcnVuID0gdGhpcy5jaGFsbGVuZ2VSdW4oKTtcbiAgICBpZiAoIXJ1bikgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICByZXR1cm4gdGhpcy5jaGFsbGVuZ2VMYWRkZXJbTWF0aC5tYXgoMCwgcnVuLmN1cnJlbnRSb3VuZCAtIDEpXTtcbiAgfSk7XG5cbiAgQElucHV0KCkgc2V0IG9ubGluZUdhbWVJZCh2YWx1ZTogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCkge1xuICAgIGNvbnN0IGdhbWVJZCA9IHRoaXMub25saW5lLm5vcm1hbGl6ZUdhbWVJZCh2YWx1ZSA/PyAnJyk7XG4gICAgaWYgKCFnYW1lSWQpIHJldHVybjtcbiAgICB0aGlzLnBlbmRpbmdPbmxpbmVHYW1lSWQgPSBnYW1lSWQ7XG4gICAgaWYgKHRoaXMub3BlbmVkT25saW5lR2FtZUlkICE9PSBnYW1lSWQgJiYgdGhpcy5vcGVuaW5nT25saW5lR2FtZUlkICE9PSBnYW1lSWQpIHtcbiAgICAgIHZvaWQgdGhpcy5vcGVuT25saW5lR2FtZShnYW1lSWQpO1xuICAgIH1cbiAgfVxuICBASW5wdXQoKSBtaW5pR2FtZXNSb3V0ZSA9ICcvbWluaS1nYW1lcyc7XG4gIEBJbnB1dCgpIHByb2plY3Rpb25Nb2RlID0gZmFsc2U7XG5cbiAgcmVhZG9ubHkgcmVwbGF5RW50cmllcyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuZ2FtZSgpLm1vdmVIaXN0b3J5ID8/IFtdKTtcbiAgcmVhZG9ubHkgYWN0aXZlUmV2aWV3SW5kZXggPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgZW50cmllcyA9IHRoaXMucmVwbGF5RW50cmllcygpO1xuICAgIGlmICh0aGlzLmdhbWUoKS5zdGF0dXMgIT09ICdmaW5pc2hlZCcgfHwgZW50cmllcy5sZW5ndGggPD0gMSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMucmV2aWV3SW5kZXgoKSA/PyBlbnRyaWVzLmxlbmd0aCAtIDE7XG4gICAgcmV0dXJuIE1hdGgubWluKE1hdGgubWF4KGluZGV4LCAwKSwgZW50cmllcy5sZW5ndGggLSAxKTtcbiAgfSk7XG4gIHJlYWRvbmx5IGhhc1JlcGxheUNvbnRyb2xzID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5hY3RpdmVSZXZpZXdJbmRleCgpICE9PSB1bmRlZmluZWQpO1xuICByZWFkb25seSByZXZpZXdHYW1lID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5hY3RpdmVSZXZpZXdJbmRleCgpO1xuICAgIGNvbnN0IGVudHJ5ID0gaW5kZXggPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IHRoaXMucmVwbGF5RW50cmllcygpW2luZGV4XTtcbiAgICByZXR1cm4gZW50cnkgPyBjcmVhdGVDaGVzc2ltYWxzUmV2aWV3U3RhdGUodGhpcy5nYW1lKCksIGVudHJ5KSA6IHRoaXMuZ2FtZSgpO1xuICB9KTtcbiAgcmVhZG9ubHkgY3VycmVudFBsYXllciA9IGNvbXB1dGVkKCgpID0+IHRoaXMuZ2FtZSgpLnBsYXllcnNbdGhpcy5nYW1lKCkuY3VycmVudFR1cm5dKTtcbiAgcmVhZG9ubHkgcG93ZXJQbGF5ZXJDb2xvciA9IGNvbXB1dGVkKCgpOiBDaGVzc2ltYWxzUGxheWVyQ29sb3IgPT4ge1xuICAgIGNvbnN0IGdhbWUgPSB0aGlzLmdhbWUoKTtcbiAgICBpZiAoZ2FtZS5tb2RlID09PSAnb25saW5lJykge1xuICAgICAgY29uc3Qgcm9sZSA9IHRoaXMub25saW5lUm9sZSgpO1xuICAgICAgcmV0dXJuIHJvbGUgPT09ICd3aGl0ZScgfHwgcm9sZSA9PT0gJ2JsYWNrJyA/IHJvbGUgOiBnYW1lLmN1cnJlbnRUdXJuO1xuICAgIH1cbiAgICBpZiAodGhpcy5zZWxlY3RlZExvY2FsTW9kZSgpID09PSAnYm90JykgcmV0dXJuICd3aGl0ZSc7XG4gICAgcmV0dXJuIGdhbWUuY3VycmVudFR1cm47XG4gIH0pO1xuICByZWFkb25seSBwb3dlclBsYXllciA9IGNvbXB1dGVkKCgpID0+IHRoaXMuZ2FtZSgpLnBsYXllcnNbdGhpcy5wb3dlclBsYXllckNvbG9yKCldKTtcbiAgcmVhZG9ubHkgY2FuVXNlUG93ZXJDYXJkcyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBnYW1lID0gdGhpcy5nYW1lKCk7XG4gICAgcmV0dXJuIChcbiAgICAgIGdhbWUuc3RhdHVzID09PSAnaW5fcHJvZ3Jlc3MnICYmXG4gICAgICB0aGlzLnBvd2VyUGxheWVyQ29sb3IoKSA9PT0gZ2FtZS5jdXJyZW50VHVybiAmJlxuICAgICAgdGhpcy5jYW5QbGF5Q3VycmVudFR1cm4oKSAmJlxuICAgICAgIXRoaXMuYm90VGhpbmtpbmcoKSAmJlxuICAgICAgIXRoaXMubW92aW5nUGllY2UoKVxuICAgICk7XG4gIH0pO1xuICByZWFkb25seSBsZWdhbE1vdmVzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHBpZWNlSWQgPSB0aGlzLnNlbGVjdGVkUGllY2VJZCgpO1xuICAgIGlmICghcGllY2VJZCkgcmV0dXJuIFtdO1xuICAgIGlmICghdGhpcy5jYW5QbGF5Q3VycmVudFR1cm4oKSkgcmV0dXJuIFtdO1xuICAgIGNvbnN0IG1vdmVzID0gZ2V0Q2hlc3NpbWFsc0xlZ2FsTW92ZXModGhpcy5nYW1lKCksIHBpZWNlSWQsIHRoaXMuc2VsZWN0ZWRBbmltYWwoKSk7XG4gICAgY29uc3QgZXhwZWN0ZWQgPSB0aGlzLnR1dG9yaWFsRXhwZWN0ZWRNb3ZlKCk7XG4gICAgaWYgKCFleHBlY3RlZCkgcmV0dXJuIG1vdmVzO1xuICAgIHJldHVybiBtb3Zlcy5maWx0ZXIoXG4gICAgICAobW92ZSkgPT5cbiAgICAgICAgbW92ZS5waWVjZUlkID09PSBleHBlY3RlZC5waWVjZUlkICYmXG4gICAgICAgIHBvc2l0aW9uS2V5KG1vdmUudG8pID09PSBwb3NpdGlvbktleShleHBlY3RlZC50bykgJiZcbiAgICAgICAgKG1vdmUuYW5pbWFsID8/IHVuZGVmaW5lZCkgPT09IChleHBlY3RlZC5hbmltYWwgPz8gdW5kZWZpbmVkKSxcbiAgICApO1xuICB9KTtcbiAgcmVhZG9ubHkgbGVnYWxNb3ZlS2V5cyA9IGNvbXB1dGVkKCgpID0+IG5ldyBTZXQodGhpcy5sZWdhbE1vdmVzKCkubWFwKChtb3ZlKSA9PiBwb3NpdGlvbktleShtb3ZlLnRvKSkpKTtcbiAgcmVhZG9ubHkgY2FwdHVyZU1vdmVLZXlzID0gY29tcHV0ZWQoXG4gICAgKCkgPT4gbmV3IFNldCh0aGlzLmxlZ2FsTW92ZXMoKS5maWx0ZXIoKG1vdmUpID0+ICEhbW92ZS5jYXB0dXJlc1BpZWNlSWQpLm1hcCgobW92ZSkgPT4gcG9zaXRpb25LZXkobW92ZS50bykpKSxcbiAgKTtcbiAgcmVhZG9ubHkgd2lubmluZ01vdmVLZXlzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGdhbWUgPSB0aGlzLmdhbWUoKTtcbiAgICBpZiAoZ2FtZS5zdGF0dXMgIT09ICdpbl9wcm9ncmVzcycpIHJldHVybiBuZXcgU2V0PHN0cmluZz4oKTtcbiAgICBjb25zdCBwcm9tb3Rpb25Sb3cgPSBnYW1lLmN1cnJlbnRUdXJuID09PSAnd2hpdGUnID8gMCA6IGdhbWUuYm9hcmRTaXplIC0gMTtcbiAgICByZXR1cm4gbmV3IFNldCh0aGlzLmxlZ2FsTW92ZXMoKS5maWx0ZXIoKG1vdmUpID0+IG1vdmUudG8ucm93ID09PSBwcm9tb3Rpb25Sb3cpLm1hcCgobW92ZSkgPT4gcG9zaXRpb25LZXkobW92ZS50bykpKTtcbiAgfSk7XG4gIHJlYWRvbmx5IGNhcHR1cmVSZWFkeVBpZWNlSWRzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGdhbWUgPSB0aGlzLmdhbWUoKTtcbiAgICBpZiAodGhpcy5hY3RpdmVSZXZpZXdJbmRleCgpICE9PSB1bmRlZmluZWQgfHwgZ2FtZS5zdGF0dXMgIT09ICdpbl9wcm9ncmVzcycpIHJldHVybiBuZXcgU2V0PHN0cmluZz4oKTtcbiAgICBjb25zdCBtb3ZlcyA9IHRoaXMuYmFzaWNNb3Zlc0ZvckNvbG9yKGdhbWUsIGdhbWUuY3VycmVudFR1cm4pLmZpbHRlcigobW92ZSkgPT4gISFtb3ZlLmNhcHR1cmVzUGllY2VJZCk7XG4gICAgcmV0dXJuIG5ldyBTZXQobW92ZXMubWFwKChtb3ZlKSA9PiBtb3ZlLnBpZWNlSWQpKTtcbiAgfSk7XG4gIHJlYWRvbmx5IHRocmVhdGVuZWRQaWVjZUlkcyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBnYW1lID0gdGhpcy5nYW1lKCk7XG4gICAgaWYgKHRoaXMuYWN0aXZlUmV2aWV3SW5kZXgoKSAhPT0gdW5kZWZpbmVkIHx8IGdhbWUuc3RhdHVzICE9PSAnaW5fcHJvZ3Jlc3MnKSByZXR1cm4gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgY29uc3Qgb3Bwb25lbnQgPSBnYW1lLmN1cnJlbnRUdXJuID09PSAnd2hpdGUnID8gJ2JsYWNrJyA6ICd3aGl0ZSc7XG4gICAgY29uc3QgdGhyZWF0ZW5lZCA9IHRoaXMuYmFzaWNNb3Zlc0ZvckNvbG9yKGdhbWUsIG9wcG9uZW50KVxuICAgICAgLm1hcCgobW92ZSkgPT4gbW92ZS5jYXB0dXJlc1BpZWNlSWQpXG4gICAgICAuZmlsdGVyKChwaWVjZUlkKTogcGllY2VJZCBpcyBzdHJpbmcgPT4gISFwaWVjZUlkKTtcbiAgICByZXR1cm4gbmV3IFNldCh0aHJlYXRlbmVkKTtcbiAgfSk7XG4gIHJlYWRvbmx5IGlzQWN0aW9uYWJsZVR1cm4gPSBjb21wdXRlZCgoKSA9PlxuICAgIHRoaXMuZ2FtZSgpLnN0YXR1cyA9PT0gJ2luX3Byb2dyZXNzJyAmJiB0aGlzLmNhblBsYXlDdXJyZW50VHVybigpICYmICF0aGlzLmJvdFRoaW5raW5nKCkgJiYgIXRoaXMubW92ZVN5bmNpbmcoKSxcbiAgKTtcbiAgcmVhZG9ubHkgaXNXYWl0aW5nRm9yVHVybiA9IGNvbXB1dGVkKCgpID0+XG4gICAgdGhpcy5nYW1lKCkuc3RhdHVzID09PSAnaW5fcHJvZ3Jlc3MnICYmICF0aGlzLmlzQWN0aW9uYWJsZVR1cm4oKSxcbiAgKTtcbiAgcmVhZG9ubHkgYm9hcmRSb3dzID0gY29tcHV0ZWQoKCkgPT4gQXJyYXkuZnJvbSh7IGxlbmd0aDogdGhpcy5yZXZpZXdHYW1lKCkuYm9hcmRTaXplIH0sIChfLCBpbmRleCkgPT4gaW5kZXgpKTtcbiAgcmVhZG9ubHkgYm9hcmRDb2xzID0gY29tcHV0ZWQoKCkgPT4gQXJyYXkuZnJvbSh7IGxlbmd0aDogdGhpcy5yZXZpZXdHYW1lKCkuYm9hcmRTaXplIH0sIChfLCBpbmRleCkgPT4gaW5kZXgpKTtcbiAgcmVhZG9ubHkgZGlzcGxheVJvd3MgPSBjb21wdXRlZCgoKSA9PlxuICAgIHRoaXMuYm9hcmRPcmllbnRhdGlvbkNvbG9yKCkgPT09ICdibGFjaycgPyBbLi4udGhpcy5ib2FyZFJvd3MoKV0ucmV2ZXJzZSgpIDogdGhpcy5ib2FyZFJvd3MoKSxcbiAgKTtcbiAgcmVhZG9ubHkgZGlzcGxheUNvbHMgPSBjb21wdXRlZCgoKSA9PlxuICAgIHRoaXMuYm9hcmRPcmllbnRhdGlvbkNvbG9yKCkgPT09ICdibGFjaycgPyBbLi4udGhpcy5ib2FyZENvbHMoKV0ucmV2ZXJzZSgpIDogdGhpcy5ib2FyZENvbHMoKSxcbiAgKTtcbiAgcmVhZG9ubHkgYm9hcmRPcmllbnRhdGlvbkNvbG9yID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGdhbWUgPSB0aGlzLmdhbWUoKTtcbiAgICBjb25zdCB1aWQgPSB0aGlzLm9ubGluZVVpZCgpO1xuICAgIGlmICh0aGlzLnR1dG9yaWFsTW9kZSgpKSByZXR1cm4gJ3doaXRlJztcbiAgICBpZiAoZ2FtZS5tb2RlID09PSAnb25saW5lJykgcmV0dXJuIHVpZCA/IHRoaXMub25saW5lLnBhcnRpY2lwYW50U2lkZShnYW1lLCB1aWQpID8/ICd3aGl0ZScgOiAnd2hpdGUnO1xuICAgIGlmIChnYW1lLm1vZGUgPT09ICdsb2NhbCcgJiYgdGhpcy5zZWxlY3RlZExvY2FsTW9kZSgpID09PSAnYm90JykgcmV0dXJuICd3aGl0ZSc7XG4gICAgcmV0dXJuIGdhbWUuY3VycmVudFR1cm47XG4gIH0pO1xuICByZWFkb25seSBvbmxpbmVSb2xlID0gY29tcHV0ZWQoKCk6IENoZXNzaW1hbHNQbGF5ZXJDb2xvciB8ICd3YWl0aW5nJyB8ICdwZW5kaW5nJyB8ICdzcGVjdGF0b3InIHwgdW5kZWZpbmVkID0+IHtcbiAgICBjb25zdCBnYW1lID0gdGhpcy5nYW1lKCk7XG4gICAgY29uc3QgdWlkID0gdGhpcy5vbmxpbmVVaWQoKTtcbiAgICBpZiAoZ2FtZS5tb2RlICE9PSAnb25saW5lJykgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICBpZiAoIXVpZCkgcmV0dXJuICdzcGVjdGF0b3InO1xuICAgIGlmICh0aGlzLm9ubGluZS5pc0hvc3RXYWl0aW5nKGdhbWUsIHVpZCkpIHJldHVybiAnd2FpdGluZyc7XG4gICAgaWYgKHRoaXMub25saW5lLmlzUGVuZGluZ0d1ZXN0KGdhbWUsIHVpZCkpIHJldHVybiAncGVuZGluZyc7XG4gICAgcmV0dXJuIHRoaXMub25saW5lLnBhcnRpY2lwYW50U2lkZShnYW1lLCB1aWQpID8/ICdzcGVjdGF0b3InO1xuICB9KTtcbiAgcmVhZG9ubHkgY2FuUGxheUN1cnJlbnRUdXJuID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGlmICh0aGlzLnByb2plY3Rpb25Nb2RlKSByZXR1cm4gZmFsc2U7XG4gICAgY29uc3QgZ2FtZSA9IHRoaXMuZ2FtZSgpO1xuICAgIGlmIChnYW1lLm1vZGUgPT09ICdsb2NhbCcgJiYgdGhpcy5zZWxlY3RlZExvY2FsTW9kZSgpID09PSAnYm90Jykge1xuICAgICAgcmV0dXJuIGdhbWUuY3VycmVudFR1cm4gIT09IENIRVNTSU1BTFNfQk9UX0NPTE9SICYmICF0aGlzLmJvdFRoaW5raW5nKCk7XG4gICAgfVxuICAgIGlmIChnYW1lLm1vZGUgIT09ICdvbmxpbmUnKSByZXR1cm4gdHJ1ZTtcbiAgICByZXR1cm4gdGhpcy5vbmxpbmVSb2xlKCkgPT09IGdhbWUuY3VycmVudFR1cm47XG4gIH0pO1xuICByZWFkb25seSBjYW5Db250cm9sQ3VycmVudEdhbWUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgaWYgKHRoaXMucHJvamVjdGlvbk1vZGUpIHJldHVybiBmYWxzZTtcbiAgICBjb25zdCBnYW1lID0gdGhpcy5nYW1lKCk7XG4gICAgaWYgKGdhbWUubW9kZSAhPT0gJ29ubGluZScpIHJldHVybiB0cnVlO1xuICAgIGNvbnN0IHJvbGUgPSB0aGlzLm9ubGluZVJvbGUoKTtcbiAgICByZXR1cm4gcm9sZSA9PT0gJ3doaXRlJyB8fCByb2xlID09PSAnYmxhY2snO1xuICB9KTtcbiAgcmVhZG9ubHkgcmVtYXRjaFN0YXRlID0gY29tcHV0ZWQ8Q2hlc3NpbWFsc1JlbWF0Y2hTdGF0ZT4oKCkgPT4ge1xuICAgIGNvbnN0IGdhbWUgPSB0aGlzLmdhbWUoKTtcbiAgICBpZiAoZ2FtZS5tb2RlICE9PSAnb25saW5lJyB8fCBnYW1lLnN0YXR1cyAhPT0gJ2ZpbmlzaGVkJykgcmV0dXJuICdub25lJztcbiAgICBjb25zdCB1aWQgPSB0aGlzLm9ubGluZVVpZCgpO1xuICAgIGlmICghdWlkIHx8IHRoaXMub25saW5lUm9sZSgpID09PSAnc3BlY3RhdG9yJykgcmV0dXJuICdub25lJztcblxuICAgIGNvbnN0IGhhc01pbmUgPSB0aGlzLm9ubGluZS5oYXNDdXJyZW50UmVtYXRjaFJlcXVlc3QoZ2FtZSwgdWlkKTtcbiAgICBjb25zdCBoYXNPdGhlciA9IHRoaXMub25saW5lLmhhc09wcG9uZW50UmVtYXRjaFJlcXVlc3QoZ2FtZSwgdWlkKTtcblxuICAgIGlmIChoYXNPdGhlciAmJiAhaGFzTWluZSkgcmV0dXJuICdpbmNvbWluZyc7XG4gICAgaWYgKGhhc01pbmUpIHJldHVybiAncmVxdWVzdGVkJztcbiAgICByZXR1cm4gJ25vbmUnO1xuICB9KTtcbiAgcmVhZG9ubHkgcmVtYXRjaEFjdGlvbkxhYmVsID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHN0YXRlID0gdGhpcy5yZW1hdGNoU3RhdGUoKTtcbiAgICBpZiAodGhpcy5yZW1hdGNoTG9hZGluZygpKSB7XG4gICAgICByZXR1cm4gdGhpcy50KHN0YXRlID09PSAnaW5jb21pbmcnID8gJ2NoZXNzaW1hbHNBY2NlcHRpbmdSZW1hdGNoJyA6ICdjaGVzc2ltYWxzUmVxdWVzdGluZ1JlbWF0Y2gnKTtcbiAgICB9XG4gICAgaWYgKHN0YXRlID09PSAnaW5jb21pbmcnKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQWNjZXB0UmVtYXRjaCcpO1xuICAgIGlmIChzdGF0ZSA9PT0gJ3JlcXVlc3RlZCcpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNSZW1hdGNoUmVxdWVzdGVkQWN0aW9uJyk7XG4gICAgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc1JlbWF0Y2gnKTtcbiAgfSk7XG4gIHJlYWRvbmx5IHNob3VsZFNob3dPbmxpbmVTdGF0dXMgPSBjb21wdXRlZCgoKSA9PlxuICAgICF0aGlzLnByb2plY3Rpb25Nb2RlICYmIHRoaXMuZ2FtZSgpLm1vZGUgPT09ICdvbmxpbmUnICYmIHRoaXMuZ2FtZSgpLnN0YXR1cyAhPT0gJ3dhaXRpbmcnLFxuICApO1xuICByZWFkb25seSBvbmxpbmVTdGF0dXNUaXRsZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBnYW1lID0gdGhpcy5nYW1lKCk7XG4gICAgY29uc3Qgcm9sZSA9IHRoaXMub25saW5lUm9sZSgpO1xuICAgIGlmICh0aGlzLm9ubGluZUNvbm5lY3Rpb25TdGF0ZSgpID09PSAnY29ubmVjdGluZycgfHwgdGhpcy5tb3ZlU3luY2luZygpKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzT25saW5lU3luY2luZ1RpdGxlJyk7XG4gICAgaWYgKHRoaXMub25saW5lQ29ubmVjdGlvblN0YXRlKCkgPT09ICdlcnJvcicpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNPbmxpbmVEaXNjb25uZWN0ZWRUaXRsZScpO1xuICAgIGlmIChnYW1lLnN0YXR1cyA9PT0gJ2V4cGlyZWQnKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzT25saW5lRXhwaXJlZFRpdGxlJyk7XG4gICAgaWYgKGdhbWUuc3RhdHVzID09PSAnZmluaXNoZWQnKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzT25saW5lRmluaXNoZWRUaXRsZScpO1xuICAgIGlmIChyb2xlID09PSAncGVuZGluZycpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNPbmxpbmVQZW5kaW5nVGl0bGUnKTtcbiAgICBpZiAocm9sZSA9PT0gJ3NwZWN0YXRvcicpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNPbmxpbmVTcGVjdGF0b3JUaXRsZScpO1xuICAgIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNPbmxpbmVDb25uZWN0ZWRUaXRsZScpO1xuICB9KTtcbiAgcmVhZG9ubHkgb25saW5lU3RhdHVzQm9keSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBnYW1lID0gdGhpcy5nYW1lKCk7XG4gICAgY29uc3Qgcm9sZSA9IHRoaXMub25saW5lUm9sZSgpO1xuICAgIGlmICh0aGlzLm9ubGluZUNvbm5lY3Rpb25TdGF0ZSgpID09PSAnY29ubmVjdGluZycgfHwgdGhpcy5tb3ZlU3luY2luZygpKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzT25saW5lU3luY2luZ0JvZHknKTtcbiAgICBpZiAodGhpcy5vbmxpbmVDb25uZWN0aW9uU3RhdGUoKSA9PT0gJ2Vycm9yJykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc09ubGluZURpc2Nvbm5lY3RlZEJvZHknKTtcbiAgICBpZiAoZ2FtZS5zdGF0dXMgPT09ICdleHBpcmVkJykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc09ubGluZUV4cGlyZWRCb2R5Jyk7XG4gICAgaWYgKGdhbWUuc3RhdHVzID09PSAnZmluaXNoZWQnKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzT25saW5lRmluaXNoZWRCb2R5Jyk7XG4gICAgaWYgKHJvbGUgPT09ICdwZW5kaW5nJykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0xvYmJ5R3Vlc3RXYWl0aW5nQm9keScpO1xuICAgIGlmIChyb2xlID09PSAnc3BlY3RhdG9yJykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc09ubGluZVZpZXdlcicpO1xuICAgIGlmICh0aGlzLm9ubGluZVJvbGUoKSA9PT0gdGhpcy5nYW1lKCkuY3VycmVudFR1cm4pIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNZb3VyVHVybkJvZHknKTtcbiAgICByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzV2FpdGluZ1R1cm4nKTtcbiAgfSk7XG4gIHJlYWRvbmx5IHR1dG9yaWFsU3RlcEluZGV4ID0gY29tcHV0ZWQoKCkgPT4gTWF0aC5taW4odGhpcy5nYW1lKCkubW92ZUNvdW50LCBDSEVTU0lNQUxTX1RVVE9SSUFMX1NURVBTKSk7XG4gIHJlYWRvbmx5IHR1dG9yaWFsUHJvZ3Jlc3NMYWJlbCA9IGNvbXB1dGVkKCgpID0+XG4gICAgdGhpcy5nYW1lKCkuc3RhdHVzID09PSAnZmluaXNoZWQnXG4gICAgICA/IHRoaXMudCgnY2hlc3NpbWFsc1R1dG9yaWFsQ29tcGxldGVQcm9ncmVzcycpXG4gICAgICA6IHRoaXMudCgnY2hlc3NpbWFsc1R1dG9yaWFsUHJvZ3Jlc3MnKVxuICAgICAgICAgIC5yZXBsYWNlKCd7c3RlcH0nLCBTdHJpbmcodGhpcy50dXRvcmlhbFN0ZXBJbmRleCgpICsgMSkpXG4gICAgICAgICAgLnJlcGxhY2UoJ3t0b3RhbH0nLCBTdHJpbmcoQ0hFU1NJTUFMU19UVVRPUklBTF9TVEVQUykpLFxuICApO1xuICByZWFkb25seSB0dXRvcmlhbFRpdGxlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGlmICh0aGlzLmdhbWUoKS5zdGF0dXMgPT09ICdmaW5pc2hlZCcpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNUdXRvcmlhbERvbmVUaXRsZScpO1xuICAgIHJldHVybiB0aGlzLnQoYGNoZXNzaW1hbHNUdXRvcmlhbFN0ZXAke3RoaXMudHV0b3JpYWxTdGVwSW5kZXgoKSArIDF9VGl0bGVgKTtcbiAgfSk7XG4gIHJlYWRvbmx5IHR1dG9yaWFsQm9keSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBpZiAodGhpcy5nYW1lKCkuc3RhdHVzID09PSAnZmluaXNoZWQnKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzVHV0b3JpYWxEb25lQm9keScpO1xuICAgIHJldHVybiB0aGlzLnQoYGNoZXNzaW1hbHNUdXRvcmlhbFN0ZXAke3RoaXMudHV0b3JpYWxTdGVwSW5kZXgoKSArIDF9Qm9keWApO1xuICB9KTtcbiAgcmVhZG9ubHkgY3VycmVudFR1cm5UaXRsZSA9IGNvbXB1dGVkKCgpID0+XG4gICAgdGhpcy50KCdjaGVzc2ltYWxzQ3VycmVudFR1cm4nKS5yZXBsYWNlKCd7cGxheWVyfScsIHRoaXMucGxheWVyTGFiZWwodGhpcy5nYW1lKCkuY3VycmVudFR1cm4pKSxcbiAgKTtcbiAgcmVhZG9ubHkgd2luVGl0bGUgPSBjb21wdXRlZCgoKSA9PlxuICAgIHRoaXMudCgnY2hlc3NpbWFsc1dpblRpdGxlJykucmVwbGFjZSgne3BsYXllcn0nLCB0aGlzLndpbm5lckRpc3BsYXlOYW1lKCkpLFxuICApO1xuICByZWFkb25seSB3aW5Cb2R5ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHJlYXNvbiA9IHRoaXMuZ2FtZSgpLndpbm5lclJlYXNvbiA/PyAncHJvbW90aW9uJztcbiAgICBjb25zdCBrZXkgPVxuICAgICAgcmVhc29uID09PSAnZWxpbWluYXRpb24nXG4gICAgICAgID8gJ2NoZXNzaW1hbHNXaW5FbGltaW5hdGlvbidcbiAgICAgICAgOiByZWFzb24gPT09ICdyZXNpZ25hdGlvbidcbiAgICAgICAgICA/ICdjaGVzc2ltYWxzV2luUmVzaWduYXRpb24nXG4gICAgICAgICAgOiAnY2hlc3NpbWFsc1dpblByb21vdGlvbic7XG4gICAgcmV0dXJuIHRoaXMudChrZXkpO1xuICB9KTtcbiAgcmVhZG9ubHkgd2luUmVhc29uTGFiZWwgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgcmVhc29uID0gdGhpcy5nYW1lKCkud2lubmVyUmVhc29uID8/ICdwcm9tb3Rpb24nO1xuICAgIGNvbnN0IGtleSA9XG4gICAgICByZWFzb24gPT09ICdlbGltaW5hdGlvbidcbiAgICAgICAgPyAnY2hlc3NpbWFsc1JlYXNvbkVsaW1pbmF0aW9uJ1xuICAgICAgICA6IHJlYXNvbiA9PT0gJ3Jlc2lnbmF0aW9uJ1xuICAgICAgICAgID8gJ2NoZXNzaW1hbHNSZWFzb25SZXNpZ25hdGlvbidcbiAgICAgICAgICA6ICdjaGVzc2ltYWxzUmVhc29uUHJvbW90aW9uJztcbiAgICByZXR1cm4gdGhpcy50KGtleSk7XG4gIH0pO1xuICByZWFkb25seSBtb3Zlc1N1bW1hcnkgPSBjb21wdXRlZCgoKSA9PlxuICAgIHRoaXMudCgnY2hlc3NpbWFsc01vdmVzU3VtbWFyeScpLnJlcGxhY2UoJ3ttb3Zlc30nLCBgJHt0aGlzLmdhbWUoKS5tb3ZlQ291bnR9YCksXG4gICk7XG4gIHJlYWRvbmx5IHJlc3VsdENhcHR1cmVzID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLnJlcGxheUVudHJpZXMoKS5maWx0ZXIoKGVudHJ5KSA9PiAhIWVudHJ5Lm1vdmU/LmNhcHR1cmVzUGllY2VJZCkubGVuZ3RoLFxuICApO1xuICByZWFkb25seSByZXN1bHRQb3dlcnMgPSBjb21wdXRlZCgoKSA9PlxuICAgIHRoaXMucmVwbGF5RW50cmllcygpXG4gICAgICAubWFwKChlbnRyeSkgPT4gZW50cnkubW92ZT8uYW5pbWFsKVxuICAgICAgLmZpbHRlcigoYW5pbWFsKTogYW5pbWFsIGlzIENoZXNzaW1hbHNBbmltYWxUeXBlID0+ICEhYW5pbWFsKSxcbiAgKTtcbiAgcmVhZG9ubHkgcmVzdWx0U3RhdHMgPSBjb21wdXRlZCgoKSA9PiBbXG4gICAge1xuICAgICAgbGFiZWw6IHRoaXMudCgnY2hlc3NpbWFsc1Jlc3VsdE1vdmVzJyksXG4gICAgICB2YWx1ZTogU3RyaW5nKHRoaXMuZ2FtZSgpLm1vdmVDb3VudCksXG4gICAgfSxcbiAgICB7XG4gICAgICBsYWJlbDogdGhpcy50KCdjaGVzc2ltYWxzUmVzdWx0Q2FwdHVyZXMnKSxcbiAgICAgIHZhbHVlOiBTdHJpbmcodGhpcy5yZXN1bHRDYXB0dXJlcygpKSxcbiAgICB9LFxuICAgIHtcbiAgICAgIGxhYmVsOiB0aGlzLnQoJ2NoZXNzaW1hbHNSZXN1bHRQb3dlcnMnKSxcbiAgICAgIHZhbHVlOiBTdHJpbmcodGhpcy5yZXN1bHRQb3dlcnMoKS5sZW5ndGgpLFxuICAgIH0sXG4gICAge1xuICAgICAgbGFiZWw6IHRoaXMudCgnY2hlc3NpbWFsc1Jlc3VsdFJlYXNvbicpLFxuICAgICAgdmFsdWU6IHRoaXMud2luUmVhc29uTGFiZWwoKSxcbiAgICB9LFxuICBdKTtcbiAgcmVhZG9ubHkgcmVzdWx0UG93ZXJzTGFiZWwgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgcG93ZXJzID0gdGhpcy5yZXN1bHRQb3dlcnMoKTtcbiAgICBpZiAoIXBvd2Vycy5sZW5ndGgpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNSZXN1bHROb1Bvd2VycycpO1xuICAgIHJldHVybiBwb3dlcnMubWFwKChhbmltYWwpID0+IHRoaXMuYW5pbWFsTGFiZWwoYW5pbWFsKSkuam9pbignIMK3ICcpO1xuICB9KTtcbiAgcmVhZG9ubHkgc2hvdWxkU2hvd0JvdFJlcG9ydCA9IGNvbXB1dGVkKCgpID0+XG4gICAgdGhpcy5nYW1lKCkubW9kZSA9PT0gJ2xvY2FsJyAmJlxuICAgIHRoaXMuZ2FtZSgpLnN0YXR1cyA9PT0gJ2ZpbmlzaGVkJyAmJlxuICAgICF0aGlzLnR1dG9yaWFsTW9kZSgpICYmXG4gICAgISF0aGlzLmdhbWVCb3RQcm9maWxlKCksXG4gICk7XG4gIHJlYWRvbmx5IGJvdFJlcG9ydFRpdGxlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHByb2ZpbGUgPSB0aGlzLmdhbWVCb3RQcm9maWxlKCk7XG4gICAgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0JvdFJlcG9ydFZzJykucmVwbGFjZShcbiAgICAgICd7Ym90fScsXG4gICAgICBwcm9maWxlID8gdGhpcy5ib3RQcm9maWxlTGFiZWwocHJvZmlsZSkgOiB0aGlzLnQoJ2NoZXNzaW1hbHNCb3RNb2RlJyksXG4gICAgKTtcbiAgfSk7XG4gIHJlYWRvbmx5IGJvdFJlcG9ydEJvZHkgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgcHJvZmlsZSA9IHRoaXMuZ2FtZUJvdFByb2ZpbGUoKTtcbiAgICBjb25zdCBib3RNb3ZlcyA9IHRoaXMucmVwbGF5RW50cmllcygpLmZpbHRlcigoZW50cnkpID0+IGVudHJ5Lm1vdmU/LnBpZWNlSWQuc3RhcnRzV2l0aCgnQicpKTtcbiAgICBjb25zdCBjYXB0dXJlcyA9IGJvdE1vdmVzLmZpbHRlcigoZW50cnkpID0+ICEhZW50cnkubW92ZT8uY2FwdHVyZXNQaWVjZUlkKS5sZW5ndGg7XG4gICAgY29uc3QgcG93ZXJzID0gYm90TW92ZXMuZmlsdGVyKChlbnRyeSkgPT4gISFlbnRyeS5tb3ZlPy5hbmltYWwpLmxlbmd0aDtcbiAgICBjb25zdCBvdXRjb21lS2V5ID1cbiAgICAgIHRoaXMuZ2FtZSgpLndpbm5lciA9PT0gQ0hFU1NJTUFMU19CT1RfQ09MT1JcbiAgICAgICAgPyAnY2hlc3NpbWFsc0JvdFJlcG9ydE91dGNvbWVXb24nXG4gICAgICAgIDogJ2NoZXNzaW1hbHNCb3RSZXBvcnRPdXRjb21lTG9zdCc7XG5cbiAgICByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQm90UmVwb3J0Qm9keScpXG4gICAgICAucmVwbGFjZSgne291dGNvbWV9JywgdGhpcy50KG91dGNvbWVLZXkpKVxuICAgICAgLnJlcGxhY2UoJ3tjYXB0dXJlc30nLCBTdHJpbmcoY2FwdHVyZXMpKVxuICAgICAgLnJlcGxhY2UoJ3twb3dlcnN9JywgU3RyaW5nKHBvd2VycykpXG4gICAgICAucmVwbGFjZSgne3N0eWxlfScsIHByb2ZpbGUgPyB0aGlzLmJvdFByb2ZpbGVUZW5kZW5jeShwcm9maWxlKSA6ICcnKTtcbiAgfSk7XG4gIHJlYWRvbmx5IHNlcmllc0dhbWVzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IG9wcG9uZW50VWlkID0gdGhpcy5jdXJyZW50T3Bwb25lbnRVaWQoKTtcbiAgICBpZiAoIW9wcG9uZW50VWlkKSByZXR1cm4gW10gYXMgQ2hlc3NpbWFsc0hpc3RvcnlFbnRyeVtdO1xuICAgIHJldHVybiB0aGlzLm9ubGluZUhpc3RvcnkoKS5maWx0ZXIoXG4gICAgICAoZW50cnkpID0+IGVudHJ5Lm9wcG9uZW50VWlkID09PSBvcHBvbmVudFVpZCAmJiBlbnRyeS5zdGF0dXMgPT09ICdmaW5pc2hlZCcsXG4gICAgKTtcbiAgfSk7XG4gIHJlYWRvbmx5IHNlcmllc1Njb3JlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGdhbWVzID0gdGhpcy5zZXJpZXNHYW1lcygpO1xuICAgIGlmICghZ2FtZXMubGVuZ3RoKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIHJldHVybiB7XG4gICAgICBtaW5lOiBnYW1lcy5maWx0ZXIoKGVudHJ5KSA9PiBlbnRyeS5vdXRjb21lID09PSAnd29uJykubGVuZ3RoLFxuICAgICAgcml2YWw6IGdhbWVzLmZpbHRlcigoZW50cnkpID0+IGVudHJ5Lm91dGNvbWUgPT09ICdsb3N0JykubGVuZ3RoLFxuICAgICAgdG90YWw6IGdhbWVzLmxlbmd0aCxcbiAgICB9O1xuICB9KTtcbiAgcmVhZG9ubHkgc2VyaWVzU3VtbWFyeSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBzY29yZSA9IHRoaXMuc2VyaWVzU2NvcmUoKTtcbiAgICBpZiAoIXNjb3JlIHx8IHNjb3JlLnRvdGFsIDwgMikgcmV0dXJuICcnO1xuICAgIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNTZXJpZXNTY29yZScpXG4gICAgICAucmVwbGFjZSgne21pbmV9JywgU3RyaW5nKHNjb3JlLm1pbmUpKVxuICAgICAgLnJlcGxhY2UoJ3tyaXZhbH0nLCBTdHJpbmcoc2NvcmUucml2YWwpKVxuICAgICAgLnJlcGxhY2UoJ3twbGF5ZXJ9JywgdGhpcy5yZW1hdGNoT3Bwb25lbnROYW1lKCkpO1xuICB9KTtcbiAgcmVhZG9ubHkgbGFzdFNlcmllc1dpbm5lckxhYmVsID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGxhc3QgPSB0aGlzLnNlcmllc0dhbWVzKClbMF07XG4gICAgaWYgKCFsYXN0KSByZXR1cm4gJyc7XG4gICAgcmV0dXJuIGxhc3Qub3V0Y29tZSA9PT0gJ3dvbicgPyB0aGlzLnQoJ2NoZXNzaW1hbHNZb3UnKSA6IGxhc3Qub3Bwb25lbnROYW1lIHx8IHRoaXMucmVtYXRjaE9wcG9uZW50TmFtZSgpO1xuICB9KTtcbiAgcmVhZG9ubHkgY29uZmlybVRpdGxlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGFjdGlvbiA9IHRoaXMuY29uZmlybUFjdGlvbigpO1xuICAgIGlmIChhY3Rpb24gPT09ICdyZXN0YXJ0JykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0NvbmZpcm1SZXN0YXJ0VGl0bGUnKTtcbiAgICBpZiAoYWN0aW9uID09PSAncmVzaWduJykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0NvbmZpcm1SZXNpZ25UaXRsZScpO1xuICAgIGlmIChhY3Rpb24gPT09ICdnYW1lcycpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNDb25maXJtR2FtZXNUaXRsZScpO1xuICAgIGlmIChhY3Rpb24gPT09ICdjaGFsbGVuZ2UtbmV3JykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0NoYWxsZW5nZUNvbmZpcm1OZXdUaXRsZScpO1xuICAgIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNDb25maXJtTW9kZVRpdGxlJyk7XG4gIH0pO1xuICByZWFkb25seSBjb25maXJtQm9keSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBhY3Rpb24gPSB0aGlzLmNvbmZpcm1BY3Rpb24oKTtcbiAgICBpZiAoYWN0aW9uID09PSAncmVzdGFydCcpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNDb25maXJtUmVzdGFydEJvZHknKTtcbiAgICBpZiAoYWN0aW9uID09PSAncmVzaWduJykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0NvbmZpcm1SZXNpZ25Cb2R5Jyk7XG4gICAgaWYgKGFjdGlvbiA9PT0gJ2dhbWVzJykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0NvbmZpcm1HYW1lc0JvZHknKTtcbiAgICBpZiAoYWN0aW9uID09PSAnY2hhbGxlbmdlLW5ldycpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VDb25maXJtTmV3Qm9keScpO1xuICAgIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNDb25maXJtTW9kZUJvZHknKTtcbiAgfSk7XG4gIHJlYWRvbmx5IGNvbmZpcm1BY3Rpb25zID0gY29tcHV0ZWQ8QnV0dG9uTWV0YWRhdGFbXT4oKCkgPT4ge1xuICAgIGNvbnN0IGFjdGlvbiA9IHRoaXMuY29uZmlybUFjdGlvbigpO1xuICAgIHJldHVybiBbXG4gICAgICB7XG4gICAgICAgIHRleHQ6IHRoaXMudCgnY2FuY2VsJyksXG4gICAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICAgIHN0YXRlOiAnRU5BQkxFRCcsXG4gICAgICAgIGZpbGw6ICdvdXRsaW5lJyxcbiAgICAgICAgc2hhcGU6ICdyb3VuZCcsXG4gICAgICAgIHR5cGU6ICdidXR0b24nLFxuICAgICAgICB0b2tlbjogJ2NhbmNlbCcsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0ZXh0OlxuICAgICAgICAgIGFjdGlvbiA9PT0gJ3Jlc2lnbidcbiAgICAgICAgICAgID8gdGhpcy50KCdjaGVzc2ltYWxzUmVzaWduJylcbiAgICAgICAgICAgIDogYWN0aW9uID09PSAncmVzdGFydCdcbiAgICAgICAgICAgICAgPyB0aGlzLnQoJ3Jlc3RhcnQnKVxuICAgICAgICAgICAgICA6IGFjdGlvbiA9PT0gJ2dhbWVzJ1xuICAgICAgICAgICAgICAgID8gdGhpcy50KCdjaGVzc2ltYWxzQ2hhbmdlR2FtZScpXG4gICAgICAgICAgICAgICAgOiBhY3Rpb24gPT09ICdjaGFsbGVuZ2UtbmV3J1xuICAgICAgICAgICAgICAgICAgPyB0aGlzLnQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VTdGFydE5ld0NvbmZpcm0nKVxuICAgICAgICAgICAgICAgICAgOiB0aGlzLnQoJ2NoZXNzaW1hbHNDaGFuZ2VNb2RlJyksXG4gICAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICAgIHN0YXRlOiAnRU5BQkxFRCcsXG4gICAgICAgIGZpbGw6ICdvdXRsaW5lJyxcbiAgICAgICAgc2hhcGU6ICdyb3VuZCcsXG4gICAgICAgIHR5cGU6ICdidXR0b24nLFxuICAgICAgICB0b2tlbjogJ2NvbmZpcm0nLFxuICAgICAgfSxcbiAgICBdO1xuICB9KTtcbiAgcmVhZG9ubHkgcnVsZXNBY3Rpb25zID0gY29tcHV0ZWQ8QnV0dG9uTWV0YWRhdGFbXT4oKCkgPT4gW1xuICAgIHtcbiAgICAgIHRleHQ6IHRoaXMudCgnY2xvc2UnKSxcbiAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICBzdGF0ZTogJ0VOQUJMRUQnLFxuICAgICAgZmlsbDogJ291dGxpbmUnLFxuICAgICAgc2hhcGU6ICdyb3VuZCcsXG4gICAgICB0eXBlOiAnYnV0dG9uJyxcbiAgICAgIHRva2VuOiAnY2xvc2UnLFxuICAgIH0sXG4gIF0pO1xuICByZWFkb25seSBhYm91dEFjdGlvbnMgPSBjb21wdXRlZDxCdXR0b25NZXRhZGF0YVtdPigoKSA9PiBbXG4gICAge1xuICAgICAgdGV4dDogdGhpcy50KCdjbG9zZScpLFxuICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgIHN0YXRlOiAnRU5BQkxFRCcsXG4gICAgICBmaWxsOiAnb3V0bGluZScsXG4gICAgICBzaGFwZTogJ3JvdW5kJyxcbiAgICAgIHR5cGU6ICdidXR0b24nLFxuICAgICAgdG9rZW46ICdjbG9zZScsXG4gICAgfSxcbiAgXSk7XG4gIHJlYWRvbmx5IGFjdGlvbkhpbnQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgcGllY2VJZCA9IHRoaXMuc2VsZWN0ZWRQaWVjZUlkKCk7XG4gICAgaWYgKCFwaWVjZUlkKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzUGlja0FueVBpZWNlJyk7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRBbmltYWwoKSkgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc1BpY2tQb3dlclRhcmdldCcpO1xuICAgIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNQaWNrVGFyZ2V0Jyk7XG4gIH0pO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuaTE4bi5yZWdpc3RlckRlZmF1bHRzKCdNaW5pR2FtZXMnLCBNSU5JX0dBTUVTX0kxOE4pO1xuICAgIHRoaXMuYXVkaW8ucHJlbG9hZENoZXNzaW1hbHNTYW1wbGVzKCk7XG4gICAgdGhpcy5hdWRpby5zdG9wTXVzaWMoKTtcbiAgICB0aGlzLnN0YXJ0Q2hlc3NpbWFsc01lbnVNdXNpY1Nvb24oKTtcbiAgICB0aGlzLnJvdXRlU3Vic2NyaXB0aW9uLmFkZChcbiAgICAgIHRoaXMubXVzaWNFbmFibGVkQ29udHJvbC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKChlbmFibGVkKSA9PiB7XG4gICAgICAgIHRoaXMuYXVkaW8uc2V0TXVzaWNFbmFibGVkKGVuYWJsZWQpO1xuICAgICAgICBpZiAoZW5hYmxlZCkgdGhpcy5zeW5jQ2hlc3NpbWFsc011c2ljQWZ0ZXJTZXR0aW5nc0NoYW5nZSgpO1xuICAgICAgfSksXG4gICAgKTtcbiAgICB0aGlzLnJvdXRlU3Vic2NyaXB0aW9uLmFkZChcbiAgICAgIHRoaXMuc2Z4RW5hYmxlZENvbnRyb2wudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgoZW5hYmxlZCkgPT4gdGhpcy5hdWRpby5zZXRTZnhFbmFibGVkKGVuYWJsZWQpKSxcbiAgICApO1xuICAgIHRoaXMucm91dGVTdWJzY3JpcHRpb24uYWRkKFxuICAgICAgdGhpcy5tdXNpY1ZvbHVtZUNvbnRyb2wudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgodm9sdW1lKSA9PiB0aGlzLnNldE11c2ljVm9sdW1lKHZvbHVtZSkpLFxuICAgICk7XG4gICAgdGhpcy5yb3V0ZVN1YnNjcmlwdGlvbi5hZGQoXG4gICAgICB0aGlzLnNmeFZvbHVtZUNvbnRyb2wudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgodm9sdW1lKSA9PiB0aGlzLnNldFNmeFZvbHVtZSh2b2x1bWUpKSxcbiAgICApO1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCB1c2VyID0gdGhpcy5sb2dnZWRJblVzZXIoKTtcbiAgICAgIGlmICh1c2VyKSB7XG4gICAgICAgIHRoaXMucXVldWVIaXN0b3J5V2F0Y2goKTtcbiAgICAgICAgdGhpcy53YXRjaENoYWxsZW5nZVN0YXRzKCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMuaGlzdG9yeVVpZCA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuaGlzdG9yeVN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICAgIHRoaXMuaGlzdG9yeVN1YnNjcmlwdGlvbiA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMub25saW5lSGlzdG9yeS5zZXQoW10pO1xuICAgICAgdGhpcy5jaGFsbGVuZ2VTdGF0c1N1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICAgIHRoaXMuY2hhbGxlbmdlU3RhdHNTdWJzY3JpcHRpb24gPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLmNoYWxsZW5nZVJ1bnNTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgICB0aGlzLmNoYWxsZW5nZVJ1bnNTdWJzY3JpcHRpb24gPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLmNoYWxsZW5nZUFjdGl2ZVJ1blN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICAgIHRoaXMuY2hhbGxlbmdlQWN0aXZlUnVuU3Vic2NyaXB0aW9uID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy5jaGFsbGVuZ2VTdGF0cy5zZXQodGhpcy5jaGFsbGVuZ2VQcm9ncmVzcy5lbXB0eVN0YXRzKCkpO1xuICAgICAgdGhpcy5jaGFsbGVuZ2VIaXN0b3J5LnNldChbXSk7XG4gICAgICB0aGlzLmFjdGl2ZVN0b3JlZENoYWxsZW5nZVJ1bi5zZXQodW5kZWZpbmVkKTtcbiAgICB9LCB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH0pO1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCBnYW1lID0gdGhpcy5nYW1lKCk7XG4gICAgICBpZiAoZ2FtZS5zdGF0dXMgIT09ICdmaW5pc2hlZCcgfHwgdGhpcy5jaGFsbGVuZ2VQaGFzZSgpICE9PSAncGxheWluZycpIHJldHVybjtcbiAgICAgIGNvbnN0IGtleSA9IGAke2dhbWUuaWR9OiR7Z2FtZS5tb3ZlQ291bnR9OiR7Z2FtZS53aW5uZXIgPz8gJ25vbmUnfToke2dhbWUud2lubmVyUmVhc29uID8/ICdub25lJ31gO1xuICAgICAgaWYgKHRoaXMubGFzdENoYWxsZW5nZUhhbmRsZWRLZXkgPT09IGtleSkgcmV0dXJuO1xuICAgICAgdGhpcy5sYXN0Q2hhbGxlbmdlSGFuZGxlZEtleSA9IGtleTtcbiAgICAgIHRoaXMuaGFuZGxlQ2hhbGxlbmdlUm91bmRGaW5pc2hlZChnYW1lKTtcbiAgICB9LCB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5yZXNldEZpbmlzaGVkTG9jYWxHYW1lRm9yTmV4dFZpc2l0KHRydWUpO1xuICAgIHRoaXMuYXVkaW8uc3RvcE11c2ljKCk7XG4gICAgdGhpcy5yb3V0ZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIGlmICh0aGlzLmJvYXJkT3JpZW50YXRpb25UaW1lcikgY2xlYXJUaW1lb3V0KHRoaXMuYm9hcmRPcmllbnRhdGlvblRpbWVyKTtcbiAgICBpZiAodGhpcy5tb3ZlQW5pbWF0aW9uVGltZXIpIGNsZWFyVGltZW91dCh0aGlzLm1vdmVBbmltYXRpb25UaW1lcik7XG4gICAgaWYgKHRoaXMubW92ZUVmZmVjdFN0YXJ0VGltZXIpIGNsZWFyVGltZW91dCh0aGlzLm1vdmVFZmZlY3RTdGFydFRpbWVyKTtcbiAgICBpZiAodGhpcy5tb3ZlRWZmZWN0Q2xlYXJUaW1lcikgY2xlYXJUaW1lb3V0KHRoaXMubW92ZUVmZmVjdENsZWFyVGltZXIpO1xuICAgIGlmICh0aGlzLnBvd2VyVW5sb2NrVGltZXIpIGNsZWFyVGltZW91dCh0aGlzLnBvd2VyVW5sb2NrVGltZXIpO1xuICAgIGlmICh0aGlzLmJvdFR1cm5UaW1lcikgY2xlYXJUaW1lb3V0KHRoaXMuYm90VHVyblRpbWVyKTtcbiAgICBpZiAodGhpcy5oaXN0b3J5V2F0Y2hUaW1lcikgY2xlYXJUaW1lb3V0KHRoaXMuaGlzdG9yeVdhdGNoVGltZXIpO1xuICAgIHRoaXMub25saW5lU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuaGlzdG9yeVN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLmNoYWxsZW5nZVN0YXRzU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuY2hhbGxlbmdlUnVuc1N1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLmNoYWxsZW5nZUFjdGl2ZVJ1blN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMucm91dGVTdWJzY3JpcHRpb24uYWRkKFxuICAgICAgdGhpcy5yb3V0ZXIuZXZlbnRzLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvblN0YXJ0KSB7XG4gICAgICAgICAgdGhpcy5yZXNldEZpbmlzaGVkTG9jYWxHYW1lRm9yTmV4dFZpc2l0KHRydWUpO1xuICAgICAgICB9XG4gICAgICB9KSxcbiAgICApO1xuICAgIGNvbnN0IGdhbWVJZCA9IHRoaXMucGVuZGluZ09ubGluZUdhbWVJZDtcbiAgICBpZiAoZ2FtZUlkICYmIHRoaXMub3BlbmVkT25saW5lR2FtZUlkICE9PSBnYW1lSWQgJiYgdGhpcy5vcGVuaW5nT25saW5lR2FtZUlkICE9PSBnYW1lSWQpIHtcbiAgICAgIHZvaWQgdGhpcy5vcGVuT25saW5lR2FtZShnYW1lSWQpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCB0KGtleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICB0aGlzLmkxOG4ubGFuZygpO1xuICAgIHJldHVybiB0aGlzLmkxOG4udChrZXksICdNaW5pR2FtZXMnKTtcbiAgfVxuXG4gIHByaXZhdGUgc2hvcnRVc2VySWQodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3Qgbm9ybWFsaXplZCA9IHZhbHVlLnRyaW0oKTtcbiAgICBpZiAobm9ybWFsaXplZC5sZW5ndGggPD0gMTApIHJldHVybiBub3JtYWxpemVkO1xuICAgIHJldHVybiBgJHtub3JtYWxpemVkLnNsaWNlKDAsIDQpfeKApiR7bm9ybWFsaXplZC5zbGljZSgtNCl9YDtcbiAgfVxuXG4gIHByaXZhdGUgcmFuZ2VWYWx1ZVRvTnVtYmVyKHZhbHVlOiBudW1iZXIgfCBSYW5nZVZhbHVlKTogbnVtYmVyIHtcbiAgICBjb25zdCByYXcgPSB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInID8gdmFsdWUgOiB2YWx1ZS51cHBlciA/PyB2YWx1ZS5sb3dlciA/PyAwO1xuICAgIHJldHVybiBNYXRoLm1pbigxMDAsIE1hdGgubWF4KDAsIE1hdGgucm91bmQocmF3KSkpO1xuICB9XG5cbiAgc3RhcnRDaGFsbGVuZ2UoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmlzQ2hhbGxlbmdlQWN0aXZlKCkgJiYgdGhpcy5hY3RpdmVTdG9yZWRDaGFsbGVuZ2VSdW4oKSkge1xuICAgICAgdGhpcy5jb25maXJtQWN0aW9uLnNldCgnY2hhbGxlbmdlLW5ldycpO1xuICAgICAgdGhpcy5hdWRpby5mbGlwKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuY3JlYXRlTmV3Q2hhbGxlbmdlUnVuKCk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZU5ld0NoYWxsZW5nZVJ1bigpOiB2b2lkIHtcbiAgICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCk7XG4gICAgY29uc3QgcnVuOiBDaGVzc2ltYWxzQ2hhbGxlbmdlUnVuID0ge1xuICAgICAgaWQ6IGBjaGFsbGVuZ2UtJHtEYXRlLm5vdygpLnRvU3RyaW5nKDM2KX0tJHtNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zbGljZSgyLCA4KX1gLFxuICAgICAgc3RhdHVzOiAnYWN0aXZlJyxcbiAgICAgIGxpdmVzU3RhcnQ6IDMsXG4gICAgICBsaXZlc1JlbWFpbmluZzogMyxcbiAgICAgIGN1cnJlbnRSb3VuZDogMSxcbiAgICAgIHdpbnM6IDAsXG4gICAgICBsb3NzZXM6IDAsXG4gICAgICBiZXN0U3RyZWFrSW5SdW46IDAsXG4gICAgICBjdXJyZW50U3RyZWFrOiAwLFxuICAgICAgYm90TGFkZGVyOiB0aGlzLmNoYWxsZW5nZUxhZGRlci5tYXAoKGJvdCkgPT4gYm90LmlkKSxcbiAgICAgIHJvdW5kUmVzdWx0czogW10sXG4gICAgICBzdGFydGVkQXQ6IG5vdyxcbiAgICAgIHVwZGF0ZWRBdDogbm93LFxuICAgIH07XG4gICAgdGhpcy5jaGFsbGVuZ2VSdW4uc2V0KHJ1bik7XG4gICAgdGhpcy5jaGFsbGVuZ2VMYXN0V29uLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuY2hhbGxlbmdlTGFzdEJvdC5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLmNoYWxsZW5nZUxhc3RSb3VuZFN0YXRzLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuY2hhbGxlbmdlTmV3UmVjb3JkLnNldChmYWxzZSk7XG4gICAgdGhpcy5jaGFsbGVuZ2VOZXdSZWNvcmQuc2V0KGZhbHNlKTtcbiAgICB0aGlzLnN0YXJ0Q2hhbGxlbmdlUm91bmQocnVuKTtcbiAgICB2b2lkIHRoaXMuY2hhbGxlbmdlUHJvZ3Jlc3MucmVjb3JkQ2hhbGxlbmdlU3RhcnRlZChydW4pLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgY29uc29sZS53YXJuKCdbQ2hlc3NpbWFsc10gY2hhbGxlbmdlIHJ1biBzYXZlIGZhaWxlZCcsIGVycm9yKTtcbiAgICB9KTtcbiAgfVxuXG4gIHJlc3VtZUNoYWxsZW5nZShydW4gPSB0aGlzLmFjdGl2ZVN0b3JlZENoYWxsZW5nZVJ1bigpKTogdm9pZCB7XG4gICAgaWYgKCFydW4gfHwgcnVuLnN0YXR1cyAhPT0gJ2FjdGl2ZScpIHJldHVybjtcbiAgICB0aGlzLmNoYWxsZW5nZVJ1bi5zZXQocnVuKTtcbiAgICB0aGlzLmNoYWxsZW5nZUxhc3RXb24uc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5jaGFsbGVuZ2VMYXN0Qm90LnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuY2hhbGxlbmdlTGFzdFJvdW5kU3RhdHMuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5jaGFsbGVuZ2VOZXdSZWNvcmQuc2V0KGZhbHNlKTtcbiAgICB0aGlzLnN0YXJ0Q2hhbGxlbmdlUm91bmQocnVuKTtcbiAgfVxuXG4gIGNvbnRpbnVlQ2hhbGxlbmdlKCk6IHZvaWQge1xuICAgIGNvbnN0IHJ1biA9IHRoaXMuY2hhbGxlbmdlUnVuKCk7XG4gICAgaWYgKCFydW4gfHwgdGhpcy5jaGFsbGVuZ2VQaGFzZSgpICE9PSAnYmV0d2VlbicpIHJldHVybjtcbiAgICB0aGlzLnN0YXJ0Q2hhbGxlbmdlUm91bmQocnVuKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhcnRDaGFsbGVuZ2VSb3VuZChydW46IENoZXNzaW1hbHNDaGFsbGVuZ2VSdW4pOiB2b2lkIHtcbiAgICBjb25zdCBib3QgPSB0aGlzLmNoYWxsZW5nZUxhZGRlcltNYXRoLm1heCgwLCBydW4uY3VycmVudFJvdW5kIC0gMSldO1xuICAgIGlmICghYm90KSB7XG4gICAgICB0aGlzLmNoYWxsZW5nZVBoYXNlLnNldCgnY29tcGxldGVkJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMub25saW5lU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMub3BlbmVkT25saW5lR2FtZUlkID0gdW5kZWZpbmVkO1xuICAgIHRoaXMub3BlbmluZ09ubGluZUdhbWVJZCA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmNsZWFyQm90VHVybigpO1xuICAgIHRoaXMudHV0b3JpYWxNb2RlLnNldChmYWxzZSk7XG4gICAgdGhpcy5vbmxpbmVDb25uZWN0aW9uU3RhdGUuc2V0KCdpZGxlJyk7XG4gICAgdGhpcy5zZWxlY3RlZExvY2FsTW9kZS5zZXQoJ2JvdCcpO1xuICAgIHRoaXMuc2VsZWN0ZWRCb2FyZFNpemUuc2V0KGJvdC5ib2FyZFNpemUpO1xuICAgIHRoaXMuc2VsZWN0ZWRCb3REaWZmaWN1bHR5LnNldChib3QuZGlmZmljdWx0eSk7XG4gICAgdGhpcy5zZWxlY3RlZEJvdFByb2ZpbGVJZC5zZXQoYm90LnByb2ZpbGVJZCk7XG4gICAgdGhpcy5nYW1lQm90UHJvZmlsZUlkLnNldChib3QucHJvZmlsZUlkKTtcbiAgICB0aGlzLmNoYWxsZW5nZVBoYXNlLnNldCgncGxheWluZycpO1xuICAgIHRoaXMubGFzdENoYWxsZW5nZUhhbmRsZWRLZXkgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5sYXN0T3V0Y29tZVNvdW5kS2V5ID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuYXVkaW8uc3RvcE11c2ljKCk7XG4gICAgdGhpcy5nYW1lLnNldChjcmVhdGVDaGVzc2ltYWxzR2FtZShib3QuYm9hcmRTaXplKSk7XG4gICAgdGhpcy5jbGVhclJldmlldygpO1xuICAgIHRoaXMuc2VsZWN0ZWRQaWVjZUlkLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuc2VsZWN0ZWRBbmltYWwuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5tb3ZpbmdQaWVjZS5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLnNjcmVlbi5zZXQoJ2dhbWUnKTtcbiAgICB0aGlzLnN0YXJ0Q2hlc3NpbWFsc0dhbWVNdXNpY1Nvb24oKTtcbiAgICB0aGlzLmF1ZGlvLmZsaXAoKTtcbiAgICB0aGlzLmZvY3VzQm9hcmRTb29uKCk7XG4gIH1cblxuICBzdGFydEdhbWUoKTogdm9pZCB7XG4gICAgdGhpcy5vbmxpbmVTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5vcGVuZWRPbmxpbmVHYW1lSWQgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5vcGVuaW5nT25saW5lR2FtZUlkID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuY2xlYXJCb3RUdXJuKCk7XG4gICAgdGhpcy5jaGFsbGVuZ2VQaGFzZS5zZXQoJ2lkbGUnKTtcbiAgICB0aGlzLmNoYWxsZW5nZVJ1bi5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLmNoYWxsZW5nZUxhc3RXb24uc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5jaGFsbGVuZ2VMYXN0Qm90LnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuY2hhbGxlbmdlTGFzdFJvdW5kU3RhdHMuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5jaGFsbGVuZ2VOZXdSZWNvcmQuc2V0KGZhbHNlKTtcbiAgICB0aGlzLnR1dG9yaWFsTW9kZS5zZXQoZmFsc2UpO1xuICAgIHRoaXMub25saW5lQ29ubmVjdGlvblN0YXRlLnNldCgnaWRsZScpO1xuICAgIHRoaXMuZ2FtZUJvdFByb2ZpbGVJZC5zZXQodGhpcy5zZWxlY3RlZExvY2FsTW9kZSgpID09PSAnYm90JyA/IHRoaXMuc2VsZWN0ZWRCb3RQcm9maWxlSWQoKSA6IHVuZGVmaW5lZCk7XG4gICAgdGhpcy5sYXN0T3V0Y29tZVNvdW5kS2V5ID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuYXVkaW8uc3RvcE11c2ljKCk7XG4gICAgdGhpcy5nYW1lLnNldChjcmVhdGVDaGVzc2ltYWxzR2FtZSh0aGlzLnNlbGVjdGVkQm9hcmRTaXplKCkpKTtcbiAgICB0aGlzLmNsZWFyUmV2aWV3KCk7XG4gICAgdGhpcy5zZWxlY3RlZFBpZWNlSWQuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5zZWxlY3RlZEFuaW1hbC5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLm1vdmluZ1BpZWNlLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuc2NyZWVuLnNldCgnZ2FtZScpO1xuICAgIHRoaXMuc3RhcnRDaGVzc2ltYWxzR2FtZU11c2ljU29vbigpO1xuICAgIHRoaXMuYXVkaW8uZmxpcCgpO1xuICAgIHRoaXMuZm9jdXNCb2FyZFNvb24oKTtcbiAgICB0aGlzLnF1ZXVlQm90VHVybklmTmVlZGVkKCk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUNoYWxsZW5nZVJvdW5kRmluaXNoZWQoZ2FtZTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSk6IHZvaWQge1xuICAgIGNvbnN0IHJ1biA9IHRoaXMuY2hhbGxlbmdlUnVuKCk7XG4gICAgY29uc3QgYm90ID0gdGhpcy5hY3RpdmVDaGFsbGVuZ2VCb3QoKTtcbiAgICBpZiAoIXJ1biB8fCAhYm90KSByZXR1cm47XG5cbiAgICBjb25zdCB3b24gPSBnYW1lLndpbm5lciA9PT0gJ3doaXRlJztcbiAgICBjb25zdCByb3VuZFN0YXRzID0gdGhpcy5jcmVhdGVDaGFsbGVuZ2VSb3VuZFN0YXRzKGdhbWUpO1xuICAgIGNvbnN0IG5leHRMaXZlcyA9IHdvbiA/IHJ1bi5saXZlc1JlbWFpbmluZyA6IE1hdGgubWF4KDAsIHJ1bi5saXZlc1JlbWFpbmluZyAtIDEpO1xuICAgIGNvbnN0IG5leHRTdHJlYWsgPSB3b24gPyBydW4uY3VycmVudFN0cmVhayArIDEgOiAwO1xuICAgIGNvbnN0IGNvbXBsZXRlZCA9IHdvbiAmJiBydW4uY3VycmVudFJvdW5kID49IHRoaXMuY2hhbGxlbmdlTGFkZGVyLmxlbmd0aDtcbiAgICBjb25zdCBmYWlsZWQgPSAhd29uICYmIG5leHRMaXZlcyA8PSAwO1xuICAgIGNvbnN0IGZpbmlzaGVkQXQgPSBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCk7XG4gICAgY29uc3Qgcm91bmRSZXN1bHQ6IENoZXNzaW1hbHNDaGFsbGVuZ2VSb3VuZFJlc3VsdCA9IHtcbiAgICAgIHJvdW5kOiBydW4uY3VycmVudFJvdW5kLFxuICAgICAgYm90SWQ6IGJvdC5pZCxcbiAgICAgIHByb2ZpbGVJZDogYm90LnByb2ZpbGVJZCxcbiAgICAgIHdvbixcbiAgICAgIGxpdmVzUmVtYWluaW5nOiBuZXh0TGl2ZXMsXG4gICAgICBzdGF0czogcm91bmRTdGF0cyxcbiAgICAgIGZpbmlzaGVkQXQsXG4gICAgfTtcbiAgICBjb25zdCBuZXh0UnVuOiBDaGVzc2ltYWxzQ2hhbGxlbmdlUnVuID0ge1xuICAgICAgLi4ucnVuLFxuICAgICAgc3RhdHVzOiBjb21wbGV0ZWQgPyAnY29tcGxldGVkJyA6IGZhaWxlZCA/ICdmYWlsZWQnIDogJ2FjdGl2ZScsXG4gICAgICBsaXZlc1JlbWFpbmluZzogbmV4dExpdmVzLFxuICAgICAgd2luczogcnVuLndpbnMgKyAod29uID8gMSA6IDApLFxuICAgICAgbG9zc2VzOiBydW4ubG9zc2VzICsgKHdvbiA/IDAgOiAxKSxcbiAgICAgIGN1cnJlbnRTdHJlYWs6IG5leHRTdHJlYWssXG4gICAgICBiZXN0U3RyZWFrSW5SdW46IE1hdGgubWF4KHJ1bi5iZXN0U3RyZWFrSW5SdW4sIG5leHRTdHJlYWspLFxuICAgICAgY3VycmVudFJvdW5kOiBjb21wbGV0ZWQgfHwgZmFpbGVkID8gcnVuLmN1cnJlbnRSb3VuZCA6IE1hdGgubWluKHRoaXMuY2hhbGxlbmdlTGFkZGVyLmxlbmd0aCwgcnVuLmN1cnJlbnRSb3VuZCArIDEpLFxuICAgICAgcm91bmRSZXN1bHRzOiBbLi4ucnVuLnJvdW5kUmVzdWx0cywgcm91bmRSZXN1bHRdLFxuICAgICAgdXBkYXRlZEF0OiBmaW5pc2hlZEF0LFxuICAgICAgZmluaXNoZWRBdDogY29tcGxldGVkIHx8IGZhaWxlZCA/IGZpbmlzaGVkQXQgOiB1bmRlZmluZWQsXG4gICAgfTtcblxuICAgIHRoaXMuY2hhbGxlbmdlUnVuLnNldChuZXh0UnVuKTtcbiAgICB0aGlzLmNoYWxsZW5nZUxhc3RXb24uc2V0KHdvbik7XG4gICAgdGhpcy5jaGFsbGVuZ2VMYXN0Qm90LnNldChib3QpO1xuICAgIHRoaXMuY2hhbGxlbmdlTGFzdFJvdW5kU3RhdHMuc2V0KHJvdW5kU3RhdHMpO1xuICAgIHRoaXMuY2hhbGxlbmdlTmV3UmVjb3JkLnNldChcbiAgICAgIHJ1bi5jdXJyZW50Um91bmQgPiB0aGlzLmNoYWxsZW5nZVN0YXRzKCkuYmVzdFJvdW5kUmVhY2hlZFxuICAgICAgICB8fCBNYXRoLm1heChydW4uYmVzdFN0cmVha0luUnVuLCBuZXh0U3RyZWFrKSA+IHRoaXMuY2hhbGxlbmdlU3RhdHMoKS5iZXN0V2luU3RyZWFrLFxuICAgICk7XG4gICAgdGhpcy5jaGFsbGVuZ2VQaGFzZS5zZXQoY29tcGxldGVkID8gJ2NvbXBsZXRlZCcgOiBmYWlsZWQgPyAnZmFpbGVkJyA6ICdiZXR3ZWVuJyk7XG5cbiAgICB2b2lkIHRoaXMuY2hhbGxlbmdlUHJvZ3Jlc3MuYXBwbHlSb3VuZFJlc3VsdCh7XG4gICAgICBydW46IG5leHRSdW4sXG4gICAgICByb3VuZFJlYWNoZWQ6IHJ1bi5jdXJyZW50Um91bmQsXG4gICAgICB3b24sXG4gICAgICBjb21wbGV0ZWQsXG4gICAgICByb3VuZFN0YXRzLFxuICAgIH0pLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgY29uc29sZS53YXJuKCdbQ2hlc3NpbWFsc10gY2hhbGxlbmdlIHN0YXRzIHNhdmUgZmFpbGVkJywgZXJyb3IpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhYmFuZG9uQ2hhbGxlbmdlSWZOZWVkZWQoKTogdm9pZCB7XG4gICAgY29uc3QgcnVuID0gdGhpcy5jaGFsbGVuZ2VSdW4oKTtcbiAgICBpZiAoIXJ1biB8fCBydW4uc3RhdHVzICE9PSAnYWN0aXZlJyB8fCB0aGlzLmNoYWxsZW5nZVBoYXNlKCkgPT09ICdpZGxlJykgcmV0dXJuO1xuICAgIHRoaXMuYWJhbmRvbkNoYWxsZW5nZVJ1bihydW4pO1xuICB9XG5cbiAgcHJpdmF0ZSBhYmFuZG9uQ2hhbGxlbmdlUnVuKHJ1bj86IENoZXNzaW1hbHNDaGFsbGVuZ2VSdW4pOiB2b2lkIHtcbiAgICBpZiAoIXJ1biB8fCBydW4uc3RhdHVzICE9PSAnYWN0aXZlJykgcmV0dXJuO1xuICAgIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKTtcbiAgICBjb25zdCBuZXh0UnVuOiBDaGVzc2ltYWxzQ2hhbGxlbmdlUnVuID0ge1xuICAgICAgLi4ucnVuLFxuICAgICAgc3RhdHVzOiAnYWJhbmRvbmVkJyxcbiAgICAgIHVwZGF0ZWRBdDogbm93LFxuICAgICAgZmluaXNoZWRBdDogbm93LFxuICAgIH07XG4gICAgdm9pZCB0aGlzLmNoYWxsZW5nZVByb2dyZXNzLnNhdmVSdW4obmV4dFJ1bikuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICBjb25zb2xlLndhcm4oJ1tDaGVzc2ltYWxzXSBjaGFsbGVuZ2UgYWJhbmRvbiBzYXZlIGZhaWxlZCcsIGVycm9yKTtcbiAgICB9KTtcbiAgfVxuXG4gIHN0YXJ0VHV0b3JpYWwoKTogdm9pZCB7XG4gICAgdGhpcy5vbmxpbmVTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5vcGVuZWRPbmxpbmVHYW1lSWQgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5vcGVuaW5nT25saW5lR2FtZUlkID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuY2xlYXJCb3RUdXJuKCk7XG4gICAgdGhpcy50dXRvcmlhbE1vZGUuc2V0KHRydWUpO1xuICAgIHRoaXMub25saW5lQ29ubmVjdGlvblN0YXRlLnNldCgnaWRsZScpO1xuICAgIHRoaXMuZ2FtZUJvdFByb2ZpbGVJZC5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLnNlbGVjdGVkTG9jYWxNb2RlLnNldCgnb25lLWRldmljZScpO1xuICAgIHRoaXMubGFzdE91dGNvbWVTb3VuZEtleSA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmF1ZGlvLnN0b3BNdXNpYygpO1xuICAgIHRoaXMuZ2FtZS5zZXQodGhpcy5jcmVhdGVUdXRvcmlhbEdhbWUoKSk7XG4gICAgdGhpcy5jbGVhclJldmlldygpO1xuICAgIHRoaXMuc2VsZWN0ZWRQaWVjZUlkLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuc2VsZWN0ZWRBbmltYWwuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5tb3ZpbmdQaWVjZS5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLnNjcmVlbi5zZXQoJ2dhbWUnKTtcbiAgICB0aGlzLnN0YXJ0Q2hlc3NpbWFsc0dhbWVNdXNpY1Nvb24oKTtcbiAgICB0aGlzLmF1ZGlvLmZsaXAoKTtcbiAgICB0aGlzLmZvY3VzQm9hcmRTb29uKCk7XG4gIH1cblxuICBhc3luYyBjcmVhdGVPbmxpbmVHYW1lKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuY2xlYXJCb3RUdXJuKCk7XG4gICAgdGhpcy50dXRvcmlhbE1vZGUuc2V0KGZhbHNlKTtcbiAgICB0aGlzLmdhbWVCb3RQcm9maWxlSWQuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5vbmxpbmVDb25uZWN0aW9uU3RhdGUuc2V0KCdjb25uZWN0aW5nJyk7XG4gICAgdGhpcy5hdWRpby5zdG9wTXVzaWMoKTtcbiAgICB0aGlzLm9ubGluZUVycm9yLnNldCgnJyk7XG4gICAgdGhpcy5vbmxpbmVBY3Rpb24uc2V0KCdjcmVhdGUnKTtcbiAgICB0aGlzLm9ubGluZUxvYWRpbmcuc2V0KHRydWUpO1xuICAgIHRoaXMucmVzdW1lU3BsYXNoVmlzaWJsZS5zZXQodHJ1ZSk7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGdhbWUgPSBhd2FpdCB0aGlzLm9ubGluZS5jcmVhdGVHYW1lKHRoaXMuc2VsZWN0ZWRCb2FyZFNpemUoKSk7XG4gICAgICB0aGlzLm9ubGluZVVpZC5zZXQodGhpcy5vbmxpbmUuY3VycmVudFVpZCk7XG4gICAgICB0aGlzLnF1ZXVlSGlzdG9yeVdhdGNoKCk7XG4gICAgICB0aGlzLm9wZW5lZE9ubGluZUdhbWVJZCA9IGdhbWUuaWQ7XG4gICAgICB0aGlzLndhdGNoT25saW5lR2FtZShnYW1lLmlkKTtcbiAgICAgIHRoaXMuZ2FtZS5zZXQoZ2FtZSk7XG4gICAgICB0aGlzLmNsZWFyUmV2aWV3KCk7XG4gICAgICB0aGlzLnNjcmVlbi5zZXQoJ2dhbWUnKTtcbiAgICAgIHRoaXMuc3RhcnRDaGVzc2ltYWxzR2FtZU11c2ljU29vbigpO1xuICAgICAgdGhpcy5hdWRpby5mbGlwKCk7XG4gICAgICB2b2lkIHRoaXMuaGFwdGljcy5zdWNjZXNzKCk7XG4gICAgICB0aGlzLmZvY3VzQm9hcmRTb29uKCk7XG4gICAgICB2b2lkIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwodGhpcy5jaGVzc2ltYWxzR2FtZVJvdXRlKGdhbWUuaWQpKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS53YXJuKCdbQ2hlc3NpbWFsc10gY3JlYXRlIG9ubGluZSBnYW1lIGZhaWxlZCcsIGVycm9yKTtcbiAgICAgIHRoaXMub25saW5lRXJyb3Iuc2V0KHRoaXMudCgnY2hlc3NpbWFsc09ubGluZUVycm9yJykpO1xuICAgICAgdGhpcy5yZXN1bWVTcGxhc2hWaXNpYmxlLnNldChmYWxzZSk7XG4gICAgICB0aGlzLnN0YXJ0Q2hlc3NpbWFsc01lbnVNdXNpY1Nvb24oKTtcbiAgICAgIHRoaXMuYXVkaW8ubWlzcygpO1xuICAgICAgdm9pZCB0aGlzLmhhcHRpY3MuZXJyb3IoKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5vbmxpbmVBY3Rpb24uc2V0KHVuZGVmaW5lZCk7XG4gICAgICB0aGlzLm9ubGluZUxvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBqb2luT25saW5lR2FtZUJ5Q29kZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBnYW1lSWQgPSB0aGlzLm9ubGluZS5ub3JtYWxpemVHYW1lSWQodGhpcy5vbmxpbmVKb2luQ29kZSgpKTtcbiAgICBpZiAoIXRoaXMub25saW5lLmlzVmFsaWRHYW1lSWQoZ2FtZUlkKSkge1xuICAgICAgdGhpcy5vbmxpbmVFcnJvci5zZXQodGhpcy50KCdjaGVzc2ltYWxzT25saW5lSW52YWxpZENvZGUnKSk7XG4gICAgICB0aGlzLmF1ZGlvLm1pc3MoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5vbmxpbmVKb2luQ29kZS5zZXQoZ2FtZUlkKTtcbiAgICB0aGlzLm9ubGluZUFjdGlvbi5zZXQoJ2pvaW4nKTtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5vcGVuT25saW5lR2FtZShnYW1lSWQpO1xuICAgICAgaWYgKHRoaXMub3BlbmVkT25saW5lR2FtZUlkID09PSBnYW1lSWQpIHtcbiAgICAgICAgdm9pZCB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKHRoaXMuY2hlc3NpbWFsc0dhbWVSb3V0ZShnYW1lSWQpKTtcbiAgICAgIH1cbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5vbmxpbmVBY3Rpb24uc2V0KHVuZGVmaW5lZCk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgb3Blbk9ubGluZUdhbWUoZ2FtZUlkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBub3JtYWxpemVkR2FtZUlkID0gdGhpcy5vbmxpbmUubm9ybWFsaXplR2FtZUlkKGdhbWVJZCk7XG4gICAgaWYgKCF0aGlzLm9ubGluZS5pc1ZhbGlkR2FtZUlkKG5vcm1hbGl6ZWRHYW1lSWQpKSB7XG4gICAgICB0aGlzLm9ubGluZUVycm9yLnNldCh0aGlzLnQoJ2NoZXNzaW1hbHNPbmxpbmVJbnZhbGlkQ29kZScpKTtcbiAgICAgIHRoaXMuc2NyZWVuLnNldCgnaG9tZScpO1xuICAgICAgdGhpcy5zdGFydENoZXNzaW1hbHNNZW51TXVzaWNTb29uKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLm9wZW5lZE9ubGluZUdhbWVJZCA9PT0gbm9ybWFsaXplZEdhbWVJZCB8fCB0aGlzLm9wZW5pbmdPbmxpbmVHYW1lSWQgPT09IG5vcm1hbGl6ZWRHYW1lSWQpIHJldHVybjtcblxuICAgIHRoaXMub25saW5lRXJyb3Iuc2V0KCcnKTtcbiAgICB0aGlzLmNsZWFyQm90VHVybigpO1xuICAgIHRoaXMudHV0b3JpYWxNb2RlLnNldChmYWxzZSk7XG4gICAgdGhpcy5nYW1lQm90UHJvZmlsZUlkLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuYXVkaW8uc3RvcE11c2ljKCk7XG4gICAgdGhpcy5vbmxpbmVDb25uZWN0aW9uU3RhdGUuc2V0KCdjb25uZWN0aW5nJyk7XG4gICAgdGhpcy5vbmxpbmVMb2FkaW5nLnNldCh0cnVlKTtcbiAgICB0aGlzLnJlc3VtZVNwbGFzaFZpc2libGUuc2V0KHRydWUpO1xuICAgIHRoaXMuc2NyZWVuLnNldCgnZ2FtZScpO1xuICAgIHRoaXMub3BlbmluZ09ubGluZUdhbWVJZCA9IG5vcm1hbGl6ZWRHYW1lSWQ7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMub25saW5lLmpvaW5HYW1lKG5vcm1hbGl6ZWRHYW1lSWQpO1xuICAgICAgdGhpcy5vbmxpbmVVaWQuc2V0KHRoaXMub25saW5lLmN1cnJlbnRVaWQpO1xuICAgICAgdGhpcy5xdWV1ZUhpc3RvcnlXYXRjaCgpO1xuICAgICAgdGhpcy5vcGVuZWRPbmxpbmVHYW1lSWQgPSBub3JtYWxpemVkR2FtZUlkO1xuICAgICAgdGhpcy53YXRjaE9ubGluZUdhbWUobm9ybWFsaXplZEdhbWVJZCk7XG4gICAgICB0aGlzLnNjcmVlbi5zZXQoJ2dhbWUnKTtcbiAgICAgIHRoaXMuc3RhcnRDaGVzc2ltYWxzR2FtZU11c2ljU29vbigpO1xuICAgICAgdm9pZCB0aGlzLmhhcHRpY3Muc2VsZWN0aW9uKCk7XG4gICAgICB0aGlzLmZvY3VzQm9hcmRTb29uKCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUud2FybignW0NoZXNzaW1hbHNdIG9wZW4gb25saW5lIGdhbWUgZmFpbGVkJywgZXJyb3IpO1xuICAgICAgdGhpcy5vcGVuZWRPbmxpbmVHYW1lSWQgPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLm9ubGluZUNvbm5lY3Rpb25TdGF0ZS5zZXQoJ2Vycm9yJyk7XG4gICAgICB0aGlzLm9ubGluZUVycm9yLnNldCh0aGlzLm9ubGluZU9wZW5FcnJvck1lc3NhZ2UoZXJyb3IpKTtcbiAgICAgIHRoaXMuc2NyZWVuLnNldCgnaG9tZScpO1xuICAgICAgdGhpcy5yZXN1bWVTcGxhc2hWaXNpYmxlLnNldChmYWxzZSk7XG4gICAgICB0aGlzLnN0YXJ0Q2hlc3NpbWFsc01lbnVNdXNpY1Nvb24oKTtcbiAgICAgIHRoaXMuYXVkaW8ubWlzcygpO1xuICAgICAgdm9pZCB0aGlzLmhhcHRpY3MuZXJyb3IoKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5vcGVuaW5nT25saW5lR2FtZUlkID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy5vbmxpbmVMb2FkaW5nLnNldChmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgcmVzdGFydEdhbWUoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZ2FtZSgpLm1vZGUgPT09ICdvbmxpbmUnICYmIHRoaXMuZ2FtZSgpLnN0YXR1cyA9PT0gJ2ZpbmlzaGVkJykge1xuICAgICAgdm9pZCB0aGlzLnJlcXVlc3RPbmxpbmVSZW1hdGNoKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuY2xlYXJCb3RUdXJuKCk7XG4gICAgdGhpcy5sYXN0T3V0Y29tZVNvdW5kS2V5ID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuZ2FtZS5zZXQodGhpcy50dXRvcmlhbE1vZGUoKSA/IHRoaXMuY3JlYXRlVHV0b3JpYWxHYW1lKCkgOiBjcmVhdGVDaGVzc2ltYWxzR2FtZSh0aGlzLmdhbWUoKS5ib2FyZFNpemUpKTtcbiAgICB0aGlzLmNsZWFyUmV2aWV3KCk7XG4gICAgdGhpcy5zZWxlY3RlZFBpZWNlSWQuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5zZWxlY3RlZEFuaW1hbC5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLm1vdmluZ1BpZWNlLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuYXVkaW8uZmxpcCgpO1xuICAgIHRoaXMuc3RhcnRDaGVzc2ltYWxzR2FtZU11c2ljU29vbigpO1xuICAgIHRoaXMuZm9jdXNCb2FyZFNvb24oKTtcbiAgICB0aGlzLnF1ZXVlQm90VHVybklmTmVlZGVkKCk7XG4gIH1cblxuICBleGl0VHV0b3JpYWwoKTogdm9pZCB7XG4gICAgdGhpcy50dXRvcmlhbE1vZGUuc2V0KGZhbHNlKTtcbiAgICB0aGlzLnJlc2V0VG9Nb2RlU2V0dXAoKTtcbiAgfVxuXG4gIHJlc2V0VG9Nb2RlU2V0dXAoKTogdm9pZCB7XG4gICAgdGhpcy5hYmFuZG9uQ2hhbGxlbmdlSWZOZWVkZWQoKTtcbiAgICB0aGlzLmNoYWxsZW5nZVBoYXNlLnNldCgnaWRsZScpO1xuICAgIHRoaXMuY2hhbGxlbmdlUnVuLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuY2hhbGxlbmdlTGFzdFdvbi5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLmNoYWxsZW5nZUxhc3RCb3Quc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5jaGFsbGVuZ2VMYXN0Um91bmRTdGF0cy5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLnR1dG9yaWFsTW9kZS5zZXQoZmFsc2UpO1xuICAgIHRoaXMucmVzZXRGaW5pc2hlZExvY2FsR2FtZUZvck5leHRWaXNpdCgpO1xuICAgIHRoaXMub25saW5lU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMub25saW5lU3Vic2NyaXB0aW9uID0gdW5kZWZpbmVkO1xuICAgIHRoaXMub3BlbmVkT25saW5lR2FtZUlkID0gdW5kZWZpbmVkO1xuICAgIHRoaXMub3BlbmluZ09ubGluZUdhbWVJZCA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLnJlc3VtZVNwbGFzaFZpc2libGUuc2V0KGZhbHNlKTtcbiAgICB0aGlzLmNsZWFyQm90VHVybigpO1xuICAgIHRoaXMub25saW5lQ29ubmVjdGlvblN0YXRlLnNldCgnaWRsZScpO1xuICAgIHRoaXMuc2NyZWVuLnNldCgnaG9tZScpO1xuICAgIHRoaXMuc3RhcnRDaGVzc2ltYWxzTWVudU11c2ljU29vbigpO1xuICAgIHRoaXMuc2VsZWN0ZWRQaWVjZUlkLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuc2VsZWN0ZWRBbmltYWwuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5tb3ZpbmdQaWVjZS5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLmNsZWFyUmV2aWV3KCk7XG4gIH1cblxuICByZXNldFRvR2FtZXNNZW51KCk6IHZvaWQge1xuICAgIHRoaXMuY29uZmlybUFjdGlvbi5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLnJlc2V0VG9Nb2RlU2V0dXAoKTtcbiAgICBjb25zdCByb3V0ZSA9IHRoaXMubWluaUdhbWVzQmFzZVJvdXRlKCk7XG4gICAgdm9pZCB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKHJvdXRlKS5jYXRjaCgoKSA9PiB7XG4gICAgICB0aGlzLnNjcmVlbi5zZXQoJ2hvbWUnKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzZXRGaW5pc2hlZExvY2FsR2FtZUZvck5leHRWaXNpdChyZXR1cm5Ib21lID0gZmFsc2UpOiB2b2lkIHtcbiAgICBjb25zdCBnYW1lID0gdGhpcy5nYW1lKCk7XG4gICAgaWYgKGdhbWUubW9kZSAhPT0gJ2xvY2FsJyB8fCBnYW1lLnN0YXR1cyAhPT0gJ2ZpbmlzaGVkJykgcmV0dXJuO1xuICAgIHRoaXMuY2xlYXJCb3RUdXJuKCk7XG4gICAgaWYgKHRoaXMubW92ZUFuaW1hdGlvblRpbWVyKSBjbGVhclRpbWVvdXQodGhpcy5tb3ZlQW5pbWF0aW9uVGltZXIpO1xuICAgIHRoaXMubW92ZUFuaW1hdGlvblRpbWVyID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuc2VsZWN0ZWRQaWVjZUlkLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuc2VsZWN0ZWRBbmltYWwuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5tb3ZpbmdQaWVjZS5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLmNsZWFyUmV2aWV3KCk7XG4gICAgdGhpcy5jb25maXJtQWN0aW9uLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuZ2FtZS5zZXQoY3JlYXRlQ2hlc3NpbWFsc0dhbWUoZ2FtZS5ib2FyZFNpemUpKTtcbiAgICBpZiAocmV0dXJuSG9tZSkge1xuICAgICAgdGhpcy5zY3JlZW4uc2V0KCdob21lJyk7XG4gICAgICB0aGlzLnN0YXJ0Q2hlc3NpbWFsc01lbnVNdXNpY1Nvb24oKTtcbiAgICB9XG4gIH1cblxuICByZXF1ZXN0UmVzdGFydEdhbWUoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNDaGFsbGVuZ2VBY3RpdmUoKSkgcmV0dXJuO1xuICAgIGlmICghdGhpcy5jYW5Db250cm9sQ3VycmVudEdhbWUoKSkgcmV0dXJuO1xuICAgIHRoaXMuY29uZmlybUFjdGlvbi5zZXQoJ3Jlc3RhcnQnKTtcbiAgICB0aGlzLmF1ZGlvLmZsaXAoKTtcbiAgfVxuXG4gIHJlcXVlc3RDaGFuZ2VNb2RlKCk6IHZvaWQge1xuICAgIHRoaXMuY29uZmlybUFjdGlvbi5zZXQoJ21vZGUnKTtcbiAgICB0aGlzLmF1ZGlvLmZsaXAoKTtcbiAgfVxuXG4gIHJlcXVlc3RDaGFuZ2VHYW1lKCk6IHZvaWQge1xuICAgIHRoaXMuY29uZmlybUFjdGlvbi5zZXQoJ2dhbWVzJyk7XG4gICAgdGhpcy5hdWRpby5mbGlwKCk7XG4gIH1cblxuICByZXF1ZXN0UmVzaWduKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmdhbWUoKS5zdGF0dXMgPT09ICdmaW5pc2hlZCcgfHwgIXRoaXMuY2FuQ29udHJvbEN1cnJlbnRHYW1lKCkpIHJldHVybjtcbiAgICB0aGlzLmNvbmZpcm1BY3Rpb24uc2V0KCdyZXNpZ24nKTtcbiAgICB0aGlzLmF1ZGlvLmZsaXAoKTtcbiAgfVxuXG4gIGNsb3NlQ29uZmlybU1vZGFsKCk6IHZvaWQge1xuICAgIHRoaXMuY29uZmlybUFjdGlvbi5zZXQodW5kZWZpbmVkKTtcbiAgfVxuXG4gIGhhbmRsZUNvbmZpcm1Nb2RhbERpc21pc3NlZCgpOiB2b2lkIHtcbiAgICB0aGlzLmNvbmZpcm1BY3Rpb24uc2V0KHVuZGVmaW5lZCk7XG4gICAgY29uc3QgYWN0aW9uID0gdGhpcy5jb25maXJtZWRBY3Rpb24oKTtcbiAgICB0aGlzLmNvbmZpcm1lZEFjdGlvbi5zZXQodW5kZWZpbmVkKTtcbiAgICBpZiAoIWFjdGlvbikgcmV0dXJuO1xuXG4gICAgaWYgKGFjdGlvbiA9PT0gJ3Jlc3RhcnQnKSB7XG4gICAgICB0aGlzLnJlc3RhcnRHYW1lKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChhY3Rpb24gPT09ICdtb2RlJykge1xuICAgICAgdGhpcy5yZXNldFRvTW9kZVNldHVwKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChhY3Rpb24gPT09ICdnYW1lcycpIHtcbiAgICAgIHRoaXMucmVzZXRUb0dhbWVzTWVudSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoYWN0aW9uID09PSAncmVzaWduJykge1xuICAgICAgdGhpcy5yZXNpZ25HYW1lKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChhY3Rpb24gPT09ICdjaGFsbGVuZ2UtbmV3Jykge1xuICAgICAgdGhpcy5hYmFuZG9uQ2hhbGxlbmdlUnVuKHRoaXMuYWN0aXZlU3RvcmVkQ2hhbGxlbmdlUnVuKCkpO1xuICAgICAgdGhpcy5jcmVhdGVOZXdDaGFsbGVuZ2VSdW4oKTtcbiAgICB9XG4gIH1cblxuICBjb25maXJtUGVuZGluZ0FjdGlvbih0b2tlbj86IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh0b2tlbiAhPT0gJ2NvbmZpcm0nKSB7XG4gICAgICB0aGlzLmNsb3NlQ29uZmlybU1vZGFsKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgYWN0aW9uID0gdGhpcy5jb25maXJtQWN0aW9uKCk7XG4gICAgdGhpcy5jb25maXJtZWRBY3Rpb24uc2V0KGFjdGlvbik7XG4gICAgdGhpcy5jb25maXJtQWN0aW9uLnNldCh1bmRlZmluZWQpO1xuICB9XG5cbiAgcHJpdmF0ZSByZXNpZ25HYW1lKCk6IHZvaWQge1xuICAgIGNvbnN0IGdhbWUgPSB0aGlzLmdhbWUoKTtcbiAgICBpZiAoZ2FtZS5zdGF0dXMgPT09ICdmaW5pc2hlZCcpIHJldHVybjtcbiAgICBpZiAoZ2FtZS5tb2RlID09PSAnb25saW5lJykge1xuICAgICAgdm9pZCB0aGlzLm9ubGluZS5yZXNpZ24oZ2FtZS5pZCkuY2F0Y2goKCkgPT4ge1xuICAgICAgICB0aGlzLm9ubGluZUVycm9yLnNldCh0aGlzLnQoJ2NoZXNzaW1hbHNPbmxpbmVFcnJvcicpKTtcbiAgICAgICAgdGhpcy5hdWRpby5taXNzKCk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5jbGVhckJvdFR1cm4oKTtcbiAgICB0aGlzLmdhbWUuc2V0KHJlc2lnbkNoZXNzaW1hbHNHYW1lKGdhbWUsIGdhbWUuY3VycmVudFR1cm4pKTtcbiAgICB0aGlzLnNob3dMYXRlc3RSZXZpZXdTbmFwc2hvdCgpO1xuICAgIHRoaXMuc2VsZWN0ZWRQaWVjZUlkLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuc2VsZWN0ZWRBbmltYWwuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5tb3ZpbmdQaWVjZS5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLnBsYXlDaGVzc2ltYWxzT3V0Y29tZVNvdW5kKCk7XG4gIH1cblxuICBvcGVuUnVsZXNNb2RhbCgpOiB2b2lkIHtcbiAgICB0aGlzLmlzUnVsZXNNb2RhbE9wZW4uc2V0KHRydWUpO1xuICAgIHRoaXMuYXVkaW8uZmxpcCgpO1xuICB9XG5cbiAgY2xvc2VSdWxlc01vZGFsKCk6IHZvaWQge1xuICAgIHRoaXMuaXNSdWxlc01vZGFsT3Blbi5zZXQoZmFsc2UpO1xuICB9XG5cbiAgb3BlblNldHRpbmdzTW9kYWwoKTogdm9pZCB7XG4gICAgdGhpcy5pc1NldHRpbmdzTW9kYWxPcGVuLnNldCh0cnVlKTtcbiAgICB0aGlzLmF1ZGlvLmZsaXAoKTtcbiAgfVxuXG4gIGNsb3NlU2V0dGluZ3NNb2RhbCgpOiB2b2lkIHtcbiAgICB0aGlzLmlzU2V0dGluZ3NNb2RhbE9wZW4uc2V0KGZhbHNlKTtcbiAgfVxuXG4gIG9wZW5BYm91dE1vZGFsKCk6IHZvaWQge1xuICAgIHRoaXMuaXNBYm91dE1vZGFsT3Blbi5zZXQodHJ1ZSk7XG4gICAgdGhpcy5hdWRpby5mbGlwKCk7XG4gIH1cblxuICBjbG9zZUFib3V0TW9kYWwoKTogdm9pZCB7XG4gICAgdGhpcy5pc0Fib3V0TW9kYWxPcGVuLnNldChmYWxzZSk7XG4gIH1cblxuICBzZXRNdXNpY1ZvbHVtZSh2YWx1ZTogbnVtYmVyIHwgUmFuZ2VWYWx1ZSk6IHZvaWQge1xuICAgIGNvbnN0IHZvbHVtZSA9IHRoaXMucmFuZ2VWYWx1ZVRvTnVtYmVyKHZhbHVlKTtcbiAgICBpZiAodGhpcy5tdXNpY1ZvbHVtZUNvbnRyb2wudmFsdWUgIT09IHZvbHVtZSkge1xuICAgICAgdGhpcy5tdXNpY1ZvbHVtZUNvbnRyb2wuc2V0VmFsdWUodm9sdW1lLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgfVxuICAgIHRoaXMuYXVkaW8uc2V0TXVzaWNWb2x1bWUodm9sdW1lIC8gMTAwKTtcbiAgICBpZiAodm9sdW1lID4gMCAmJiB0aGlzLmF1ZGlvLm11c2ljRW5hYmxlZCgpKSB0aGlzLnN5bmNDaGVzc2ltYWxzTXVzaWNBZnRlclNldHRpbmdzQ2hhbmdlKCk7XG4gIH1cblxuICBzZXRTZnhWb2x1bWUodmFsdWU6IG51bWJlciB8IFJhbmdlVmFsdWUpOiB2b2lkIHtcbiAgICBjb25zdCB2b2x1bWUgPSB0aGlzLnJhbmdlVmFsdWVUb051bWJlcih2YWx1ZSk7XG4gICAgaWYgKHRoaXMuc2Z4Vm9sdW1lQ29udHJvbC52YWx1ZSAhPT0gdm9sdW1lKSB7XG4gICAgICB0aGlzLnNmeFZvbHVtZUNvbnRyb2wuc2V0VmFsdWUodm9sdW1lLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgfVxuICAgIHRoaXMuYXVkaW8uc2V0U2Z4Vm9sdW1lKHZvbHVtZSAvIDEwMCk7XG4gIH1cblxuICBwcml2YXRlIHR1dG9yaWFsRXhwZWN0ZWRNb3ZlKCk6IENoZXNzaW1hbHNUdXRvcmlhbEV4cGVjdGVkTW92ZSB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKCF0aGlzLnR1dG9yaWFsTW9kZSgpIHx8IHRoaXMuZ2FtZSgpLnN0YXR1cyAhPT0gJ2luX3Byb2dyZXNzJykgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICBjb25zdCBzdGVwczogQ2hlc3NpbWFsc1R1dG9yaWFsRXhwZWN0ZWRNb3ZlW10gPSBbXG4gICAgICB7IHBpZWNlSWQ6ICdUVzEnLCB0bzogeyByb3c6IDMsIGNvbDogMSB9IH0sXG4gICAgICB7IHBpZWNlSWQ6ICdUQjEnLCB0bzogeyByb3c6IDIsIGNvbDogMiB9IH0sXG4gICAgICB7IHBpZWNlSWQ6ICdUVzEnLCB0bzogeyByb3c6IDIsIGNvbDogMiB9IH0sXG4gICAgICB7IHBpZWNlSWQ6ICdUQjInLCB0bzogeyByb3c6IDIsIGNvbDogNSB9IH0sXG4gICAgICB7IHBpZWNlSWQ6ICdUVzEnLCB0bzogeyByb3c6IDEsIGNvbDogNCB9LCBhbmltYWw6ICdrYW5nYXJvbycgfSxcbiAgICAgIHsgcGllY2VJZDogJ1RCMicsIHRvOiB7IHJvdzogMywgY29sOiA1IH0gfSxcbiAgICAgIHsgcGllY2VJZDogJ1RXMScsIHRvOiB7IHJvdzogMCwgY29sOiA0IH0gfSxcbiAgICBdO1xuICAgIHJldHVybiBzdGVwc1t0aGlzLmdhbWUoKS5tb3ZlQ291bnRdO1xuICB9XG5cbiAgaXNQb3dlckNhcmRCbG9ja2VkQnlUdXRvcmlhbChhbmltYWw6IENoZXNzaW1hbHNBbmltYWxUeXBlKTogYm9vbGVhbiB7XG4gICAgY29uc3QgZXhwZWN0ZWQgPSB0aGlzLnR1dG9yaWFsRXhwZWN0ZWRNb3ZlKCk7XG4gICAgcmV0dXJuICEhZXhwZWN0ZWQ/LmFuaW1hbCAmJiBleHBlY3RlZC5hbmltYWwgIT09IGFuaW1hbDtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlVHV0b3JpYWxHYW1lKCk6IENoZXNzaW1hbHNHYW1lU3RhdGUge1xuICAgIGNvbnN0IGJhc2UgPSBjcmVhdGVDaGVzc2ltYWxzR2FtZSg2KTtcbiAgICBjb25zdCBwaWVjZXM6IENoZXNzaW1hbHNQaWVjZVtdID0gW1xuICAgICAgeyBpZDogJ1RXMScsIGNvbG9yOiAnd2hpdGUnLCBwb3NpdGlvbjogeyByb3c6IDQsIGNvbDogMSB9LCBjYXB0dXJlZDogZmFsc2UgfSxcbiAgICAgIHsgaWQ6ICdUQjEnLCBjb2xvcjogJ2JsYWNrJywgcG9zaXRpb246IHsgcm93OiAxLCBjb2w6IDIgfSwgY2FwdHVyZWQ6IGZhbHNlIH0sXG4gICAgICB7IGlkOiAnVEIyJywgY29sb3I6ICdibGFjaycsIHBvc2l0aW9uOiB7IHJvdzogMSwgY29sOiA1IH0sIGNhcHR1cmVkOiBmYWxzZSB9LFxuICAgICAgeyBpZDogJ1RCMycsIGNvbG9yOiAnYmxhY2snLCBwb3NpdGlvbjogeyByb3c6IDEsIGNvbDogNCB9LCBjYXB0dXJlZDogZmFsc2UgfSxcbiAgICBdO1xuICAgIHJldHVybiB7XG4gICAgICAuLi5iYXNlLFxuICAgICAgaWQ6ICdUVVRPUklBTCcsXG4gICAgICBwaWVjZXMsXG4gICAgICBjdXJyZW50VHVybjogJ3doaXRlJyxcbiAgICAgIG1vdmVDb3VudDogMCxcbiAgICAgIHBsYXllcnM6IHtcbiAgICAgICAgd2hpdGU6IHtcbiAgICAgICAgICAuLi5iYXNlLnBsYXllcnMud2hpdGUsXG4gICAgICAgICAgcG93ZXJVbmxvY2tlZDogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICAgIGJsYWNrOiB7XG4gICAgICAgICAgLi4uYmFzZS5wbGF5ZXJzLmJsYWNrLFxuICAgICAgICAgIHBvd2VyVW5sb2NrZWQ6IGZhbHNlLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIG1vdmVIaXN0b3J5OiBbXG4gICAgICAgIHtcbiAgICAgICAgICBtb3ZlTnVtYmVyOiAwLFxuICAgICAgICAgIHBpZWNlczogcGllY2VzLm1hcCgocGllY2UpID0+ICh7IC4uLnBpZWNlLCBwb3NpdGlvbjogeyAuLi5waWVjZS5wb3NpdGlvbiB9IH0pKSxcbiAgICAgICAgICBjdXJyZW50VHVybjogJ3doaXRlJyxcbiAgICAgICAgICBzdGF0dXM6ICdpbl9wcm9ncmVzcycsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGJhc2ljTW92ZXNGb3JDb2xvcihnYW1lOiBDaGVzc2ltYWxzR2FtZVN0YXRlLCBjb2xvcjogQ2hlc3NpbWFsc1BsYXllckNvbG9yKTogQ2hlc3NpbWFsc01vdmVbXSB7XG4gICAgY29uc3QgdHVyblN0YXRlID0gY29sb3IgPT09IGdhbWUuY3VycmVudFR1cm4gPyBnYW1lIDogeyAuLi5nYW1lLCBjdXJyZW50VHVybjogY29sb3IgfTtcbiAgICByZXR1cm4gdHVyblN0YXRlLnBpZWNlc1xuICAgICAgLmZpbHRlcigocGllY2UpID0+IHBpZWNlLmNvbG9yID09PSBjb2xvciAmJiAhcGllY2UuY2FwdHVyZWQpXG4gICAgICAuZmxhdE1hcCgocGllY2UpID0+IGdldENoZXNzaW1hbHNMZWdhbE1vdmVzKHR1cm5TdGF0ZSwgcGllY2UuaWQpKTtcbiAgfVxuXG4gIHNlbGVjdENlbGwocG9zaXRpb246IENoZXNzaW1hbHNQb3NpdGlvbik6IHZvaWQge1xuICAgIGNvbnN0IGdhbWUgPSB0aGlzLmdhbWUoKTtcbiAgICBpZiAodGhpcy5wcm9qZWN0aW9uTW9kZSB8fCBnYW1lLnN0YXR1cyAhPT0gJ2luX3Byb2dyZXNzJyB8fCAhdGhpcy5jYW5QbGF5Q3VycmVudFR1cm4oKSB8fCB0aGlzLm1vdmluZ1BpZWNlKCkgfHwgdGhpcy5tb3ZlU3luY2luZygpKSByZXR1cm47XG5cbiAgICBjb25zdCBwaWVjZSA9IGdldENoZXNzaW1hbHNQaWVjZUF0KGdhbWUsIHBvc2l0aW9uKTtcbiAgICBpZiAocGllY2U/LmNvbG9yID09PSBnYW1lLmN1cnJlbnRUdXJuKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkUGllY2VJZC5zZXQocGllY2UuaWQpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG1vdmUgPSB0aGlzLmxlZ2FsTW92ZXMoKS5maW5kKChpdGVtKSA9PiBwb3NpdGlvbktleShpdGVtLnRvKSA9PT0gcG9zaXRpb25LZXkocG9zaXRpb24pKTtcbiAgICBpZiAoIW1vdmUpIHJldHVybjtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCB1cGRhdGVkID0gYXBwbHlDaGVzc2ltYWxzTW92ZShnYW1lLCBtb3ZlKTtcbiAgICAgIGlmIChtb3ZlLmFuaW1hbCkgdGhpcy5wbGF5TW92ZVNvdW5kKG1vdmUpO1xuICAgICAgaWYgKHVwZGF0ZWQuc3RhdHVzID09PSAnZmluaXNoZWQnKSB0aGlzLnBsYXlDaGVzc2ltYWxzT3V0Y29tZVNvdW5kKHVwZGF0ZWQpO1xuICAgICAgdGhpcy5hbmltYXRlTW92ZShnYW1lLCBtb3ZlLCB1cGRhdGVkKTtcbiAgICAgIGlmIChnYW1lLm1vZGUgPT09ICdvbmxpbmUnKSB7XG4gICAgICAgIHRoaXMubW92ZVN5bmNpbmcuc2V0KHRydWUpO1xuICAgICAgICB2b2lkIHRoaXMub25saW5lXG4gICAgICAgICAgLm1vdmUoZ2FtZS5pZCwgbW92ZSlcbiAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICB2b2lkIHRoaXMuaGFwdGljcy5pbXBhY3QobW92ZS5jYXB0dXJlc1BpZWNlSWQgPyAnbWVkaXVtJyA6ICdsaWdodCcpO1xuICAgICAgICAgIH0pXG4gICAgICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKCdbQ2hlc3NpbWFsc10gb25saW5lIG1vdmUgZmFpbGVkJywgeyBnYW1lSWQ6IGdhbWUuaWQsIG1vdmUsIGVycm9yIH0pO1xuICAgICAgICAgICAgdGhpcy5nYW1lLnNldChnYW1lKTtcbiAgICAgICAgICAgIHRoaXMub25saW5lRXJyb3Iuc2V0KHRoaXMudCgnY2hlc3NpbWFsc09ubGluZUVycm9yJykpO1xuICAgICAgICAgICAgdGhpcy5hdWRpby5taXNzKCk7XG4gICAgICAgICAgICB2b2lkIHRoaXMuaGFwdGljcy5lcnJvcigpO1xuICAgICAgICAgIH0pXG4gICAgICAgICAgLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5tb3ZlU3luY2luZy5zZXQoZmFsc2UpO1xuICAgICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgdGhpcy5zZWxlY3RlZFBpZWNlSWQuc2V0KHVuZGVmaW5lZCk7XG4gICAgICB0aGlzLnNlbGVjdGVkQW5pbWFsLnNldCh1bmRlZmluZWQpO1xuICAgICAgaWYgKCFtb3ZlLmFuaW1hbCkgdGhpcy5wbGF5TW92ZVNvdW5kKG1vdmUpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgdGhpcy5hdWRpby5taXNzKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhbmltYXRlTW92ZShnYW1lOiBDaGVzc2ltYWxzR2FtZVN0YXRlLCBtb3ZlOiBDaGVzc2ltYWxzTW92ZSwgdXBkYXRlZDogQ2hlc3NpbWFsc0dhbWVTdGF0ZSk6IHZvaWQge1xuICAgIGlmICh0aGlzLm1vdmVBbmltYXRpb25UaW1lcikgY2xlYXJUaW1lb3V0KHRoaXMubW92ZUFuaW1hdGlvblRpbWVyKTtcbiAgICB0aGlzLnF1ZXVlTW92ZUVmZmVjdChtb3ZlKTtcblxuICAgIGNvbnN0IG1vdmluZ1BpZWNlID0gZ2FtZS5waWVjZXMuZmluZCgocGllY2UpID0+IHBpZWNlLmlkID09PSBtb3ZlLnBpZWNlSWQpO1xuICAgIGlmICghbW92aW5nUGllY2UpIHtcbiAgICAgIHRoaXMuYXBwbHlBbmltYXRlZE1vdmUoZ2FtZSwgdXBkYXRlZCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5tb3ZpbmdQaWVjZS5zZXQoe1xuICAgICAgY29sb3I6IG1vdmluZ1BpZWNlLmNvbG9yLFxuICAgICAgZnJvbVJvdzogdGhpcy5kaXNwbGF5Um93SW5kZXgobW92ZS5mcm9tLnJvdyksXG4gICAgICBmcm9tQ29sOiB0aGlzLmRpc3BsYXlDb2xJbmRleChtb3ZlLmZyb20uY29sKSxcbiAgICAgIHRvUm93OiB0aGlzLmRpc3BsYXlSb3dJbmRleChtb3ZlLnRvLnJvdyksXG4gICAgICB0b0NvbDogdGhpcy5kaXNwbGF5Q29sSW5kZXgobW92ZS50by5jb2wpLFxuICAgIH0pO1xuXG4gICAgdGhpcy5tb3ZlQW5pbWF0aW9uVGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuYXBwbHlBbmltYXRlZE1vdmUoZ2FtZSwgdXBkYXRlZCk7XG4gICAgfSwgQ0hFU1NJTUFMU19NT1ZFX0FOSU1BVElPTl9NUyk7XG4gIH1cblxuICBwcml2YXRlIGFwcGx5QW5pbWF0ZWRNb3ZlKHByZXZpb3VzOiBDaGVzc2ltYWxzR2FtZVN0YXRlLCB1cGRhdGVkOiBDaGVzc2ltYWxzR2FtZVN0YXRlKTogdm9pZCB7XG4gICAgdGhpcy5tb3ZpbmdQaWVjZS5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLmdhbWUuc2V0KHVwZGF0ZWQpO1xuICAgIHRoaXMucGxheVBvd2VyVW5sb2NrU291bmQocHJldmlvdXMsIHVwZGF0ZWQpO1xuICAgIGlmIChcbiAgICAgIHVwZGF0ZWQuY3VycmVudFR1cm4gIT09IHByZXZpb3VzLmN1cnJlbnRUdXJuICYmXG4gICAgICB1cGRhdGVkLnN0YXR1cyAhPT0gJ2ZpbmlzaGVkJyAmJlxuICAgICAgIXRoaXMuc2hvdWxkS2VlcEJvYXJkT3JpZW50YXRpb25TdGF0aWModXBkYXRlZClcbiAgICApIHtcbiAgICAgIHRoaXMudHJpZ2dlckJvYXJkT3JpZW50YXRpb24oKTtcbiAgICB9XG4gICAgaWYgKHVwZGF0ZWQuc3RhdHVzID09PSAnZmluaXNoZWQnKSB7XG4gICAgICB0aGlzLnNob3dMYXRlc3RSZXZpZXdTbmFwc2hvdCgpO1xuICAgICAgdGhpcy5wbGF5Q2hlc3NpbWFsc091dGNvbWVTb3VuZCh1cGRhdGVkKTtcbiAgICB9XG4gICAgdGhpcy5xdWV1ZUJvdFR1cm5JZk5lZWRlZCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBwbGF5UG93ZXJVbmxvY2tTb3VuZChwcmV2aW91czogQ2hlc3NpbWFsc0dhbWVTdGF0ZSwgdXBkYXRlZDogQ2hlc3NpbWFsc0dhbWVTdGF0ZSk6IHZvaWQge1xuICAgIGNvbnN0IHdoaXRlVW5sb2NrZWQgPSAhcHJldmlvdXMucGxheWVycy53aGl0ZS5wb3dlclVubG9ja2VkICYmIHVwZGF0ZWQucGxheWVycy53aGl0ZS5wb3dlclVubG9ja2VkO1xuICAgIGNvbnN0IGJsYWNrVW5sb2NrZWQgPSAhcHJldmlvdXMucGxheWVycy5ibGFjay5wb3dlclVubG9ja2VkICYmIHVwZGF0ZWQucGxheWVycy5ibGFjay5wb3dlclVubG9ja2VkO1xuICAgIGlmICh3aGl0ZVVubG9ja2VkIHx8IGJsYWNrVW5sb2NrZWQpIHtcbiAgICAgIHRoaXMuYXVkaW8uY2hlc3NpbWFsc1Bvd2VyVW5sb2NrZWQoKTtcbiAgICAgIHRoaXMucG93ZXJVbmxvY2tQdWxzZS5zZXQoZmFsc2UpO1xuICAgICAgY29uc3Qgc3RhcnRQdWxzZSA9ICgpID0+IHtcbiAgICAgICAgdGhpcy5wb3dlclVubG9ja1B1bHNlLnNldCh0cnVlKTtcbiAgICAgICAgaWYgKHRoaXMucG93ZXJVbmxvY2tUaW1lcikgY2xlYXJUaW1lb3V0KHRoaXMucG93ZXJVbmxvY2tUaW1lcik7XG4gICAgICAgIHRoaXMucG93ZXJVbmxvY2tUaW1lciA9IHNldFRpbWVvdXQoKCkgPT4gdGhpcy5wb3dlclVubG9ja1B1bHNlLnNldChmYWxzZSksIDEzNTApO1xuICAgICAgfTtcbiAgICAgIGlmICh0eXBlb2YgcmVxdWVzdEFuaW1hdGlvbkZyYW1lID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShzdGFydFB1bHNlKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgc3RhcnRQdWxzZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcXVldWVCb3RUdXJuSWZOZWVkZWQoKTogdm9pZCB7XG4gICAgY29uc3QgZ2FtZSA9IHRoaXMuZ2FtZSgpO1xuICAgIGlmIChcbiAgICAgIHRoaXMuc2NyZWVuKCkgIT09ICdnYW1lJyB8fFxuICAgICAgZ2FtZS5tb2RlICE9PSAnbG9jYWwnIHx8XG4gICAgICB0aGlzLnNlbGVjdGVkTG9jYWxNb2RlKCkgIT09ICdib3QnIHx8XG4gICAgICBnYW1lLnN0YXR1cyAhPT0gJ2luX3Byb2dyZXNzJyB8fFxuICAgICAgZ2FtZS5jdXJyZW50VHVybiAhPT0gQ0hFU1NJTUFMU19CT1RfQ09MT1JcbiAgICApIHtcbiAgICAgIHRoaXMuY2xlYXJCb3RUdXJuKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuYm90VHVyblRpbWVyKSBjbGVhclRpbWVvdXQodGhpcy5ib3RUdXJuVGltZXIpO1xuICAgIHRoaXMuc2VsZWN0ZWRQaWVjZUlkLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuc2VsZWN0ZWRBbmltYWwuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5ib3RUaGlua2luZy5zZXQodHJ1ZSk7XG4gICAgdGhpcy5ib3RUdXJuVGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHRoaXMucGxheUJvdFR1cm4oKSwgQ0hFU1NJTUFMU19CT1RfVEhJTktJTkdfTVMpO1xuICB9XG5cbiAgcHJpdmF0ZSBwbGF5Qm90VHVybigpOiB2b2lkIHtcbiAgICB0aGlzLmJvdFR1cm5UaW1lciA9IHVuZGVmaW5lZDtcbiAgICBjb25zdCBnYW1lID0gdGhpcy5nYW1lKCk7XG4gICAgaWYgKFxuICAgICAgZ2FtZS5tb2RlICE9PSAnbG9jYWwnIHx8XG4gICAgICB0aGlzLnNlbGVjdGVkTG9jYWxNb2RlKCkgIT09ICdib3QnIHx8XG4gICAgICBnYW1lLnN0YXR1cyAhPT0gJ2luX3Byb2dyZXNzJyB8fFxuICAgICAgZ2FtZS5jdXJyZW50VHVybiAhPT0gQ0hFU1NJTUFMU19CT1RfQ09MT1JcbiAgICApIHtcbiAgICAgIHRoaXMuYm90VGhpbmtpbmcuc2V0KGZhbHNlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBtb3ZlID0gY2hvb3NlQ2hlc3NpbWFsc0JvdE1vdmUoZ2FtZSwgdGhpcy5zZWxlY3RlZEJvdERpZmZpY3VsdHkoKSwgdGhpcy5zZWxlY3RlZEJvdFByb2ZpbGVJZCgpKTtcbiAgICBpZiAoIW1vdmUpIHtcbiAgICAgIHRoaXMuZ2FtZS5zZXQocmVzaWduQ2hlc3NpbWFsc0dhbWUoZ2FtZSwgQ0hFU1NJTUFMU19CT1RfQ09MT1IpKTtcbiAgICAgIHRoaXMuc2hvd0xhdGVzdFJldmlld1NuYXBzaG90KCk7XG4gICAgICB0aGlzLmJvdFRoaW5raW5nLnNldChmYWxzZSk7XG4gICAgICB0aGlzLnBsYXlDaGVzc2ltYWxzT3V0Y29tZVNvdW5kKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHVwZGF0ZWQgPSBhcHBseUNoZXNzaW1hbHNNb3ZlKGdhbWUsIG1vdmUpO1xuICAgICAgdGhpcy5ib3RUaGlua2luZy5zZXQoZmFsc2UpO1xuICAgICAgaWYgKG1vdmUuYW5pbWFsKSB0aGlzLnBsYXlNb3ZlU291bmQobW92ZSwgdHJ1ZSk7XG4gICAgICBpZiAodXBkYXRlZC5zdGF0dXMgPT09ICdmaW5pc2hlZCcpIHRoaXMucGxheUNoZXNzaW1hbHNPdXRjb21lU291bmQodXBkYXRlZCk7XG4gICAgICB0aGlzLmFuaW1hdGVNb3ZlKGdhbWUsIG1vdmUsIHVwZGF0ZWQpO1xuICAgICAgaWYgKCFtb3ZlLmFuaW1hbCkgdGhpcy5wbGF5TW92ZVNvdW5kKG1vdmUsIHRydWUpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgdGhpcy5ib3RUaGlua2luZy5zZXQoZmFsc2UpO1xuICAgICAgdGhpcy5hdWRpby5taXNzKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjbGVhckJvdFR1cm4oKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYm90VHVyblRpbWVyKSBjbGVhclRpbWVvdXQodGhpcy5ib3RUdXJuVGltZXIpO1xuICAgIHRoaXMuYm90VHVyblRpbWVyID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuYm90VGhpbmtpbmcuc2V0KGZhbHNlKTtcbiAgfVxuXG4gIHByaXZhdGUgdHJpZ2dlckJvYXJkT3JpZW50YXRpb24oKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2hvdWxkS2VlcEJvYXJkT3JpZW50YXRpb25TdGF0aWMoKSkgcmV0dXJuO1xuICAgIGlmICh0aGlzLmJvYXJkT3JpZW50YXRpb25UaW1lcikgY2xlYXJUaW1lb3V0KHRoaXMuYm9hcmRPcmllbnRhdGlvblRpbWVyKTtcbiAgICB0aGlzLmlzQm9hcmRPcmllbnRpbmcuc2V0KGZhbHNlKTtcbiAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgdGhpcy5pc0JvYXJkT3JpZW50aW5nLnNldCh0cnVlKTtcbiAgICAgIHRoaXMuYm9hcmRPcmllbnRhdGlvblRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB0aGlzLmlzQm9hcmRPcmllbnRpbmcuc2V0KGZhbHNlKSwgMzQwKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc2hvdWxkS2VlcEJvYXJkT3JpZW50YXRpb25TdGF0aWMoZ2FtZTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSA9IHRoaXMuZ2FtZSgpKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMudHV0b3JpYWxNb2RlKCkpIHJldHVybiB0cnVlO1xuICAgIGlmIChnYW1lLm1vZGUgPT09ICdvbmxpbmUnKSByZXR1cm4gdHJ1ZTtcbiAgICByZXR1cm4gZ2FtZS5tb2RlID09PSAnbG9jYWwnICYmIHRoaXMuc2VsZWN0ZWRMb2NhbE1vZGUoKSA9PT0gJ2JvdCc7XG4gIH1cblxuICBwcml2YXRlIGZvY3VzQm9hcmRTb29uKCk6IHZvaWQge1xuICAgIGlmICh0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJyB8fCB0eXBlb2YgcmVxdWVzdEFuaW1hdGlvbkZyYW1lID09PSAndW5kZWZpbmVkJykgcmV0dXJuO1xuICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuYm9hcmRBbmNob3I/Lm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcoeyBiZWhhdmlvcjogJ3Ntb290aCcsIGJsb2NrOiAnc3RhcnQnIH0pO1xuICAgICAgfSwgODApO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGFydENoZXNzaW1hbHNNZW51TXVzaWNTb29uKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnByb2plY3Rpb25Nb2RlIHx8IHRoaXMuc2NyZWVuKCkgIT09ICdob21lJykgcmV0dXJuO1xuICAgIGlmICh0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJykgcmV0dXJuO1xuICAgIHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICh0aGlzLnByb2plY3Rpb25Nb2RlIHx8IHRoaXMuc2NyZWVuKCkgIT09ICdob21lJykgcmV0dXJuO1xuICAgICAgdm9pZCB0aGlzLmF1ZGlvLnN0YXJ0Q2hlc3NpbWFsc01lbnVNdXNpYygpLmNhdGNoKCgpID0+IHVuZGVmaW5lZCk7XG4gICAgfSwgMCk7XG4gIH1cblxuICBwcml2YXRlIHN0YXJ0Q2hlc3NpbWFsc0dhbWVNdXNpY1Nvb24oKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucHJvamVjdGlvbk1vZGUgfHwgdGhpcy5zY3JlZW4oKSAhPT0gJ2dhbWUnKSByZXR1cm47XG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnKSByZXR1cm47XG4gICAgd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMucHJvamVjdGlvbk1vZGUgfHwgdGhpcy5zY3JlZW4oKSAhPT0gJ2dhbWUnKSByZXR1cm47XG4gICAgICB2b2lkIHRoaXMuYXVkaW8uc3RhcnRDaGVzc2ltYWxzR2FtZU11c2ljKCkuY2F0Y2goKCkgPT4gdW5kZWZpbmVkKTtcbiAgICB9LCAwKTtcbiAgfVxuXG4gIHByaXZhdGUgc3luY0NoZXNzaW1hbHNNdXNpY0FmdGVyU2V0dGluZ3NDaGFuZ2UoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2NyZWVuKCkgPT09ICdob21lJykge1xuICAgICAgdGhpcy5zdGFydENoZXNzaW1hbHNNZW51TXVzaWNTb29uKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLnNjcmVlbigpID09PSAnZ2FtZScgJiYgdGhpcy5nYW1lKCkuc3RhdHVzICE9PSAnZmluaXNoZWQnKSB7XG4gICAgICB0aGlzLnN0YXJ0Q2hlc3NpbWFsc0dhbWVNdXNpY1Nvb24oKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHBsYXlNb3ZlU291bmQobW92ZTogQ2hlc3NpbWFsc01vdmUsIGlzQm90ID0gZmFsc2UpOiB2b2lkIHtcbiAgICBpZiAobW92ZS5hbmltYWwpIHtcbiAgICAgIHRoaXMuYXVkaW8uY2hlc3NpbWFsc1Bvd2VyKG1vdmUuYW5pbWFsKTtcbiAgICAgIGlmIChtb3ZlLmNhcHR1cmVzUGllY2VJZCAmJiB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB0aGlzLmF1ZGlvLmNoZXNzaW1hbHNDYXB0dXJlKCksIDE1MCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChtb3ZlLmNhcHR1cmVzUGllY2VJZCkge1xuICAgICAgdGhpcy5hdWRpby5jaGVzc2ltYWxzQ2FwdHVyZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoaXNCb3QpIHtcbiAgICAgIHRoaXMuYXVkaW8uY2hlc3NpbWFsc0JvdE1vdmUoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5hdWRpby5jaGVzc2ltYWxzTW92ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBwbGF5Q2hlc3NpbWFsc091dGNvbWVTb3VuZChnYW1lOiBDaGVzc2ltYWxzR2FtZVN0YXRlID0gdGhpcy5nYW1lKCkpOiB2b2lkIHtcbiAgICBpZiAoZ2FtZS5zdGF0dXMgIT09ICdmaW5pc2hlZCcpIHJldHVybjtcbiAgICBjb25zdCBrZXkgPSBgJHtnYW1lLmlkfToke2dhbWUuc3RhdHVzfToke2dhbWUud2lubmVyID8/ICdub25lJ306JHtnYW1lLndpbm5lclJlYXNvbiA/PyAnbm9uZSd9OiR7Z2FtZS5tb3ZlQ291bnR9YDtcbiAgICBpZiAodGhpcy5sYXN0T3V0Y29tZVNvdW5kS2V5ID09PSBrZXkpIHJldHVybjtcbiAgICB0aGlzLmxhc3RPdXRjb21lU291bmRLZXkgPSBrZXk7XG4gICAgY29uc3Qgd2lubmVyID0gZ2FtZS53aW5uZXI7XG4gICAgY29uc3Qgc2lkZSA9IHRoaXMuY3VycmVudFBsYXllclNpZGVGb3JPdXRjb21lKGdhbWUpO1xuICAgIGlmICghd2lubmVyIHx8ICFzaWRlIHx8IHdpbm5lciA9PT0gc2lkZSkge1xuICAgICAgdGhpcy5hdWRpby5jaGVzc2ltYWxzVmljdG9yeSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmF1ZGlvLmNoZXNzaW1hbHNEZWZlYXQoKTtcbiAgfVxuXG4gIHByaXZhdGUgY3VycmVudFBsYXllclNpZGVGb3JPdXRjb21lKGdhbWU6IENoZXNzaW1hbHNHYW1lU3RhdGUpOiBDaGVzc2ltYWxzUGxheWVyQ29sb3IgfCB1bmRlZmluZWQge1xuICAgIGlmICh0aGlzLnByb2plY3Rpb25Nb2RlKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIGlmIChnYW1lLm1vZGUgPT09ICdvbmxpbmUnKSB7XG4gICAgICByZXR1cm4gdGhpcy5vbmxpbmUucGFydGljaXBhbnRTaWRlKGdhbWUsIHRoaXMub25saW5lVWlkKCkgPz8gdGhpcy5vbmxpbmUuY3VycmVudFVpZCk7XG4gICAgfVxuICAgIGlmICh0aGlzLnNlbGVjdGVkTG9jYWxNb2RlKCkgPT09ICdib3QnKSByZXR1cm4gJ3doaXRlJztcbiAgICByZXR1cm4gZ2FtZS53aW5uZXJSZWFzb24gPT09ICdyZXNpZ25hdGlvbicgPyBnYW1lLmN1cnJlbnRUdXJuIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSBjbGVhclJldmlldygpOiB2b2lkIHtcbiAgICB0aGlzLnJldmlld0luZGV4LnNldCh1bmRlZmluZWQpO1xuICB9XG5cbiAgcHJpdmF0ZSBzaG93TGF0ZXN0UmV2aWV3U25hcHNob3QoKTogdm9pZCB7XG4gICAgY29uc3QgZW50cmllcyA9IHRoaXMuZ2FtZSgpLm1vdmVIaXN0b3J5ID8/IFtdO1xuICAgIHRoaXMucmV2aWV3SW5kZXguc2V0KGVudHJpZXMubGVuZ3RoID4gMSA/IGVudHJpZXMubGVuZ3RoIC0gMSA6IHVuZGVmaW5lZCk7XG4gIH1cblxuICBwcml2YXRlIHF1ZXVlTW92ZUVmZmVjdChtb3ZlOiBDaGVzc2ltYWxzTW92ZSk6IHZvaWQge1xuICAgIGlmICh0aGlzLm1vdmVFZmZlY3RTdGFydFRpbWVyKSBjbGVhclRpbWVvdXQodGhpcy5tb3ZlRWZmZWN0U3RhcnRUaW1lcik7XG4gICAgaWYgKHRoaXMubW92ZUVmZmVjdENsZWFyVGltZXIpIGNsZWFyVGltZW91dCh0aGlzLm1vdmVFZmZlY3RDbGVhclRpbWVyKTtcblxuICAgIGlmICghbW92ZS5hbmltYWwgJiYgIW1vdmUuY2FwdHVyZXNQaWVjZUlkKSB7XG4gICAgICB0aGlzLm1vdmVFZmZlY3Quc2V0KHVuZGVmaW5lZCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5tb3ZlRWZmZWN0LnNldCh1bmRlZmluZWQpO1xuICAgIGNvbnN0IGRlbGF5TXMgPSBNYXRoLm1heCgwLCBDSEVTU0lNQUxTX01PVkVfQU5JTUFUSU9OX01TIC0gOTApO1xuICAgIHRoaXMubW92ZUVmZmVjdFN0YXJ0VGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMubW92ZUVmZmVjdC5zZXQoe1xuICAgICAgICBhbmltYWw6IG1vdmUuYW5pbWFsLFxuICAgICAgICBmcm9tOiB7IC4uLm1vdmUuZnJvbSB9LFxuICAgICAgICB0bzogeyAuLi5tb3ZlLnRvIH0sXG4gICAgICAgIGNhcHR1cmU6ICEhbW92ZS5jYXB0dXJlc1BpZWNlSWQsXG4gICAgICB9KTtcbiAgICAgIHRoaXMubW92ZUVmZmVjdENsZWFyVGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHRoaXMubW92ZUVmZmVjdC5zZXQodW5kZWZpbmVkKSwgOTUwKTtcbiAgICB9LCBkZWxheU1zKTtcbiAgfVxuXG4gIHRvZ2dsZUFuaW1hbChhbmltYWw6IENoZXNzaW1hbHNBbmltYWxWaWV3KTogdm9pZCB7XG4gICAgaWYgKHRoaXMucHJvamVjdGlvbk1vZGUgfHwgIXRoaXMuY2FuVXNlUG93ZXJDYXJkcygpKSByZXR1cm47XG4gICAgaWYgKHRoaXMuaXNQb3dlckNhcmRCbG9ja2VkQnlUdXRvcmlhbChhbmltYWwudHlwZSkpIHJldHVybjtcbiAgICBjb25zdCBwbGF5ZXIgPSB0aGlzLnBvd2VyUGxheWVyKCk7XG4gICAgaWYgKCFwbGF5ZXIucG93ZXJVbmxvY2tlZCB8fCBwbGF5ZXIuY2FyZHNbYW5pbWFsLnR5cGVdLnVzZWQpIHJldHVybjtcbiAgICBjb25zdCBjdXJyZW50ID0gdGhpcy5zZWxlY3RlZEFuaW1hbCgpO1xuICAgIGNvbnN0IG5leHQgPSBjdXJyZW50ID09PSBhbmltYWwudHlwZSA/IHVuZGVmaW5lZCA6IGFuaW1hbC50eXBlO1xuICAgIHRoaXMuc2VsZWN0ZWRBbmltYWwuc2V0KG5leHQpO1xuICAgIGlmICghdGhpcy5zZWxlY3RlZFBpZWNlSWQoKSkge1xuICAgICAgY29uc3QgZmlyc3RQaWVjZSA9IHRoaXMuZ2FtZSgpLnBpZWNlcy5maW5kKFxuICAgICAgICAocGllY2UpID0+ICFwaWVjZS5jYXB0dXJlZCAmJiBwaWVjZS5jb2xvciA9PT0gdGhpcy5nYW1lKCkuY3VycmVudFR1cm4sXG4gICAgICApO1xuICAgICAgdGhpcy5zZWxlY3RlZFBpZWNlSWQuc2V0KGZpcnN0UGllY2U/LmlkKTtcbiAgICB9XG4gICAgaWYgKG5leHQpIHRoaXMuYXVkaW8uY2hlc3NpbWFsc1Bvd2VyUHJldmlldyhhbmltYWwudHlwZSk7XG4gIH1cblxuICBwaWVjZUF0KHJvdzogbnVtYmVyLCBjb2w6IG51bWJlcik6IENoZXNzaW1hbHNQaWVjZSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIGdldENoZXNzaW1hbHNQaWVjZUF0KHRoaXMucmV2aWV3R2FtZSgpLCB7IHJvdywgY29sIH0pO1xuICB9XG5cbiAgaXNEYXJrQ2VsbChyb3c6IG51bWJlciwgY29sOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKHJvdyArIGNvbCkgJSAyID09PSAxO1xuICB9XG5cbiAgaXNFZGdlQ2VsbChyb3c6IG51bWJlciwgY29sOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICBjb25zdCBsYXN0ID0gdGhpcy5yZXZpZXdHYW1lKCkuYm9hcmRTaXplIC0gMTtcbiAgICByZXR1cm4gcm93ID09PSAwIHx8IGNvbCA9PT0gMCB8fCByb3cgPT09IGxhc3QgfHwgY29sID09PSBsYXN0O1xuICB9XG5cbiAgY2VsbFdlYXIocm93OiBudW1iZXIsIGNvbDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gTWF0aC5hYnMoKHJvdyAqIDE3ICsgY29sICogMzEgKyByb3cgKiBjb2wgKiA3KSAlIDYpO1xuICB9XG5cbiAgaXNTZWxlY3RlZENlbGwocm93OiBudW1iZXIsIGNvbDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgY29uc3QgcGllY2UgPSB0aGlzLnBpZWNlQXQocm93LCBjb2wpO1xuICAgIHJldHVybiAhIXBpZWNlICYmIHBpZWNlLmlkID09PSB0aGlzLnNlbGVjdGVkUGllY2VJZCgpO1xuICB9XG5cbiAgaXNMZWdhbENlbGwocm93OiBudW1iZXIsIGNvbDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubGVnYWxNb3ZlS2V5cygpLmhhcyhwb3NpdGlvbktleSh7IHJvdywgY29sIH0pKTtcbiAgfVxuXG4gIGlzQ2FwdHVyZUNlbGwocm93OiBudW1iZXIsIGNvbDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY2FwdHVyZU1vdmVLZXlzKCkuaGFzKHBvc2l0aW9uS2V5KHsgcm93LCBjb2wgfSkpO1xuICB9XG5cbiAgaXNUaHJlYXRlbmVkQ2VsbChyb3c6IG51bWJlciwgY29sOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICBjb25zdCBwaWVjZSA9IHRoaXMucGllY2VBdChyb3csIGNvbCk7XG4gICAgcmV0dXJuICEhcGllY2UgJiYgdGhpcy50aHJlYXRlbmVkUGllY2VJZHMoKS5oYXMocGllY2UuaWQpO1xuICB9XG5cbiAgaXNDYXB0dXJlUmVhZHlDZWxsKHJvdzogbnVtYmVyLCBjb2w6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHBpZWNlID0gdGhpcy5waWVjZUF0KHJvdywgY29sKTtcbiAgICByZXR1cm4gISFwaWVjZSAmJiBwaWVjZS5jb2xvciA9PT0gdGhpcy5nYW1lKCkuY3VycmVudFR1cm4gJiYgdGhpcy5jYXB0dXJlUmVhZHlQaWVjZUlkcygpLmhhcyhwaWVjZS5pZCk7XG4gIH1cblxuICBpc1dpbm5pbmdDZWxsKHJvdzogbnVtYmVyLCBjb2w6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLndpbm5pbmdNb3ZlS2V5cygpLmhhcyhwb3NpdGlvbktleSh7IHJvdywgY29sIH0pKTtcbiAgfVxuXG4gIGlzTGFzdE1vdmVDZWxsKHJvdzogbnVtYmVyLCBjb2w6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGxhc3RNb3ZlID0gdGhpcy5yZXZpZXdHYW1lKCkubGFzdE1vdmU7XG4gICAgcmV0dXJuICF0aGlzLnNlbGVjdGVkUGllY2VJZCgpICYmICEhbGFzdE1vdmUgJiYgcG9zaXRpb25LZXkobGFzdE1vdmUudG8pID09PSBwb3NpdGlvbktleSh7IHJvdywgY29sIH0pO1xuICB9XG5cbiAgaXNNb3ZpbmdTb3VyY2VDZWxsKHJvdzogbnVtYmVyLCBjb2w6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIGNvbnN0IG1vdmluZyA9IHRoaXMubW92aW5nUGllY2UoKTtcbiAgICBpZiAoIW1vdmluZykgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiB0aGlzLmRpc3BsYXlSb3dJbmRleChyb3cpID09PSBtb3ZpbmcuZnJvbVJvdyAmJiB0aGlzLmRpc3BsYXlDb2xJbmRleChjb2wpID09PSBtb3ZpbmcuZnJvbUNvbDtcbiAgfVxuXG4gIGlzTW92ZUVmZmVjdENlbGwocm93OiBudW1iZXIsIGNvbDogbnVtYmVyLCBhbmltYWw/OiBDaGVzc2ltYWxzQW5pbWFsVHlwZSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGVmZmVjdCA9IHRoaXMubW92ZUVmZmVjdCgpO1xuICAgIGlmICghZWZmZWN0KSByZXR1cm4gZmFsc2U7XG4gICAgaWYgKGFuaW1hbCAmJiBlZmZlY3QuYW5pbWFsICE9PSBhbmltYWwpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gcG9zaXRpb25LZXkoZWZmZWN0LnRvKSA9PT0gcG9zaXRpb25LZXkoeyByb3csIGNvbCB9KTtcbiAgfVxuXG4gIGlzTW92ZUVmZmVjdFNvdXJjZUNlbGwocm93OiBudW1iZXIsIGNvbDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgY29uc3QgZWZmZWN0ID0gdGhpcy5tb3ZlRWZmZWN0KCk7XG4gICAgcmV0dXJuICEhZWZmZWN0ICYmIHBvc2l0aW9uS2V5KGVmZmVjdC5mcm9tKSA9PT0gcG9zaXRpb25LZXkoeyByb3csIGNvbCB9KTtcbiAgfVxuXG4gIGlzTW92ZUVmZmVjdENhcHR1cmVDZWxsKHJvdzogbnVtYmVyLCBjb2w6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGVmZmVjdCA9IHRoaXMubW92ZUVmZmVjdCgpO1xuICAgIHJldHVybiAhIWVmZmVjdD8uY2FwdHVyZSAmJiBwb3NpdGlvbktleShlZmZlY3QudG8pID09PSBwb3NpdGlvbktleSh7IHJvdywgY29sIH0pO1xuICB9XG5cbiAgZmlsZUxhYmVsKGNvbDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZSg2NSArIGNvbCk7XG4gIH1cblxuICByYW5rTGFiZWwocm93OiBudW1iZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLnJldmlld0dhbWUoKS5ib2FyZFNpemUgLSByb3d9YDtcbiAgfVxuXG4gIHNob3dSYW5rTGFiZWwoY29sOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICByZXR1cm4gY29sID09PSB0aGlzLmRpc3BsYXlDb2xzKClbMF07XG4gIH1cblxuICBzaG93RmlsZUxhYmVsKHJvdzogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgY29uc3Qgcm93cyA9IHRoaXMuZGlzcGxheVJvd3MoKTtcbiAgICByZXR1cm4gcm93ID09PSByb3dzW3Jvd3MubGVuZ3RoIC0gMV07XG4gIH1cblxuICBwbGF5ZXJMYWJlbChjb2xvcjogQ2hlc3NpbWFsc1BsYXllckNvbG9yKTogc3RyaW5nIHtcbiAgICByZXR1cm4gY29sb3IgPT09ICd3aGl0ZScgPyB0aGlzLnQoJ2NoZXNzaW1hbHNXaGl0ZScpIDogdGhpcy50KCdjaGVzc2ltYWxzQmxhY2snKTtcbiAgfVxuXG4gIHR1cm5TdGF0ZUxhYmVsKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuZ2FtZSgpLnN0YXR1cyA9PT0gJ2ZpbmlzaGVkJykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0ZpbmlzaGVkQ2hpcCcpO1xuICAgIGlmICh0aGlzLmlzQWN0aW9uYWJsZVR1cm4oKSkgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc1lvdXJUdXJuJyk7XG4gICAgaWYgKHRoaXMuYm90VGhpbmtpbmcoKSkgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0JvdFRoaW5raW5nVGl0bGUnKTtcbiAgICBpZiAodGhpcy5tb3ZlU3luY2luZygpKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzT25saW5lU3luY2luZ1RpdGxlJyk7XG4gICAgcmV0dXJuIHRoaXMuaXNXYWl0aW5nRm9yVHVybigpID8gdGhpcy50KCdjaGVzc2ltYWxzV2FpdGluZ1R1cm5MYWJlbCcpIDogdGhpcy5tb2RlQ2hpcExhYmVsKCk7XG4gIH1cblxuICB0dXJuU3RhdGVCb2R5KCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuZ2FtZSgpLnN0YXR1cyA9PT0gJ2ZpbmlzaGVkJykgcmV0dXJuIHRoaXMud2luQm9keSgpO1xuICAgIGlmICh0aGlzLmlzQWN0aW9uYWJsZVR1cm4oKSkge1xuICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRMb2NhbE1vZGUoKSA9PT0gJ2JvdCcgJiYgdGhpcy5nYW1lKCkubW9kZSA9PT0gJ2xvY2FsJ1xuICAgICAgICA/IHRoaXMudCgnY2hlc3NpbWFsc0JvdFlvdXJUdXJuQm9keScpXG4gICAgICAgIDogdGhpcy50KCdjaGVzc2ltYWxzWW91clR1cm5Cb2R5Jyk7XG4gICAgfVxuICAgIGlmICh0aGlzLmJvdFRoaW5raW5nKCkpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNCb3RUaGlua2luZ0JvZHknKTtcbiAgICBpZiAodGhpcy5tb3ZlU3luY2luZygpKSByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzT25saW5lU3luY2luZ0JvZHknKTtcbiAgICByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzV2FpdGluZ1R1cm4nKTtcbiAgfVxuXG4gIHdpbm5lckRpc3BsYXlOYW1lKCk6IHN0cmluZyB7XG4gICAgY29uc3Qgd2lubmVyID0gdGhpcy5nYW1lKCkud2lubmVyID8/ICd3aGl0ZSc7XG4gICAgcmV0dXJuIHRoaXMucGxheWVyRGlzcGxheU5hbWUod2lubmVyKTtcbiAgfVxuXG4gIHdpbm5lclNpZGVMYWJlbCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnBsYXllckxhYmVsKHRoaXMuZ2FtZSgpLndpbm5lciA/PyAnd2hpdGUnKTtcbiAgfVxuXG4gIHdpbm5lckluaXRpYWxzKCk6IHN0cmluZyB7XG4gICAgY29uc3QgbmFtZSA9IHRoaXMud2lubmVyRGlzcGxheU5hbWUoKS50cmltKCk7XG4gICAgY29uc3QgaW5pdGlhbHMgPSBuYW1lXG4gICAgICAuc3BsaXQoL1xccysvKVxuICAgICAgLmZpbHRlcihCb29sZWFuKVxuICAgICAgLnNsaWNlKDAsIDIpXG4gICAgICAubWFwKChwYXJ0KSA9PiBwYXJ0LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpKVxuICAgICAgLmpvaW4oJycpO1xuICAgIHJldHVybiBpbml0aWFscyB8fCB0aGlzLndpbm5lclNpZGVMYWJlbCgpLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpO1xuICB9XG5cbiAgd2lubmVyQXZhdGFyVXJsKCk6IHN0cmluZyB7XG4gICAgY29uc3QgZ2FtZSA9IHRoaXMuZ2FtZSgpO1xuICAgIGNvbnN0IHdpbm5lciA9IGdhbWUud2lubmVyO1xuICAgIGlmICghd2lubmVyIHx8IGdhbWUubW9kZSAhPT0gJ29ubGluZScpIHJldHVybiAnJztcbiAgICByZXR1cm4gZ2FtZS5vbmxpbmU/LnBhcnRpY2lwYW50cz8uW3dpbm5lcl0/LmF2YXRhclVybD8udHJpbSgpID8/ICcnO1xuICB9XG5cbiAgaXNDdXJyZW50UGxheWVyVmljdG9yeSgpOiBib29sZWFuIHtcbiAgICBjb25zdCBnYW1lID0gdGhpcy5nYW1lKCk7XG4gICAgaWYgKGdhbWUuc3RhdHVzICE9PSAnZmluaXNoZWQnIHx8ICFnYW1lLndpbm5lcikgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiB0aGlzLmN1cnJlbnRQbGF5ZXJTaWRlRm9yT3V0Y29tZShnYW1lKSA9PT0gZ2FtZS53aW5uZXI7XG4gIH1cblxuICBpc0N1cnJlbnRQbGF5ZXJEZWZlYXQoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgZ2FtZSA9IHRoaXMuZ2FtZSgpO1xuICAgIGlmIChnYW1lLnN0YXR1cyAhPT0gJ2ZpbmlzaGVkJyB8fCAhZ2FtZS53aW5uZXIpIHJldHVybiBmYWxzZTtcbiAgICBjb25zdCBzaWRlID0gdGhpcy5jdXJyZW50UGxheWVyU2lkZUZvck91dGNvbWUoZ2FtZSk7XG4gICAgcmV0dXJuICEhc2lkZSAmJiBzaWRlICE9PSBnYW1lLndpbm5lcjtcbiAgfVxuXG4gIHByaXZhdGUgcGxheWVyRGlzcGxheU5hbWUoY29sb3I6IENoZXNzaW1hbHNQbGF5ZXJDb2xvcik6IHN0cmluZyB7XG4gICAgY29uc3QgZ2FtZSA9IHRoaXMuZ2FtZSgpO1xuICAgIGlmIChnYW1lLm1vZGUgPT09ICdvbmxpbmUnKSB7XG4gICAgICBjb25zdCBwYXJ0aWNpcGFudCA9IGdhbWUub25saW5lPy5wYXJ0aWNpcGFudHM/Lltjb2xvcl07XG4gICAgICBjb25zdCBuYW1lID0gcGFydGljaXBhbnQ/Lm5hbWU/LnRyaW0oKTtcbiAgICAgIGlmIChuYW1lKSByZXR1cm4gbmFtZTtcbiAgICAgIGNvbnN0IGhhbmRsZSA9IHBhcnRpY2lwYW50Py5oYW5kbGU/LnRyaW0oKTtcbiAgICAgIGlmIChoYW5kbGUpIHJldHVybiBoYW5kbGU7XG4gICAgfVxuICAgIGlmIChnYW1lLm1vZGUgPT09ICdsb2NhbCcgJiYgdGhpcy5zZWxlY3RlZExvY2FsTW9kZSgpID09PSAnYm90Jykge1xuICAgICAgcmV0dXJuIGNvbG9yID09PSBDSEVTU0lNQUxTX0JPVF9DT0xPUiA/IHRoaXMudCgnY2hlc3NpbWFsc0JvdE5hbWUnKSA6IHRoaXMubG9nZ2VkUGxheWVyTmFtZSgpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5wbGF5ZXJMYWJlbChjb2xvcik7XG4gIH1cblxuICBwcml2YXRlIHJlbWF0Y2hPcHBvbmVudCgpOiBDaGVzc2ltYWxzT25saW5lUGFydGljaXBhbnQgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGdhbWUgPSB0aGlzLmdhbWUoKTtcbiAgICBjb25zdCByb2xlID0gdGhpcy5vbmxpbmVSb2xlKCk7XG4gICAgaWYgKGdhbWUubW9kZSAhPT0gJ29ubGluZScgfHwgKHJvbGUgIT09ICd3aGl0ZScgJiYgcm9sZSAhPT0gJ2JsYWNrJykpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgY29uc3Qgb3Bwb25lbnRTaWRlOiBDaGVzc2ltYWxzUGxheWVyQ29sb3IgPSByb2xlID09PSAnd2hpdGUnID8gJ2JsYWNrJyA6ICd3aGl0ZSc7XG4gICAgcmV0dXJuIGdhbWUub25saW5lPy5wYXJ0aWNpcGFudHM/LltvcHBvbmVudFNpZGVdO1xuICB9XG5cbiAgcHJpdmF0ZSBjdXJyZW50T3Bwb25lbnRVaWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5yZW1hdGNoT3Bwb25lbnQoKT8udWlkID8/ICcnO1xuICB9XG5cbiAgbW9kZUNoaXBMYWJlbCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IGdhbWUgPSB0aGlzLmdhbWUoKTtcbiAgICBpZiAoZ2FtZS5tb2RlICE9PSAnb25saW5lJykge1xuICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRMb2NhbE1vZGUoKSA9PT0gJ2JvdCcgPyB0aGlzLnQoJ2NoZXNzaW1hbHNCb3RNb2RlJykgOiB0aGlzLnQoJ2NoZXNzaW1hbHNPbmVEZXZpY2UnKTtcbiAgICB9XG4gICAgY29uc3Qgcm9sZSA9IHRoaXMub25saW5lUm9sZSgpO1xuICAgIGlmIChyb2xlID09PSAnd2FpdGluZycpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNPbmxpbmVXYWl0aW5nJyk7XG4gICAgaWYgKHJvbGUgPT09ICdwZW5kaW5nJykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc09ubGluZVBlbmRpbmcnKTtcbiAgICBpZiAocm9sZSA9PT0gJ3NwZWN0YXRvcicpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNTcGVjdGF0b3InKTtcbiAgICByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzT25saW5lUGxheWVyJyk7XG4gIH1cblxuICB0dXJuVGl0bGUoKTogc3RyaW5nIHtcbiAgICBjb25zdCBnYW1lID0gdGhpcy5nYW1lKCk7XG4gICAgaWYgKGdhbWUubW9kZSAhPT0gJ29ubGluZScpIHtcbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkTG9jYWxNb2RlKCkgPT09ICdib3QnICYmIGdhbWUuY3VycmVudFR1cm4gPT09IENIRVNTSU1BTFNfQk9UX0NPTE9SKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNCb3RUaGlua2luZ1RpdGxlJyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy5jdXJyZW50VHVyblRpdGxlKCk7XG4gICAgfVxuICAgIGlmICh0aGlzLm9ubGluZVJvbGUoKSA9PT0gZ2FtZS5jdXJyZW50VHVybikgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc1lvdXJUdXJuJyk7XG4gICAgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0N1cnJlbnRUdXJuJykucmVwbGFjZSgne3BsYXllcn0nLCB0aGlzLnBsYXllckxhYmVsKGdhbWUuY3VycmVudFR1cm4pKTtcbiAgfVxuXG4gIG5vcm1hbGl6ZUdhbWVJZCh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5vbmxpbmUubm9ybWFsaXplR2FtZUlkKHZhbHVlKTtcbiAgfVxuXG4gIGFzeW5jIGNvcHlPbmxpbmVMaW5rKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHVybCA9IHRoaXMub25saW5lLnNoYXJlVXJsKHRoaXMuZ2FtZSgpLmlkLCB0aGlzLm1pbmlHYW1lc0Jhc2VSb3V0ZSgpKTtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgbmF2aWdhdG9yLmNsaXBib2FyZD8ud3JpdGVUZXh0KHVybCk7XG4gICAgICB0aGlzLnRvYXN0LnNob3coeyBtZXNzYWdlOiB0aGlzLnQoJ2NoZXNzaW1hbHNMaW5rQ29waWVkJyksIGNvbG9yOiAnZGFyaycsIGR1cmF0aW9uOiAyMjAwLCBwb3NpdGlvbjogJ3RvcCcgfSk7XG4gICAgICB0aGlzLmF1ZGlvLmZsaXAoKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHRoaXMuYXVkaW8ubWlzcygpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHNoYXJlT25saW5lTGluaygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB1cmwgPSB0aGlzLm9ubGluZS5zaGFyZVVybCh0aGlzLmdhbWUoKS5pZCwgdGhpcy5taW5pR2FtZXNCYXNlUm91dGUoKSk7XG4gICAgaWYgKG5hdmlnYXRvci5zaGFyZSkge1xuICAgICAgYXdhaXQgbmF2aWdhdG9yLnNoYXJlKHsgdGl0bGU6IHRoaXMudCgnY2hlc3NpbWFsc1RpdGxlJyksIHRleHQ6IHRoaXMudCgnY2hlc3NpbWFsc1NoYXJlVGV4dCcpLCB1cmwgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGF3YWl0IHRoaXMuY29weU9ubGluZUxpbmsoKTtcbiAgfVxuXG4gIGFzeW5jIHNoYXJlUHJvamVjdGlvbkxpbmsoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgdXJsID0gdGhpcy5vbmxpbmUucHJvamVjdGlvblNoYXJlVXJsKHRoaXMuZ2FtZSgpLmlkLCB0aGlzLm1pbmlHYW1lc0Jhc2VSb3V0ZSgpKTtcbiAgICBpZiAobmF2aWdhdG9yLnNoYXJlKSB7XG4gICAgICBhd2FpdCBuYXZpZ2F0b3Iuc2hhcmUoe1xuICAgICAgICB0aXRsZTogdGhpcy50KCdjaGVzc2ltYWxzUHJvamVjdGlvblRpdGxlJyksXG4gICAgICAgIHRleHQ6IHRoaXMudCgnY2hlc3NpbWFsc1Byb2plY3Rpb25TaGFyZVRleHQnKSxcbiAgICAgICAgdXJsLFxuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICBhd2FpdCBuYXZpZ2F0b3IuY2xpcGJvYXJkPy53cml0ZVRleHQodXJsKTtcbiAgICAgIHRoaXMudG9hc3Quc2hvdyh7XG4gICAgICAgIG1lc3NhZ2U6IHRoaXMudCgnY2hlc3NpbWFsc1Byb2plY3Rpb25MaW5rQ29waWVkJyksXG4gICAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICAgIGR1cmF0aW9uOiAyMjAwLFxuICAgICAgICBwb3NpdGlvbjogJ3RvcCcsXG4gICAgICB9KTtcbiAgICAgIHRoaXMuYXVkaW8uZmxpcCgpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgdGhpcy5hdWRpby5taXNzKCk7XG4gICAgfVxuICB9XG5cbiAgY2FuUmV2aWV3UGVuZGluZ0d1ZXN0KCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGdhbWUgPSB0aGlzLmdhbWUoKTtcbiAgICBjb25zdCB1aWQgPSB0aGlzLm9ubGluZVVpZCgpO1xuICAgIHJldHVybiAhIXVpZFxuICAgICAgJiYgZ2FtZS5tb2RlID09PSAnb25saW5lJ1xuICAgICAgJiYgdGhpcy5vbmxpbmUuaXNIb3N0V2FpdGluZyhnYW1lLCB1aWQpXG4gICAgICAmJiAhIWdhbWUub25saW5lLnBlbmRpbmdHdWVzdDtcbiAgfVxuXG4gIHBlbmRpbmdHdWVzdE5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5nYW1lKCkub25saW5lPy5wZW5kaW5nR3Vlc3Q/Lm5hbWUgPz8gdGhpcy50KCdkZWZhdWx0UGxheWVyTmFtZScpO1xuICB9XG5cbiAgcGVuZGluZ0d1ZXN0SGFuZGxlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZ2FtZSgpLm9ubGluZT8ucGVuZGluZ0d1ZXN0Py5oYW5kbGUgPz8gJyc7XG4gIH1cblxuICBwZW5kaW5nR3Vlc3RBdmF0YXJVcmwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5nYW1lKCkub25saW5lPy5wZW5kaW5nR3Vlc3Q/LmF2YXRhclVybCA/PyAnJztcbiAgfVxuXG4gIHBlbmRpbmdHdWVzdEluaXRpYWxzKCk6IHN0cmluZyB7XG4gICAgY29uc3QgZ3Vlc3QgPSB0aGlzLmdhbWUoKS5vbmxpbmU/LnBlbmRpbmdHdWVzdDtcbiAgICBjb25zdCBuYW1lID0gKGd1ZXN0Py5uYW1lIHx8IGd1ZXN0Py5oYW5kbGUgfHwgdGhpcy50KCdkZWZhdWx0UGxheWVyTmFtZScpKS50cmltKCk7XG4gICAgY29uc3QgaW5pdGlhbHMgPSBuYW1lXG4gICAgICAuc3BsaXQoL1xccysvKVxuICAgICAgLmZpbHRlcihCb29sZWFuKVxuICAgICAgLnNsaWNlKDAsIDIpXG4gICAgICAubWFwKChwYXJ0KSA9PiBwYXJ0LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpKVxuICAgICAgLmpvaW4oJycpO1xuICAgIHJldHVybiBpbml0aWFscyB8fCAnPyc7XG4gIH1cblxuICBwZW5kaW5nR3Vlc3RBdmF0YXJQcm9wcygpOiBVc2VyQXZhdGFyTWV0YWRhdGEge1xuICAgIGNvbnN0IGd1ZXN0ID0gdGhpcy5nYW1lKCkub25saW5lPy5wZW5kaW5nR3Vlc3Q7XG4gICAgcmV0dXJuIHtcbiAgICAgIHVzZXI6IHtcbiAgICAgICAgbmFtZTogZ3Vlc3Q/Lm5hbWUsXG4gICAgICAgIGhhbmRsZTogZ3Vlc3Q/LmhhbmRsZSxcbiAgICAgICAgYXZhdGFyVXJsOiBndWVzdD8uYXZhdGFyVXJsLFxuICAgICAgfSxcbiAgICAgIHNpemU6ICdzbWFsbCcsXG4gICAgICBib3JkZXJlZDogdHJ1ZSxcbiAgICB9O1xuICB9XG5cbiAgcmVtYXRjaE9wcG9uZW50TmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnJlbWF0Y2hPcHBvbmVudCgpPy5uYW1lPy50cmltKCkgfHwgdGhpcy50KCdkZWZhdWx0UGxheWVyTmFtZScpO1xuICB9XG5cbiAgcmVtYXRjaE9wcG9uZW50SGFuZGxlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucmVtYXRjaE9wcG9uZW50KCk/LmhhbmRsZT8udHJpbSgpID8/ICcnO1xuICB9XG5cbiAgcmVtYXRjaE9wcG9uZW50QXZhdGFyVXJsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucmVtYXRjaE9wcG9uZW50KCk/LmF2YXRhclVybD8udHJpbSgpID8/ICcnO1xuICB9XG5cbiAgcmVtYXRjaE9wcG9uZW50SW5pdGlhbHMoKTogc3RyaW5nIHtcbiAgICBjb25zdCBvcHBvbmVudCA9IHRoaXMucmVtYXRjaE9wcG9uZW50KCk7XG4gICAgY29uc3QgbmFtZSA9IChvcHBvbmVudD8ubmFtZSB8fCBvcHBvbmVudD8uaGFuZGxlIHx8IHRoaXMudCgnZGVmYXVsdFBsYXllck5hbWUnKSkudHJpbSgpO1xuICAgIGNvbnN0IGluaXRpYWxzID0gbmFtZVxuICAgICAgLnNwbGl0KC9cXHMrLylcbiAgICAgIC5maWx0ZXIoQm9vbGVhbilcbiAgICAgIC5zbGljZSgwLCAyKVxuICAgICAgLm1hcCgocGFydCkgPT4gcGFydC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSlcbiAgICAgIC5qb2luKCcnKTtcbiAgICByZXR1cm4gaW5pdGlhbHMgfHwgJz8nO1xuICB9XG5cbiAgcmVtYXRjaE9wcG9uZW50QXZhdGFyUHJvcHMoKTogVXNlckF2YXRhck1ldGFkYXRhIHtcbiAgICBjb25zdCBvcHBvbmVudCA9IHRoaXMucmVtYXRjaE9wcG9uZW50KCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHVzZXI6IHtcbiAgICAgICAgbmFtZTogb3Bwb25lbnQ/Lm5hbWUsXG4gICAgICAgIGhhbmRsZTogb3Bwb25lbnQ/LmhhbmRsZSxcbiAgICAgICAgYXZhdGFyVXJsOiBvcHBvbmVudD8uYXZhdGFyVXJsLFxuICAgICAgfSxcbiAgICAgIHNpemU6ICdzbWFsbCcsXG4gICAgICBib3JkZXJlZDogdHJ1ZSxcbiAgICB9O1xuICB9XG5cbiAgd2FpdGluZ1RpdGxlKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuY2FuUmV2aWV3UGVuZGluZ0d1ZXN0KCkpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNKb2luUmVxdWVzdFRpdGxlJyk7XG4gICAgaWYgKHRoaXMub25saW5lUm9sZSgpID09PSAncGVuZGluZycpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNMb2JieUd1ZXN0V2FpdGluZ1RpdGxlJyk7XG4gICAgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc1dhaXRpbmdUaXRsZScpO1xuICB9XG5cbiAgd2FpdGluZ0JvZHkoKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5jYW5SZXZpZXdQZW5kaW5nR3Vlc3QoKSkge1xuICAgICAgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0pvaW5SZXF1ZXN0Qm9keScpLnJlcGxhY2UoJ3twbGF5ZXJ9JywgdGhpcy5wZW5kaW5nR3Vlc3ROYW1lKCkpO1xuICAgIH1cbiAgICBpZiAodGhpcy5vbmxpbmVSb2xlKCkgPT09ICdwZW5kaW5nJykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0xvYmJ5R3Vlc3RXYWl0aW5nQm9keScpO1xuICAgIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNXYWl0aW5nQm9keScpO1xuICB9XG5cbiAgYXN5bmMgYWNjZXB0T25saW5lR3Vlc3QoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCF0aGlzLmNhblJldmlld1BlbmRpbmdHdWVzdCgpKSByZXR1cm47XG4gICAgdGhpcy5vbmxpbmVBY3Rpb24uc2V0KCdhY2NlcHQnKTtcbiAgICB0aGlzLm9ubGluZUxvYWRpbmcuc2V0KHRydWUpO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLm9ubGluZS5hY2NlcHRHdWVzdCh0aGlzLmdhbWUoKS5pZCk7XG4gICAgICB0aGlzLnRvYXN0LnNob3coeyBtZXNzYWdlOiB0aGlzLnQoJ2NoZXNzaW1hbHNHdWVzdEFjY2VwdGVkJyksIGNvbG9yOiAnZGFyaycsIGR1cmF0aW9uOiAyMjAwLCBwb3NpdGlvbjogJ3RvcCcgfSk7XG4gICAgICB0aGlzLmF1ZGlvLmZsaXAoKTtcbiAgICAgIHZvaWQgdGhpcy5oYXB0aWNzLnN1Y2Nlc3MoKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS53YXJuKCdbQ2hlc3NpbWFsc10gYWNjZXB0IGd1ZXN0IGZhaWxlZCcsIGVycm9yKTtcbiAgICAgIHRoaXMub25saW5lRXJyb3Iuc2V0KHRoaXMudCgnY2hlc3NpbWFsc09ubGluZUVycm9yJykpO1xuICAgICAgdGhpcy5hdWRpby5taXNzKCk7XG4gICAgICB2b2lkIHRoaXMuaGFwdGljcy5lcnJvcigpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLm9ubGluZUFjdGlvbi5zZXQodW5kZWZpbmVkKTtcbiAgICAgIHRoaXMub25saW5lTG9hZGluZy5zZXQoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHJlamVjdE9ubGluZUd1ZXN0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghdGhpcy5jYW5SZXZpZXdQZW5kaW5nR3Vlc3QoKSkgcmV0dXJuO1xuICAgIHRoaXMub25saW5lQWN0aW9uLnNldCgncmVqZWN0Jyk7XG4gICAgdGhpcy5vbmxpbmVMb2FkaW5nLnNldCh0cnVlKTtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5vbmxpbmUucmVqZWN0R3Vlc3QodGhpcy5nYW1lKCkuaWQpO1xuICAgICAgdGhpcy50b2FzdC5zaG93KHsgbWVzc2FnZTogdGhpcy50KCdjaGVzc2ltYWxzR3Vlc3RSZWplY3RlZCcpLCBjb2xvcjogJ2RhcmsnLCBkdXJhdGlvbjogMjIwMCwgcG9zaXRpb246ICd0b3AnIH0pO1xuICAgICAgdGhpcy5hdWRpby5taXNzKCk7XG4gICAgICB2b2lkIHRoaXMuaGFwdGljcy53YXJuaW5nKCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUud2FybignW0NoZXNzaW1hbHNdIHJlamVjdCBndWVzdCBmYWlsZWQnLCBlcnJvcik7XG4gICAgICB0aGlzLm9ubGluZUVycm9yLnNldCh0aGlzLnQoJ2NoZXNzaW1hbHNPbmxpbmVFcnJvcicpKTtcbiAgICAgIHRoaXMuYXVkaW8ubWlzcygpO1xuICAgICAgdm9pZCB0aGlzLmhhcHRpY3MuZXJyb3IoKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5vbmxpbmVBY3Rpb24uc2V0KHVuZGVmaW5lZCk7XG4gICAgICB0aGlzLm9ubGluZUxvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICBvcGVuSGlzdG9yeUdhbWUoZW50cnk6IENoZXNzaW1hbHNIaXN0b3J5RW50cnkpOiB2b2lkIHtcbiAgICB0aGlzLm9ubGluZUpvaW5Db2RlLnNldChlbnRyeS5nYW1lSWQpO1xuICAgIHZvaWQgdGhpcy5vcGVuT25saW5lR2FtZShlbnRyeS5nYW1lSWQpO1xuICAgIHZvaWQgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCh0aGlzLmNoZXNzaW1hbHNHYW1lUm91dGUoZW50cnkuZ2FtZUlkKSk7XG4gIH1cblxuICBoaXN0b3J5T3V0Y29tZUxhYmVsKGVudHJ5OiBDaGVzc2ltYWxzSGlzdG9yeUVudHJ5KTogc3RyaW5nIHtcbiAgICBjb25zdCBvdXRjb21lS2V5ID0gYGNoZXNzaW1hbHNIaXN0b3J5JHtlbnRyeS5vdXRjb21lXG4gICAgICAuc3BsaXQoJ18nKVxuICAgICAgLm1hcCgocGFydCkgPT4gdGhpcy5jYXBpdGFsaXplKHBhcnQpKVxuICAgICAgLmpvaW4oJycpfWA7XG4gICAgY29uc3Qgb3Bwb25lbnQgPSBlbnRyeS5vcHBvbmVudE5hbWVcbiAgICAgID8gYCDCtyAke3RoaXMudCgnY2hlc3NpbWFsc0hpc3RvcnlBZ2FpbnN0JykucmVwbGFjZSgne3BsYXllcn0nLCBlbnRyeS5vcHBvbmVudE5hbWUpfWBcbiAgICAgIDogJyc7XG4gICAgcmV0dXJuIGAke3RoaXMudChvdXRjb21lS2V5KX0ke29wcG9uZW50fWA7XG4gIH1cblxuICBhc3luYyByZXF1ZXN0T25saW5lUmVtYXRjaCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5nYW1lKCkubW9kZSAhPT0gJ29ubGluZScpIHJldHVybjtcbiAgICBpZiAoIXRoaXMuY2FuQ29udHJvbEN1cnJlbnRHYW1lKCkpIHJldHVybjtcbiAgICBpZiAodGhpcy5yZW1hdGNoU3RhdGUoKSA9PT0gJ3JlcXVlc3RlZCcgfHwgdGhpcy5yZW1hdGNoTG9hZGluZygpKSByZXR1cm47XG4gICAgY29uc3QgYWNjZXB0aW5nID0gdGhpcy5yZW1hdGNoU3RhdGUoKSA9PT0gJ2luY29taW5nJztcbiAgICB0aGlzLnJlbWF0Y2hMb2FkaW5nLnNldCh0cnVlKTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgbmV4dCA9IGF3YWl0IHRoaXMub25saW5lLnJlcXVlc3RSZW1hdGNoKHRoaXMuZ2FtZSgpLmlkKTtcbiAgICAgIGlmIChuZXh0Py5zdGF0dXMgPT09ICdpbl9wcm9ncmVzcycpIHtcbiAgICAgICAgdGhpcy5hcHBseU9ubGluZUdhbWVTbmFwc2hvdCh0aGlzLmdhbWUoKSwgbmV4dCk7XG4gICAgICB9XG4gICAgICB0aGlzLnRvYXN0LnNob3coe1xuICAgICAgICBtZXNzYWdlOiB0aGlzLnQoYWNjZXB0aW5nID8gJ2NoZXNzaW1hbHNSZW1hdGNoQWNjZXB0ZWQnIDogJ2NoZXNzaW1hbHNSZW1hdGNoUmVxdWVzdGVkVG9hc3QnKSxcbiAgICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgICAgZHVyYXRpb246IDI0MDAsXG4gICAgICAgIHBvc2l0aW9uOiAndG9wJyxcbiAgICAgIH0pO1xuICAgICAgdGhpcy5hdWRpby5mbGlwKCk7XG4gICAgfSBjYXRjaCB7XG4gICAgICB0aGlzLm9ubGluZUVycm9yLnNldCh0aGlzLnQoJ2NoZXNzaW1hbHNPbmxpbmVFcnJvcicpKTtcbiAgICAgIHRoaXMuYXVkaW8ubWlzcygpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLnJlbWF0Y2hMb2FkaW5nLnNldChmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBxdWV1ZUhpc3RvcnlXYXRjaCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5oaXN0b3J5V2F0Y2hUaW1lcikgY2xlYXJUaW1lb3V0KHRoaXMuaGlzdG9yeVdhdGNoVGltZXIpO1xuICAgIHRoaXMuaGlzdG9yeVdhdGNoVGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHRoaXMud2F0Y2hPbmxpbmVIaXN0b3J5KCksIDIyMCk7XG4gIH1cblxuICBwcml2YXRlIHdhdGNoT25saW5lSGlzdG9yeSgpOiB2b2lkIHtcbiAgICBjb25zdCB1aWQgPSB0aGlzLm9ubGluZS5jdXJyZW50VWlkO1xuICAgIGlmICghdWlkKSByZXR1cm47XG4gICAgaWYgKHRoaXMuaGlzdG9yeVVpZCA9PT0gdWlkICYmIHRoaXMuaGlzdG9yeVN1YnNjcmlwdGlvbikgcmV0dXJuO1xuICAgIHRoaXMuaGlzdG9yeVVpZCA9IHVpZDtcbiAgICB0aGlzLmhpc3RvcnlTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5oaXN0b3J5U3Vic2NyaXB0aW9uID0gdGhpcy5vbmxpbmUud2F0Y2hIaXN0b3J5KDI0KS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKGhpc3RvcnkpID0+IHRoaXMub25saW5lSGlzdG9yeS5zZXQoaGlzdG9yeSksXG4gICAgICBlcnJvcjogKCkgPT4gdGhpcy5vbmxpbmVIaXN0b3J5LnNldChbXSksXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHdhdGNoQ2hhbGxlbmdlU3RhdHMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY2hhbGxlbmdlU3RhdHNTdWJzY3JpcHRpb24pIHJldHVybjtcbiAgICB0aGlzLmNoYWxsZW5nZVN0YXRzU3Vic2NyaXB0aW9uID0gdGhpcy5jaGFsbGVuZ2VQcm9ncmVzcy53YXRjaFN0YXRzKCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChzdGF0cykgPT4gdGhpcy5jaGFsbGVuZ2VTdGF0cy5zZXQoc3RhdHMgPz8gdGhpcy5jaGFsbGVuZ2VQcm9ncmVzcy5lbXB0eVN0YXRzKCkpLFxuICAgICAgZXJyb3I6ICgpID0+IHRoaXMuY2hhbGxlbmdlU3RhdHMuc2V0KHRoaXMuY2hhbGxlbmdlUHJvZ3Jlc3MuZW1wdHlTdGF0cygpKSxcbiAgICB9KTtcbiAgICB0aGlzLmNoYWxsZW5nZVJ1bnNTdWJzY3JpcHRpb24gPSB0aGlzLmNoYWxsZW5nZVByb2dyZXNzLndhdGNoUmVjZW50UnVucyg0KS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJ1bnMpID0+IHRoaXMuY2hhbGxlbmdlSGlzdG9yeS5zZXQocnVucyksXG4gICAgICBlcnJvcjogKCkgPT4gdGhpcy5jaGFsbGVuZ2VIaXN0b3J5LnNldChbXSksXG4gICAgfSk7XG4gICAgdGhpcy5jaGFsbGVuZ2VBY3RpdmVSdW5TdWJzY3JpcHRpb24gPSB0aGlzLmNoYWxsZW5nZVByb2dyZXNzLndhdGNoQWN0aXZlUnVuKCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChydW4pID0+IHRoaXMuYWN0aXZlU3RvcmVkQ2hhbGxlbmdlUnVuLnNldChydW4pLFxuICAgICAgZXJyb3I6ICgpID0+IHRoaXMuYWN0aXZlU3RvcmVkQ2hhbGxlbmdlUnVuLnNldCh1bmRlZmluZWQpLFxuICAgIH0pO1xuICB9XG5cbiAgdW5sb2NrZWRMYWJlbChjb2xvcjogQ2hlc3NpbWFsc1BsYXllckNvbG9yKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5nYW1lKCkucGxheWVyc1tjb2xvcl0ucG93ZXJVbmxvY2tlZCA/IHRoaXMudCgnY2hlc3NpbWFsc1VubG9ja2VkJykgOiB0aGlzLnQoJ2NoZXNzaW1hbHNMb2NrZWQnKTtcbiAgfVxuXG4gIGxvY2FsTW9kZUxhYmVsKG1vZGU6IENoZXNzaW1hbHNMb2NhbE1vZGUpOiBzdHJpbmcge1xuICAgIHJldHVybiBtb2RlID09PSAnYm90JyA/IHRoaXMudCgnY2hlc3NpbWFsc0JvdE1vZGUnKSA6IHRoaXMudCgnY2hlc3NpbWFsc09uZURldmljZScpO1xuICB9XG5cbiAgbG9jYWxNb2RlRGVzY3JpcHRpb24obW9kZTogQ2hlc3NpbWFsc0xvY2FsTW9kZSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIG1vZGUgPT09ICdib3QnID8gdGhpcy50KCdjaGVzc2ltYWxzQm90TW9kZUJvZHknKSA6IHRoaXMudCgnY2hlc3NpbWFsc09uZURldmljZUJvZHknKTtcbiAgfVxuXG4gIHNlbGVjdEJvdERpZmZpY3VsdHkoZGlmZmljdWx0eTogQ2hlc3NpbWFsc0JvdERpZmZpY3VsdHkpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkQm90RGlmZmljdWx0eS5zZXQoZGlmZmljdWx0eSk7XG4gICAgY29uc3QgcHJvZmlsZSA9IHRoaXMuYm90UHJvZmlsZXMuZmluZCgoaXRlbSkgPT4gaXRlbS5kaWZmaWN1bHR5ID09PSBkaWZmaWN1bHR5KTtcbiAgICBpZiAocHJvZmlsZSkgdGhpcy5zZWxlY3RlZEJvdFByb2ZpbGVJZC5zZXQocHJvZmlsZS5pZCk7XG4gIH1cblxuICBib3REaWZmaWN1bHR5TGFiZWwoZGlmZmljdWx0eTogQ2hlc3NpbWFsc0JvdERpZmZpY3VsdHkpOiBzdHJpbmcge1xuICAgIGlmIChkaWZmaWN1bHR5ID09PSAnZWFzeScpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNCb3RFYXN5Jyk7XG4gICAgaWYgKGRpZmZpY3VsdHkgPT09ICdoYXJkJykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0JvdEhhcmQnKTtcbiAgICByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQm90Tm9ybWFsJyk7XG4gIH1cblxuICBib3RQcm9maWxlTGFiZWwocHJvZmlsZTogQ2hlc3NpbWFsc0JvdFByb2ZpbGUpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnQocHJvZmlsZS5sYWJlbEtleSk7XG4gIH1cblxuICBib3RQcm9maWxlRGVzY3JpcHRpb24ocHJvZmlsZTogQ2hlc3NpbWFsc0JvdFByb2ZpbGUpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnQocHJvZmlsZS5kZXNjcmlwdGlvbktleSk7XG4gIH1cblxuICBib3RQcm9maWxlVGVuZGVuY3kocHJvZmlsZTogQ2hlc3NpbWFsc0JvdFByb2ZpbGUpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnQoYGNoZXNzaW1hbHNCb3Qke3RoaXMuY2FwaXRhbGl6ZShwcm9maWxlLmlkKX1UZW5kZW5jeWApO1xuICB9XG5cbiAgYm90UHJvZmlsZUF2YXRhcihwcm9maWxlSWQ6IENoZXNzaW1hbHNCb3RQcm9maWxlSWQpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmJvdFByb2ZpbGVzLmZpbmQoKHByb2ZpbGUpID0+IHByb2ZpbGUuaWQgPT09IHByb2ZpbGVJZCk/LmF2YXRhciA/PyAn4pmfJztcbiAgfVxuXG4gIGNoYWxsZW5nZU9wZW5pbmdCb3QoKTogQ2hlc3NpbWFsc0NoYWxsZW5nZUJvdCB7XG4gICAgcmV0dXJuIHRoaXMuY2hhbGxlbmdlTGFkZGVyWzBdO1xuICB9XG5cbiAgY2hhbGxlbmdlQm90TmFtZShib3Q6IENoZXNzaW1hbHNDaGFsbGVuZ2VCb3QpOiBzdHJpbmcge1xuICAgIGNvbnN0IHByb2ZpbGUgPSB0aGlzLmJvdFByb2ZpbGVzLmZpbmQoKGl0ZW0pID0+IGl0ZW0uaWQgPT09IGJvdC5wcm9maWxlSWQpO1xuICAgIHJldHVybiBwcm9maWxlID8gdGhpcy5ib3RQcm9maWxlTGFiZWwocHJvZmlsZSkgOiB0aGlzLnQoJ2NoZXNzaW1hbHNCb3ROYW1lJyk7XG4gIH1cblxuICBjaGFsbGVuZ2VSdW5TdGF0dXNMYWJlbChydW46IENoZXNzaW1hbHNDaGFsbGVuZ2VSdW4pOiBzdHJpbmcge1xuICAgIGlmIChydW4uc3RhdHVzID09PSAnY29tcGxldGVkJykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0NoYWxsZW5nZVN0YXR1c0NvbXBsZXRlZCcpO1xuICAgIGlmIChydW4uc3RhdHVzID09PSAnZmFpbGVkJykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0NoYWxsZW5nZVN0YXR1c0ZhaWxlZCcpO1xuICAgIGlmIChydW4uc3RhdHVzID09PSAnYWJhbmRvbmVkJykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0NoYWxsZW5nZVN0YXR1c0FiYW5kb25lZCcpO1xuICAgIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VTdGF0dXNBY3RpdmUnKTtcbiAgfVxuXG4gIGNoYWxsZW5nZVJ1bkxpbmUocnVuOiBDaGVzc2ltYWxzQ2hhbGxlbmdlUnVuKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy50KCdjaGVzc2ltYWxzQ2hhbGxlbmdlUnVuTGluZScpXG4gICAgICAucmVwbGFjZSgne3JvdW5kfScsIFN0cmluZyhydW4uY3VycmVudFJvdW5kKSlcbiAgICAgIC5yZXBsYWNlKCd7d2luc30nLCBTdHJpbmcocnVuLndpbnMpKTtcbiAgfVxuXG4gIGlzQ2hhbGxlbmdlQWN0aXZlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNoYWxsZW5nZVBoYXNlKCkgIT09ICdpZGxlJyAmJiAhIXRoaXMuY2hhbGxlbmdlUnVuKCk7XG4gIH1cblxuICBjaGFsbGVuZ2VSb3VuZExhYmVsKCk6IHN0cmluZyB7XG4gICAgY29uc3QgcnVuID0gdGhpcy5jaGFsbGVuZ2VSdW4oKTtcbiAgICBpZiAoIXJ1bikgcmV0dXJuICctJztcbiAgICByZXR1cm4gYCR7cnVuLmN1cnJlbnRSb3VuZH0vJHt0aGlzLmNoYWxsZW5nZUxhZGRlci5sZW5ndGh9YDtcbiAgfVxuXG4gIGNoYWxsZW5nZUxpdmVzTGFiZWwoKTogc3RyaW5nIHtcbiAgICBjb25zdCBydW4gPSB0aGlzLmNoYWxsZW5nZVJ1bigpO1xuICAgIGlmICghcnVuKSByZXR1cm4gJy0nO1xuICAgIHJldHVybiAn4pmlJy5yZXBlYXQoTWF0aC5tYXgoMCwgcnVuLmxpdmVzUmVtYWluaW5nKSkgfHwgJzAnO1xuICB9XG5cbiAgY2hhbGxlbmdlT3V0Y29tZVRpdGxlKCk6IHN0cmluZyB7XG4gICAgY29uc3QgcGhhc2UgPSB0aGlzLmNoYWxsZW5nZVBoYXNlKCk7XG4gICAgaWYgKHBoYXNlID09PSAnY29tcGxldGVkJykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0NoYWxsZW5nZUNvbXBsZXRlZFRpdGxlJyk7XG4gICAgaWYgKHBoYXNlID09PSAnZmFpbGVkJykgcmV0dXJuIHRoaXMudCgnY2hlc3NpbWFsc0NoYWxsZW5nZUZhaWxlZFRpdGxlJyk7XG4gICAgcmV0dXJuIHRoaXMuY2hhbGxlbmdlTGFzdFdvbigpXG4gICAgICA/IHRoaXMudCgnY2hlc3NpbWFsc0NoYWxsZW5nZVJvdW5kV29uVGl0bGUnKVxuICAgICAgOiB0aGlzLnQoJ2NoZXNzaW1hbHNDaGFsbGVuZ2VSb3VuZExvc3RUaXRsZScpO1xuICB9XG5cbiAgY2hhbGxlbmdlT3V0Y29tZUJvZHkoKTogc3RyaW5nIHtcbiAgICBjb25zdCBydW4gPSB0aGlzLmNoYWxsZW5nZVJ1bigpO1xuICAgIGNvbnN0IHN0YXRzID0gdGhpcy5jaGFsbGVuZ2VMYXN0Um91bmRTdGF0cygpO1xuICAgIGNvbnN0IGJvdCA9IHRoaXMuY2hhbGxlbmdlTGFzdEJvdCgpID8/IHRoaXMuYWN0aXZlQ2hhbGxlbmdlQm90KCk7XG4gICAgY29uc3QgYm90TmFtZSA9IGJvdCA/IHRoaXMuY2hhbGxlbmdlQm90TmFtZShib3QpIDogdGhpcy50KCdjaGVzc2ltYWxzQm90TmFtZScpO1xuICAgIGNvbnN0IGJvZHlLZXkgPVxuICAgICAgdGhpcy5jaGFsbGVuZ2VQaGFzZSgpID09PSAnY29tcGxldGVkJ1xuICAgICAgICA/ICdjaGVzc2ltYWxzQ2hhbGxlbmdlQ29tcGxldGVkQm9keSdcbiAgICAgICAgOiB0aGlzLmNoYWxsZW5nZVBoYXNlKCkgPT09ICdmYWlsZWQnXG4gICAgICAgICAgPyAnY2hlc3NpbWFsc0NoYWxsZW5nZUZhaWxlZEJvZHknXG4gICAgICAgICAgOiB0aGlzLmNoYWxsZW5nZUxhc3RXb24oKVxuICAgICAgICAgICAgPyAnY2hlc3NpbWFsc0NoYWxsZW5nZVJvdW5kV29uQm9keSdcbiAgICAgICAgICAgIDogJ2NoZXNzaW1hbHNDaGFsbGVuZ2VSb3VuZExvc3RCb2R5JztcbiAgICByZXR1cm4gdGhpcy50KGJvZHlLZXkpXG4gICAgICAucmVwbGFjZSgne2JvdH0nLCBib3ROYW1lKVxuICAgICAgLnJlcGxhY2UoJ3tsaXZlc30nLCBTdHJpbmcocnVuPy5saXZlc1JlbWFpbmluZyA/PyAwKSlcbiAgICAgIC5yZXBsYWNlKCd7d2luc30nLCBTdHJpbmcocnVuPy53aW5zID8/IDApKVxuICAgICAgLnJlcGxhY2UoJ3twb3dlcnN9JywgU3RyaW5nKHRoaXMudG90YWxDaGFsbGVuZ2VQb3dlcnMoc3RhdHMpKSk7XG4gIH1cblxuICBjaGFsbGVuZ2VIYXNOZXdSZWNvcmQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY2hhbGxlbmdlTmV3UmVjb3JkKCk7XG4gIH1cblxuICB0b3RhbENoYWxsZW5nZVBvd2VycyhzdGF0cz86IENoZXNzaW1hbHNDaGFsbGVuZ2VSb3VuZFN0YXRzKTogbnVtYmVyIHtcbiAgICBpZiAoIXN0YXRzKSByZXR1cm4gMDtcbiAgICByZXR1cm4gc3RhdHMucG93ZXJzVXNlZC5lYWdsZSArIHN0YXRzLnBvd2Vyc1VzZWQuYnVsbCArIHN0YXRzLnBvd2Vyc1VzZWQua2FuZ2Fyb28gKyBzdGF0cy5wb3dlcnNVc2VkLmxpb247XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUNoYWxsZW5nZVJvdW5kU3RhdHMoZ2FtZTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSk6IENoZXNzaW1hbHNDaGFsbGVuZ2VSb3VuZFN0YXRzIHtcbiAgICBjb25zdCBzdGF0czogQ2hlc3NpbWFsc0NoYWxsZW5nZVJvdW5kU3RhdHMgPSB7XG4gICAgICBwb3dlcnNVc2VkOiB7IGVhZ2xlOiAwLCBidWxsOiAwLCBrYW5nYXJvbzogMCwgbGlvbjogMCB9LFxuICAgICAgcG93ZXJDYXB0dXJlczogMCxcbiAgICAgIHByb21vdGlvbnM6IGdhbWUud2lubmVyID09PSAnd2hpdGUnICYmIGdhbWUud2lubmVyUmVhc29uID09PSAncHJvbW90aW9uJyA/IDEgOiAwLFxuICAgICAgY2FwdHVyZXM6IDAsXG4gICAgICBtb3ZlczogMCxcbiAgICB9O1xuICAgIGZvciAoY29uc3QgZW50cnkgb2YgZ2FtZS5tb3ZlSGlzdG9yeSA/PyBbXSkge1xuICAgICAgY29uc3QgbW92ZSA9IGVudHJ5Lm1vdmU7XG4gICAgICBpZiAoIW1vdmUgfHwgIW1vdmUucGllY2VJZC5zdGFydHNXaXRoKCdXJykpIGNvbnRpbnVlO1xuICAgICAgc3RhdHMubW92ZXMgKz0gMTtcbiAgICAgIGlmIChtb3ZlLmNhcHR1cmVzUGllY2VJZCkgc3RhdHMuY2FwdHVyZXMgKz0gMTtcbiAgICAgIGlmICghbW92ZS5hbmltYWwpIGNvbnRpbnVlO1xuICAgICAgc3RhdHMucG93ZXJzVXNlZFttb3ZlLmFuaW1hbF0gKz0gMTtcbiAgICAgIGlmIChtb3ZlLmNhcHR1cmVzUGllY2VJZCkgc3RhdHMucG93ZXJDYXB0dXJlcyArPSAxO1xuICAgIH1cbiAgICByZXR1cm4gc3RhdHM7XG4gIH1cblxuICBhbmltYWxMYWJlbCh0eXBlOiBDaGVzc2ltYWxzQW5pbWFsVHlwZSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudChgY2hlc3NpbWFsc0FuaW1hbCR7dGhpcy5jYXBpdGFsaXplKHR5cGUpfWApO1xuICB9XG5cbiAgY2FuUmV2aWV3UHJldmlvdXMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICh0aGlzLmFjdGl2ZVJldmlld0luZGV4KCkgPz8gMCkgPiAwO1xuICB9XG5cbiAgY2FuUmV2aWV3TmV4dCgpOiBib29sZWFuIHtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuYWN0aXZlUmV2aWV3SW5kZXgoKTtcbiAgICByZXR1cm4gaW5kZXggIT09IHVuZGVmaW5lZCAmJiBpbmRleCA8IHRoaXMucmVwbGF5RW50cmllcygpLmxlbmd0aCAtIDE7XG4gIH1cblxuICByZXZpZXdQcmV2aW91c01vdmUoKTogdm9pZCB7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmFjdGl2ZVJldmlld0luZGV4KCk7XG4gICAgaWYgKGluZGV4ID09PSB1bmRlZmluZWQgfHwgaW5kZXggPD0gMCkgcmV0dXJuO1xuICAgIHRoaXMucmV2aWV3SW5kZXguc2V0KGluZGV4IC0gMSk7XG4gICAgdGhpcy5zZWxlY3RlZFBpZWNlSWQuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5zZWxlY3RlZEFuaW1hbC5zZXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLmF1ZGlvLmZsaXAoKTtcbiAgfVxuXG4gIHJldmlld05leHRNb3ZlKCk6IHZvaWQge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5hY3RpdmVSZXZpZXdJbmRleCgpO1xuICAgIGlmIChpbmRleCA9PT0gdW5kZWZpbmVkIHx8IGluZGV4ID49IHRoaXMucmVwbGF5RW50cmllcygpLmxlbmd0aCAtIDEpIHJldHVybjtcbiAgICB0aGlzLnJldmlld0luZGV4LnNldChpbmRleCArIDEpO1xuICAgIHRoaXMuc2VsZWN0ZWRQaWVjZUlkLnNldCh1bmRlZmluZWQpO1xuICAgIHRoaXMuc2VsZWN0ZWRBbmltYWwuc2V0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5hdWRpby5mbGlwKCk7XG4gIH1cblxuICByZXBsYXlQb3NpdGlvbkxhYmVsKCk6IHN0cmluZyB7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmFjdGl2ZVJldmlld0luZGV4KCk7XG4gICAgaWYgKGluZGV4ID09PSB1bmRlZmluZWQpIHJldHVybiAnJztcbiAgICBjb25zdCBlbnRyeSA9IHRoaXMucmVwbGF5RW50cmllcygpW2luZGV4XTtcbiAgICBpZiAoIWVudHJ5IHx8IGVudHJ5Lm1vdmVOdW1iZXIgPT09IDApIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNSZXBsYXlTdGFydCcpO1xuICAgIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNSZXBsYXlNb3ZlJylcbiAgICAgIC5yZXBsYWNlKCd7bW92ZX0nLCBgJHtlbnRyeS5tb3ZlTnVtYmVyfWApXG4gICAgICAucmVwbGFjZSgne3RvdGFsfScsIGAke3RoaXMuZ2FtZSgpLm1vdmVDb3VudH1gKTtcbiAgfVxuXG4gIHNob3VsZFNob3dGaW5pc2hlZE92ZXJsYXkoKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuZ2FtZSgpLnN0YXR1cyAhPT0gJ2ZpbmlzaGVkJykgcmV0dXJuIGZhbHNlO1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5hY3RpdmVSZXZpZXdJbmRleCgpO1xuICAgIHJldHVybiBpbmRleCA9PT0gdW5kZWZpbmVkIHx8IGluZGV4ID09PSB0aGlzLnJlcGxheUVudHJpZXMoKS5sZW5ndGggLSAxO1xuICB9XG5cbiAgcHJpdmF0ZSBkaXNwbGF5Um93SW5kZXgocm93OiBudW1iZXIpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmJvYXJkT3JpZW50YXRpb25Db2xvcigpID09PSAnYmxhY2snID8gdGhpcy5yZXZpZXdHYW1lKCkuYm9hcmRTaXplIC0gMSAtIHJvdyA6IHJvdztcbiAgfVxuXG4gIHByaXZhdGUgZGlzcGxheUNvbEluZGV4KGNvbDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5ib2FyZE9yaWVudGF0aW9uQ29sb3IoKSA9PT0gJ2JsYWNrJyA/IHRoaXMucmV2aWV3R2FtZSgpLmJvYXJkU2l6ZSAtIDEgLSBjb2wgOiBjb2w7XG4gIH1cblxuICBwcml2YXRlIHdhdGNoT25saW5lR2FtZShnYW1lSWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMub25saW5lU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMub25saW5lU3Vic2NyaXB0aW9uID0gdGhpcy5vbmxpbmUud2F0Y2hHYW1lKGdhbWVJZCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChzdGF0ZSkgPT4ge1xuICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgIGlmICghc3RhdGUpIHtcbiAgICAgICAgICAgIHRoaXMub25saW5lQ29ubmVjdGlvblN0YXRlLnNldCgnZXJyb3InKTtcbiAgICAgICAgICAgIHRoaXMub25saW5lRXJyb3Iuc2V0KHRoaXMudCgnY2hlc3NpbWFsc09ubGluZU5vdEZvdW5kJykpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLm9ubGluZUNvbm5lY3Rpb25TdGF0ZS5zZXQoJ2xpdmUnKTtcbiAgICAgICAgICB0aGlzLm9ubGluZUVycm9yLnNldCgnJyk7XG4gICAgICAgICAgY29uc3QgcHJldmlvdXMgPSB0aGlzLmdhbWUoKTtcbiAgICAgICAgICB0aGlzLmFwcGx5T25saW5lR2FtZVNuYXBzaG90KHByZXZpb3VzLCBzdGF0ZSk7XG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgdGhpcy5vbmxpbmVDb25uZWN0aW9uU3RhdGUuc2V0KCdlcnJvcicpO1xuICAgICAgICAgIHRoaXMub25saW5lRXJyb3Iuc2V0KHRoaXMudCgnY2hlc3NpbWFsc09ubGluZURpc2Nvbm5lY3RlZEJvZHknKSk7XG4gICAgICAgICAgdGhpcy5yZXN1bWVTcGxhc2hWaXNpYmxlLnNldChmYWxzZSk7XG4gICAgICAgICAgdGhpcy5zY3JlZW4uc2V0KCdob21lJyk7XG4gICAgICAgICAgdGhpcy5hdWRpby5taXNzKCk7XG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgb25saW5lT3BlbkVycm9yTWVzc2FnZShlcnJvcjogdW5rbm93bik6IHN0cmluZyB7XG4gICAgY29uc3QgbWVzc2FnZSA9IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogJyc7XG4gICAgaWYgKG1lc3NhZ2UuaW5jbHVkZXMoJ0NIRVNTSU1BTFNfR0FNRV9FWFBJUkVEJykpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNPbmxpbmVFeHBpcmVkQm9keScpO1xuICAgIGlmIChtZXNzYWdlLmluY2x1ZGVzKCdDSEVTU0lNQUxTX0dBTUVfTk9UX0ZPVU5EJykpIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNPbmxpbmVOb3RGb3VuZCcpO1xuICAgIHJldHVybiB0aGlzLnQoJ2NoZXNzaW1hbHNPbmxpbmVFcnJvcicpO1xuICB9XG5cbiAgcHJpdmF0ZSBhcHBseU9ubGluZUdhbWVTbmFwc2hvdChwcmV2aW91czogQ2hlc3NpbWFsc0dhbWVTdGF0ZSwgc3RhdGU6IENoZXNzaW1hbHNHYW1lU3RhdGUpOiB2b2lkIHtcbiAgICB0aGlzLmdhbWUuc2V0KHN0YXRlKTtcbiAgICBpZiAoc3RhdGUuc3RhdHVzID09PSAnZmluaXNoZWQnKSB7XG4gICAgICBpZiAocHJldmlvdXMuaWQgIT09IHN0YXRlLmlkIHx8IHByZXZpb3VzLnN0YXR1cyAhPT0gJ2ZpbmlzaGVkJyB8fCB0aGlzLnJldmlld0luZGV4KCkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLnNob3dMYXRlc3RSZXZpZXdTbmFwc2hvdCgpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNsZWFyUmV2aWV3KCk7XG4gICAgfVxuICAgIGlmIChwcmV2aW91cy5zdGF0dXMgPT09ICdmaW5pc2hlZCcgJiYgc3RhdGUuc3RhdHVzID09PSAnaW5fcHJvZ3Jlc3MnKSB7XG4gICAgICB0aGlzLmxhc3RPdXRjb21lU291bmRLZXkgPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLnNlbGVjdGVkUGllY2VJZC5zZXQodW5kZWZpbmVkKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRBbmltYWwuc2V0KHVuZGVmaW5lZCk7XG4gICAgICB0aGlzLm1vdmluZ1BpZWNlLnNldCh1bmRlZmluZWQpO1xuICAgICAgdGhpcy5yZW1hdGNoTG9hZGluZy5zZXQoZmFsc2UpO1xuICAgICAgdGhpcy5zdGFydENoZXNzaW1hbHNHYW1lTXVzaWNTb29uKCk7XG4gICAgICB0aGlzLmZvY3VzQm9hcmRTb29uKCk7XG4gICAgICB2b2lkIHRoaXMuaGFwdGljcy5zdWNjZXNzKCk7XG4gICAgfVxuICAgIHRoaXMuc2VsZWN0ZWRCb2FyZFNpemUuc2V0KHN0YXRlLmJvYXJkU2l6ZSk7XG4gICAgdGhpcy5yZXN1bWVTcGxhc2hWaXNpYmxlLnNldChmYWxzZSk7XG4gICAgY29uc3QgcHJldmlvdXNQZW5kaW5nS2V5ID0gcHJldmlvdXMuaWQgPT09IHN0YXRlLmlkID8gdGhpcy5vbmxpbmUucGFydGljaXBhbnRLZXkocHJldmlvdXMub25saW5lPy5wZW5kaW5nR3Vlc3QpIDogJyc7XG4gICAgY29uc3QgbmV4dFBlbmRpbmdLZXkgPSB0aGlzLm9ubGluZS5wYXJ0aWNpcGFudEtleShzdGF0ZS5vbmxpbmU/LnBlbmRpbmdHdWVzdCk7XG4gICAgaWYgKFxuICAgICAgc3RhdGUuc3RhdHVzID09PSAnd2FpdGluZycgJiZcbiAgICAgIHRoaXMub25saW5lLmlzSG9zdFdhaXRpbmcoc3RhdGUsIHRoaXMub25saW5lLmN1cnJlbnRVaWQpICYmXG4gICAgICAhIW5leHRQZW5kaW5nS2V5ICYmXG4gICAgICBuZXh0UGVuZGluZ0tleSAhPT0gcHJldmlvdXNQZW5kaW5nS2V5XG4gICAgKSB7XG4gICAgICB0aGlzLnRvYXN0LnNob3coe1xuICAgICAgICBtZXNzYWdlOiB0aGlzLnQoJ2NoZXNzaW1hbHNKb2luUmVxdWVzdEJvZHknKS5yZXBsYWNlKCd7cGxheWVyfScsIHRoaXMucGVuZGluZ0d1ZXN0TmFtZSgpKSxcbiAgICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgICAgZHVyYXRpb246IDMyMDAsXG4gICAgICAgIHBvc2l0aW9uOiAndG9wJyxcbiAgICAgIH0pO1xuICAgICAgdGhpcy5hdWRpby5jaGVzc2ltYWxzSm9pblJlcXVlc3QoKTtcbiAgICAgIHZvaWQgdGhpcy5oYXB0aWNzLnN1Y2Nlc3MoKTtcbiAgICB9XG4gICAgaWYgKFxuICAgICAgcHJldmlvdXMuY3VycmVudFR1cm4gIT09IHN0YXRlLmN1cnJlbnRUdXJuICYmXG4gICAgICBzdGF0ZS5zdGF0dXMgPT09ICdpbl9wcm9ncmVzcycgJiZcbiAgICAgICF0aGlzLnNob3VsZEtlZXBCb2FyZE9yaWVudGF0aW9uU3RhdGljKHN0YXRlKVxuICAgICkge1xuICAgICAgdGhpcy50cmlnZ2VyQm9hcmRPcmllbnRhdGlvbigpO1xuICAgIH1cbiAgICBpZiAoc3RhdGUuc3RhdHVzID09PSAnZmluaXNoZWQnICYmIHByZXZpb3VzLnN0YXR1cyAhPT0gJ2ZpbmlzaGVkJykge1xuICAgICAgdGhpcy5wbGF5Q2hlc3NpbWFsc091dGNvbWVTb3VuZChzdGF0ZSk7XG4gICAgICB2b2lkIHRoaXMuaGFwdGljcy5zdWNjZXNzKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBtaW5pR2FtZXNCYXNlUm91dGUoKTogc3RyaW5nIHtcbiAgICBjb25zdCByb3V0ZSA9ICh0aGlzLm1pbmlHYW1lc1JvdXRlIHx8ICcvbWluaS1nYW1lcycpLnRyaW0oKTtcbiAgICByZXR1cm4gYC8ke3JvdXRlLnJlcGxhY2UoL15cXC8rfFxcLyskL2csICcnKSB8fCAnbWluaS1nYW1lcyd9YDtcbiAgfVxuXG4gIHByaXZhdGUgY2hlc3NpbWFsc0dhbWVSb3V0ZShnYW1lSWQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMubWluaUdhbWVzQmFzZVJvdXRlKCl9L2NoZXNzaW1hbHMvJHtlbmNvZGVVUklDb21wb25lbnQodGhpcy5vbmxpbmUubm9ybWFsaXplR2FtZUlkKGdhbWVJZCkpfWA7XG4gIH1cblxuICBwcml2YXRlIGNhcGl0YWxpemUodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHZhbHVlLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgdmFsdWUuc2xpY2UoMSk7XG4gIH1cbn1cbiJdfQ==
|