valtech-components 4.0.425 → 4.0.427
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/chessimals-engine.mjs +22 -33
- package/esm2022/lib/components/organisms/mini-games/christianity-game.component.mjs +505 -0
- package/esm2022/lib/components/organisms/mini-games/mini-games.i18n.mjs +51 -1
- package/esm2022/lib/components/organisms/mini-games/types.mjs +1 -1
- package/esm2022/lib/version.mjs +2 -2
- package/esm2022/mini-games/public-api.mjs +34 -2
- package/esm2022/public-api.mjs +2 -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 +574 -34
- package/fesm2022/valtech-components.mjs.map +1 -1
- package/lib/components/organisms/mini-games/chessimals-game.component.d.ts +1 -1
- package/lib/components/organisms/mini-games/christianity-game.component.d.ts +35 -0
- package/lib/components/organisms/mini-games/types.d.ts +45 -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 +1 -0
|
@@ -215,8 +215,17 @@ export function chooseChessimalsBotMove(state, difficulty = 'normal', profileId
|
|
|
215
215
|
if (moves.length === 0)
|
|
216
216
|
return undefined;
|
|
217
217
|
const style = BOT_STYLES[profileId] ?? BOT_STYLES[DEFAULT_BOT_PROFILE_BY_DIFFICULTY[difficulty]];
|
|
218
|
-
const
|
|
219
|
-
.map((move) => ({ move, score:
|
|
218
|
+
const quickScored = moves
|
|
219
|
+
.map((move) => ({ move, score: scoreBotMove(state, move, difficulty, style) }))
|
|
220
|
+
.sort((a, b) => b.score - a.score);
|
|
221
|
+
const lookaheadLimit = difficulty === 'hard' ? 32 : difficulty === 'normal' ? 24 : 0;
|
|
222
|
+
const scored = quickScored
|
|
223
|
+
.map((item, index) => ({
|
|
224
|
+
move: item.move,
|
|
225
|
+
score: index < lookaheadLimit
|
|
226
|
+
? scoreBotMoveWithLookahead(state, item.move, difficulty, style)
|
|
227
|
+
: item.score,
|
|
228
|
+
}))
|
|
220
229
|
.sort((a, b) => b.score - a.score);
|
|
221
230
|
if (difficulty === 'easy') {
|
|
222
231
|
const playable = scored.filter((item) => item.score > -3000);
|
|
@@ -475,7 +484,7 @@ function getKangarooMoves(state, piece) {
|
|
|
475
484
|
}
|
|
476
485
|
return moves;
|
|
477
486
|
}
|
|
478
|
-
function scoreBotMove(state, move, difficulty, style) {
|
|
487
|
+
function scoreBotMove(state, move, difficulty, style, includeTacticalPressure = true) {
|
|
479
488
|
const color = state.currentTurn;
|
|
480
489
|
const targetPiece = move.capturesPieceId
|
|
481
490
|
? activePieces(state).find((piece) => piece.id === move.capturesPieceId)
|
|
@@ -501,9 +510,14 @@ function scoreBotMove(state, move, difficulty, style) {
|
|
|
501
510
|
score += 14 * style.power;
|
|
502
511
|
if (wouldUnlockPower(state, color, move.to))
|
|
503
512
|
score += 90 * style.unlock;
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
513
|
+
if (includeTacticalPressure && state.boardSize <= 6) {
|
|
514
|
+
score += countPowerReachAfterMove(state, move, color) * (difficulty === 'hard' ? 8 : 4) * style.mobility;
|
|
515
|
+
score += countProtectedThreatsAfterMove(state, move, color) * (difficulty === 'hard' ? 36 : 18) * style.trap;
|
|
516
|
+
score += scoreEndgamePressure(state, move, color) * style.endgame;
|
|
517
|
+
}
|
|
518
|
+
else {
|
|
519
|
+
score += scoreEndgamePressure(state, move, color) * style.endgame;
|
|
520
|
+
}
|
|
507
521
|
if (difficulty === 'hard' && isSquareVulnerableAfterMove(state, move)) {
|
|
508
522
|
score -= (targetPiece ? 80 : 140) * style.safety;
|
|
509
523
|
}
|
|
@@ -534,15 +548,12 @@ function scoreBotMoveWithLookahead(state, move, difficulty, style) {
|
|
|
534
548
|
score += centerControl * (difficulty === 'hard' ? 18 : 10) * style.center;
|
|
535
549
|
}
|
|
536
550
|
const opponentBestReply = opponentMoves
|
|
537
|
-
.map((opponentMove) => scoreBotMove(afterMove, opponentMove, difficulty, style))
|
|
551
|
+
.map((opponentMove) => scoreBotMove(afterMove, opponentMove, difficulty, style, false))
|
|
538
552
|
.sort((a, b) => b - a)[0];
|
|
539
553
|
if (opponentBestReply) {
|
|
540
554
|
const replyWeight = difficulty === 'easy' ? 0.12 : difficulty === 'normal' ? 0.32 : 0.48;
|
|
541
555
|
score -= opponentBestReply * replyWeight * style.reply;
|
|
542
556
|
}
|
|
543
|
-
if (difficulty === 'hard') {
|
|
544
|
-
score += scoreBestCounterplay(afterMove, state.currentTurn, style) * 0.28;
|
|
545
|
-
}
|
|
546
557
|
}
|
|
547
558
|
catch {
|
|
548
559
|
score -= 1000;
|
|
@@ -577,28 +588,6 @@ function scoreEndgamePressure(state, move, color) {
|
|
|
577
588
|
const distanceToPromotion = color === 'white' ? move.to.row : state.boardSize - 1 - move.to.row;
|
|
578
589
|
return Math.max(0, state.boardSize - distanceToPromotion) * 14 * urgency;
|
|
579
590
|
}
|
|
580
|
-
function scoreBestCounterplay(afterMove, color, style) {
|
|
581
|
-
const opponentMoves = getChessimalsAllLegalMoves(afterMove);
|
|
582
|
-
if (opponentMoves.length === 0)
|
|
583
|
-
return 900;
|
|
584
|
-
const replies = opponentMoves.slice(0, 16).map((opponentMove) => {
|
|
585
|
-
try {
|
|
586
|
-
const afterReply = applyChessimalsMove(afterMove, opponentMove);
|
|
587
|
-
if (afterReply.status === 'finished')
|
|
588
|
-
return -6000;
|
|
589
|
-
const counterState = { ...afterReply, currentTurn: color };
|
|
590
|
-
const counterMoves = getChessimalsAllLegalMoves(counterState, color);
|
|
591
|
-
const bestCounter = counterMoves
|
|
592
|
-
.map((counterMove) => scoreBotMove(counterState, counterMove, 'hard', style))
|
|
593
|
-
.sort((a, b) => b - a)[0] ?? 0;
|
|
594
|
-
return bestCounter;
|
|
595
|
-
}
|
|
596
|
-
catch {
|
|
597
|
-
return -1000;
|
|
598
|
-
}
|
|
599
|
-
});
|
|
600
|
-
return Math.min(...replies);
|
|
601
|
-
}
|
|
602
591
|
function pickNoisyBotMove(scored, spread) {
|
|
603
592
|
if (scored.length === 0)
|
|
604
593
|
return undefined;
|
|
@@ -721,4 +710,4 @@ function otherColor(color) {
|
|
|
721
710
|
function createLocalId() {
|
|
722
711
|
return `local-${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 8)}`;
|
|
723
712
|
}
|
|
724
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlc3NpbWFscy1lbmdpbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL21pbmktZ2FtZXMvY2hlc3NpbWFscy1lbmdpbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBaUJBLE1BQU0sT0FBTyxHQUEyQixDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBaUI5RSxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBMkI7SUFDN0Q7UUFDRSxFQUFFLEVBQUUsVUFBVTtRQUNkLFVBQVUsRUFBRSxNQUFNO1FBQ2xCLE1BQU0sRUFBRSxJQUFJO1FBQ1osUUFBUSxFQUFFLHVCQUF1QjtRQUNqQyxjQUFjLEVBQUUsMkJBQTJCO0tBQzVDO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsV0FBVztRQUNmLFVBQVUsRUFBRSxNQUFNO1FBQ2xCLE1BQU0sRUFBRSxHQUFHO1FBQ1gsUUFBUSxFQUFFLHdCQUF3QjtRQUNsQyxjQUFjLEVBQUUsNEJBQTRCO0tBQzdDO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsUUFBUTtRQUNaLFVBQVUsRUFBRSxNQUFNO1FBQ2xCLE1BQU0sRUFBRSxJQUFJO1FBQ1osUUFBUSxFQUFFLHFCQUFxQjtRQUMvQixjQUFjLEVBQUUseUJBQXlCO0tBQzFDO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsUUFBUTtRQUNaLFVBQVUsRUFBRSxRQUFRO1FBQ3BCLE1BQU0sRUFBRSxJQUFJO1FBQ1osUUFBUSxFQUFFLHFCQUFxQjtRQUMvQixjQUFjLEVBQUUseUJBQXlCO0tBQzFDO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsVUFBVTtRQUNkLFVBQVUsRUFBRSxRQUFRO1FBQ3BCLE1BQU0sRUFBRSxLQUFLO1FBQ2IsUUFBUSxFQUFFLHVCQUF1QjtRQUNqQyxjQUFjLEVBQUUsMkJBQTJCO0tBQzVDO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsUUFBUTtRQUNa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RSxHQUFHLEVBQUU7SUFDekwsTUFBTSxFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUU7SUFDckwsTUFBTSxFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUU7SUFDcEwsUUFBUSxFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUU7SUFDckwsTUFBTSxFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUU7SUFDckwsVUFBVSxFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUU7SUFDekwsUUFBUSxFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUU7SUFDckwsUUFBUSxFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUU7SUFDdkwsUUFBUSxFQUFFLEVBQUUsV0FBVyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUU7SUFDMUwsTUFBTSxFQUFFLEVBQUUsV0FBVyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUU7SUFDbkwsUUFBUSxFQUFFLEVBQUUsV0FBVyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUU7SUFDekwsU0FBUyxFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUU7SUFDM0wsS0FBSyxFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUU7SUFDeEwsU0FBUyxFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUU7SUFDekwsT0FBTyxFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJ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Q0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ3ZDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLElBQUksQ0FBQyxDQUFDO0lBQ3JDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUU7UUFDeEMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssR0FBRyxRQUFRLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDM0QsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsUUFBUSxHQUFHLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDdkUsT0FBTyxFQUFFLEdBQUcsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDO0lBQzdCLENBQUMsQ0FBQyxDQUFDO0lBQ0gsTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzdFLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxXQUFXLENBQUM7SUFDekMsS0FBSyxNQUFNLElBQUksSUFBSSxRQUFRLEVBQUUsQ0FBQztRQUM1QixNQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUN0QixJQUFJLE1BQU0sSUFBSSxDQUFDO1lBQUUsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ3BDLENBQUM7SUFDRCxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUM7QUFDdkIsQ0FBQztBQUVELFNBQVMsd0JBQXdCLENBQy9CLEtBQTBCLEVBQzFCLEtBQTRCO0lBRTVCLE9BQU8sMEJBQTBCLENBQUMsS0FBSyxFQUFF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QVMsYUFBYSxDQUFDLFNBQThCLEVBQUUsUUFBNEI7SUFDakYsT0FBTyxDQUNMLFFBQVEsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLFFBQVEsQ0FBQyxHQUFHLEdBQUcsU0FBUyxJQUFJLFFBQVEsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLFFBQVEsQ0FBQyxHQUFHLEdBQUcsU0FBUyxDQUMvRixDQUFDO0FBQ0osQ0FBQztBQUVELFNBQVMsWUFBWSxDQUFDLENBQXFCLEVBQUUsQ0FBcUI7SUFDaEUsT0FBTyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDO0FBQzVDLENBQUM7QUFFRCxTQUFTLFVBQVUsQ0FBQyxLQUE0QjtJQUM5QyxPQUFPLEtBQUssS0FBSyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO0FBQy9DLENBQUM7QUFFRCxTQUFTLGFBQWE7SUFDcEIsT0FBTyxTQUFTLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDdEYsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoZXNzaW1hbHNBbmltYWxUeXBlLFxuICBDaGVzc2ltYWxzQm90RGlmZmljdWx0eSxcbiAgQ2hlc3NpbWFsc0JvdFByb2ZpbGUsXG4gIENoZXNzaW1hbHNCb3RQcm9maWxlSWQsXG4gIENoZXNzaW1hbHNCb2FyZFNpemUsXG4gIENoZXNzaW1hbHNHYW1lTW9kZSxcbiAgQ2hlc3NpbWFsc0dhbWVTdGF0ZSxcbiAgQ2hlc3NpbWFsc0dhbWVTdGF0dXMsXG4gIENoZXNzaW1hbHNNb3ZlLFxuICBDaGVzc2ltYWxzTW92ZUhpc3RvcnlFbnRyeSxcbiAgQ2hlc3NpbWFsc09ubGluZVN0YXRlLFxuICBDaGVzc2ltYWxzUGllY2UsXG4gIENoZXNzaW1hbHNQbGF5ZXJDb2xvcixcbiAgQ2hlc3NpbWFsc1Bvc2l0aW9uLFxufSBmcm9tICcuL3R5cGVzJztcblxuY29uc3QgQU5JTUFMUzogQ2hlc3NpbWFsc0FuaW1hbFR5cGVbXSA9IFsnZWFnbGUnLCAnYnVsbCcsICdrYW5nYXJvbycsICdsaW9uJ107XG5cbmludGVyZmFjZSBDaGVzc2ltYWxzQm90U3R5bGUge1xuICBhZHZhbmNlbWVudDogbnVtYmVyO1xuICBjYXB0dXJlOiBudW1iZXI7XG4gIHNhZmV0eTogbnVtYmVyO1xuICBwb3dlcjogbnVtYmVyO1xuICBjZW50ZXI6IG51bWJlcjtcbiAgdW5sb2NrOiBudW1iZXI7XG4gIHJlcGx5OiBudW1iZXI7XG4gIHJhbmRvbW5lc3M6IG51bWJlcjtcbiAgc3ByZWFkOiBudW1iZXI7XG4gIG1vYmlsaXR5OiBudW1iZXI7XG4gIHRyYXA6IG51bWJlcjtcbiAgZW5kZ2FtZTogbnVtYmVyO1xufVxuXG5leHBvcnQgY29uc3QgQ0hFU1NJTUFMU19CT1RfUFJPRklMRVM6IENoZXNzaW1hbHNCb3RQcm9maWxlW10gPSBbXG4gIHtcbiAgICBpZDogJ2V4cGxvcmVyJyxcbiAgICBkaWZmaWN1bHR5OiAnZWFzeScsXG4gICAgYXZhdGFyOiAn8J+nrScsXG4gICAgbGFiZWxLZXk6ICdjaGVzc2ltYWxzQm90RXhwbG9yZXInLFxuICAgIGRlc2NyaXB0aW9uS2V5OiAnY2hlc3NpbWFsc0JvdEV4cGxvcmVyQm9keScsXG4gIH0sXG4gIHtcbiAgICBpZDogJ2ltcHVsc2l2ZScsXG4gICAgZGlmZmljdWx0eTogJ2Vhc3knLFxuICAgIGF2YXRhcjogJ+KaoScsXG4gICAgbGFiZWxLZXk6ICdjaGVzc2ltYWxzQm90SW1wdWxzaXZlJyxcbiAgICBkZXNjcmlwdGlvbktleTogJ2NoZXNzaW1hbHNCb3RJbXB1bHNpdmVCb2R5JyxcbiAgfSxcbiAge1xuICAgIGlkOiAncnVubmVyJyxcbiAgICBkaWZmaWN1bHR5OiAnZWFzeScsXG4gICAgYXZhdGFyOiAn8J+PgScsXG4gICAgbGFiZWxLZXk6ICdjaGVzc2ltYWxzQm90UnVubmVyJyxcbiAgICBkZXNjcmlwdGlvbktleTogJ2NoZXNzaW1hbHNCb3RSdW5uZXJCb2R5JyxcbiAgfSxcbiAge1xuICAgIGlkOiAnaHVudGVyJyxcbiAgICBkaWZmaWN1bHR5OiAnbm9ybWFsJyxcbiAgICBhdmF0YXI6ICfwn46vJyxcbiAgICBsYWJlbEtleTogJ2NoZXNzaW1hbHNCb3RIdW50ZXInLFxuICAgIGRlc2NyaXB0aW9uS2V5OiAnY2hlc3NpbWFsc0JvdEh1bnRlckJvZHknLFxuICB9LFxuICB7XG4gICAgaWQ6ICdndWFyZGlhbicsXG4gICAgZGlmZmljdWx0eTogJ25vcm1hbCcsXG4gICAgYXZhdGFyOiAn8J+boe+4jycsXG4gICAgbGFiZWxLZXk6ICdjaGVzc2ltYWxzQm90R3VhcmRpYW4nLFxuICAgIGRlc2NyaXB0aW9uS2V5OiAnY2hlc3NpbWFsc0JvdEd1YXJkaWFuQm9keScsXG4gIH0sXG4gIHtcbiAgICBpZDogJ2p1bXBlcicsXG4gICAgZGlmZmljdWx0eTogJ25vcm1hbCcsXG4gICAgYXZhdGFyOiAn8J+mmCcsXG4gICAgbGFiZWxLZXk6ICdjaGVzc2ltYWxzQm90SnVtcGVyJyxcbiAgICBkZXNjcmlwdGlvbktleTogJ2NoZXNzaW1hbHNCb3RKdW1wZXJCb2R5JyxcbiAgfSxcbiAge1xuICAgIGlkOiAnc3RyYXRlZ2lzdCcsXG4gICAgZGlmZmljdWx0eTogJ2hhcmQnLFxuICAgIGF2YXRhcjogJ+KZn++4jycsXG4gICAgbGFiZWxLZXk6ICdjaGVzc2ltYWxzQm90U3RyYXRlZ2lzdCcsXG4gICAgZGVzY3JpcHRpb25LZXk6ICdjaGVzc2ltYWxzQm90U3RyYXRlZ2lzdEJvZHknLFxuICB9LFxuICB7XG4gICAgaWQ6ICdwcmVkYXRvcicsXG4gICAgZGlmZmljdWx0eTogJ2hhcmQnLFxuICAgIGF2YXRhcjogJ/CfpoEnLFxuICAgIGxhYmVsS2V5OiAnY2hlc3NpbWFsc0JvdFByZWRhdG9yJyxcbiAgICBkZXNjcmlwdGlvbktleTogJ2NoZXNzaW1hbHNCb3RQcmVkYXRvckJvZHknLFxuICB9LFxuICB7XG4gICAgaWQ6ICdzcHJpbnRlcicsXG4gICAgZGlmZmljdWx0eTogJ2hhcmQnLFxuICAgIGF2YXRhcjogJ/CfmoAnLFxuICAgIGxhYmVsS2V5OiAnY2hlc3NpbWFsc0JvdFNwcmludGVyJyxcbiAgICBkZXNjcmlwdGlvbktleTogJ2NoZXNzaW1hbHNCb3RTcHJpbnRlckJvZHknLFxuICB9LFxuICB7XG4gICAgaWQ6ICdzZW50aW5lbCcsXG4gICAgZGlmZmljdWx0eTogJ2hhcmQnLFxuICAgIGF2YXRhcjogJ/Cfj7AnLFxuICAgIGxhYmVsS2V5OiAnY2hlc3NpbWFsc0JvdFNlbnRpbmVsJyxcbiAgICBkZXNjcmlwdGlvbktleTogJ2NoZXNzaW1hbHNCb3RTZW50aW5lbEJvZHknLFxuICB9LFxuICB7XG4gICAgaWQ6ICdvcmFjbGUnLFxuICAgIGRpZmZpY3VsdHk6ICdoYXJkJyxcbiAgICBhdmF0YXI6ICfwn5SuJyxcbiAgICBsYWJlbEtleTogJ2NoZXNzaW1hbHNCb3RPcmFjbGUnLFxuICAgIGRlc2NyaXB0aW9uS2V5OiAnY2hlc3NpbWFsc0JvdE9yYWNsZUJvZHknLFxuICB9LFxuICB7XG4gICAgaWQ6ICdhbWJ1c2hlcicsXG4gICAgZGlmZmljdWx0eTogJ2hhcmQnLFxuICAgIGF2YXRhcjogJ/CfqqQnLFxuICAgIGxhYmVsS2V5OiAnY2hlc3NpbWFsc0JvdEFtYnVzaGVyJyxcbiAgICBkZXNjcmlwdGlvbktleTogJ2NoZXNzaW1hbHNCb3RBbWJ1c2hlckJvZHknLFxuICB9LFxuICB7XG4gICAgaWQ6ICdsb2Nrc21pdGgnLFxuICAgIGRpZmZpY3VsdHk6ICdoYXJkJyxcbiAgICBhdmF0YXI6ICfwn5SQJyxcbiAgICBsYWJlbEtleTogJ2NoZXNzaW1hbHNCb3RMb2Nrc21pdGgnLFxuICAgIGRlc2NyaXB0aW9uS2V5OiAnY2hlc3NpbWFsc0JvdExvY2tzbWl0aEJvZHknLFxuICB9LFxuICB7XG4gICAgaWQ6ICdzdG9ybScsXG4gICAgZGlmZmljdWx0eTogJ2hhcmQnLFxuICAgIGF2YXRhcjogJ/CfjKnvuI8nLFxuICAgIGxhYmVsS2V5OiAnY2hlc3NpbWFsc0JvdFN0b3JtJyxcbiAgICBkZXNjcmlwdGlvbktleTogJ2NoZXNzaW1hbHNCb3RTdG9ybUJvZHknLFxuICB9LFxuICB7XG4gICAgaWQ6ICdtYXRyaWFyY2gnLFxuICAgIGRpZmZpY3VsdHk6ICdoYXJkJyxcbiAgICBhdmF0YXI6ICfwn5GRJyxcbiAgICBsYWJlbEtleTogJ2NoZXNzaW1hbHNCb3RNYXRyaWFyY2gnLFxuICAgIGRlc2NyaXB0aW9uS2V5OiAnY2hlc3NpbWFsc0JvdE1hdHJpYXJjaEJvZHknLFxuICB9LFxuICB7XG4gICAgaWQ6ICdlbmRnYW1lJyxcbiAgICBkaWZmaWN1bHR5OiAnaGFyZCcsXG4gICAgYXZhdGFyOiAn4oybJyxcbiAgICBsYWJlbEtleTogJ2NoZXNzaW1hbHNCb3RFbmRnYW1lJyxcbiAgICBkZXNjcmlwdGlvbktleTogJ2NoZXNzaW1hbHNCb3RFbmRnYW1lQm9keScsXG4gIH0sXG5dO1xuXG5jb25zdCBCT1RfU1RZTEVTOiBSZWNvcmQ8Q2hlc3NpbWFsc0JvdFByb2ZpbGVJZCwgQ2hlc3NpbWFsc0JvdFN0eWxlPiA9IHtcbiAgZXhwbG9yZXI6IHsgYWR2YW5jZW1lbnQ6IDEuMDUsIGNhcHR1cmU6IDAuODIsIHNhZmV0eTogMC42MiwgcG93ZXI6IDAuOCwgY2VudGVyOiAxLjE1LCB1bmxvY2s6IDEuMDUsIHJlcGx5OiAwLjcsIHJhbmRvbW5lc3M6IDI2MCwgc3ByZWFkOiAwLjY4LCBtb2JpbGl0eTogMC43NSwgdHJhcDogMC41LCBlbmRnYW1lOiAwLjU1IH0sXG4gIGltcHVsc2l2ZTogeyBhZHZhbmNlbWVudDogMC45LCBjYXB0dXJlOiAxLjQ1LCBzYWZldHk6IDAuNDgsIHBvd2VyOiAxLjE1LCBjZW50ZXI6IDAuOCwgdW5sb2NrOiAwLjksIHJlcGx5OiAwLjU1LCByYW5kb21uZXNzOiAyOTAsIHNwcmVhZDogMC42MiwgbW9iaWxpdHk6IDAuODUsIHRyYXA6IDAuNjIsIGVuZGdhbWU6IDAuNSB9LFxuICBydW5uZXI6IHsgYWR2YW5jZW1lbnQ6IDEuNTUsIGNhcHR1cmU6IDAuNzgsIHNhZmV0eTogMC41LCBwb3dlcjogMC45NSwgY2VudGVyOiAwLjcsIHVubG9jazogMS4xLCByZXBseTogMC41NSwgcmFuZG9tbmVzczogMjUwLCBzcHJlYWQ6IDAuNiwgbW9iaWxpdHk6IDAuNzIsIHRyYXA6IDAuNDUsIGVuZGdhbWU6IDEuMSB9LFxuICBodW50ZXI6IHsgYWR2YW5jZW1lbnQ6IDAuOTUsIGNhcHR1cmU6IDEuNDUsIHNhZmV0eTogMC45LCBwb3dlcjogMS4wNSwgY2VudGVyOiAwLjk1LCB1bmxvY2s6IDAuOTUsIHJlcGx5OiAxLCByYW5kb21uZXNzOiA5MCwgc3ByZWFkOiAwLjMsIG1vYmlsaXR5OiAwLjk1LCB0cmFwOiAwLjgyLCBlbmRnYW1lOiAwLjc2IH0sXG4gIGd1YXJkaWFuOiB7IGFkdmFuY2VtZW50OiAwLjg4LCBjYXB0dXJlOiAxLCBzYWZldHk6IDEuNDUsIHBvd2VyOiAwLjg1LCBjZW50ZXI6IDEuMDUsIHVubG9jazogMSwgcmVwbHk6IDEuMTUsIHJhbmRvbW5lc3M6IDcwLCBzcHJlYWQ6IDAuMjYsIG1vYmlsaXR5OiAwLjgyLCB0cmFwOiAwLjcyLCBlbmRnYW1lOiAwLjcyIH0sXG4gIGp1bXBlcjogeyBhZHZhbmNlbWVudDogMS4xMiwgY2FwdHVyZTogMSwgc2FmZXR5OiAwLjkyLCBwb3dlcjogMS40MiwgY2VudGVyOiAxLjE4LCB1bmxvY2s6IDEuMDgsIHJlcGx5OiAwLjk1LCByYW5kb21uZXNzOiA5NSwgc3ByZWFkOiAwLjMyLCBtb2JpbGl0eTogMS4xNSwgdHJhcDogMC45LCBlbmRnYW1lOiAwLjgyIH0sXG4gIHN0cmF0ZWdpc3Q6IHsgYWR2YW5jZW1lbnQ6IDEuMDUsIGNhcHR1cmU6IDEuMDgsIHNhZmV0eTogMS4yMiwgcG93ZXI6IDEuMDgsIGNlbnRlcjogMS4xNiwgdW5sb2NrOiAxLjEsIHJlcGx5OiAxLjI1LCByYW5kb21uZXNzOiAyMiwgc3ByZWFkOiAwLjE0LCBtb2JpbGl0eTogMS4wOCwgdHJhcDogMS4wNiwgZW5kZ2FtZTogMSB9LFxuICBwcmVkYXRvcjogeyBhZHZhbmNlbWVudDogMC45OCwgY2FwdHVyZTogMS42OCwgc2FmZXR5OiAxLjAyLCBwb3dlcjogMS4zNCwgY2VudGVyOiAxLCB1bmxvY2s6IDEsIHJlcGx5OiAxLjEyLCByYW5kb21uZXNzOiAyOCwgc3ByZWFkOiAwLjE2LCBtb2JpbGl0eTogMS4wMiwgdHJhcDogMS4xOCwgZW5kZ2FtZTogMC44MiB9LFxuICBzcHJpbnRlcjogeyBhZHZhbmNlbWVudDogMS43MiwgY2FwdHVyZTogMC45LCBzYWZldHk6IDAuOTUsIHBvd2VyOiAxLjA4LCBjZW50ZXI6IDAuODYsIHVubG9jazogMS4xOCwgcmVwbHk6IDEsIHJhbmRvbW5lc3M6IDI2LCBzcHJlYWQ6IDAuMTUsIG1vYmlsaXR5OiAwLjk1LCB0cmFwOiAwLjc4LCBlbmRnYW1lOiAxLjQyIH0sXG4gIHNlbnRpbmVsOiB7IGFkdmFuY2VtZW50OiAwLjksIGNhcHR1cmU6IDEuMTIsIHNhZmV0eTogMS43MiwgcG93ZXI6IDAuOTUsIGNlbnRlcjogMS4yOCwgdW5sb2NrOiAxLjA1LCByZXBseTogMS4zOCwgcmFuZG9tbmVzczogMTgsIHNwcmVhZDogMC4xMiwgbW9iaWxpdHk6IDAuODYsIHRyYXA6IDEuMDQsIGVuZGdhbWU6IDAuODQgfSxcbiAgb3JhY2xlOiB7IGFkdmFuY2VtZW50OiAxLCBjYXB0dXJlOiAxLjEyLCBzYWZldHk6IDEuNDIsIHBvd2VyOiAxLjEsIGNlbnRlcjogMS4xOCwgdW5sb2NrOiAxLjA4LCByZXBseTogMS44LCByYW5kb21uZXNzOiA4LCBzcHJlYWQ6IDAuMDgsIG1vYmlsaXR5OiAxLjA2LCB0cmFwOiAxLjIyLCBlbmRnYW1lOiAxLjA4IH0sXG4gIGFtYnVzaGVyOiB7IGFkdmFuY2VtZW50OiAwLjksIGNhcHR1cmU6IDEuNDgsIHNhZmV0eTogMS4wOCwgcG93ZXI6IDEuNDYsIGNlbnRlcjogMS4wNSwgdW5sb2NrOiAxLjAyLCByZXBseTogMS4zMiwgcmFuZG9tbmVzczogMTQsIHNwcmVhZDogMC4xLCBtb2JpbGl0eTogMS4xMiwgdHJhcDogMS43MiwgZW5kZ2FtZTogMC45MiB9LFxuICBsb2Nrc21pdGg6IHsgYWR2YW5jZW1lbnQ6IDAuODgsIGNhcHR1cmU6IDEuMDQsIHNhZmV0eTogMS41NSwgcG93ZXI6IDEuMDIsIGNlbnRlcjogMS40OCwgdW5sb2NrOiAxLjEyLCByZXBseTogMS41MiwgcmFuZG9tbmVzczogMTIsIHNwcmVhZDogMC4xLCBtb2JpbGl0eTogMS41OCwgdHJhcDogMS4yNCwgZW5kZ2FtZTogMC44NiB9LFxuICBzdG9ybTogeyBhZHZhbmNlbWVudDogMS4xOCwgY2FwdHVyZTogMS4zOCwgc2FmZXR5OiAwLjk4LCBwb3dlcjogMS42MiwgY2VudGVyOiAxLjA4LCB1bmxvY2s6IDEuMTgsIHJlcGx5OiAxLjIyLCByYW5kb21uZXNzOiAxOCwgc3ByZWFkOiAwLjEzLCBtb2JpbGl0eTogMS4zNiwgdHJhcDogMS4yOCwgZW5kZ2FtZTogMS4wMiB9LFxuICBtYXRyaWFyY2g6IHsgYWR2YW5jZW1lbnQ6IDAuOTYsIGNhcHR1cmU6IDEuMTgsIHNhZmV0eTogMS42NCwgcG93ZXI6IDEuMTgsIGNlbnRlcjogMS4yMiwgdW5sb2NrOiAxLjA4LCByZXBseTogMS42NiwgcmFuZG9tbmVzczogMTAsIHNwcmVhZDogMC4wOCwgbW9iaWxpdHk6IDEuMDIsIHRyYXA6IDEuMzYsIGVuZGdhbWU6IDEgfSxcbiAgZW5kZ2FtZTogeyBhZHZhbmNlbWVudDogMS40NiwgY2FwdHVyZTogMSwgc2FmZXR5OiAxLjI4LCBwb3dlcjogMS4wNCwgY2VudGVyOiAwLjk0LCB1bmxvY2s6IDEuMDgsIHJlcGx5OiAxLjQ0LCByYW5kb21uZXNzOiAxMCwgc3ByZWFkOiAwLjA5LCBtb2JpbGl0eTogMC45OCwgdHJhcDogMS4wMiwgZW5kZ2FtZTogMS44NiB9LFxufTtcblxuY29uc3QgREVGQVVMVF9CT1RfUFJPRklMRV9CWV9ESUZGSUNVTFRZOiBSZWNvcmQ8Q2hlc3NpbWFsc0JvdERpZmZpY3VsdHksIENoZXNzaW1hbHNCb3RQcm9maWxlSWQ+ID0ge1xuICBlYXN5OiAnZXhwbG9yZXInLFxuICBub3JtYWw6ICdodW50ZXInLFxuICBoYXJkOiAnc3RyYXRlZ2lzdCcsXG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0ZUNoZXNzaW1hbHNHYW1lT3B0aW9ucyB7XG4gIGlkPzogc3RyaW5nO1xuICBtb2RlPzogQ2hlc3NpbWFsc0dhbWVNb2RlO1xuICBzdGF0dXM/OiBDaGVzc2ltYWxzR2FtZVN0YXR1cztcbiAgb25saW5lPzogQ2hlc3NpbWFsc09ubGluZVN0YXRlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQ2hlc3NpbWFsc0dhbWUoXG4gIGJvYXJkU2l6ZTogQ2hlc3NpbWFsc0JvYXJkU2l6ZSA9IDYsXG4gIG9wdGlvbnM6IENyZWF0ZUNoZXNzaW1hbHNHYW1lT3B0aW9ucyA9IHt9LFxuKTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSB7XG4gIGNvbnN0IHBpZWNlczogQ2hlc3NpbWFsc1BpZWNlW10gPSBbXTtcbiAgY29uc3Qgd2hpdGVSb3cgPSBib2FyZFNpemUgLSAyO1xuICBjb25zdCBibGFja1JvdyA9IDE7XG5cbiAgZm9yIChsZXQgY29sID0gMDsgY29sIDwgYm9hcmRTaXplOyBjb2wgKz0gMSkge1xuICAgIHBpZWNlcy5wdXNoKHtcbiAgICAgIGlkOiBgVyR7Y29sICsgMX1gLFxuICAgICAgY29sb3I6ICd3aGl0ZScsXG4gICAgICBwb3NpdGlvbjogeyByb3c6IHdoaXRlUm93LCBjb2wgfSxcbiAgICAgIGNhcHR1cmVkOiBmYWxzZSxcbiAgICB9KTtcbiAgICBwaWVjZXMucHVzaCh7XG4gICAgICBpZDogYEIke2NvbCArIDF9YCxcbiAgICAgIGNvbG9yOiAnYmxhY2snLFxuICAgICAgcG9zaXRpb246IHsgcm93OiBibGFja1JvdywgY29sIH0sXG4gICAgICBjYXB0dXJlZDogZmFsc2UsXG4gICAgfSk7XG4gIH1cblxuICBjb25zdCBzdGF0ZSA9IHJlZnJlc2hDaGVzc2ltYWxzUG93ZXJVbmxvY2tzKHtcbiAgICBpZDogb3B0aW9ucy5pZCA/PyBjcmVhdGVMb2NhbElkKCksXG4gICAgbW9kZTogb3B0aW9ucy5tb2RlID8/ICdsb2NhbCcsXG4gICAgYm9hcmRTaXplLFxuICAgIHN0YXR1czogb3B0aW9ucy5zdGF0dXMgPz8gJ2luX3Byb2dyZXNzJyxcbiAgICBjdXJyZW50VHVybjogJ3doaXRlJyxcbiAgICBwaWVjZXMsXG4gICAgcGxheWVyczoge1xuICAgICAgd2hpdGU6IHsgY29sb3I6ICd3aGl0ZScsIHBvd2VyVW5sb2NrZWQ6IGZhbHNlLCBjYXJkczogY3JlYXRlQ2FyZHMoKSB9LFxuICAgICAgYmxhY2s6IHsgY29sb3I6ICdibGFjaycsIHBvd2VyVW5sb2NrZWQ6IGZhbHNlLCBjYXJkczogY3JlYXRlQ2FyZHMoKSB9LFxuICAgIH0sXG4gICAgbW92ZUNvdW50OiAwLFxuICAgIG9ubGluZTogb3B0aW9ucy5vbmxpbmUsXG4gIH0pO1xuXG4gIHJldHVybiB7XG4gICAgLi4uc3RhdGUsXG4gICAgbW92ZUhpc3Rvcnk6IFtjcmVhdGVNb3ZlSGlzdG9yeUVudHJ5KHN0YXRlKV0sXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDaGVzc2ltYWxzUGllY2VBdChcbiAgc3RhdGU6IENoZXNzaW1hbHNHYW1lU3RhdGUsXG4gIHBvc2l0aW9uOiBDaGVzc2ltYWxzUG9zaXRpb24sXG4pOiBDaGVzc2ltYWxzUGllY2UgfCB1bmRlZmluZWQge1xuICByZXR1cm4gYWN0aXZlUGllY2VzKHN0YXRlKS5maW5kKFxuICAgIChwaWVjZSkgPT5cbiAgICAgICFwaWVjZS5jYXB0dXJlZCAmJiBwaWVjZS5wb3NpdGlvbi5yb3cgPT09IHBvc2l0aW9uLnJvdyAmJiBwaWVjZS5wb3NpdGlvbi5jb2wgPT09IHBvc2l0aW9uLmNvbCxcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldENoZXNzaW1hbHNMZWdhbE1vdmVzKFxuICBzdGF0ZTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSxcbiAgcGllY2VJZDogc3RyaW5nLFxuICBhbmltYWw/OiBDaGVzc2ltYWxzQW5pbWFsVHlwZSxcbik6IENoZXNzaW1hbHNNb3ZlW10ge1xuICBpZiAoc3RhdGUuc3RhdHVzICE9PSAnaW5fcHJvZ3Jlc3MnKSByZXR1cm4gW107XG5cbiAgY29uc3QgcGllY2UgPSBhY3RpdmVQaWVjZXMoc3RhdGUpLmZpbmQoKGl0ZW0pID0+IGl0ZW0uaWQgPT09IHBpZWNlSWQgJiYgIWl0ZW0uY2FwdHVyZWQpO1xuICBpZiAoIXBpZWNlIHx8IHBpZWNlLmNvbG9yICE9PSBzdGF0ZS5jdXJyZW50VHVybikgcmV0dXJuIFtdO1xuXG4gIGlmIChhbmltYWwpIHtcbiAgICBjb25zdCBwbGF5ZXIgPSBzdGF0ZS5wbGF5ZXJzW3BpZWNlLmNvbG9yXTtcbiAgICBpZiAoIXBsYXllci5wb3dlclVubG9ja2VkIHx8IHBsYXllci5jYXJkc1thbmltYWxdLnVzZWQpIHJldHVybiBbXTtcbiAgICByZXR1cm4gZ2V0UG93ZXJNb3ZlcyhzdGF0ZSwgcGllY2UsIGFuaW1hbCk7XG4gIH1cblxuICByZXR1cm4gZ2V0QmFzaWNNb3ZlcyhzdGF0ZSwgcGllY2UpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q2hlc3NpbWFsc0FsbExlZ2FsTW92ZXMoXG4gIHN0YXRlOiBDaGVzc2ltYWxzR2FtZVN0YXRlLFxuICBjb2xvcjogQ2hlc3NpbWFsc1BsYXllckNvbG9yID0gc3RhdGUuY3VycmVudFR1cm4sXG4pOiBDaGVzc2ltYWxzTW92ZVtdIHtcbiAgaWYgKHN0YXRlLnN0YXR1cyAhPT0gJ2luX3Byb2dyZXNzJykgcmV0dXJuIFtdO1xuXG4gIGNvbnN0IHR1cm5TdGF0ZSA9IGNvbG9yID09PSBzdGF0ZS5jdXJyZW50VHVybiA/IHN0YXRlIDogeyAuLi5zdGF0ZSwgY3VycmVudFR1cm46IGNvbG9yIH07XG4gIGNvbnN0IHBsYXllciA9IHR1cm5TdGF0ZS5wbGF5ZXJzW2NvbG9yXTtcbiAgY29uc3QgbW92ZXM6IENoZXNzaW1hbHNNb3ZlW10gPSBbXTtcblxuICBmb3IgKGNvbnN0IHBpZWNlIG9mIGFjdGl2ZVBpZWNlcyh0dXJuU3RhdGUpKSB7XG4gICAgaWYgKHBpZWNlLmNhcHR1cmVkIHx8IHBpZWNlLmNvbG9yICE9PSBjb2xvcikgY29udGludWU7XG5cbiAgICBtb3Zlcy5wdXNoKC4uLmdldENoZXNzaW1hbHNMZWdhbE1vdmVzKHR1cm5TdGF0ZSwgcGllY2UuaWQpKTtcbiAgICBpZiAoIXBsYXllci5wb3dlclVubG9ja2VkKSBjb250aW51ZTtcblxuICAgIGZvciAoY29uc3QgYW5pbWFsIG9mIEFOSU1BTFMpIHtcbiAgICAgIGlmIChwbGF5ZXIuY2FyZHNbYW5pbWFsXS51c2VkKSBjb250aW51ZTtcbiAgICAgIG1vdmVzLnB1c2goLi4uZ2V0Q2hlc3NpbWFsc0xlZ2FsTW92ZXModHVyblN0YXRlLCBwaWVjZS5pZCwgYW5pbWFsKSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG1vdmVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2hvb3NlQ2hlc3NpbWFsc0JvdE1vdmUoXG4gIHN0YXRlOiBDaGVzc2ltYWxzR2FtZVN0YXRlLFxuICBkaWZmaWN1bHR5OiBDaGVzc2ltYWxzQm90RGlmZmljdWx0eSA9ICdub3JtYWwnLFxuICBwcm9maWxlSWQ6IENoZXNzaW1hbHNCb3RQcm9maWxlSWQgPSBERUZBVUxUX0JPVF9QUk9GSUxFX0JZX0RJRkZJQ1VMVFlbZGlmZmljdWx0eV0sXG4pOiBDaGVzc2ltYWxzTW92ZSB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IG1vdmVzID0gZ2V0Q2hlc3NpbWFsc0FsbExlZ2FsTW92ZXMoc3RhdGUpO1xuICBpZiAobW92ZXMubGVuZ3RoID09PSAwKSByZXR1cm4gdW5kZWZpbmVkO1xuICBjb25zdCBzdHlsZSA9IEJPVF9TVFlMRVNbcHJvZmlsZUlkXSA/PyBCT1RfU1RZTEVTW0RFRkFVTFRfQk9UX1BST0ZJTEVfQllfRElGRklDVUxUWVtkaWZmaWN1bHR5XV07XG5cbiAgY29uc3Qgc2NvcmVkID0gbW92ZXNcbiAgICAubWFwKChtb3ZlKSA9PiAoeyBtb3ZlLCBzY29yZTogc2NvcmVCb3RNb3ZlV2l0aExvb2thaGVhZChzdGF0ZSwgbW92ZSwgZGlmZmljdWx0eSwgc3R5bGUpIH0pKVxuICAgIC5zb3J0KChhLCBiKSA9PiBiLnNjb3JlIC0gYS5zY29yZSk7XG5cbiAgaWYgKGRpZmZpY3VsdHkgPT09ICdlYXN5Jykge1xuICAgIGNvbnN0IHBsYXlhYmxlID0gc2NvcmVkLmZpbHRlcigoaXRlbSkgPT4gaXRlbS5zY29yZSA+IC0zMDAwKTtcbiAgICByZXR1cm4gcGlja05vaXN5Qm90TW92ZShwbGF5YWJsZS5sZW5ndGggPyBwbGF5YWJsZSA6IHNjb3JlZCwgMC41NSk7XG4gIH1cblxuICBpZiAoZGlmZmljdWx0eSA9PT0gJ25vcm1hbCcpIHtcbiAgICByZXR1cm4gc2NvcmVkWzBdPy5tb3ZlO1xuICB9XG5cbiAgY29uc3Qgd2lubmluZ01vdmUgPSBzY29yZWQuZmluZCgoaXRlbSkgPT4gaXRlbS5zY29yZSA+PSAxMDAwMCk7XG4gIGlmICh3aW5uaW5nTW92ZSkgcmV0dXJuIHdpbm5pbmdNb3ZlLm1vdmU7XG5cbiAgY29uc3Qgb3Bwb25lbnRXaW5uaW5nVGFyZ2V0cyA9IG5ldyBTZXQoXG4gICAgZ2V0SW1tZWRpYXRlV2lubmluZ01vdmVzKHN0YXRlLCBvdGhlckNvbG9yKHN0YXRlLmN1cnJlbnRUdXJuKSkubWFwKChtb3ZlKSA9PiBwb3NpdGlvbktleShtb3ZlLnRvKSksXG4gICk7XG4gIGlmIChvcHBvbmVudFdpbm5pbmdUYXJnZXRzLnNpemUgPiAwKSB7XG4gICAgY29uc3QgYmxvY2tpbmdNb3ZlID0gc2NvcmVkLmZpbmQoXG4gICAgICAoaXRlbSkgPT4gaXRlbS5tb3ZlLmNhcHR1cmVzUGllY2VJZCB8fCBvcHBvbmVudFdpbm5pbmdUYXJnZXRzLmhhcyhwb3NpdGlvbktleShpdGVtLm1vdmUudG8pKSxcbiAgICApO1xuICAgIGlmIChibG9ja2luZ01vdmUpIHJldHVybiBibG9ja2luZ01vdmUubW92ZTtcbiAgfVxuXG4gIHJldHVybiBzY29yZWRbMF0/Lm1vdmU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcHBseUNoZXNzaW1hbHNNb3ZlKFxuICBzdGF0ZTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSxcbiAgY2FuZGlkYXRlOiBDaGVzc2ltYWxzTW92ZSxcbik6IENoZXNzaW1hbHNHYW1lU3RhdGUge1xuICBjb25zdCBsZWdhbE1vdmUgPSBnZXRDaGVzc2ltYWxzTGVnYWxNb3ZlcyhzdGF0ZSwgY2FuZGlkYXRlLnBpZWNlSWQsIGNhbmRpZGF0ZS5hbmltYWwpLmZpbmQoKG1vdmUpID0+XG4gICAgc2FtZVBvc2l0aW9uKG1vdmUuZnJvbSwgY2FuZGlkYXRlLmZyb20pICYmIHNhbWVQb3NpdGlvbihtb3ZlLnRvLCBjYW5kaWRhdGUudG8pLFxuICApO1xuXG4gIGlmICghbGVnYWxNb3ZlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdDSEVTU0lNQUxTX0lMTEVHQUxfTU9WRScpO1xuICB9XG5cbiAgY29uc3QgbW92ZWRQaWVjZSA9IGFjdGl2ZVBpZWNlcyhzdGF0ZSkuZmluZCgocGllY2UpID0+IHBpZWNlLmlkID09PSBsZWdhbE1vdmUucGllY2VJZCk7XG4gIGlmICghbW92ZWRQaWVjZSkge1xuICAgIHRocm93IG5ldyBFcnJvcignQ0hFU1NJTUFMU19QSUVDRV9OT1RfRk9VTkQnKTtcbiAgfVxuXG4gIGNvbnN0IHBpZWNlcyA9IGFjdGl2ZVBpZWNlcyhzdGF0ZSkubWFwKChwaWVjZSkgPT4ge1xuICAgIGlmIChwaWVjZS5pZCA9PT0gbGVnYWxNb3ZlLnBpZWNlSWQpIHtcbiAgICAgIHJldHVybiB7IC4uLnBpZWNlLCBwb3NpdGlvbjogeyAuLi5sZWdhbE1vdmUudG8gfSB9O1xuICAgIH1cbiAgICBpZiAocGllY2UuaWQgPT09IGxlZ2FsTW92ZS5jYXB0dXJlc1BpZWNlSWQpIHtcbiAgICAgIHJldHVybiB7IC4uLnBpZWNlLCBjYXB0dXJlZDogdHJ1ZSB9O1xuICAgIH1cbiAgICByZXR1cm4gcGllY2U7XG4gIH0pO1xuXG4gIGNvbnN0IHBsYXllcnMgPSB7XG4gICAgLi4uc3RhdGUucGxheWVycyxcbiAgICBbbW92ZWRQaWVjZS5jb2xvcl06IHtcbiAgICAgIC4uLnN0YXRlLnBsYXllcnNbbW92ZWRQaWVjZS5jb2xvcl0sXG4gICAgICBjYXJkczpcbiAgICAgICAgbGVnYWxNb3ZlLmtpbmQgPT09ICdwb3dlcicgJiYgbGVnYWxNb3ZlLmFuaW1hbFxuICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAuLi5zdGF0ZS5wbGF5ZXJzW21vdmVkUGllY2UuY29sb3JdLmNhcmRzLFxuICAgICAgICAgICAgICBbbGVnYWxNb3ZlLmFuaW1hbF06IHtcbiAgICAgICAgICAgICAgICAuLi5zdGF0ZS5wbGF5ZXJzW21vdmVkUGllY2UuY29sb3JdLmNhcmRzW2xlZ2FsTW92ZS5hbmltYWxdLFxuICAgICAgICAgICAgICAgIHVzZWQ6IHRydWUsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9XG4gICAgICAgICAgOiBzdGF0ZS5wbGF5ZXJzW21vdmVkUGllY2UuY29sb3JdLmNhcmRzLFxuICAgIH0sXG4gIH07XG5cbiAgY29uc3QgbmV4dFN0YXRlID0gcmVmcmVzaENoZXNzaW1hbHNQb3dlclVubG9ja3Moe1xuICAgIC4uLnN0YXRlLFxuICAgIHBpZWNlcyxcbiAgICBwbGF5ZXJzLFxuICAgIGN1cnJlbnRUdXJuOiBvdGhlckNvbG9yKG1vdmVkUGllY2UuY29sb3IpLFxuICAgIG1vdmVDb3VudDogc3RhdGUubW92ZUNvdW50ICsgMSxcbiAgICBsYXN0TW92ZTogbGVnYWxNb3ZlLFxuICB9KTtcblxuICBjb25zdCBwcm9tb3RlZCA9IGlzUHJvbW90aW9uUm93KG5leHRTdGF0ZS5ib2FyZFNpemUsIG1vdmVkUGllY2UuY29sb3IsIGxlZ2FsTW92ZS50byk7XG4gIGNvbnN0IGVuZW15UGllY2VzID0gYWN0aXZlUGllY2VzKG5leHRTdGF0ZSkuZmlsdGVyKFxuICAgIChwaWVjZSkgPT4gcGllY2UuY29sb3IgIT09IG1vdmVkUGllY2UuY29sb3IgJiYgIXBpZWNlLmNhcHR1cmVkLFxuICApO1xuXG4gIGNvbnN0IHJlc29sdmVkU3RhdGUgPVxuICAgIHByb21vdGVkIHx8IGVuZW15UGllY2VzLmxlbmd0aCA9PT0gMFxuICAgICAgPyB7XG4gICAgICAgICAgLi4ubmV4dFN0YXRlLFxuICAgICAgICAgIHN0YXR1czogJ2ZpbmlzaGVkJyBhcyBjb25zdCxcbiAgICAgICAgICB3aW5uZXI6IG1vdmVkUGllY2UuY29sb3IsXG4gICAgICAgICAgd2lubmVyUmVhc29uOiBwcm9tb3RlZCA/ICgncHJvbW90aW9uJyBhcyBjb25zdCkgOiAoJ2VsaW1pbmF0aW9uJyBhcyBjb25zdCksXG4gICAgICAgIH1cbiAgICAgIDogbmV4dFN0YXRlO1xuXG4gIHJldHVybiB7XG4gICAgLi4ucmVzb2x2ZWRTdGF0ZSxcbiAgICBtb3ZlSGlzdG9yeTogW1xuICAgICAgLi4uZW5zdXJlTW92ZUhpc3Rvcnkoc3RhdGUpLFxuICAgICAgY3JlYXRlTW92ZUhpc3RvcnlFbnRyeShyZXNvbHZlZFN0YXRlLCBsZWdhbE1vdmUpLFxuICAgIF0sXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVDaGVzc2ltYWxzUmV2aWV3U3RhdGUoXG4gIHN0YXRlOiBDaGVzc2ltYWxzR2FtZVN0YXRlLFxuICBlbnRyeTogQ2hlc3NpbWFsc01vdmVIaXN0b3J5RW50cnksXG4pOiBDaGVzc2ltYWxzR2FtZVN0YXRlIHtcbiAgY29uc3QgYmFzZVN0YXRlOiBDaGVzc2ltYWxzR2FtZVN0YXRlID0geyAuLi5zdGF0ZSB9O1xuICBkZWxldGUgYmFzZVN0YXRlLmxhc3RNb3ZlO1xuICBkZWxldGUgYmFzZVN0YXRlLndpbm5lcjtcbiAgZGVsZXRlIGJhc2VTdGF0ZS53aW5uZXJSZWFzb247XG4gIHJldHVybiB7XG4gICAgLi4uYmFzZVN0YXRlLFxuICAgIHN0YXR1czogZW50cnkuc3RhdHVzLFxuICAgIGN1cnJlbnRUdXJuOiBlbnRyeS5jdXJyZW50VHVybixcbiAgICBwaWVjZXM6IGNsb25lUGllY2VzKGVudHJ5LnBpZWNlcyksXG4gICAgbW92ZUNvdW50OiBlbnRyeS5tb3ZlTnVtYmVyLFxuICAgIC4uLihlbnRyeS53aW5uZXIgPyB7IHdpbm5lcjogZW50cnkud2lubmVyIH0gOiB7fSksXG4gICAgLi4uKGVudHJ5Lndpbm5lclJlYXNvbiA/IHsgd2lubmVyUmVhc29uOiBlbnRyeS53aW5uZXJSZWFzb24gfSA6IHt9KSxcbiAgICAuLi4oZW50cnkubW92ZSA/IHsgbGFzdE1vdmU6IHNhbml0aXplTW92ZShlbnRyeS5tb3ZlKSB9IDoge30pLFxuICB9O1xufVxuXG5mdW5jdGlvbiBjcmVhdGVNb3ZlSGlzdG9yeUVudHJ5KFxuICBzdGF0ZTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSxcbiAgbW92ZT86IENoZXNzaW1hbHNNb3ZlLFxuKTogQ2hlc3NpbWFsc01vdmVIaXN0b3J5RW50cnkge1xuICByZXR1cm4ge1xuICAgIG1vdmVOdW1iZXI6IHN0YXRlLm1vdmVDb3VudCxcbiAgICBwaWVjZXM6IGNsb25lUGllY2VzKHN0YXRlLnBpZWNlcyksXG4gICAgY3VycmVudFR1cm46IHN0YXRlLmN1cnJlbnRUdXJuLFxuICAgIHN0YXR1czogc3RhdGUuc3RhdHVzLFxuICAgIC4uLihtb3ZlID8geyBtb3ZlOiBzYW5pdGl6ZU1vdmUobW92ZSkgfSA6IHt9KSxcbiAgICAuLi4oc3RhdGUud2lubmVyID8geyB3aW5uZXI6IHN0YXRlLndpbm5lciB9IDoge30pLFxuICAgIC4uLihzdGF0ZS53aW5uZXJSZWFzb24gPyB7IHdpbm5lclJlYXNvbjogc3RhdGUud2lubmVyUmVhc29uIH0gOiB7fSksXG4gIH07XG59XG5cbmZ1bmN0aW9uIGVuc3VyZU1vdmVIaXN0b3J5KHN0YXRlOiBDaGVzc2ltYWxzR2FtZVN0YXRlKTogQ2hlc3NpbWFsc01vdmVIaXN0b3J5RW50cnlbXSB7XG4gIGlmIChzdGF0ZS5tb3ZlSGlzdG9yeT8ubGVuZ3RoKSByZXR1cm4gc3RhdGUubW92ZUhpc3RvcnkubWFwKGNsb25lTW92ZUhpc3RvcnlFbnRyeSk7XG4gIHJldHVybiBbY3JlYXRlTW92ZUhpc3RvcnlFbnRyeShzdGF0ZSldO1xufVxuXG5mdW5jdGlvbiBjbG9uZU1vdmVIaXN0b3J5RW50cnkoZW50cnk6IENoZXNzaW1hbHNNb3ZlSGlzdG9yeUVudHJ5KTogQ2hlc3NpbWFsc01vdmVIaXN0b3J5RW50cnkge1xuICByZXR1cm4ge1xuICAgIC4uLmVudHJ5LFxuICAgIHBpZWNlczogY2xvbmVQaWVjZXMoZW50cnkucGllY2VzKSxcbiAgICAuLi4oZW50cnkubW92ZSA/IHsgbW92ZTogc2FuaXRpemVNb3ZlKGVudHJ5Lm1vdmUpIH0gOiB7fSksXG4gIH07XG59XG5cbmZ1bmN0aW9uIGNsb25lUGllY2VzKHBpZWNlczogQ2hlc3NpbWFsc1BpZWNlW10pOiBDaGVzc2ltYWxzUGllY2VbXSB7XG4gIHJldHVybiBwaWVjZXMubWFwKChwaWVjZSkgPT4gKHtcbiAgICAuLi5waWVjZSxcbiAgICBwb3NpdGlvbjogeyAuLi5waWVjZS5wb3NpdGlvbiB9LFxuICB9KSk7XG59XG5cbmZ1bmN0aW9uIHNhbml0aXplTW92ZShtb3ZlOiBDaGVzc2ltYWxzTW92ZSk6IENoZXNzaW1hbHNNb3ZlIHtcbiAgcmV0dXJuIHtcbiAgICBwaWVjZUlkOiBtb3ZlLnBpZWNlSWQsXG4gICAgZnJvbTogeyAuLi5tb3ZlLmZyb20gfSxcbiAgICB0bzogeyAuLi5tb3ZlLnRvIH0sXG4gICAga2luZDogbW92ZS5raW5kLFxuICAgIC4uLihtb3ZlLmFuaW1hbCA/IHsgYW5pbWFsOiBtb3ZlLmFuaW1hbCB9IDoge30pLFxuICAgIC4uLihtb3ZlLmNhcHR1cmVzUGllY2VJZCA/IHsgY2FwdHVyZXNQaWVjZUlkOiBtb3ZlLmNhcHR1cmVzUGllY2VJZCB9IDoge30pLFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVzaWduQ2hlc3NpbWFsc0dhbWUoXG4gIHN0YXRlOiBDaGVzc2ltYWxzR2FtZVN0YXRlLFxuICBjb2xvcjogQ2hlc3NpbWFsc1BsYXllckNvbG9yLFxuKTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSB7XG4gIGNvbnN0IHJlc2lnbmVkU3RhdGU6IENoZXNzaW1hbHNHYW1lU3RhdGUgPSB7XG4gICAgLi4uc3RhdGUsXG4gICAgc3RhdHVzOiAnZmluaXNoZWQnLFxuICAgIHdpbm5lcjogb3RoZXJDb2xvcihjb2xvciksXG4gICAgd2lubmVyUmVhc29uOiAncmVzaWduYXRpb24nLFxuICB9O1xuXG4gIHJldHVybiB7XG4gICAgLi4ucmVzaWduZWRTdGF0ZSxcbiAgICBtb3ZlSGlzdG9yeTogW1xuICAgICAgLi4uZW5zdXJlTW92ZUhpc3Rvcnkoc3RhdGUpLFxuICAgICAgY3JlYXRlTW92ZUhpc3RvcnlFbnRyeShyZXNpZ25lZFN0YXRlKSxcbiAgICBdLFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcG9zaXRpb25LZXkocG9zaXRpb246IENoZXNzaW1hbHNQb3NpdGlvbik6IHN0cmluZyB7XG4gIHJldHVybiBgJHtwb3NpdGlvbi5yb3d9OiR7cG9zaXRpb24uY29sfWA7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUNhcmRzKCkge1xuICByZXR1cm4gQU5JTUFMUy5yZWR1Y2UoXG4gICAgKGNhcmRzLCB0eXBlKSA9PiAoe1xuICAgICAgLi4uY2FyZHMsXG4gICAgICBbdHlwZV06IHsgdHlwZSwgdXNlZDogZmFsc2UgfSxcbiAgICB9KSxcbiAgICB7fSBhcyBSZWNvcmQ8Q2hlc3NpbWFsc0FuaW1hbFR5cGUsIHsgdHlwZTogQ2hlc3NpbWFsc0FuaW1hbFR5cGU7IHVzZWQ6IGJvb2xlYW4gfT4sXG4gICk7XG59XG5cbmZ1bmN0aW9uIGFjdGl2ZVBpZWNlcyhzdGF0ZTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSk6IENoZXNzaW1hbHNQaWVjZVtdIHtcbiAgcmV0dXJuIHN0YXRlLnBpZWNlcy5maWx0ZXIoKHBpZWNlKTogcGllY2UgaXMgQ2hlc3NpbWFsc1BpZWNlID0+ICEhcGllY2UpO1xufVxuXG5mdW5jdGlvbiBnZXRCYXNpY01vdmVzKHN0YXRlOiBDaGVzc2ltYWxzR2FtZVN0YXRlLCBwaWVjZTogQ2hlc3NpbWFsc1BpZWNlKTogQ2hlc3NpbWFsc01vdmVbXSB7XG4gIGNvbnN0IGRpcmVjdGlvbiA9IHBpZWNlLmNvbG9yID09PSAnd2hpdGUnID8gLTEgOiAxO1xuICBjb25zdCBtb3ZlczogQ2hlc3NpbWFsc01vdmVbXSA9IFtdO1xuICBjb25zdCBmb3J3YXJkID0geyByb3c6IHBpZWNlLnBvc2l0aW9uLnJvdyArIGRpcmVjdGlvbiwgY29sOiBwaWVjZS5wb3NpdGlvbi5jb2wgfTtcblxuICBpZiAoaXNJbnNpZGVCb2FyZChzdGF0ZS5ib2FyZFNpemUsIGZvcndhcmQpICYmICFnZXRDaGVzc2ltYWxzUGllY2VBdChzdGF0ZSwgZm9yd2FyZCkpIHtcbiAgICBtb3Zlcy5wdXNoKHtcbiAgICAgIHBpZWNlSWQ6IHBpZWNlLmlkLFxuICAgICAgZnJvbTogeyAuLi5waWVjZS5wb3NpdGlvbiB9LFxuICAgICAgdG86IGZvcndhcmQsXG4gICAgICBraW5kOiAnYmFzaWMnLFxuICAgIH0pO1xuICB9XG5cbiAgZm9yIChjb25zdCBjb2xPZmZzZXQgb2YgWy0xLCAxXSkge1xuICAgIGNvbnN0IHRhcmdldCA9IHsgcm93OiBwaWVjZS5wb3NpdGlvbi5yb3cgKyBkaXJlY3Rpb24sIGNvbDogcGllY2UucG9zaXRpb24uY29sICsgY29sT2Zmc2V0IH07XG4gICAgY29uc3QgdGFyZ2V0UGllY2UgPSBnZXRDaGVzc2ltYWxzUGllY2VBdChzdGF0ZSwgdGFyZ2V0KTtcbiAgICBpZiAoXG4gICAgICBpc0luc2lkZUJvYXJkKHN0YXRlLmJvYXJkU2l6ZSwgdGFyZ2V0KSAmJlxuICAgICAgdGFyZ2V0UGllY2UgJiZcbiAgICAgIHRhcmdldFBpZWNlLmNvbG9yICE9PSBwaWVjZS5jb2xvciAmJlxuICAgICAgIWlzUHJvbW90aW9uUm93KHN0YXRlLmJvYXJkU2l6ZSwgcGllY2UuY29sb3IsIHRhcmdldClcbiAgICApIHtcbiAgICAgIG1vdmVzLnB1c2goe1xuICAgICAgICBwaWVjZUlkOiBwaWVjZS5pZCxcbiAgICAgICAgZnJvbTogeyAuLi5waWVjZS5wb3NpdGlvbiB9LFxuICAgICAgICB0bzogdGFyZ2V0LFxuICAgICAgICBraW5kOiAnYmFzaWMnLFxuICAgICAgICBjYXB0dXJlc1BpZWNlSWQ6IHRhcmdldFBpZWNlLmlkLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG1vdmVzO1xufVxuXG5mdW5jdGlvbiBnZXRQb3dlck1vdmVzKFxuICBzdGF0ZTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSxcbiAgcGllY2U6IENoZXNzaW1hbHNQaWVjZSxcbiAgYW5pbWFsOiBDaGVzc2ltYWxzQW5pbWFsVHlwZSxcbik6IENoZXNzaW1hbHNNb3ZlW10ge1xuICBpZiAoYW5pbWFsID09PSAna2FuZ2Fyb28nKSB7XG4gICAgcmV0dXJuIGdldEthbmdhcm9vTW92ZXMoc3RhdGUsIHBpZWNlKTtcbiAgfVxuXG4gIGNvbnN0IGRpcmVjdGlvbnMgPSBnZXRQb3dlckRpcmVjdGlvbnMoYW5pbWFsKTtcbiAgY29uc3QgbW92ZXM6IENoZXNzaW1hbHNNb3ZlW10gPSBbXTtcblxuICBmb3IgKGNvbnN0IGRpcmVjdGlvbiBvZiBkaXJlY3Rpb25zKSB7XG4gICAgZm9yIChsZXQgZGlzdGFuY2UgPSAxOyBkaXN0YW5jZSA8IHN0YXRlLmJvYXJkU2l6ZTsgZGlzdGFuY2UgKz0gMSkge1xuICAgICAgY29uc3QgdGFyZ2V0ID0ge1xuICAgICAgICByb3c6IHBpZWNlLnBvc2l0aW9uLnJvdyArIGRpcmVjdGlvbi5yb3cgKiBkaXN0YW5jZSxcbiAgICAgICAgY29sOiBwaWVjZS5wb3NpdGlvbi5jb2wgKyBkaXJlY3Rpb24uY29sICogZGlzdGFuY2UsXG4gICAgICB9O1xuICAgICAgaWYgKCFpc0luc2lkZUJvYXJkKHN0YXRlLmJvYXJkU2l6ZSwgdGFyZ2V0KSkgYnJlYWs7XG4gICAgICBpZiAoaXNQcm9tb3Rpb25Sb3coc3RhdGUuYm9hcmRTaXplLCBwaWVjZS5jb2xvciwgdGFyZ2V0KSkgYnJlYWs7XG5cbiAgICAgIGNvbnN0IHRhcmdldFBpZWNlID0gZ2V0Q2hlc3NpbWFsc1BpZWNlQXQoc3RhdGUsIHRhcmdldCk7XG4gICAgICBpZiAodGFyZ2V0UGllY2U/LmNvbG9yID09PSBwaWVjZS5jb2xvcikgYnJlYWs7XG5cbiAgICAgIG1vdmVzLnB1c2goe1xuICAgICAgICBwaWVjZUlkOiBwaWVjZS5pZCxcbiAgICAgICAgZnJvbTogeyAuLi5waWVjZS5wb3NpdGlvbiB9LFxuICAgICAgICB0bzogdGFyZ2V0LFxuICAgICAgICBraW5kOiAncG93ZXInLFxuICAgICAgICBhbmltYWwsXG4gICAgICAgIC4uLih0YXJnZXRQaWVjZSA/IHsgY2FwdHVyZXNQaWVjZUlkOiB0YXJnZXRQaWVjZS5pZCB9IDoge30pLFxuICAgICAgfSk7XG5cbiAgICAgIGlmICh0YXJnZXRQaWVjZSkgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG1vdmVzO1xufVxuXG5mdW5jdGlvbiBnZXRLYW5nYXJvb01vdmVzKHN0YXRlOiBDaGVzc2ltYWxzR2FtZVN0YXRlLCBwaWVjZTogQ2hlc3NpbWFsc1BpZWNlKTogQ2hlc3NpbWFsc01vdmVbXSB7XG4gIGNvbnN0IG1vdmVzOiBDaGVzc2ltYWxzTW92ZVtdID0gW107XG4gIGNvbnN0IGp1bXBzID0gW1xuICAgIHsgcm93OiAtMiwgY29sOiAtMSB9LFxuICAgIHsgcm93OiAtMiwgY29sOiAxIH0sXG4gICAgeyByb3c6IC0xLCBjb2w6IC0yIH0sXG4gICAgeyByb3c6IC0xLCBjb2w6IDIgfSxcbiAgICB7IHJvdzogMSwgY29sOiAtMiB9LFxuICAgIHsgcm93OiAxLCBjb2w6IDIgfSxcbiAgICB7IHJvdzogMiwgY29sOiAtMSB9LFxuICAgIHsgcm93OiAyLCBjb2w6IDEgfSxcbiAgXTtcblxuICBmb3IgKGNvbnN0IGp1bXAgb2YganVtcHMpIHtcbiAgICBjb25zdCB0YXJnZXQgPSB7XG4gICAgICByb3c6IHBpZWNlLnBvc2l0aW9uLnJvdyArIGp1bXAucm93LFxuICAgICAgY29sOiBwaWVjZS5wb3NpdGlvbi5jb2wgKyBqdW1wLmNvbCxcbiAgICB9O1xuICAgIGlmICghaXNJbnNpZGVCb2FyZChzdGF0ZS5ib2FyZFNpemUsIHRhcmdldCkpIGNvbnRpbnVlO1xuICAgIGlmIChpc1Byb21vdGlvblJvdyhzdGF0ZS5ib2FyZFNpemUsIHBpZWNlLmNvbG9yLCB0YXJnZXQpKSBjb250aW51ZTtcblxuICAgIGNvbnN0IHRhcmdldFBpZWNlID0gZ2V0Q2hlc3NpbWFsc1BpZWNlQXQoc3RhdGUsIHRhcmdldCk7XG4gICAgaWYgKHRhcmdldFBpZWNlPy5jb2xvciA9PT0gcGllY2UuY29sb3IpIGNvbnRpbnVlO1xuXG4gICAgbW92ZXMucHVzaCh7XG4gICAgICBwaWVjZUlkOiBwaWVjZS5pZCxcbiAgICAgIGZyb206IHsgLi4ucGllY2UucG9zaXRpb24gfSxcbiAgICAgIHRvOiB0YXJnZXQsXG4gICAgICBraW5kOiAncG93ZXInLFxuICAgICAgYW5pbWFsOiAna2FuZ2Fyb28nLFxuICAgICAgLi4uKHRhcmdldFBpZWNlID8geyBjYXB0dXJlc1BpZWNlSWQ6IHRhcmdldFBpZWNlLmlkIH0gOiB7fSksXG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gbW92ZXM7XG59XG5cbmZ1bmN0aW9uIHNjb3JlQm90TW92ZShcbiAgc3RhdGU6IENoZXNzaW1hbHNHYW1lU3RhdGUsXG4gIG1vdmU6IENoZXNzaW1hbHNNb3ZlLFxuICBkaWZmaWN1bHR5OiBDaGVzc2ltYWxzQm90RGlmZmljdWx0eSxcbiAgc3R5bGU6IENoZXNzaW1hbHNCb3RTdHlsZSxcbik6IG51bWJlciB7XG4gIGNvbnN0IGNvbG9yID0gc3RhdGUuY3VycmVudFR1cm47XG4gIGNvbnN0IHRhcmdldFBpZWNlID0gbW92ZS5jYXB0dXJlc1BpZWNlSWRcbiAgICA/IGFjdGl2ZVBpZWNlcyhzdGF0ZSkuZmluZCgocGllY2UpID0+IHBpZWNlLmlkID09PSBtb3ZlLmNhcHR1cmVzUGllY2VJZClcbiAgICA6IHVuZGVmaW5lZDtcbiAgY29uc3QgYWR2YW5jZW1lbnQgPVxuICAgIGNvbG9yID09PSAnd2hpdGUnID8gc3RhdGUuYm9hcmRTaXplIC0gMSAtIG1vdmUudG8ucm93IDogbW92ZS50by5yb3c7XG4gIGxldCBzY29yZSA9IGFkdmFuY2VtZW50ICogMjQgKiBzdHlsZS5hZHZhbmNlbWVudDtcblxuICBpZiAobW92ZS5raW5kID09PSAnYmFzaWMnICYmIGlzUHJvbW90aW9uUm93KHN0YXRlLmJvYXJkU2l6ZSwgY29sb3IsIG1vdmUudG8pKSB7XG4gICAgc2NvcmUgKz0gMTAwMDA7XG4gIH1cbiAgaWYgKHRhcmdldFBpZWNlKSB7XG4gICAgc2NvcmUgKz0gNTIwICogc3R5bGUuY2FwdHVyZTtcbiAgICBjb25zdCB0YXJnZXRBZHZhbmNlbWVudCA9XG4gICAgICB0YXJnZXRQaWVjZS5jb2xvciA9PT0gJ3doaXRlJ1xuICAgICAgICA/IHN0YXRlLmJvYXJkU2l6ZSAtIDEgLSB0YXJnZXRQaWVjZS5wb3NpdGlvbi5yb3dcbiAgICAgICAgOiB0YXJnZXRQaWVjZS5wb3NpdGlvbi5yb3c7XG4gICAgc2NvcmUgKz0gdGFyZ2V0QWR2YW5jZW1lbnQgKiAxNiAqIHN0eWxlLmNhcHR1cmU7XG4gIH1cbiAgaWYgKG1vdmUua2luZCA9PT0gJ3Bvd2VyJykge1xuICAgIHNjb3JlICs9ICh0YXJnZXRQaWVjZSA/IDEyMCA6IGRpZmZpY3VsdHkgPT09ICdoYXJkJyA/IC02MCA6IC0zMCkgKiBzdHlsZS5wb3dlcjtcbiAgfVxuICBpZiAobW92ZS5hbmltYWwgPT09ICdsaW9uJykgc2NvcmUgLT0gMjAgKiBzdHlsZS5wb3dlcjtcbiAgaWYgKG1vdmUuYW5pbWFsID09PSAna2FuZ2Fyb28nKSBzY29yZSArPSAxNCAqIHN0eWxlLnBvd2VyO1xuICBpZiAod291bGRVbmxvY2tQb3dlcihzdGF0ZSwgY29sb3IsIG1vdmUudG8pKSBzY29yZSArPSA5MCAqIHN0eWxlLnVubG9jaztcbiAgc2NvcmUgKz0gY291bnRQb3dlclJlYWNoQWZ0ZXJNb3ZlKHN0YXRlLCBtb3ZlLCBjb2xvcikgKiAoZGlmZmljdWx0eSA9PT0gJ2hhcmQnID8gOCA6IDQpICogc3R5bGUubW9iaWxpdHk7XG4gIHNjb3JlICs9IGNvdW50UHJvdGVjdGVkVGhyZWF0c0FmdGVyTW92ZShzdGF0ZSwgbW92ZSwgY29sb3IpICogKGRpZmZpY3VsdHkgPT09ICdoYXJkJyA/IDM2IDogMTgpICogc3R5bGUudHJhcDtcbiAgc2NvcmUgKz0gc2NvcmVFbmRnYW1lUHJlc3N1cmUoc3RhdGUsIG1vdmUsIGNvbG9yKSAqIHN0eWxlLmVuZGdhbWU7XG4gIGlmIChkaWZmaWN1bHR5ID09PSAnaGFyZCcgJiYgaXNTcXVhcmVWdWxuZXJhYmxlQWZ0ZXJNb3ZlKHN0YXRlLCBtb3ZlKSkge1xuICAgIHNjb3JlIC09ICh0YXJnZXRQaWVjZSA/IDgwIDogMTQwKSAqIHN0eWxlLnNhZmV0eTtcbiAgfVxuICBzY29yZSArPSAoTWF0aC5yYW5kb20oKSAtIDAuNSkgKiBzdHlsZS5yYW5kb21uZXNzO1xuXG4gIHJldHVybiBzY29yZTtcbn1cblxuZnVuY3Rpb24gc2NvcmVCb3RNb3ZlV2l0aExvb2thaGVhZChcbiAgc3RhdGU6IENoZXNzaW1hbHNHYW1lU3RhdGUsXG4gIG1vdmU6IENoZXNzaW1hbHNNb3ZlLFxuICBkaWZmaWN1bHR5OiBDaGVzc2ltYWxzQm90RGlmZmljdWx0eSxcbiAgc3R5bGU6IENoZXNzaW1hbHNCb3RTdHlsZSxcbik6IG51bWJlciB7XG4gIGxldCBzY29yZSA9IHNjb3JlQm90TW92ZShzdGF0ZSwgbW92ZSwgZGlmZmljdWx0eSwgc3R5bGUpO1xuXG4gIHRyeSB7XG4gICAgY29uc3QgYWZ0ZXJNb3ZlID0gYXBwbHlDaGVzc2ltYWxzTW92ZShzdGF0ZSwgbW92ZSk7XG4gICAgaWYgKGFmdGVyTW92ZS5zdGF0dXMgPT09ICdmaW5pc2hlZCcpIHJldHVybiBzY29yZSArIDUwMDA7XG5cbiAgICBjb25zdCBvcHBvbmVudE1vdmVzID0gZ2V0Q2hlc3NpbWFsc0FsbExlZ2FsTW92ZXMoYWZ0ZXJNb3ZlKTtcbiAgICBjb25zdCBvcHBvbmVudEltbWVkaWF0ZVdpbiA9IG9wcG9uZW50TW92ZXMuc29tZShcbiAgICAgIChvcHBvbmVudE1vdmUpID0+XG4gICAgICAgIG9wcG9uZW50TW92ZS5raW5kID09PSAnYmFzaWMnICYmXG4gICAgICAgIGlzUHJvbW90aW9uUm93KGFmdGVyTW92ZS5ib2FyZFNpemUsIGFmdGVyTW92ZS5jdXJyZW50VHVybiwgb3Bwb25lbnRNb3ZlLnRvKSxcbiAgICApO1xuICAgIGlmIChvcHBvbmVudEltbWVkaWF0ZVdpbikge1xuICAgICAgc2NvcmUgLT0gKGRpZmZpY3VsdHkgPT09ICdlYXN5JyA/IDE4MDAgOiBkaWZmaWN1bHR5ID09PSAnbm9ybWFsJyA/IDUyMDAgOiA4MDAwKSAqIHN0eWxlLnNhZmV0eTtcbiAgICB9XG5cbiAgICBjb25zdCBtb3ZlZFBpZWNlID0gYWZ0ZXJNb3ZlLnBpZWNlcy5maW5kKChwaWVjZSkgPT4gcGllY2UuaWQgPT09IG1vdmUucGllY2VJZCAmJiAhcGllY2UuY2FwdHVyZWQpO1xuICAgIGlmIChtb3ZlZFBpZWNlKSB7XG4gICAgICBjb25zdCBjYW5DYXB0dXJlTW92ZWRQaWVjZSA9IG9wcG9uZW50TW92ZXMuc29tZSgob3Bwb25lbnRNb3ZlKSA9PiBvcHBvbmVudE1vdmUuY2FwdHVyZXNQaWVjZUlkID09PSBtb3ZlLnBpZWNlSWQpO1xuICAgICAgaWYgKGNhbkNhcHR1cmVNb3ZlZFBpZWNlKSB7XG4gICAgICAgIHNjb3JlIC09IChtb3ZlLmNhcHR1cmVzUGllY2VJZCA/IDE4MCA6IGRpZmZpY3VsdHkgPT09ICdlYXN5JyA/IDEyMCA6IGRpZmZpY3VsdHkgPT09ICdub3JtYWwnID8gMzYwIDogNTYwKVxuICAgICAgICAgICogc3R5bGUuc2FmZXR5O1xuICAgICAgfVxuXG4gICAgICBjb25zdCBjZW50ZXIgPSAoYWZ0ZXJNb3ZlLmJvYXJkU2l6ZSAtIDEpIC8gMjtcbiAgICAgIGNvbnN0IGNlbnRlckNvbnRyb2wgPSBNYXRoLm1heCgwLCBhZnRlck1vdmUuYm9hcmRTaXplIC8gMiAtIE1hdGguYWJzKG1vdmVkUGllY2UucG9zaXRpb24uY29sIC0gY2VudGVyKSk7XG4gICAgICBzY29yZSArPSBjZW50ZXJDb250cm9sICogKGRpZmZpY3VsdHkgPT09ICdoYXJkJyA/IDE4IDogMTApICogc3R5bGUuY2VudGVyO1xuICAgIH1cblxuICAgIGNvbnN0IG9wcG9uZW50QmVzdFJlcGx5ID0gb3Bwb25lbnRNb3Zlc1xuICAgICAgLm1hcCgob3Bwb25lbnRNb3ZlKSA9PiBzY29yZUJvdE1vdmUoYWZ0ZXJNb3ZlLCBvcHBvbmVudE1vdmUsIGRpZmZpY3VsdHksIHN0eWxlKSlcbiAgICAgIC5zb3J0KChhLCBiKSA9PiBiIC0gYSlbMF07XG5cbiAgICBpZiAob3Bwb25lbnRCZXN0UmVwbHkpIHtcbiAgICAgIGNvbnN0IHJlcGx5V2VpZ2h0ID0gZGlmZmljdWx0eSA9PT0gJ2Vhc3knID8gMC4xMiA6IGRpZmZpY3VsdHkgPT09ICdub3JtYWwnID8gMC4zMiA6IDAuNDg7XG4gICAgICBzY29yZSAtPSBvcHBvbmVudEJlc3RSZXBseSAqIHJlcGx5V2VpZ2h0ICogc3R5bGUucmVwbHk7XG4gICAgfVxuXG4gICAgaWYgKGRpZmZpY3VsdHkgPT09ICdoYXJkJykge1xuICAgICAgc2NvcmUgKz0gc2NvcmVCZXN0Q291bnRlcnBsYXkoYWZ0ZXJNb3ZlLCBzdGF0ZS5jdXJyZW50VHVybiwgc3R5bGUpICogMC4yODtcbiAgICB9XG4gIH0gY2F0Y2gge1xuICAgIHNjb3JlIC09IDEwMDA7XG4gIH1cblxuICByZXR1cm4gc2NvcmU7XG59XG5cbmZ1bmN0aW9uIGNvdW50UG93ZXJSZWFjaEFmdGVyTW92ZShcbiAgc3RhdGU6IENoZXNzaW1hbHNHYW1lU3RhdGUsXG4gIG1vdmU6IENoZXNzaW1hbHNNb3ZlLFxuICBjb2xvcjogQ2hlc3NpbWFsc1BsYXllckNvbG9yLFxuKTogbnVtYmVyIHtcbiAgdHJ5IHtcbiAgICBjb25zdCBhZnRlck1vdmUgPSBhcHBseUNoZXNzaW1hbHNNb3ZlKHN0YXRlLCBtb3ZlKTtcbiAgICBjb25zdCBldmFsdWF0aW9uU3RhdGUgPSB7IC4uLmFmdGVyTW92ZSwgY3VycmVudFR1cm46IGNvbG9yIH07XG4gICAgcmV0dXJuIGdldENoZXNzaW1hbHNBbGxMZWdhbE1vdmVzKGV2YWx1YXRpb25TdGF0ZSwgY29sb3IpLmZpbHRlcigobmV4dE1vdmUpID0+IG5leHRNb3ZlLmtpbmQgPT09ICdwb3dlcicpLmxlbmd0aDtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIDA7XG4gIH1cbn1cblxuZnVuY3Rpb24gY291bnRQcm90ZWN0ZWRUaHJlYXRzQWZ0ZXJNb3ZlKFxuICBzdGF0ZTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSxcbiAgbW92ZTogQ2hlc3NpbWFsc01vdmUsXG4gIGNvbG9yOiBDaGVzc2ltYWxzUGxheWVyQ29sb3IsXG4pOiBudW1iZXIge1xuICB0cnkge1xuICAgIGNvbnN0IGFmdGVyTW92ZSA9IGFwcGx5Q2hlc3NpbWFsc01vdmUoc3RhdGUsIG1vdmUpO1xuICAgIGNvbnN0IGV2YWx1YXRpb25TdGF0ZSA9IHsgLi4uYWZ0ZXJNb3ZlLCBjdXJyZW50VHVybjogY29sb3IgfTtcbiAgICBjb25zdCBvdXJNb3ZlcyA9IGdldENoZXNzaW1hbHNBbGxMZWdhbE1vdmVzKGV2YWx1YXRpb25TdGF0ZSwgY29sb3IpO1xuICAgIGNvbnN0IGVuZW15UGllY2VzID0gYWN0aXZlUGllY2VzKGFmdGVyTW92ZSkuZmlsdGVyKChwaWVjZSkgPT4gcGllY2UuY29sb3IgIT09IGNvbG9yICYmICFwaWVjZS5jYXB0dXJlZCk7XG4gICAgcmV0dXJuIGVuZW15UGllY2VzLmZpbHRlcigocGllY2UpID0+XG4gICAgICBvdXJNb3Zlcy5zb21lKChuZXh0TW92ZSkgPT4gbmV4dE1vdmUuY2FwdHVyZXNQaWVjZUlkID09PSBwaWVjZS5pZCksXG4gICAgKS5sZW5ndGg7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiAwO1xuICB9XG59XG5cbmZ1bmN0aW9uIHNjb3JlRW5kZ2FtZVByZXNzdXJlKFxuICBzdGF0ZTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSxcbiAgbW92ZTogQ2hlc3NpbWFsc01vdmUsXG4gIGNvbG9yOiBDaGVzc2ltYWxzUGxheWVyQ29sb3IsXG4pOiBudW1iZXIge1xuICBjb25zdCByZW1haW5pbmdFbmVteVBpZWNlcyA9IGFjdGl2ZVBpZWNlcyhzdGF0ZSkuZmlsdGVyKChwaWVjZSkgPT4gcGllY2UuY29sb3IgIT09IGNvbG9yICYmICFwaWVjZS5jYXB0dXJlZCkubGVuZ3RoO1xuICBjb25zdCB1cmdlbmN5ID0gcmVtYWluaW5nRW5lbXlQaWVjZXMgPD0gTWF0aC5tYXgoMiwgTWF0aC5mbG9vcihzdGF0ZS5ib2FyZFNpemUgLyAyKSkgPyAxLjYgOiAxO1xuICBjb25zdCBkaXN0YW5jZVRvUHJvbW90aW9uID1cbiAgICBjb2xvciA9PT0gJ3doaXRlJyA/IG1vdmUudG8ucm93IDogc3RhdGUuYm9hcmRTaXplIC0gMSAtIG1vdmUudG8ucm93O1xuICByZXR1cm4gTWF0aC5tYXgoMCwgc3RhdGUuYm9hcmRTaXplIC0gZGlzdGFuY2VUb1Byb21vdGlvbikgKiAxNCAqIHVyZ2VuY3k7XG59XG5cbmZ1bmN0aW9uIHNjb3JlQmVzdENvdW50ZXJwbGF5KFxuICBhZnRlck1vdmU6IENoZXNzaW1hbHNHYW1lU3RhdGUsXG4gIGNvbG9yOiBDaGVzc2ltYWxzUGxheWVyQ29sb3IsXG4gIHN0eWxlOiBDaGVzc2ltYWxzQm90U3R5bGUsXG4pOiBudW1iZXIge1xuICBjb25zdCBvcHBvbmVudE1vdmVzID0gZ2V0Q2hlc3NpbWFsc0FsbExlZ2FsTW92ZXMoYWZ0ZXJNb3ZlKTtcbiAgaWYgKG9wcG9uZW50TW92ZXMubGVuZ3RoID09PSAwKSByZXR1cm4gOTAwO1xuXG4gIGNvbnN0IHJlcGxpZXMgPSBvcHBvbmVudE1vdmVzLnNsaWNlKDAsIDE2KS5tYXAoKG9wcG9uZW50TW92ZSkgPT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBhZnRlclJlcGx5ID0gYXBwbHlDaGVzc2ltYWxzTW92ZShhZnRlck1vdmUsIG9wcG9uZW50TW92ZSk7XG4gICAgICBpZiAoYWZ0ZXJSZXBseS5zdGF0dXMgPT09ICdmaW5pc2hlZCcpIHJldHVybiAtNjAwMDtcbiAgICAgIGNvbnN0IGNvdW50ZXJTdGF0ZSA9IHsgLi4uYWZ0ZXJSZXBseSwgY3VycmVudFR1cm46IGNvbG9yIH07XG4gICAgICBjb25zdCBjb3VudGVyTW92ZXMgPSBnZXRDaGVzc2ltYWxzQWxsTGVnYWxNb3Zlcyhjb3VudGVyU3RhdGUsIGNvbG9yKTtcbiAgICAgIGNvbnN0IGJlc3RDb3VudGVyID0gY291bnRlck1vdmVzXG4gICAgICAgIC5tYXAoKGNvdW50ZXJNb3ZlKSA9PiBzY29yZUJvdE1vdmUoY291bnRlclN0YXRlLCBjb3VudGVyTW92ZSwgJ2hhcmQnLCBzdHlsZSkpXG4gICAgICAgIC5zb3J0KChhLCBiKSA9PiBiIC0gYSlbMF0gPz8gMDtcbiAgICAgIHJldHVybiBiZXN0Q291bnRlcjtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiAtMTAwMDtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBNYXRoLm1pbiguLi5yZXBsaWVzKTtcbn1cblxuZnVuY3Rpb24gcGlja05vaXN5Qm90TW92ZShcbiAgc2NvcmVkOiBBcnJheTx7IG1vdmU6IENoZXNzaW1hbHNNb3ZlOyBzY29yZTogbnVtYmVyIH0+LFxuICBzcHJlYWQ6IG51bWJlcixcbik6IENoZXNzaW1hbHNNb3ZlIHwgdW5kZWZpbmVkIHtcbiAgaWYgKHNjb3JlZC5sZW5ndGggPT09IDApIHJldHVybiB1bmRlZmluZWQ7XG4gIGNvbnN0IHBvb2xTaXplID0gTWF0aC5tYXgoMSwgTWF0aC5jZWlsKHNjb3JlZC5sZW5ndGggKiBzcHJlYWQpKTtcbiAgY29uc3QgcG9vbCA9IHNjb3JlZC5zbGljZSgwLCBwb29sU2l6ZSk7XG4gIGNvbnN0IHRvcFNjb3JlID0gcG9vbFswXT8uc2NvcmUgPz8gMDtcbiAgY29uc3Qgd2VpZ2h0ZWQgPSBwb29sLm1hcCgoaXRlbSwgaW5kZXgpID0+IHtcbiAgICBjb25zdCByZWxhdGl2ZSA9IE1hdGgubWF4KDAsIGl0ZW0uc2NvcmUgLSB0b3BTY29yZSArIDEyMDApO1xuICAgIGNvbnN0IHdlaWdodCA9IE1hdGgubWF4KDEsIHJlbGF0aXZlIC8gMTIwICsgKHBvb2wubGVuZ3RoIC0gaW5kZXgpICogMik7XG4gICAgcmV0dXJuIHsgLi4uaXRlbSwgd2VpZ2h0IH07XG4gIH0pO1xuICBjb25zdCB0b3RhbFdlaWdodCA9IHdlaWdodGVkLnJlZHVjZSgodG90YWwsIGl0ZW0pID0+IHRvdGFsICsgaXRlbS53ZWlnaHQsIDApO1xuICBsZXQgY3Vyc29yID0gTWF0aC5yYW5kb20oKSAqIHRvdGFsV2VpZ2h0O1xuICBmb3IgKGNvbnN0IGl0ZW0gb2Ygd2VpZ2h0ZWQpIHtcbiAgICBjdXJzb3IgLT0gaXRlbS53ZWlnaHQ7XG4gICAgaWYgKGN1cnNvciA8PSAwKSByZXR1cm4gaXRlbS5tb3ZlO1xuICB9XG4gIHJldHVybiBwb29sWzBdPy5tb3ZlO1xufVxuXG5mdW5jdGlvbiBnZXRJbW1lZGlhdGVXaW5uaW5nTW92ZXMoXG4gIHN0YXRlOiBDaGVzc2ltYWxzR2FtZVN0YXRlLFxuICBjb2xvcjogQ2hlc3NpbWFsc1BsYXllckNvbG9yLFxuKTogQ2hlc3NpbWFsc01vdmVbXSB7XG4gIHJldHVybiBnZXRDaGVzc2ltYWxzQWxsTGVnYWxNb3ZlcyhzdGF0ZSwgY29sb3IpLmZpbHRlcihcbiAgICAobW92ZSkgPT4gbW92ZS5raW5kID09PSAnYmFzaWMnICYmIGlzUHJvbW90aW9uUm93KHN0YXRlLmJvYXJkU2l6ZSwgY29sb3IsIG1vdmUudG8pLFxuICApO1xufVxuXG5mdW5jdGlvbiB3b3VsZFVubG9ja1Bvd2VyKFxuICBzdGF0ZTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSxcbiAgY29sb3I6IENoZXNzaW1hbHNQbGF5ZXJDb2xvcixcbiAgcG9zaXRpb246IENoZXNzaW1hbHNQb3NpdGlvbixcbik6IGJvb2xlYW4ge1xuICBpZiAoc3RhdGUucGxheWVyc1tjb2xvcl0ucG93ZXJVbmxvY2tlZCkgcmV0dXJuIGZhbHNlO1xuICBjb25zdCBjZW50ZXJUb3AgPSBzdGF0ZS5ib2FyZFNpemUgLyAyIC0gMTtcbiAgY29uc3QgY2VudGVyQm90dG9tID0gc3RhdGUuYm9hcmRTaXplIC8gMjtcbiAgcmV0dXJuIGNvbG9yID09PSAnd2hpdGUnID8gcG9zaXRpb24ucm93IDw9IGNlbnRlclRvcCA6IHBvc2l0aW9uLnJvdyA+PSBjZW50ZXJCb3R0b207XG59XG5cbmZ1bmN0aW9uIGlzU3F1YXJlVnVsbmVyYWJsZUFmdGVyTW92ZShzdGF0ZTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSwgbW92ZTogQ2hlc3NpbWFsc01vdmUpOiBib29sZWFuIHtcbiAgdHJ5IHtcbiAgICBjb25zdCBhZnRlck1vdmUgPSBhcHBseUNoZXNzaW1hbHNNb3ZlKHN0YXRlLCBtb3ZlKTtcbiAgICBpZiAoYWZ0ZXJNb3ZlLnN0YXR1cyA9PT0gJ2ZpbmlzaGVkJykgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiBnZXRDaGVzc2ltYWxzQWxsTGVnYWxNb3ZlcyhhZnRlck1vdmUpLnNvbWUoKGVuZW15TW92ZSkgPT5cbiAgICAgIHNhbWVQb3NpdGlvbihlbmVteU1vdmUudG8sIG1vdmUudG8pICYmICEhZW5lbXlNb3ZlLmNhcHR1cmVzUGllY2VJZCxcbiAgICApO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0UG93ZXJEaXJlY3Rpb25zKGFuaW1hbDogQ2hlc3NpbWFsc0FuaW1hbFR5cGUpOiBDaGVzc2ltYWxzUG9zaXRpb25bXSB7XG4gIGlmIChhbmltYWwgPT09ICdlYWdsZScpIHtcbiAgICByZXR1cm4gW1xuICAgICAgeyByb3c6IC0xLCBjb2w6IC0xIH0sXG4gICAgICB7IHJvdzogLTEsIGNvbDogMSB9LFxuICAgICAgeyByb3c6IDEsIGNvbDogLTEgfSxcbiAgICAgIHsgcm93OiAxLCBjb2w6IDEgfSxcbiAgICBdO1xuICB9XG4gIGlmIChhbmltYWwgPT09ICdidWxsJykge1xuICAgIHJldHVybiBbXG4gICAgICB7IHJvdzogLTEsIGNvbDogMCB9LFxuICAgICAgeyByb3c6IDEsIGNvbDogMCB9LFxuICAgICAgeyByb3c6IDAsIGNvbDogLTEgfSxcbiAgICAgIHsgcm93OiAwLCBjb2w6IDEgfSxcbiAgICBdO1xuICB9XG4gIHJldHVybiBbXG4gICAgeyByb3c6IC0xLCBjb2w6IC0xIH0sXG4gICAgeyByb3c6IC0xLCBjb2w6IDAgfSxcbiAgICB7IHJvdzogLTEsIGNvbDogMSB9LFxuICAgIHsgcm93OiAwLCBjb2w6IC0xIH0sXG4gICAgeyByb3c6IDAsIGNvbDogMSB9LFxuICAgIHsgcm93OiAxLCBjb2w6IC0xIH0sXG4gICAgeyByb3c6IDEsIGNvbDogMCB9LFxuICAgIHsgcm93OiAxLCBjb2w6IDEgfSxcbiAgXTtcbn1cblxuZnVuY3Rpb24gcmVmcmVzaENoZXNzaW1hbHNQb3dlclVubG9ja3Moc3RhdGU6IENoZXNzaW1hbHNHYW1lU3RhdGUpOiBDaGVzc2ltYWxzR2FtZVN0YXRlIHtcbiAgcmV0dXJuIHtcbiAgICAuLi5zdGF0ZSxcbiAgICBwbGF5ZXJzOiB7XG4gICAgICB3aGl0ZToge1xuICAgICAgICAuLi5zdGF0ZS5wbGF5ZXJzLndoaXRlLFxuICAgICAgICBwb3dlclVubG9ja2VkOlxuICAgICAgICAgIHN0YXRlLnBsYXllcnMud2hpdGUucG93ZXJVbmxvY2tlZCB8fFxuICAgICAgICAgIGhhc0Nyb3NzZWRDZW50ZXIoc3RhdGUsICd3aGl0ZScpIHx8XG4gICAgICAgICAgaGFzRW5lbXlFbnRlcmVkSG9tZShzdGF0ZSwgJ3doaXRlJyksXG4gICAgICB9LFxuICAgICAgYmxhY2s6IHtcbiAgICAgICAgLi4uc3RhdGUucGxheWVycy5ibGFjayxcbiAgICAgICAgcG93ZXJVbmxvY2tlZDpcbiAgICAgICAgICBzdGF0ZS5wbGF5ZXJzLmJsYWNrLnBvd2VyVW5sb2NrZWQgfHxcbiAgICAgICAgICBoYXNDcm9zc2VkQ2VudGVyKHN0YXRlLCAnYmxhY2snKSB8fFxuICAgICAgICAgIGhhc0VuZW15RW50ZXJlZEhvbWUoc3RhdGUsICdibGFjaycpLFxuICAgICAgfSxcbiAgICB9LFxuICB9O1xufVxuXG5mdW5jdGlvbiBoYXNDcm9zc2VkQ2VudGVyKHN0YXRlOiBDaGVzc2ltYWxzR2FtZVN0YXRlLCBjb2xvcjogQ2hlc3NpbWFsc1BsYXllckNvbG9yKTogYm9vbGVhbiB7XG4gIGNvbnN0IGNlbnRlclRvcCA9IHN0YXRlLmJvYXJkU2l6ZSAvIDIgLSAxO1xuICBjb25zdCBjZW50ZXJCb3R0b20gPSBzdGF0ZS5ib2FyZFNpemUgLyAyO1xuICByZXR1cm4gYWN0aXZlUGllY2VzKHN0YXRlKS5zb21lKChwaWVjZSkgPT4ge1xuICAgIGlmIChwaWVjZS5jb2xvciAhPT0gY29sb3IgfHwgcGllY2UuY2FwdHVyZWQpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gY29sb3IgPT09ICd3aGl0ZScgPyBwaWVjZS5wb3NpdGlvbi5yb3cgPD0gY2VudGVyVG9wIDogcGllY2UucG9zaXRpb24ucm93ID49IGNlbnRlckJvdHRvbTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGhhc0VuZW15RW50ZXJlZEhvbWUoc3RhdGU6IENoZXNzaW1hbHNHYW1lU3RhdGUsIGNvbG9yOiBDaGVzc2ltYWxzUGxheWVyQ29sb3IpOiBib29sZWFuIHtcbiAgY29uc3QgY2VudGVyVG9wID0gc3RhdGUuYm9hcmRTaXplIC8gMiAtIDE7XG4gIGNvbnN0IGNlbnRlckJvdHRvbSA9IHN0YXRlLmJvYXJkU2l6ZSAvIDI7XG4gIGNvbnN0IGVuZW15ID0gb3RoZXJDb2xvcihjb2xvcik7XG4gIHJldHVybiBhY3RpdmVQaWVjZXMoc3RhdGUpLnNvbWUoKHBpZWNlKSA9PiB7XG4gICAgaWYgKHBpZWNlLmNvbG9yICE9PSBlbmVteSB8fCBwaWVjZS5jYXB0dXJlZCkgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiBjb2xvciA9PT0gJ3doaXRlJyA/IHBpZWNlLnBvc2l0aW9uLnJvdyA+PSBjZW50ZXJCb3R0b20gOiBwaWVjZS5wb3NpdGlvbi5yb3cgPD0gY2VudGVyVG9wO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gaXNQcm9tb3Rpb25Sb3coXG4gIGJvYXJkU2l6ZTogQ2hlc3NpbWFsc0JvYXJkU2l6ZSxcbiAgY29sb3I6IENoZXNzaW1hbHNQbGF5ZXJDb2xvcixcbiAgcG9zaXRpb246IENoZXNzaW1hbHNQb3NpdGlvbixcbik6IGJvb2xlYW4ge1xuICByZXR1cm4gY29sb3IgPT09ICd3aGl0ZScgPyBwb3NpdGlvbi5yb3cgPT09IDAgOiBwb3NpdGlvbi5yb3cgPT09IGJvYXJkU2l6ZSAtIDE7XG59XG5cbmZ1bmN0aW9uIGlzSW5zaWRlQm9hcmQoYm9hcmRTaXplOiBDaGVzc2ltYWxzQm9hcmRTaXplLCBwb3NpdGlvbjogQ2hlc3NpbWFsc1Bvc2l0aW9uKTogYm9vbGVhbiB7XG4gIHJldHVybiAoXG4gICAgcG9zaXRpb24ucm93ID49IDAgJiYgcG9zaXRpb24ucm93IDwgYm9hcmRTaXplICYmIHBvc2l0aW9uLmNvbCA+PSAwICYmIHBvc2l0aW9uLmNvbCA8IGJvYXJkU2l6ZVxuICApO1xufVxuXG5mdW5jdGlvbiBzYW1lUG9zaXRpb24oYTogQ2hlc3NpbWFsc1Bvc2l0aW9uLCBiOiBDaGVzc2ltYWxzUG9zaXRpb24pOiBib29sZWFuIHtcbiAgcmV0dXJuIGEucm93ID09PSBiLnJvdyAmJiBhLmNvbCA9PT0gYi5jb2w7XG59XG5cbmZ1bmN0aW9uIG90aGVyQ29sb3IoY29sb3I6IENoZXNzaW1hbHNQbGF5ZXJDb2xvcik6IENoZXNzaW1hbHNQbGF5ZXJDb2xvciB7XG4gIHJldHVybiBjb2xvciA9PT0gJ3doaXRlJyA/ICdibGFjaycgOiAnd2hpdGUnO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVMb2NhbElkKCk6IHN0cmluZyB7XG4gIHJldHVybiBgbG9jYWwtJHtEYXRlLm5vdygpLnRvU3RyaW5nKDM2KX0tJHtNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zbGljZSgyLCA4KX1gO1xufVxuIl19
|
|
713
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlc3NpbWFscy1lbmdpbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL21pbmktZ2FtZXMvY2hlc3NpbWFscy1lbmdpbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBaUJBLE1BQU0sT0FBTyxHQUEyQixDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBaUI5RSxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBMkI7SUFDN0Q7UUFDRSxFQUFFLEVBQUUsVUFBVTtRQUNkLFVBQVUsRUFBRSxNQUFNO1FBQ2xCLE1BQU0sRUFBRSxJQUFJO1FBQ1osUUFBUSxFQUFFLHVCQUF1QjtRQUNqQyxjQUFjLEVBQUUsMkJBQTJCO0tBQzVDO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsV0FBVztRQUNmLFVBQVUsRUFBRSxNQUFNO1FBQ2xCLE1BQU0sRUFBRSxHQUFHO1FBQ1gsUUFBUSxFQUFFLHdCQUF3QjtRQUNsQyxjQUFjLEVBQUUsNEJBQTRCO0tBQzdDO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsUUFBUTtRQUNaLFVBQVUsRUFBRSxNQUFNO1FBQ2xCLE1BQU0sRUFBRSxJQUFJO1FBQ1osUUFBUSxFQUFFLHFCQUFxQjtRQUMvQixjQUFjLEVBQUUseUJBQXlCO0tBQzFDO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsUUFBUTtRQUNaLFVBQVUsRUFBRSxRQUFRO1FBQ3BCLE1BQU0sRUFBRSxJQUFJO1FBQ1osUUFBUSxFQUFFLHFCQUFxQjtRQUMvQixjQUFjLEVBQUUseUJBQXlCO0tBQzFDO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsVUFBVTtRQUNkLFVBQVUsRUFBRSxRQUFRO1FBQ3BCLE1BQU0sRUFBRSxLQUFLO1FBQ2IsUUFBUSxFQUFFLHVCQUF1QjtRQUNqQyxjQUFjLEVBQUUsMkJBQTJCO0tBQzVDO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsUUFBUTtRQUNa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RSxHQUFHLEVBQUU7SUFDekwsTUFBTSxFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUU7SUFDckwsTUFBTSxFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUU7SUFDcEwsUUFBUSxFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUU7SUFDckwsTUFBTSxFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUU7SUFDckwsVUFBVSxFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUU7SUFDekwsUUFBUSxFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUU7SUFDckwsUUFBUSxFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUU7SUFDdkwsUUFBUSxFQUFFLEVBQUUsV0FBVyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUU7SUFDMUwsTUFBTSxFQUFFLEVBQUUsV0FBVyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUU7SUFDbkwsUUFBUSxFQUFFLEVBQUUsV0FBVyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUU7SUFDekwsU0FBUyxFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUU7SUFDM0wsS0FBSyxFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUU7SUFDeEwsU0FBUyxFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUU7SUFDekwsT0FBTyxFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJ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QVUsQ0FBQyxLQUE0QjtJQUM5QyxPQUFPLEtBQUssS0FBSyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO0FBQy9DLENBQUM7QUFFRCxTQUFTLGFBQWE7SUFDcEIsT0FBTyxTQUFTLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDdEYsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoZXNzaW1hbHNBbmltYWxUeXBlLFxuICBDaGVzc2ltYWxzQm90RGlmZmljdWx0eSxcbiAgQ2hlc3NpbWFsc0JvdFByb2ZpbGUsXG4gIENoZXNzaW1hbHNCb3RQcm9maWxlSWQsXG4gIENoZXNzaW1hbHNCb2FyZFNpemUsXG4gIENoZXNzaW1hbHNHYW1lTW9kZSxcbiAgQ2hlc3NpbWFsc0dhbWVTdGF0ZSxcbiAgQ2hlc3NpbWFsc0dhbWVTdGF0dXMsXG4gIENoZXNzaW1hbHNNb3ZlLFxuICBDaGVzc2ltYWxzTW92ZUhpc3RvcnlFbnRyeSxcbiAgQ2hlc3NpbWFsc09ubGluZVN0YXRlLFxuICBDaGVzc2ltYWxzUGllY2UsXG4gIENoZXNzaW1hbHNQbGF5ZXJDb2xvcixcbiAgQ2hlc3NpbWFsc1Bvc2l0aW9uLFxufSBmcm9tICcuL3R5cGVzJztcblxuY29uc3QgQU5JTUFMUzogQ2hlc3NpbWFsc0FuaW1hbFR5cGVbXSA9IFsnZWFnbGUnLCAnYnVsbCcsICdrYW5nYXJvbycsICdsaW9uJ107XG5cbmludGVyZmFjZSBDaGVzc2ltYWxzQm90U3R5bGUge1xuICBhZHZhbmNlbWVudDogbnVtYmVyO1xuICBjYXB0dXJlOiBudW1iZXI7XG4gIHNhZmV0eTogbnVtYmVyO1xuICBwb3dlcjogbnVtYmVyO1xuICBjZW50ZXI6IG51bWJlcjtcbiAgdW5sb2NrOiBudW1iZXI7XG4gIHJlcGx5OiBudW1iZXI7XG4gIHJhbmRvbW5lc3M6IG51bWJlcjtcbiAgc3ByZWFkOiBudW1iZXI7XG4gIG1vYmlsaXR5OiBudW1iZXI7XG4gIHRyYXA6IG51bWJlcjtcbiAgZW5kZ2FtZTogbnVtYmVyO1xufVxuXG5leHBvcnQgY29uc3QgQ0hFU1NJTUFMU19CT1RfUFJPRklMRVM6IENoZXNzaW1hbHNCb3RQcm9maWxlW10gPSBbXG4gIHtcbiAgICBpZDogJ2V4cGxvcmVyJyxcbiAgICBkaWZmaWN1bHR5OiAnZWFzeScsXG4gICAgYXZhdGFyOiAn8J+nrScsXG4gICAgbGFiZWxLZXk6ICdjaGVzc2ltYWxzQm90RXhwbG9yZXInLFxuICAgIGRlc2NyaXB0aW9uS2V5OiAnY2hlc3NpbWFsc0JvdEV4cGxvcmVyQm9keScsXG4gIH0sXG4gIHtcbiAgICBpZDogJ2ltcHVsc2l2ZScsXG4gICAgZGlmZmljdWx0eTogJ2Vhc3knLFxuICAgIGF2YXRhcjogJ+KaoScsXG4gICAgbGFiZWxLZXk6ICdjaGVzc2ltYWxzQm90SW1wdWxzaXZlJyxcbiAgICBkZXNjcmlwdGlvbktleTogJ2NoZXNzaW1hbHNCb3RJbXB1bHNpdmVCb2R5JyxcbiAgfSxcbiAge1xuICAgIGlkOiAncnVubmVyJyxcbiAgICBkaWZmaWN1bHR5OiAnZWFzeScsXG4gICAgYXZhdGFyOiAn8J+PgScsXG4gICAgbGFiZWxLZXk6ICdjaGVzc2ltYWxzQm90UnVubmVyJyxcbiAgICBkZXNjcmlwdGlvbktleTogJ2NoZXNzaW1hbHNCb3RSdW5uZXJCb2R5JyxcbiAgfSxcbiAge1xuICAgIGlkOiAnaHVudGVyJyxcbiAgICBkaWZmaWN1bHR5OiAnbm9ybWFsJyxcbiAgICBhdmF0YXI6ICfwn46vJyxcbiAgICBsYWJlbEtleTogJ2NoZXNzaW1hbHNCb3RIdW50ZXInLFxuICAgIGRlc2NyaXB0aW9uS2V5OiAnY2hlc3NpbWFsc0JvdEh1bnRlckJvZHknLFxuICB9LFxuICB7XG4gICAgaWQ6ICdndWFyZGlhbicsXG4gICAgZGlmZmljdWx0eTogJ25vcm1hbCcsXG4gICAgYXZhdGFyOiAn8J+boe+4jycsXG4gICAgbGFiZWxLZXk6ICdjaGVzc2ltYWxzQm90R3VhcmRpYW4nLFxuICAgIGRlc2NyaXB0aW9uS2V5OiAnY2hlc3NpbWFsc0JvdEd1YXJkaWFuQm9keScsXG4gIH0sXG4gIHtcbiAgICBpZDogJ2p1bXBlcicsXG4gICAgZGlmZmljdWx0eTogJ25vcm1hbCcsXG4gICAgYXZhdGFyOiAn8J+mmCcsXG4gICAgbGFiZWxLZXk6ICdjaGVzc2ltYWxzQm90SnVtcGVyJyxcbiAgICBkZXNjcmlwdGlvbktleTogJ2NoZXNzaW1hbHNCb3RKdW1wZXJCb2R5JyxcbiAgfSxcbiAge1xuICAgIGlkOiAnc3RyYXRlZ2lzdCcsXG4gICAgZGlmZmljdWx0eTogJ2hhcmQnLFxuICAgIGF2YXRhcjogJ+KZn++4jycsXG4gICAgbGFiZWxLZXk6ICdjaGVzc2ltYWxzQm90U3RyYXRlZ2lzdCcsXG4gICAgZGVzY3JpcHRpb25LZXk6ICdjaGVzc2ltYWxzQm90U3RyYXRlZ2lzdEJvZHknLFxuICB9LFxuICB7XG4gICAgaWQ6ICdwcmVkYXRvcicsXG4gICAgZGlmZmljdWx0eTogJ2hhcmQnLFxuICAgIGF2YXRhcjogJ/CfpoEnLFxuICAgIGxhYmVsS2V5OiAnY2hlc3NpbWFsc0JvdFByZWRhdG9yJyxcbiAgICBkZXNjcmlwdGlvbktleTogJ2NoZXNzaW1hbHNCb3RQcmVkYXRvckJvZHknLFxuICB9LFxuICB7XG4gICAgaWQ6ICdzcHJpbnRlcicsXG4gICAgZGlmZmljdWx0eTogJ2hhcmQnLFxuICAgIGF2YXRhcjogJ/CfmoAnLFxuICAgIGxhYmVsS2V5OiAnY2hlc3NpbWFsc0JvdFNwcmludGVyJyxcbiAgICBkZXNjcmlwdGlvbktleTogJ2NoZXNzaW1hbHNCb3RTcHJpbnRlckJvZHknLFxuICB9LFxuICB7XG4gICAgaWQ6ICdzZW50aW5lbCcsXG4gICAgZGlmZmljdWx0eTogJ2hhcmQnLFxuICAgIGF2YXRhcjogJ/Cfj7AnLFxuICAgIGxhYmVsS2V5OiAnY2hlc3NpbWFsc0JvdFNlbnRpbmVsJyxcbiAgICBkZXNjcmlwdGlvbktleTogJ2NoZXNzaW1hbHNCb3RTZW50aW5lbEJvZHknLFxuICB9LFxuICB7XG4gICAgaWQ6ICdvcmFjbGUnLFxuICAgIGRpZmZpY3VsdHk6ICdoYXJkJyxcbiAgICBhdmF0YXI6ICfwn5SuJyxcbiAgICBsYWJlbEtleTogJ2NoZXNzaW1hbHNCb3RPcmFjbGUnLFxuICAgIGRlc2NyaXB0aW9uS2V5OiAnY2hlc3NpbWFsc0JvdE9yYWNsZUJvZHknLFxuICB9LFxuICB7XG4gICAgaWQ6ICdhbWJ1c2hlcicsXG4gICAgZGlmZmljdWx0eTogJ2hhcmQnLFxuICAgIGF2YXRhcjogJ/CfqqQnLFxuICAgIGxhYmVsS2V5OiAnY2hlc3NpbWFsc0JvdEFtYnVzaGVyJyxcbiAgICBkZXNjcmlwdGlvbktleTogJ2NoZXNzaW1hbHNCb3RBbWJ1c2hlckJvZHknLFxuICB9LFxuICB7XG4gICAgaWQ6ICdsb2Nrc21pdGgnLFxuICAgIGRpZmZpY3VsdHk6ICdoYXJkJyxcbiAgICBhdmF0YXI6ICfwn5SQJyxcbiAgICBsYWJlbEtleTogJ2NoZXNzaW1hbHNCb3RMb2Nrc21pdGgnLFxuICAgIGRlc2NyaXB0aW9uS2V5OiAnY2hlc3NpbWFsc0JvdExvY2tzbWl0aEJvZHknLFxuICB9LFxuICB7XG4gICAgaWQ6ICdzdG9ybScsXG4gICAgZGlmZmljdWx0eTogJ2hhcmQnLFxuICAgIGF2YXRhcjogJ/CfjKnvuI8nLFxuICAgIGxhYmVsS2V5OiAnY2hlc3NpbWFsc0JvdFN0b3JtJyxcbiAgICBkZXNjcmlwdGlvbktleTogJ2NoZXNzaW1hbHNCb3RTdG9ybUJvZHknLFxuICB9LFxuICB7XG4gICAgaWQ6ICdtYXRyaWFyY2gnLFxuICAgIGRpZmZpY3VsdHk6ICdoYXJkJyxcbiAgICBhdmF0YXI6ICfwn5GRJyxcbiAgICBsYWJlbEtleTogJ2NoZXNzaW1hbHNCb3RNYXRyaWFyY2gnLFxuICAgIGRlc2NyaXB0aW9uS2V5OiAnY2hlc3NpbWFsc0JvdE1hdHJpYXJjaEJvZHknLFxuICB9LFxuICB7XG4gICAgaWQ6ICdlbmRnYW1lJyxcbiAgICBkaWZmaWN1bHR5OiAnaGFyZCcsXG4gICAgYXZhdGFyOiAn4oybJyxcbiAgICBsYWJlbEtleTogJ2NoZXNzaW1hbHNCb3RFbmRnYW1lJyxcbiAgICBkZXNjcmlwdGlvbktleTogJ2NoZXNzaW1hbHNCb3RFbmRnYW1lQm9keScsXG4gIH0sXG5dO1xuXG5jb25zdCBCT1RfU1RZTEVTOiBSZWNvcmQ8Q2hlc3NpbWFsc0JvdFByb2ZpbGVJZCwgQ2hlc3NpbWFsc0JvdFN0eWxlPiA9IHtcbiAgZXhwbG9yZXI6IHsgYWR2YW5jZW1lbnQ6IDEuMDUsIGNhcHR1cmU6IDAuODIsIHNhZmV0eTogMC42MiwgcG93ZXI6IDAuOCwgY2VudGVyOiAxLjE1LCB1bmxvY2s6IDEuMDUsIHJlcGx5OiAwLjcsIHJhbmRvbW5lc3M6IDI2MCwgc3ByZWFkOiAwLjY4LCBtb2JpbGl0eTogMC43NSwgdHJhcDogMC41LCBlbmRnYW1lOiAwLjU1IH0sXG4gIGltcHVsc2l2ZTogeyBhZHZhbmNlbWVudDogMC45LCBjYXB0dXJlOiAxLjQ1LCBzYWZldHk6IDAuNDgsIHBvd2VyOiAxLjE1LCBjZW50ZXI6IDAuOCwgdW5sb2NrOiAwLjksIHJlcGx5OiAwLjU1LCByYW5kb21uZXNzOiAyOTAsIHNwcmVhZDogMC42MiwgbW9iaWxpdHk6IDAuODUsIHRyYXA6IDAuNjIsIGVuZGdhbWU6IDAuNSB9LFxuICBydW5uZXI6IHsgYWR2YW5jZW1lbnQ6IDEuNTUsIGNhcHR1cmU6IDAuNzgsIHNhZmV0eTogMC41LCBwb3dlcjogMC45NSwgY2VudGVyOiAwLjcsIHVubG9jazogMS4xLCByZXBseTogMC41NSwgcmFuZG9tbmVzczogMjUwLCBzcHJlYWQ6IDAuNiwgbW9iaWxpdHk6IDAuNzIsIHRyYXA6IDAuNDUsIGVuZGdhbWU6IDEuMSB9LFxuICBodW50ZXI6IHsgYWR2YW5jZW1lbnQ6IDAuOTUsIGNhcHR1cmU6IDEuNDUsIHNhZmV0eTogMC45LCBwb3dlcjogMS4wNSwgY2VudGVyOiAwLjk1LCB1bmxvY2s6IDAuOTUsIHJlcGx5OiAxLCByYW5kb21uZXNzOiA5MCwgc3ByZWFkOiAwLjMsIG1vYmlsaXR5OiAwLjk1LCB0cmFwOiAwLjgyLCBlbmRnYW1lOiAwLjc2IH0sXG4gIGd1YXJkaWFuOiB7IGFkdmFuY2VtZW50OiAwLjg4LCBjYXB0dXJlOiAxLCBzYWZldHk6IDEuNDUsIHBvd2VyOiAwLjg1LCBjZW50ZXI6IDEuMDUsIHVubG9jazogMSwgcmVwbHk6IDEuMTUsIHJhbmRvbW5lc3M6IDcwLCBzcHJlYWQ6IDAuMjYsIG1vYmlsaXR5OiAwLjgyLCB0cmFwOiAwLjcyLCBlbmRnYW1lOiAwLjcyIH0sXG4gIGp1bXBlcjogeyBhZHZhbmNlbWVudDogMS4xMiwgY2FwdHVyZTogMSwgc2FmZXR5OiAwLjkyLCBwb3dlcjogMS40MiwgY2VudGVyOiAxLjE4LCB1bmxvY2s6IDEuMDgsIHJlcGx5OiAwLjk1LCByYW5kb21uZXNzOiA5NSwgc3ByZWFkOiAwLjMyLCBtb2JpbGl0eTogMS4xNSwgdHJhcDogMC45LCBlbmRnYW1lOiAwLjgyIH0sXG4gIHN0cmF0ZWdpc3Q6IHsgYWR2YW5jZW1lbnQ6IDEuMDUsIGNhcHR1cmU6IDEuMDgsIHNhZmV0eTogMS4yMiwgcG93ZXI6IDEuMDgsIGNlbnRlcjogMS4xNiwgdW5sb2NrOiAxLjEsIHJlcGx5OiAxLjI1LCByYW5kb21uZXNzOiAyMiwgc3ByZWFkOiAwLjE0LCBtb2JpbGl0eTogMS4wOCwgdHJhcDogMS4wNiwgZW5kZ2FtZTogMSB9LFxuICBwcmVkYXRvcjogeyBhZHZhbmNlbWVudDogMC45OCwgY2FwdHVyZTogMS42OCwgc2FmZXR5OiAxLjAyLCBwb3dlcjogMS4zNCwgY2VudGVyOiAxLCB1bmxvY2s6IDEsIHJlcGx5OiAxLjEyLCByYW5kb21uZXNzOiAyOCwgc3ByZWFkOiAwLjE2LCBtb2JpbGl0eTogMS4wMiwgdHJhcDogMS4xOCwgZW5kZ2FtZTogMC44MiB9LFxuICBzcHJpbnRlcjogeyBhZHZhbmNlbWVudDogMS43MiwgY2FwdHVyZTogMC45LCBzYWZldHk6IDAuOTUsIHBvd2VyOiAxLjA4LCBjZW50ZXI6IDAuODYsIHVubG9jazogMS4xOCwgcmVwbHk6IDEsIHJhbmRvbW5lc3M6IDI2LCBzcHJlYWQ6IDAuMTUsIG1vYmlsaXR5OiAwLjk1LCB0cmFwOiAwLjc4LCBlbmRnYW1lOiAxLjQyIH0sXG4gIHNlbnRpbmVsOiB7IGFkdmFuY2VtZW50OiAwLjksIGNhcHR1cmU6IDEuMTIsIHNhZmV0eTogMS43MiwgcG93ZXI6IDAuOTUsIGNlbnRlcjogMS4yOCwgdW5sb2NrOiAxLjA1LCByZXBseTogMS4zOCwgcmFuZG9tbmVzczogMTgsIHNwcmVhZDogMC4xMiwgbW9iaWxpdHk6IDAuODYsIHRyYXA6IDEuMDQsIGVuZGdhbWU6IDAuODQgfSxcbiAgb3JhY2xlOiB7IGFkdmFuY2VtZW50OiAxLCBjYXB0dXJlOiAxLjEyLCBzYWZldHk6IDEuNDIsIHBvd2VyOiAxLjEsIGNlbnRlcjogMS4xOCwgdW5sb2NrOiAxLjA4LCByZXBseTogMS44LCByYW5kb21uZXNzOiA4LCBzcHJlYWQ6IDAuMDgsIG1vYmlsaXR5OiAxLjA2LCB0cmFwOiAxLjIyLCBlbmRnYW1lOiAxLjA4IH0sXG4gIGFtYnVzaGVyOiB7IGFkdmFuY2VtZW50OiAwLjksIGNhcHR1cmU6IDEuNDgsIHNhZmV0eTogMS4wOCwgcG93ZXI6IDEuNDYsIGNlbnRlcjogMS4wNSwgdW5sb2NrOiAxLjAyLCByZXBseTogMS4zMiwgcmFuZG9tbmVzczogMTQsIHNwcmVhZDogMC4xLCBtb2JpbGl0eTogMS4xMiwgdHJhcDogMS43MiwgZW5kZ2FtZTogMC45MiB9LFxuICBsb2Nrc21pdGg6IHsgYWR2YW5jZW1lbnQ6IDAuODgsIGNhcHR1cmU6IDEuMDQsIHNhZmV0eTogMS41NSwgcG93ZXI6IDEuMDIsIGNlbnRlcjogMS40OCwgdW5sb2NrOiAxLjEyLCByZXBseTogMS41MiwgcmFuZG9tbmVzczogMTIsIHNwcmVhZDogMC4xLCBtb2JpbGl0eTogMS41OCwgdHJhcDogMS4yNCwgZW5kZ2FtZTogMC44NiB9LFxuICBzdG9ybTogeyBhZHZhbmNlbWVudDogMS4xOCwgY2FwdHVyZTogMS4zOCwgc2FmZXR5OiAwLjk4LCBwb3dlcjogMS42MiwgY2VudGVyOiAxLjA4LCB1bmxvY2s6IDEuMTgsIHJlcGx5OiAxLjIyLCByYW5kb21uZXNzOiAxOCwgc3ByZWFkOiAwLjEzLCBtb2JpbGl0eTogMS4zNiwgdHJhcDogMS4yOCwgZW5kZ2FtZTogMS4wMiB9LFxuICBtYXRyaWFyY2g6IHsgYWR2YW5jZW1lbnQ6IDAuOTYsIGNhcHR1cmU6IDEuMTgsIHNhZmV0eTogMS42NCwgcG93ZXI6IDEuMTgsIGNlbnRlcjogMS4yMiwgdW5sb2NrOiAxLjA4LCByZXBseTogMS42NiwgcmFuZG9tbmVzczogMTAsIHNwcmVhZDogMC4wOCwgbW9iaWxpdHk6IDEuMDIsIHRyYXA6IDEuMzYsIGVuZGdhbWU6IDEgfSxcbiAgZW5kZ2FtZTogeyBhZHZhbmNlbWVudDogMS40NiwgY2FwdHVyZTogMSwgc2FmZXR5OiAxLjI4LCBwb3dlcjogMS4wNCwgY2VudGVyOiAwLjk0LCB1bmxvY2s6IDEuMDgsIHJlcGx5OiAxLjQ0LCByYW5kb21uZXNzOiAxMCwgc3ByZWFkOiAwLjA5LCBtb2JpbGl0eTogMC45OCwgdHJhcDogMS4wMiwgZW5kZ2FtZTogMS44NiB9LFxufTtcblxuY29uc3QgREVGQVVMVF9CT1RfUFJPRklMRV9CWV9ESUZGSUNVTFRZOiBSZWNvcmQ8Q2hlc3NpbWFsc0JvdERpZmZpY3VsdHksIENoZXNzaW1hbHNCb3RQcm9maWxlSWQ+ID0ge1xuICBlYXN5OiAnZXhwbG9yZXInLFxuICBub3JtYWw6ICdodW50ZXInLFxuICBoYXJkOiAnc3RyYXRlZ2lzdCcsXG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0ZUNoZXNzaW1hbHNHYW1lT3B0aW9ucyB7XG4gIGlkPzogc3RyaW5nO1xuICBtb2RlPzogQ2hlc3NpbWFsc0dhbWVNb2RlO1xuICBzdGF0dXM/OiBDaGVzc2ltYWxzR2FtZVN0YXR1cztcbiAgb25saW5lPzogQ2hlc3NpbWFsc09ubGluZVN0YXRlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQ2hlc3NpbWFsc0dhbWUoXG4gIGJvYXJkU2l6ZTogQ2hlc3NpbWFsc0JvYXJkU2l6ZSA9IDYsXG4gIG9wdGlvbnM6IENyZWF0ZUNoZXNzaW1hbHNHYW1lT3B0aW9ucyA9IHt9LFxuKTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSB7XG4gIGNvbnN0IHBpZWNlczogQ2hlc3NpbWFsc1BpZWNlW10gPSBbXTtcbiAgY29uc3Qgd2hpdGVSb3cgPSBib2FyZFNpemUgLSAyO1xuICBjb25zdCBibGFja1JvdyA9IDE7XG5cbiAgZm9yIChsZXQgY29sID0gMDsgY29sIDwgYm9hcmRTaXplOyBjb2wgKz0gMSkge1xuICAgIHBpZWNlcy5wdXNoKHtcbiAgICAgIGlkOiBgVyR7Y29sICsgMX1gLFxuICAgICAgY29sb3I6ICd3aGl0ZScsXG4gICAgICBwb3NpdGlvbjogeyByb3c6IHdoaXRlUm93LCBjb2wgfSxcbiAgICAgIGNhcHR1cmVkOiBmYWxzZSxcbiAgICB9KTtcbiAgICBwaWVjZXMucHVzaCh7XG4gICAgICBpZDogYEIke2NvbCArIDF9YCxcbiAgICAgIGNvbG9yOiAnYmxhY2snLFxuICAgICAgcG9zaXRpb246IHsgcm93OiBibGFja1JvdywgY29sIH0sXG4gICAgICBjYXB0dXJlZDogZmFsc2UsXG4gICAgfSk7XG4gIH1cblxuICBjb25zdCBzdGF0ZSA9IHJlZnJlc2hDaGVzc2ltYWxzUG93ZXJVbmxvY2tzKHtcbiAgICBpZDogb3B0aW9ucy5pZCA/PyBjcmVhdGVMb2NhbElkKCksXG4gICAgbW9kZTogb3B0aW9ucy5tb2RlID8/ICdsb2NhbCcsXG4gICAgYm9hcmRTaXplLFxuICAgIHN0YXR1czogb3B0aW9ucy5zdGF0dXMgPz8gJ2luX3Byb2dyZXNzJyxcbiAgICBjdXJyZW50VHVybjogJ3doaXRlJyxcbiAgICBwaWVjZXMsXG4gICAgcGxheWVyczoge1xuICAgICAgd2hpdGU6IHsgY29sb3I6ICd3aGl0ZScsIHBvd2VyVW5sb2NrZWQ6IGZhbHNlLCBjYXJkczogY3JlYXRlQ2FyZHMoKSB9LFxuICAgICAgYmxhY2s6IHsgY29sb3I6ICdibGFjaycsIHBvd2VyVW5sb2NrZWQ6IGZhbHNlLCBjYXJkczogY3JlYXRlQ2FyZHMoKSB9LFxuICAgIH0sXG4gICAgbW92ZUNvdW50OiAwLFxuICAgIG9ubGluZTogb3B0aW9ucy5vbmxpbmUsXG4gIH0pO1xuXG4gIHJldHVybiB7XG4gICAgLi4uc3RhdGUsXG4gICAgbW92ZUhpc3Rvcnk6IFtjcmVhdGVNb3ZlSGlzdG9yeUVudHJ5KHN0YXRlKV0sXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDaGVzc2ltYWxzUGllY2VBdChcbiAgc3RhdGU6IENoZXNzaW1hbHNHYW1lU3RhdGUsXG4gIHBvc2l0aW9uOiBDaGVzc2ltYWxzUG9zaXRpb24sXG4pOiBDaGVzc2ltYWxzUGllY2UgfCB1bmRlZmluZWQge1xuICByZXR1cm4gYWN0aXZlUGllY2VzKHN0YXRlKS5maW5kKFxuICAgIChwaWVjZSkgPT5cbiAgICAgICFwaWVjZS5jYXB0dXJlZCAmJiBwaWVjZS5wb3NpdGlvbi5yb3cgPT09IHBvc2l0aW9uLnJvdyAmJiBwaWVjZS5wb3NpdGlvbi5jb2wgPT09IHBvc2l0aW9uLmNvbCxcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldENoZXNzaW1hbHNMZWdhbE1vdmVzKFxuICBzdGF0ZTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSxcbiAgcGllY2VJZDogc3RyaW5nLFxuICBhbmltYWw/OiBDaGVzc2ltYWxzQW5pbWFsVHlwZSxcbik6IENoZXNzaW1hbHNNb3ZlW10ge1xuICBpZiAoc3RhdGUuc3RhdHVzICE9PSAnaW5fcHJvZ3Jlc3MnKSByZXR1cm4gW107XG5cbiAgY29uc3QgcGllY2UgPSBhY3RpdmVQaWVjZXMoc3RhdGUpLmZpbmQoKGl0ZW0pID0+IGl0ZW0uaWQgPT09IHBpZWNlSWQgJiYgIWl0ZW0uY2FwdHVyZWQpO1xuICBpZiAoIXBpZWNlIHx8IHBpZWNlLmNvbG9yICE9PSBzdGF0ZS5jdXJyZW50VHVybikgcmV0dXJuIFtdO1xuXG4gIGlmIChhbmltYWwpIHtcbiAgICBjb25zdCBwbGF5ZXIgPSBzdGF0ZS5wbGF5ZXJzW3BpZWNlLmNvbG9yXTtcbiAgICBpZiAoIXBsYXllci5wb3dlclVubG9ja2VkIHx8IHBsYXllci5jYXJkc1thbmltYWxdLnVzZWQpIHJldHVybiBbXTtcbiAgICByZXR1cm4gZ2V0UG93ZXJNb3ZlcyhzdGF0ZSwgcGllY2UsIGFuaW1hbCk7XG4gIH1cblxuICByZXR1cm4gZ2V0QmFzaWNNb3ZlcyhzdGF0ZSwgcGllY2UpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q2hlc3NpbWFsc0FsbExlZ2FsTW92ZXMoXG4gIHN0YXRlOiBDaGVzc2ltYWxzR2FtZVN0YXRlLFxuICBjb2xvcjogQ2hlc3NpbWFsc1BsYXllckNvbG9yID0gc3RhdGUuY3VycmVudFR1cm4sXG4pOiBDaGVzc2ltYWxzTW92ZVtdIHtcbiAgaWYgKHN0YXRlLnN0YXR1cyAhPT0gJ2luX3Byb2dyZXNzJykgcmV0dXJuIFtdO1xuXG4gIGNvbnN0IHR1cm5TdGF0ZSA9IGNvbG9yID09PSBzdGF0ZS5jdXJyZW50VHVybiA/IHN0YXRlIDogeyAuLi5zdGF0ZSwgY3VycmVudFR1cm46IGNvbG9yIH07XG4gIGNvbnN0IHBsYXllciA9IHR1cm5TdGF0ZS5wbGF5ZXJzW2NvbG9yXTtcbiAgY29uc3QgbW92ZXM6IENoZXNzaW1hbHNNb3ZlW10gPSBbXTtcblxuICBmb3IgKGNvbnN0IHBpZWNlIG9mIGFjdGl2ZVBpZWNlcyh0dXJuU3RhdGUpKSB7XG4gICAgaWYgKHBpZWNlLmNhcHR1cmVkIHx8IHBpZWNlLmNvbG9yICE9PSBjb2xvcikgY29udGludWU7XG5cbiAgICBtb3Zlcy5wdXNoKC4uLmdldENoZXNzaW1hbHNMZWdhbE1vdmVzKHR1cm5TdGF0ZSwgcGllY2UuaWQpKTtcbiAgICBpZiAoIXBsYXllci5wb3dlclVubG9ja2VkKSBjb250aW51ZTtcblxuICAgIGZvciAoY29uc3QgYW5pbWFsIG9mIEFOSU1BTFMpIHtcbiAgICAgIGlmIChwbGF5ZXIuY2FyZHNbYW5pbWFsXS51c2VkKSBjb250aW51ZTtcbiAgICAgIG1vdmVzLnB1c2goLi4uZ2V0Q2hlc3NpbWFsc0xlZ2FsTW92ZXModHVyblN0YXRlLCBwaWVjZS5pZCwgYW5pbWFsKSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG1vdmVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2hvb3NlQ2hlc3NpbWFsc0JvdE1vdmUoXG4gIHN0YXRlOiBDaGVzc2ltYWxzR2FtZVN0YXRlLFxuICBkaWZmaWN1bHR5OiBDaGVzc2ltYWxzQm90RGlmZmljdWx0eSA9ICdub3JtYWwnLFxuICBwcm9maWxlSWQ6IENoZXNzaW1hbHNCb3RQcm9maWxlSWQgPSBERUZBVUxUX0JPVF9QUk9GSUxFX0JZX0RJRkZJQ1VMVFlbZGlmZmljdWx0eV0sXG4pOiBDaGVzc2ltYWxzTW92ZSB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IG1vdmVzID0gZ2V0Q2hlc3NpbWFsc0FsbExlZ2FsTW92ZXMoc3RhdGUpO1xuICBpZiAobW92ZXMubGVuZ3RoID09PSAwKSByZXR1cm4gdW5kZWZpbmVkO1xuICBjb25zdCBzdHlsZSA9IEJPVF9TVFlMRVNbcHJvZmlsZUlkXSA/PyBCT1RfU1RZTEVTW0RFRkFVTFRfQk9UX1BST0ZJTEVfQllfRElGRklDVUxUWVtkaWZmaWN1bHR5XV07XG5cbiAgY29uc3QgcXVpY2tTY29yZWQgPSBtb3Zlc1xuICAgIC5tYXAoKG1vdmUpID0+ICh7IG1vdmUsIHNjb3JlOiBzY29yZUJvdE1vdmUoc3RhdGUsIG1vdmUsIGRpZmZpY3VsdHksIHN0eWxlKSB9KSlcbiAgICAuc29ydCgoYSwgYikgPT4gYi5zY29yZSAtIGEuc2NvcmUpO1xuICBjb25zdCBsb29rYWhlYWRMaW1pdCA9IGRpZmZpY3VsdHkgPT09ICdoYXJkJyA/IDMyIDogZGlmZmljdWx0eSA9PT0gJ25vcm1hbCcgPyAyNCA6IDA7XG4gIGNvbnN0IHNjb3JlZCA9IHF1aWNrU2NvcmVkXG4gICAgLm1hcCgoaXRlbSwgaW5kZXgpID0+ICh7XG4gICAgICBtb3ZlOiBpdGVtLm1vdmUsXG4gICAgICBzY29yZTpcbiAgICAgICAgaW5kZXggPCBsb29rYWhlYWRMaW1pdFxuICAgICAgICAgID8gc2NvcmVCb3RNb3ZlV2l0aExvb2thaGVhZChzdGF0ZSwgaXRlbS5tb3ZlLCBkaWZmaWN1bHR5LCBzdHlsZSlcbiAgICAgICAgICA6IGl0ZW0uc2NvcmUsXG4gICAgfSkpXG4gICAgLnNvcnQoKGEsIGIpID0+IGIuc2NvcmUgLSBhLnNjb3JlKTtcblxuICBpZiAoZGlmZmljdWx0eSA9PT0gJ2Vhc3knKSB7XG4gICAgY29uc3QgcGxheWFibGUgPSBzY29yZWQuZmlsdGVyKChpdGVtKSA9PiBpdGVtLnNjb3JlID4gLTMwMDApO1xuICAgIHJldHVybiBwaWNrTm9pc3lCb3RNb3ZlKHBsYXlhYmxlLmxlbmd0aCA/IHBsYXlhYmxlIDogc2NvcmVkLCAwLjU1KTtcbiAgfVxuXG4gIGlmIChkaWZmaWN1bHR5ID09PSAnbm9ybWFsJykge1xuICAgIHJldHVybiBzY29yZWRbMF0/Lm1vdmU7XG4gIH1cblxuICBjb25zdCB3aW5uaW5nTW92ZSA9IHNjb3JlZC5maW5kKChpdGVtKSA9PiBpdGVtLnNjb3JlID49IDEwMDAwKTtcbiAgaWYgKHdpbm5pbmdNb3ZlKSByZXR1cm4gd2lubmluZ01vdmUubW92ZTtcblxuICBjb25zdCBvcHBvbmVudFdpbm5pbmdUYXJnZXRzID0gbmV3IFNldChcbiAgICBnZXRJbW1lZGlhdGVXaW5uaW5nTW92ZXMoc3RhdGUsIG90aGVyQ29sb3Ioc3RhdGUuY3VycmVudFR1cm4pKS5tYXAoKG1vdmUpID0+IHBvc2l0aW9uS2V5KG1vdmUudG8pKSxcbiAgKTtcbiAgaWYgKG9wcG9uZW50V2lubmluZ1RhcmdldHMuc2l6ZSA+IDApIHtcbiAgICBjb25zdCBibG9ja2luZ01vdmUgPSBzY29yZWQuZmluZChcbiAgICAgIChpdGVtKSA9PiBpdGVtLm1vdmUuY2FwdHVyZXNQaWVjZUlkIHx8IG9wcG9uZW50V2lubmluZ1RhcmdldHMuaGFzKHBvc2l0aW9uS2V5KGl0ZW0ubW92ZS50bykpLFxuICAgICk7XG4gICAgaWYgKGJsb2NraW5nTW92ZSkgcmV0dXJuIGJsb2NraW5nTW92ZS5tb3ZlO1xuICB9XG5cbiAgcmV0dXJuIHNjb3JlZFswXT8ubW92ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5Q2hlc3NpbWFsc01vdmUoXG4gIHN0YXRlOiBDaGVzc2ltYWxzR2FtZVN0YXRlLFxuICBjYW5kaWRhdGU6IENoZXNzaW1hbHNNb3ZlLFxuKTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSB7XG4gIGNvbnN0IGxlZ2FsTW92ZSA9IGdldENoZXNzaW1hbHNMZWdhbE1vdmVzKHN0YXRlLCBjYW5kaWRhdGUucGllY2VJZCwgY2FuZGlkYXRlLmFuaW1hbCkuZmluZCgobW92ZSkgPT5cbiAgICBzYW1lUG9zaXRpb24obW92ZS5mcm9tLCBjYW5kaWRhdGUuZnJvbSkgJiYgc2FtZVBvc2l0aW9uKG1vdmUudG8sIGNhbmRpZGF0ZS50byksXG4gICk7XG5cbiAgaWYgKCFsZWdhbE1vdmUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0NIRVNTSU1BTFNfSUxMRUdBTF9NT1ZFJyk7XG4gIH1cblxuICBjb25zdCBtb3ZlZFBpZWNlID0gYWN0aXZlUGllY2VzKHN0YXRlKS5maW5kKChwaWVjZSkgPT4gcGllY2UuaWQgPT09IGxlZ2FsTW92ZS5waWVjZUlkKTtcbiAgaWYgKCFtb3ZlZFBpZWNlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdDSEVTU0lNQUxTX1BJRUNFX05PVF9GT1VORCcpO1xuICB9XG5cbiAgY29uc3QgcGllY2VzID0gYWN0aXZlUGllY2VzKHN0YXRlKS5tYXAoKHBpZWNlKSA9PiB7XG4gICAgaWYgKHBpZWNlLmlkID09PSBsZWdhbE1vdmUucGllY2VJZCkge1xuICAgICAgcmV0dXJuIHsgLi4ucGllY2UsIHBvc2l0aW9uOiB7IC4uLmxlZ2FsTW92ZS50byB9IH07XG4gICAgfVxuICAgIGlmIChwaWVjZS5pZCA9PT0gbGVnYWxNb3ZlLmNhcHR1cmVzUGllY2VJZCkge1xuICAgICAgcmV0dXJuIHsgLi4ucGllY2UsIGNhcHR1cmVkOiB0cnVlIH07XG4gICAgfVxuICAgIHJldHVybiBwaWVjZTtcbiAgfSk7XG5cbiAgY29uc3QgcGxheWVycyA9IHtcbiAgICAuLi5zdGF0ZS5wbGF5ZXJzLFxuICAgIFttb3ZlZFBpZWNlLmNvbG9yXToge1xuICAgICAgLi4uc3RhdGUucGxheWVyc1ttb3ZlZFBpZWNlLmNvbG9yXSxcbiAgICAgIGNhcmRzOlxuICAgICAgICBsZWdhbE1vdmUua2luZCA9PT0gJ3Bvd2VyJyAmJiBsZWdhbE1vdmUuYW5pbWFsXG4gICAgICAgICAgPyB7XG4gICAgICAgICAgICAgIC4uLnN0YXRlLnBsYXllcnNbbW92ZWRQaWVjZS5jb2xvcl0uY2FyZHMsXG4gICAgICAgICAgICAgIFtsZWdhbE1vdmUuYW5pbWFsXToge1xuICAgICAgICAgICAgICAgIC4uLnN0YXRlLnBsYXllcnNbbW92ZWRQaWVjZS5jb2xvcl0uY2FyZHNbbGVnYWxNb3ZlLmFuaW1hbF0sXG4gICAgICAgICAgICAgICAgdXNlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICA6IHN0YXRlLnBsYXllcnNbbW92ZWRQaWVjZS5jb2xvcl0uY2FyZHMsXG4gICAgfSxcbiAgfTtcblxuICBjb25zdCBuZXh0U3RhdGUgPSByZWZyZXNoQ2hlc3NpbWFsc1Bvd2VyVW5sb2Nrcyh7XG4gICAgLi4uc3RhdGUsXG4gICAgcGllY2VzLFxuICAgIHBsYXllcnMsXG4gICAgY3VycmVudFR1cm46IG90aGVyQ29sb3IobW92ZWRQaWVjZS5jb2xvciksXG4gICAgbW92ZUNvdW50OiBzdGF0ZS5tb3ZlQ291bnQgKyAxLFxuICAgIGxhc3RNb3ZlOiBsZWdhbE1vdmUsXG4gIH0pO1xuXG4gIGNvbnN0IHByb21vdGVkID0gaXNQcm9tb3Rpb25Sb3cobmV4dFN0YXRlLmJvYXJkU2l6ZSwgbW92ZWRQaWVjZS5jb2xvciwgbGVnYWxNb3ZlLnRvKTtcbiAgY29uc3QgZW5lbXlQaWVjZXMgPSBhY3RpdmVQaWVjZXMobmV4dFN0YXRlKS5maWx0ZXIoXG4gICAgKHBpZWNlKSA9PiBwaWVjZS5jb2xvciAhPT0gbW92ZWRQaWVjZS5jb2xvciAmJiAhcGllY2UuY2FwdHVyZWQsXG4gICk7XG5cbiAgY29uc3QgcmVzb2x2ZWRTdGF0ZSA9XG4gICAgcHJvbW90ZWQgfHwgZW5lbXlQaWVjZXMubGVuZ3RoID09PSAwXG4gICAgICA/IHtcbiAgICAgICAgICAuLi5uZXh0U3RhdGUsXG4gICAgICAgICAgc3RhdHVzOiAnZmluaXNoZWQnIGFzIGNvbnN0LFxuICAgICAgICAgIHdpbm5lcjogbW92ZWRQaWVjZS5jb2xvcixcbiAgICAgICAgICB3aW5uZXJSZWFzb246IHByb21vdGVkID8gKCdwcm9tb3Rpb24nIGFzIGNvbnN0KSA6ICgnZWxpbWluYXRpb24nIGFzIGNvbnN0KSxcbiAgICAgICAgfVxuICAgICAgOiBuZXh0U3RhdGU7XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5yZXNvbHZlZFN0YXRlLFxuICAgIG1vdmVIaXN0b3J5OiBbXG4gICAgICAuLi5lbnN1cmVNb3ZlSGlzdG9yeShzdGF0ZSksXG4gICAgICBjcmVhdGVNb3ZlSGlzdG9yeUVudHJ5KHJlc29sdmVkU3RhdGUsIGxlZ2FsTW92ZSksXG4gICAgXSxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNoZXNzaW1hbHNSZXZpZXdTdGF0ZShcbiAgc3RhdGU6IENoZXNzaW1hbHNHYW1lU3RhdGUsXG4gIGVudHJ5OiBDaGVzc2ltYWxzTW92ZUhpc3RvcnlFbnRyeSxcbik6IENoZXNzaW1hbHNHYW1lU3RhdGUge1xuICBjb25zdCBiYXNlU3RhdGU6IENoZXNzaW1hbHNHYW1lU3RhdGUgPSB7IC4uLnN0YXRlIH07XG4gIGRlbGV0ZSBiYXNlU3RhdGUubGFzdE1vdmU7XG4gIGRlbGV0ZSBiYXNlU3RhdGUud2lubmVyO1xuICBkZWxldGUgYmFzZVN0YXRlLndpbm5lclJlYXNvbjtcbiAgcmV0dXJuIHtcbiAgICAuLi5iYXNlU3RhdGUsXG4gICAgc3RhdHVzOiBlbnRyeS5zdGF0dXMsXG4gICAgY3VycmVudFR1cm46IGVudHJ5LmN1cnJlbnRUdXJuLFxuICAgIHBpZWNlczogY2xvbmVQaWVjZXMoZW50cnkucGllY2VzKSxcbiAgICBtb3ZlQ291bnQ6IGVudHJ5Lm1vdmVOdW1iZXIsXG4gICAgLi4uKGVudHJ5Lndpbm5lciA/IHsgd2lubmVyOiBlbnRyeS53aW5uZXIgfSA6IHt9KSxcbiAgICAuLi4oZW50cnkud2lubmVyUmVhc29uID8geyB3aW5uZXJSZWFzb246IGVudHJ5Lndpbm5lclJlYXNvbiB9IDoge30pLFxuICAgIC4uLihlbnRyeS5tb3ZlID8geyBsYXN0TW92ZTogc2FuaXRpemVNb3ZlKGVudHJ5Lm1vdmUpIH0gOiB7fSksXG4gIH07XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZU1vdmVIaXN0b3J5RW50cnkoXG4gIHN0YXRlOiBDaGVzc2ltYWxzR2FtZVN0YXRlLFxuICBtb3ZlPzogQ2hlc3NpbWFsc01vdmUsXG4pOiBDaGVzc2ltYWxzTW92ZUhpc3RvcnlFbnRyeSB7XG4gIHJldHVybiB7XG4gICAgbW92ZU51bWJlcjogc3RhdGUubW92ZUNvdW50LFxuICAgIHBpZWNlczogY2xvbmVQaWVjZXMoc3RhdGUucGllY2VzKSxcbiAgICBjdXJyZW50VHVybjogc3RhdGUuY3VycmVudFR1cm4sXG4gICAgc3RhdHVzOiBzdGF0ZS5zdGF0dXMsXG4gICAgLi4uKG1vdmUgPyB7IG1vdmU6IHNhbml0aXplTW92ZShtb3ZlKSB9IDoge30pLFxuICAgIC4uLihzdGF0ZS53aW5uZXIgPyB7IHdpbm5lcjogc3RhdGUud2lubmVyIH0gOiB7fSksXG4gICAgLi4uKHN0YXRlLndpbm5lclJlYXNvbiA/IHsgd2lubmVyUmVhc29uOiBzdGF0ZS53aW5uZXJSZWFzb24gfSA6IHt9KSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gZW5zdXJlTW92ZUhpc3Rvcnkoc3RhdGU6IENoZXNzaW1hbHNHYW1lU3RhdGUpOiBDaGVzc2ltYWxzTW92ZUhpc3RvcnlFbnRyeVtdIHtcbiAgaWYgKHN0YXRlLm1vdmVIaXN0b3J5Py5sZW5ndGgpIHJldHVybiBzdGF0ZS5tb3ZlSGlzdG9yeS5tYXAoY2xvbmVNb3ZlSGlzdG9yeUVudHJ5KTtcbiAgcmV0dXJuIFtjcmVhdGVNb3ZlSGlzdG9yeUVudHJ5KHN0YXRlKV07XG59XG5cbmZ1bmN0aW9uIGNsb25lTW92ZUhpc3RvcnlFbnRyeShlbnRyeTogQ2hlc3NpbWFsc01vdmVIaXN0b3J5RW50cnkpOiBDaGVzc2ltYWxzTW92ZUhpc3RvcnlFbnRyeSB7XG4gIHJldHVybiB7XG4gICAgLi4uZW50cnksXG4gICAgcGllY2VzOiBjbG9uZVBpZWNlcyhlbnRyeS5waWVjZXMpLFxuICAgIC4uLihlbnRyeS5tb3ZlID8geyBtb3ZlOiBzYW5pdGl6ZU1vdmUoZW50cnkubW92ZSkgfSA6IHt9KSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gY2xvbmVQaWVjZXMocGllY2VzOiBDaGVzc2ltYWxzUGllY2VbXSk6IENoZXNzaW1hbHNQaWVjZVtdIHtcbiAgcmV0dXJuIHBpZWNlcy5tYXAoKHBpZWNlKSA9PiAoe1xuICAgIC4uLnBpZWNlLFxuICAgIHBvc2l0aW9uOiB7IC4uLnBpZWNlLnBvc2l0aW9uIH0sXG4gIH0pKTtcbn1cblxuZnVuY3Rpb24gc2FuaXRpemVNb3ZlKG1vdmU6IENoZXNzaW1hbHNNb3ZlKTogQ2hlc3NpbWFsc01vdmUge1xuICByZXR1cm4ge1xuICAgIHBpZWNlSWQ6IG1vdmUucGllY2VJZCxcbiAgICBmcm9tOiB7IC4uLm1vdmUuZnJvbSB9LFxuICAgIHRvOiB7IC4uLm1vdmUudG8gfSxcbiAgICBraW5kOiBtb3ZlLmtpbmQsXG4gICAgLi4uKG1vdmUuYW5pbWFsID8geyBhbmltYWw6IG1vdmUuYW5pbWFsIH0gOiB7fSksXG4gICAgLi4uKG1vdmUuY2FwdHVyZXNQaWVjZUlkID8geyBjYXB0dXJlc1BpZWNlSWQ6IG1vdmUuY2FwdHVyZXNQaWVjZUlkIH0gOiB7fSksXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXNpZ25DaGVzc2ltYWxzR2FtZShcbiAgc3RhdGU6IENoZXNzaW1hbHNHYW1lU3RhdGUsXG4gIGNvbG9yOiBDaGVzc2ltYWxzUGxheWVyQ29sb3IsXG4pOiBDaGVzc2ltYWxzR2FtZVN0YXRlIHtcbiAgY29uc3QgcmVzaWduZWRTdGF0ZTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSA9IHtcbiAgICAuLi5zdGF0ZSxcbiAgICBzdGF0dXM6ICdmaW5pc2hlZCcsXG4gICAgd2lubmVyOiBvdGhlckNvbG9yKGNvbG9yKSxcbiAgICB3aW5uZXJSZWFzb246ICdyZXNpZ25hdGlvbicsXG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5yZXNpZ25lZFN0YXRlLFxuICAgIG1vdmVIaXN0b3J5OiBbXG4gICAgICAuLi5lbnN1cmVNb3ZlSGlzdG9yeShzdGF0ZSksXG4gICAgICBjcmVhdGVNb3ZlSGlzdG9yeUVudHJ5KHJlc2lnbmVkU3RhdGUpLFxuICAgIF0sXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwb3NpdGlvbktleShwb3NpdGlvbjogQ2hlc3NpbWFsc1Bvc2l0aW9uKTogc3RyaW5nIHtcbiAgcmV0dXJuIGAke3Bvc2l0aW9uLnJvd306JHtwb3NpdGlvbi5jb2x9YDtcbn1cblxuZnVuY3Rpb24gY3JlYXRlQ2FyZHMoKSB7XG4gIHJldHVybiBBTklNQUxTLnJlZHVjZShcbiAgICAoY2FyZHMsIHR5cGUpID0+ICh7XG4gICAgICAuLi5jYXJkcyxcbiAgICAgIFt0eXBlXTogeyB0eXBlLCB1c2VkOiBmYWxzZSB9LFxuICAgIH0pLFxuICAgIHt9IGFzIFJlY29yZDxDaGVzc2ltYWxzQW5pbWFsVHlwZSwgeyB0eXBlOiBDaGVzc2ltYWxzQW5pbWFsVHlwZTsgdXNlZDogYm9vbGVhbiB9PixcbiAgKTtcbn1cblxuZnVuY3Rpb24gYWN0aXZlUGllY2VzKHN0YXRlOiBDaGVzc2ltYWxzR2FtZVN0YXRlKTogQ2hlc3NpbWFsc1BpZWNlW10ge1xuICByZXR1cm4gc3RhdGUucGllY2VzLmZpbHRlcigocGllY2UpOiBwaWVjZSBpcyBDaGVzc2ltYWxzUGllY2UgPT4gISFwaWVjZSk7XG59XG5cbmZ1bmN0aW9uIGdldEJhc2ljTW92ZXMoc3RhdGU6IENoZXNzaW1hbHNHYW1lU3RhdGUsIHBpZWNlOiBDaGVzc2ltYWxzUGllY2UpOiBDaGVzc2ltYWxzTW92ZVtdIHtcbiAgY29uc3QgZGlyZWN0aW9uID0gcGllY2UuY29sb3IgPT09ICd3aGl0ZScgPyAtMSA6IDE7XG4gIGNvbnN0IG1vdmVzOiBDaGVzc2ltYWxzTW92ZVtdID0gW107XG4gIGNvbnN0IGZvcndhcmQgPSB7IHJvdzogcGllY2UucG9zaXRpb24ucm93ICsgZGlyZWN0aW9uLCBjb2w6IHBpZWNlLnBvc2l0aW9uLmNvbCB9O1xuXG4gIGlmIChpc0luc2lkZUJvYXJkKHN0YXRlLmJvYXJkU2l6ZSwgZm9yd2FyZCkgJiYgIWdldENoZXNzaW1hbHNQaWVjZUF0KHN0YXRlLCBmb3J3YXJkKSkge1xuICAgIG1vdmVzLnB1c2goe1xuICAgICAgcGllY2VJZDogcGllY2UuaWQsXG4gICAgICBmcm9tOiB7IC4uLnBpZWNlLnBvc2l0aW9uIH0sXG4gICAgICB0bzogZm9yd2FyZCxcbiAgICAgIGtpbmQ6ICdiYXNpYycsXG4gICAgfSk7XG4gIH1cblxuICBmb3IgKGNvbnN0IGNvbE9mZnNldCBvZiBbLTEsIDFdKSB7XG4gICAgY29uc3QgdGFyZ2V0ID0geyByb3c6IHBpZWNlLnBvc2l0aW9uLnJvdyArIGRpcmVjdGlvbiwgY29sOiBwaWVjZS5wb3NpdGlvbi5jb2wgKyBjb2xPZmZzZXQgfTtcbiAgICBjb25zdCB0YXJnZXRQaWVjZSA9IGdldENoZXNzaW1hbHNQaWVjZUF0KHN0YXRlLCB0YXJnZXQpO1xuICAgIGlmIChcbiAgICAgIGlzSW5zaWRlQm9hcmQoc3RhdGUuYm9hcmRTaXplLCB0YXJnZXQpICYmXG4gICAgICB0YXJnZXRQaWVjZSAmJlxuICAgICAgdGFyZ2V0UGllY2UuY29sb3IgIT09IHBpZWNlLmNvbG9yICYmXG4gICAgICAhaXNQcm9tb3Rpb25Sb3coc3RhdGUuYm9hcmRTaXplLCBwaWVjZS5jb2xvciwgdGFyZ2V0KVxuICAgICkge1xuICAgICAgbW92ZXMucHVzaCh7XG4gICAgICAgIHBpZWNlSWQ6IHBpZWNlLmlkLFxuICAgICAgICBmcm9tOiB7IC4uLnBpZWNlLnBvc2l0aW9uIH0sXG4gICAgICAgIHRvOiB0YXJnZXQsXG4gICAgICAgIGtpbmQ6ICdiYXNpYycsXG4gICAgICAgIGNhcHR1cmVzUGllY2VJZDogdGFyZ2V0UGllY2UuaWQsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbW92ZXM7XG59XG5cbmZ1bmN0aW9uIGdldFBvd2VyTW92ZXMoXG4gIHN0YXRlOiBDaGVzc2ltYWxzR2FtZVN0YXRlLFxuICBwaWVjZTogQ2hlc3NpbWFsc1BpZWNlLFxuICBhbmltYWw6IENoZXNzaW1hbHNBbmltYWxUeXBlLFxuKTogQ2hlc3NpbWFsc01vdmVbXSB7XG4gIGlmIChhbmltYWwgPT09ICdrYW5nYXJvbycpIHtcbiAgICByZXR1cm4gZ2V0S2FuZ2Fyb29Nb3ZlcyhzdGF0ZSwgcGllY2UpO1xuICB9XG5cbiAgY29uc3QgZGlyZWN0aW9ucyA9IGdldFBvd2VyRGlyZWN0aW9ucyhhbmltYWwpO1xuICBjb25zdCBtb3ZlczogQ2hlc3NpbWFsc01vdmVbXSA9IFtdO1xuXG4gIGZvciAoY29uc3QgZGlyZWN0aW9uIG9mIGRpcmVjdGlvbnMpIHtcbiAgICBmb3IgKGxldCBkaXN0YW5jZSA9IDE7IGRpc3RhbmNlIDwgc3RhdGUuYm9hcmRTaXplOyBkaXN0YW5jZSArPSAxKSB7XG4gICAgICBjb25zdCB0YXJnZXQgPSB7XG4gICAgICAgIHJvdzogcGllY2UucG9zaXRpb24ucm93ICsgZGlyZWN0aW9uLnJvdyAqIGRpc3RhbmNlLFxuICAgICAgICBjb2w6IHBpZWNlLnBvc2l0aW9uLmNvbCArIGRpcmVjdGlvbi5jb2wgKiBkaXN0YW5jZSxcbiAgICAgIH07XG4gICAgICBpZiAoIWlzSW5zaWRlQm9hcmQoc3RhdGUuYm9hcmRTaXplLCB0YXJnZXQpKSBicmVhaztcbiAgICAgIGlmIChpc1Byb21vdGlvblJvdyhzdGF0ZS5ib2FyZFNpemUsIHBpZWNlLmNvbG9yLCB0YXJnZXQpKSBicmVhaztcblxuICAgICAgY29uc3QgdGFyZ2V0UGllY2UgPSBnZXRDaGVzc2ltYWxzUGllY2VBdChzdGF0ZSwgdGFyZ2V0KTtcbiAgICAgIGlmICh0YXJnZXRQaWVjZT8uY29sb3IgPT09IHBpZWNlLmNvbG9yKSBicmVhaztcblxuICAgICAgbW92ZXMucHVzaCh7XG4gICAgICAgIHBpZWNlSWQ6IHBpZWNlLmlkLFxuICAgICAgICBmcm9tOiB7IC4uLnBpZWNlLnBvc2l0aW9uIH0sXG4gICAgICAgIHRvOiB0YXJnZXQsXG4gICAgICAgIGtpbmQ6ICdwb3dlcicsXG4gICAgICAgIGFuaW1hbCxcbiAgICAgICAgLi4uKHRhcmdldFBpZWNlID8geyBjYXB0dXJlc1BpZWNlSWQ6IHRhcmdldFBpZWNlLmlkIH0gOiB7fSksXG4gICAgICB9KTtcblxuICAgICAgaWYgKHRhcmdldFBpZWNlKSBicmVhaztcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbW92ZXM7XG59XG5cbmZ1bmN0aW9uIGdldEthbmdhcm9vTW92ZXMoc3RhdGU6IENoZXNzaW1hbHNHYW1lU3RhdGUsIHBpZWNlOiBDaGVzc2ltYWxzUGllY2UpOiBDaGVzc2ltYWxzTW92ZVtdIHtcbiAgY29uc3QgbW92ZXM6IENoZXNzaW1hbHNNb3ZlW10gPSBbXTtcbiAgY29uc3QganVtcHMgPSBbXG4gICAgeyByb3c6IC0yLCBjb2w6IC0xIH0sXG4gICAgeyByb3c6IC0yLCBjb2w6IDEgfSxcbiAgICB7IHJvdzogLTEsIGNvbDogLTIgfSxcbiAgICB7IHJvdzogLTEsIGNvbDogMiB9LFxuICAgIHsgcm93OiAxLCBjb2w6IC0yIH0sXG4gICAgeyByb3c6IDEsIGNvbDogMiB9LFxuICAgIHsgcm93OiAyLCBjb2w6IC0xIH0sXG4gICAgeyByb3c6IDIsIGNvbDogMSB9LFxuICBdO1xuXG4gIGZvciAoY29uc3QganVtcCBvZiBqdW1wcykge1xuICAgIGNvbnN0IHRhcmdldCA9IHtcbiAgICAgIHJvdzogcGllY2UucG9zaXRpb24ucm93ICsganVtcC5yb3csXG4gICAgICBjb2w6IHBpZWNlLnBvc2l0aW9uLmNvbCArIGp1bXAuY29sLFxuICAgIH07XG4gICAgaWYgKCFpc0luc2lkZUJvYXJkKHN0YXRlLmJvYXJkU2l6ZSwgdGFyZ2V0KSkgY29udGludWU7XG4gICAgaWYgKGlzUHJvbW90aW9uUm93KHN0YXRlLmJvYXJkU2l6ZSwgcGllY2UuY29sb3IsIHRhcmdldCkpIGNvbnRpbnVlO1xuXG4gICAgY29uc3QgdGFyZ2V0UGllY2UgPSBnZXRDaGVzc2ltYWxzUGllY2VBdChzdGF0ZSwgdGFyZ2V0KTtcbiAgICBpZiAodGFyZ2V0UGllY2U/LmNvbG9yID09PSBwaWVjZS5jb2xvcikgY29udGludWU7XG5cbiAgICBtb3Zlcy5wdXNoKHtcbiAgICAgIHBpZWNlSWQ6IHBpZWNlLmlkLFxuICAgICAgZnJvbTogeyAuLi5waWVjZS5wb3NpdGlvbiB9LFxuICAgICAgdG86IHRhcmdldCxcbiAgICAgIGtpbmQ6ICdwb3dlcicsXG4gICAgICBhbmltYWw6ICdrYW5nYXJvbycsXG4gICAgICAuLi4odGFyZ2V0UGllY2UgPyB7IGNhcHR1cmVzUGllY2VJZDogdGFyZ2V0UGllY2UuaWQgfSA6IHt9KSxcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBtb3Zlcztcbn1cblxuZnVuY3Rpb24gc2NvcmVCb3RNb3ZlKFxuICBzdGF0ZTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSxcbiAgbW92ZTogQ2hlc3NpbWFsc01vdmUsXG4gIGRpZmZpY3VsdHk6IENoZXNzaW1hbHNCb3REaWZmaWN1bHR5LFxuICBzdHlsZTogQ2hlc3NpbWFsc0JvdFN0eWxlLFxuICBpbmNsdWRlVGFjdGljYWxQcmVzc3VyZSA9IHRydWUsXG4pOiBudW1iZXIge1xuICBjb25zdCBjb2xvciA9IHN0YXRlLmN1cnJlbnRUdXJuO1xuICBjb25zdCB0YXJnZXRQaWVjZSA9IG1vdmUuY2FwdHVyZXNQaWVjZUlkXG4gICAgPyBhY3RpdmVQaWVjZXMoc3RhdGUpLmZpbmQoKHBpZWNlKSA9PiBwaWVjZS5pZCA9PT0gbW92ZS5jYXB0dXJlc1BpZWNlSWQpXG4gICAgOiB1bmRlZmluZWQ7XG4gIGNvbnN0IGFkdmFuY2VtZW50ID1cbiAgICBjb2xvciA9PT0gJ3doaXRlJyA/IHN0YXRlLmJvYXJkU2l6ZSAtIDEgLSBtb3ZlLnRvLnJvdyA6IG1vdmUudG8ucm93O1xuICBsZXQgc2NvcmUgPSBhZHZhbmNlbWVudCAqIDI0ICogc3R5bGUuYWR2YW5jZW1lbnQ7XG5cbiAgaWYgKG1vdmUua2luZCA9PT0gJ2Jhc2ljJyAmJiBpc1Byb21vdGlvblJvdyhzdGF0ZS5ib2FyZFNpemUsIGNvbG9yLCBtb3ZlLnRvKSkge1xuICAgIHNjb3JlICs9IDEwMDAwO1xuICB9XG4gIGlmICh0YXJnZXRQaWVjZSkge1xuICAgIHNjb3JlICs9IDUyMCAqIHN0eWxlLmNhcHR1cmU7XG4gICAgY29uc3QgdGFyZ2V0QWR2YW5jZW1lbnQgPVxuICAgICAgdGFyZ2V0UGllY2UuY29sb3IgPT09ICd3aGl0ZSdcbiAgICAgICAgPyBzdGF0ZS5ib2FyZFNpemUgLSAxIC0gdGFyZ2V0UGllY2UucG9zaXRpb24ucm93XG4gICAgICAgIDogdGFyZ2V0UGllY2UucG9zaXRpb24ucm93O1xuICAgIHNjb3JlICs9IHRhcmdldEFkdmFuY2VtZW50ICogMTYgKiBzdHlsZS5jYXB0dXJlO1xuICB9XG4gIGlmIChtb3ZlLmtpbmQgPT09ICdwb3dlcicpIHtcbiAgICBzY29yZSArPSAodGFyZ2V0UGllY2UgPyAxMjAgOiBkaWZmaWN1bHR5ID09PSAnaGFyZCcgPyAtNjAgOiAtMzApICogc3R5bGUucG93ZXI7XG4gIH1cbiAgaWYgKG1vdmUuYW5pbWFsID09PSAnbGlvbicpIHNjb3JlIC09IDIwICogc3R5bGUucG93ZXI7XG4gIGlmIChtb3ZlLmFuaW1hbCA9PT0gJ2thbmdhcm9vJykgc2NvcmUgKz0gMTQgKiBzdHlsZS5wb3dlcjtcbiAgaWYgKHdvdWxkVW5sb2NrUG93ZXIoc3RhdGUsIGNvbG9yLCBtb3ZlLnRvKSkgc2NvcmUgKz0gOTAgKiBzdHlsZS51bmxvY2s7XG4gIGlmIChpbmNsdWRlVGFjdGljYWxQcmVzc3VyZSAmJiBzdGF0ZS5ib2FyZFNpemUgPD0gNikge1xuICAgIHNjb3JlICs9IGNvdW50UG93ZXJSZWFjaEFmdGVyTW92ZShzdGF0ZSwgbW92ZSwgY29sb3IpICogKGRpZmZpY3VsdHkgPT09ICdoYXJkJyA/IDggOiA0KSAqIHN0eWxlLm1vYmlsaXR5O1xuICAgIHNjb3JlICs9IGNvdW50UHJvdGVjdGVkVGhyZWF0c0FmdGVyTW92ZShzdGF0ZSwgbW92ZSwgY29sb3IpICogKGRpZmZpY3VsdHkgPT09ICdoYXJkJyA/IDM2IDogMTgpICogc3R5bGUudHJhcDtcbiAgICBzY29yZSArPSBzY29yZUVuZGdhbWVQcmVzc3VyZShzdGF0ZSwgbW92ZSwgY29sb3IpICogc3R5bGUuZW5kZ2FtZTtcbiAgfSBlbHNlIHtcbiAgICBzY29yZSArPSBzY29yZUVuZGdhbWVQcmVzc3VyZShzdGF0ZSwgbW92ZSwgY29sb3IpICogc3R5bGUuZW5kZ2FtZTtcbiAgfVxuICBpZiAoZGlmZmljdWx0eSA9PT0gJ2hhcmQnICYmIGlzU3F1YXJlVnVsbmVyYWJsZUFmdGVyTW92ZShzdGF0ZSwgbW92ZSkpIHtcbiAgICBzY29yZSAtPSAodGFyZ2V0UGllY2UgPyA4MCA6IDE0MCkgKiBzdHlsZS5zYWZldHk7XG4gIH1cbiAgc2NvcmUgKz0gKE1hdGgucmFuZG9tKCkgLSAwLjUpICogc3R5bGUucmFuZG9tbmVzcztcblxuICByZXR1cm4gc2NvcmU7XG59XG5cbmZ1bmN0aW9uIHNjb3JlQm90TW92ZVdpdGhMb29rYWhlYWQoXG4gIHN0YXRlOiBDaGVzc2ltYWxzR2FtZVN0YXRlLFxuICBtb3ZlOiBDaGVzc2ltYWxzTW92ZSxcbiAgZGlmZmljdWx0eTogQ2hlc3NpbWFsc0JvdERpZmZpY3VsdHksXG4gIHN0eWxlOiBDaGVzc2ltYWxzQm90U3R5bGUsXG4pOiBudW1iZXIge1xuICBsZXQgc2NvcmUgPSBzY29yZUJvdE1vdmUoc3RhdGUsIG1vdmUsIGRpZmZpY3VsdHksIHN0eWxlKTtcblxuICB0cnkge1xuICAgIGNvbnN0IGFmdGVyTW92ZSA9IGFwcGx5Q2hlc3NpbWFsc01vdmUoc3RhdGUsIG1vdmUpO1xuICAgIGlmIChhZnRlck1vdmUuc3RhdHVzID09PSAnZmluaXNoZWQnKSByZXR1cm4gc2NvcmUgKyA1MDAwO1xuXG4gICAgY29uc3Qgb3Bwb25lbnRNb3ZlcyA9IGdldENoZXNzaW1hbHNBbGxMZWdhbE1vdmVzKGFmdGVyTW92ZSk7XG4gICAgY29uc3Qgb3Bwb25lbnRJbW1lZGlhdGVXaW4gPSBvcHBvbmVudE1vdmVzLnNvbWUoXG4gICAgICAob3Bwb25lbnRNb3ZlKSA9PlxuICAgICAgICBvcHBvbmVudE1vdmUua2luZCA9PT0gJ2Jhc2ljJyAmJlxuICAgICAgICBpc1Byb21vdGlvblJvdyhhZnRlck1vdmUuYm9hcmRTaXplLCBhZnRlck1vdmUuY3VycmVudFR1cm4sIG9wcG9uZW50TW92ZS50byksXG4gICAgKTtcbiAgICBpZiAob3Bwb25lbnRJbW1lZGlhdGVXaW4pIHtcbiAgICAgIHNjb3JlIC09IChkaWZmaWN1bHR5ID09PSAnZWFzeScgPyAxODAwIDogZGlmZmljdWx0eSA9PT0gJ25vcm1hbCcgPyA1MjAwIDogODAwMCkgKiBzdHlsZS5zYWZldHk7XG4gICAgfVxuXG4gICAgY29uc3QgbW92ZWRQaWVjZSA9IGFmdGVyTW92ZS5waWVjZXMuZmluZCgocGllY2UpID0+IHBpZWNlLmlkID09PSBtb3ZlLnBpZWNlSWQgJiYgIXBpZWNlLmNhcHR1cmVkKTtcbiAgICBpZiAobW92ZWRQaWVjZSkge1xuICAgICAgY29uc3QgY2FuQ2FwdHVyZU1vdmVkUGllY2UgPSBvcHBvbmVudE1vdmVzLnNvbWUoKG9wcG9uZW50TW92ZSkgPT4gb3Bwb25lbnRNb3ZlLmNhcHR1cmVzUGllY2VJZCA9PT0gbW92ZS5waWVjZUlkKTtcbiAgICAgIGlmIChjYW5DYXB0dXJlTW92ZWRQaWVjZSkge1xuICAgICAgICBzY29yZSAtPSAobW92ZS5jYXB0dXJlc1BpZWNlSWQgPyAxODAgOiBkaWZmaWN1bHR5ID09PSAnZWFzeScgPyAxMjAgOiBkaWZmaWN1bHR5ID09PSAnbm9ybWFsJyA/IDM2MCA6IDU2MClcbiAgICAgICAgICAqIHN0eWxlLnNhZmV0eTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgY2VudGVyID0gKGFmdGVyTW92ZS5ib2FyZFNpemUgLSAxKSAvIDI7XG4gICAgICBjb25zdCBjZW50ZXJDb250cm9sID0gTWF0aC5tYXgoMCwgYWZ0ZXJNb3ZlLmJvYXJkU2l6ZSAvIDIgLSBNYXRoLmFicyhtb3ZlZFBpZWNlLnBvc2l0aW9uLmNvbCAtIGNlbnRlcikpO1xuICAgICAgc2NvcmUgKz0gY2VudGVyQ29udHJvbCAqIChkaWZmaWN1bHR5ID09PSAnaGFyZCcgPyAxOCA6IDEwKSAqIHN0eWxlLmNlbnRlcjtcbiAgICB9XG5cbiAgICBjb25zdCBvcHBvbmVudEJlc3RSZXBseSA9IG9wcG9uZW50TW92ZXNcbiAgICAgIC5tYXAoKG9wcG9uZW50TW92ZSkgPT4gc2NvcmVCb3RNb3ZlKGFmdGVyTW92ZSwgb3Bwb25lbnRNb3ZlLCBkaWZmaWN1bHR5LCBzdHlsZSwgZmFsc2UpKVxuICAgICAgLnNvcnQoKGEsIGIpID0+IGIgLSBhKVswXTtcblxuICAgIGlmIChvcHBvbmVudEJlc3RSZXBseSkge1xuICAgICAgY29uc3QgcmVwbHlXZWlnaHQgPSBkaWZmaWN1bHR5ID09PSAnZWFzeScgPyAwLjEyIDogZGlmZmljdWx0eSA9PT0gJ25vcm1hbCcgPyAwLjMyIDogMC40ODtcbiAgICAgIHNjb3JlIC09IG9wcG9uZW50QmVzdFJlcGx5ICogcmVwbHlXZWlnaHQgKiBzdHlsZS5yZXBseTtcbiAgICB9XG4gIH0gY2F0Y2gge1xuICAgIHNjb3JlIC09IDEwMDA7XG4gIH1cblxuICByZXR1cm4gc2NvcmU7XG59XG5cbmZ1bmN0aW9uIGNvdW50UG93ZXJSZWFjaEFmdGVyTW92ZShcbiAgc3RhdGU6IENoZXNzaW1hbHNHYW1lU3RhdGUsXG4gIG1vdmU6IENoZXNzaW1hbHNNb3ZlLFxuICBjb2xvcjogQ2hlc3NpbWFsc1BsYXllckNvbG9yLFxuKTogbnVtYmVyIHtcbiAgdHJ5IHtcbiAgICBjb25zdCBhZnRlck1vdmUgPSBhcHBseUNoZXNzaW1hbHNNb3ZlKHN0YXRlLCBtb3ZlKTtcbiAgICBjb25zdCBldmFsdWF0aW9uU3RhdGUgPSB7IC4uLmFmdGVyTW92ZSwgY3VycmVudFR1cm46IGNvbG9yIH07XG4gICAgcmV0dXJuIGdldENoZXNzaW1hbHNBbGxMZWdhbE1vdmVzKGV2YWx1YXRpb25TdGF0ZSwgY29sb3IpLmZpbHRlcigobmV4dE1vdmUpID0+IG5leHRNb3ZlLmtpbmQgPT09ICdwb3dlcicpLmxlbmd0aDtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIDA7XG4gIH1cbn1cblxuZnVuY3Rpb24gY291bnRQcm90ZWN0ZWRUaHJlYXRzQWZ0ZXJNb3ZlKFxuICBzdGF0ZTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSxcbiAgbW92ZTogQ2hlc3NpbWFsc01vdmUsXG4gIGNvbG9yOiBDaGVzc2ltYWxzUGxheWVyQ29sb3IsXG4pOiBudW1iZXIge1xuICB0cnkge1xuICAgIGNvbnN0IGFmdGVyTW92ZSA9IGFwcGx5Q2hlc3NpbWFsc01vdmUoc3RhdGUsIG1vdmUpO1xuICAgIGNvbnN0IGV2YWx1YXRpb25TdGF0ZSA9IHsgLi4uYWZ0ZXJNb3ZlLCBjdXJyZW50VHVybjogY29sb3IgfTtcbiAgICBjb25zdCBvdXJNb3ZlcyA9IGdldENoZXNzaW1hbHNBbGxMZWdhbE1vdmVzKGV2YWx1YXRpb25TdGF0ZSwgY29sb3IpO1xuICAgIGNvbnN0IGVuZW15UGllY2VzID0gYWN0aXZlUGllY2VzKGFmdGVyTW92ZSkuZmlsdGVyKChwaWVjZSkgPT4gcGllY2UuY29sb3IgIT09IGNvbG9yICYmICFwaWVjZS5jYXB0dXJlZCk7XG4gICAgcmV0dXJuIGVuZW15UGllY2VzLmZpbHRlcigocGllY2UpID0+XG4gICAgICBvdXJNb3Zlcy5zb21lKChuZXh0TW92ZSkgPT4gbmV4dE1vdmUuY2FwdHVyZXNQaWVjZUlkID09PSBwaWVjZS5pZCksXG4gICAgKS5sZW5ndGg7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiAwO1xuICB9XG59XG5cbmZ1bmN0aW9uIHNjb3JlRW5kZ2FtZVByZXNzdXJlKFxuICBzdGF0ZTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSxcbiAgbW92ZTogQ2hlc3NpbWFsc01vdmUsXG4gIGNvbG9yOiBDaGVzc2ltYWxzUGxheWVyQ29sb3IsXG4pOiBudW1iZXIge1xuICBjb25zdCByZW1haW5pbmdFbmVteVBpZWNlcyA9IGFjdGl2ZVBpZWNlcyhzdGF0ZSkuZmlsdGVyKChwaWVjZSkgPT4gcGllY2UuY29sb3IgIT09IGNvbG9yICYmICFwaWVjZS5jYXB0dXJlZCkubGVuZ3RoO1xuICBjb25zdCB1cmdlbmN5ID0gcmVtYWluaW5nRW5lbXlQaWVjZXMgPD0gTWF0aC5tYXgoMiwgTWF0aC5mbG9vcihzdGF0ZS5ib2FyZFNpemUgLyAyKSkgPyAxLjYgOiAxO1xuICBjb25zdCBkaXN0YW5jZVRvUHJvbW90aW9uID1cbiAgICBjb2xvciA9PT0gJ3doaXRlJyA/IG1vdmUudG8ucm93IDogc3RhdGUuYm9hcmRTaXplIC0gMSAtIG1vdmUudG8ucm93O1xuICByZXR1cm4gTWF0aC5tYXgoMCwgc3RhdGUuYm9hcmRTaXplIC0gZGlzdGFuY2VUb1Byb21vdGlvbikgKiAxNCAqIHVyZ2VuY3k7XG59XG5cbmZ1bmN0aW9uIHBpY2tOb2lzeUJvdE1vdmUoXG4gIHNjb3JlZDogQXJyYXk8eyBtb3ZlOiBDaGVzc2ltYWxzTW92ZTsgc2NvcmU6IG51bWJlciB9PixcbiAgc3ByZWFkOiBudW1iZXIsXG4pOiBDaGVzc2ltYWxzTW92ZSB8IHVuZGVmaW5lZCB7XG4gIGlmIChzY29yZWQubGVuZ3RoID09PSAwKSByZXR1cm4gdW5kZWZpbmVkO1xuICBjb25zdCBwb29sU2l6ZSA9IE1hdGgubWF4KDEsIE1hdGguY2VpbChzY29yZWQubGVuZ3RoICogc3ByZWFkKSk7XG4gIGNvbnN0IHBvb2wgPSBzY29yZWQuc2xpY2UoMCwgcG9vbFNpemUpO1xuICBjb25zdCB0b3BTY29yZSA9IHBvb2xbMF0/LnNjb3JlID8/IDA7XG4gIGNvbnN0IHdlaWdodGVkID0gcG9vbC5tYXAoKGl0ZW0sIGluZGV4KSA9PiB7XG4gICAgY29uc3QgcmVsYXRpdmUgPSBNYXRoLm1heCgwLCBpdGVtLnNjb3JlIC0gdG9wU2NvcmUgKyAxMjAwKTtcbiAgICBjb25zdCB3ZWlnaHQgPSBNYXRoLm1heCgxLCByZWxhdGl2ZSAvIDEyMCArIChwb29sLmxlbmd0aCAtIGluZGV4KSAqIDIpO1xuICAgIHJldHVybiB7IC4uLml0ZW0sIHdlaWdodCB9O1xuICB9KTtcbiAgY29uc3QgdG90YWxXZWlnaHQgPSB3ZWlnaHRlZC5yZWR1Y2UoKHRvdGFsLCBpdGVtKSA9PiB0b3RhbCArIGl0ZW0ud2VpZ2h0LCAwKTtcbiAgbGV0IGN1cnNvciA9IE1hdGgucmFuZG9tKCkgKiB0b3RhbFdlaWdodDtcbiAgZm9yIChjb25zdCBpdGVtIG9mIHdlaWdodGVkKSB7XG4gICAgY3Vyc29yIC09IGl0ZW0ud2VpZ2h0O1xuICAgIGlmIChjdXJzb3IgPD0gMCkgcmV0dXJuIGl0ZW0ubW92ZTtcbiAgfVxuICByZXR1cm4gcG9vbFswXT8ubW92ZTtcbn1cblxuZnVuY3Rpb24gZ2V0SW1tZWRpYXRlV2lubmluZ01vdmVzKFxuICBzdGF0ZTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSxcbiAgY29sb3I6IENoZXNzaW1hbHNQbGF5ZXJDb2xvcixcbik6IENoZXNzaW1hbHNNb3ZlW10ge1xuICByZXR1cm4gZ2V0Q2hlc3NpbWFsc0FsbExlZ2FsTW92ZXMoc3RhdGUsIGNvbG9yKS5maWx0ZXIoXG4gICAgKG1vdmUpID0+IG1vdmUua2luZCA9PT0gJ2Jhc2ljJyAmJiBpc1Byb21vdGlvblJvdyhzdGF0ZS5ib2FyZFNpemUsIGNvbG9yLCBtb3ZlLnRvKSxcbiAgKTtcbn1cblxuZnVuY3Rpb24gd291bGRVbmxvY2tQb3dlcihcbiAgc3RhdGU6IENoZXNzaW1hbHNHYW1lU3RhdGUsXG4gIGNvbG9yOiBDaGVzc2ltYWxzUGxheWVyQ29sb3IsXG4gIHBvc2l0aW9uOiBDaGVzc2ltYWxzUG9zaXRpb24sXG4pOiBib29sZWFuIHtcbiAgaWYgKHN0YXRlLnBsYXllcnNbY29sb3JdLnBvd2VyVW5sb2NrZWQpIHJldHVybiBmYWxzZTtcbiAgY29uc3QgY2VudGVyVG9wID0gc3RhdGUuYm9hcmRTaXplIC8gMiAtIDE7XG4gIGNvbnN0IGNlbnRlckJvdHRvbSA9IHN0YXRlLmJvYXJkU2l6ZSAvIDI7XG4gIHJldHVybiBjb2xvciA9PT0gJ3doaXRlJyA/IHBvc2l0aW9uLnJvdyA8PSBjZW50ZXJUb3AgOiBwb3NpdGlvbi5yb3cgPj0gY2VudGVyQm90dG9tO1xufVxuXG5mdW5jdGlvbiBpc1NxdWFyZVZ1bG5lcmFibGVBZnRlck1vdmUoc3RhdGU6IENoZXNzaW1hbHNHYW1lU3RhdGUsIG1vdmU6IENoZXNzaW1hbHNNb3ZlKTogYm9vbGVhbiB7XG4gIHRyeSB7XG4gICAgY29uc3QgYWZ0ZXJNb3ZlID0gYXBwbHlDaGVzc2ltYWxzTW92ZShzdGF0ZSwgbW92ZSk7XG4gICAgaWYgKGFmdGVyTW92ZS5zdGF0dXMgPT09ICdmaW5pc2hlZCcpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gZ2V0Q2hlc3NpbWFsc0FsbExlZ2FsTW92ZXMoYWZ0ZXJNb3ZlKS5zb21lKChlbmVteU1vdmUpID0+XG4gICAgICBzYW1lUG9zaXRpb24oZW5lbXlNb3ZlLnRvLCBtb3ZlLnRvKSAmJiAhIWVuZW15TW92ZS5jYXB0dXJlc1BpZWNlSWQsXG4gICAgKTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbmZ1bmN0aW9uIGdldFBvd2VyRGlyZWN0aW9ucyhhbmltYWw6IENoZXNzaW1hbHNBbmltYWxUeXBlKTogQ2hlc3NpbWFsc1Bvc2l0aW9uW10ge1xuICBpZiAoYW5pbWFsID09PSAnZWFnbGUnKSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIHsgcm93OiAtMSwgY29sOiAtMSB9LFxuICAgICAgeyByb3c6IC0xLCBjb2w6IDEgfSxcbiAgICAgIHsgcm93OiAxLCBjb2w6IC0xIH0sXG4gICAgICB7IHJvdzogMSwgY29sOiAxIH0sXG4gICAgXTtcbiAgfVxuICBpZiAoYW5pbWFsID09PSAnYnVsbCcpIHtcbiAgICByZXR1cm4gW1xuICAgICAgeyByb3c6IC0xLCBjb2w6IDAgfSxcbiAgICAgIHsgcm93OiAxLCBjb2w6IDAgfSxcbiAgICAgIHsgcm93OiAwLCBjb2w6IC0xIH0sXG4gICAgICB7IHJvdzogMCwgY29sOiAxIH0sXG4gICAgXTtcbiAgfVxuICByZXR1cm4gW1xuICAgIHsgcm93OiAtMSwgY29sOiAtMSB9LFxuICAgIHsgcm93OiAtMSwgY29sOiAwIH0sXG4gICAgeyByb3c6IC0xLCBjb2w6IDEgfSxcbiAgICB7IHJvdzogMCwgY29sOiAtMSB9LFxuICAgIHsgcm93OiAwLCBjb2w6IDEgfSxcbiAgICB7IHJvdzogMSwgY29sOiAtMSB9LFxuICAgIHsgcm93OiAxLCBjb2w6IDAgfSxcbiAgICB7IHJvdzogMSwgY29sOiAxIH0sXG4gIF07XG59XG5cbmZ1bmN0aW9uIHJlZnJlc2hDaGVzc2ltYWxzUG93ZXJVbmxvY2tzKHN0YXRlOiBDaGVzc2ltYWxzR2FtZVN0YXRlKTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSB7XG4gIHJldHVybiB7XG4gICAgLi4uc3RhdGUsXG4gICAgcGxheWVyczoge1xuICAgICAgd2hpdGU6IHtcbiAgICAgICAgLi4uc3RhdGUucGxheWVycy53aGl0ZSxcbiAgICAgICAgcG93ZXJVbmxvY2tlZDpcbiAgICAgICAgICBzdGF0ZS5wbGF5ZXJzLndoaXRlLnBvd2VyVW5sb2NrZWQgfHxcbiAgICAgICAgICBoYXNDcm9zc2VkQ2VudGVyKHN0YXRlLCAnd2hpdGUnKSB8fFxuICAgICAgICAgIGhhc0VuZW15RW50ZXJlZEhvbWUoc3RhdGUsICd3aGl0ZScpLFxuICAgICAgfSxcbiAgICAgIGJsYWNrOiB7XG4gICAgICAgIC4uLnN0YXRlLnBsYXllcnMuYmxhY2ssXG4gICAgICAgIHBvd2VyVW5sb2NrZWQ6XG4gICAgICAgICAgc3RhdGUucGxheWVycy5ibGFjay5wb3dlclVubG9ja2VkIHx8XG4gICAgICAgICAgaGFzQ3Jvc3NlZENlbnRlcihzdGF0ZSwgJ2JsYWNrJykgfHxcbiAgICAgICAgICBoYXNFbmVteUVudGVyZWRIb21lKHN0YXRlLCAnYmxhY2snKSxcbiAgICAgIH0sXG4gICAgfSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gaGFzQ3Jvc3NlZENlbnRlcihzdGF0ZTogQ2hlc3NpbWFsc0dhbWVTdGF0ZSwgY29sb3I6IENoZXNzaW1hbHNQbGF5ZXJDb2xvcik6IGJvb2xlYW4ge1xuICBjb25zdCBjZW50ZXJUb3AgPSBzdGF0ZS5ib2FyZFNpemUgLyAyIC0gMTtcbiAgY29uc3QgY2VudGVyQm90dG9tID0gc3RhdGUuYm9hcmRTaXplIC8gMjtcbiAgcmV0dXJuIGFjdGl2ZVBpZWNlcyhzdGF0ZSkuc29tZSgocGllY2UpID0+IHtcbiAgICBpZiAocGllY2UuY29sb3IgIT09IGNvbG9yIHx8IHBpZWNlLmNhcHR1cmVkKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIGNvbG9yID09PSAnd2hpdGUnID8gcGllY2UucG9zaXRpb24ucm93IDw9IGNlbnRlclRvcCA6IHBpZWNlLnBvc2l0aW9uLnJvdyA+PSBjZW50ZXJCb3R0b207XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBoYXNFbmVteUVudGVyZWRIb21lKHN0YXRlOiBDaGVzc2ltYWxzR2FtZVN0YXRlLCBjb2xvcjogQ2hlc3NpbWFsc1BsYXllckNvbG9yKTogYm9vbGVhbiB7XG4gIGNvbnN0IGNlbnRlclRvcCA9IHN0YXRlLmJvYXJkU2l6ZSAvIDIgLSAxO1xuICBjb25zdCBjZW50ZXJCb3R0b20gPSBzdGF0ZS5ib2FyZFNpemUgLyAyO1xuICBjb25zdCBlbmVteSA9IG90aGVyQ29sb3IoY29sb3IpO1xuICByZXR1cm4gYWN0aXZlUGllY2VzKHN0YXRlKS5zb21lKChwaWVjZSkgPT4ge1xuICAgIGlmIChwaWVjZS5jb2xvciAhPT0gZW5lbXkgfHwgcGllY2UuY2FwdHVyZWQpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gY29sb3IgPT09ICd3aGl0ZScgPyBwaWVjZS5wb3NpdGlvbi5yb3cgPj0gY2VudGVyQm90dG9tIDogcGllY2UucG9zaXRpb24ucm93IDw9IGNlbnRlclRvcDtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGlzUHJvbW90aW9uUm93KFxuICBib2FyZFNpemU6IENoZXNzaW1hbHNCb2FyZFNpemUsXG4gIGNvbG9yOiBDaGVzc2ltYWxzUGxheWVyQ29sb3IsXG4gIHBvc2l0aW9uOiBDaGVzc2ltYWxzUG9zaXRpb24sXG4pOiBib29sZWFuIHtcbiAgcmV0dXJuIGNvbG9yID09PSAnd2hpdGUnID8gcG9zaXRpb24ucm93ID09PSAwIDogcG9zaXRpb24ucm93ID09PSBib2FyZFNpemUgLSAxO1xufVxuXG5mdW5jdGlvbiBpc0luc2lkZUJvYXJkKGJvYXJkU2l6ZTogQ2hlc3NpbWFsc0JvYXJkU2l6ZSwgcG9zaXRpb246IENoZXNzaW1hbHNQb3NpdGlvbik6IGJvb2xlYW4ge1xuICByZXR1cm4gKFxuICAgIHBvc2l0aW9uLnJvdyA+PSAwICYmIHBvc2l0aW9uLnJvdyA8IGJvYXJkU2l6ZSAmJiBwb3NpdGlvbi5jb2wgPj0gMCAmJiBwb3NpdGlvbi5jb2wgPCBib2FyZFNpemVcbiAgKTtcbn1cblxuZnVuY3Rpb24gc2FtZVBvc2l0aW9uKGE6IENoZXNzaW1hbHNQb3NpdGlvbiwgYjogQ2hlc3NpbWFsc1Bvc2l0aW9uKTogYm9vbGVhbiB7XG4gIHJldHVybiBhLnJvdyA9PT0gYi5yb3cgJiYgYS5jb2wgPT09IGIuY29sO1xufVxuXG5mdW5jdGlvbiBvdGhlckNvbG9yKGNvbG9yOiBDaGVzc2ltYWxzUGxheWVyQ29sb3IpOiBDaGVzc2ltYWxzUGxheWVyQ29sb3Ige1xuICByZXR1cm4gY29sb3IgPT09ICd3aGl0ZScgPyAnYmxhY2snIDogJ3doaXRlJztcbn1cblxuZnVuY3Rpb24gY3JlYXRlTG9jYWxJZCgpOiBzdHJpbmcge1xuICByZXR1cm4gYGxvY2FsLSR7RGF0ZS5ub3coKS50b1N0cmluZygzNil9LSR7TWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc2xpY2UoMiwgOCl9YDtcbn1cbiJdfQ==
|