@angular/animations 19.0.0-next.1 → 19.0.0-next.10
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/LICENSE +21 -0
- package/browser/index.d.ts +1 -1
- package/browser/testing/index.d.ts +1 -1
- package/fesm2022/animations.mjs +7 -7
- package/fesm2022/animations.mjs.map +1 -1
- package/fesm2022/browser/testing.mjs +1 -1
- package/fesm2022/browser/testing.mjs.map +1 -1
- package/fesm2022/browser.mjs +4 -4
- package/fesm2022/browser.mjs.map +1 -1
- package/index.d.ts +1 -1
- package/package.json +2 -8
- package/esm2022/animations.mjs +0 -5
- package/esm2022/browser/browser.mjs +0 -5
- package/esm2022/browser/index.mjs +0 -13
- package/esm2022/browser/public_api.mjs +0 -14
- package/esm2022/browser/src/browser.mjs +0 -15
- package/esm2022/browser/src/create_engine.mjs +0 -20
- package/esm2022/browser/src/dsl/animation.mjs +0 -37
- package/esm2022/browser/src/dsl/animation_ast.mjs +0 -3
- package/esm2022/browser/src/dsl/animation_ast_builder.mjs +0 -514
- package/esm2022/browser/src/dsl/animation_dsl_visitor.mjs +0 -2
- package/esm2022/browser/src/dsl/animation_timeline_builder.mjs +0 -780
- package/esm2022/browser/src/dsl/animation_timeline_instruction.mjs +0 -15
- package/esm2022/browser/src/dsl/animation_transition_expr.mjs +0 -82
- package/esm2022/browser/src/dsl/animation_transition_factory.mjs +0 -152
- package/esm2022/browser/src/dsl/animation_transition_instruction.mjs +0 -26
- package/esm2022/browser/src/dsl/animation_trigger.mjs +0 -65
- package/esm2022/browser/src/dsl/element_instruction_map.mjs +0 -22
- package/esm2022/browser/src/dsl/style_normalization/animation_style_normalizer.mjs +0 -18
- package/esm2022/browser/src/dsl/style_normalization/web_animations_style_normalizer.mjs +0 -63
- package/esm2022/browser/src/error_helpers.mjs +0 -145
- package/esm2022/browser/src/private_export.mjs +0 -19
- package/esm2022/browser/src/render/animation_driver.mjs +0 -71
- package/esm2022/browser/src/render/animation_engine_instruction.mjs +0 -2
- package/esm2022/browser/src/render/animation_engine_next.mjs +0 -83
- package/esm2022/browser/src/render/animation_renderer.mjs +0 -99
- package/esm2022/browser/src/render/renderer.mjs +0 -165
- package/esm2022/browser/src/render/shared.mjs +0 -162
- package/esm2022/browser/src/render/special_cased_styles.mjs +0 -97
- package/esm2022/browser/src/render/timeline_animation_engine.mjs +0 -140
- package/esm2022/browser/src/render/transition_animation_engine.mjs +0 -1516
- package/esm2022/browser/src/render/web_animations/animatable_props_set.mjs +0 -214
- package/esm2022/browser/src/render/web_animations/web_animations_driver.mjs +0 -54
- package/esm2022/browser/src/render/web_animations/web_animations_player.mjs +0 -177
- package/esm2022/browser/src/util.mjs +0 -217
- package/esm2022/browser/src/warning_helpers.mjs +0 -36
- package/esm2022/browser/testing/index.mjs +0 -13
- package/esm2022/browser/testing/public_api.mjs +0 -14
- package/esm2022/browser/testing/src/mock_animation_driver.mjs +0 -117
- package/esm2022/browser/testing/src/testing.mjs +0 -9
- package/esm2022/browser/testing/testing.mjs +0 -5
- package/esm2022/index.mjs +0 -13
- package/esm2022/public_api.mjs +0 -14
- package/esm2022/src/animation_builder.mjs +0 -200
- package/esm2022/src/animation_event.mjs +0 -9
- package/esm2022/src/animation_metadata.mjs +0 -934
- package/esm2022/src/animations.mjs +0 -17
- package/esm2022/src/errors.mjs +0 -9
- package/esm2022/src/players/animation_group_player.mjs +0 -147
- package/esm2022/src/players/animation_player.mjs +0 -104
- package/esm2022/src/private_export.mjs +0 -11
- package/esm2022/src/version.mjs +0 -15
@@ -1,140 +0,0 @@
|
|
1
|
-
/**
|
2
|
-
* @license
|
3
|
-
* Copyright Google LLC All Rights Reserved.
|
4
|
-
*
|
5
|
-
* Use of this source code is governed by an MIT-style license that can be
|
6
|
-
* found in the LICENSE file at https://angular.io/license
|
7
|
-
*/
|
8
|
-
import { AUTO_STYLE, } from '@angular/animations';
|
9
|
-
import { buildAnimationAst } from '../dsl/animation_ast_builder';
|
10
|
-
import { buildAnimationTimelines } from '../dsl/animation_timeline_builder';
|
11
|
-
import { ElementInstructionMap } from '../dsl/element_instruction_map';
|
12
|
-
import { createAnimationFailed, missingOrDestroyedAnimation, missingPlayer, registerFailed, } from '../error_helpers';
|
13
|
-
import { ENTER_CLASSNAME, LEAVE_CLASSNAME } from '../util';
|
14
|
-
import { warnRegister } from '../warning_helpers';
|
15
|
-
import { getOrSetDefaultValue, listenOnPlayer, makeAnimationEvent, normalizeKeyframes, optimizeGroupPlayer, } from './shared';
|
16
|
-
const EMPTY_INSTRUCTION_MAP = new ElementInstructionMap();
|
17
|
-
export class TimelineAnimationEngine {
|
18
|
-
constructor(bodyNode, _driver, _normalizer) {
|
19
|
-
this.bodyNode = bodyNode;
|
20
|
-
this._driver = _driver;
|
21
|
-
this._normalizer = _normalizer;
|
22
|
-
this._animations = new Map();
|
23
|
-
this._playersById = new Map();
|
24
|
-
this.players = [];
|
25
|
-
}
|
26
|
-
register(id, metadata) {
|
27
|
-
const errors = [];
|
28
|
-
const warnings = [];
|
29
|
-
const ast = buildAnimationAst(this._driver, metadata, errors, warnings);
|
30
|
-
if (errors.length) {
|
31
|
-
throw registerFailed(errors);
|
32
|
-
}
|
33
|
-
else {
|
34
|
-
if (warnings.length) {
|
35
|
-
warnRegister(warnings);
|
36
|
-
}
|
37
|
-
this._animations.set(id, ast);
|
38
|
-
}
|
39
|
-
}
|
40
|
-
_buildPlayer(i, preStyles, postStyles) {
|
41
|
-
const element = i.element;
|
42
|
-
const keyframes = normalizeKeyframes(this._normalizer, i.keyframes, preStyles, postStyles);
|
43
|
-
return this._driver.animate(element, keyframes, i.duration, i.delay, i.easing, [], true);
|
44
|
-
}
|
45
|
-
create(id, element, options = {}) {
|
46
|
-
const errors = [];
|
47
|
-
const ast = this._animations.get(id);
|
48
|
-
let instructions;
|
49
|
-
const autoStylesMap = new Map();
|
50
|
-
if (ast) {
|
51
|
-
instructions = buildAnimationTimelines(this._driver, element, ast, ENTER_CLASSNAME, LEAVE_CLASSNAME, new Map(), new Map(), options, EMPTY_INSTRUCTION_MAP, errors);
|
52
|
-
instructions.forEach((inst) => {
|
53
|
-
const styles = getOrSetDefaultValue(autoStylesMap, inst.element, new Map());
|
54
|
-
inst.postStyleProps.forEach((prop) => styles.set(prop, null));
|
55
|
-
});
|
56
|
-
}
|
57
|
-
else {
|
58
|
-
errors.push(missingOrDestroyedAnimation());
|
59
|
-
instructions = [];
|
60
|
-
}
|
61
|
-
if (errors.length) {
|
62
|
-
throw createAnimationFailed(errors);
|
63
|
-
}
|
64
|
-
autoStylesMap.forEach((styles, element) => {
|
65
|
-
styles.forEach((_, prop) => {
|
66
|
-
styles.set(prop, this._driver.computeStyle(element, prop, AUTO_STYLE));
|
67
|
-
});
|
68
|
-
});
|
69
|
-
const players = instructions.map((i) => {
|
70
|
-
const styles = autoStylesMap.get(i.element);
|
71
|
-
return this._buildPlayer(i, new Map(), styles);
|
72
|
-
});
|
73
|
-
const player = optimizeGroupPlayer(players);
|
74
|
-
this._playersById.set(id, player);
|
75
|
-
player.onDestroy(() => this.destroy(id));
|
76
|
-
this.players.push(player);
|
77
|
-
return player;
|
78
|
-
}
|
79
|
-
destroy(id) {
|
80
|
-
const player = this._getPlayer(id);
|
81
|
-
player.destroy();
|
82
|
-
this._playersById.delete(id);
|
83
|
-
const index = this.players.indexOf(player);
|
84
|
-
if (index >= 0) {
|
85
|
-
this.players.splice(index, 1);
|
86
|
-
}
|
87
|
-
}
|
88
|
-
_getPlayer(id) {
|
89
|
-
const player = this._playersById.get(id);
|
90
|
-
if (!player) {
|
91
|
-
throw missingPlayer(id);
|
92
|
-
}
|
93
|
-
return player;
|
94
|
-
}
|
95
|
-
listen(id, element, eventName, callback) {
|
96
|
-
// triggerName, fromState, toState are all ignored for timeline animations
|
97
|
-
const baseEvent = makeAnimationEvent(element, '', '', '');
|
98
|
-
listenOnPlayer(this._getPlayer(id), eventName, baseEvent, callback);
|
99
|
-
return () => { };
|
100
|
-
}
|
101
|
-
command(id, element, command, args) {
|
102
|
-
if (command == 'register') {
|
103
|
-
this.register(id, args[0]);
|
104
|
-
return;
|
105
|
-
}
|
106
|
-
if (command == 'create') {
|
107
|
-
const options = (args[0] || {});
|
108
|
-
this.create(id, element, options);
|
109
|
-
return;
|
110
|
-
}
|
111
|
-
const player = this._getPlayer(id);
|
112
|
-
switch (command) {
|
113
|
-
case 'play':
|
114
|
-
player.play();
|
115
|
-
break;
|
116
|
-
case 'pause':
|
117
|
-
player.pause();
|
118
|
-
break;
|
119
|
-
case 'reset':
|
120
|
-
player.reset();
|
121
|
-
break;
|
122
|
-
case 'restart':
|
123
|
-
player.restart();
|
124
|
-
break;
|
125
|
-
case 'finish':
|
126
|
-
player.finish();
|
127
|
-
break;
|
128
|
-
case 'init':
|
129
|
-
player.init();
|
130
|
-
break;
|
131
|
-
case 'setPosition':
|
132
|
-
player.setPosition(parseFloat(args[0]));
|
133
|
-
break;
|
134
|
-
case 'destroy':
|
135
|
-
this.destroy(id);
|
136
|
-
break;
|
137
|
-
}
|
138
|
-
}
|
139
|
-
}
|
140
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZWxpbmVfYW5pbWF0aW9uX2VuZ2luZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuaW1hdGlvbnMvYnJvd3Nlci9zcmMvcmVuZGVyL3RpbWVsaW5lX2FuaW1hdGlvbl9lbmdpbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBQ0gsT0FBTyxFQUtMLFVBQVUsR0FFWCxNQUFNLHFCQUFxQixDQUFDO0FBRzdCLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQy9ELE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBRTFFLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBRXJFLE9BQU8sRUFDTCxxQkFBcUIsRUFDckIsMkJBQTJCLEVBQzNCLGFBQWEsRUFDYixjQUFjLEdBQ2YsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQUMsZUFBZSxFQUFFLGVBQWUsRUFBQyxNQUFNLFNBQVMsQ0FBQztBQUN6RCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFHaEQsT0FBTyxFQUNMLG9CQUFvQixFQUNwQixjQUFjLEVBQ2Qsa0JBQWtCLEVBQ2xCLGtCQUFrQixFQUNsQixtQkFBbUIsR0FDcEIsTUFBTSxVQUFVLENBQUM7QUFFbEIsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLHFCQUFxQixFQUFFLENBQUM7QUFFMUQsTUFBTSxPQUFPLHVCQUF1QjtJQUtsQyxZQUNTLFFBQWEsRUFDWixPQUF3QixFQUN4QixXQUFxQztRQUZ0QyxhQUFRLEdBQVIsUUFBUSxDQUFLO1FBQ1osWUFBTyxHQUFQLE9BQU8sQ0FBaUI7UUFDeEIsZ0JBQVcsR0FBWCxXQUFXLENBQTBCO1FBUHZDLGdCQUFXLEdBQUcsSUFBSSxHQUFHLEVBQXNDLENBQUM7UUFDNUQsaUJBQVksR0FBRyxJQUFJ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UUFDVCxDQUFDO1FBRUQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNuQyxRQUFRLE9BQU8sRUFBRSxDQUFDO1lBQ2hCLEtBQUssTUFBTTtnQkFDVCxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ2QsTUFBTTtZQUNSLEtBQUssT0FBTztnQkFDVixNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ2YsTUFBTTtZQUNSLEtBQUssT0FBTztnQkFDVixNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ2YsTUFBTTtZQUNSLEtBQUssU0FBUztnQkFDWixNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ2pCLE1BQU07WUFDUixLQUFLLFFBQVE7Z0JBQ1gsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUNoQixNQUFNO1lBQ1IsS0FBSyxNQUFNO2dCQUNULE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDZCxNQUFNO1lBQ1IsS0FBSyxhQUFhO2dCQUNoQixNQUFNLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFXLENBQUMsQ0FBQyxDQUFDO2dCQUNsRCxNQUFNO1lBQ1IsS0FBSyxTQUFTO2dCQUNaLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ2pCLE1BQU07UUFDVixDQUFDO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5pbXBvcnQge1xuICBBbmltYXRpb25NZXRhZGF0YSxcbiAgQW5pbWF0aW9uTWV0YWRhdGFUeXBlLFxuICBBbmltYXRpb25PcHRpb25zLFxuICBBbmltYXRpb25QbGF5ZXIsXG4gIEFVVE9fU1RZTEUsXG4gIMm1U3R5bGVEYXRhTWFwLFxufSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcblxuaW1wb3J0IHtBc3R9IGZyb20gJy4uL2RzbC9hbmltYXRpb25fYXN0JztcbmltcG9ydCB7YnVpbGRBbmltYXRpb25Bc3R9IGZyb20gJy4uL2RzbC9hbmltYXRpb25fYXN0X2J1aWxkZXInO1xuaW1wb3J0IHtidWlsZEFuaW1hdGlvblRpbWVsaW5lc30gZnJvbSAnLi4vZHNsL2FuaW1hdGlvbl90aW1lbGluZV9idWlsZGVyJztcbmltcG9ydCB7QW5pbWF0aW9uVGltZWxpbmVJbnN0cnVjdGlvbn0gZnJvbSAnLi4vZHNsL2FuaW1hdGlvbl90aW1lbGluZV9pbnN0cnVjdGlvbic7XG5pbXBvcnQge0VsZW1lbnRJbnN0cnVjdGlvbk1hcH0gZnJvbSAnLi4vZHNsL2VsZW1lbnRfaW5zdHJ1Y3Rpb25fbWFwJztcbmltcG9ydCB7QW5pbWF0aW9uU3R5bGVOb3JtYWxpemVyfSBmcm9tICcuLi9kc2wvc3R5bGVfbm9ybWFsaXphdGlvbi9hbmltYXRpb25fc3R5bGVfbm9ybWFsaXplcic7XG5pbXBvcnQge1xuICBjcmVhdGVBbmltYXRpb25GYWlsZWQsXG4gIG1pc3NpbmdPckRlc3Ryb3llZEFuaW1hdGlvbixcbiAgbWlzc2luZ1BsYXllcixcbiAgcmVnaXN0ZXJGYWlsZWQsXG59IGZyb20gJy4uL2Vycm9yX2hlbHBlcnMnO1xuaW1wb3J0IHtFTlRFUl9DTEFTU05BTUUsIExFQVZFX0NMQVNTTkFNRX0gZnJvbSAnLi4vdXRpbCc7XG5pbXBvcnQge3dhcm5SZWdpc3Rlcn0gZnJvbSAnLi4vd2FybmluZ19oZWxwZXJzJztcblxuaW1wb3J0IHtBbmltYXRpb25Ecml2ZXJ9IGZyb20gJy4vYW5pbWF0aW9uX2RyaXZlcic7XG5pbXBvcnQge1xuICBnZXRPclNldERlZmF1bHRWYWx1ZSxcbiAgbGlzdGVuT25QbGF5ZXIsXG4gIG1ha2VBbmltYXRpb25FdmVudCxcbiAgbm9ybWFsaXplS2V5ZnJhbWVzLFxuICBvcHRpbWl6ZUdyb3VwUGxheWVyLFxufSBmcm9tICcuL3NoYXJlZCc7XG5cbmNvbnN0IEVNUFRZX0lOU1RSVUNUSU9OX01BUCA9IG5ldyBFbGVtZW50SW5zdHJ1Y3Rpb25NYXAoKTtcblxuZXhwb3J0IGNsYXNzIFRpbWVsaW5lQW5pbWF0aW9uRW5naW5lIHtcbiAgcHJpdmF0ZSBfYW5pbWF0aW9ucyA9IG5ldyBNYXA8c3RyaW5nLCBBc3Q8QW5pbWF0aW9uTWV0YWRhdGFUeXBlPj4oKTtcbiAgcHJpdmF0ZSBfcGxheWVyc0J5SWQgPSBuZXcgTWFwPHN0cmluZywgQW5pbWF0aW9uUGxheWVyPigpO1xuICBwdWJsaWMgcGxheWVyczogQW5pbWF0aW9uUGxheWVyW10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgYm9keU5vZGU6IGFueSxcbiAgICBwcml2YXRlIF9kcml2ZXI6IEFuaW1hdGlvbkRyaXZlcixcbiAgICBwcml2YXRlIF9ub3JtYWxpemVyOiBBbmltYXRpb25TdHlsZU5vcm1hbGl6ZXIsXG4gICkge31cblxuICByZWdpc3RlcihpZDogc3RyaW5nLCBtZXRhZGF0YTogQW5pbWF0aW9uTWV0YWRhdGEgfCBBbmltYXRpb25NZXRhZGF0YVtdKSB7XG4gICAgY29uc3QgZXJyb3JzOiBFcnJvcltdID0gW107XG4gICAgY29uc3Qgd2FybmluZ3M6IHN0cmluZ1tdID0gW107XG4gICAgY29uc3QgYXN0ID0gYnVpbGRBbmltYXRpb25Bc3QodGhpcy5fZHJpdmVyLCBtZXRhZGF0YSwgZXJyb3JzLCB3YXJuaW5ncyk7XG4gICAgaWYgKGVycm9ycy5sZW5ndGgpIHtcbiAgICAgIHRocm93IHJlZ2lzdGVyRmFpbGVkKGVycm9ycyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh3YXJuaW5ncy5sZW5ndGgpIHtcbiAgICAgICAgd2FyblJlZ2lzdGVyKHdhcm5pbmdzKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuX2FuaW1hdGlvbnMuc2V0KGlkLCBhc3QpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2J1aWxkUGxheWVyKFxuICAgIGk6IEFuaW1hdGlvblRpbWVsaW5lSW5zdHJ1Y3Rpb24sXG4gICAgcHJlU3R5bGVzOiDJtVN0eWxlRGF0YU1hcCxcbiAgICBwb3N0U3R5bGVzPzogybVTdHlsZURhdGFNYXAsXG4gICk6IEFuaW1hdGlvblBsYXllciB7XG4gICAgY29uc3QgZWxlbWVudCA9IGkuZWxlbWVudDtcbiAgICBjb25zdCBrZXlmcmFtZXMgPSBub3JtYWxpemVLZXlmcmFtZXModGhpcy5fbm9ybWFsaXplciwgaS5rZXlmcmFtZXMsIHByZVN0eWxlcywgcG9zdFN0eWxlcyk7XG4gICAgcmV0dXJuIHRoaXMuX2RyaXZlci5hbmltYXRlKGVsZW1lbnQsIGtleWZyYW1lcywgaS5kdXJhdGlvbiwgaS5kZWxheSwgaS5lYXNpbmcsIFtdLCB0cnVlKTtcbiAgfVxuXG4gIGNyZWF0ZShpZDogc3RyaW5nLCBlbGVtZW50OiBhbnksIG9wdGlvbnM6IEFuaW1hdGlvbk9wdGlvbnMgPSB7fSk6IEFuaW1hdGlvblBsYXllciB7XG4gICAgY29uc3QgZXJyb3JzOiBFcnJvcltdID0gW107XG4gICAgY29uc3QgYXN0ID0gdGhpcy5fYW5pbWF0aW9ucy5nZXQoaWQpO1xuICAgIGxldCBpbnN0cnVjdGlvbnM6IEFuaW1hdGlvblRpbWVsaW5lSW5zdHJ1Y3Rpb25bXTtcblxuICAgIGNvbnN0IGF1dG9TdHlsZXNNYXAgPSBuZXcgTWFwPGFueSwgybVTdHlsZURhdGFNYXA+KCk7XG5cbiAgICBpZiAoYXN0KSB7XG4gICAgICBpbnN0cnVjdGlvbnMgPSBidWlsZEFuaW1hdGlvblRpbWVsaW5lcyhcbiAgICAgICAgdGhpcy5fZHJpdmVyLFxuICAgICAgICBlbGVtZW50LFxuICAgICAgICBhc3QsXG4gICAgICAgIEVOVEVSX0NMQVNTTkFNRSxcbiAgICAgICAgTEVBVkVfQ0xBU1NOQU1FLFxuICAgICAgICBuZXcgTWFwKCksXG4gICAgICAgIG5ldyBNYXAoKSxcbiAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgRU1QVFlfSU5TVFJVQ1RJT05fTUFQLFxuICAgICAgICBlcnJvcnMsXG4gICAgICApO1xuICAgICAgaW5zdHJ1Y3Rpb25zLmZvckVhY2goKGluc3QpID0+IHtcbiAgICAgICAgY29uc3Qgc3R5bGVzID0gZ2V0T3JTZXREZWZhdWx0VmFsdWUoXG4gICAgICAgICAgYXV0b1N0eWxlc01hcCxcbiAgICAgICAgICBpbnN0LmVsZW1lbnQsXG4gICAgICAgICAgbmV3IE1hcDxzdHJpbmcsIHN0cmluZyB8IG51bWJlciB8IG51bGw+KCksXG4gICAgICAgICk7XG4gICAgICAgIGluc3QucG9zdFN0eWxlUHJvcHMuZm9yRWFjaCgocHJvcCkgPT4gc3R5bGVzLnNldChwcm9wLCBudWxsKSk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgZXJyb3JzLnB1c2gobWlzc2luZ09yRGVzdHJveWVkQW5pbWF0aW9uKCkpO1xuICAgICAgaW5zdHJ1Y3Rpb25zID0gW107XG4gICAgfVxuXG4gICAgaWYgKGVycm9ycy5sZW5ndGgpIHtcbiAgICAgIHRocm93IGNyZWF0ZUFuaW1hdGlvbkZhaWxlZChlcnJvcnMpO1xuICAgIH1cblxuICAgIGF1dG9TdHlsZXNNYXAuZm9yRWFjaCgoc3R5bGVzLCBlbGVtZW50KSA9PiB7XG4gICAgICBzdHlsZXMuZm9yRWFjaCgoXywgcHJvcCkgPT4ge1xuICAgICAgICBzdHlsZXMuc2V0KHByb3AsIHRoaXMuX2RyaXZlci5jb21wdXRlU3R5bGUoZWxlbWVudCwgcHJvcCwgQVVUT19TVFlMRSkpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBjb25zdCBwbGF5ZXJzID0gaW5zdHJ1Y3Rpb25zLm1hcCgoaSkgPT4ge1xuICAgICAgY29uc3Qgc3R5bGVzID0gYXV0b1N0eWxlc01hcC5nZXQoaS5lbGVtZW50KTtcbiAgICAgIHJldHVybiB0aGlzLl9idWlsZFBsYXllcihpLCBuZXcgTWFwKCksIHN0eWxlcyk7XG4gICAgfSk7XG4gICAgY29uc3QgcGxheWVyID0gb3B0aW1pemVHcm91cFBsYXllcihwbGF5ZXJzKTtcbiAgICB0aGlzLl9wbGF5ZXJzQnlJZC5zZXQoaWQsIHBsYXllcik7XG4gICAgcGxheWVyLm9uRGVzdHJveSgoKSA9PiB0aGlzLmRlc3Ryb3koaWQpKTtcblxuICAgIHRoaXMucGxheWVycy5wdXNoKHBsYXllcik7XG4gICAgcmV0dXJuIHBsYXllcjtcbiAgfVxuXG4gIGRlc3Ryb3koaWQ6IHN0cmluZykge1xuICAgIGNvbnN0IHBsYXllciA9IHRoaXMuX2dldFBsYXllcihpZCk7XG4gICAgcGxheWVyLmRlc3Ryb3koKTtcbiAgICB0aGlzLl9wbGF5ZXJzQnlJZC5kZWxldGUoaWQpO1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5wbGF5ZXJzLmluZGV4T2YocGxheWVyKTtcbiAgICBpZiAoaW5kZXggPj0gMCkge1xuICAgICAgdGhpcy5wbGF5ZXJzLnNwbGljZShpbmRleCwgMSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0UGxheWVyKGlkOiBzdHJpbmcpOiBBbmltYXRpb25QbGF5ZXIge1xuICAgIGNvbnN0IHBsYXllciA9IHRoaXMuX3BsYXllcnNCeUlkLmdldChpZCk7XG4gICAgaWYgKCFwbGF5ZXIpIHtcbiAgICAgIHRocm93IG1pc3NpbmdQbGF5ZXIoaWQpO1xuICAgIH1cbiAgICByZXR1cm4gcGxheWVyO1xuICB9XG5cbiAgbGlzdGVuKFxuICAgIGlkOiBzdHJpbmcsXG4gICAgZWxlbWVudDogc3RyaW5nLFxuICAgIGV2ZW50TmFtZTogc3RyaW5nLFxuICAgIGNhbGxiYWNrOiAoZXZlbnQ6IGFueSkgPT4gYW55LFxuICApOiAoKSA9PiB2b2lkIHtcbiAgICAvLyB0cmlnZ2VyTmFtZSwgZnJvbVN0YXRlLCB0b1N0YXRlIGFyZSBhbGwgaWdub3JlZCBmb3IgdGltZWxpbmUgYW5pbWF0aW9uc1xuICAgIGNvbnN0IGJhc2VFdmVudCA9IG1ha2VBbmltYXRpb25FdmVudChlbGVtZW50LCAnJywgJycsICcnKTtcbiAgICBsaXN0ZW5PblBsYXllcih0aGlzLl9nZXRQbGF5ZXIoaWQpLCBldmVudE5hbWUsIGJhc2VFdmVudCwgY2FsbGJhY2spO1xuICAgIHJldHVybiAoKSA9PiB7fTtcbiAgfVxuXG4gIGNvbW1hbmQoaWQ6IHN0cmluZywgZWxlbWVudDogYW55LCBjb21tYW5kOiBzdHJpbmcsIGFyZ3M6IGFueVtdKTogdm9pZCB7XG4gICAgaWYgKGNvbW1hbmQgPT0gJ3JlZ2lzdGVyJykge1xuICAgICAgdGhpcy5yZWdpc3RlcihpZCwgYXJnc1swXSBhcyBBbmltYXRpb25NZXRhZGF0YSB8IEFuaW1hdGlvbk1ldGFkYXRhW10pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChjb21tYW5kID09ICdjcmVhdGUnKSB7XG4gICAgICBjb25zdCBvcHRpb25zID0gKGFyZ3NbMF0gfHwge30pIGFzIEFuaW1hdGlvbk9wdGlvbnM7XG4gICAgICB0aGlzLmNyZWF0ZShpZCwgZWxlbWVudCwgb3B0aW9ucyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcGxheWVyID0gdGhpcy5fZ2V0UGxheWVyKGlkKTtcbiAgICBzd2l0Y2ggKGNvbW1hbmQpIHtcbiAgICAgIGNhc2UgJ3BsYXknOlxuICAgICAgICBwbGF5ZXIucGxheSgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3BhdXNlJzpcbiAgICAgICAgcGxheWVyLnBhdXNlKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAncmVzZXQnOlxuICAgICAgICBwbGF5ZXIucmVzZXQoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdyZXN0YXJ0JzpcbiAgICAgICAgcGxheWVyLnJlc3RhcnQoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdmaW5pc2gnOlxuICAgICAgICBwbGF5ZXIuZmluaXNoKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnaW5pdCc6XG4gICAgICAgIHBsYXllci5pbml0KCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnc2V0UG9zaXRpb24nOlxuICAgICAgICBwbGF5ZXIuc2V0UG9zaXRpb24ocGFyc2VGbG9hdChhcmdzWzBdIGFzIHN0cmluZykpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2Rlc3Ryb3knOlxuICAgICAgICB0aGlzLmRlc3Ryb3koaWQpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|