angular-three 2.0.0-beta.2 → 2.0.0-beta.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -147
- package/esm2022/angular-three.mjs +1 -1
- package/esm2022/index.mjs +11 -10
- package/esm2022/lib/before-render.mjs +13 -0
- package/esm2022/lib/canvas.mjs +130 -161
- package/esm2022/lib/directives/args.mjs +13 -11
- package/esm2022/lib/directives/common.mjs +29 -27
- package/esm2022/lib/directives/key.mjs +29 -0
- package/esm2022/lib/directives/parent.mjs +13 -11
- package/esm2022/lib/directives/repeat.mjs +5 -6
- package/esm2022/lib/dom/events.mjs +6 -1
- package/esm2022/lib/events.mjs +75 -58
- package/esm2022/lib/instance.mjs +65 -0
- package/esm2022/lib/loader.mjs +30 -37
- package/esm2022/lib/loop.mjs +6 -3
- package/esm2022/lib/portal.mjs +91 -102
- package/esm2022/lib/ref.mjs +48 -0
- package/esm2022/lib/renderer/catalogue.mjs +7 -0
- package/esm2022/lib/renderer/constants.mjs +21 -0
- package/esm2022/lib/renderer/index.mjs +419 -0
- package/esm2022/lib/renderer/store.mjs +144 -108
- package/esm2022/lib/renderer/utils.mjs +63 -48
- package/esm2022/lib/roots.mjs +249 -0
- package/esm2022/lib/routed-scene.mjs +11 -8
- package/esm2022/lib/store.mjs +207 -0
- package/esm2022/lib/three-types.mjs +2 -2
- package/esm2022/lib/types.mjs +1 -1
- package/esm2022/lib/utils/apply-props.mjs +23 -11
- package/esm2022/lib/utils/assert-injection-context.mjs +14 -0
- package/esm2022/lib/utils/attach.mjs +2 -2
- package/esm2022/lib/utils/create-injection-token.mjs +47 -0
- package/esm2022/lib/utils/is.mjs +1 -1
- package/esm2022/lib/utils/make.mjs +1 -1
- package/esm2022/lib/utils/safe-detect-changes.mjs +15 -13
- package/esm2022/lib/utils/signal-store.mjs +91 -0
- package/esm2022/lib/utils/update.mjs +1 -1
- package/fesm2022/angular-three.mjs +1770 -1589
- package/fesm2022/angular-three.mjs.map +1 -1
- package/index.d.ts +10 -9
- package/lib/{di/before-render.d.ts → before-render.d.ts} +1 -1
- package/lib/canvas.d.ts +81 -11
- package/lib/directives/args.d.ts +2 -2
- package/lib/directives/common.d.ts +5 -1
- package/lib/directives/key.d.ts +10 -0
- package/lib/directives/parent.d.ts +5 -5
- package/lib/dom/events.d.ts +3 -2
- package/lib/events.d.ts +78 -2
- package/lib/instance.d.ts +36 -0
- package/lib/loader.d.ts +13 -2
- package/lib/loop.d.ts +64 -6
- package/lib/portal.d.ts +20 -12
- package/lib/{di/ref.d.ts → ref.d.ts} +3 -2
- package/lib/renderer/catalogue.d.ts +9 -0
- package/lib/renderer/constants.d.ts +20 -0
- package/lib/renderer/index.d.ts +5 -0
- package/lib/renderer/store.d.ts +19 -15
- package/lib/renderer/utils.d.ts +28 -18
- package/lib/roots.d.ts +11 -0
- package/lib/routed-scene.d.ts +1 -1
- package/lib/store.d.ts +143 -0
- package/lib/three-types.d.ts +6 -6
- package/lib/types.d.ts +1 -309
- package/lib/utils/apply-props.d.ts +4 -2
- package/lib/utils/attach.d.ts +5 -3
- package/lib/utils/create-injection-token.d.ts +27 -0
- package/lib/utils/is.d.ts +4 -3
- package/lib/utils/make.d.ts +12 -1
- package/lib/utils/safe-detect-changes.d.ts +2 -2
- package/lib/utils/signal-store.d.ts +17 -0
- package/lib/utils/update.d.ts +1 -1
- package/metadata.json +1 -1
- package/package.json +5 -4
- package/plugin/generators.json +47 -17
- package/plugin/package.json +2 -5
- package/plugin/src/generators/init/compat.d.ts +3 -1
- package/plugin/src/generators/init/compat.js +2 -2
- package/plugin/src/generators/init/compat.js.map +1 -1
- package/plugin/src/generators/init/files/experience/experience.component.html.__tmpl__ +4 -0
- package/plugin/src/generators/init/files/experience/experience.component.ts.__tmpl__ +17 -0
- package/plugin/src/generators/init/generator.d.ts +6 -0
- package/plugin/src/generators/init/generator.js +144 -0
- package/plugin/src/generators/init/generator.js.map +1 -0
- package/plugin/src/generators/init/schema.json +15 -4
- package/plugin/src/generators/init-cannon/compat.d.ts +2 -0
- package/plugin/src/generators/init-cannon/compat.js +6 -0
- package/plugin/src/generators/init-cannon/compat.js.map +1 -0
- package/plugin/src/generators/init-cannon/generator.d.ts +2 -0
- package/plugin/src/generators/init-cannon/generator.js +22 -0
- package/plugin/src/generators/init-cannon/generator.js.map +1 -0
- package/plugin/src/generators/init-cannon/schema.json +6 -0
- package/plugin/src/generators/init-postprocessing/compat.d.ts +2 -0
- package/plugin/src/generators/init-postprocessing/compat.js +6 -0
- package/plugin/src/generators/init-postprocessing/compat.js.map +1 -0
- package/plugin/src/generators/init-postprocessing/generator.d.ts +2 -0
- package/plugin/src/generators/init-postprocessing/generator.js +20 -0
- package/plugin/src/generators/init-postprocessing/generator.js.map +1 -0
- package/plugin/src/generators/init-postprocessing/schema.json +6 -0
- package/plugin/src/generators/init-soba/compat.d.ts +2 -0
- package/plugin/src/generators/init-soba/compat.js +6 -0
- package/plugin/src/generators/init-soba/compat.js.map +1 -0
- package/plugin/src/generators/init-soba/generator.d.ts +2 -0
- package/plugin/src/generators/init-soba/generator.js +26 -0
- package/plugin/src/generators/init-soba/generator.js.map +1 -0
- package/plugin/src/generators/init-soba/schema.json +6 -0
- package/plugin/src/generators/utils.d.ts +2 -0
- package/plugin/src/generators/utils.js +34 -0
- package/plugin/src/generators/utils.js.map +1 -0
- package/plugin/src/generators/versions.d.ts +12 -0
- package/plugin/src/generators/versions.js +16 -0
- package/plugin/src/generators/versions.js.map +1 -0
- package/plugin/src/index.d.ts +3 -1
- package/plugin/src/index.js +7 -3
- package/plugin/src/index.js.map +1 -1
- package/web-types.json +1 -1
- package/esm2022/lib/di/before-render.mjs +0 -13
- package/esm2022/lib/di/catalogue.mjs +0 -7
- package/esm2022/lib/di/ref.mjs +0 -49
- package/esm2022/lib/renderer/di.mjs +0 -3
- package/esm2022/lib/renderer/enums.mjs +0 -2
- package/esm2022/lib/renderer/provider.mjs +0 -18
- package/esm2022/lib/renderer/renderer.mjs +0 -365
- package/esm2022/lib/stores/signal.store.mjs +0 -81
- package/esm2022/lib/stores/store.mjs +0 -423
- package/esm2022/lib/utils/assert-in-injection-context.mjs +0 -14
- package/esm2022/lib/utils/instance.mjs +0 -63
- package/esm2022/lib/utils/signal.mjs +0 -24
- package/esm2022/lib/utils/timing.mjs +0 -21
- package/lib/di/catalogue.d.ts +0 -3
- package/lib/renderer/di.d.ts +0 -2
- package/lib/renderer/enums.d.ts +0 -26
- package/lib/renderer/provider.d.ts +0 -8
- package/lib/renderer/renderer.d.ts +0 -49
- package/lib/stores/signal.store.d.ts +0 -20
- package/lib/stores/store.d.ts +0 -13
- package/lib/utils/instance.d.ts +0 -4
- package/lib/utils/signal.d.ts +0 -2
- package/lib/utils/timing.d.ts +0 -4
- package/plugin/src/generators/init/init.d.ts +0 -5
- package/plugin/src/generators/init/init.js +0 -56
- package/plugin/src/generators/init/init.js.map +0 -1
- /package/lib/utils/{assert-in-injection-context.d.ts → assert-injection-context.d.ts} +0 -0
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
import { DOCUMENT } from '@angular/common';
|
|
2
|
+
import { ChangeDetectorRef, ElementRef, InjectionToken, Injector, Optional, SkipSelf, effect, inject, runInInjectionContext, } from '@angular/core';
|
|
3
|
+
import { Subject } from 'rxjs';
|
|
4
|
+
import * as THREE from 'three';
|
|
5
|
+
import { NGT_LOOP } from './loop';
|
|
6
|
+
import { createInjectionToken } from './utils/create-injection-token';
|
|
7
|
+
import { is } from './utils/is';
|
|
8
|
+
import { makeDpr } from './utils/make';
|
|
9
|
+
import { safeDetectChanges } from './utils/safe-detect-changes';
|
|
10
|
+
import { signalStore } from './utils/signal-store';
|
|
11
|
+
import { updateCamera } from './utils/update';
|
|
12
|
+
function storeFactory(loop, document, injector, parent) {
|
|
13
|
+
return runInInjectionContext(injector, () => {
|
|
14
|
+
const window = document.defaultView;
|
|
15
|
+
if (!window) {
|
|
16
|
+
// TODO: revisit this when we need to support multiple platforms
|
|
17
|
+
throw new Error(`[NGT] Window is not available.`);
|
|
18
|
+
}
|
|
19
|
+
const cdr = inject(ChangeDetectorRef);
|
|
20
|
+
// NOTE: using Subject because we do not care about late-subscribers
|
|
21
|
+
const pointerMissed$ = new Subject();
|
|
22
|
+
const store = signalStore(({ get, set }) => {
|
|
23
|
+
const { invalidate, advance } = loop;
|
|
24
|
+
const position = new THREE.Vector3();
|
|
25
|
+
const defaultTarget = new THREE.Vector3();
|
|
26
|
+
const tempTarget = new THREE.Vector3();
|
|
27
|
+
function getCurrentViewport(camera = get('camera'), target = defaultTarget, size = get('size')) {
|
|
28
|
+
const { width, height, top, left } = size;
|
|
29
|
+
const aspect = width / height;
|
|
30
|
+
if (target instanceof THREE.Vector3)
|
|
31
|
+
tempTarget.copy(target);
|
|
32
|
+
else
|
|
33
|
+
tempTarget.set(...target);
|
|
34
|
+
const distance = camera.getWorldPosition(position).distanceTo(tempTarget);
|
|
35
|
+
if (is.orthographicCamera(camera)) {
|
|
36
|
+
return {
|
|
37
|
+
width: width / camera.zoom,
|
|
38
|
+
height: height / camera.zoom,
|
|
39
|
+
top,
|
|
40
|
+
left,
|
|
41
|
+
factor: 1,
|
|
42
|
+
distance,
|
|
43
|
+
aspect,
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
const fov = (camera.fov * Math.PI) / 180; // convert vertical fov to radians
|
|
48
|
+
const h = 2 * Math.tan(fov / 2) * distance; // visible height
|
|
49
|
+
const w = h * (width / height);
|
|
50
|
+
return { width: w, height: h, top, left, factor: width / w, distance, aspect };
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
let performanceTimeout = undefined;
|
|
54
|
+
const setPerformanceCurrent = (current) => set((state) => ({ performance: { ...state.performance, current } }));
|
|
55
|
+
const pointer = new THREE.Vector2();
|
|
56
|
+
return {
|
|
57
|
+
pointerMissed$: pointerMissed$.asObservable(),
|
|
58
|
+
events: { priority: 1, enabled: true, connected: false },
|
|
59
|
+
invalidate: (frames = 1) => invalidate(store, frames),
|
|
60
|
+
advance: (timestamp, runGlobalEffects) => advance(timestamp, runGlobalEffects, store),
|
|
61
|
+
legacy: false,
|
|
62
|
+
linear: false,
|
|
63
|
+
flat: false,
|
|
64
|
+
controls: null,
|
|
65
|
+
clock: new THREE.Clock(),
|
|
66
|
+
pointer,
|
|
67
|
+
frameloop: 'always',
|
|
68
|
+
performance: {
|
|
69
|
+
current: 1,
|
|
70
|
+
min: 0.5,
|
|
71
|
+
max: 1,
|
|
72
|
+
debounce: 200,
|
|
73
|
+
regress: () => {
|
|
74
|
+
const state = get();
|
|
75
|
+
// Clear timeout
|
|
76
|
+
if (performanceTimeout)
|
|
77
|
+
clearTimeout(performanceTimeout);
|
|
78
|
+
// Set lower bound performance
|
|
79
|
+
if (state.performance.current !== state.performance.min)
|
|
80
|
+
setPerformanceCurrent(state.performance.min);
|
|
81
|
+
// Go back to upper bound performance after a while unless something regresses meanwhile
|
|
82
|
+
performanceTimeout = setTimeout(() => {
|
|
83
|
+
setPerformanceCurrent(get('performance', 'max'));
|
|
84
|
+
safeDetectChanges(cdr);
|
|
85
|
+
}, state.performance.debounce);
|
|
86
|
+
},
|
|
87
|
+
},
|
|
88
|
+
size: { width: 0, height: 0, top: 0, left: 0, updateStyle: false },
|
|
89
|
+
viewport: {
|
|
90
|
+
initialDpr: 0,
|
|
91
|
+
dpr: 0,
|
|
92
|
+
width: 0,
|
|
93
|
+
height: 0,
|
|
94
|
+
top: 0,
|
|
95
|
+
left: 0,
|
|
96
|
+
aspect: 0,
|
|
97
|
+
distance: 0,
|
|
98
|
+
factor: 0,
|
|
99
|
+
getCurrentViewport,
|
|
100
|
+
},
|
|
101
|
+
setEvents: (events) => set((state) => ({ ...state, events: { ...state.events, ...events } })),
|
|
102
|
+
setSize: (width, height, top, left) => {
|
|
103
|
+
const camera = get('camera');
|
|
104
|
+
const size = { width, height, top: top || 0, left: left || 0 };
|
|
105
|
+
set((state) => ({
|
|
106
|
+
size,
|
|
107
|
+
viewport: { ...state.viewport, ...getCurrentViewport(camera, defaultTarget, size) },
|
|
108
|
+
}));
|
|
109
|
+
},
|
|
110
|
+
setDpr: (dpr) => set((state) => {
|
|
111
|
+
const resolved = makeDpr(dpr, window);
|
|
112
|
+
return {
|
|
113
|
+
viewport: {
|
|
114
|
+
...state.viewport,
|
|
115
|
+
dpr: resolved,
|
|
116
|
+
initialDpr: state.viewport.initialDpr || resolved,
|
|
117
|
+
},
|
|
118
|
+
};
|
|
119
|
+
}),
|
|
120
|
+
setFrameloop: (frameloop = 'always') => {
|
|
121
|
+
const clock = get('clock');
|
|
122
|
+
// if frameloop === "never" clock.elapsedTime is updated using advance(timestamp)
|
|
123
|
+
clock.stop();
|
|
124
|
+
clock.elapsedTime = 0;
|
|
125
|
+
if (frameloop !== 'never') {
|
|
126
|
+
clock.start();
|
|
127
|
+
clock.elapsedTime = 0;
|
|
128
|
+
}
|
|
129
|
+
set(() => ({ frameloop }));
|
|
130
|
+
},
|
|
131
|
+
previousRoot: parent,
|
|
132
|
+
internal: {
|
|
133
|
+
active: false,
|
|
134
|
+
priority: 0,
|
|
135
|
+
frames: 0,
|
|
136
|
+
lastEvent: new ElementRef(null),
|
|
137
|
+
interaction: [],
|
|
138
|
+
hovered: new Map(),
|
|
139
|
+
subscribers: [],
|
|
140
|
+
initialClick: [0, 0],
|
|
141
|
+
initialHits: [],
|
|
142
|
+
capturedMap: new Map(),
|
|
143
|
+
subscribe: (callback, priority = 0, _store = store) => {
|
|
144
|
+
const internal = get('internal');
|
|
145
|
+
// If this subscription was given a priority, it takes rendering into its own hands
|
|
146
|
+
// For that reason we switch off automatic rendering and increase the manual flag
|
|
147
|
+
// As long as this flag is positive there can be no internal rendering at all
|
|
148
|
+
// because there could be multiple render subscriptions
|
|
149
|
+
internal.priority = internal.priority + (priority > 0 ? 1 : 0);
|
|
150
|
+
internal.subscribers.push({ callback, priority, store });
|
|
151
|
+
// Register subscriber and sort layers from lowest to highest, meaning,
|
|
152
|
+
// highest priority renders last (on top of the other frames)
|
|
153
|
+
internal.subscribers = internal.subscribers.sort((a, b) => (a.priority || 0) - (b.priority || 0));
|
|
154
|
+
return () => {
|
|
155
|
+
const internal = get('internal');
|
|
156
|
+
if (internal?.subscribers) {
|
|
157
|
+
// Decrease manual flag if this subscription had a priority
|
|
158
|
+
internal.priority = internal.priority - (priority > 0 ? 1 : 0);
|
|
159
|
+
// Remove subscriber from list
|
|
160
|
+
internal.subscribers = internal.subscribers.filter((s) => s.callback !== callback);
|
|
161
|
+
}
|
|
162
|
+
};
|
|
163
|
+
},
|
|
164
|
+
},
|
|
165
|
+
};
|
|
166
|
+
});
|
|
167
|
+
// NOTE: assign pointerMissed$ so we can use it in events
|
|
168
|
+
Object.defineProperty(store, 'pointerMissed$', { get: () => pointerMissed$ });
|
|
169
|
+
const state = store.get();
|
|
170
|
+
let oldSize = state.size;
|
|
171
|
+
let oldDpr = state.viewport.dpr;
|
|
172
|
+
let oldCamera = state.camera;
|
|
173
|
+
const _camera = store.select('camera');
|
|
174
|
+
const _size = store.select('size');
|
|
175
|
+
const _viewport = store.select('viewport');
|
|
176
|
+
effect(() => {
|
|
177
|
+
const [camera, size, viewport, gl] = [_camera(), _size(), _viewport(), store.get('gl')];
|
|
178
|
+
// Resize camera and renderer on changes to size and pixelratio
|
|
179
|
+
if (size !== oldSize || viewport.dpr !== oldDpr) {
|
|
180
|
+
oldSize = size;
|
|
181
|
+
oldDpr = viewport.dpr;
|
|
182
|
+
// Update camera & renderer
|
|
183
|
+
updateCamera(camera, size);
|
|
184
|
+
gl.setPixelRatio(viewport.dpr);
|
|
185
|
+
const updateStyle = typeof HTMLCanvasElement !== 'undefined' && gl.domElement instanceof HTMLCanvasElement;
|
|
186
|
+
gl.setSize(size.width, size.height, updateStyle);
|
|
187
|
+
}
|
|
188
|
+
// Update viewport once the camera changes
|
|
189
|
+
if (camera !== oldCamera) {
|
|
190
|
+
oldCamera = camera;
|
|
191
|
+
updateCamera(camera, size);
|
|
192
|
+
// Update viewport
|
|
193
|
+
store.set((state) => ({
|
|
194
|
+
viewport: { ...state.viewport, ...state.viewport.getCurrentViewport(camera) },
|
|
195
|
+
}));
|
|
196
|
+
}
|
|
197
|
+
});
|
|
198
|
+
return store;
|
|
199
|
+
});
|
|
200
|
+
}
|
|
201
|
+
export const NGT_STORE = new InjectionToken('NgtStore token');
|
|
202
|
+
export const [injectNgtStore, provideNgtStore] = createInjectionToken(storeFactory, {
|
|
203
|
+
isRoot: false,
|
|
204
|
+
deps: [NGT_LOOP, DOCUMENT, Injector, [new Optional(), new SkipSelf(), NGT_STORE]],
|
|
205
|
+
token: NGT_STORE,
|
|
206
|
+
});
|
|
207
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi9zdG9yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUNOLGlCQUFpQixFQUNqQixVQUFVLEVBQ1YsY0FBYyxFQUNkLFFBQVEsRUFDUixRQUFRLEVBQ1IsUUFBUSxFQUNSLE1BQU0sRUFDTixNQUFNLEVBQ04scUJBQXFCLEdBQ3JCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxPQUFPLEVBQW1CLE1BQU0sTUFBTSxDQUFDO0FBQ2hELE9BQU8sS0FBSyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBRy9CLE9BQU8sRUFBRSxRQUFRLEVBQWdCLE1BQU0sUUFBUSxDQUFDO0FBQ2hELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDaEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN2QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsV0FBVyxFQUF1QixNQUFNLHNCQUFzQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQXNJOUMsU0FBUyxZQUFZLENBQUMsSUFBYSxFQUFFLFFBQWtCLEVBQUUsUUFBa0IsRUFBRSxNQUF1QztJQUNuSCxPQUFPLHFCQUFxQixDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUU7UUFDM0MsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLFdBQVcsQ0FBQztRQUVwQyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ1osZ0VBQWdFO1lBQ2hFLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztT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QUFFO0lBQ25GLE1BQU0sRUFBRSxLQUFLO0lBQ2IsSUFBSSxFQUFFLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsQ0FBQyxJQUFJLFFBQVEsRUFBRSxFQUFFLElBQUksUUFBUSxFQUFFLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDakYsS0FBSyxFQUFFLFNBQVM7Q0FDaEIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcblx0Q2hhbmdlRGV0ZWN0b3JSZWYsXG5cdEVsZW1lbnRSZWYsXG5cdEluamVjdGlvblRva2VuLFxuXHRJbmplY3Rvcixcblx0T3B0aW9uYWwsXG5cdFNraXBTZWxmLFxuXHRlZmZlY3QsXG5cdGluamVjdCxcblx0cnVuSW5JbmplY3Rpb25Db250ZXh0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QsIHR5cGUgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0ICogYXMgVEhSRUUgZnJvbSAndGhyZWUnO1xuaW1wb3J0IHR5cGUgeyBOZ3RDYW1lcmEsIE5ndERvbUV2ZW50LCBOZ3RFdmVudE1hbmFnZXIsIE5ndFBvaW50ZXJDYXB0dXJlVGFyZ2V0LCBOZ3RUaHJlZUV2ZW50IH0gZnJvbSAnLi9ldmVudHMnO1xuaW1wb3J0IHR5cGUgeyBOZ3RJbnN0YW5jZU5vZGUgfSBmcm9tICcuL2luc3RhbmNlJztcbmltcG9ydCB7IE5HVF9MT09QLCB0eXBlIE5ndExvb3AgfSBmcm9tICcuL2xvb3AnO1xuaW1wb3J0IHsgY3JlYXRlSW5qZWN0aW9uVG9rZW4gfSBmcm9tICcuL3V0aWxzL2NyZWF0ZS1pbmplY3Rpb24tdG9rZW4nO1xuaW1wb3J0IHsgaXMgfSBmcm9tICcuL3V0aWxzL2lzJztcbmltcG9ydCB7IG1ha2VEcHIgfSBmcm9tICcuL3V0aWxzL21ha2UnO1xuaW1wb3J0IHsgc2FmZURldGVjdENoYW5nZXMgfSBmcm9tICcuL3V0aWxzL3NhZmUtZGV0ZWN0LWNoYW5nZXMnO1xuaW1wb3J0IHsgc2lnbmFsU3RvcmUsIHR5cGUgTmd0U2lnbmFsU3RvcmUgfSBmcm9tICcuL3V0aWxzL3NpZ25hbC1zdG9yZSc7XG5pbXBvcnQgeyB1cGRhdGVDYW1lcmEgfSBmcm9tICcuL3V0aWxzL3VwZGF0ZSc7XG5cbmV4cG9ydCB0eXBlIE5ndFJlbmRlcmVyID0geyByZW5kZXI6IChzY2VuZTogVEhSRUUuU2NlbmUsIGNhbWVyYTogVEhSRUUuQ2FtZXJhKSA9PiBhbnkgfTtcbmV4cG9ydCB0eXBlIE5ndENhbWVyYU1hbnVhbCA9IE5ndENhbWVyYSAmIHsgbWFudWFsPzogYm9vbGVhbiB9O1xuXG5leHBvcnQgdHlwZSBOZ3REcHIgPSBudW1iZXIgfCBbbWluOiBudW1iZXIsIG1heDogbnVtYmVyXTtcbmV4cG9ydCB0eXBlIE5ndFNpemUgPSB7XG5cdHdpZHRoOiBudW1iZXI7XG5cdGhlaWdodDogbnVtYmVyO1xuXHR0b3A6IG51bWJlcjtcblx0bGVmdDogbnVtYmVyO1xufTtcblxuZXhwb3J0IHR5cGUgTmd0Vmlld3BvcnQgPSBOZ3RTaXplICYge1xuXHQvKiogVGhlIGluaXRpYWwgcGl4ZWwgcmF0aW8gKi9cblx0aW5pdGlhbERwcjogbnVtYmVyO1xuXHQvKiogQ3VycmVudCBwaXhlbCByYXRpbyAqL1xuXHRkcHI6IG51bWJlcjtcblx0LyoqIHNpemUud2lkdGggLyB2aWV3cG9ydC53aWR0aCAqL1xuXHRmYWN0b3I6IG51bWJlcjtcblx0LyoqIENhbWVyYSBkaXN0YW5jZSAqL1xuXHRkaXN0YW5jZTogbnVtYmVyO1xuXHQvKiogQ2FtZXJhIGFzcGVjdCByYXRpbzogd2lkdGggLyBoZWlnaHQgKi9cblx0YXNwZWN0OiBudW1iZXI7XG59O1xuXG5leHBvcnQgdHlwZSBOZ3RQZXJmb3JtYW5jZSA9IHtcblx0LyoqIEN1cnJlbnQgcGVyZm9ybWFuY2Ugbm9ybWFsLCBiZXR3ZWVuIG1pbiBhbmQgbWF4ICovXG5cdGN1cnJlbnQ6IG51bWJlcjtcblx0LyoqIEhvdyBsb3cgdGhlIHBlcmZvcm1hbmNlIGNhbiBnbywgYmV0d2VlbiAwIGFuZCBtYXggKi9cblx0bWluOiBudW1iZXI7XG5cdC8qKiBIb3cgaGlnaCB0aGUgcGVyZm9ybWFuY2UgY2FuIGdvLCBiZXR3ZWVuIG1pbiBhbmQgbWF4ICovXG5cdG1heDogbnVtYmVyO1xuXHQvKiogVGltZSB1bnRpbCBjdXJyZW50IHJldHVybnMgdG8gbWF4IGluIG1zICovXG5cdGRlYm91bmNlOiBudW1iZXI7XG5cdC8qKiBTZXRzIGN1cnJlbnQgdG8gbWluLCBwdXRzIHRoZSBzeXN0ZW0gaW4gcmVncmVzc2lvbiAqL1xuXHRyZWdyZXNzOiAoKSA9PiB2b2lkO1xufTtcblxuZXhwb3J0IHR5cGUgTmd0UmVuZGVyU3RhdGUgPSBOZ3RTdGF0ZSAmIHsgZGVsdGE6IG51bWJlcjsgZnJhbWU/OiBYUkZyYW1lIH07XG5cbmV4cG9ydCB0eXBlIE5ndEJlZm9yZVJlbmRlckV2ZW50PFRPYmplY3QgZXh0ZW5kcyBOZ3RJbnN0YW5jZU5vZGUgPSBOZ3RJbnN0YW5jZU5vZGU+ID0ge1xuXHRzdGF0ZTogTmd0UmVuZGVyU3RhdGU7XG5cdG9iamVjdDogVE9iamVjdDtcbn07XG5cbmV4cG9ydCB0eXBlIE5ndEJlZm9yZVJlbmRlclJlY29yZCA9IHtcblx0Y2FsbGJhY2s6IChzdGF0ZTogTmd0UmVuZGVyU3RhdGUpID0+IHZvaWQ7XG5cdHN0b3JlOiBOZ3RTaWduYWxTdG9yZTxOZ3RTdGF0ZT47XG5cdHByaW9yaXR5PzogbnVtYmVyO1xufTtcblxuZXhwb3J0IHR5cGUgTmd0SW50ZXJuYWxTdGF0ZSA9IHtcblx0YWN0aXZlOiBib29sZWFuO1xuXHRwcmlvcml0eTogbnVtYmVyO1xuXHRmcmFtZXM6IG51bWJlcjtcblx0bGFzdEV2ZW50OiBFbGVtZW50UmVmPE5ndERvbUV2ZW50IHwgbnVsbD47XG5cdGludGVyYWN0aW9uOiBUSFJFRS5PYmplY3QzRFtdO1xuXHRob3ZlcmVkOiBNYXA8c3RyaW5nLCBOZ3RUaHJlZUV2ZW50PE5ndERvbUV2ZW50Pj47XG5cdGNhcHR1cmVkTWFwOiBNYXA8bnVtYmVyLCBNYXA8VEhSRUUuT2JqZWN0M0QsIE5ndFBvaW50ZXJDYXB0dXJlVGFyZ2V0Pj47XG5cdGluaXRpYWxDbGljazogW3g6IG51bWJlciwgeTogbnVtYmVyXTtcblx0aW5pdGlhbEhpdHM6IFRIUkVFLk9iamVjdDNEW107XG5cdHN1YnNjcmliZXJzOiBOZ3RCZWZvcmVSZW5kZXJSZWNvcmRbXTtcblx0c3Vic2NyaWJlOiAoXG5cdFx0Y2FsbGJhY2s6IE5ndEJlZm9yZVJlbmRlclJlY29yZFsnY2FsbGJhY2snXSxcblx0XHRwcmlvcml0eT86IG51bWJlcixcblx0XHRzdG9yZT86IE5ndFNpZ25hbFN0b3JlPE5ndFN0YXRlPixcblx0KSA9PiAoKSA9PiB2b2lkO1xufTtcblxuZXhwb3J0IHR5cGUgTmd0U3RhdGUgPSB7XG5cdC8qKiB3aGVuIGFsbCBidWlsZGluZyBibG9ja3MgYXJlIGluaXRpYWxpemVkICovXG5cdHJlYWR5OiBib29sZWFuO1xuXHQvKiogVGhlIGluc3RhbmNlIG9mIHRoZSByZW5kZXJlciAqL1xuXHRnbDogVEhSRUUuV2ViR0xSZW5kZXJlcjtcblx0LyoqIERlZmF1bHQgY2FtZXJhICovXG5cdGNhbWVyYTogTmd0Q2FtZXJhTWFudWFsO1xuXHQvKiogRGVmYXVsdCBzY2VuZSAqL1xuXHRzY2VuZTogVEhSRUUuU2NlbmU7XG5cdC8qKiBEZWZhdWx0IHJheWNhc3RlciAqL1xuXHRyYXljYXN0ZXI6IFRIUkVFLlJheWNhc3Rlcjtcblx0LyoqIERlZmF1bHQgY2xvY2sgKi9cblx0Y2xvY2s6IFRIUkVFLkNsb2NrO1xuXHQvKiogRXZlbnQgbGF5ZXIgaW50ZXJmYWNlLCBjb250YWlucyB0aGUgZXZlbnQgaGFuZGxlciBhbmQgdGhlIG5vZGUgdGhleSdyZSBjb25uZWN0ZWQgdG8gKi9cblx0ZXZlbnRzOiBOZ3RFdmVudE1hbmFnZXI8YW55Pjtcblx0LyoqIFhSIGludGVyZmFjZSAqL1xuXHR4cjogeyBjb25uZWN0OiAoKSA9PiB2b2lkOyBkaXNjb25uZWN0OiAoKSA9PiB2b2lkIH07XG5cdC8qKiBDdXJyZW50bHkgdXNlZCBjb250cm9scyAqL1xuXHRjb250cm9sczogVEhSRUUuRXZlbnREaXNwYXRjaGVyIHwgbnVsbDtcblx0LyoqIE5vcm1hbGl6ZWQgZXZlbnQgY29vcmRpbmF0ZXMgKi9cblx0cG9pbnRlcjogVEhSRUUuVmVjdG9yMjtcblx0LyogV2hldGhlciB0byBlbmFibGUgcjEzOSdzIFRIUkVFLkNvbG9yTWFuYWdlbWVudCAqL1xuXHRsZWdhY3k6IGJvb2xlYW47XG5cdC8qKiBTaG9ydGN1dCB0byBnbC5vdXRwdXRDb2xvclNwYWNlID0gVEhSRUUuTGluZWFyU1JHQkNvbG9yU3BhY2UgKi9cblx0bGluZWFyOiBib29sZWFuO1xuXHQvKiogU2hvcnRjdXQgdG8gZ2wudG9uZU1hcHBpbmcgPSBOb1RvbmVtYXBwaW5nICovXG5cdGZsYXQ6IGJvb2xlYW47XG5cdC8qKiBSZW5kZXIgbG9vcCBmbGFncyAqL1xuXHRmcmFtZWxvb3A6ICdhbHdheXMnIHwgJ2RlbWFuZCcgfCAnbmV2ZXInO1xuXHQvKiogQWRhcHRpdmUgcGVyZm9ybWFuY2UgaW50ZXJmYWNlICovXG5cdHBlcmZvcm1hbmNlOiBOZ3RQZXJmb3JtYW5jZTtcblx0LyoqIFJlYWN0aXZlIHBpeGVsLXNpemUgb2YgdGhlIGNhbnZhcyAqL1xuXHRzaXplOiBOZ3RTaXplO1xuXHQvKiogUmVhY3RpdmUgc2l6ZSBvZiB0aGUgdmlld3BvcnQgaW4gdGhyZWVqcyB1bml0cyAqL1xuXHR2aWV3cG9ydDogTmd0Vmlld3BvcnQgJiB7XG5cdFx0Z2V0Q3VycmVudFZpZXdwb3J0OiAoXG5cdFx0XHRjYW1lcmE/OiBOZ3RDYW1lcmEsXG5cdFx0XHR0YXJnZXQ/OiBUSFJFRS5WZWN0b3IzIHwgUGFyYW1ldGVyczxUSFJFRS5WZWN0b3IzWydzZXQnXT4sXG5cdFx0XHRzaXplPzogTmd0U2l6ZSxcblx0XHQpID0+IE9taXQ8Tmd0Vmlld3BvcnQsICdkcHInIHwgJ2luaXRpYWxEcHInPjtcblx0fTtcblx0LyoqIEZsYWdzIHRoZSBjYW52YXMgZm9yIHJlbmRlciwgYnV0IGRvZXNuJ3QgcmVuZGVyIGluIGl0c2VsZiAqL1xuXHRpbnZhbGlkYXRlOiAoZnJhbWVzPzogbnVtYmVyKSA9PiB2b2lkO1xuXHQvKiogQWR2YW5jZSAocmVuZGVyKSBvbmUgc3RlcCAqL1xuXHRhZHZhbmNlOiAodGltZXN0YW1wOiBudW1iZXIsIHJ1bkdsb2JhbEVmZmVjdHM/OiBib29sZWFuKSA9PiB2b2lkO1xuXHQvKiogU2hvcnRjdXQgdG8gc2V0dGluZyB0aGUgZXZlbnQgbGF5ZXIgKi9cblx0c2V0RXZlbnRzOiAoZXZlbnRzOiBQYXJ0aWFsPE5ndEV2ZW50TWFuYWdlcjxhbnk+PikgPT4gdm9pZDtcblx0LyoqXG5cdCAqIFNob3J0Y3V0IHRvIG1hbnVhbCBzaXppbmdcblx0ICovXG5cdHNldFNpemU6ICh3aWR0aDogbnVtYmVyLCBoZWlnaHQ6IG51bWJlciwgdG9wPzogbnVtYmVyLCBsZWZ0PzogbnVtYmVyKSA9PiB2b2lkO1xuXHQvKiogU2hvcnRjdXQgdG8gbWFudWFsIHNldHRpbmcgdGhlIHBpeGVsIHJhdGlvICovXG5cdHNldERwcjogKGRwcjogTmd0RHByKSA9PiB2b2lkO1xuXHQvKiogU2hvcnRjdXQgdG8gZnJhbWVsb29wIGZsYWdzICovXG5cdHNldEZyYW1lbG9vcDogKGZyYW1lbG9vcD86ICdhbHdheXMnIHwgJ2RlbWFuZCcgfCAnbmV2ZXInKSA9PiB2b2lkO1xuXHQvKiogV2hlbiB0aGUgY2FudmFzIHdhcyBjbGlja2VkIGJ1dCBub3RoaW5nIHdhcyBoaXQgKi9cblx0LyoqIFBvaW50ZXJNaXNzZWQgT2JzZXJ2YWJsZSAqL1xuXHRwb2ludGVyTWlzc2VkJDogT2JzZXJ2YWJsZTxNb3VzZUV2ZW50Pjtcblx0LyoqIElmIHRoaXMgc3RhdGUgbW9kZWwgaXMgbGF5ZXJkICh2aWEgY3JlYXRlUG9ydGFsKSB0aGVuIHRoaXMgY29udGFpbnMgdGhlIHByZXZpb3VzIGxheWVyICovXG5cdHByZXZpb3VzUm9vdDogTmd0U2lnbmFsU3RvcmU8Tmd0U3RhdGU+IHwgbnVsbDtcblx0LyoqIEludGVybmFscyAqL1xuXHRpbnRlcm5hbDogTmd0SW50ZXJuYWxTdGF0ZTtcbn07XG5cbmZ1bmN0aW9uIHN0b3JlRmFjdG9yeShsb29wOiBOZ3RMb29wLCBkb2N1bWVudDogRG9jdW1lbnQsIGluamVjdG9yOiBJbmplY3RvciwgcGFyZW50OiBOZ3RTaWduYWxTdG9yZTxOZ3RTdGF0ZT4gfCBudWxsKSB7XG5cdHJldHVybiBydW5JbkluamVjdGlvbkNvbnRleHQoaW5qZWN0b3IsICgpID0+IHtcblx0XHRjb25zdCB3aW5kb3cgPSBkb2N1bWVudC5kZWZhdWx0VmlldztcblxuXHRcdGlmICghd2luZG93KSB7XG5cdFx0XHQvLyBUT0RPOiByZXZpc2l0IHRoaXMgd2hlbiB3ZSBuZWVkIHRvIHN1cHBvcnQgbXVsdGlwbGUgcGxhdGZvcm1zXG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoYFtOR1RdIFdpbmRvdyBpcyBub3QgYXZhaWxhYmxlLmApO1xuXHRcdH1cblxuXHRcdGNvbnN0IGNkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG5cblx0XHQvLyBOT1RFOiB1c2luZyBTdWJqZWN0IGJlY2F1c2Ugd2UgZG8gbm90IGNhcmUgYWJvdXQgbGF0ZS1zdWJzY3JpYmVyc1xuXHRcdGNvbnN0IHBvaW50ZXJNaXNzZWQkID0gbmV3IFN1YmplY3Q8TW91c2VFdmVudD4oKTtcblxuXHRcdGNvbnN0IHN0b3JlOiBOZ3RTaWduYWxTdG9yZTxOZ3RTdGF0ZT4gPSBzaWduYWxTdG9yZTxOZ3RTdGF0ZT4oKHsgZ2V0LCBzZXQgfSkgPT4ge1xuXHRcdFx0Y29uc3QgeyBpbnZhbGlkYXRlLCBhZHZhbmNlIH0gPSBsb29wO1xuXG5cdFx0XHRjb25zdCBwb3NpdGlvbiA9IG5ldyBUSFJFRS5WZWN0b3IzKCk7XG5cdFx0XHRjb25zdCBkZWZhdWx0VGFyZ2V0ID0gbmV3IFRIUkVFLlZlY3RvcjMoKTtcblx0XHRcdGNvbnN0IHRlbXBUYXJnZXQgPSBuZXcgVEhSRUUuVmVjdG9yMygpO1xuXG5cdFx0XHRmdW5jdGlvbiBnZXRDdXJyZW50Vmlld3BvcnQoXG5cdFx0XHRcdGNhbWVyYTogTmd0Q2FtZXJhID0gZ2V0KCdjYW1lcmEnKSxcblx0XHRcdFx0dGFyZ2V0OiBUSFJFRS5WZWN0b3IzIHwgUGFyYW1ldGVyczxUSFJFRS5WZWN0b3IzWydzZXQnXT4gPSBkZWZhdWx0VGFyZ2V0LFxuXHRcdFx0XHRzaXplOiBOZ3RTaXplID0gZ2V0KCdzaXplJyksXG5cdFx0XHQpOiBPbWl0PE5ndFZpZXdwb3J0LCAnZHByJyB8ICdpbml0aWFsRHByJz4ge1xuXHRcdFx0XHRjb25zdCB7IHdpZHRoLCBoZWlnaHQsIHRvcCwgbGVmdCB9ID0gc2l6ZTtcblx0XHRcdFx0Y29uc3QgYXNwZWN0ID0gd2lkdGggLyBoZWlnaHQ7XG5cdFx0XHRcdGlmICh0YXJnZXQgaW5zdGFuY2VvZiBUSFJFRS5WZWN0b3IzKSB0ZW1wVGFyZ2V0LmNvcHkodGFyZ2V0KTtcblx0XHRcdFx0ZWxzZSB0ZW1wVGFyZ2V0LnNldCguLi50YXJnZXQpO1xuXHRcdFx0XHRjb25zdCBkaXN0YW5jZSA9IGNhbWVyYS5nZXRXb3JsZFBvc2l0aW9uKHBvc2l0aW9uKS5kaXN0YW5jZVRvKHRlbXBUYXJnZXQpO1xuXHRcdFx0XHRpZiAoaXMub3J0aG9ncmFwaGljQ2FtZXJhKGNhbWVyYSkpIHtcblx0XHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdFx0d2lkdGg6IHdpZHRoIC8gY2FtZXJhLnpvb20sXG5cdFx0XHRcdFx0XHRoZWlnaHQ6IGhlaWdodCAvIGNhbWVyYS56b29tLFxuXHRcdFx0XHRcdFx0dG9wLFxuXHRcdFx0XHRcdFx0bGVmdCxcblx0XHRcdFx0XHRcdGZhY3RvcjogMSxcblx0XHRcdFx0XHRcdGRpc3RhbmNlLFxuXHRcdFx0XHRcdFx0YXNwZWN0LFxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Y29uc3QgZm92ID0gKGNhbWVyYS5mb3YgKiBNYXRoLlBJKSAvIDE4MDsgLy8gY29udmVydCB2ZXJ0aWNhbCBmb3YgdG8gcmFkaWFuc1xuXHRcdFx0XHRcdGNvbnN0IGggPSAyICogTWF0aC50YW4oZm92IC8gMikgKiBkaXN0YW5jZTsgLy8gdmlzaWJsZSBoZWlnaHRcblx0XHRcdFx0XHRjb25zdCB3ID0gaCAqICh3aWR0aCAvIGhlaWdodCk7XG5cdFx0XHRcdFx0cmV0dXJuIHsgd2lkdGg6IHcsIGhlaWdodDogaCwgdG9wLCBsZWZ0LCBmYWN0b3I6IHdpZHRoIC8gdywgZGlzdGFuY2UsIGFzcGVjdCB9O1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdGxldCBwZXJmb3JtYW5jZVRpbWVvdXQ6IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+IHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuXHRcdFx0Y29uc3Qgc2V0UGVyZm9ybWFuY2VDdXJyZW50ID0gKGN1cnJlbnQ6IG51bWJlcikgPT5cblx0XHRcdFx0c2V0KChzdGF0ZSkgPT4gKHsgcGVyZm9ybWFuY2U6IHsgLi4uc3RhdGUucGVyZm9ybWFuY2UsIGN1cnJlbnQgfSB9KSk7XG5cblx0XHRcdGNvbnN0IHBvaW50ZXIgPSBuZXcgVEhSRUUuVmVjdG9yMigpO1xuXG5cdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRwb2ludGVyTWlzc2VkJDogcG9pbnRlck1pc3NlZCQuYXNPYnNlcnZhYmxlKCksXG5cdFx0XHRcdGV2ZW50czogeyBwcmlvcml0eTogMSwgZW5hYmxlZDogdHJ1ZSwgY29ubmVjdGVkOiBmYWxzZSB9LFxuXG5cdFx0XHRcdGludmFsaWRhdGU6IChmcmFtZXMgPSAxKSA9PiBpbnZhbGlkYXRlKHN0b3JlLCBmcmFtZXMpLFxuXHRcdFx0XHRhZHZhbmNlOiAodGltZXN0YW1wOiBudW1iZXIsIHJ1bkdsb2JhbEVmZmVjdHM/OiBib29sZWFuKSA9PiBhZHZhbmNlKHRpbWVzdGFtcCwgcnVuR2xvYmFsRWZmZWN0cywgc3RvcmUpLFxuXG5cdFx0XHRcdGxlZ2FjeTogZmFsc2UsXG5cdFx0XHRcdGxpbmVhcjogZmFsc2UsXG5cdFx0XHRcdGZsYXQ6IGZhbHNlLFxuXG5cdFx0XHRcdGNvbnRyb2xzOiBudWxsLFxuXHRcdFx0XHRjbG9jazogbmV3IFRIUkVFLkNsb2NrKCksXG5cdFx0XHRcdHBvaW50ZXIsXG5cblx0XHRcdFx0ZnJhbWVsb29wOiAnYWx3YXlzJyxcblxuXHRcdFx0XHRwZXJmb3JtYW5jZToge1xuXHRcdFx0XHRcdGN1cnJlbnQ6IDEsXG5cdFx0XHRcdFx0bWluOiAwLjUsXG5cdFx0XHRcdFx0bWF4OiAxLFxuXHRcdFx0XHRcdGRlYm91bmNlOiAyMDAsXG5cdFx0XHRcdFx0cmVncmVzczogKCkgPT4ge1xuXHRcdFx0XHRcdFx0Y29uc3Qgc3RhdGUgPSBnZXQoKTtcblx0XHRcdFx0XHRcdC8vIENsZWFyIHRpbWVvdXRcblx0XHRcdFx0XHRcdGlmIChwZXJmb3JtYW5jZVRpbWVvdXQpIGNsZWFyVGltZW91dChwZXJmb3JtYW5jZVRpbWVvdXQpO1xuXHRcdFx0XHRcdFx0Ly8gU2V0IGxvd2VyIGJvdW5kIHBlcmZvcm1hbmNlXG5cdFx0XHRcdFx0XHRpZiAoc3RhdGUucGVyZm9ybWFuY2UuY3VycmVudCAhPT0gc3RhdGUucGVyZm9ybWFuY2UubWluKVxuXHRcdFx0XHRcdFx0XHRzZXRQZXJmb3JtYW5jZUN1cnJlbnQoc3RhdGUucGVyZm9ybWFuY2UubWluKTtcblxuXHRcdFx0XHRcdFx0Ly8gR28gYmFjayB0byB1cHBlciBib3VuZCBwZXJmb3JtYW5jZSBhZnRlciBhIHdoaWxlIHVubGVzcyBzb21ldGhpbmcgcmVncmVzc2VzIG1lYW53aGlsZVxuXHRcdFx0XHRcdFx0cGVyZm9ybWFuY2VUaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG5cdFx0XHRcdFx0XHRcdHNldFBlcmZvcm1hbmNlQ3VycmVudChnZXQoJ3BlcmZvcm1hbmNlJywgJ21heCcpKTtcblx0XHRcdFx0XHRcdFx0c2FmZURldGVjdENoYW5nZXMoY2RyKTtcblx0XHRcdFx0XHRcdH0sIHN0YXRlLnBlcmZvcm1hbmNlLmRlYm91bmNlKTtcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHR9LFxuXG5cdFx0XHRcdHNpemU6IHsgd2lkdGg6IDAsIGhlaWdodDogMCwgdG9wOiAwLCBsZWZ0OiAwLCB1cGRhdGVTdHlsZTogZmFsc2UgfSxcblx0XHRcdFx0dmlld3BvcnQ6IHtcblx0XHRcdFx0XHRpbml0aWFsRHByOiAwLFxuXHRcdFx0XHRcdGRwcjogMCxcblx0XHRcdFx0XHR3aWR0aDogMCxcblx0XHRcdFx0XHRoZWlnaHQ6IDAsXG5cdFx0XHRcdFx0dG9wOiAwLFxuXHRcdFx0XHRcdGxlZnQ6IDAsXG5cdFx0XHRcdFx0YXNwZWN0OiAwLFxuXHRcdFx0XHRcdGRpc3RhbmNlOiAwLFxuXHRcdFx0XHRcdGZhY3RvcjogMCxcblx0XHRcdFx0XHRnZXRDdXJyZW50Vmlld3BvcnQsXG5cdFx0XHRcdH0sXG5cblx0XHRcdFx0c2V0RXZlbnRzOiAoZXZlbnRzOiBQYXJ0aWFsPE5ndEV2ZW50TWFuYWdlcjxhbnk+PikgPT5cblx0XHRcdFx0XHRzZXQoKHN0YXRlKSA9PiAoeyAuLi5zdGF0ZSwgZXZlbnRzOiB7IC4uLnN0YXRlLmV2ZW50cywgLi4uZXZlbnRzIH0gfSkpLFxuXHRcdFx0XHRzZXRTaXplOiAod2lkdGg6IG51bWJlciwgaGVpZ2h0OiBudW1iZXIsIHRvcD86IG51bWJlciwgbGVmdD86IG51bWJlcikgPT4ge1xuXHRcdFx0XHRcdGNvbnN0IGNhbWVyYSA9IGdldCgnY2FtZXJhJyk7XG5cdFx0XHRcdFx0Y29uc3Qgc2l6ZSA9IHsgd2lkdGgsIGhlaWdodCwgdG9wOiB0b3AgfHwgMCwgbGVmdDogbGVmdCB8fCAwIH07XG5cdFx0XHRcdFx0c2V0KChzdGF0ZSkgPT4gKHtcblx0XHRcdFx0XHRcdHNpemUsXG5cdFx0XHRcdFx0XHR2aWV3cG9ydDogeyAuLi5zdGF0ZS52aWV3cG9ydCwgLi4uZ2V0Q3VycmVudFZpZXdwb3J0KGNhbWVyYSwgZGVmYXVsdFRhcmdldCwgc2l6ZSkgfSxcblx0XHRcdFx0XHR9KSk7XG5cdFx0XHRcdH0sXG5cdFx0XHRcdHNldERwcjogKGRwcjogTmd0RHByKSA9PlxuXHRcdFx0XHRcdHNldCgoc3RhdGUpID0+IHtcblx0XHRcdFx0XHRcdGNvbnN0IHJlc29sdmVkID0gbWFrZURwcihkcHIsIHdpbmRvdyk7XG5cdFx0XHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdFx0XHR2aWV3cG9ydDoge1xuXHRcdFx0XHRcdFx0XHRcdC4uLnN0YXRlLnZpZXdwb3J0LFxuXHRcdFx0XHRcdFx0XHRcdGRwcjogcmVzb2x2ZWQsXG5cdFx0XHRcdFx0XHRcdFx0aW5pdGlhbERwcjogc3RhdGUudmlld3BvcnQuaW5pdGlhbERwciB8fCByZXNvbHZlZCxcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0fSksXG5cdFx0XHRcdHNldEZyYW1lbG9vcDogKGZyYW1lbG9vcDogJ2Fsd2F5cycgfCAnZGVtYW5kJyB8ICduZXZlcicgPSAnYWx3YXlzJykgPT4ge1xuXHRcdFx0XHRcdGNvbnN0IGNsb2NrID0gZ2V0KCdjbG9jaycpO1xuXG5cdFx0XHRcdFx0Ly8gaWYgZnJhbWVsb29wID09PSBcIm5ldmVyXCIgY2xvY2suZWxhcHNlZFRpbWUgaXMgdXBkYXRlZCB1c2luZyBhZHZhbmNlKHRpbWVzdGFtcClcblx0XHRcdFx0XHRjbG9jay5zdG9wKCk7XG5cdFx0XHRcdFx0Y2xvY2suZWxhcHNlZFRpbWUgPSAwO1xuXG5cdFx0XHRcdFx0aWYgKGZyYW1lbG9vcCAhPT0gJ25ldmVyJykge1xuXHRcdFx0XHRcdFx0Y2xvY2suc3RhcnQoKTtcblx0XHRcdFx0XHRcdGNsb2NrLmVsYXBzZWRUaW1lID0gMDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0c2V0KCgpID0+ICh7IGZyYW1lbG9vcCB9KSk7XG5cdFx0XHRcdH0sXG5cblx0XHRcdFx0cHJldmlvdXNSb290OiBwYXJlbnQsXG5cdFx0XHRcdGludGVybmFsOiB7XG5cdFx0XHRcdFx0YWN0aXZlOiBmYWxzZSxcblx0XHRcdFx0XHRwcmlvcml0eTogMCxcblx0XHRcdFx0XHRmcmFtZXM6IDAsXG5cdFx0XHRcdFx0bGFzdEV2ZW50OiBuZXcgRWxlbWVudFJlZihudWxsKSxcblx0XHRcdFx0XHRpbnRlcmFjdGlvbjogW10sXG5cdFx0XHRcdFx0aG92ZXJlZDogbmV3IE1hcCgpLFxuXHRcdFx0XHRcdHN1YnNjcmliZXJzOiBbXSxcblx0XHRcdFx0XHRpbml0aWFsQ2xpY2s6IFswLCAwXSxcblx0XHRcdFx0XHRpbml0aWFsSGl0czogW10sXG5cdFx0XHRcdFx0Y2FwdHVyZWRNYXA6IG5ldyBNYXAoKSxcblxuXHRcdFx0XHRcdHN1YnNjcmliZTogKFxuXHRcdFx0XHRcdFx0Y2FsbGJhY2s6IE5ndEJlZm9yZVJlbmRlclJlY29yZFsnY2FsbGJhY2snXSxcblx0XHRcdFx0XHRcdHByaW9yaXR5ID0gMCxcblx0XHRcdFx0XHRcdF9zdG9yZTogTmd0U2lnbmFsU3RvcmU8Tmd0U3RhdGU+ID0gc3RvcmUsXG5cdFx0XHRcdFx0KSA9PiB7XG5cdFx0XHRcdFx0XHRjb25zdCBpbnRlcm5hbCA9IGdldCgnaW50ZXJuYWwnKTtcblx0XHRcdFx0XHRcdC8vIElmIHRoaXMgc3Vic2NyaXB0aW9uIHdhcyBnaXZlbiBhIHByaW9yaXR5LCBpdCB0YWtlcyByZW5kZXJpbmcgaW50byBpdHMgb3duIGhhbmRzXG5cdFx0XHRcdFx0XHQvLyBGb3IgdGhhdCByZWFzb24gd2Ugc3dpdGNoIG9mZiBhdXRvbWF0aWMgcmVuZGVyaW5nIGFuZCBpbmNyZWFzZSB0aGUgbWFudWFsIGZsYWdcblx0XHRcdFx0XHRcdC8vIEFzIGxvbmcgYXMgdGhpcyBmbGFnIGlzIHBvc2l0aXZlIHRoZXJlIGNhbiBiZSBubyBpbnRlcm5hbCByZW5kZXJpbmcgYXQgYWxsXG5cdFx0XHRcdFx0XHQvLyBiZWNhdXNlIHRoZXJlIGNvdWxkIGJlIG11bHRpcGxlIHJlbmRlciBzdWJzY3JpcHRpb25zXG5cdFx0XHRcdFx0XHRpbnRlcm5hbC5wcmlvcml0eSA9IGludGVybmFsLnByaW9yaXR5ICsgKHByaW9yaXR5ID4gMCA/IDEgOiAwKTtcblx0XHRcdFx0XHRcdGludGVybmFsLnN1YnNjcmliZXJzLnB1c2goeyBjYWxsYmFjaywgcHJpb3JpdHksIHN0b3JlIH0pO1xuXHRcdFx0XHRcdFx0Ly8gUmVnaXN0ZXIgc3Vic2NyaWJlciBhbmQgc29ydCBsYXllcnMgZnJvbSBsb3dlc3QgdG8gaGlnaGVzdCwgbWVhbmluZyxcblx0XHRcdFx0XHRcdC8vIGhpZ2hlc3QgcHJpb3JpdHkgcmVuZGVycyBsYXN0IChvbiB0b3Agb2YgdGhlIG90aGVyIGZyYW1lcylcblx0XHRcdFx0XHRcdGludGVybmFsLnN1YnNjcmliZXJzID0gaW50ZXJuYWwuc3Vic2NyaWJlcnMuc29ydChcblx0XHRcdFx0XHRcdFx0KGEsIGIpID0+IChhLnByaW9yaXR5IHx8IDApIC0gKGIucHJpb3JpdHkgfHwgMCksXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0cmV0dXJuICgpID0+IHtcblx0XHRcdFx0XHRcdFx0Y29uc3QgaW50ZXJuYWwgPSBnZXQoJ2ludGVybmFsJyk7XG5cdFx0XHRcdFx0XHRcdGlmIChpbnRlcm5hbD8uc3Vic2NyaWJlcnMpIHtcblx0XHRcdFx0XHRcdFx0XHQvLyBEZWNyZWFzZSBtYW51YWwgZmxhZyBpZiB0aGlzIHN1YnNjcmlwdGlvbiBoYWQgYSBwcmlvcml0eVxuXHRcdFx0XHRcdFx0XHRcdGludGVybmFsLnByaW9yaXR5ID0gaW50ZXJuYWwucHJpb3JpdHkgLSAocHJpb3JpdHkgPiAwID8gMSA6IDApO1xuXHRcdFx0XHRcdFx0XHRcdC8vIFJlbW92ZSBzdWJzY3JpYmVyIGZyb20gbGlzdFxuXHRcdFx0XHRcdFx0XHRcdGludGVybmFsLnN1YnNjcmliZXJzID0gaW50ZXJuYWwuc3Vic2NyaWJlcnMuZmlsdGVyKChzKSA9PiBzLmNhbGxiYWNrICE9PSBjYWxsYmFjayk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0fSxcblx0XHRcdH07XG5cdFx0fSk7XG5cblx0XHQvLyBOT1RFOiBhc3NpZ24gcG9pbnRlck1pc3NlZCQgc28gd2UgY2FuIHVzZSBpdCBpbiBldmVudHNcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoc3RvcmUsICdwb2ludGVyTWlzc2VkJCcsIHsgZ2V0OiAoKSA9PiBwb2ludGVyTWlzc2VkJCB9KTtcblxuXHRcdGNvbnN0IHN0YXRlID0gc3RvcmUuZ2V0KCk7XG5cblx0XHRsZXQgb2xkU2l6ZSA9IHN0YXRlLnNpemU7XG5cdFx0bGV0IG9sZERwciA9IHN0YXRlLnZpZXdwb3J0LmRwcjtcblx0XHRsZXQgb2xkQ2FtZXJhID0gc3RhdGUuY2FtZXJhO1xuXG5cdFx0Y29uc3QgX2NhbWVyYSA9IHN0b3JlLnNlbGVjdCgnY2FtZXJhJyk7XG5cdFx0Y29uc3QgX3NpemUgPSBzdG9yZS5zZWxlY3QoJ3NpemUnKTtcblx0XHRjb25zdCBfdmlld3BvcnQgPSBzdG9yZS5zZWxlY3QoJ3ZpZXdwb3J0Jyk7XG5cblx0XHRlZmZlY3QoKCkgPT4ge1xuXHRcdFx0Y29uc3QgW2NhbWVyYSwgc2l6ZSwgdmlld3BvcnQsIGdsXSA9IFtfY2FtZXJhKCksIF9zaXplKCksIF92aWV3cG9ydCgpLCBzdG9yZS5nZXQoJ2dsJyldO1xuXG5cdFx0XHQvLyBSZXNpemUgY2FtZXJhIGFuZCByZW5kZXJlciBvbiBjaGFuZ2VzIHRvIHNpemUgYW5kIHBpeGVscmF0aW9cblx0XHRcdGlmIChzaXplICE9PSBvbGRTaXplIHx8IHZpZXdwb3J0LmRwciAhPT0gb2xkRHByKSB7XG5cdFx0XHRcdG9sZFNpemUgPSBzaXplO1xuXHRcdFx0XHRvbGREcHIgPSB2aWV3cG9ydC5kcHI7XG5cdFx0XHRcdC8vIFVwZGF0ZSBjYW1lcmEgJiByZW5kZXJlclxuXHRcdFx0XHR1cGRhdGVDYW1lcmEoY2FtZXJhLCBzaXplKTtcblx0XHRcdFx0Z2wuc2V0UGl4ZWxSYXRpbyh2aWV3cG9ydC5kcHIpO1xuXG5cdFx0XHRcdGNvbnN0IHVwZGF0ZVN0eWxlID1cblx0XHRcdFx0XHR0eXBlb2YgSFRNTENhbnZhc0VsZW1lbnQgIT09ICd1bmRlZmluZWQnICYmIGdsLmRvbUVsZW1lbnQgaW5zdGFuY2VvZiBIVE1MQ2FudmFzRWxlbWVudDtcblx0XHRcdFx0Z2wuc2V0U2l6ZShzaXplLndpZHRoLCBzaXplLmhlaWdodCwgdXBkYXRlU3R5bGUpO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBVcGRhdGUgdmlld3BvcnQgb25jZSB0aGUgY2FtZXJhIGNoYW5nZXNcblx0XHRcdGlmIChjYW1lcmEgIT09IG9sZENhbWVyYSkge1xuXHRcdFx0XHRvbGRDYW1lcmEgPSBjYW1lcmE7XG5cdFx0XHRcdHVwZGF0ZUNhbWVyYShjYW1lcmEsIHNpemUpO1xuXHRcdFx0XHQvLyBVcGRhdGUgdmlld3BvcnRcblx0XHRcdFx0c3RvcmUuc2V0KChzdGF0ZSkgPT4gKHtcblx0XHRcdFx0XHR2aWV3cG9ydDogeyAuLi5zdGF0ZS52aWV3cG9ydCwgLi4uc3RhdGUudmlld3BvcnQuZ2V0Q3VycmVudFZpZXdwb3J0KGNhbWVyYSkgfSxcblx0XHRcdFx0fSkpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXG5cdFx0cmV0dXJuIHN0b3JlO1xuXHR9KTtcbn1cblxuZXhwb3J0IHR5cGUgTmd0U3RvcmUgPSBSZXR1cm5UeXBlPHR5cGVvZiBzdG9yZUZhY3Rvcnk+O1xuXG5leHBvcnQgY29uc3QgTkdUX1NUT1JFID0gbmV3IEluamVjdGlvblRva2VuPE5ndFN0b3JlPignTmd0U3RvcmUgdG9rZW4nKTtcbmV4cG9ydCBjb25zdCBbaW5qZWN0Tmd0U3RvcmUsIHByb3ZpZGVOZ3RTdG9yZV0gPSBjcmVhdGVJbmplY3Rpb25Ub2tlbihzdG9yZUZhY3RvcnksIHtcblx0aXNSb290OiBmYWxzZSxcblx0ZGVwczogW05HVF9MT09QLCBET0NVTUVOVCwgSW5qZWN0b3IsIFtuZXcgT3B0aW9uYWwoKSwgbmV3IFNraXBTZWxmKCksIE5HVF9TVE9SRV1dLFxuXHR0b2tlbjogTkdUX1NUT1JFLFxufSk7XG4iXX0=
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhyZWUtdHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUvc3JjL2xpYi90aHJlZS10eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgVEhSRUUgZnJvbSAndGhyZWUnO1xuaW1wb3J0IHR5cGUgeyBOZ3RJbmplY3RlZFJlZiB9IGZyb20gJy4vZGkvcmVmJztcbmltcG9ydCB0eXBlIHtcbiAgICBOZ3RBZnRlckF0dGFjaCxcbiAgICBOZ3RBbnlSZWNvcmQsXG4gICAgTmd0QXR0YWNoRnVuY3Rpb24sXG4gICAgTmd0QmVmb3JlUmVuZGVyRXZlbnQsXG4gICAgTmd0RXZlbnRIYW5kbGVycyxcbiAgICBOZ3RJbnN0YW5jZU5vZGUsXG59IGZyb20gJy4vdHlwZXMnO1xuXG5leHBvcnQgdHlwZSBOZ3ROb25GdW5jdGlvbktleXM8VD4gPSB7IFtLIGluIGtleW9mIFRdLT86IFRbS10gZXh0ZW5kcyBGdW5jdGlvbiA/IG5ldmVyIDogSyB9W2tleW9mIFRdO1xuZXhwb3J0IHR5cGUgTmd0T3ZlcndyaXRlPFQsIE8+ID0gT21pdDxULCBOZ3ROb25GdW5jdGlvbktleXM8Tz4+ICYgTztcblxuZXhwb3J0IHR5cGUgTmd0RXh0ZW5kZWRDb2xvcnM8VD4gPSB7XG4gICAgW0sgaW4ga2V5b2YgVF06IFRbS10gZXh0ZW5kcyBUSFJFRS5Db2xvciB8IHVuZGVmaW5lZCA/IFRIUkVFLkNvbG9yUmVwcmVzZW50YXRpb24gOiBUW0tdO1xufTtcblxuLyoqXG4gKiBJZiAqKlQqKiBjb250YWlucyBhIGNvbnN0cnVjdG9yLCBAc2VlIENvbnN0cnVjdG9yUGFyYW1ldGVycyBtdXN0IGJlIHVzZWQsIG90aGVyd2lzZSAqKlQqKi5cbiAqL1xudHlwZSBOZ3RBcmdzPFQ+ID0gVCBleHRlbmRzIG5ldyAoLi4uYXJnczogYW55KSA9PiBhbnkgPyBDb25zdHJ1Y3RvclBhcmFtZXRlcnM8VD4gOiBUO1xuXG5leHBvcnQgdHlwZSBOZ3RFdWxlciA9IFRIUkVFLkV1bGVyIHwgUGFyYW1ldGVyczxUSFJFRS5FdWxlclsnc2V0J10+O1xuZXhwb3J0IHR5cGUgTmd0TWF0cml4NCA9IFRIUkVFLk1hdHJpeDQgfCBQYXJhbWV0ZXJzPFRIUkVFLk1hdHJpeDRbJ3NldCddPiB8IFJlYWRvbmx5PFRIUkVFLk1hdHJpeDRbJ3NldCddPjtcblxuLyoqXG4gKiBUdXJuIGFuIGltcGxlbWVudGF0aW9uIG9mIFRIUkVFLlZlY3RvciBpbiB0byB0aGUgdHlwZSB0aGF0IGFuIHIzZiBjb21wb25lbnQgd291bGQgYWNjZXB0IGFzIGEgcHJvcC5cbiAqL1xudHlwZSBOZ3RWZWN0b3JMaWtlPFZlY3RvckNsYXNzIGV4dGVuZHMgVEhSRUUuVmVjdG9yPiA9XG4gICAgfCBWZWN0b3JDbGFzc1xuICAgIHwgUGFyYW1ldGVyczxWZWN0b3JDbGFzc1snc2V0J10+XG4gICAgfCBSZWFkb25seTxQYXJhbWV0ZXJzPFZlY3RvckNsYXNzWydzZXQnXT4+XG4gICAgfCBQYXJhbWV0ZXJzPFZlY3RvckNsYXNzWydzZXRTY2FsYXInXT5bMF07XG5cbmV4cG9ydCB0eXBlIE5ndFZlY3RvcjIgPSBOZ3RWZWN0b3JMaWtlPFRIUkVFLlZlY3RvcjI+O1xuZXhwb3J0IHR5cGUgTmd0VmVjdG9yMyA9IE5ndFZlY3Rvckxpa2U8VEhSRUUuVmVjdG9yMz47XG5leHBvcnQgdHlwZSBOZ3RWZWN0b3I0ID0gTmd0VmVjdG9yTGlrZTxUSFJFRS5WZWN0b3I0PjtcbmV4cG9ydCB0eXBlIE5ndExheWVycyA9IFRIUkVFLkxheWVycyB8IFBhcmFtZXRlcnM8VEhSRUUuTGF5ZXJzWydzZXQnXT5bMF07XG5leHBvcnQgdHlwZSBOZ3RRdWF0ZXJuaW9uID0gVEhSRUUuUXVhdGVybmlvbiB8IFBhcmFtZXRlcnM8VEhSRUUuUXVhdGVybmlvblsnc2V0J10+O1xuXG5leHBvcnQgaW50ZXJmYWNlIE5ndE5vZGVFdmVudE1hcDxUT3JpZ2luYWw+IHtcbiAgICBhZnRlckF0dGFjaDogTmd0QWZ0ZXJBdHRhY2g8Tmd0SW5zdGFuY2VOb2RlLCBUT3JpZ2luYWw+O1xuICAgIGFmdGVyVXBkYXRlOiBUT3JpZ2luYWw7XG4gICAgYmVmb3JlUmVuZGVyOiBOZ3RCZWZvcmVSZW5kZXJFdmVudDxUT3JpZ2luYWw+O1xufVxuXG5leHBvcnQgdHlwZSBOZ3ROb2RlRWxlbWVudDxUT3JpZ2luYWwsIFRDb25zdHJ1Y3Rvcj4gPSB7XG4gICAgYXR0YWNoOiBzdHJpbmcgfCBzdHJpbmdbXSB8IE5ndEF0dGFjaEZ1bmN0aW9uO1xuICAgIHJlZjogTmd0SW5qZWN0ZWRSZWY8VE9yaWdpbmFsPjtcbiAgICBhZGRFdmVudExpc3RlbmVyPFRFdmVudEtleSBleHRlbmRzIGtleW9mIE5ndE5vZGVFdmVudE1hcDxUT3JpZ2luYWw+PihcbiAgICAgICAgdHlwZTogVEV2ZW50S2V5LFxuICAgICAgICBsaXN0ZW5lcjogKHRoaXM6IE5ndE5vZGVFbGVtZW50PFRPcmlnaW5hbCwgVENvbnN0cnVjdG9yPiwgZXY6IE5ndE5vZGVFdmVudE1hcDxUT3JpZ2luYWw+W1RFdmVudEtleV0pID0+IGFueVxuICAgICk6IHZvaWQ7XG4gICAgcmVtb3ZlRXZlbnRMaXN0ZW5lcjxURXZlbnRLZXkgZXh0ZW5kcyBrZXlvZiBOZ3ROb2RlRXZlbnRNYXA8VE9yaWdpbmFsPj4oXG4gICAgICAgIHR5cGU6IFRFdmVudEtleSxcbiAgICAgICAgbGlzdGVuZXI6ICh0aGlzOiBOZ3ROb2RlRWxlbWVudDxUT3JpZ2luYWwsIFRDb25zdHJ1Y3Rvcj4sIGV2OiBOZ3ROb2RlRXZlbnRNYXA8VE9yaWdpbmFsPltURXZlbnRLZXldKSA9PiBhbnlcbiAgICApOiB2b2lkO1xuICAgIF9fbmd0X2FyZ3NfXzogTmd0QXJnczxUQ29uc3RydWN0b3I+O1xufTtcblxuZXhwb3J0IHR5cGUgTmd0Tm9kZTxUT3JpZ2luYWwsIFRDb25zdHJ1Y3RvciwgVE5vRXZlbnQgPSBOb0V2ZW50PFRPcmlnaW5hbD4+ID0gTmd0RXh0ZW5kZWRDb2xvcnM8XG4gICAgTmd0T3ZlcndyaXRlPFBhcnRpYWw8VE5vRXZlbnQ+LCBOZ3ROb2RlRWxlbWVudDxUT3JpZ2luYWwsIFRDb25zdHJ1Y3Rvcj4+XG4+O1xuXG5leHBvcnQgdHlwZSBOZ3RPYmplY3QzREV2ZW50c01hcCA9IHtcbiAgICBbVEV2ZW50IGluIGtleW9mIE5ndEV2ZW50SGFuZGxlcnNdLT86IFBhcmFtZXRlcnM8Tm9uTnVsbGFibGU8Tmd0RXZlbnRIYW5kbGVyc1tURXZlbnRdPj5bMF07XG59O1xuXG5leHBvcnQgdHlwZSBOZ3RPYmplY3QzRE5vZGU8VE9yaWdpbmFsLCBUQ29uc3RydWN0b3IsIFROb0V2ZW50ID0gTm9FdmVudDxUT3JpZ2luYWw+PiA9IE5ndE92ZXJ3cml0ZTxcbiAgICBOZ3ROb2RlPFRPcmlnaW5hbCwgVENvbnN0cnVjdG9yLCBUTm9FdmVudD4sXG4gICAge1xuICAgICAgICBwb3NpdGlvbjogTmd0VmVjdG9yMztcbiAgICAgICAgdXA6IE5ndFZlY3RvcjM7XG4gICAgICAgIHNjYWxlOiBOZ3RWZWN0b3IzO1xuICAgICAgICByb3RhdGlvbjogTmd0RXVsZXI7XG4gICAgICAgIG1hdHJpeDogTmd0TWF0cml4NDtcbiAgICAgICAgcXVhdGVybmlvbjogTmd0UXVhdGVybmlvbjtcbiAgICAgICAgbGF5ZXJzOiBOZ3RMYXllcnM7XG4gICAgICAgIGRpc3Bvc2U6ICgoKSA9PiB2b2lkKSB8IG51bGw7XG4gICAgICAgIGFkZEV2ZW50TGlzdGVuZXI8VEV2ZW50S2V5IGV4dGVuZHMga2V5b2YgTmd0T2JqZWN0M0RFdmVudHNNYXA+KFxuICAgICAgICAgICAgdHlwZTogVEV2ZW50S2V5LFxuICAgICAgICAgICAgbGlzdGVuZXI6ICh0aGlzOiBOZ3RPYmplY3QzRE5vZGU8VE9yaWdpbmFsLCBUQ29uc3RydWN0b3I+LCBldjogTmd0T2JqZWN0M0RFdmVudHNNYXBbVEV2ZW50S2V5XSkgPT4gYW55XG4gICAgICAgICk6IHZvaWQ7XG4gICAgICAgIHJlbW92ZUV2ZW50TGlzdGVuZXI8VEV2ZW50S2V5IGV4dGVuZHMga2V5b2YgTmd0T2JqZWN0M0RFdmVudHNNYXA+KFxuICAgICAgICAgICAgdHlwZTogVEV2ZW50S2V5LFxuICAgICAgICAgICAgbGlzdGVuZXI6ICh0aGlzOiBOZ3RPYmplY3QzRE5vZGU8VE9yaWdpbmFsLCBUQ29uc3RydWN0b3I+LCBldjogTmd0T2JqZWN0M0RFdmVudHNNYXBbVEV2ZW50S2V5XSkgPT4gYW55XG4gICAgICAgICk6IHZvaWQ7XG4gICAgfVxuPjtcblxudHlwZSBOb0V2ZW50PFQ+ID0gT21pdDxULCAnYWRkRXZlbnRMaXN0ZW5lcicgfCAncmVtb3ZlRXZlbnRMaXN0ZW5lcic+O1xuXG5leHBvcnQgdHlwZSBOZ3RHZW9tZXRyeTxUR2VvbWV0cnkgZXh0ZW5kcyBUSFJFRS5CdWZmZXJHZW9tZXRyeSwgVENvbnN0cnVjdG9yPiA9IE5ndE5vZGU8VEdlb21ldHJ5LCBUQ29uc3RydWN0b3I+O1xuZXhwb3J0IHR5cGUgTmd0TWF0ZXJpYWw8VE1hdGVyaWFsIGV4dGVuZHMgVEhSRUUuTWF0ZXJpYWwsIFRDb25zdHJ1Y3Rvcj4gPSBOZ3ROb2RlPFRNYXRlcmlhbCwgVENvbnN0cnVjdG9yPjtcbmV4cG9ydCB0eXBlIE5ndExpZ2h0PFQgZXh0ZW5kcyBUSFJFRS5MaWdodCwgUD4gPSBOZ3RPYmplY3QzRE5vZGU8VCwgUD47XG5cbmV4cG9ydCB0eXBlIE5ndE9iamVjdDNEID0gTmd0T2JqZWN0M0ROb2RlPFRIUkVFLk9iamVjdDNELCB0eXBlb2YgVEhSRUUuT2JqZWN0M0Q+O1xuZXhwb3J0IHR5cGUgTmd0QXVkaW8gPSBOZ3RPYmplY3QzRE5vZGU8VEhSRUUuQXVkaW8sIHR5cGVvZiBUSFJFRS5BdWRpbz47XG5leHBvcnQgdHlwZSBOZ3RBdWRpb0xpc3RlbmVyID0gTmd0T2JqZWN0M0ROb2RlPFRIUkVFLkF1ZGlvTGlzdGVuZXIsIHR5cGVvZiBUSFJFRS5BdWRpb0xpc3RlbmVyPjtcbmV4cG9ydCB0eXBlIE5ndFBvc2l0aW9uYWxBdWRpbyA9IE5ndE9iamVjdDNETm9kZTxUSFJFRS5Qb3NpdGlvbmFsQXVkaW8sIHR5cGVvZiBUSFJFRS5Qb3NpdGlvbmFsQXVkaW8+O1xuXG5leHBvcnQgdHlwZSBOZ3RNZXNoID0gTmd0T2JqZWN0M0ROb2RlPFRIUkVFLk1lc2gsIHR5cGVvZiBUSFJFRS5NZXNoPjtcbmV4cG9ydCB0eXBlIE5ndEluc3RhbmNlZE1lc2ggPSBOZ3RPYmplY3QzRE5vZGU8VEhSRUUuSW5zdGFuY2VkTWVzaCwgdHlwZW9mIFRIUkVFLkluc3RhbmNlZE1lc2g+O1xuZXhwb3J0IHR5cGUgTmd0U2NlbmUgPSBOZ3RPYmplY3QzRE5vZGU8VEhSRUUuU2NlbmUsIHR5cGVvZiBUSFJFRS5TY2VuZT47XG5leHBvcnQgdHlwZSBOZ3RTcHJpdGUgPSBOZ3RPYmplY3QzRE5vZGU8VEhSRUUuU3ByaXRlLCB0eXBlb2YgVEhSRUUuU3ByaXRlPjtcbmV4cG9ydCB0eXBlIE5ndExPRCA9IE5ndE9iamVjdDNETm9kZTxUSFJFRS5MT0QsIHR5cGVvZiBUSFJFRS5MT0Q+O1xuZXhwb3J0IHR5cGUgTmd0U2tpbm5lZE1lc2ggPSBOZ3RPYmplY3QzRE5vZGU8VEhSRUUuU2tpbm5lZE1lc2gsIHR5cGVvZiBUSFJFRS5Ta2lubmVkTWVzaD47XG5cbmV4cG9ydCB0eXBlIE5ndFNrZWxldG9uID0gTmd0T2JqZWN0M0ROb2RlPFRIUkVFLlNrZWxldG9uLCB0eXBlb2YgVEhSRUUuU2tlbGV0b24+O1xuZXhwb3J0IHR5cGUgTmd0Qm9uZSA9IE5ndE9iamVjdDNETm9kZTxUSFJFRS5Cb25lLCB0eXBlb2YgVEhSRUUuQm9uZT47XG5leHBvcnQgdHlwZSBOZ3RMaW5lID0gTmd0T2JqZWN0M0ROb2RlPFRIUkVFLkxpbmUsIHR5cGVvZiBUSFJFRS5MaW5lPjtcbmV4cG9ydCB0eXBlIE5ndExpbmVTZWdtZW50cyA9IE5ndE9iamVjdDNETm9kZTxUSFJFRS5MaW5lU2VnbWVudHMsIHR5cGVvZiBUSFJFRS5MaW5lU2VnbWVudHM+O1xuZXhwb3J0IHR5cGUgTmd0TGluZUxvb3AgPSBOZ3RPYmplY3QzRE5vZGU8VEhSRUUuTGluZUxvb3AsIHR5cGVvZiBUSFJFRS5MaW5lTG9vcD47XG5leHBvcnQgdHlwZSBOZ3RQb2ludHMgPSBOZ3RPYmplY3QzRE5vZGU8VEhSRUUuUG9pbnRzLCB0eXBlb2YgVEhSRUUuUG9pbnRzPjtcbmV4cG9ydCB0eXBlIE5ndEdyb3VwID0gTmd0T2JqZWN0M0ROb2RlPFRIUkVFLkdyb3VwLCB0eXBlb2YgVEhSRUUuR3JvdXA+O1xuXG5leHBvcnQgdHlwZSBOZ3RDYW1lcmFOb2RlID0gTmd0T2JqZWN0M0ROb2RlPFRIUkVFLkNhbWVyYSwgdHlwZW9mIFRIUkVFLkNhbWVyYT47XG5leHBvcnQgdHlwZSBOZ3RQZXJzcGVjdGl2ZUNhbWVyYSA9IE5ndE9iamVjdDNETm9kZTxUSFJFRS5QZXJzcGVjdGl2ZUNhbWVyYSwgdHlwZW9mIFRIUkVFLlBlcnNwZWN0aXZlQ2FtZXJhPjtcbmV4cG9ydCB0eXBlIE5ndE9ydGhvZ3JhcGhpY0NhbWVyYSA9IE5ndE9iamVjdDNETm9kZTxUSFJFRS5PcnRob2dyYXBoaWNDYW1lcmEsIHR5cGVvZiBUSFJFRS5PcnRob2dyYXBoaWNDYW1lcmE+O1xuZXhwb3J0IHR5cGUgTmd0Q3ViZUNhbWVyYSA9IE5ndE9iamVjdDNETm9kZTxUSFJFRS5DdWJlQ2FtZXJhLCB0eXBlb2YgVEhSRUUuQ3ViZUNhbWVyYT47XG5leHBvcnQgdHlwZSBOZ3RBcnJheUNhbWVyYSA9IE5ndE9iamVjdDNETm9kZTxUSFJFRS5BcnJheUNhbWVyYSwgdHlwZW9mIFRIUkVFLkFycmF5Q2FtZXJhPjtcblxuZXhwb3J0IHR5cGUgTmd0SW5zdGFuY2VkQnVmZmVyR2VvbWV0cnkgPSBOZ3RHZW9tZXRyeTxcbiAgICBUSFJFRS5JbnN0YW5jZWRCdWZmZXJHZW9tZXRyeSxcbiAgICB0eXBlb2YgVEhSRUUuSW5zdGFuY2VkQnVmZmVyR2VvbWV0cnlcbj47XG5leHBvcnQgdHlwZSBOZ3RCdWZmZXJHZW9tZXRyeSA9IE5ndEdlb21ldHJ5PFRIUkVFLkJ1ZmZlckdlb21ldHJ5LCB0eXBlb2YgVEhSRUUuQnVmZmVyR2VvbWV0cnk+O1xuZXhwb3J0IHR5cGUgTmd0V2lyZWZyYW1lR2VvbWV0cnkgPSBOZ3RHZW9tZXRyeTxUSFJFRS5XaXJlZnJhbWVHZW9tZXRyeSwgdHlwZW9mIFRIUkVFLldpcmVmcmFtZUdlb21ldHJ5PjtcbmV4cG9ydCB0eXBlIE5ndFRldHJhaGVkcm9uR2VvbWV0cnkgPSBOZ3RHZW9tZXRyeTxUSFJFRS5UZXRyYWhlZHJvbkdlb21ldHJ5LCB0eXBlb2YgVEhSRUUuVGV0cmFoZWRyb25HZW9tZXRyeT47XG5leHBvcnQgdHlwZSBOZ3RPY3RhaGVkcm9uR2VvbWV0cnkgPSBOZ3RHZW9tZXRyeTxUSFJFRS5PY3RhaGVkcm9uR2VvbWV0cnksIHR5cGVvZiBUSFJFRS5PY3RhaGVkcm9uR2VvbWV0cnk+O1xuZXhwb3J0IHR5cGUgTmd0SWNvc2FoZWRyb25HZW9tZXRyeSA9IE5ndEdlb21ldHJ5PFRIUkVFLkljb3NhaGVkcm9uR2VvbWV0cnksIHR5cGVvZiBUSFJFRS5JY29zYWhlZHJvbkdlb21ldHJ5PjtcbmV4cG9ydCB0eXBlIE5ndERvZGVjYWhlZHJvbkdlb21ldHJ5ID0gTmd0R2VvbWV0cnk8VEhSRUUuRG9kZWNhaGVkcm9uR2VvbWV0cnksIHR5cGVvZiBUSFJFRS5Eb2RlY2FoZWRyb25HZW9tZXRyeT47XG5leHBvcnQgdHlwZSBOZ3RQb2x5aGVkcm9uR2VvbWV0cnkgPSBOZ3RHZW9tZXRyeTxUSFJFRS5Qb2x5aGVkcm9uR2VvbWV0cnksIHR5cGVvZiBUSFJFRS5Qb2x5aGVkcm9uR2VvbWV0cnk+O1xuZXhwb3J0IHR5cGUgTmd0VHViZUdlb21ldHJ5ID0gTmd0R2VvbWV0cnk8VEhSRUUuVHViZUdlb21ldHJ5LCB0eXBlb2YgVEhSRUUuVHViZUdlb21ldHJ5PjtcbmV4cG9ydCB0eXBlIE5ndFRvcnVzS25vdEdlb21ldHJ5ID0gTmd0R2VvbWV0cnk8VEhSRUUuVG9ydXNLbm90R2VvbWV0cnksIHR5cGVvZiBUSFJFRS5Ub3J1c0tub3RHZW9tZXRyeT47XG5leHBvcnQgdHlwZSBOZ3RUb3J1c0dlb21ldHJ5ID0gTmd0R2VvbWV0cnk8VEhSRUUuVG9ydXNHZW9tZXRyeSwgdHlwZW9mIFRIUkVFLlRvcnVzR2VvbWV0cnk+O1xuZXhwb3J0IHR5cGUgTmd0U3BoZXJlR2VvbWV0cnkgPSBOZ3RHZW9tZXRyeTxUSFJFRS5TcGhlcmVHZW9tZXRyeSwgdHlwZW9mIFRIUkVFLlNwaGVyZUdlb21ldHJ5PjtcbmV4cG9ydCB0eXBlIE5ndFJpbmdHZW9tZXRyeSA9IE5ndEdlb21ldHJ5PFRIUkVFLlJpbmdHZW9tZXRyeSwgdHlwZW9mIFRIUkVFLlJpbmdHZW9tZXRyeT47XG5leHBvcnQgdHlwZSBOZ3RQbGFuZUdlb21ldHJ5ID0gTmd0R2VvbWV0cnk8VEhSRUUuUGxhbmVHZW9tZXRyeSwgdHlwZW9mIFRIUkVFLlBsYW5lR2VvbWV0cnk+O1xuZXhwb3J0IHR5cGUgTmd0TGF0aGVHZW9tZXRyeSA9IE5ndEdlb21ldHJ5PFRIUkVFLkxhdGhlR2VvbWV0cnksIHR5cGVvZiBUSFJFRS5MYXRoZUdlb21ldHJ5PjtcbmV4cG9ydCB0eXBlIE5ndFNoYXBlR2VvbWV0cnkgPSBOZ3RHZW9tZXRyeTxUSFJFRS5TaGFwZUdlb21ldHJ5LCB0eXBlb2YgVEhSRUUuU2hhcGVHZW9tZXRyeT47XG5leHBvcnQgdHlwZSBOZ3RFeHRydWRlR2VvbWV0cnkgPSBOZ3RHZW9tZXRyeTxUSFJFRS5FeHRydWRlR2VvbWV0cnksIHR5cGVvZiBUSFJFRS5FeHRydWRlR2VvbWV0cnk+O1xuZXhwb3J0IHR5cGUgTmd0RWRnZXNHZW9tZXRyeSA9IE5ndEdlb21ldHJ5PFRIUkVFLkVkZ2VzR2VvbWV0cnksIHR5cGVvZiBUSFJFRS5FZGdlc0dlb21ldHJ5PjtcbmV4cG9ydCB0eXBlIE5ndENvbmVHZW9tZXRyeSA9IE5ndEdlb21ldHJ5PFRIUkVFLkNvbmVHZW9tZXRyeSwgdHlwZW9mIFRIUkVFLkNvbmVHZW9tZXRyeT47XG5leHBvcnQgdHlwZSBOZ3RDeWxpbmRlckdlb21ldHJ5ID0gTmd0R2VvbWV0cnk8VEhSRUUuQ3lsaW5kZXJHZW9tZXRyeSwgdHlwZW9mIFRIUkVFLkN5bGluZGVyR2VvbWV0cnk+O1xuZXhwb3J0IHR5cGUgTmd0Q2lyY2xlR2VvbWV0cnkgPSBOZ3RHZW9tZXRyeTxUSFJFRS5DaXJjbGVHZW9tZXRyeSwgdHlwZW9mIFRIUkVFLkNpcmNsZUdlb21ldHJ5PjtcbmV4cG9ydCB0eXBlIE5ndEJveEdlb21ldHJ5ID0gTmd0R2VvbWV0cnk8VEhSRUUuQm94R2VvbWV0cnksIHR5cGVvZiBUSFJFRS5Cb3hHZW9tZXRyeT47XG5leHBvcnQgdHlwZSBOZ3RDYXBzdWxlR2VvbWV0cnkgPSBOZ3RHZW9tZXRyeTxUSFJFRS5DYXBzdWxlR2VvbWV0cnksIHR5cGVvZiBUSFJFRS5DYXBzdWxlR2VvbWV0cnk+O1xuXG5leHBvcnQgdHlwZSBOZ3RTaGFkb3dNYXRlcmlhbCA9IE5ndE1hdGVyaWFsPFRIUkVFLlNoYWRvd01hdGVyaWFsLCBbVEhSRUUuU2hhZGVyTWF0ZXJpYWxQYXJhbWV0ZXJzXT47XG5leHBvcnQgdHlwZSBOZ3RTcHJpdGVNYXRlcmlhbCA9IE5ndE1hdGVyaWFsPFRIUkVFLlNwcml0ZU1hdGVyaWFsLCBbVEhSRUUuU3ByaXRlTWF0ZXJpYWxQYXJhbWV0ZXJzXT47XG5leHBvcnQgdHlwZSBOZ3RSYXdTaGFkZXJNYXRlcmlhbCA9IE5ndE1hdGVyaWFsPFRIUkVFLlJhd1NoYWRlck1hdGVyaWFsLCBbVEhSRUUuU2hhZGVyTWF0ZXJpYWxQYXJhbWV0ZXJzXT47XG5leHBvcnQgdHlwZSBOZ3RTaGFkZXJNYXRlcmlhbCA9IE5ndE1hdGVyaWFsPFRIUkVFLlNoYWRlck1hdGVyaWFsLCBbVEhSRUUuU2hhZGVyTWF0ZXJpYWxQYXJhbWV0ZXJzXT47XG5leHBvcnQgdHlwZSBOZ3RQb2ludHNNYXRlcmlhbCA9IE5ndE1hdGVyaWFsPFRIUkVFLlBvaW50c01hdGVyaWFsLCBbVEhSRUUuUG9pbnRzTWF0ZXJpYWxQYXJhbWV0ZXJzXT47XG5leHBvcnQgdHlwZSBOZ3RNZXNoUGh5c2ljYWxNYXRlcmlhbCA9IE5ndE1hdGVyaWFsPFRIUkVFLk1lc2hQaHlzaWNhbE1hdGVyaWFsLCBbVEhSRUUuTWVzaFBoeXNpY2FsTWF0ZXJpYWxQYXJhbWV0ZXJzXT47XG5leHBvcnQgdHlwZSBOZ3RNZXNoU3RhbmRhcmRNYXRlcmlhbCA9IE5ndE1hdGVyaWFsPFRIUkVFLk1lc2hTdGFuZGFyZE1hdGVyaWFsLCBbVEhSRUUuTWVzaFN0YW5kYXJkTWF0ZXJpYWxQYXJhbWV0ZXJzXT47XG5leHBvcnQgdHlwZSBOZ3RNZXNoUGhvbmdNYXRlcmlhbCA9IE5ndE1hdGVyaWFsPFRIUkVFLk1lc2hQaG9uZ01hdGVyaWFsLCBbVEhSRUUuTWVzaFBob25nTWF0ZXJpYWxQYXJhbWV0ZXJzXT47XG5leHBvcnQgdHlwZSBOZ3RNZXNoVG9vbk1hdGVyaWFsID0gTmd0TWF0ZXJpYWw8VEhSRUUuTWVzaFRvb25NYXRlcmlhbCwgW1RIUkVFLk1lc2hUb29uTWF0ZXJpYWxQYXJhbWV0ZXJzXT47XG5leHBvcnQgdHlwZSBOZ3RNZXNoTm9ybWFsTWF0ZXJpYWwgPSBOZ3RNYXRlcmlhbDxUSFJFRS5NZXNoTm9ybWFsTWF0ZXJpYWwsIFtUSFJFRS5NZXNoTm9ybWFsTWF0ZXJpYWxQYXJhbWV0ZXJzXT47XG5leHBvcnQgdHlwZSBOZ3RNZXNoTGFtYmVydE1hdGVyaWFsID0gTmd0TWF0ZXJpYWw8VEhSRUUuTWVzaExhbWJlcnRNYXRlcmlhbCwgW1RIUkVFLk1lc2hMYW1iZXJ0TWF0ZXJpYWxQYXJhbWV0ZXJzXT47XG5leHBvcnQgdHlwZSBOZ3RNZXNoRGVwdGhNYXRlcmlhbCA9IE5ndE1hdGVyaWFsPFRIUkVFLk1lc2hEZXB0aE1hdGVyaWFsLCBbVEhSRUUuTWVzaERlcHRoTWF0ZXJpYWxQYXJhbWV0ZXJzXT47XG5leHBvcnQgdHlwZSBOZ3RNZXNoRGlzdGFuY2VNYXRlcmlhbCA9IE5ndE1hdGVyaWFsPFRIUkVFLk1lc2hEaXN0YW5jZU1hdGVyaWFsLCBbVEhSRUUuTWVzaERpc3RhbmNlTWF0ZXJpYWxQYXJhbWV0ZXJzXT47XG5leHBvcnQgdHlwZSBOZ3RNZXNoQmFzaWNNYXRlcmlhbCA9IE5ndE1hdGVyaWFsPFRIUkVFLk1lc2hCYXNpY01hdGVyaWFsLCBbVEhSRUUuTWVzaEJhc2ljTWF0ZXJpYWxQYXJhbWV0ZXJzXT47XG5leHBvcnQgdHlwZSBOZ3RNZXNoTWF0Y2FwTWF0ZXJpYWwgPSBOZ3RNYXRlcmlhbDxUSFJFRS5NZXNoTWF0Y2FwTWF0ZXJpYWwsIFtUSFJFRS5NZXNoTWF0Y2FwTWF0ZXJpYWxQYXJhbWV0ZXJzXT47XG5leHBvcnQgdHlwZSBOZ3RMaW5lRGFzaGVkTWF0ZXJpYWwgPSBOZ3RNYXRlcmlhbDxUSFJFRS5MaW5lRGFzaGVkTWF0ZXJpYWwsIFtUSFJFRS5MaW5lRGFzaGVkTWF0ZXJpYWxQYXJhbWV0ZXJzXT47XG5leHBvcnQgdHlwZSBOZ3RMaW5lQmFzaWNNYXRlcmlhbCA9IE5ndE1hdGVyaWFsPFRIUkVFLkxpbmVCYXNpY01hdGVyaWFsLCBbVEhSRUUuTGluZUJhc2ljTWF0ZXJpYWxQYXJhbWV0ZXJzXT47XG5cbmV4cG9ydCB0eXBlIE5ndFByaW1pdGl2ZSA9IE5ndE5vZGVFbGVtZW50PE5ndEFueVJlY29yZCwgYW55PjtcbmV4cG9ydCB0eXBlIE5ndFZhbHVlID0gTmd0Tm9kZTx7IHJhd1ZhbHVlOiBhbnkgfSwge30+O1xuXG5leHBvcnQgdHlwZSBOZ3RMaWdodFNoYWRvdyA9IE5ndE5vZGU8VEhSRUUuTGlnaHRTaGFkb3csIHR5cGVvZiBUSFJFRS5MaWdodFNoYWRvdz47XG5leHBvcnQgdHlwZSBOZ3RTcG90TGlnaHRTaGFkb3cgPSBOZ3ROb2RlPFRIUkVFLlNwb3RMaWdodFNoYWRvdywgdHlwZW9mIFRIUkVFLlNwb3RMaWdodFNoYWRvdz47XG5leHBvcnQgdHlwZSBOZ3REaXJlY3Rpb25hbExpZ2h0U2hhZG93ID0gTmd0Tm9kZTxUSFJFRS5EaXJlY3Rpb25hbExpZ2h0U2hhZG93LCB0eXBlb2YgVEhSRUUuRGlyZWN0aW9uYWxMaWdodFNoYWRvdz47XG5cbmV4cG9ydCB0eXBlIE5ndFNwb3RMaWdodCA9IE5ndExpZ2h0PFRIUkVFLlNwb3RMaWdodCwgdHlwZW9mIFRIUkVFLlNwb3RMaWdodD47XG5leHBvcnQgdHlwZSBOZ3RQb2ludExpZ2h0ID0gTmd0TGlnaHQ8VEhSRUUuUG9pbnRMaWdodCwgdHlwZW9mIFRIUkVFLlBvaW50TGlnaHQ+O1xuZXhwb3J0IHR5cGUgTmd0UmVjdEFyZWFMaWdodCA9IE5ndExpZ2h0PFRIUkVFLlJlY3RBcmVhTGlnaHQsIHR5cGVvZiBUSFJFRS5SZWN0QXJlYUxpZ2h0PjtcbmV4cG9ydCB0eXBlIE5ndEhlbWlzcGhlcmVMaWdodCA9IE5ndExpZ2h0PFRIUkVFLkhlbWlzcGhlcmVMaWdodCwgdHlwZW9mIFRIUkVFLkhlbWlzcGhlcmVMaWdodD47XG5leHBvcnQgdHlwZSBOZ3REaXJlY3Rpb25hbExpZ2h0ID0gTmd0TGlnaHQ8VEhSRUUuRGlyZWN0aW9uYWxMaWdodCwgdHlwZW9mIFRIUkVFLkRpcmVjdGlvbmFsTGlnaHQ+O1xuZXhwb3J0IHR5cGUgTmd0QW1iaWVudExpZ2h0ID0gTmd0TGlnaHQ8VEhSRUUuQW1iaWVudExpZ2h0LCB0eXBlb2YgVEhSRUUuQW1iaWVudExpZ2h0PjtcbmV4cG9ydCB0eXBlIE5ndEFtYmllbnRMaWdodFByb2JlID0gTmd0TGlnaHQ8VEhSRUUuQW1iaWVudExpZ2h0UHJvYmUsIHR5cGVvZiBUSFJFRS5BbWJpZW50TGlnaHRQcm9iZT47XG5leHBvcnQgdHlwZSBOZ3RIZW1pc3BoZXJlTGlnaHRQcm9iZSA9IE5ndExpZ2h0PFRIUkVFLkhlbWlzcGhlcmVMaWdodFByb2JlLCB0eXBlb2YgVEhSRUUuSGVtaXNwaGVyZUxpZ2h0UHJvYmU+O1xuZXhwb3J0IHR5cGUgTmd0TGlnaHRQcm9iZSA9IE5ndExpZ2h0PFRIUkVFLkxpZ2h0UHJvYmUsIHR5cGVvZiBUSFJFRS5MaWdodFByb2JlPjtcblxuZXhwb3J0IHR5cGUgTmd0U3BvdExpZ2h0SGVscGVyID0gTmd0T2JqZWN0M0ROb2RlPFRIUkVFLlNwb3RMaWdodEhlbHBlciwgdHlwZW9mIFRIUkVFLlNwb3RMaWdodEhlbHBlcj47XG5leHBvcnQgdHlwZSBOZ3RTa2VsZXRvbkhlbHBlciA9IE5ndE9iamVjdDNETm9kZTxUSFJFRS5Ta2VsZXRvbkhlbHBlciwgdHlwZW9mIFRIUkVFLlNrZWxldG9uSGVscGVyPjtcbmV4cG9ydCB0eXBlIE5ndFBvaW50TGlnaHRIZWxwZXIgPSBOZ3RPYmplY3QzRE5vZGU8VEhSRUUuUG9pbnRMaWdodEhlbHBlciwgdHlwZW9mIFRIUkVFLlBvaW50TGlnaHRIZWxwZXI+O1xuZXhwb3J0IHR5cGUgTmd0SGVtaXNwaGVyZUxpZ2h0SGVscGVyID0gTmd0T2JqZWN0M0ROb2RlPFRIUkVFLkhlbWlzcGhlcmVMaWdodEhlbHBlciwgdHlwZW9mIFRIUkVFLkhlbWlzcGhlcmVMaWdodEhlbHBlcj47XG5leHBvcnQgdHlwZSBOZ3RHcmlkSGVscGVyID0gTmd0T2JqZWN0M0ROb2RlPFRIUkVFLkdyaWRIZWxwZXIsIHR5cGVvZiBUSFJFRS5HcmlkSGVscGVyPjtcbmV4cG9ydCB0eXBlIE5ndFBvbGFyR3JpZEhlbHBlciA9IE5ndE9iamVjdDNETm9kZTxUSFJFRS5Qb2xhckdyaWRIZWxwZXIsIHR5cGVvZiBUSFJFRS5Qb2xhckdyaWRIZWxwZXI+O1xuZXhwb3J0IHR5cGUgTmd0RGlyZWN0aW9uYWxMaWdodEhlbHBlciA9IE5ndE9iamVjdDNETm9kZTxcbiAgICBUSFJFRS5EaXJlY3Rpb25hbExpZ2h0SGVscGVyLFxuICAgIHR5cGVvZiBUSFJFRS5EaXJlY3Rpb25hbExpZ2h0SGVscGVyXG4+O1xuZXhwb3J0IHR5cGUgTmd0Q2FtZXJhSGVscGVyID0gTmd0T2JqZWN0M0ROb2RlPFRIUkVFLkNhbWVyYUhlbHBlciwgdHlwZW9mIFRIUkVFLkNhbWVyYUhlbHBlcj47XG5leHBvcnQgdHlwZSBOZ3RCb3hIZWxwZXIgPSBOZ3RPYmplY3QzRE5vZGU8VEhSRUUuQm94SGVscGVyLCB0eXBlb2YgVEhSRUUuQm94SGVscGVyPjtcbmV4cG9ydCB0eXBlIE5ndEJveDNIZWxwZXIgPSBOZ3RPYmplY3QzRE5vZGU8VEhSRUUuQm94M0hlbHBlciwgdHlwZW9mIFRIUkVFLkJveDNIZWxwZXI+O1xuZXhwb3J0IHR5cGUgTmd0UGxhbmVIZWxwZXIgPSBOZ3RPYmplY3QzRE5vZGU8VEhSRUUuUGxhbmVIZWxwZXIsIHR5cGVvZiBUSFJFRS5QbGFuZUhlbHBlcj47XG5leHBvcnQgdHlwZSBOZ3RBcnJvd0hlbHBlciA9IE5ndE9iamVjdDNETm9kZTxUSFJFRS5BcnJvd0hlbHBlciwgdHlwZW9mIFRIUkVFLkFycm93SGVscGVyPjtcbmV4cG9ydCB0eXBlIE5ndEF4ZXNIZWxwZXIgPSBOZ3RPYmplY3QzRE5vZGU8VEhSRUUuQXhlc0hlbHBlciwgdHlwZW9mIFRIUkVFLkF4ZXNIZWxwZXI+O1xuXG5leHBvcnQgdHlwZSBOZ3RUZXh0dXJlID0gTmd0Tm9kZTxUSFJFRS5UZXh0dXJlLCB0eXBlb2YgVEhSRUUuVGV4dHVyZT47XG5leHBvcnQgdHlwZSBOZ3RWaWRlb1RleHR1cmUgPSBOZ3ROb2RlPFRIUkVFLlZpZGVvVGV4dHVyZSwgdHlwZW9mIFRIUkVFLlZpZGVvVGV4dHVyZT47XG5leHBvcnQgdHlwZSBOZ3REYXRhVGV4dHVyZSA9IE5ndE5vZGU8VEhSRUUuRGF0YVRleHR1cmUsIHR5cGVvZiBUSFJFRS5EYXRhVGV4dHVyZT47XG5leHBvcnQgdHlwZSBOZ3REYXRhM0RUZXh0dXJlID0gTmd0Tm9kZTxUSFJFRS5EYXRhM0RUZXh0dXJlLCB0eXBlb2YgVEhSRUUuRGF0YTNEVGV4dHVyZT47XG5leHBvcnQgdHlwZSBOZ3RDb21wcmVzc2VkVGV4dHVyZSA9IE5ndE5vZGU8VEhSRUUuQ29tcHJlc3NlZFRleHR1cmUsIHR5cGVvZiBUSFJFRS5Db21wcmVzc2VkVGV4dHVyZT47XG5leHBvcnQgdHlwZSBOZ3RDdWJlVGV4dHVyZSA9IE5ndE5vZGU8VEhSRUUuQ3ViZVRleHR1cmUsIHR5cGVvZiBUSFJFRS5DdWJlVGV4dHVyZT47XG5leHBvcnQgdHlwZSBOZ3RDYW52YXNUZXh0dXJlID0gTmd0Tm9kZTxUSFJFRS5DYW52YXNUZXh0dXJlLCB0eXBlb2YgVEhSRUUuQ2FudmFzVGV4dHVyZT47XG5leHBvcnQgdHlwZSBOZ3REZXB0aFRleHR1cmUgPSBOZ3ROb2RlPFRIUkVFLkRlcHRoVGV4dHVyZSwgdHlwZW9mIFRIUkVFLkRlcHRoVGV4dHVyZT47XG5cbmV4cG9ydCB0eXBlIE5ndFJheWNhc3RlciA9IE5ndE5vZGU8VEhSRUUuUmF5Y2FzdGVyLCB0eXBlb2YgVEhSRUUuUmF5Y2FzdGVyPjtcbmV4cG9ydCB0eXBlIE5ndFZlY3RvcjJOb2RlID0gTmd0Tm9kZTxUSFJFRS5WZWN0b3IyLCB0eXBlb2YgVEhSRUUuVmVjdG9yMj47XG5leHBvcnQgdHlwZSBOZ3RWZWN0b3IzTm9kZSA9IE5ndE5vZGU8VEhSRUUuVmVjdG9yMywgdHlwZW9mIFRIUkVFLlZlY3RvcjM+O1xuZXhwb3J0IHR5cGUgTmd0VmVjdG9yNE5vZGUgPSBOZ3ROb2RlPFRIUkVFLlZlY3RvcjQsIHR5cGVvZiBUSFJFRS5WZWN0b3I0PjtcbmV4cG9ydCB0eXBlIE5ndEV1bGVyTm9kZSA9IE5ndE5vZGU8VEhSRUUuRXVsZXIsIHR5cGVvZiBUSFJFRS5FdWxlcj47XG5leHBvcnQgdHlwZSBOZ3RNYXRyaXgzTm9kZSA9IE5ndE5vZGU8VEhSRUUuTWF0cml4MywgdHlwZW9mIFRIUkVFLk1hdHJpeDM+O1xuZXhwb3J0IHR5cGUgTmd0TWF0cml4NE5vZGUgPSBOZ3ROb2RlPFRIUkVFLk1hdHJpeDQsIHR5cGVvZiBUSFJFRS5NYXRyaXg0PjtcbmV4cG9ydCB0eXBlIE5ndFF1YXRlcm5pb25Ob2RlID0gTmd0Tm9kZTxUSFJFRS5RdWF0ZXJuaW9uLCB0eXBlb2YgVEhSRUUuUXVhdGVybmlvbj47XG5leHBvcnQgdHlwZSBOZ3RCdWZmZXJBdHRyaWJ1dGUgPSBOZ3ROb2RlPFRIUkVFLkJ1ZmZlckF0dHJpYnV0ZSwgdHlwZW9mIFRIUkVFLkJ1ZmZlckF0dHJpYnV0ZT47XG5leHBvcnQgdHlwZSBOZ3RGbG9hdDE2QnVmZmVyQXR0cmlidXRlID0gTmd0Tm9kZTxUSFJFRS5GbG9hdDE2QnVmZmVyQXR0cmlidXRlLCB0eXBlb2YgVEhSRUUuRmxvYXQxNkJ1ZmZlckF0dHJpYnV0ZT47XG5leHBvcnQgdHlwZSBOZ3RGbG9hdDMyQnVmZmVyQXR0cmlidXRlID0gTmd0Tm9kZTxUSFJFRS5GbG9hdDMyQnVmZmVyQXR0cmlidXRlLCB0eXBlb2YgVEhSRUUuRmxvYXQzMkJ1ZmZlckF0dHJpYnV0ZT47XG5leHBvcnQgdHlwZSBOZ3RGbG9hdDY0QnVmZmVyQXR0cmlidXRlID0gTmd0Tm9kZTxUSFJFRS5GbG9hdDY0QnVmZmVyQXR0cmlidXRlLCB0eXBlb2YgVEhSRUUuRmxvYXQ2NEJ1ZmZlckF0dHJpYnV0ZT47XG5leHBvcnQgdHlwZSBOZ3RJbnQ4QnVmZmVyQXR0cmlidXRlID0gTmd0Tm9kZTxUSFJFRS5JbnQ4QnVmZmVyQXR0cmlidXRlLCB0eXBlb2YgVEhSRUUuSW50OEJ1ZmZlckF0dHJpYnV0ZT47XG5leHBvcnQgdHlwZSBOZ3RJbnQxNkJ1ZmZlckF0dHJpYnV0ZSA9IE5ndE5vZGU8VEhSRUUuSW50MTZCdWZmZXJBdHRyaWJ1dGUsIHR5cGVvZiBUSFJFRS5JbnQxNkJ1ZmZlckF0dHJpYnV0ZT47XG5leHBvcnQgdHlwZSBOZ3RJbnQzMkJ1ZmZlckF0dHJpYnV0ZSA9IE5ndE5vZGU8VEhSRUUuSW50MzJCdWZmZXJBdHRyaWJ1dGUsIHR5cGVvZiBUSFJFRS5JbnQzMkJ1ZmZlckF0dHJpYnV0ZT47XG5leHBvcnQgdHlwZSBOZ3RVaW50OEJ1ZmZlckF0dHJpYnV0ZSA9IE5ndE5vZGU8VEhSRUUuVWludDhCdWZmZXJBdHRyaWJ1dGUsIHR5cGVvZiBUSFJFRS5VaW50OEJ1ZmZlckF0dHJpYnV0ZT47XG5leHBvcnQgdHlwZSBOZ3RVaW50MTZCdWZmZXJBdHRyaWJ1dGUgPSBOZ3ROb2RlPFRIUkVFLlVpbnQxNkJ1ZmZlckF0dHJpYnV0ZSwgdHlwZW9mIFRIUkVFLlVpbnQxNkJ1ZmZlckF0dHJpYnV0ZT47XG5leHBvcnQgdHlwZSBOZ3RVaW50MzJCdWZmZXJBdHRyaWJ1dGUgPSBOZ3ROb2RlPFRIUkVFLlVpbnQzMkJ1ZmZlckF0dHJpYnV0ZSwgdHlwZW9mIFRIUkVFLlVpbnQzMkJ1ZmZlckF0dHJpYnV0ZT47XG5leHBvcnQgdHlwZSBOZ3RJbnN0YW5jZWRCdWZmZXJBdHRyaWJ1dGUgPSBOZ3ROb2RlPFxuICAgIFRIUkVFLkluc3RhbmNlZEJ1ZmZlckF0dHJpYnV0ZSxcbiAgICB0eXBlb2YgVEhSRUUuSW5zdGFuY2VkQnVmZmVyQXR0cmlidXRlXG4+O1xuZXhwb3J0IHR5cGUgTmd0Q29sb3IgPSBOZ3ROb2RlPFRIUkVFLkNvbG9yLCBUSFJFRS5Db2xvclJlcHJlc2VudGF0aW9uPjtcbmV4cG9ydCB0eXBlIE5ndEZvZyA9IE5ndE5vZGU8VEhSRUUuRm9nLCB0eXBlb2YgVEhSRUUuRm9nPjtcbmV4cG9ydCB0eXBlIE5ndEZvZ0V4cDIgPSBOZ3ROb2RlPFRIUkVFLkZvZ0V4cDIsIHR5cGVvZiBUSFJFRS5Gb2dFeHAyPjtcbmV4cG9ydCB0eXBlIE5ndFNoYXBlID0gTmd0Tm9kZTxUSFJFRS5TaGFwZSwgdHlwZW9mIFRIUkVFLlNoYXBlPjtcblxuZXhwb3J0IGludGVyZmFjZSBUaHJlZUVsZW1lbnRzIHtcbiAgICAnbmd0LW9iamVjdDNEJzogTmd0T2JqZWN0M0Q7XG5cbiAgICAvLyBgYXVkaW9gIHdvcmtzIGJ1dCBjb25mbGljdHMgd2l0aCBAdHlwZXMvcmVhY3QuIFRyeSB1c2luZyBQb3NpdGlvbmFsQXVkaW8gZnJvbSBAcmVhY3QtdGhyZWUvZHJlaSBpbnN0ZWFkXG4gICAgJ25ndC1hdWRpbyc6IE5ndEF1ZGlvO1xuICAgICduZ3QtYXVkaW8tbGlzdGVuZXInOiBOZ3RBdWRpb0xpc3RlbmVyO1xuICAgICduZ3QtcG9zaXRpb25hbC1hdWRpbyc6IE5ndFBvc2l0aW9uYWxBdWRpbztcblxuICAgICduZ3QtbWVzaCc6IE5ndE1lc2g7XG4gICAgJ25ndC1pbnN0YW5jZWQtbWVzaCc6IE5ndEluc3RhbmNlZE1lc2g7XG4gICAgJ25ndC1zY2VuZSc6IE5ndFNjZW5lO1xuICAgICduZ3Qtc3ByaXRlJzogTmd0U3ByaXRlO1xuICAgICduZ3QtbE9EJzogTmd0TE9EO1xuICAgICduZ3Qtc2tpbm5lZC1tZXNoJzogTmd0U2tpbm5lZE1lc2g7XG4gICAgJ25ndC1za2VsZXRvbic6IE5ndFNrZWxldG9uO1xuICAgICduZ3QtYm9uZSc6IE5ndEJvbmU7XG5cbiAgICAnbmd0LWxpbmUnOiBOZ3RMaW5lO1xuICAgICduZ3QtbGluZS1zZWdtZW50cyc6IE5ndExpbmVTZWdtZW50cztcbiAgICAnbmd0LWxpbmUtbG9vcCc6IE5ndExpbmVMb29wO1xuICAgICduZ3QtcG9pbnRzJzogTmd0UG9pbnRzO1xuICAgICduZ3QtZ3JvdXAnOiBOZ3RHcm91cDtcblxuICAgIC8vIGNhbWVyYXNcbiAgICAnbmd0LWNhbWVyYSc6IE5ndENhbWVyYU5vZGU7XG4gICAgJ25ndC1wZXJzcGVjdGl2ZS1jYW1lcmEnOiBOZ3RQZXJzcGVjdGl2ZUNhbWVyYTtcbiAgICAnbmd0LW9ydGhvZ3JhcGhpYy1jYW1lcmEnOiBOZ3RPcnRob2dyYXBoaWNDYW1lcmE7XG4gICAgJ25ndC1jdWJlLWNhbWVyYSc6IE5ndEN1YmVDYW1lcmE7XG4gICAgJ25ndC1hcnJheS1jYW1lcmEnOiBOZ3RBcnJheUNhbWVyYTtcblxuICAgIC8vIGdlb21ldHJ5XG4gICAgJ25ndC1pbnN0YW5jZWQtYnVmZmVyLWdlb21ldHJ5JzogTmd0SW5zdGFuY2VkQnVmZmVyR2VvbWV0cnk7XG4gICAgJ25ndC1idWZmZXItZ2VvbWV0cnknOiBOZ3RCdWZmZXJHZW9tZXRyeTtcbiAgICAnbmd0LXdpcmVmcmFtZS1nZW9tZXRyeSc6IE5ndFdpcmVmcmFtZUdlb21ldHJ5O1xuICAgICduZ3QtdGV0cmFoZWRyb24tZ2VvbWV0cnknOiBOZ3RUZXRyYWhlZHJvbkdlb21ldHJ5O1xuICAgICduZ3Qtb2N0YWhlZHJvbi1nZW9tZXRyeSc6IE5ndE9jdGFoZWRyb25HZW9tZXRyeTtcbiAgICAnbmd0LWljb3NhaGVkcm9uLWdlb21ldHJ5JzogTmd0SWNvc2FoZWRyb25HZW9tZXRyeTtcbiAgICAnbmd0LXBvbHloZWRyb24tZ2VvbWV0cnknOiBOZ3RQb2x5aGVkcm9uR2VvbWV0cnk7XG4gICAgJ25ndC1kb2RlY2FoZWRyb24tZ2VvbWV0cnknOiBOZ3REb2RlY2FoZWRyb25HZW9tZXRyeTtcbiAgICAnbmd0LXR1YmUtZ2VvbWV0cnknOiBOZ3RUdWJlR2VvbWV0cnk7XG4gICAgJ25ndC10b3J1cy1rbm90LWdlb21ldHJ5JzogTmd0VG9ydXNLbm90R2VvbWV0cnk7XG4gICAgJ25ndC10b3J1cy1nZW9tZXRyeSc6IE5ndFRvcnVzR2VvbWV0cnk7XG4gICAgJ25ndC1zcGhlcmUtZ2VvbWV0cnknOiBOZ3RTcGhlcmVHZW9tZXRyeTtcbiAgICAnbmd0LXJpbmctZ2VvbWV0cnknOiBOZ3RSaW5nR2VvbWV0cnk7XG4gICAgJ25ndC1wbGFuZS1nZW9tZXRyeSc6IE5ndFBsYW5lR2VvbWV0cnk7XG4gICAgJ25ndC1sYXRoZS1nZW9tZXRyeSc6IE5ndExhdGhlR2VvbWV0cnk7XG4gICAgJ25ndC1zaGFwZS1nZW9tZXRyeSc6IE5ndFNoYXBlR2VvbWV0cnk7XG4gICAgJ25ndC1leHRydWRlLWdlb21ldHJ5JzogTmd0RXh0cnVkZUdlb21ldHJ5O1xuICAgICduZ3QtZWRnZXMtZ2VvbWV0cnknOiBOZ3RFZGdlc0dlb21ldHJ5O1xuICAgICduZ3QtY29uZS1nZW9tZXRyeSc6IE5ndENvbmVHZW9tZXRyeTtcbiAgICAnbmd0LWN5bGluZGVyLWdlb21ldHJ5JzogTmd0Q3lsaW5kZXJHZW9tZXRyeTtcbiAgICAnbmd0LWNpcmNsZS1nZW9tZXRyeSc6IE5ndENpcmNsZUdlb21ldHJ5O1xuICAgICduZ3QtYm94LWdlb21ldHJ5JzogTmd0Qm94R2VvbWV0cnk7XG4gICAgJ25ndC1jYXBzdWxlLWdlb21ldHJ5JzogTmd0Q2Fwc3VsZUdlb21ldHJ5O1xuXG4gICAgLy8gbWF0ZXJpYWxzXG4gICAgJ25ndC1zaGFkb3ctbWF0ZXJpYWwnOiBOZ3RTaGFkb3dNYXRlcmlhbDtcbiAgICAnbmd0LXNwcml0ZS1tYXRlcmlhbCc6IE5ndFNwcml0ZU1hdGVyaWFsO1xuICAgICduZ3QtcmF3LXNoYWRlci1tYXRlcmlhbCc6IE5ndFJhd1NoYWRlck1hdGVyaWFsO1xuICAgICduZ3Qtc2hhZGVyLW1hdGVyaWFsJzogTmd0U2hhZGVyTWF0ZXJpYWw7XG4gICAgJ25ndC1wb2ludHMtbWF0ZXJpYWwnOiBOZ3RQb2ludHNNYXRlcmlhbDtcbiAgICAnbmd0LW1lc2gtcGh5c2ljYWwtbWF0ZXJpYWwnOiBOZ3RNZXNoUGh5c2ljYWxNYXRlcmlhbDtcbiAgICAnbmd0LW1lc2gtc3RhbmRhcmQtbWF0ZXJpYWwnOiBOZ3RNZXNoU3RhbmRhcmRNYXRlcmlhbDtcbiAgICAnbmd0LW1lc2gtcGhvbmctbWF0ZXJpYWwnOiBOZ3RNZXNoUGhvbmdNYXRlcmlhbDtcbiAgICAnbmd0LW1lc2gtdG9vbi1tYXRlcmlhbCc6IE5ndE1lc2hUb29uTWF0ZXJpYWw7XG4gICAgJ25ndC1tZXNoLW5vcm1hbC1tYXRlcmlhbCc6IE5ndE1lc2hOb3JtYWxNYXRlcmlhbDtcbiAgICAnbmd0LW1lc2gtbGFtYmVydC1tYXRlcmlhbCc6IE5ndE1lc2hMYW1iZXJ0TWF0ZXJpYWw7XG4gICAgJ25ndC1tZXNoLWRlcHRoLW1hdGVyaWFsJzogTmd0TWVzaERlcHRoTWF0ZXJpYWw7XG4gICAgJ25ndC1tZXNoLWRpc3RhbmNlLW1hdGVyaWFsJzogTmd0TWVzaERpc3RhbmNlTWF0ZXJpYWw7XG4gICAgJ25ndC1tZXNoLWJhc2ljLW1hdGVyaWFsJzogTmd0TWVzaEJhc2ljTWF0ZXJpYWw7XG4gICAgJ25ndC1tZXNoLW1hdGNhcC1tYXRlcmlhbCc6IE5ndE1lc2hNYXRjYXBNYXRlcmlhbDtcbiAgICAnbmd0LWxpbmUtZGFzaGVkLW1hdGVyaWFsJzogTmd0TGluZURhc2hlZE1hdGVyaWFsO1xuICAgICduZ3QtbGluZS1iYXNpYy1tYXRlcmlhbCc6IE5ndExpbmVCYXNpY01hdGVyaWFsO1xuXG4gICAgLy8gcHJpbWl0aXZlXG4gICAgJ25ndC1wcmltaXRpdmUnOiBOZ3RQcmltaXRpdmU7XG5cbiAgICAvLyByYXdWYWx1ZVxuICAgICduZ3QtdmFsdWUnOiBOZ3RWYWx1ZTtcblxuICAgIC8vIGxpZ2h0cyBhbmQgb3RoZXJcbiAgICAnbmd0LXNwb3QtbGlnaHQtc2hhZG93JzogTmd0U3BvdExpZ2h0U2hhZG93O1xuICAgICduZ3Qtc3BvdC1saWdodCc6IE5ndFNwb3RMaWdodDtcbiAgICAnbmd0LXBvaW50LWxpZ2h0JzogTmd0UG9pbnRMaWdodDtcbiAgICAnbmd0LXJlY3QtYXJlYS1saWdodCc6IE5ndFJlY3RBcmVhTGlnaHQ7XG4gICAgJ25ndC1oZW1pc3BoZXJlLWxpZ2h0JzogTmd0SGVtaXNwaGVyZUxpZ2h0O1xuICAgICduZ3QtZGlyZWN0aW9uYWwtbGlnaHQtc2hhZG93JzogTmd0RGlyZWN0aW9uYWxMaWdodFNoYWRvdztcbiAgICAnbmd0LWRpcmVjdGlvbmFsLWxpZ2h0JzogTmd0RGlyZWN0aW9uYWxMaWdodDtcbiAgICAnbmd0LWFtYmllbnQtbGlnaHQnOiBOZ3RBbWJpZW50TGlnaHQ7XG4gICAgJ25ndC1saWdodC1zaGFkb3cnOiBOZ3RMaWdodFNoYWRvdztcbiAgICAnbmd0LWFtYmllbnQtbGlnaHQtcHJvYmUnOiBOZ3RBbWJpZW50TGlnaHRQcm9iZTtcbiAgICAnbmd0LWhlbWlzcGhlcmUtbGlnaHQtcHJvYmUnOiBOZ3RIZW1pc3BoZXJlTGlnaHRQcm9iZTtcbiAgICAnbmd0LWxpZ2h0LXByb2JlJzogTmd0TGlnaHRQcm9iZTtcblxuICAgIC8vIGhlbHBlcnNcbiAgICAnbmd0LXNwb3QtbGlnaHQtaGVscGVyJzogTmd0U3BvdExpZ2h0SGVscGVyO1xuICAgICduZ3Qtc2tlbGV0b24taGVscGVyJzogTmd0U2tlbGV0b25IZWxwZXI7XG4gICAgJ25ndC1wb2ludC1saWdodC1oZWxwZXInOiBOZ3RQb2ludExpZ2h0SGVscGVyO1xuICAgICduZ3QtaGVtaXNwaGVyZS1saWdodC1oZWxwZXInOiBOZ3RIZW1pc3BoZXJlTGlnaHRIZWxwZXI7XG4gICAgJ25ndC1ncmlkLWhlbHBlcic6IE5ndEdyaWRIZWxwZXI7XG4gICAgJ25ndC1wb2xhci1ncmlkLWhlbHBlcic6IE5ndFBvbGFyR3JpZEhlbHBlcjtcbiAgICAnbmd0LWRpcmVjdGlvbmFsLWxpZ2h0LWhlbHBlcic6IE5ndERpcmVjdGlvbmFsTGlnaHRIZWxwZXI7XG4gICAgJ25ndC1jYW1lcmEtaGVscGVyJzogTmd0Q2FtZXJhSGVscGVyO1xuICAgICduZ3QtYm94LWhlbHBlcic6IE5ndEJveEhlbHBlcjtcbiAgICAnbmd0LWJveDMtaGVscGVyJzogTmd0Qm94M0hlbHBlcjtcbiAgICAnbmd0LXBsYW5lLWhlbHBlcic6IE5ndFBsYW5lSGVscGVyO1xuICAgICduZ3QtYXJyb3ctaGVscGVyJzogTmd0QXJyb3dIZWxwZXI7XG4gICAgJ25ndC1heGVzLWhlbHBlcic6IE5ndEF4ZXNIZWxwZXI7XG5cbiAgICAvLyB0ZXh0dXJlc1xuICAgICduZ3QtdGV4dHVyZSc6IE5ndFRleHR1cmU7XG4gICAgJ25ndC12aWRlby10ZXh0dXJlJzogTmd0VmlkZW9UZXh0dXJlO1xuICAgICduZ3QtZGF0YS10ZXh0dXJlJzogTmd0RGF0YVRleHR1cmU7XG4gICAgJ25ndC1kYXRhM0QtdGV4dHVyZSc6IE5ndERhdGEzRFRleHR1cmU7XG4gICAgJ25ndC1jb21wcmVzc2VkLXRleHR1cmUnOiBOZ3RDb21wcmVzc2VkVGV4dHVyZTtcbiAgICAnbmd0LWN1YmUtdGV4dHVyZSc6IE5ndEN1YmVUZXh0dXJlO1xuICAgICduZ3QtY2FudmFzLXRleHR1cmUnOiBOZ3RDYW52YXNUZXh0dXJlO1xuICAgICduZ3QtZGVwdGgtdGV4dHVyZSc6IE5ndERlcHRoVGV4dHVyZTtcblxuICAgIC8vIG1pc2NcbiAgICAnbmd0LXJheWNhc3Rlcic6IE5ndFJheWNhc3RlcjtcbiAgICAnbmd0LXZlY3RvcjInOiBOZ3RWZWN0b3IyTm9kZTtcbiAgICAnbmd0LXZlY3RvcjMnOiBOZ3RWZWN0b3IzTm9kZTtcbiAgICAnbmd0LXZlY3RvcjQnOiBOZ3RWZWN0b3I0Tm9kZTtcbiAgICAnbmd0LWV1bGVyJzogTmd0RXVsZXJOb2RlO1xuICAgICduZ3QtbWF0cml4Myc6IE5ndE1hdHJpeDNOb2RlO1xuICAgICduZ3QtbWF0cml4NCc6IE5ndE1hdHJpeDROb2RlO1xuICAgICduZ3QtcXVhdGVybmlvbic6IE5ndFF1YXRlcm5pb25Ob2RlO1xuICAgICduZ3QtYnVmZmVyLWF0dHJpYnV0ZSc6IE5ndEJ1ZmZlckF0dHJpYnV0ZTtcbiAgICAnbmd0LWZsb2F0MTYtYnVmZmVyLWF0dHJpYnV0ZSc6IE5ndEZsb2F0MTZCdWZmZXJBdHRyaWJ1dGU7XG4gICAgJ25ndC1mbG9hdDMyLWJ1ZmZlci1hdHRyaWJ1dGUnOiBOZ3RGbG9hdDMyQnVmZmVyQXR0cmlidXRlO1xuICAgICduZ3QtZmxvYXQ2NC1idWZmZXItYXR0cmlidXRlJzogTmd0RmxvYXQ2NEJ1ZmZlckF0dHJpYnV0ZTtcbiAgICAnbmd0LWludDgtYnVmZmVyLWF0dHJpYnV0ZSc6IE5ndEludDhCdWZmZXJBdHRyaWJ1dGU7XG4gICAgJ25ndC1pbnQxNi1idWZmZXItYXR0cmlidXRlJzogTmd0SW50MTZCdWZmZXJBdHRyaWJ1dGU7XG4gICAgJ25ndC1pbnQzMi1idWZmZXItYXR0cmlidXRlJzogTmd0SW50MzJCdWZmZXJBdHRyaWJ1dGU7XG4gICAgJ25ndC11bml0OC1idWZmZXItYXR0cmlidXRlJzogTmd0VWludDhCdWZmZXJBdHRyaWJ1dGU7XG4gICAgJ25ndC11bml0MTYtYnVmZmVyLWF0dHJpYnV0ZSc6IE5ndFVpbnQxNkJ1ZmZlckF0dHJpYnV0ZTtcbiAgICAnbmd0LXVuaXQzMi1idWZmZXItYXR0cmlidXRlJzogTmd0VWludDMyQnVmZmVyQXR0cmlidXRlO1xuICAgICduZ3QtaW5zdGFuY2VkLWJ1ZmZlci1hdHRyaWJ1dGUnOiBOZ3RJbnN0YW5jZWRCdWZmZXJBdHRyaWJ1dGU7XG4gICAgJ25ndC1jb2xvcic6IE5ndENvbG9yO1xuICAgICduZ3QtZm9nJzogTmd0Rm9nO1xuICAgICduZ3QtZm9nLWV4cDInOiBOZ3RGb2dFeHAyO1xuICAgICduZ3Qtc2hhcGUnOiBOZ3RTaGFwZTtcbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICAgIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAgZXh0ZW5kcyBUaHJlZUVsZW1lbnRzIHt9XG59XG4iXX0=
|
|
1
|
+
import * as THREE from 'three';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhyZWUtdHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi90aHJlZS10eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssS0FBSyxNQUFNLE9BQU8sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFRIUkVFIGZyb20gJ3RocmVlJztcbmltcG9ydCB0eXBlIHsgTmd0RXZlbnRIYW5kbGVycyB9IGZyb20gJy4vZXZlbnRzJztcbmltcG9ydCB0eXBlIHsgTmd0QWZ0ZXJBdHRhY2gsIE5ndEF0dGFjaEZ1bmN0aW9uLCBOZ3RJbnN0YW5jZU5vZGUgfSBmcm9tICcuL2luc3RhbmNlJztcbmltcG9ydCB0eXBlIHsgTmd0QmVmb3JlUmVuZGVyRXZlbnQgfSBmcm9tICcuL3N0b3JlJztcblxudHlwZSBOb0V2ZW50PFQ+ID0gT21pdDxULCAnYWRkRXZlbnRMaXN0ZW5lcicgfCAncmVtb3ZlRXZlbnRMaXN0ZW5lcic+O1xuXG5leHBvcnQgdHlwZSBOZ3ROb25GdW5jdGlvbktleXM8VD4gPSB7IFtLIGluIGtleW9mIFRdLT86IFRbS10gZXh0ZW5kcyBGdW5jdGlvbiA/IG5ldmVyIDogSyB9W2tleW9mIFRdO1xuZXhwb3J0IHR5cGUgTmd0T3ZlcndyaXRlPFQsIE8+ID0gT21pdDxULCBOZ3ROb25GdW5jdGlvbktleXM8Tz4+ICYgTztcblxuZXhwb3J0IHR5cGUgTmd0RXh0ZW5kZWRDb2xvcnM8VD4gPSB7XG5cdFtLIGluIGtleW9mIFRdOiBUW0tdIGV4dGVuZHMgVEhSRUUuQ29sb3IgfCB1bmRlZmluZWQgPyBUSFJFRS5Db2xvclJlcHJlc2VudGF0aW9uIDogVFtLXTtcbn07XG5cbi8qKlxuICogSWYgKipUKiogY29udGFpbnMgYSBjb25zdHJ1Y3RvciwgQHNlZSBDb25zdHJ1Y3RvclBhcmFtZXRlcnMgbXVzdCBiZSB1c2VkLCBvdGhlcndpc2UgKipUKiouXG4gKi9cbnR5cGUgTmd0QXJnczxUPiA9IFQgZXh0ZW5kcyBuZXcgKC4uLmFyZ3M6IGFueSkgPT4gYW55ID8gQ29uc3RydWN0b3JQYXJhbWV0ZXJzPFQ+IDogVDtcblxuZXhwb3J0IHR5cGUgTmd0RXVsZXIgPSBUSFJFRS5FdWxlciB8IFBhcmFtZXRlcnM8VEhSRUUuRXVsZXJbJ3NldCddPjtcbmV4cG9ydCB0eXBlIE5ndE1hdHJpeDQgPSBUSFJFRS5NYXRyaXg0IHwgUGFyYW1ldGVyczxUSFJFRS5NYXRyaXg0WydzZXQnXT4gfCBSZWFkb25seTxUSFJFRS5NYXRyaXg0WydzZXQnXT47XG5cbi8qKlxuICogVHVybiBhbiBpbXBsZW1lbnRhdGlvbiBvZiBUSFJFRS5WZWN0b3IgaW4gdG8gdGhlIHR5cGUgdGhhdCBhbiByM2YgY29tcG9uZW50IHdvdWxkIGFjY2VwdCBhcyBhIHByb3AuXG4gKi9cbnR5cGUgTmd0VmVjdG9yTGlrZTxWZWN0b3JDbGFzcyBleHRlbmRzIFRIUkVFLlZlY3Rvcj4gPVxuXHR8IFZlY3RvckNsYXNzXG5cdHwgUGFyYW1ldGVyczxWZWN0b3JDbGFzc1snc2V0J10+XG5cdHwgUmVhZG9ubHk8UGFyYW1ldGVyczxWZWN0b3JDbGFzc1snc2V0J10+PlxuXHR8IFBhcmFtZXRlcnM8VmVjdG9yQ2xhc3NbJ3NldFNjYWxhciddPlswXTtcblxuZXhwb3J0IHR5cGUgTmd0VmVjdG9yMiA9IE5ndFZlY3Rvckxpa2U8VEhSRUUuVmVjdG9yMj47XG5leHBvcnQgdHlwZSBOZ3RWZWN0b3IzID0gTmd0VmVjdG9yTGlrZTxUSFJFRS5WZWN0b3IzPjtcbmV4cG9ydCB0eXBlIE5ndFZlY3RvcjQgPSBOZ3RWZWN0b3JMaWtlPFRIUkVFLlZlY3RvcjQ+O1xuZXhwb3J0IHR5cGUgTmd0TGF5ZXJzID0gVEhSRUUuTGF5ZXJzIHwgUGFyYW1ldGVyczxUSFJFRS5MYXllcnNbJ3NldCddPlswXTtcbmV4cG9ydCB0eXBlIE5ndFF1YXRlcm5pb24gPSBUSFJFRS5RdWF0ZXJuaW9uIHwgUGFyYW1ldGVyczxUSFJFRS5RdWF0ZXJuaW9uWydzZXQnXT47XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmd0Tm9kZUV2ZW50TWFwPFRPcmlnaW5hbD4ge1xuXHRhZnRlckF0dGFjaDogTmd0QWZ0ZXJBdHRhY2g8VE9yaWdpbmFsLCBOZ3RJbnN0YW5jZU5vZGU+O1xuXHRhZnRlclVwZGF0ZTogVE9yaWdpbmFsO1xuXHRiZWZvcmVSZW5kZXI6IE5ndEJlZm9yZVJlbmRlckV2ZW50PFRPcmlnaW5hbD47XG59XG5cbmV4cG9ydCB0eXBlIE5ndE5vZGVFbGVtZW50PFRPcmlnaW5hbCwgVENvbnN0cnVjdG9yPiA9IHtcblx0YXR0YWNoOiBzdHJpbmcgfCBzdHJpbmdbXSB8IE5ndEF0dGFjaEZ1bmN0aW9uO1xuXHQvLyByZWY6IE5ndEluamVjdGVkUmVmPFRPcmlnaW5hbD47XG5cdGFkZEV2ZW50TGlzdGVuZXI8VEV2ZW50S2V5IGV4dGVuZHMga2V5b2YgTmd0Tm9kZUV2ZW50TWFwPFRPcmlnaW5hbD4+KFxuXHRcdHR5cGU6IFRFdmVudEtleSxcblx0XHRsaXN0ZW5lcjogKHRoaXM6IE5ndE5vZGVFbGVtZW50PFRPcmlnaW5hbCwgVENvbnN0cnVjdG9yPiwgZXY6IE5ndE5vZGVFdmVudE1hcDxUT3JpZ2luYWw+W1RFdmVudEtleV0pID0+IGFueSxcblx0KTogdm9pZDtcblx0cmVtb3ZlRXZlbnRMaXN0ZW5lcjxURXZlbnRLZXkgZXh0ZW5kcyBrZXlvZiBOZ3ROb2RlRXZlbnRNYXA8VE9yaWdpbmFsPj4oXG5cdFx0dHlwZTogVEV2ZW50S2V5LFxuXHRcdGxpc3RlbmVyOiAodGhpczogTmd0Tm9kZUVsZW1lbnQ8VE9yaWdpbmFsLCBUQ29uc3RydWN0b3I+LCBldjogTmd0Tm9kZUV2ZW50TWFwPFRPcmlnaW5hbD5bVEV2ZW50S2V5XSkgPT4gYW55LFxuXHQpOiB2b2lkO1xuXHRfX25ndF9hcmdzX186IE5ndEFyZ3M8VENvbnN0cnVjdG9yPjtcbn07XG5cbmV4cG9ydCB0eXBlIE5ndE5vZGU8VE9yaWdpbmFsLCBUQ29uc3RydWN0b3IsIFROb0V2ZW50ID0gTm9FdmVudDxUT3JpZ2luYWw+PiA9IE5ndEV4dGVuZGVkQ29sb3JzPFxuXHROZ3RPdmVyd3JpdGU8UGFydGlhbDxUTm9FdmVudD4sIE5ndE5vZGVFbGVtZW50PFRPcmlnaW5hbCwgVENvbnN0cnVjdG9yPj5cbj47XG5cbmV4cG9ydCB0eXBlIE5ndE9iamVjdDNERXZlbnRzTWFwID0ge1xuXHRbVEV2ZW50IGluIGtleW9mIE5ndEV2ZW50SGFuZGxlcnNdLT86IFBhcmFtZXRlcnM8Tm9uTnVsbGFibGU8Tmd0RXZlbnRIYW5kbGVyc1tURXZlbnRdPj5bMF07XG59O1xuXG5leHBvcnQgdHlwZSBOZ3RPYmplY3QzRE5vZGU8VE9yaWdpbmFsLCBUQ29uc3RydWN0b3IsIFROb0V2ZW50ID0gTm9FdmVudDxUT3JpZ2luYWw+PiA9IE5ndE92ZXJ3cml0ZTxcblx0Tmd0Tm9kZTxUT3JpZ2luYWwsIFRDb25zdHJ1Y3RvciwgVE5vRXZlbnQ+LFxuXHR7XG5cdFx0cG9zaXRpb246IE5ndFZlY3RvcjM7XG5cdFx0dXA6IE5ndFZlY3RvcjM7XG5cdFx0c2NhbGU6IE5ndFZlY3RvcjM7XG5cdFx0cm90YXRpb246IE5ndEV1bGVyO1xuXHRcdG1hdHJpeDogTmd0TWF0cml4NDtcblx0XHRxdWF0ZXJuaW9uOiBOZ3RRdWF0ZXJuaW9uO1xuXHRcdGxheWVyczogTmd0TGF5ZXJzO1xuXHRcdGRpc3Bvc2U6ICgoKSA9PiB2b2lkKSB8IG51bGw7XG5cdFx0YWRkRXZlbnRMaXN0ZW5lcjxURXZlbnRLZXkgZXh0ZW5kcyBrZXlvZiBOZ3RPYmplY3QzREV2ZW50c01hcD4oXG5cdFx0XHR0eXBlOiBURXZlbnRLZXksXG5cdFx0XHRsaXN0ZW5lcjogKHRoaXM6IE5ndE9iamVjdDNETm9kZTxUT3JpZ2luYWwsIFRDb25zdHJ1Y3Rvcj4sIGV2OiBOZ3RPYmplY3QzREV2ZW50c01hcFtURXZlbnRLZXldKSA9PiBhbnksXG5cdFx0KTogdm9pZDtcblx0XHRyZW1vdmVFdmVudExpc3RlbmVyPFRFdmVudEtleSBleHRlbmRzIGtleW9mIE5ndE9iamVjdDNERXZlbnRzTWFwPihcblx0XHRcdHR5cGU6IFRFdmVudEtleSxcblx0XHRcdGxpc3RlbmVyOiAodGhpczogTmd0T2JqZWN0M0ROb2RlPFRPcmlnaW5hbCwgVENvbnN0cnVjdG9yPiwgZXY6IE5ndE9iamVjdDNERXZlbnRzTWFwW1RFdmVudEtleV0pID0+IGFueSxcblx0XHQpOiB2b2lkO1xuXHR9XG4+O1xuXG5leHBvcnQgdHlwZSBOZ3RHZW9tZXRyeTxUR2VvbWV0cnkgZXh0ZW5kcyBUSFJFRS5CdWZmZXJHZW9tZXRyeSwgVENvbnN0cnVjdG9yPiA9IE5ndE5vZGU8VEdlb21ldHJ5LCBUQ29uc3RydWN0b3I+O1xuZXhwb3J0IHR5cGUgTmd0TWF0ZXJpYWw8VE1hdGVyaWFsIGV4dGVuZHMgVEhSRUUuTWF0ZXJpYWwsIFRDb25zdHJ1Y3Rvcj4gPSBOZ3ROb2RlPFRNYXRlcmlhbCwgVENvbnN0cnVjdG9yPjtcbmV4cG9ydCB0eXBlIE5ndExpZ2h0PFQgZXh0ZW5kcyBUSFJFRS5MaWdodCwgUD4gPSBOZ3RPYmplY3QzRE5vZGU8VCwgUD47XG5cbmV4cG9ydCB0eXBlIE5ndE9iamVjdDNEID0gTmd0T2JqZWN0M0ROb2RlPFRIUkVFLk9iamVjdDNELCB0eXBlb2YgVEhSRUUuT2JqZWN0M0Q+O1xuZXhwb3J0IHR5cGUgTmd0QXVkaW8gPSBOZ3RPYmplY3QzRE5vZGU8VEhSRUUuQXVkaW8sIHR5cGVvZiBUSFJFRS5BdWRpbz47XG5leHBvcnQgdHlwZSBOZ3RBdWRpb0xpc3RlbmVyID0gTmd0T2JqZWN0M0ROb2RlPFRIUkVFLkF1ZGlvTGlzdGVuZXIsIHR5cGVvZiBUSFJFRS5BdWRpb0xpc3RlbmVyPjtcbmV4cG9ydCB0eXBlIE5ndFBvc2l0aW9uYWxBdWRpbyA9IE5ndE9iamVjdDNETm9kZTxUSFJFRS5Qb3NpdGlvbmFsQXVkaW8sIHR5cGVvZiBUSFJFRS5Qb3NpdGlvbmFsQXVkaW8+O1xuXG5leHBvcnQgdHlwZSBOZ3RNZXNoID0gTmd0T2JqZWN0M0ROb2RlPFRIUkVFLk1lc2gsIHR5cGVvZiBUSFJFRS5NZXNoPjtcbmV4cG9ydCB0eXBlIE5ndEluc3RhbmNlZE1lc2ggPSBOZ3RPYmplY3QzRE5vZGU8VEhSRUUuSW5zdGFuY2VkTWVzaCwgdHlwZW9mIFRIUkVFLkluc3RhbmNlZE1lc2g+O1xuZXhwb3J0IHR5cGUgTmd0U2NlbmUgPSBOZ3RPYmplY3QzRE5vZGU8VEhSRUUuU2NlbmUsIHR5cGVvZiBUSFJFRS5TY2VuZT47XG5leHBvcnQgdHlwZSBOZ3RTcHJpdGUgPSBOZ3RPYmplY3QzRE5vZGU8VEhSRUUuU3ByaXRlLCB0eXBlb2YgVEhSRUUuU3ByaXRlPjtcbmV4cG9ydCB0eXBlIE5ndExPRCA9IE5ndE9iamVjdDNETm9kZTxUSFJFRS5MT0QsIHR5cGVvZiBUSFJFRS5MT0Q+O1xuZXhwb3J0IHR5cGUgTmd0U2tpbm5lZE1lc2ggPSBOZ3RPYmplY3QzRE5vZGU8VEhSRUUuU2tpbm5lZE1lc2gsIHR5cGVvZiBUSFJFRS5Ta2lubmVkTWVzaD47XG5cbmV4cG9ydCB0eXBlIE5ndFNrZWxldG9uID0gTmd0T2JqZWN0M0ROb2RlPFRIUkVFLlNrZWxldG9uLCB0eXBlb2YgVEhSRUUuU2tlbGV0b24+O1xuZXhwb3J0IHR5cGUgTmd0Qm9uZSA9IE5ndE9iamVjdDNETm9kZTxUSFJFRS5Cb25lLCB0eXBlb2YgVEhSRUUuQm9uZT47XG5leHBvcnQgdHlwZSBOZ3RMaW5lID0gTmd0T2JqZWN0M0ROb2RlPFRIUkVFLkxpbmUsIHR5cGVvZiBUSFJFRS5MaW5lPjtcbmV4cG9ydCB0eXBlIE5ndExpbmVTZWdtZW50cyA9IE5ndE9iamVjdDNETm9kZTxUSFJFRS5MaW5lU2VnbWVudHMsIHR5cGVvZiBUSFJFRS5MaW5lU2VnbWVudHM+O1xuZXhwb3J0IHR5cGUgTmd0TGluZUxvb3AgPSBOZ3RPYmplY3QzRE5vZGU8VEhSRUUuTGluZUxvb3AsIHR5cGVvZiBUSFJFRS5MaW5lTG9vcD47XG5leHBvcnQgdHlwZSBOZ3RQb2ludHMgPSBOZ3RPYmplY3QzRE5vZGU8VEhSRUUuUG9pbnRzLCB0eXBlb2YgVEhSRUUuUG9pbnRzPjtcbmV4cG9ydCB0eXBlIE5ndEdyb3VwID0gTmd0T2JqZWN0M0ROb2RlPFRIUkVFLkdyb3VwLCB0eXBlb2YgVEhSRUUuR3JvdXA+O1xuXG5leHBvcnQgdHlwZSBOZ3RDYW1lcmFOb2RlID0gTmd0T2JqZWN0M0ROb2RlPFRIUkVFLkNhbWVyYSwgdHlwZW9mIFRIUkVFLkNhbWVyYT47XG5leHBvcnQgdHlwZSBOZ3RQZXJzcGVjdGl2ZUNhbWVyYSA9IE5ndE9iamVjdDNETm9kZTxUSFJFRS5QZXJzcGVjdGl2ZUNhbWVyYSwgdHlwZW9mIFRIUkVFLlBlcnNwZWN0aXZlQ2FtZXJhPjtcbmV4cG9ydCB0eXBlIE5ndE9ydGhvZ3JhcGhpY0NhbWVyYSA9IE5ndE9iamVjdDNETm9kZTxUSFJFRS5PcnRob2dyYXBoaWNDYW1lcmEsIHR5cGVvZiBUSFJFRS5PcnRob2dyYXBoaWNDYW1lcmE+O1xuZXhwb3J0IHR5cGUgTmd0Q3ViZUNhbWVyYSA9IE5ndE9iamVjdDNETm9kZTxUSFJFRS5DdWJlQ2FtZXJhLCB0eXBlb2YgVEhSRUUuQ3ViZUNhbWVyYT47XG5leHBvcnQgdHlwZSBOZ3RBcnJheUNhbWVyYSA9IE5ndE9iamVjdDNETm9kZTxUSFJFRS5BcnJheUNhbWVyYSwgdHlwZW9mIFRIUkVFLkFycmF5Q2FtZXJhPjtcblxuZXhwb3J0IHR5cGUgTmd0SW5zdGFuY2VkQnVmZmVyR2VvbWV0cnkgPSBOZ3RHZW9tZXRyeTxcblx0VEhSRUUuSW5zdGFuY2VkQnVmZmVyR2VvbWV0cnksXG5cdHR5cGVvZiBUSFJFRS5JbnN0YW5jZWRCdWZmZXJHZW9tZXRyeVxuPjtcbmV4cG9ydCB0eXBlIE5ndEJ1ZmZlckdlb21ldHJ5ID0gTmd0R2VvbWV0cnk8VEhSRUUuQnVmZmVyR2VvbWV0cnksIHR5cGVvZiBUSFJFRS5CdWZmZXJHZW9tZXRyeT47XG5leHBvcnQgdHlwZSBOZ3RXaXJlZnJhbWVHZW9tZXRyeSA9IE5ndEdlb21ldHJ5PFRIUkVFLldpcmVmcmFtZUdlb21ldHJ5LCB0eXBlb2YgVEhSRUUuV2lyZWZyYW1lR2VvbWV0cnk+O1xuZXhwb3J0IHR5cGUgTmd0VGV0cmFoZWRyb25HZW9tZXRyeSA9IE5ndEdlb21ldHJ5PFRIUkVFLlRldHJhaGVkcm9uR2VvbWV0cnksIHR5cGVvZiBUSFJFRS5UZXRyYWhlZHJvbkdlb21ldHJ5PjtcbmV4cG9ydCB0eXBlIE5ndE9jdGFoZWRyb25HZW9tZXRyeSA9IE5ndEdlb21ldHJ5PFRIUkVFLk9jdGFoZWRyb25HZW9tZXRyeSwgdHlwZW9mIFRIUkVFLk9jdGFoZWRyb25HZW9tZXRyeT47XG5leHBvcnQgdHlwZSBOZ3RJY29zYWhlZHJvbkdlb21ldHJ5ID0gTmd0R2VvbWV0cnk8VEhSRUUuSWNvc2FoZWRyb25HZW9tZXRyeSwgdHlwZW9mIFRIUkVFLkljb3NhaGVkcm9uR2VvbWV0cnk+O1xuZXhwb3J0IHR5cGUgTmd0RG9kZWNhaGVkcm9uR2VvbWV0cnkgPSBOZ3RHZW9tZXRyeTxUSFJFRS5Eb2RlY2FoZWRyb25HZW9tZXRyeSwgdHlwZW9mIFRIUkVFLkRvZGVjYWhlZHJvbkdlb21ldHJ5PjtcbmV4cG9ydCB0eXBlIE5ndFBvbHloZWRyb25HZW9tZXRyeSA9IE5ndEdlb21ldHJ5PFRIUkVFLlBvbHloZWRyb25HZW9tZXRyeSwgdHlwZW9mIFRIUkVFLlBvbHloZWRyb25HZW9tZXRyeT47XG5leHBvcnQgdHlwZSBOZ3RUdWJlR2VvbWV0cnkgPSBOZ3RHZW9tZXRyeTxUSFJFRS5UdWJlR2VvbWV0cnksIHR5cGVvZiBUSFJFRS5UdWJlR2VvbWV0cnk+O1xuZXhwb3J0IHR5cGUgTmd0VG9ydXNLbm90R2VvbWV0cnkgPSBOZ3RHZW9tZXRyeTxUSFJFRS5Ub3J1c0tub3RHZW9tZXRyeSwgdHlwZW9mIFRIUkVFLlRvcnVzS25vdEdlb21ldHJ5PjtcbmV4cG9ydCB0eXBlIE5ndFRvcnVzR2VvbWV0cnkgPSBOZ3RHZW9tZXRyeTxUSFJFRS5Ub3J1c0dlb21ldHJ5LCB0eXBlb2YgVEhSRUUuVG9ydXNHZW9tZXRyeT47XG5leHBvcnQgdHlwZSBOZ3RTcGhlcmVHZW9tZXRyeSA9IE5ndEdlb21ldHJ5PFRIUkVFLlNwaGVyZUdlb21ldHJ5LCB0eXBlb2YgVEhSRUUuU3BoZXJlR2VvbWV0cnk+O1xuZXhwb3J0IHR5cGUgTmd0UmluZ0dlb21ldHJ5ID0gTmd0R2VvbWV0cnk8VEhSRUUuUmluZ0dlb21ldHJ5LCB0eXBlb2YgVEhSRUUuUmluZ0dlb21ldHJ5PjtcbmV4cG9ydCB0eXBlIE5ndFBsYW5lR2VvbWV0cnkgPSBOZ3RHZW9tZXRyeTxUSFJFRS5QbGFuZUdlb21ldHJ5LCB0eXBlb2YgVEhSRUUuUGxhbmVHZW9tZXRyeT47XG5leHBvcnQgdHlwZSBOZ3RMYXRoZUdlb21ldHJ5ID0gTmd0R2VvbWV0cnk8VEhSRUUuTGF0aGVHZW9tZXRyeSwgdHlwZW9mIFRIUkVFLkxhdGhlR2VvbWV0cnk+O1xuZXhwb3J0IHR5cGUgTmd0U2hhcGVHZW9tZXRyeSA9IE5ndEdlb21ldHJ5PFRIUkVFLlNoYXBlR2VvbWV0cnksIHR5cGVvZiBUSFJFRS5TaGFwZUdlb21ldHJ5PjtcbmV4cG9ydCB0eXBlIE5ndEV4dHJ1ZGVHZW9tZXRyeSA9IE5ndEdlb21ldHJ5PFRIUkVFLkV4dHJ1ZGVHZW9tZXRyeSwgdHlwZW9mIFRIUkVFLkV4dHJ1ZGVHZW9tZXRyeT47XG5leHBvcnQgdHlwZSBOZ3RFZGdlc0dlb21ldHJ5ID0gTmd0R2VvbWV0cnk8VEhSRUUuRWRnZXNHZW9tZXRyeSwgdHlwZW9mIFRIUkVFLkVkZ2VzR2VvbWV0cnk+O1xuZXhwb3J0IHR5cGUgTmd0Q29uZUdlb21ldHJ5ID0gTmd0R2VvbWV0cnk8VEhSRUUuQ29uZUdlb21ldHJ5LCB0eXBlb2YgVEhSRUUuQ29uZUdlb21ldHJ5PjtcbmV4cG9ydCB0eXBlIE5ndEN5bGluZGVyR2VvbWV0cnkgPSBOZ3RHZW9tZXRyeTxUSFJFRS5DeWxpbmRlckdlb21ldHJ5LCB0eXBlb2YgVEhSRUUuQ3lsaW5kZXJHZW9tZXRyeT47XG5leHBvcnQgdHlwZSBOZ3RDaXJjbGVHZW9tZXRyeSA9IE5ndEdlb21ldHJ5PFRIUkVFLkNpcmNsZUdlb21ldHJ5LCB0eXBlb2YgVEhSRUUuQ2lyY2xlR2VvbWV0cnk+O1xuZXhwb3J0IHR5cGUgTmd0Qm94R2VvbWV0cnkgPSBOZ3RHZW9tZXRyeTxUSFJFRS5Cb3hHZW9tZXRyeSwgdHlwZW9mIFRIUkVFLkJveEdlb21ldHJ5PjtcbmV4cG9ydCB0eXBlIE5ndENhcHN1bGVHZW9tZXRyeSA9IE5ndEdlb21ldHJ5PFRIUkVFLkNhcHN1bGVHZW9tZXRyeSwgdHlwZW9mIFRIUkVFLkNhcHN1bGVHZW9tZXRyeT47XG5cbmV4cG9ydCB0eXBlIE5ndFNoYWRvd01hdGVyaWFsID0gTmd0TWF0ZXJpYWw8VEhSRUUuU2hhZG93TWF0ZXJpYWwsIFtUSFJFRS5TaGFkZXJNYXRlcmlhbFBhcmFtZXRlcnNdPjtcbmV4cG9ydCB0eXBlIE5ndFNwcml0ZU1hdGVyaWFsID0gTmd0TWF0ZXJpYWw8VEhSRUUuU3ByaXRlTWF0ZXJpYWwsIFtUSFJFRS5TcHJpdGVNYXRlcmlhbFBhcmFtZXRlcnNdPjtcbmV4cG9ydCB0eXBlIE5ndFJhd1NoYWRlck1hdGVyaWFsID0gTmd0TWF0ZXJpYWw8VEhSRUUuUmF3U2hhZGVyTWF0ZXJpYWwsIFtUSFJFRS5TaGFkZXJNYXRlcmlhbFBhcmFtZXRlcnNdPjtcbmV4cG9ydCB0eXBlIE5ndFNoYWRlck1hdGVyaWFsID0gTmd0TWF0ZXJpYWw8VEhSRUUuU2hhZGVyTWF0ZXJpYWwsIFtUSFJFRS5TaGFkZXJNYXRlcmlhbFBhcmFtZXRlcnNdPjtcbmV4cG9ydCB0eXBlIE5ndFBvaW50c01hdGVyaWFsID0gTmd0TWF0ZXJpYWw8VEhSRUUuUG9pbnRzTWF0ZXJpYWwsIFtUSFJFRS5Qb2ludHNNYXRlcmlhbFBhcmFtZXRlcnNdPjtcbmV4cG9ydCB0eXBlIE5ndE1lc2hQaHlzaWNhbE1hdGVyaWFsID0gTmd0TWF0ZXJpYWw8VEhSRUUuTWVzaFBoeXNpY2FsTWF0ZXJpYWwsIFtUSFJFRS5NZXNoUGh5c2ljYWxNYXRlcmlhbFBhcmFtZXRlcnNdPjtcbmV4cG9ydCB0eXBlIE5ndE1lc2hTdGFuZGFyZE1hdGVyaWFsID0gTmd0TWF0ZXJpYWw8VEhSRUUuTWVzaFN0YW5kYXJkTWF0ZXJpYWwsIFtUSFJFRS5NZXNoU3RhbmRhcmRNYXRlcmlhbFBhcmFtZXRlcnNdPjtcbmV4cG9ydCB0eXBlIE5ndE1lc2hQaG9uZ01hdGVyaWFsID0gTmd0TWF0ZXJpYWw8VEhSRUUuTWVzaFBob25nTWF0ZXJpYWwsIFtUSFJFRS5NZXNoUGhvbmdNYXRlcmlhbFBhcmFtZXRlcnNdPjtcbmV4cG9ydCB0eXBlIE5ndE1lc2hUb29uTWF0ZXJpYWwgPSBOZ3RNYXRlcmlhbDxUSFJFRS5NZXNoVG9vbk1hdGVyaWFsLCBbVEhSRUUuTWVzaFRvb25NYXRlcmlhbFBhcmFtZXRlcnNdPjtcbmV4cG9ydCB0eXBlIE5ndE1lc2hOb3JtYWxNYXRlcmlhbCA9IE5ndE1hdGVyaWFsPFRIUkVFLk1lc2hOb3JtYWxNYXRlcmlhbCwgW1RIUkVFLk1lc2hOb3JtYWxNYXRlcmlhbFBhcmFtZXRlcnNdPjtcbmV4cG9ydCB0eXBlIE5ndE1lc2hMYW1iZXJ0TWF0ZXJpYWwgPSBOZ3RNYXRlcmlhbDxUSFJFRS5NZXNoTGFtYmVydE1hdGVyaWFsLCBbVEhSRUUuTWVzaExhbWJlcnRNYXRlcmlhbFBhcmFtZXRlcnNdPjtcbmV4cG9ydCB0eXBlIE5ndE1lc2hEZXB0aE1hdGVyaWFsID0gTmd0TWF0ZXJpYWw8VEhSRUUuTWVzaERlcHRoTWF0ZXJpYWwsIFtUSFJFRS5NZXNoRGVwdGhNYXRlcmlhbFBhcmFtZXRlcnNdPjtcbmV4cG9ydCB0eXBlIE5ndE1lc2hEaXN0YW5jZU1hdGVyaWFsID0gTmd0TWF0ZXJpYWw8VEhSRUUuTWVzaERpc3RhbmNlTWF0ZXJpYWwsIFtUSFJFRS5NZXNoRGlzdGFuY2VNYXRlcmlhbFBhcmFtZXRlcnNdPjtcbmV4cG9ydCB0eXBlIE5ndE1lc2hCYXNpY01hdGVyaWFsID0gTmd0TWF0ZXJpYWw8VEhSRUUuTWVzaEJhc2ljTWF0ZXJpYWwsIFtUSFJFRS5NZXNoQmFzaWNNYXRlcmlhbFBhcmFtZXRlcnNdPjtcbmV4cG9ydCB0eXBlIE5ndE1lc2hNYXRjYXBNYXRlcmlhbCA9IE5ndE1hdGVyaWFsPFRIUkVFLk1lc2hNYXRjYXBNYXRlcmlhbCwgW1RIUkVFLk1lc2hNYXRjYXBNYXRlcmlhbFBhcmFtZXRlcnNdPjtcbmV4cG9ydCB0eXBlIE5ndExpbmVEYXNoZWRNYXRlcmlhbCA9IE5ndE1hdGVyaWFsPFRIUkVFLkxpbmVEYXNoZWRNYXRlcmlhbCwgW1RIUkVFLkxpbmVEYXNoZWRNYXRlcmlhbFBhcmFtZXRlcnNdPjtcbmV4cG9ydCB0eXBlIE5ndExpbmVCYXNpY01hdGVyaWFsID0gTmd0TWF0ZXJpYWw8VEhSRUUuTGluZUJhc2ljTWF0ZXJpYWwsIFtUSFJFRS5MaW5lQmFzaWNNYXRlcmlhbFBhcmFtZXRlcnNdPjtcblxuZXhwb3J0IHR5cGUgTmd0UHJpbWl0aXZlID0gTmd0Tm9kZUVsZW1lbnQ8YW55LCBhbnk+O1xuZXhwb3J0IHR5cGUgTmd0VmFsdWUgPSBOZ3ROb2RlPHsgcmF3VmFsdWU6IGFueSB9LCB7fT47XG5cbmV4cG9ydCB0eXBlIE5ndExpZ2h0U2hhZG93ID0gTmd0Tm9kZTxUSFJFRS5MaWdodFNoYWRvdywgdHlwZW9mIFRIUkVFLkxpZ2h0U2hhZG93PjtcbmV4cG9ydCB0eXBlIE5ndFNwb3RMaWdodFNoYWRvdyA9IE5ndE5vZGU8VEhSRUUuU3BvdExpZ2h0U2hhZG93LCB0eXBlb2YgVEhSRUUuU3BvdExpZ2h0U2hhZG93PjtcbmV4cG9ydCB0eXBlIE5ndERpcmVjdGlvbmFsTGlnaHRTaGFkb3cgPSBOZ3ROb2RlPFRIUkVFLkRpcmVjdGlvbmFsTGlnaHRTaGFkb3csIHR5cGVvZiBUSFJFRS5EaXJlY3Rpb25hbExpZ2h0U2hhZG93PjtcblxuZXhwb3J0IHR5cGUgTmd0U3BvdExpZ2h0ID0gTmd0TGlnaHQ8VEhSRUUuU3BvdExpZ2h0LCB0eXBlb2YgVEhSRUUuU3BvdExpZ2h0PjtcbmV4cG9ydCB0eXBlIE5ndFBvaW50TGlnaHQgPSBOZ3RMaWdodDxUSFJFRS5Qb2ludExpZ2h0LCB0eXBlb2YgVEhSRUUuUG9pbnRMaWdodD47XG5leHBvcnQgdHlwZSBOZ3RSZWN0QXJlYUxpZ2h0ID0gTmd0TGlnaHQ8VEhSRUUuUmVjdEFyZWFMaWdodCwgdHlwZW9mIFRIUkVFLlJlY3RBcmVhTGlnaHQ+O1xuZXhwb3J0IHR5cGUgTmd0SGVtaXNwaGVyZUxpZ2h0ID0gTmd0TGlnaHQ8VEhSRUUuSGVtaXNwaGVyZUxpZ2h0LCB0eXBlb2YgVEhSRUUuSGVtaXNwaGVyZUxpZ2h0PjtcbmV4cG9ydCB0eXBlIE5ndERpcmVjdGlvbmFsTGlnaHQgPSBOZ3RMaWdodDxUSFJFRS5EaXJlY3Rpb25hbExpZ2h0LCB0eXBlb2YgVEhSRUUuRGlyZWN0aW9uYWxMaWdodD47XG5leHBvcnQgdHlwZSBOZ3RBbWJpZW50TGlnaHQgPSBOZ3RMaWdodDxUSFJFRS5BbWJpZW50TGlnaHQsIHR5cGVvZiBUSFJFRS5BbWJpZW50TGlnaHQ+O1xuZXhwb3J0IHR5cGUgTmd0QW1iaWVudExpZ2h0UHJvYmUgPSBOZ3RMaWdodDxUSFJFRS5BbWJpZW50TGlnaHRQcm9iZSwgdHlwZW9mIFRIUkVFLkFtYmllbnRMaWdodFByb2JlPjtcbmV4cG9ydCB0eXBlIE5ndEhlbWlzcGhlcmVMaWdodFByb2JlID0gTmd0TGlnaHQ8VEhSRUUuSGVtaXNwaGVyZUxpZ2h0UHJvYmUsIHR5cGVvZiBUSFJFRS5IZW1pc3BoZXJlTGlnaHRQcm9iZT47XG5leHBvcnQgdHlwZSBOZ3RMaWdodFByb2JlID0gTmd0TGlnaHQ8VEhSRUUuTGlnaHRQcm9iZSwgdHlwZW9mIFRIUkVFLkxpZ2h0UHJvYmU+O1xuXG5leHBvcnQgdHlwZSBOZ3RTcG90TGlnaHRIZWxwZXIgPSBOZ3RPYmplY3QzRE5vZGU8VEhSRUUuU3BvdExpZ2h0SGVscGVyLCB0eXBlb2YgVEhSRUUuU3BvdExpZ2h0SGVscGVyPjtcbmV4cG9ydCB0eXBlIE5ndFNrZWxldG9uSGVscGVyID0gTmd0T2JqZWN0M0ROb2RlPFRIUkVFLlNrZWxldG9uSGVscGVyLCB0eXBlb2YgVEhSRUUuU2tlbGV0b25IZWxwZXI+O1xuZXhwb3J0IHR5cGUgTmd0UG9pbnRMaWdodEhlbHBlciA9IE5ndE9iamVjdDNETm9kZTxUSFJFRS5Qb2ludExpZ2h0SGVscGVyLCB0eXBlb2YgVEhSRUUuUG9pbnRMaWdodEhlbHBlcj47XG5leHBvcnQgdHlwZSBOZ3RIZW1pc3BoZXJlTGlnaHRIZWxwZXIgPSBOZ3RPYmplY3QzRE5vZGU8VEhSRUUuSGVtaXNwaGVyZUxpZ2h0SGVscGVyLCB0eXBlb2YgVEhSRUUuSGVtaXNwaGVyZUxpZ2h0SGVscGVyPjtcbmV4cG9ydCB0eXBlIE5ndEdyaWRIZWxwZXIgPSBOZ3RPYmplY3QzRE5vZGU8VEhSRUUuR3JpZEhlbHBlciwgdHlwZW9mIFRIUkVFLkdyaWRIZWxwZXI+O1xuZXhwb3J0IHR5cGUgTmd0UG9sYXJHcmlkSGVscGVyID0gTmd0T2JqZWN0M0ROb2RlPFRIUkVFLlBvbGFyR3JpZEhlbHBlciwgdHlwZW9mIFRIUkVFLlBvbGFyR3JpZEhlbHBlcj47XG5leHBvcnQgdHlwZSBOZ3REaXJlY3Rpb25hbExpZ2h0SGVscGVyID0gTmd0T2JqZWN0M0ROb2RlPFxuXHRUSFJFRS5EaXJlY3Rpb25hbExpZ2h0SGVscGVyLFxuXHR0eXBlb2YgVEhSRUUuRGlyZWN0aW9uYWxMaWdodEhlbHBlclxuPjtcbmV4cG9ydCB0eXBlIE5ndENhbWVyYUhlbHBlciA9IE5ndE9iamVjdDNETm9kZTxUSFJFRS5DYW1lcmFIZWxwZXIsIHR5cGVvZiBUSFJFRS5DYW1lcmFIZWxwZXI+O1xuZXhwb3J0IHR5cGUgTmd0Qm94SGVscGVyID0gTmd0T2JqZWN0M0ROb2RlPFRIUkVFLkJveEhlbHBlciwgdHlwZW9mIFRIUkVFLkJveEhlbHBlcj47XG5leHBvcnQgdHlwZSBOZ3RCb3gzSGVscGVyID0gTmd0T2JqZWN0M0ROb2RlPFRIUkVFLkJveDNIZWxwZXIsIHR5cGVvZiBUSFJFRS5Cb3gzSGVscGVyPjtcbmV4cG9ydCB0eXBlIE5ndFBsYW5lSGVscGVyID0gTmd0T2JqZWN0M0ROb2RlPFRIUkVFLlBsYW5lSGVscGVyLCB0eXBlb2YgVEhSRUUuUGxhbmVIZWxwZXI+O1xuZXhwb3J0IHR5cGUgTmd0QXJyb3dIZWxwZXIgPSBOZ3RPYmplY3QzRE5vZGU8VEhSRUUuQXJyb3dIZWxwZXIsIHR5cGVvZiBUSFJFRS5BcnJvd0hlbHBlcj47XG5leHBvcnQgdHlwZSBOZ3RBeGVzSGVscGVyID0gTmd0T2JqZWN0M0ROb2RlPFRIUkVFLkF4ZXNIZWxwZXIsIHR5cGVvZiBUSFJFRS5BeGVzSGVscGVyPjtcblxuZXhwb3J0IHR5cGUgTmd0VGV4dHVyZSA9IE5ndE5vZGU8VEhSRUUuVGV4dHVyZSwgdHlwZW9mIFRIUkVFLlRleHR1cmU+O1xuZXhwb3J0IHR5cGUgTmd0VmlkZW9UZXh0dXJlID0gTmd0Tm9kZTxUSFJFRS5WaWRlb1RleHR1cmUsIHR5cGVvZiBUSFJFRS5WaWRlb1RleHR1cmU+O1xuZXhwb3J0IHR5cGUgTmd0RGF0YVRleHR1cmUgPSBOZ3ROb2RlPFRIUkVFLkRhdGFUZXh0dXJlLCB0eXBlb2YgVEhSRUUuRGF0YVRleHR1cmU+O1xuZXhwb3J0IHR5cGUgTmd0RGF0YTNEVGV4dHVyZSA9IE5ndE5vZGU8VEhSRUUuRGF0YTNEVGV4dHVyZSwgdHlwZW9mIFRIUkVFLkRhdGEzRFRleHR1cmU+O1xuZXhwb3J0IHR5cGUgTmd0Q29tcHJlc3NlZFRleHR1cmUgPSBOZ3ROb2RlPFRIUkVFLkNvbXByZXNzZWRUZXh0dXJlLCB0eXBlb2YgVEhSRUUuQ29tcHJlc3NlZFRleHR1cmU+O1xuZXhwb3J0IHR5cGUgTmd0Q3ViZVRleHR1cmUgPSBOZ3ROb2RlPFRIUkVFLkN1YmVUZXh0dXJlLCB0eXBlb2YgVEhSRUUuQ3ViZVRleHR1cmU+O1xuZXhwb3J0IHR5cGUgTmd0Q2FudmFzVGV4dHVyZSA9IE5ndE5vZGU8VEhSRUUuQ2FudmFzVGV4dHVyZSwgdHlwZW9mIFRIUkVFLkNhbnZhc1RleHR1cmU+O1xuZXhwb3J0IHR5cGUgTmd0RGVwdGhUZXh0dXJlID0gTmd0Tm9kZTxUSFJFRS5EZXB0aFRleHR1cmUsIHR5cGVvZiBUSFJFRS5EZXB0aFRleHR1cmU+O1xuXG5leHBvcnQgdHlwZSBOZ3RSYXljYXN0ZXIgPSBOZ3ROb2RlPFRIUkVFLlJheWNhc3RlciwgdHlwZW9mIFRIUkVFLlJheWNhc3Rlcj47XG5leHBvcnQgdHlwZSBOZ3RWZWN0b3IyTm9kZSA9IE5ndE5vZGU8VEhSRUUuVmVjdG9yMiwgdHlwZW9mIFRIUkVFLlZlY3RvcjI+O1xuZXhwb3J0IHR5cGUgTmd0VmVjdG9yM05vZGUgPSBOZ3ROb2RlPFRIUkVFLlZlY3RvcjMsIHR5cGVvZiBUSFJFRS5WZWN0b3IzPjtcbmV4cG9ydCB0eXBlIE5ndFZlY3RvcjROb2RlID0gTmd0Tm9kZTxUSFJFRS5WZWN0b3I0LCB0eXBlb2YgVEhSRUUuVmVjdG9yND47XG5leHBvcnQgdHlwZSBOZ3RFdWxlck5vZGUgPSBOZ3ROb2RlPFRIUkVFLkV1bGVyLCB0eXBlb2YgVEhSRUUuRXVsZXI+O1xuZXhwb3J0IHR5cGUgTmd0TWF0cml4M05vZGUgPSBOZ3ROb2RlPFRIUkVFLk1hdHJpeDMsIHR5cGVvZiBUSFJFRS5NYXRyaXgzPjtcbmV4cG9ydCB0eXBlIE5ndE1hdHJpeDROb2RlID0gTmd0Tm9kZTxUSFJFRS5NYXRyaXg0LCB0eXBlb2YgVEhSRUUuTWF0cml4ND47XG5leHBvcnQgdHlwZSBOZ3RRdWF0ZXJuaW9uTm9kZSA9IE5ndE5vZGU8VEhSRUUuUXVhdGVybmlvbiwgdHlwZW9mIFRIUkVFLlF1YXRlcm5pb24+O1xuZXhwb3J0IHR5cGUgTmd0QnVmZmVyQXR0cmlidXRlID0gTmd0Tm9kZTxUSFJFRS5CdWZmZXJBdHRyaWJ1dGUsIHR5cGVvZiBUSFJFRS5CdWZmZXJBdHRyaWJ1dGU+O1xuZXhwb3J0IHR5cGUgTmd0RmxvYXQxNkJ1ZmZlckF0dHJpYnV0ZSA9IE5ndE5vZGU8VEhSRUUuRmxvYXQxNkJ1ZmZlckF0dHJpYnV0ZSwgdHlwZW9mIFRIUkVFLkZsb2F0MTZCdWZmZXJBdHRyaWJ1dGU+O1xuZXhwb3J0IHR5cGUgTmd0RmxvYXQzMkJ1ZmZlckF0dHJpYnV0ZSA9IE5ndE5vZGU8VEhSRUUuRmxvYXQzMkJ1ZmZlckF0dHJpYnV0ZSwgdHlwZW9mIFRIUkVFLkZsb2F0MzJCdWZmZXJBdHRyaWJ1dGU+O1xuZXhwb3J0IHR5cGUgTmd0RmxvYXQ2NEJ1ZmZlckF0dHJpYnV0ZSA9IE5ndE5vZGU8VEhSRUUuRmxvYXQ2NEJ1ZmZlckF0dHJpYnV0ZSwgdHlwZW9mIFRIUkVFLkZsb2F0NjRCdWZmZXJBdHRyaWJ1dGU+O1xuZXhwb3J0IHR5cGUgTmd0SW50OEJ1ZmZlckF0dHJpYnV0ZSA9IE5ndE5vZGU8VEhSRUUuSW50OEJ1ZmZlckF0dHJpYnV0ZSwgdHlwZW9mIFRIUkVFLkludDhCdWZmZXJBdHRyaWJ1dGU+O1xuZXhwb3J0IHR5cGUgTmd0SW50MTZCdWZmZXJBdHRyaWJ1dGUgPSBOZ3ROb2RlPFRIUkVFLkludDE2QnVmZmVyQXR0cmlidXRlLCB0eXBlb2YgVEhSRUUuSW50MTZCdWZmZXJBdHRyaWJ1dGU+O1xuZXhwb3J0IHR5cGUgTmd0SW50MzJCdWZmZXJBdHRyaWJ1dGUgPSBOZ3ROb2RlPFRIUkVFLkludDMyQnVmZmVyQXR0cmlidXRlLCB0eXBlb2YgVEhSRUUuSW50MzJCdWZmZXJBdHRyaWJ1dGU+O1xuZXhwb3J0IHR5cGUgTmd0VWludDhCdWZmZXJBdHRyaWJ1dGUgPSBOZ3ROb2RlPFRIUkVFLlVpbnQ4QnVmZmVyQXR0cmlidXRlLCB0eXBlb2YgVEhSRUUuVWludDhCdWZmZXJBdHRyaWJ1dGU+O1xuZXhwb3J0IHR5cGUgTmd0VWludDE2QnVmZmVyQXR0cmlidXRlID0gTmd0Tm9kZTxUSFJFRS5VaW50MTZCdWZmZXJBdHRyaWJ1dGUsIHR5cGVvZiBUSFJFRS5VaW50MTZCdWZmZXJBdHRyaWJ1dGU+O1xuZXhwb3J0IHR5cGUgTmd0VWludDMyQnVmZmVyQXR0cmlidXRlID0gTmd0Tm9kZTxUSFJFRS5VaW50MzJCdWZmZXJBdHRyaWJ1dGUsIHR5cGVvZiBUSFJFRS5VaW50MzJCdWZmZXJBdHRyaWJ1dGU+O1xuZXhwb3J0IHR5cGUgTmd0SW5zdGFuY2VkQnVmZmVyQXR0cmlidXRlID0gTmd0Tm9kZTxcblx0VEhSRUUuSW5zdGFuY2VkQnVmZmVyQXR0cmlidXRlLFxuXHR0eXBlb2YgVEhSRUUuSW5zdGFuY2VkQnVmZmVyQXR0cmlidXRlXG4+O1xuZXhwb3J0IHR5cGUgTmd0Q29sb3IgPSBOZ3ROb2RlPFRIUkVFLkNvbG9yLCBUSFJFRS5Db2xvclJlcHJlc2VudGF0aW9uPjtcbmV4cG9ydCB0eXBlIE5ndEZvZyA9IE5ndE5vZGU8VEhSRUUuRm9nLCB0eXBlb2YgVEhSRUUuRm9nPjtcbmV4cG9ydCB0eXBlIE5ndEZvZ0V4cDIgPSBOZ3ROb2RlPFRIUkVFLkZvZ0V4cDIsIHR5cGVvZiBUSFJFRS5Gb2dFeHAyPjtcbmV4cG9ydCB0eXBlIE5ndFNoYXBlID0gTmd0Tm9kZTxUSFJFRS5TaGFwZSwgdHlwZW9mIFRIUkVFLlNoYXBlPjtcblxuZXhwb3J0IGludGVyZmFjZSBUaHJlZUVsZW1lbnRzIHtcblx0J25ndC1vYmplY3QzRCc6IE5ndE9iamVjdDNEO1xuXG5cdC8vIGBhdWRpb2Agd29ya3MgYnV0IGNvbmZsaWN0cyB3aXRoIEB0eXBlcy9yZWFjdC4gVHJ5IHVzaW5nIFBvc2l0aW9uYWxBdWRpbyBmcm9tIEByZWFjdC10aHJlZS9kcmVpIGluc3RlYWRcblx0J25ndC1hdWRpbyc6IE5ndEF1ZGlvO1xuXHQnbmd0LWF1ZGlvLWxpc3RlbmVyJzogTmd0QXVkaW9MaXN0ZW5lcjtcblx0J25ndC1wb3NpdGlvbmFsLWF1ZGlvJzogTmd0UG9zaXRpb25hbEF1ZGlvO1xuXG5cdCduZ3QtbWVzaCc6IE5ndE1lc2g7XG5cdCduZ3QtaW5zdGFuY2VkLW1lc2gnOiBOZ3RJbnN0YW5jZWRNZXNoO1xuXHQnbmd0LXNjZW5lJzogTmd0U2NlbmU7XG5cdCduZ3Qtc3ByaXRlJzogTmd0U3ByaXRlO1xuXHQnbmd0LWxPRCc6IE5ndExPRDtcblx0J25ndC1za2lubmVkLW1lc2gnOiBOZ3RTa2lubmVkTWVzaDtcblx0J25ndC1za2VsZXRvbic6IE5ndFNrZWxldG9uO1xuXHQnbmd0LWJvbmUnOiBOZ3RCb25lO1xuXG5cdCduZ3QtbGluZSc6IE5ndExpbmU7XG5cdCduZ3QtbGluZS1zZWdtZW50cyc6IE5ndExpbmVTZWdtZW50cztcblx0J25ndC1saW5lLWxvb3AnOiBOZ3RMaW5lTG9vcDtcblx0J25ndC1wb2ludHMnOiBOZ3RQb2ludHM7XG5cdCduZ3QtZ3JvdXAnOiBOZ3RHcm91cDtcblxuXHQvLyBjYW1lcmFzXG5cdCduZ3QtY2FtZXJhJzogTmd0Q2FtZXJhTm9kZTtcblx0J25ndC1wZXJzcGVjdGl2ZS1jYW1lcmEnOiBOZ3RQZXJzcGVjdGl2ZUNhbWVyYTtcblx0J25ndC1vcnRob2dyYXBoaWMtY2FtZXJhJzogTmd0T3J0aG9ncmFwaGljQ2FtZXJhO1xuXHQnbmd0LWN1YmUtY2FtZXJhJzogTmd0Q3ViZUNhbWVyYTtcblx0J25ndC1hcnJheS1jYW1lcmEnOiBOZ3RBcnJheUNhbWVyYTtcblxuXHQvLyBnZW9tZXRyeVxuXHQnbmd0LWluc3RhbmNlZC1idWZmZXItZ2VvbWV0cnknOiBOZ3RJbnN0YW5jZWRCdWZmZXJHZW9tZXRyeTtcblx0J25ndC1idWZmZXItZ2VvbWV0cnknOiBOZ3RCdWZmZXJHZW9tZXRyeTtcblx0J25ndC13aXJlZnJhbWUtZ2VvbWV0cnknOiBOZ3RXaXJlZnJhbWVHZW9tZXRyeTtcblx0J25ndC10ZXRyYWhlZHJvbi1nZW9tZXRyeSc6IE5ndFRldHJhaGVkcm9uR2VvbWV0cnk7XG5cdCduZ3Qtb2N0YWhlZHJvbi1nZW9tZXRyeSc6IE5ndE9jdGFoZWRyb25HZW9tZXRyeTtcblx0J25ndC1pY29zYWhlZHJvbi1nZW9tZXRyeSc6IE5ndEljb3NhaGVkcm9uR2VvbWV0cnk7XG5cdCduZ3QtcG9seWhlZHJvbi1nZW9tZXRyeSc6IE5ndFBvbHloZWRyb25HZW9tZXRyeTtcblx0J25ndC1kb2RlY2FoZWRyb24tZ2VvbWV0cnknOiBOZ3REb2RlY2FoZWRyb25HZW9tZXRyeTtcblx0J25ndC10dWJlLWdlb21ldHJ5JzogTmd0VHViZUdlb21ldHJ5O1xuXHQnbmd0LXRvcnVzLWtub3QtZ2VvbWV0cnknOiBOZ3RUb3J1c0tub3RHZW9tZXRyeTtcblx0J25ndC10b3J1cy1nZW9tZXRyeSc6IE5ndFRvcnVzR2VvbWV0cnk7XG5cdCduZ3Qtc3BoZXJlLWdlb21ldHJ5JzogTmd0U3BoZXJlR2VvbWV0cnk7XG5cdCduZ3QtcmluZy1nZW9tZXRyeSc6IE5ndFJpbmdHZW9tZXRyeTtcblx0J25ndC1wbGFuZS1nZW9tZXRyeSc6IE5ndFBsYW5lR2VvbWV0cnk7XG5cdCduZ3QtbGF0aGUtZ2VvbWV0cnknOiBOZ3RMYXRoZUdlb21ldHJ5O1xuXHQnbmd0LXNoYXBlLWdlb21ldHJ5JzogTmd0U2hhcGVHZW9tZXRyeTtcblx0J25ndC1leHRydWRlLWdlb21ldHJ5JzogTmd0RXh0cnVkZUdlb21ldHJ5O1xuXHQnbmd0LWVkZ2VzLWdlb21ldHJ5JzogTmd0RWRnZXNHZW9tZXRyeTtcblx0J25ndC1jb25lLWdlb21ldHJ5JzogTmd0Q29uZUdlb21ldHJ5O1xuXHQnbmd0LWN5bGluZGVyLWdlb21ldHJ5JzogTmd0Q3lsaW5kZXJHZW9tZXRyeTtcblx0J25ndC1jaXJjbGUtZ2VvbWV0cnknOiBOZ3RDaXJjbGVHZW9tZXRyeTtcblx0J25ndC1ib3gtZ2VvbWV0cnknOiBOZ3RCb3hHZW9tZXRyeTtcblx0J25ndC1jYXBzdWxlLWdlb21ldHJ5JzogTmd0Q2Fwc3VsZUdlb21ldHJ5O1xuXG5cdC8vIG1hdGVyaWFsc1xuXHQnbmd0LXNoYWRvdy1tYXRlcmlhbCc6IE5ndFNoYWRvd01hdGVyaWFsO1xuXHQnbmd0LXNwcml0ZS1tYXRlcmlhbCc6IE5ndFNwcml0ZU1hdGVyaWFsO1xuXHQnbmd0LXJhdy1zaGFkZXItbWF0ZXJpYWwnOiBOZ3RSYXdTaGFkZXJNYXRlcmlhbDtcblx0J25ndC1zaGFkZXItbWF0ZXJpYWwnOiBOZ3RTaGFkZXJNYXRlcmlhbDtcblx0J25ndC1wb2ludHMtbWF0ZXJpYWwnOiBOZ3RQb2ludHNNYXRlcmlhbDtcblx0J25ndC1tZXNoLXBoeXNpY2FsLW1hdGVyaWFsJzogTmd0TWVzaFBoeXNpY2FsTWF0ZXJpYWw7XG5cdCduZ3QtbWVzaC1zdGFuZGFyZC1tYXRlcmlhbCc6IE5ndE1lc2hTdGFuZGFyZE1hdGVyaWFsO1xuXHQnbmd0LW1lc2gtcGhvbmctbWF0ZXJpYWwnOiBOZ3RNZXNoUGhvbmdNYXRlcmlhbDtcblx0J25ndC1tZXNoLXRvb24tbWF0ZXJpYWwnOiBOZ3RNZXNoVG9vbk1hdGVyaWFsO1xuXHQnbmd0LW1lc2gtbm9ybWFsLW1hdGVyaWFsJzogTmd0TWVzaE5vcm1hbE1hdGVyaWFsO1xuXHQnbmd0LW1lc2gtbGFtYmVydC1tYXRlcmlhbCc6IE5ndE1lc2hMYW1iZXJ0TWF0ZXJpYWw7XG5cdCduZ3QtbWVzaC1kZXB0aC1tYXRlcmlhbCc6IE5ndE1lc2hEZXB0aE1hdGVyaWFsO1xuXHQnbmd0LW1lc2gtZGlzdGFuY2UtbWF0ZXJpYWwnOiBOZ3RNZXNoRGlzdGFuY2VNYXRlcmlhbDtcblx0J25ndC1tZXNoLWJhc2ljLW1hdGVyaWFsJzogTmd0TWVzaEJhc2ljTWF0ZXJpYWw7XG5cdCduZ3QtbWVzaC1tYXRjYXAtbWF0ZXJpYWwnOiBOZ3RNZXNoTWF0Y2FwTWF0ZXJpYWw7XG5cdCduZ3QtbGluZS1kYXNoZWQtbWF0ZXJpYWwnOiBOZ3RMaW5lRGFzaGVkTWF0ZXJpYWw7XG5cdCduZ3QtbGluZS1iYXNpYy1tYXRlcmlhbCc6IE5ndExpbmVCYXNpY01hdGVyaWFsO1xuXG5cdC8vIHByaW1pdGl2ZVxuXHQnbmd0LXByaW1pdGl2ZSc6IE5ndFByaW1pdGl2ZTtcblxuXHQvLyByYXdWYWx1ZVxuXHQnbmd0LXZhbHVlJzogTmd0VmFsdWU7XG5cblx0Ly8gbGlnaHRzIGFuZCBvdGhlclxuXHQnbmd0LXNwb3QtbGlnaHQtc2hhZG93JzogTmd0U3BvdExpZ2h0U2hhZG93O1xuXHQnbmd0LXNwb3QtbGlnaHQnOiBOZ3RTcG90TGlnaHQ7XG5cdCduZ3QtcG9pbnQtbGlnaHQnOiBOZ3RQb2ludExpZ2h0O1xuXHQnbmd0LXJlY3QtYXJlYS1saWdodCc6IE5ndFJlY3RBcmVhTGlnaHQ7XG5cdCduZ3QtaGVtaXNwaGVyZS1saWdodCc6IE5ndEhlbWlzcGhlcmVMaWdodDtcblx0J25ndC1kaXJlY3Rpb25hbC1saWdodC1zaGFkb3cnOiBOZ3REaXJlY3Rpb25hbExpZ2h0U2hhZG93O1xuXHQnbmd0LWRpcmVjdGlvbmFsLWxpZ2h0JzogTmd0RGlyZWN0aW9uYWxMaWdodDtcblx0J25ndC1hbWJpZW50LWxpZ2h0JzogTmd0QW1iaWVudExpZ2h0O1xuXHQnbmd0LWxpZ2h0LXNoYWRvdyc6IE5ndExpZ2h0U2hhZG93O1xuXHQnbmd0LWFtYmllbnQtbGlnaHQtcHJvYmUnOiBOZ3RBbWJpZW50TGlnaHRQcm9iZTtcblx0J25ndC1oZW1pc3BoZXJlLWxpZ2h0LXByb2JlJzogTmd0SGVtaXNwaGVyZUxpZ2h0UHJvYmU7XG5cdCduZ3QtbGlnaHQtcHJvYmUnOiBOZ3RMaWdodFByb2JlO1xuXG5cdC8vIGhlbHBlcnNcblx0J25ndC1zcG90LWxpZ2h0LWhlbHBlcic6IE5ndFNwb3RMaWdodEhlbHBlcjtcblx0J25ndC1za2VsZXRvbi1oZWxwZXInOiBOZ3RTa2VsZXRvbkhlbHBlcjtcblx0J25ndC1wb2ludC1saWdodC1oZWxwZXInOiBOZ3RQb2ludExpZ2h0SGVscGVyO1xuXHQnbmd0LWhlbWlzcGhlcmUtbGlnaHQtaGVscGVyJzogTmd0SGVtaXNwaGVyZUxpZ2h0SGVscGVyO1xuXHQnbmd0LWdyaWQtaGVscGVyJzogTmd0R3JpZEhlbHBlcjtcblx0J25ndC1wb2xhci1ncmlkLWhlbHBlcic6IE5ndFBvbGFyR3JpZEhlbHBlcjtcblx0J25ndC1kaXJlY3Rpb25hbC1saWdodC1oZWxwZXInOiBOZ3REaXJlY3Rpb25hbExpZ2h0SGVscGVyO1xuXHQnbmd0LWNhbWVyYS1oZWxwZXInOiBOZ3RDYW1lcmFIZWxwZXI7XG5cdCduZ3QtYm94LWhlbHBlcic6IE5ndEJveEhlbHBlcjtcblx0J25ndC1ib3gzLWhlbHBlcic6IE5ndEJveDNIZWxwZXI7XG5cdCduZ3QtcGxhbmUtaGVscGVyJzogTmd0UGxhbmVIZWxwZXI7XG5cdCduZ3QtYXJyb3ctaGVscGVyJzogTmd0QXJyb3dIZWxwZXI7XG5cdCduZ3QtYXhlcy1oZWxwZXInOiBOZ3RBeGVzSGVscGVyO1xuXG5cdC8vIHRleHR1cmVzXG5cdCduZ3QtdGV4dHVyZSc6IE5ndFRleHR1cmU7XG5cdCduZ3QtdmlkZW8tdGV4dHVyZSc6IE5ndFZpZGVvVGV4dHVyZTtcblx0J25ndC1kYXRhLXRleHR1cmUnOiBOZ3REYXRhVGV4dHVyZTtcblx0J25ndC1kYXRhM0QtdGV4dHVyZSc6IE5ndERhdGEzRFRleHR1cmU7XG5cdCduZ3QtY29tcHJlc3NlZC10ZXh0dXJlJzogTmd0Q29tcHJlc3NlZFRleHR1cmU7XG5cdCduZ3QtY3ViZS10ZXh0dXJlJzogTmd0Q3ViZVRleHR1cmU7XG5cdCduZ3QtY2FudmFzLXRleHR1cmUnOiBOZ3RDYW52YXNUZXh0dXJlO1xuXHQnbmd0LWRlcHRoLXRleHR1cmUnOiBOZ3REZXB0aFRleHR1cmU7XG5cblx0Ly8gbWlzY1xuXHQnbmd0LXJheWNhc3Rlcic6IE5ndFJheWNhc3Rlcjtcblx0J25ndC12ZWN0b3IyJzogTmd0VmVjdG9yMk5vZGU7XG5cdCduZ3QtdmVjdG9yMyc6IE5ndFZlY3RvcjNOb2RlO1xuXHQnbmd0LXZlY3RvcjQnOiBOZ3RWZWN0b3I0Tm9kZTtcblx0J25ndC1ldWxlcic6IE5ndEV1bGVyTm9kZTtcblx0J25ndC1tYXRyaXgzJzogTmd0TWF0cml4M05vZGU7XG5cdCduZ3QtbWF0cml4NCc6IE5ndE1hdHJpeDROb2RlO1xuXHQnbmd0LXF1YXRlcm5pb24nOiBOZ3RRdWF0ZXJuaW9uTm9kZTtcblx0J25ndC1idWZmZXItYXR0cmlidXRlJzogTmd0QnVmZmVyQXR0cmlidXRlO1xuXHQnbmd0LWZsb2F0MTYtYnVmZmVyLWF0dHJpYnV0ZSc6IE5ndEZsb2F0MTZCdWZmZXJBdHRyaWJ1dGU7XG5cdCduZ3QtZmxvYXQzMi1idWZmZXItYXR0cmlidXRlJzogTmd0RmxvYXQzMkJ1ZmZlckF0dHJpYnV0ZTtcblx0J25ndC1mbG9hdDY0LWJ1ZmZlci1hdHRyaWJ1dGUnOiBOZ3RGbG9hdDY0QnVmZmVyQXR0cmlidXRlO1xuXHQnbmd0LWludDgtYnVmZmVyLWF0dHJpYnV0ZSc6IE5ndEludDhCdWZmZXJBdHRyaWJ1dGU7XG5cdCduZ3QtaW50MTYtYnVmZmVyLWF0dHJpYnV0ZSc6IE5ndEludDE2QnVmZmVyQXR0cmlidXRlO1xuXHQnbmd0LWludDMyLWJ1ZmZlci1hdHRyaWJ1dGUnOiBOZ3RJbnQzMkJ1ZmZlckF0dHJpYnV0ZTtcblx0J25ndC11bml0OC1idWZmZXItYXR0cmlidXRlJzogTmd0VWludDhCdWZmZXJBdHRyaWJ1dGU7XG5cdCduZ3QtdW5pdDE2LWJ1ZmZlci1hdHRyaWJ1dGUnOiBOZ3RVaW50MTZCdWZmZXJBdHRyaWJ1dGU7XG5cdCduZ3QtdW5pdDMyLWJ1ZmZlci1hdHRyaWJ1dGUnOiBOZ3RVaW50MzJCdWZmZXJBdHRyaWJ1dGU7XG5cdCduZ3QtaW5zdGFuY2VkLWJ1ZmZlci1hdHRyaWJ1dGUnOiBOZ3RJbnN0YW5jZWRCdWZmZXJBdHRyaWJ1dGU7XG5cdCduZ3QtY29sb3InOiBOZ3RDb2xvcjtcblx0J25ndC1mb2cnOiBOZ3RGb2c7XG5cdCduZ3QtZm9nLWV4cDInOiBOZ3RGb2dFeHAyO1xuXHQnbmd0LXNoYXBlJzogTmd0U2hhcGU7XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcblx0aW50ZXJmYWNlIEhUTUxFbGVtZW50VGFnTmFtZU1hcCBleHRlbmRzIFRocmVlRWxlbWVudHMge31cbn1cbiJdfQ==
|
package/esm2022/lib/types.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUvc3JjL2xpYi90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIFdyaXRhYmxlU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgKiBhcyBUSFJFRSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgdHlwZSB7IE5ndFNpZ25hbFN0b3JlIH0gZnJvbSAnLi9zdG9yZXMvc2lnbmFsLnN0b3JlJztcbmltcG9ydCB7IE5ndE9iamVjdDNETm9kZSB9IGZyb20gJy4vdGhyZWUtdHlwZXMnO1xuXG5leHBvcnQgdHlwZSBOZ3RBbnlSZWNvcmQgPSBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuZXhwb3J0IHR5cGUgTmd0UHJvcGVydGllczxUPiA9IFBpY2s8VCwgeyBbSyBpbiBrZXlvZiBUXTogVFtLXSBleHRlbmRzIChfOiBhbnkpID0+IGFueSA/IG5ldmVyIDogSyB9W2tleW9mIFRdPjtcblxuZXhwb3J0IHR5cGUgTmd0RXF1Q29uZmlnID0ge1xuICAgIC8qKiBDb21wYXJlIGFycmF5cyBieSByZWZlcmVuY2UgZXF1YWxpdHkgYSA9PT0gYiAoZGVmYXVsdCksIG9yIGJ5IHNoYWxsb3cgZXF1YWxpdHkgKi9cbiAgICBhcnJheXM/OiAncmVmZXJlbmNlJyB8ICdzaGFsbG93JztcbiAgICAvKiogQ29tcGFyZSBvYmplY3RzIGJ5IHJlZmVyZW5jZSBlcXVhbGl0eSBhID09PSBiIChkZWZhdWx0KSwgb3IgYnkgc2hhbGxvdyBlcXVhbGl0eSAqL1xuICAgIG9iamVjdHM/OiAncmVmZXJlbmNlJyB8ICdzaGFsbG93JztcbiAgICAvKiogSWYgdHJ1ZSB0aGUga2V5cyBpbiBib3RoIGEgYW5kIGIgbXVzdCBtYXRjaCAxOjEgKGRlZmF1bHQpLCBpZiBmYWxzZSBhJ3Mga2V5cyBtdXN0IGludGVyc2VjdCBiJ3MgKi9cbiAgICBzdHJpY3Q/OiBib29sZWFuO1xufTtcblxuZXhwb3J0IHR5cGUgTmd0RHByID0gbnVtYmVyIHwgW21pbjogbnVtYmVyLCBtYXg6IG51bWJlcl07XG5leHBvcnQgdHlwZSBOZ3RTaXplID0ge1xuICAgIHdpZHRoOiBudW1iZXI7XG4gICAgaGVpZ2h0OiBudW1iZXI7XG4gICAgdG9wOiBudW1iZXI7XG4gICAgbGVmdDogbnVtYmVyO1xufTtcbmV4cG9ydCB0eXBlIE5ndFZpZXdwb3J0ID0gTmd0U2l6ZSAmIHtcbiAgICAvKiogVGhlIGluaXRpYWwgcGl4ZWwgcmF0aW8gKi9cbiAgICBpbml0aWFsRHByOiBudW1iZXI7XG4gICAgLyoqIEN1cnJlbnQgcGl4ZWwgcmF0aW8gKi9cbiAgICBkcHI6IG51bWJlcjtcbiAgICAvKiogc2l6ZS53aWR0aCAvIHZpZXdwb3J0LndpZHRoICovXG4gICAgZmFjdG9yOiBudW1iZXI7XG4gICAgLyoqIENhbWVyYSBkaXN0YW5jZSAqL1xuICAgIGRpc3RhbmNlOiBudW1iZXI7XG4gICAgLyoqIENhbWVyYSBhc3BlY3QgcmF0aW86IHdpZHRoIC8gaGVpZ2h0ICovXG4gICAgYXNwZWN0OiBudW1iZXI7XG59O1xuZXhwb3J0IHR5cGUgTmd0UGVyZm9ybWFuY2UgPSB7XG4gICAgLyoqIEN1cnJlbnQgcGVyZm9ybWFuY2Ugbm9ybWFsLCBiZXR3ZWVuIG1pbiBhbmQgbWF4ICovXG4gICAgY3VycmVudDogbnVtYmVyO1xuICAgIC8qKiBIb3cgbG93IHRoZSBwZXJmb3JtYW5jZSBjYW4gZ28sIGJldHdlZW4gMCBhbmQgbWF4ICovXG4gICAgbWluOiBudW1iZXI7XG4gICAgLyoqIEhvdyBoaWdoIHRoZSBwZXJmb3JtYW5jZSBjYW4gZ28sIGJldHdlZW4gbWluIGFuZCBtYXggKi9cbiAgICBtYXg6IG51bWJlcjtcbiAgICAvKiogVGltZSB1bnRpbCBjdXJyZW50IHJldHVybnMgdG8gbWF4IGluIG1zICovXG4gICAgZGVib3VuY2U6IG51bWJlcjtcbiAgICAvKiogU2V0cyBjdXJyZW50IHRvIG1pbiwgcHV0cyB0aGUgc3lzdGVtIGluIHJlZ3Jlc3Npb24gKi9cbiAgICByZWdyZXNzOiAoKSA9PiB2b2lkO1xufTtcbmV4cG9ydCB0eXBlIE5ndFJlbmRlcmVyID0geyByZW5kZXI6IChzY2VuZTogVEhSRUUuU2NlbmUsIGNhbWVyYTogVEhSRUUuQ2FtZXJhKSA9PiBhbnkgfTtcbmV4cG9ydCB0eXBlIE5ndENhbWVyYSA9IFRIUkVFLk9ydGhvZ3JhcGhpY0NhbWVyYSB8IFRIUkVFLlBlcnNwZWN0aXZlQ2FtZXJhO1xuZXhwb3J0IHR5cGUgTmd0Q2FtZXJhTWFudWFsID0gTmd0Q2FtZXJhICYgeyBtYW51YWw/OiBib29sZWFuIH07XG5leHBvcnQgdHlwZSBOZ3RJbnRlcnNlY3Rpb24gPSBUSFJFRS5JbnRlcnNlY3Rpb24gJiB7XG4gICAgLyoqIFRoZSBldmVudCBzb3VyY2UgKHRoZSBvYmplY3Qgd2hpY2ggcmVnaXN0ZXJlZCB0aGUgaGFuZGxlcikgKi9cbiAgICBldmVudE9iamVjdDogVEhSRUUuT2JqZWN0M0Q7XG59O1xuXG5leHBvcnQgdHlwZSBOZ3RJbnRlcnNlY3Rpb25FdmVudDxUU291cmNlRXZlbnQ+ID0gTmd0SW50ZXJzZWN0aW9uICYge1xuICAgIC8qKiBUaGUgZXZlbnQgc291cmNlICh0aGUgb2JqZWN0IHdoaWNoIHJlZ2lzdGVyZWQgdGhlIGhhbmRsZXIpICovXG4gICAgZXZlbnRPYmplY3Q6IFRIUkVFLk9iamVjdDNEO1xuICAgIC8qKiBBbiBhcnJheSBvZiBpbnRlcnNlY3Rpb25zICovXG4gICAgaW50ZXJzZWN0aW9uczogTmd0SW50ZXJzZWN0aW9uW107XG4gICAgLyoqIHZlYzMuc2V0KHBvaW50ZXIueCwgcG9pbnRlci55LCAwKS51bnByb2plY3QoY2FtZXJhKSAqL1xuICAgIHVucHJvamVjdGVkUG9pbnQ6IFRIUkVFLlZlY3RvcjM7XG4gICAgLyoqIE5vcm1hbGl6ZWQgZXZlbnQgY29vcmRpbmF0ZXMgKi9cbiAgICBwb2ludGVyOiBUSFJFRS5WZWN0b3IyO1xuICAgIC8qKiBEZWx0YSBiZXR3ZWVuIGZpcnN0IGNsaWNrIGFuZCB0aGlzIGV2ZW50ICovXG4gICAgZGVsdGE6IG51bWJlcjtcbiAgICAvKiogVGhlIHJheSB0aGF0IHBpZXJjZWQgaXQgKi9cbiAgICByYXk6IFRIUkVFLlJheTtcbiAgICAvKiogVGhlIGNhbWVyYSB0aGF0IHdhcyB1c2VkIGJ5IHRoZSByYXljYXN0ZXIgKi9cbiAgICBjYW1lcmE6IE5ndENhbWVyYU1hbnVhbDtcbiAgICAvKiogc3RvcFByb3BhZ2F0aW9uIHdpbGwgc3RvcCB1bmRlcmx5aW5nIGhhbmRsZXJzIGZyb20gZmlyaW5nICovXG4gICAgc3RvcFByb3BhZ2F0aW9uOiAoKSA9PiB2b2lkO1xuICAgIC8qKiBUaGUgb3JpZ2luYWwgaG9zdCBldmVudCAqL1xuICAgIG5hdGl2ZUV2ZW50OiBUU291cmNlRXZlbnQ7XG4gICAgLyoqIElmIHRoZSBldmVudCB3YXMgc3RvcHBlZCBieSBjYWxsaW5nIHN0b3BQcm9wYWdhdGlvbiAqL1xuICAgIHN0b3BwZWQ6IGJvb2xlYW47XG59O1xuXG5leHBvcnQgdHlwZSBOZ3RUaHJlZUV2ZW50PFRFdmVudD4gPSBOZ3RJbnRlcnNlY3Rpb25FdmVudDxURXZlbnQ+ICYgTmd0UHJvcGVydGllczxURXZlbnQ+O1xuZXhwb3J0IHR5cGUgTmd0RG9tRXZlbnQgPSBQb2ludGVyRXZlbnQgfCBNb3VzZUV2ZW50IHwgV2hlZWxFdmVudDtcblxuZXhwb3J0IHR5cGUgTmd0RXZlbnRIYW5kbGVycyA9IHtcbiAgICBjbGljaz86IChldmVudDogTmd0VGhyZWVFdmVudDxNb3VzZUV2ZW50PikgPT4gdm9pZDtcbiAgICBjb250ZXh0bWVudT86IChldmVudDogTmd0VGhyZWVFdmVudDxNb3VzZUV2ZW50PikgPT4gdm9pZDtcbiAgICBkYmxjbGljaz86IChldmVudDogTmd0VGhyZWVFdmVudDxNb3VzZUV2ZW50PikgPT4gdm9pZDtcbiAgICBwb2ludGVydXA/OiAoZXZlbnQ6IE5ndFRocmVlRXZlbnQ8UG9pbnRlckV2ZW50PikgPT4gdm9pZDtcbiAgICBwb2ludGVyZG93bj86IChldmVudDogTmd0VGhyZWVFdmVudDxQb2ludGVyRXZlbnQ+KSA9PiB2b2lkO1xuICAgIHBvaW50ZXJvdmVyPzogKGV2ZW50OiBOZ3RUaHJlZUV2ZW50PFBvaW50ZXJFdmVudD4pID0+IHZvaWQ7XG4gICAgcG9pbnRlcm91dD86IChldmVudDogTmd0VGhyZWVFdmVudDxQb2ludGVyRXZlbnQ+KSA9PiB2b2lkO1xuICAgIHBvaW50ZXJlbnRlcj86IChldmVudDogTmd0VGhyZWVFdmVudDxQb2ludGVyRXZlbnQ+KSA9PiB2b2lkO1xuICAgIHBvaW50ZXJsZWF2ZT86IChldmVudDogTmd0VGhyZWVFdmVudDxQb2ludGVyRXZlbnQ+KSA9PiB2b2lkO1xuICAgIHBvaW50ZXJtb3ZlPzogKGV2ZW50OiBOZ3RUaHJlZUV2ZW50PFBvaW50ZXJFdmVudD4pID0+IHZvaWQ7XG4gICAgcG9pbnRlcm1pc3NlZD86IChldmVudDogTW91c2VFdmVudCkgPT4gdm9pZDtcbiAgICBwb2ludGVyY2FuY2VsPzogKGV2ZW50OiBOZ3RUaHJlZUV2ZW50PFBvaW50ZXJFdmVudD4pID0+IHZvaWQ7XG4gICAgd2hlZWw/OiAoZXZlbnQ6IE5ndFRocmVlRXZlbnQ8V2hlZWxFdmVudD4pID0+IHZvaWQ7XG59O1xuXG5leHBvcnQgdHlwZSBOZ3RFdmVudHMgPSB7XG4gICAgW1RFdmVudCBpbiBrZXlvZiBOZ3RFdmVudEhhbmRsZXJzXS0/OiBFdmVudExpc3RlbmVyO1xufTtcblxuZXhwb3J0IHR5cGUgTmd0RmlsdGVyRnVuY3Rpb24gPSAoaXRlbXM6IFRIUkVFLkludGVyc2VjdGlvbltdLCBzdG9yZTogTmd0U2lnbmFsU3RvcmU8Tmd0U3RhdGU+KSA9PiBUSFJFRS5JbnRlcnNlY3Rpb25bXTtcbmV4cG9ydCB0eXBlIE5ndENvbXB1dGVGdW5jdGlvbiA9IChcbiAgICBldmVudDogTmd0RG9tRXZlbnQsXG4gICAgcm9vdDogTmd0U2lnbmFsU3RvcmU8Tmd0U3RhdGU+LFxuICAgIHByZXZpb3VzPzogTmd0U2lnbmFsU3RvcmU8Tmd0U3RhdGU+XG4pID0+IHZvaWQ7XG5cbmV4cG9ydCB0eXBlIE5ndEV2ZW50TWFuYWdlcjxUVGFyZ2V0PiA9IHtcbiAgICAvKiogRGV0ZXJtaW5lcyBpZiB0aGUgZXZlbnQgbGF5ZXIgaXMgYWN0aXZlICovXG4gICAgZW5hYmxlZDogYm9vbGVhbjtcbiAgICAvKiogRXZlbnQgbGF5ZXIgcHJpb3JpdHksIGhpZ2hlciBwcmlvcml0aXplZCBsYXllcnMgY29tZSBmaXJzdCBhbmQgbWF5IHN0b3AoLXByb3BhZ2F0ZSkgbG93ZXIgbGF5ZXIgICovXG4gICAgcHJpb3JpdHk6IG51bWJlcjtcbiAgICAvKiogVGhlIGNvbXB1dGUgZnVuY3Rpb24gbmVlZHMgdG8gc2V0IHVwIHRoZSByYXljYXN0ZXIgYW5kIGFuIHh5LSBwb2ludGVyICAqL1xuICAgIGNvbXB1dGU/OiBOZ3RDb21wdXRlRnVuY3Rpb247XG4gICAgLyoqIFRoZSBmaWx0ZXIgY2FuIHJlLW9yZGVyIG9yIHJlLXN0cnVjdHVyZSB0aGUgaW50ZXJzZWN0aW9ucyAgKi9cbiAgICBmaWx0ZXI/OiBOZ3RGaWx0ZXJGdW5jdGlvbjtcbiAgICAvKiogVGhlIHRhcmdldCBub2RlIHRoZSBldmVudCBsYXllciBpcyB0aWVkIHRvICovXG4gICAgY29ubmVjdGVkPzogVFRhcmdldDtcbiAgICAvKiogQWxsIHRoZSBwb2ludGVyIGV2ZW50IGhhbmRsZXJzIHRocm91Z2ggd2hpY2ggdGhlIGhvc3QgZm9yd2FyZHMgbmF0aXZlIGV2ZW50cyAqL1xuICAgIGhhbmRsZXJzPzogTmd0RXZlbnRzO1xuICAgIC8qKiBBbGxvd3MgcmUtY29ubmVjdGluZyB0byBhbm90aGVyIHRhcmdldCAqL1xuICAgIGNvbm5lY3Q/OiAodGFyZ2V0OiBUVGFyZ2V0KSA9PiB2b2lkO1xuICAgIC8qKiBSZW1vdmVzIGFsbCBleGlzdGluZyBldmVudHMgaGFuZGxlcnMgZnJvbSB0aGUgdGFyZ2V0ICovXG4gICAgZGlzY29ubmVjdD86ICgpID0+IHZvaWQ7XG4gICAgLyoqIFRyaWdnZXJzIGEgb25Qb2ludGVyTW92ZSB3aXRoIHRoZSBsYXN0IGtub3duIGV2ZW50LiBUaGlzIGNhbiBiZSB1c2VmdWwgdG8gZW5hYmxlIHJheWNhc3Rpbmcgd2l0aG91dFxuICAgICAqICBleHBsaWNpdCB1c2VyIGludGVyYWN0aW9uLCBmb3IgaW5zdGFuY2Ugd2hlbiB0aGUgY2FtZXJhIG1vdmVzIGEgaG92ZXJhYmxlIG9iamVjdCB1bmRlcm5lYXRoIHRoZSBjdXJzb3IuXG4gICAgICovXG4gICAgdXBkYXRlPzogKCkgPT4gdm9pZDtcbn07XG5cbmV4cG9ydCB0eXBlIE5ndFBvaW50ZXJDYXB0dXJlVGFyZ2V0ID0ge1xuICAgIGludGVyc2VjdGlvbjogTmd0SW50ZXJzZWN0aW9uO1xuICAgIHRhcmdldDogRWxlbWVudDtcbn07XG5cbmV4cG9ydCB0eXBlIE5ndFJlbmRlclN0YXRlID0gTmd0U3RhdGUgJiB7IGRlbHRhOiBudW1iZXI7IGZyYW1lPzogWFJGcmFtZSB9O1xuXG5leHBvcnQgdHlwZSBOZ3RCZWZvcmVSZW5kZXJFdmVudDxUT2JqZWN0IGV4dGVuZHMgTmd0SW5zdGFuY2VOb2RlID0gTmd0SW5zdGFuY2VOb2RlPiA9IHtcbiAgICBzdGF0ZTogTmd0UmVuZGVyU3RhdGU7XG4gICAgb2JqZWN0OiBUT2JqZWN0O1xufTtcblxuZXhwb3J0IHR5cGUgTmd0QmVmb3JlUmVuZGVyUmVjb3JkID0ge1xuICAgIGNhbGxiYWNrOiAoc3RhdGU6IE5ndFJlbmRlclN0YXRlKSA9PiB2b2lkO1xuICAgIHN0b3JlOiBOZ3RTaWduYWxTdG9yZTxOZ3RTdGF0ZT47XG4gICAgcHJpb3JpdHk/OiBudW1iZXI7XG59O1xuXG5leHBvcnQgdHlwZSBOZ3RJbnRlcm5hbFN0YXRlID0ge1xuICAgIGFjdGl2ZTogYm9vbGVhbjtcbiAgICBwcmlvcml0eTogbnVtYmVyO1xuICAgIGZyYW1lczogbnVtYmVyO1xuICAgIGxhc3RFdmVudDogRWxlbWVudFJlZjxOZ3REb21FdmVudCB8IG51bGw+O1xuICAgIGludGVyYWN0aW9uOiBUSFJFRS5PYmplY3QzRFtdO1xuICAgIGhvdmVyZWQ6IE1hcDxzdHJpbmcsIE5ndFRocmVlRXZlbnQ8Tmd0RG9tRXZlbnQ+PjtcbiAgICBzdWJzY3JpYmVyczogTmd0QmVmb3JlUmVuZGVyUmVjb3JkW107XG4gICAgY2FwdHVyZWRNYXA6IE1hcDxudW1iZXIsIE1hcDxUSFJFRS5PYmplY3QzRCwgTmd0UG9pbnRlckNhcHR1cmVUYXJnZXQ+PjtcbiAgICBpbml0aWFsQ2xpY2s6IFt4OiBudW1iZXIsIHk6IG51bWJlcl07XG4gICAgaW5pdGlhbEhpdHM6IFRIUkVFLk9iamVjdDNEW107XG4gICAgc3Vic2NyaWJlOiAoXG4gICAgICAgIGNhbGxiYWNrOiBOZ3RCZWZvcmVSZW5kZXJSZWNvcmRbJ2NhbGxiYWNrJ10sXG4gICAgICAgIHByaW9yaXR5PzogbnVtYmVyLFxuICAgICAgICBzdG9yZT86IE5ndFNpZ25hbFN0b3JlPE5ndFN0YXRlPlxuICAgICkgPT4gKCkgPT4gdm9pZDtcbn07XG5cbmV4cG9ydCB0eXBlIE5ndFN0YXRlID0ge1xuICAgIGdldDogTmd0U2lnbmFsU3RvcmU8Tmd0U3RhdGU+WydnZXQnXTtcbiAgICBzZXQ6IE5ndFNpZ25hbFN0b3JlPE5ndFN0YXRlPlsnc2V0J107XG4gICAgLyoqIHdoZW4gYWxsIGJ1aWxkaW5nIGJsb2NrcyBhcmUgaW5pdGlhbGl6ZWQgKi9cbiAgICByZWFkeTogYm9vbGVhbjtcbiAgICAvKiogVGhlIGluc3RhbmNlIG9mIHRoZSByZW5kZXJlciAqL1xuICAgIGdsOiBUSFJFRS5XZWJHTFJlbmRlcmVyO1xuICAgIC8qKiBEZWZhdWx0IGNhbWVyYSAqL1xuICAgIGNhbWVyYTogTmd0Q2FtZXJhTWFudWFsO1xuICAgIC8qKiBEZWZhdWx0IHNjZW5lICovXG4gICAgc2NlbmU6IFRIUkVFLlNjZW5lO1xuICAgIC8qKiBEZWZhdWx0IHJheWNhc3RlciAqL1xuICAgIHJheWNhc3RlcjogVEhSRUUuUmF5Y2FzdGVyO1xuICAgIC8qKiBEZWZhdWx0IGNsb2NrICovXG4gICAgY2xvY2s6IFRIUkVFLkNsb2NrO1xuICAgIC8qKiBFdmVudCBsYXllciBpbnRlcmZhY2UsIGNvbnRhaW5zIHRoZSBldmVudCBoYW5kbGVyIGFuZCB0aGUgbm9kZSB0aGV5J3JlIGNvbm5lY3RlZCB0byAqL1xuICAgIGV2ZW50czogTmd0RXZlbnRNYW5hZ2VyPGFueT47XG4gICAgLyoqIFhSIGludGVyZmFjZSAqL1xuICAgIHhyOiB7IGNvbm5lY3Q6ICgpID0+IHZvaWQ7IGRpc2Nvbm5lY3Q6ICgpID0+IHZvaWQgfTtcbiAgICAvKiogQ3VycmVudGx5IHVzZWQgY29udHJvbHMgKi9cbiAgICBjb250cm9sczogVEhSRUUuRXZlbnREaXNwYXRjaGVyIHwgbnVsbDtcbiAgICAvKiogTm9ybWFsaXplZCBldmVudCBjb29yZGluYXRlcyAqL1xuICAgIHBvaW50ZXI6IFRIUkVFLlZlY3RvcjI7XG4gICAgLyogV2hldGhlciB0byBlbmFibGUgcjEzOSdzIFRIUkVFLkNvbG9yTWFuYWdlbWVudC5sZWdhY3lNb2RlICovXG4gICAgbGVnYWN5OiBib29sZWFuO1xuICAgIC8qKiBTaG9ydGN1dCB0byBnbC5vdXRwdXRFbmNvZGluZyA9IExpbmVhckVuY29kaW5nICovXG4gICAgbGluZWFyOiBib29sZWFuO1xuICAgIC8qKiBTaG9ydGN1dCB0byBnbC50b25lTWFwcGluZyA9IE5vVG9uZW1hcHBpbmcgKi9cbiAgICBmbGF0OiBib29sZWFuO1xuICAgIC8qKiBSZW5kZXIgbG9vcCBmbGFncyAqL1xuICAgIGZyYW1lbG9vcDogJ2Fsd2F5cycgfCAnZGVtYW5kJyB8ICduZXZlcic7XG4gICAgLyoqIEFkYXB0aXZlIHBlcmZvcm1hbmNlIGludGVyZmFjZSAqL1xuICAgIHBlcmZvcm1hbmNlOiBOZ3RQZXJmb3JtYW5jZTtcbiAgICAvKiogUmVhY3RpdmUgcGl4ZWwtc2l6ZSBvZiB0aGUgY2FudmFzICovXG4gICAgc2l6ZTogTmd0U2l6ZTtcbiAgICAvKiogUmVhY3RpdmUgc2l6ZSBvZiB0aGUgdmlld3BvcnQgaW4gdGhyZWVqcyB1bml0cyAqL1xuICAgIHZpZXdwb3J0OiBOZ3RWaWV3cG9ydCAmIHtcbiAgICAgICAgZ2V0Q3VycmVudFZpZXdwb3J0OiAoXG4gICAgICAgICAgICBjYW1lcmE/OiBOZ3RDYW1lcmFNYW51YWwsXG4gICAgICAgICAgICB0YXJnZXQ/OiBUSFJFRS5WZWN0b3IzIHwgUGFyYW1ldGVyczxUSFJFRS5WZWN0b3IzWydzZXQnXT4sXG4gICAgICAgICAgICBzaXplPzogTmd0U2l6ZVxuICAgICAgICApID0+IE9taXQ8Tmd0Vmlld3BvcnQsICdkcHInIHwgJ2luaXRpYWxEcHInPjtcbiAgICB9O1xuICAgIC8qKiBGbGFncyB0aGUgY2FudmFzIGZvciByZW5kZXIsIGJ1dCBkb2Vzbid0IHJlbmRlciBpbiBpdHNlbGYgKi9cbiAgICBpbnZhbGlkYXRlOiAoZnJhbWVzPzogbnVtYmVyKSA9PiB2b2lkO1xuICAgIC8qKiBBZHZhbmNlIChyZW5kZXIpIG9uZSBzdGVwICovXG4gICAgYWR2YW5jZTogKHRpbWVzdGFtcDogbnVtYmVyLCBydW5HbG9iYWxFZmZlY3RzPzogYm9vbGVhbikgPT4gdm9pZDtcbiAgICAvKiogU2hvcnRjdXQgdG8gc2V0dGluZyB0aGUgZXZlbnQgbGF5ZXIgKi9cbiAgICBzZXRFdmVudHM6IChldmVudHM6IFBhcnRpYWw8Tmd0RXZlbnRNYW5hZ2VyPGFueT4+KSA9PiB2b2lkO1xuICAgIC8qKlxuICAgICAqIFNob3J0Y3V0IHRvIG1hbnVhbCBzaXppbmdcbiAgICAgKi9cbiAgICBzZXRTaXplOiAod2lkdGg6IG51bWJlciwgaGVpZ2h0OiBudW1iZXIsIHRvcD86IG51bWJlciwgbGVmdD86IG51bWJlcikgPT4gdm9pZDtcbiAgICAvKiogU2hvcnRjdXQgdG8gbWFudWFsIHNldHRpbmcgdGhlIHBpeGVsIHJhdGlvICovXG4gICAgc2V0RHByOiAoZHByOiBOZ3REcHIpID0+IHZvaWQ7XG4gICAgLyoqIFNob3J0Y3V0IHRvIGZyYW1lbG9vcCBmbGFncyAqL1xuICAgIHNldEZyYW1lbG9vcDogKGZyYW1lbG9vcD86ICdhbHdheXMnIHwgJ2RlbWFuZCcgfCAnbmV2ZXInKSA9PiB2b2lkO1xuICAgIC8qKiBXaGVuIHRoZSBjYW52YXMgd2FzIGNsaWNrZWQgYnV0IG5vdGhpbmcgd2FzIGhpdCAqL1xuICAgIG9uUG9pbnRlck1pc3NlZD86IChldmVudDogTW91c2VFdmVudCkgPT4gdm9pZDtcbiAgICAvKiogSWYgdGhpcyBzdGF0ZSBtb2RlbCBpcyBsYXllcmQgKHZpYSBjcmVhdGVQb3J0YWwpIHRoZW4gdGhpcyBjb250YWlucyB0aGUgcHJldmlvdXMgbGF5ZXIgKi9cbiAgICBwcmV2aW91c1N0b3JlPzogTmd0U2lnbmFsU3RvcmU8Tmd0U3RhdGU+O1xuICAgIC8qKiBJbnRlcm5hbHMgKi9cbiAgICBpbnRlcm5hbDogTmd0SW50ZXJuYWxTdGF0ZTtcbn07XG5cbmV4cG9ydCB0eXBlIE5ndEF0dGFjaEZ1bmN0aW9uPFRDaGlsZCA9IGFueSwgVFBhcmVudCA9IGFueT4gPSAoXG4gICAgcGFyZW50OiBUUGFyZW50LFxuICAgIGNoaWxkOiBUQ2hpbGQsXG4gICAgc3RvcmU6IE5ndFNpZ25hbFN0b3JlPE5ndFN0YXRlPlxuKSA9PiB2b2lkIHwgKCgpID0+IHZvaWQpO1xuXG5leHBvcnQgdHlwZSBOZ3RBZnRlckF0dGFjaDxcbiAgICBUUGFyZW50IGV4dGVuZHMgTmd0SW5zdGFuY2VOb2RlID0gTmd0SW5zdGFuY2VOb2RlLFxuICAgIFRDaGlsZCBleHRlbmRzIE5ndEluc3RhbmNlTm9kZSA9IE5ndEluc3RhbmNlTm9kZVxuPiA9IHsgcGFyZW50OiBUUGFyZW50OyBub2RlOiBUQ2hpbGQgfTtcblxuZXhwb3J0IHR5cGUgTmd0SW5zdGFuY2VMb2NhbFN0YXRlID0ge1xuICAgIC8qKiB0aGUgc3RhdGUgZ2V0dGVyIG9mIHRoZSBjYW52YXMgdGhhdCB0aGUgaW5zdGFuY2UgaXMgYmVpbmcgcmVuZGVyZWQgdG8gKi9cbiAgICBzdG9yZTogTmd0U2lnbmFsU3RvcmU8Tmd0U3RhdGU+O1xuICAgIC8vIG9iamVjdHMgYW5kIHBhcmVudCBhcmUgdXNlZCB3aGVuIGNoaWxkcmVuIGFyZSBhZGRlZCB3aXRoIGBhdHRhY2hgIGluc3RlYWQgb2YgYmVpbmcgYWRkZWQgdG8gdGhlIE9iamVjdDNEIHNjZW5lIGdyYXBoXG4gICAgbm9uT2JqZWN0czogV3JpdGFibGVTaWduYWw8Tmd0SW5zdGFuY2VOb2RlW10+O1xuICAgIC8vIG9iamVjdHMgdGhhdCBhcmUgT2JqZWN0M0RcbiAgICBvYmplY3RzOiBXcml0YWJsZVNpZ25hbDxOZ3RJbnN0YW5jZU5vZGVbXT47XG4gICAgLy8gc2hvcnRjdXQgdG8gYWRkL3JlbW92ZSBvYmplY3QgdG8gbGlzdFxuICAgIGFkZDogKGluc3RhbmNlOiBOZ3RJbnN0YW5jZU5vZGUsIHR5cGU6ICdvYmplY3RzJyB8ICdub25PYmplY3RzJykgPT4gdm9pZDtcbiAgICByZW1vdmU6IChpbnN0YW5jZTogTmd0SW5zdGFuY2VOb2RlLCB0eXBlOiAnb2JqZWN0cycgfCAnbm9uT2JqZWN0cycpID0+IHZvaWQ7XG4gICAgLy8gbmF0aXZlIHByb3BzIHNpZ25hbFxuICAgIG5hdGl2ZVByb3BzOiBOZ3RTaWduYWxTdG9yZTxOZ3RBbnlSZWNvcmQ+O1xuICAgIC8vIHBhcmVudCBiYXNlZCBvbiBhdHRhY2ggdGhyZWUgaW5zdGFuY2VcbiAgICBwYXJlbnQ6IFdyaXRhYmxlU2lnbmFsPE5ndEluc3RhbmNlTm9kZSB8IG51bGw+O1xuICAgIC8vIGlmIHRoaXMgVEhSRUUgaW5zdGFuY2UgaXMgYSBuZ3QtcHJpbWl0aXZlXG4gICAgcHJpbWl0aXZlPzogYm9vbGVhbjtcbiAgICAvLyBpZiB0aGlzIFRIUkVFIG9iamVjdCBoYXMgYW55IGV2ZW50cyBib3VuZCB0byBpdFxuICAgIGV2ZW50Q291bnQ6IG51bWJlcjtcbiAgICAvLyBsaXN0IG9mIGhhbmRsZXJzIHRvIGhhbmRsZSB0aGUgZXZlbnRzXG4gICAgaGFuZGxlcnM6IFBhcnRpYWw8Tmd0RXZlbnRIYW5kbGVycz47XG4gICAgLy8gcHJldmlvdXMgYXJnc1xuICAgIGFyZ3M/OiB1bmtub3duW107XG4gICAgLy8gYXR0YWNoIGluZm9ybWF0aW9uIHNvIHRoYXQgd2UgY2FuIGRldGFjaCBhcyB3ZWxsIGFzIHJlc2V0XG4gICAgYXR0YWNoPzogc3RyaW5nW10gfCBOZ3RBdHRhY2hGdW5jdGlvbjtcbiAgICAvLyBwcmV2aW91c2x5IGF0dGFjaCBpbmZvcm1hdGlvbiBzbyB3ZSBjYW4gcmVzZXQgYXMgd2VsbCBhcyBjbGVhbiB1cFxuICAgIHByZXZpb3VzQXR0YWNoPzogdW5rbm93biB8ICgoKSA9PiB2b2lkKTtcbiAgICAvLyBpcyByYXcgdmFsdWVcbiAgICBpc1Jhdz86IGJvb2xlYW47XG4gICAgLy8gcHJpb3JpdHkgZm9yIGJlZm9yZSByZW5kZXJcbiAgICBwcmlvcml0eT86IG51bWJlcjtcbiAgICAvLyBlbWl0dGVyIGFmdGVyIHByb3BzIHVwZGF0ZVxuICAgIGFmdGVyVXBkYXRlPzogRXZlbnRFbWl0dGVyPE5ndEluc3RhbmNlTm9kZT47XG4gICAgLy8gZW1pdHRlciBhZnRlciBhdHRhY2hpbmcgdG8gcGFyZW50XG4gICAgYWZ0ZXJBdHRhY2g/OiBFdmVudEVtaXR0ZXI8Tmd0QWZ0ZXJBdHRhY2g+O1xufTtcblxuZXhwb3J0IHR5cGUgTmd0SW5zdGFuY2VOb2RlPFROb2RlID0gYW55PiA9IHtcbiAgICBfX25ndF9fOiBOZ3RJbnN0YW5jZUxvY2FsU3RhdGU7XG59ICYgTmd0QW55UmVjb3JkICZcbiAgICBUTm9kZTtcblxuZXhwb3J0IHR5cGUgTmd0R0xSZW5kZXJlciA9IHtcbiAgICByZW5kZXI6IChzY2VuZTogVEhSRUUuU2NlbmUsIGNhbWVyYTogVEhSRUUuQ2FtZXJhKSA9PiB2b2lkO1xufTtcblxuZXhwb3J0IHR5cGUgTmd0R0xPcHRpb25zID1cbiAgICB8IE5ndEdMUmVuZGVyZXJcbiAgICB8ICgoY2FudmFzOiBIVE1MQ2FudmFzRWxlbWVudCkgPT4gTmd0R0xSZW5kZXJlcilcbiAgICB8IFBhcnRpYWw8Tmd0UHJvcGVydGllczxUSFJFRS5XZWJHTFJlbmRlcmVyPiB8IFRIUkVFLldlYkdMUmVuZGVyZXJQYXJhbWV0ZXJzPlxuICAgIHwgdW5kZWZpbmVkO1xuXG5leHBvcnQgdHlwZSBOZ3RPYmplY3RNYXAgPSB7XG4gICAgbm9kZXM6IHsgW25hbWU6IHN0cmluZ106IFRIUkVFLk9iamVjdDNEIH07XG4gICAgbWF0ZXJpYWxzOiB7IFtuYW1lOiBzdHJpbmddOiBUSFJFRS5NYXRlcmlhbCB9O1xuICAgIFtrZXk6IHN0cmluZ106IGFueTtcbn07XG5cbmV4cG9ydCB0eXBlIE5ndENhbnZhc0lucHV0cyA9IHtcbiAgICAvKiogQSB0aHJlZWpzIHJlbmRlcmVyIGluc3RhbmNlIG9yIHByb3BzIHRoYXQgZ28gaW50byB0aGUgZGVmYXVsdCByZW5kZXJlciAqL1xuICAgIGdsPzogTmd0R0xPcHRpb25zO1xuICAgIHNpemU/OiBOZ3RTaXplO1xuXG4gICAgLyoqXG4gICAgICogRW5hYmxlcyBzaGFkb3dzIChieSBkZWZhdWx0IFBDRnNvZnQpLiBDYW4gYWNjZXB0IGBnbC5zaGFkb3dNYXBgIG9wdGlvbnMgZm9yIGZpbmUtdHVuaW5nLFxuICAgICAqIGJ1dCBhbHNvIHN0cmluZ3M6ICdiYXNpYycgfCAncGVyY2VudGFnZScgfCAnc29mdCcgfCAndmFyaWFuY2UnLlxuICAgICAqIEBzZWUgaHR0cHM6Ly90aHJlZWpzLm9yZy9kb2NzLyNhcGkvZW4vcmVuZGVyZXJzL1dlYkdMUmVuZGVyZXIuc2hhZG93TWFwXG4gICAgICovXG4gICAgc2hhZG93cz86IGJvb2xlYW4gfCAnYmFzaWMnIHwgJ3BlcmNlbnRhZ2UnIHwgJ3NvZnQnIHwgJ3ZhcmlhbmNlJyB8IFBhcnRpYWw8VEhSRUUuV2ViR0xTaGFkb3dNYXA+O1xuICAgIC8qKlxuICAgICAqIERpc2FibGVzIHRocmVlIHIxMzkgY29sb3IgbWFuYWdlbWVudC5cbiAgICAgKiBAc2VlIGh0dHBzOi8vdGhyZWVqcy5vcmcvZG9jcy8jbWFudWFsL2VuL2ludHJvZHVjdGlvbi9Db2xvci1tYW5hZ2VtZW50XG4gICAgICovXG4gICAgbGVnYWN5PzogYm9vbGVhbjtcbiAgICAvKiogU3dpdGNoIG9mZiBhdXRvbWF0aWMgc1JHQiBlbmNvZGluZyBhbmQgZ2FtbWEgY29ycmVjdGlvbiAqL1xuICAgIGxpbmVhcj86IGJvb2xlYW47XG4gICAgLyoqIFVzZSBgVEhSRUUuTm9Ub25lTWFwcGluZ2AgaW5zdGVhZCBvZiBgVEhSRUUuQUNFU0ZpbG1pY1RvbmVNYXBwaW5nYCAqL1xuICAgIGZsYXQ/OiBib29sZWFuO1xuICAgIC8qKiBDcmVhdGVzIGFuIG9ydGhvZ3JhcGhpYyBjYW1lcmEgKi9cbiAgICBvcnRob2dyYXBoaWM/OiBib29sZWFuO1xuICAgIC8qKlxuICAgICAqIFIzRidzIHJlbmRlciBtb2RlLiBTZXQgdG8gYGRlbWFuZGAgdG8gb25seSByZW5kZXIgb24gc3RhdGUgY2hhbmdlIG9yIGBuZXZlcmAgdG8gdGFrZSBjb250cm9sLlxuICAgICAqIEBzZWUgaHR0cHM6Ly9kb2NzLnBtbmQucnMvcmVhY3QtdGhyZWUtZmliZXIvYWR2YW5jZWQvc2NhbGluZy1wZXJmb3JtYW5jZSNvbi1kZW1hbmQtcmVuZGVyaW5nXG4gICAgICovXG4gICAgZnJhbWVsb29wPzogJ2Fsd2F5cycgfCAnZGVtYW5kJyB8ICduZXZlcic7XG4gICAgLyoqXG4gICAgICogUjNGIHBlcmZvcm1hbmNlIG9wdGlvbnMgZm9yIGFkYXB0aXZlIHBlcmZvcm1hbmNlLlxuICAgICAqIEBzZWUgaHR0cHM6Ly9kb2NzLnBtbmQucnMvcmVhY3QtdGhyZWUtZmliZXIvYWR2YW5jZWQvc2NhbGluZy1wZXJmb3JtYW5jZSNtb3ZlbWVudC1yZWdyZXNzaW9uXG4gICAgICovXG4gICAgcGVyZm9ybWFuY2U/OiBQYXJ0aWFsPE9taXQ8Tmd0UGVyZm9ybWFuY2UsICdyZWdyZXNzJz4+O1xuICAgIC8qKiBUYXJnZXQgcGl4ZWwgcmF0aW8uIENhbiBjbGFtcCBiZXR3ZWVuIGEgcmFuZ2U6IGBbbWluLCBtYXhdYCAqL1xuICAgIGRwcj86IE5ndERwcjtcbiAgICAvKiogUHJvcHMgdGhhdCBnbyBpbnRvIHRoZSBkZWZhdWx0IHJheWNhc3RlciAqL1xuICAgIHJheWNhc3Rlcj86IFBhcnRpYWw8VEhSRUUuUmF5Y2FzdGVyPjtcbiAgICAvKiogQSBgVEhSRUUuU2NlbmVgIGluc3RhbmNlIG9yIHByb3BzIHRoYXQgZ28gaW50byB0aGUgZGVmYXVsdCBzY2VuZSAqL1xuICAgIHNjZW5lPzogVEhSRUUuU2NlbmUgfCBQYXJ0aWFsPFRIUkVFLlNjZW5lPjtcbiAgICAvKiogQSBgQ2FtZXJhYCBpbnN0YW5jZSBvciBwcm9wcyB0aGF0IGdvIGludG8gdGhlIGRlZmF1bHQgY2FtZXJhICovXG4gICAgY2FtZXJhPzogKFxuICAgICAgICB8IE5ndENhbWVyYVxuICAgICAgICB8IFBhcnRpYWw8XG4gICAgICAgICAgICAgIE5ndE9iamVjdDNETm9kZTxUSFJFRS5DYW1lcmEsIHR5cGVvZiBUSFJFRS5DYW1lcmE+ICZcbiAgICAgICAgICAgICAgICAgIE5ndE9iamVjdDNETm9kZTxUSFJFRS5QZXJzcGVjdGl2ZUNhbWVyYSwgdHlwZW9mIFRIUkVFLlBlcnNwZWN0aXZlQ2FtZXJhPiAmXG4gICAgICAgICAgICAgICAgICBOZ3RPYmplY3QzRE5vZGU8VEhSRUUuT3J0aG9ncmFwaGljQ2FtZXJhLCB0eXBlb2YgVEhSRUUuT3J0aG9ncmFwaGljQ2FtZXJhPlxuICAgICAgICAgID5cbiAgICApICYge1xuICAgICAgICAvKiogRmxhZ3MgdGhlIGNhbWVyYSBhcyBtYW51YWwsIHB1dHRpbmcgcHJvamVjdGlvbiBpbnRvIHlvdXIgb3duIGhhbmRzICovXG4gICAgICAgIG1hbnVhbD86IGJvb2xlYW47XG4gICAgfTtcbiAgICAvKiogQW4gUjNGIGV2ZW50IG1hbmFnZXIgdG8gbWFuYWdlIGVsZW1lbnRzJyBwb2ludGVyIGV2ZW50cyAqL1xuICAgIGV2ZW50cz86IChzdG9yZTogTmd0U2lnbmFsU3RvcmU8Tmd0U3RhdGU+KSA9PiBOZ3RFdmVudE1hbmFnZXI8SFRNTEVsZW1lbnQ+O1xuICAgIC8qKiBUaGUgdGFyZ2V0IHdoZXJlIGV2ZW50cyBhcmUgYmVpbmcgc3Vic2NyaWJlZCB0bywgZGVmYXVsdDogdGhlIGRpdiB0aGF0IHdyYXBzIGNhbnZhcyAqL1xuICAgIGV2ZW50U291cmNlPzogSFRNTEVsZW1lbnQgfCBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcbiAgICAvKiogVGhlIGV2ZW50IHByZWZpeCB0aGF0IGlzIGNhc3QgaW50byBjYW52YXMgcG9pbnRlciB4L3kgZXZlbnRzLCBkZWZhdWx0OiBcIm9mZnNldFwiICovXG4gICAgZXZlbnRQcmVmaXg/OiAnb2Zmc2V0JyB8ICdjbGllbnQnIHwgJ3BhZ2UnIHwgJ2xheWVyJyB8ICdzY3JlZW4nO1xuICAgIC8qKiBEZWZhdWx0IGNvb3JkaW5hdGUgZm9yIHRoZSBjYW1lcmEgdG8gbG9vayBhdCAqL1xuICAgIGxvb2tBdD86IFRIUkVFLlZlY3RvcjMgfCBQYXJhbWV0ZXJzPFRIUkVFLlZlY3RvcjNbJ3NldCddPjtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmd0TG9hZGVyPFQ+IGV4dGVuZHMgVEhSRUUuTG9hZGVyIHtcbiAgICBsb2FkKFxuICAgICAgICB1cmw6IHN0cmluZyxcbiAgICAgICAgb25Mb2FkPzogKHJlc3VsdDogVCkgPT4gdm9pZCxcbiAgICAgICAgb25Qcm9ncmVzcz86IChldmVudDogUHJvZ3Jlc3NFdmVudCkgPT4gdm9pZCxcbiAgICAgICAgb25FcnJvcj86IChldmVudDogRXJyb3JFdmVudCkgPT4gdm9pZFxuICAgICk6IHVua25vd247XG4gICAgbG9hZEFzeW5jKHVybDogc3RyaW5nLCBvblByb2dyZXNzPzogKGV2ZW50OiBQcm9ncmVzc0V2ZW50KSA9PiB2b2lkKTogUHJvbWlzZTxUPjtcbn1cblxuZXhwb3J0IHR5cGUgTmd0TG9hZGVyUHJvdG88VD4gPSBuZXcgKC4uLmFyZ3M6IGFueSkgPT4gTmd0TG9hZGVyPFQgZXh0ZW5kcyB1bmtub3duID8gYW55IDogVD47XG5leHBvcnQgdHlwZSBOZ3RMb2FkZXJSZXR1cm5UeXBlPFQsIEwgZXh0ZW5kcyBOZ3RMb2FkZXJQcm90bzxUPj4gPSBUIGV4dGVuZHMgdW5rbm93blxuICAgID8gQXdhaXRlZDxSZXR1cm5UeXBlPEluc3RhbmNlVHlwZTxMPlsnbG9hZEFzeW5jJ10+PlxuICAgIDogVDtcbmV4cG9ydCB0eXBlIE5ndExvYWRlckV4dGVuc2lvbnM8VCBleHRlbmRzIHsgcHJvdG90eXBlOiBOZ3RMb2FkZXJQcm90bzxhbnk+IH0+ID0gKGxvYWRlcjogVFsncHJvdG90eXBlJ10pID0+IHZvaWQ7XG5leHBvcnQgdHlwZSBOZ3RDb25kaXRpb25hbFR5cGU8Q2hpbGQsIFBhcmVudCwgVHJ1dGh5LCBGYWxzeT4gPSBDaGlsZCBleHRlbmRzIFBhcmVudCA/IFRydXRoeSA6IEZhbHN5O1xuZXhwb3J0IHR5cGUgTmd0QnJhbmNoaW5nUmV0dXJuPFQsIFBhcmVudCwgQ29lcmNlZD4gPSBOZ3RDb25kaXRpb25hbFR5cGU8VCwgUGFyZW50LCBDb2VyY2VkLCBUPjtcbiJdfQ==
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHR5cGUgTmd0UHJvcGVydGllczxUPiA9IFBpY2s8VCwgeyBbSyBpbiBrZXlvZiBUXTogVFtLXSBleHRlbmRzIChfOiBhbnkpID0+IGFueSA/IG5ldmVyIDogSyB9W2tleW9mIFRdPjtcbmV4cG9ydCB0eXBlIE5ndEFueVJlY29yZCA9IFJlY29yZDxzdHJpbmcsIGFueT47XG5cbmV4cG9ydCB0eXBlIE5ndEVxdUNvbmZpZyA9IHtcblx0LyoqIENvbXBhcmUgYXJyYXlzIGJ5IHJlZmVyZW5jZSBlcXVhbGl0eSBhID09PSBiIChkZWZhdWx0KSwgb3IgYnkgc2hhbGxvdyBlcXVhbGl0eSAqL1xuXHRhcnJheXM/OiAncmVmZXJlbmNlJyB8ICdzaGFsbG93Jztcblx0LyoqIENvbXBhcmUgb2JqZWN0cyBieSByZWZlcmVuY2UgZXF1YWxpdHkgYSA9PT0gYiAoZGVmYXVsdCksIG9yIGJ5IHNoYWxsb3cgZXF1YWxpdHkgKi9cblx0b2JqZWN0cz86ICdyZWZlcmVuY2UnIHwgJ3NoYWxsb3cnO1xuXHQvKiogSWYgdHJ1ZSB0aGUga2V5cyBpbiBib3RoIGEgYW5kIGIgbXVzdCBtYXRjaCAxOjEgKGRlZmF1bHQpLCBpZiBmYWxzZSBhJ3Mga2V5cyBtdXN0IGludGVyc2VjdCBiJ3MgKi9cblx0c3RyaWN0PzogYm9vbGVhbjtcbn07XG4iXX0=
|
|
@@ -1,32 +1,43 @@
|
|
|
1
1
|
import { untracked } from '@angular/core';
|
|
2
2
|
import * as THREE from 'three';
|
|
3
|
-
import { getLocalState, invalidateInstance } from '
|
|
3
|
+
import { getLocalState, invalidateInstance } from '../instance';
|
|
4
4
|
import { is } from './is';
|
|
5
5
|
import { checkUpdate } from './update';
|
|
6
|
-
function
|
|
6
|
+
// This function prepares a set of changes to be applied to the instance
|
|
7
|
+
export function diffProps(instance, props) {
|
|
7
8
|
const propsEntries = Object.entries(props);
|
|
8
9
|
const changes = [];
|
|
9
10
|
for (const [propKey, propValue] of propsEntries) {
|
|
10
|
-
|
|
11
|
+
let key = propKey;
|
|
12
|
+
if (is.colorSpaceExist(instance)) {
|
|
13
|
+
if (propKey === 'encoding') {
|
|
14
|
+
key = 'colorSpace';
|
|
15
|
+
}
|
|
16
|
+
else if (propKey === 'outputEncoding') {
|
|
17
|
+
key = 'outputColorSpace';
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
if (is.equ(propValue, instance[key]))
|
|
11
21
|
continue;
|
|
12
22
|
changes.push([propKey, propValue]);
|
|
13
23
|
}
|
|
14
24
|
return changes;
|
|
15
25
|
}
|
|
26
|
+
// This function applies a set of changes to the instance
|
|
16
27
|
export function applyProps(instance, props) {
|
|
17
28
|
// if props is empty
|
|
18
29
|
if (!Object.keys(props).length)
|
|
19
30
|
return instance;
|
|
31
|
+
// Filter equals, events and reserved props
|
|
20
32
|
// filter equals, events , and reserved props
|
|
21
33
|
const localState = getLocalState(instance);
|
|
22
34
|
const rootState = localState.store?.get();
|
|
23
35
|
const changes = diffProps(instance, props);
|
|
24
36
|
for (let i = 0; i < changes.length; i++) {
|
|
25
|
-
let key = changes[i]
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
if (is.colorSpaceExist(currentInstance)) {
|
|
37
|
+
let [key, value] = changes[i];
|
|
38
|
+
// Alias (output)encoding => (output)colorSpace (since r152)
|
|
39
|
+
// https://github.com/pmndrs/react-three-fiber/pull/2829
|
|
40
|
+
if (is.colorSpaceExist(instance)) {
|
|
30
41
|
const sRGBEncoding = 3001;
|
|
31
42
|
const SRGBColorSpace = 'srgb';
|
|
32
43
|
const LinearSRGBColorSpace = 'srgb-linear';
|
|
@@ -39,6 +50,8 @@ export function applyProps(instance, props) {
|
|
|
39
50
|
value = value === sRGBEncoding ? SRGBColorSpace : LinearSRGBColorSpace;
|
|
40
51
|
}
|
|
41
52
|
}
|
|
53
|
+
const currentInstance = instance;
|
|
54
|
+
const targetProp = currentInstance[key];
|
|
42
55
|
// special treatmen for objects with support for set/copy, and layers
|
|
43
56
|
if (targetProp && targetProp['set'] && (targetProp['copy'] || targetProp instanceof THREE.Layers)) {
|
|
44
57
|
const isColor = targetProp instanceof THREE.Color;
|
|
@@ -74,7 +87,6 @@ export function applyProps(instance, props) {
|
|
|
74
87
|
if (!THREE.ColorManagement && !rootState?.linear && isColor)
|
|
75
88
|
targetProp.convertSRGBToLinear();
|
|
76
89
|
}
|
|
77
|
-
localState?.nativeProps?.set({ [key]: targetProp });
|
|
78
90
|
}
|
|
79
91
|
// else just overwrite the value
|
|
80
92
|
else {
|
|
@@ -91,8 +103,8 @@ export function applyProps(instance, props) {
|
|
|
91
103
|
texture.encoding = rootState.gl.outputEncoding;
|
|
92
104
|
}
|
|
93
105
|
}
|
|
94
|
-
localState?.nativeProps?.set({ [key]: value });
|
|
95
106
|
}
|
|
107
|
+
checkUpdate(currentInstance[key]);
|
|
96
108
|
checkUpdate(targetProp);
|
|
97
109
|
invalidateInstance(instance);
|
|
98
110
|
}
|
|
@@ -112,4 +124,4 @@ export function applyProps(instance, props) {
|
|
|
112
124
|
}
|
|
113
125
|
return instance;
|
|
114
126
|
}
|
|
115
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbHktcHJvcHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUvc3JjL2xpYi91dGlscy9hcHBseS1wcm9wcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFDLE9BQU8sS0FBSyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBRS9CLE9BQU8sRUFBRSxhQUFhLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDL0QsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxQixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRXZDLFNBQVMsU0FBUyxDQUFDLFFBQXNCLEVBQUUsS0FBbUI7SUFDMUQsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzQyxNQUFNLE9BQU8sR0FBb0MsRUFBRSxDQUFDO0lBRXBELEtBQUssTUFBTSxDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsSUFBSSxZQUFZLEVBQUU7UUFDN0MsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7WUFBRSxTQUFTO1FBQ25ELE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQztLQUN0QztJQUVELE9BQU8sT0FBTyxDQUFDO0FBQ25CLENBQUM7QUFFRCxNQUFNLFVBQVUsVUFBVSxDQUFDLFFBQXlCLEVBQUUsS0FBbUI7SUFDckUsb0JBQW9CO0lBQ3BCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU07UUFBRSxPQUFPLFFBQVEsQ0FBQztJQUVoRCw2Q0FBNkM7SUFDN0MsTUFBTSxVQUFVLEdBQUcsYUFBYSxDQUFDLFFB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cnQgKiBhcyBUSFJFRSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgdHlwZSB7IE5ndEFueVJlY29yZCwgTmd0SW5zdGFuY2VOb2RlIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgZ2V0TG9jYWxTdGF0ZSwgaW52YWxpZGF0ZUluc3RhbmNlIH0gZnJvbSAnLi9pbnN0YW5jZSc7XG5pbXBvcnQgeyBpcyB9IGZyb20gJy4vaXMnO1xuaW1wb3J0IHsgY2hlY2tVcGRhdGUgfSBmcm9tICcuL3VwZGF0ZSc7XG5cbmZ1bmN0aW9uIGRpZmZQcm9wcyhpbnN0YW5jZTogTmd0QW55UmVjb3JkLCBwcm9wczogTmd0QW55UmVjb3JkKSB7XG4gICAgY29uc3QgcHJvcHNFbnRyaWVzID0gT2JqZWN0LmVudHJpZXMocHJvcHMpO1xuICAgIGNvbnN0IGNoYW5nZXM6IFtrZXk6IHN0cmluZywgdmFsdWU6IHVua25vd25dW10gPSBbXTtcblxuICAgIGZvciAoY29uc3QgW3Byb3BLZXksIHByb3BWYWx1ZV0gb2YgcHJvcHNFbnRyaWVzKSB7XG4gICAgICAgIGlmIChpcy5lcXUocHJvcFZhbHVlLCBpbnN0YW5jZVtwcm9wS2V5XSkpIGNvbnRpbnVlO1xuICAgICAgICBjaGFuZ2VzLnB1c2goW3Byb3BLZXksIHByb3BWYWx1ZV0pO1xuICAgIH1cblxuICAgIHJldHVybiBjaGFuZ2VzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXBwbHlQcm9wcyhpbnN0YW5jZTogTmd0SW5zdGFuY2VOb2RlLCBwcm9wczogTmd0QW55UmVjb3JkKTogTmd0SW5zdGFuY2VOb2RlIHtcbiAgICAvLyBpZiBwcm9wcyBpcyBlbXB0eVxuICAgIGlmICghT2JqZWN0LmtleXMocHJvcHMpLmxlbmd0aCkgcmV0dXJuIGluc3RhbmNlO1xuXG4gICAgLy8gZmlsdGVyIGVxdWFscywgZXZlbnRzICwgYW5kIHJlc2VydmVkIHByb3BzXG4gICAgY29uc3QgbG9jYWxTdGF0ZSA9IGdldExvY2FsU3RhdGUoaW5zdGFuY2UpO1xuICAgIGNvbnN0IHJvb3RTdGF0ZSA9IGxvY2FsU3RhdGUuc3RvcmU/LmdldCgpO1xuICAgIGNvbnN0IGNoYW5nZXMgPSBkaWZmUHJvcHMoaW5zdGFuY2UsIHByb3BzKTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY2hhbmdlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBsZXQga2V5ID0gY2hhbmdlc1tpXVswXTtcbiAgICAgICAgY29uc3QgY3VycmVudEluc3RhbmNlID0gaW5zdGFuY2U7XG4gICAgICAgIGNvbnN0IHRhcmdldFByb3AgPSBjdXJyZW50SW5zdGFuY2Vba2V5XSBhcyBOZ3RBbnlSZWNvcmQ7XG4gICAgICAgIGxldCB2YWx1ZSA9IGNoYW5nZXNbaV1bMV07XG5cbiAgICAgICAgaWYgKGlzLmNvbG9yU3BhY2VFeGlzdChjdXJyZW50SW5zdGFuY2UpKSB7XG4gICAgICAgICAgICBjb25zdCBzUkdCRW5jb2RpbmcgPSAzMDAxO1xuICAgICAgICAgICAgY29uc3QgU1JHQkNvbG9yU3BhY2UgPSAnc3JnYic7XG4gICAgICAgICAgICBjb25zdCBMaW5lYXJTUkdCQ29sb3JTcGFjZSA9ICdzcmdiLWxpbmVhcic7XG5cbiAgICAgICAgICAgIGlmIChrZXkgPT09ICdlbmNvZGluZycpIHtcbiAgICAgICAgICAgICAgICBrZXkgPSAnY29sb3JTcGFjZSc7XG4gICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZSA9PT0gc1JHQkVuY29kaW5nID8gU1JHQkNvbG9yU3BhY2UgOiBMaW5lYXJTUkdCQ29sb3JTcGFjZTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoa2V5ID09PSAnb3V0cHV0RW5jb2RpbmcnKSB7XG4gICAgICAgICAgICAgICAga2V5ID0gJ291dHB1dENvbG9yU3BhY2UnO1xuICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUgPT09IHNSR0JFbmNvZGluZyA/IFNSR0JDb2xvclNwYWNlIDogTGluZWFyU1JHQkNvbG9yU3BhY2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBzcGVjaWFsIHRyZWF0bWVuIGZvciBvYmplY3RzIHdpdGggc3VwcG9ydCBmb3Igc2V0L2NvcHksIGFuZCBsYXllcnNcbiAgICAgICAgaWYgKHRhcmdldFByb3AgJiYgdGFyZ2V0UHJvcFsnc2V0J10gJiYgKHRhcmdldFByb3BbJ2NvcHknXSB8fCB0YXJnZXRQcm9wIGluc3RhbmNlb2YgVEhSRUUuTGF5ZXJzKSkge1xuICAgICAgICAgICAgY29uc3QgaXNDb2xvciA9IHRhcmdldFByb3AgaW5zdGFuY2VvZiBUSFJFRS5Db2xvcjtcbiAgICAgICAgICAgIC8vIGlmIHZhbHVlIGlzIGFuIGFycmF5XG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICBpZiAoKHRhcmdldFByb3AgYXMgTmd0QW55UmVjb3JkKVsnZnJvbUFycmF5J10pICh0YXJnZXRQcm9wIGFzIE5ndEFueVJlY29yZClbJ2Zyb21BcnJheSddKHZhbHVlKTtcbiAgICAgICAgICAgICAgICBlbHNlIHRhcmdldFByb3BbJ3NldCddKC4uLnZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIHRlc3QgYWdhaW4gdGFyZ2V0LmNvcHlcbiAgICAgICAgICAgIGVsc2UgaWYgKFxuICAgICAgICAgICAgICAgICh0YXJnZXRQcm9wIGFzIE5ndEFueVJlY29yZClbJ2NvcHknXSAmJlxuICAgICAgICAgICAgICAgIHZhbHVlICYmXG4gICAgICAgICAgICAgICAgdmFsdWUuY29uc3RydWN0b3IgJiZcbiAgICAgICAgICAgICAgICB0YXJnZXRQcm9wLmNvbnN0cnVjdG9yLm5hbWUgPT09IHZhbHVlLmNvbnN0cnVjdG9yLm5hbWVcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICh0YXJnZXRQcm9wIGFzIE5ndEFueVJlY29yZClbJ2NvcHknXSh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgaWYgKCFUSFJFRS5Db2xvck1hbmFnZW1lbnQgJiYgIXJvb3RTdGF0ZS5saW5lYXIgJiYgaXNDb2xvcikgdGFyZ2V0UHJvcFsnY29udmVydFNSR0JUb0xpbmVhciddKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBpZiBub3RoaW5nIGVsc2UgZml0cywganVzdCBzZXQgdGhlIHNpbmdsZSB2YWx1ZSwgaWdub3JlIHVuZGVmaW5lZFxuICAgICAgICAgICAgZWxzZSBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGlzQ29sb3IgPSB0YXJnZXRQcm9wIGluc3RhbmNlb2YgVEhSRUUuQ29sb3I7XG4gICAgICAgICAgICAgICAgLy8gYWxsb3cgc2V0dGluZyBhcnJheSBzY2FsYXJzXG4gICAgICAgICAgICAgICAgaWYgKCFpc0NvbG9yICYmICh0YXJnZXRQcm9wIGFzIE5ndEFueVJlY29yZClbJ3NldFNjYWxhciddKVxuICAgICAgICAgICAgICAgICAgICAodGFyZ2V0UHJvcCBhcyBOZ3RBbnlSZWNvcmQpWydzZXRTY2FsYXInXSh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgLy8gbGF5ZXJzIGhhdmUgbm8gY29weSBmdW5jdGlvbiwgY29weSB0aGUgbWFza1xuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRhcmdldFByb3AgaW5zdGFuY2VvZiBUSFJFRS5MYXllcnMgJiYgdmFsdWUgaW5zdGFuY2VvZiBUSFJFRS5MYXllcnMpXG4gICAgICAgICAgICAgICAgICAgIHRhcmdldFByb3AubWFzayA9IHZhbHVlLm1hc2s7XG4gICAgICAgICAgICAgICAgLy8gb3RoZXJ3aXNlIGp1c3Qgc2V0IC4uLlxuICAgICAgICAgICAgICAgIGVsc2UgdGFyZ2V0UHJvcFsnc2V0J10odmFsdWUpO1xuXG4gICAgICAgICAgICAgICAgLy8gYXV0by1jb252ZXJ0IHNyZ2JcbiAgICAgICAgICAgICAgICBpZiAoIVRIUkVFLkNvbG9yTWFuYWdlbWVudCAmJiAhcm9vdFN0YXRlPy5saW5lYXIgJiYgaXNDb2xvcikgdGFyZ2V0UHJvcC5jb252ZXJ0U1JHQlRvTGluZWFyKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxvY2FsU3RhdGU/Lm5hdGl2ZVByb3BzPy5zZXQoeyBba2V5XTogdGFyZ2V0UHJvcCB9KTtcbiAgICAgICAgfVxuICAgICAgICAvLyBlbHNlIGp1c3Qgb3ZlcndyaXRlIHRoZSB2YWx1ZVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGN1cnJlbnRJbnN0YW5jZVtrZXldID0gdmFsdWU7XG4gICAgICAgICAgICAvLyBhdXRvLWNvbnZlcnQgc3JnYiB0ZXh0dXJlc1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIGN1cnJlbnRJbnN0YW5jZVtrZXldIGluc3RhbmNlb2YgVEhSRUUuVGV4dHVyZSAmJlxuICAgICAgICAgICAgICAgIGN1cnJlbnRJbnN0YW5jZVtrZXldLmZvcm1hdCA9PT0gVEhSRUUuUkdCQUZvcm1hdCAmJlxuICAgICAgICAgICAgICAgIGN1cnJlbnRJbnN0YW5jZVtrZXldLnR5cGUgPT09IFRIUkVFLlVuc2lnbmVkQnl0ZVR5cGVcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRleHR1cmUgPSBjdXJyZW50SW5zdGFuY2Vba2V5XSBhcyBUSFJFRS5UZXh0dXJlO1xuICAgICAgICAgICAgICAgIGlmIChyb290U3RhdGU/LmdsKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpcy5jb2xvclNwYWNlRXhpc3QodGV4dHVyZSkgJiYgaXMuY29sb3JTcGFjZUV4aXN0KHJvb3RTdGF0ZS5nbCkpXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0dXJlLmNvbG9yU3BhY2UgPSByb290U3RhdGUuZ2wub3V0cHV0Q29sb3JTcGFjZTtcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB0ZXh0dXJlLmVuY29kaW5nID0gcm9vdFN0YXRlLmdsLm91dHB1dEVuY29kaW5nO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxvY2FsU3RhdGU/Lm5hdGl2ZVByb3BzPy5zZXQoeyBba2V5XTogdmFsdWUgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBjaGVja1VwZGF0ZSh0YXJnZXRQcm9wKTtcbiAgICAgICAgaW52YWxpZGF0ZUluc3RhbmNlKGluc3RhbmNlKTtcbiAgICB9XG5cbiAgICBjb25zdCBpbnN0YW5jZUhhbmRsZXJzID0gbG9jYWxTdGF0ZS5ldmVudENvdW50O1xuICAgIGNvbnN0IHBhcmVudCA9IGxvY2FsU3RhdGUucGFyZW50ID8gdW50cmFja2VkKGxvY2FsU3RhdGUucGFyZW50KSA6IG51bGw7XG5cbiAgICBpZiAocGFyZW50ICYmIHJvb3RTdGF0ZS5pbnRlcm5hbCAmJiBpbnN0YW5jZVsncmF5Y2FzdCddICYmIGluc3RhbmNlSGFuZGxlcnMgIT09IGxvY2FsU3RhdGUuZXZlbnRDb3VudCkge1xuICAgICAgICAvLyBQcmUtZW1wdGl2ZWx5IHJlbW92ZSB0aGUgaW5zdGFuY2UgZnJvbSB0aGUgaW50ZXJhY3Rpb24gbWFuYWdlclxuICAgICAgICBjb25zdCBpbmRleCA9IHJvb3RTdGF0ZS5pbnRlcm5hbC5pbnRlcmFjdGlvbi5pbmRleE9mKGluc3RhbmNlKTtcbiAgICAgICAgaWYgKGluZGV4ID4gLTEpIHJvb3RTdGF0ZS5pbnRlcm5hbC5pbnRlcmFjdGlvbi5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICAvLyBBZGQgdGhlIGluc3RhbmNlIHRvIHRoZSBpbnRlcmFjdGlvbiBtYW5hZ2VyIG9ubHkgd2hlbiBpdCBoYXMgaGFuZGxlcnNcbiAgICAgICAgaWYgKGxvY2FsU3RhdGUuZXZlbnRDb3VudCkgcm9vdFN0YXRlLmludGVybmFsLmludGVyYWN0aW9uLnB1c2goaW5zdGFuY2UpO1xuICAgIH1cblxuICAgIGlmIChwYXJlbnQgJiYgbG9jYWxTdGF0ZS5hZnRlclVwZGF0ZSAmJiBsb2NhbFN0YXRlLmFmdGVyVXBkYXRlLm9ic2VydmVkICYmIGNoYW5nZXMubGVuZ3RoKSB7XG4gICAgICAgIGxvY2FsU3RhdGUuYWZ0ZXJVcGRhdGUuZW1pdChpbnN0YW5jZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGluc3RhbmNlO1xufVxuIl19
|
|
127
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbHktcHJvcHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi91dGlscy9hcHBseS1wcm9wcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFDLE9BQU8sS0FBSyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQy9CLE9BQU8sRUFBRSxhQUFhLEVBQUUsa0JBQWtCLEVBQXdCLE1BQU0sYUFBYSxDQUFDO0FBRXRGLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUV2Qyx3RUFBd0U7QUFDeEUsTUFBTSxVQUFVLFNBQVMsQ0FBQyxRQUFzQixFQUFFLEtBQW1CO0lBQ3BFLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0MsTUFBTSxPQUFPLEdBQW9DLEVBQUUsQ0FBQztJQUVwRCxLQUFLLE1BQU0sQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLElBQUksWUFBWSxFQUFFO1FBQ2hELElBQUksR0FBRyxHQUFHLE9BQU8sQ0FBQztRQUNsQixJQUFJLEVBQUUsQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDakMsSUFBSSxPQUFPLEtBQUssVUFBVSxFQUFFO2dCQUMzQixHQUFHLEdBQUcsWUFBWSxDQUFDO2FBQ25CO2lCQUFNLElBQUksT0FBTyxLQUFLLGdCQUFnQixFQUFFO2dCQUN4QyxHQUFHLEdBQUcsa0JBQWtCLENBQUM7YUFDekI7U0FDRDtRQUNELElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQUUsU0FBUztRQUMvQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxD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QUN0QztJQUVELE9BQU8sUUFBUSxDQUFDO0FBQ2pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1bnRyYWNrZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCAqIGFzIFRIUkVFIGZyb20gJ3RocmVlJztcbmltcG9ydCB7IGdldExvY2FsU3RhdGUsIGludmFsaWRhdGVJbnN0YW5jZSwgdHlwZSBOZ3RJbnN0YW5jZU5vZGUgfSBmcm9tICcuLi9pbnN0YW5jZSc7XG5pbXBvcnQgdHlwZSB7IE5ndEFueVJlY29yZCB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IGlzIH0gZnJvbSAnLi9pcyc7XG5pbXBvcnQgeyBjaGVja1VwZGF0ZSB9IGZyb20gJy4vdXBkYXRlJztcblxuLy8gVGhpcyBmdW5jdGlvbiBwcmVwYXJlcyBhIHNldCBvZiBjaGFuZ2VzIHRvIGJlIGFwcGxpZWQgdG8gdGhlIGluc3RhbmNlXG5leHBvcnQgZnVuY3Rpb24gZGlmZlByb3BzKGluc3RhbmNlOiBOZ3RBbnlSZWNvcmQsIHByb3BzOiBOZ3RBbnlSZWNvcmQpIHtcblx0Y29uc3QgcHJvcHNFbnRyaWVzID0gT2JqZWN0LmVudHJpZXMocHJvcHMpO1xuXHRjb25zdCBjaGFuZ2VzOiBba2V5OiBzdHJpbmcsIHZhbHVlOiB1bmtub3duXVtdID0gW107XG5cblx0Zm9yIChjb25zdCBbcHJvcEtleSwgcHJvcFZhbHVlXSBvZiBwcm9wc0VudHJpZXMpIHtcblx0XHRsZXQga2V5ID0gcHJvcEtleTtcblx0XHRpZiAoaXMuY29sb3JTcGFjZUV4aXN0KGluc3RhbmNlKSkge1xuXHRcdFx0aWYgKHByb3BLZXkgPT09ICdlbmNvZGluZycpIHtcblx0XHRcdFx0a2V5ID0gJ2NvbG9yU3BhY2UnO1xuXHRcdFx0fSBlbHNlIGlmIChwcm9wS2V5ID09PSAnb3V0cHV0RW5jb2RpbmcnKSB7XG5cdFx0XHRcdGtleSA9ICdvdXRwdXRDb2xvclNwYWNlJztcblx0XHRcdH1cblx0XHR9XG5cdFx0aWYgKGlzLmVxdShwcm9wVmFsdWUsIGluc3RhbmNlW2tleV0pKSBjb250aW51ZTtcblx0XHRjaGFuZ2VzLnB1c2goW3Byb3BLZXksIHByb3BWYWx1ZV0pO1xuXHR9XG5cblx0cmV0dXJuIGNoYW5nZXM7XG59XG5cbi8vIFRoaXMgZnVuY3Rpb24gYXBwbGllcyBhIHNldCBvZiBjaGFuZ2VzIHRvIHRoZSBpbnN0YW5jZVxuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5UHJvcHMoaW5zdGFuY2U6IE5ndEluc3RhbmNlTm9kZSwgcHJvcHM6IE5ndEFueVJlY29yZCkge1xuXHQvLyBpZiBwcm9wcyBpcyBlbXB0eVxuXHRpZiAoIU9iamVjdC5rZXlzKHByb3BzKS5sZW5ndGgpIHJldHVybiBpbnN0YW5jZTtcblxuXHQvLyBGaWx0ZXIgZXF1YWxzLCBldmVudHMgYW5kIHJlc2VydmVkIHByb3BzXG5cdC8vIGZpbHRlciBlcXVhbHMsIGV2ZW50cyAsIGFuZCByZXNlcnZlZCBwcm9wc1xuXHRjb25zdCBsb2NhbFN0YXRlID0gZ2V0TG9jYWxTdGF0ZShpbnN0YW5jZSk7XG5cdGNvbnN0IHJvb3RTdGF0ZSA9IGxvY2FsU3RhdGUuc3RvcmU/LmdldCgpO1xuXHRjb25zdCBjaGFuZ2VzID0gZGlmZlByb3BzKGluc3RhbmNlLCBwcm9wcyk7XG5cblx0Zm9yIChsZXQgaSA9IDA7IGkgPCBjaGFuZ2VzLmxlbmd0aDsgaSsrKSB7XG5cdFx0bGV0IFtrZXksIHZhbHVlXSA9IGNoYW5nZXNbaV07XG5cblx0XHQvLyBBbGlhcyAob3V0cHV0KWVuY29kaW5nID0+IChvdXRwdXQpY29sb3JTcGFjZSAoc2luY2UgcjE1Milcblx0XHQvLyBodHRwczovL2dpdGh1Yi5jb20vcG1uZHJzL3JlYWN0LXRocmVlLWZpYmVyL3B1bGwvMjgyOVxuXHRcdGlmIChpcy5jb2xvclNwYWNlRXhpc3QoaW5zdGFuY2UpKSB7XG5cdFx0XHRjb25zdCBzUkdCRW5jb2RpbmcgPSAzMDAxO1xuXHRcdFx0Y29uc3QgU1JHQkNvbG9yU3BhY2UgPSAnc3JnYic7XG5cdFx0XHRjb25zdCBMaW5lYXJTUkdCQ29sb3JTcGFjZSA9ICdzcmdiLWxpbmVhcic7XG5cblx0XHRcdGlmIChrZXkgPT09ICdlbmNvZGluZycpIHtcblx0XHRcdFx0a2V5ID0gJ2NvbG9yU3BhY2UnO1xuXHRcdFx0XHR2YWx1ZSA9IHZhbHVlID09PSBzUkdCRW5jb2RpbmcgPyBTUkdCQ29sb3JTcGFjZSA6IExpbmVhclNSR0JDb2xvclNwYWNlO1xuXHRcdFx0fSBlbHNlIGlmIChrZXkgPT09ICdvdXRwdXRFbmNvZGluZycpIHtcblx0XHRcdFx0a2V5ID0gJ291dHB1dENvbG9yU3BhY2UnO1xuXHRcdFx0XHR2YWx1ZSA9IHZhbHVlID09PSBzUkdCRW5jb2RpbmcgPyBTUkdCQ29sb3JTcGFjZSA6IExpbmVhclNSR0JDb2xvclNwYWNlO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGNvbnN0IGN1cnJlbnRJbnN0YW5jZSA9IGluc3RhbmNlO1xuXHRcdGNvbnN0IHRhcmdldFByb3AgPSBjdXJyZW50SW5zdGFuY2Vba2V5XSBhcyBOZ3RBbnlSZWNvcmQ7XG5cblx0XHQvLyBzcGVjaWFsIHRyZWF0bWVuIGZvciBvYmplY3RzIHdpdGggc3VwcG9ydCBmb3Igc2V0L2NvcHksIGFuZCBsYXllcnNcblx0XHRpZiAodGFyZ2V0UHJvcCAmJiB0YXJnZXRQcm9wWydzZXQnXSAmJiAodGFyZ2V0UHJvcFsnY29weSddIHx8IHRhcmdldFByb3AgaW5zdGFuY2VvZiBUSFJFRS5MYXllcnMpKSB7XG5cdFx0XHRjb25zdCBpc0NvbG9yID0gdGFyZ2V0UHJvcCBpbnN0YW5jZW9mIFRIUkVFLkNvbG9yO1xuXHRcdFx0Ly8gaWYgdmFsdWUgaXMgYW4gYXJyYXlcblx0XHRcdGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuXHRcdFx0XHRpZiAoKHRhcmdldFByb3AgYXMgTmd0QW55UmVjb3JkKVsnZnJvbUFycmF5J10pICh0YXJnZXRQcm9wIGFzIE5ndEFueVJlY29yZClbJ2Zyb21BcnJheSddKHZhbHVlKTtcblx0XHRcdFx0ZWxzZSB0YXJnZXRQcm9wWydzZXQnXSguLi52YWx1ZSk7XG5cdFx0XHR9XG5cdFx0XHQvLyB0ZXN0IGFnYWluIHRhcmdldC5jb3B5XG5cdFx0XHRlbHNlIGlmIChcblx0XHRcdFx0KHRhcmdldFByb3AgYXMgTmd0QW55UmVjb3JkKVsnY29weSddICYmXG5cdFx0XHRcdHZhbHVlICYmXG5cdFx0XHRcdHZhbHVlLmNvbnN0cnVjdG9yICYmXG5cdFx0XHRcdHRhcmdldFByb3AuY29uc3RydWN0b3IubmFtZSA9PT0gdmFsdWUuY29uc3RydWN0b3IubmFtZVxuXHRcdFx0KSB7XG5cdFx0XHRcdCh0YXJnZXRQcm9wIGFzIE5ndEFueVJlY29yZClbJ2NvcHknXSh2YWx1ZSk7XG5cdFx0XHRcdGlmICghVEhSRUUuQ29sb3JNYW5hZ2VtZW50ICYmICFyb290U3RhdGUubGluZWFyICYmIGlzQ29sb3IpIHRhcmdldFByb3BbJ2NvbnZlcnRTUkdCVG9MaW5lYXInXSgpO1xuXHRcdFx0fVxuXHRcdFx0Ly8gaWYgbm90aGluZyBlbHNlIGZpdHMsIGp1c3Qgc2V0IHRoZSBzaW5nbGUgdmFsdWUsIGlnbm9yZSB1bmRlZmluZWRcblx0XHRcdGVsc2UgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0Y29uc3QgaXNDb2xvciA9IHRhcmdldFByb3AgaW5zdGFuY2VvZiBUSFJFRS5Db2xvcjtcblx0XHRcdFx0Ly8gYWxsb3cgc2V0dGluZyBhcnJheSBzY2FsYXJzXG5cdFx0XHRcdGlmICghaXNDb2xvciAmJiAodGFyZ2V0UHJvcCBhcyBOZ3RBbnlSZWNvcmQpWydzZXRTY2FsYXInXSlcblx0XHRcdFx0XHQodGFyZ2V0UHJvcCBhcyBOZ3RBbnlSZWNvcmQpWydzZXRTY2FsYXInXSh2YWx1ZSk7XG5cdFx0XHRcdC8vIGxheWVycyBoYXZlIG5vIGNvcHkgZnVuY3Rpb24sIGNvcHkgdGhlIG1hc2tcblx0XHRcdFx0ZWxzZSBpZiAodGFyZ2V0UHJvcCBpbnN0YW5jZW9mIFRIUkVFLkxheWVycyAmJiB2YWx1ZSBpbnN0YW5jZW9mIFRIUkVFLkxheWVycylcblx0XHRcdFx0XHR0YXJnZXRQcm9wLm1hc2sgPSB2YWx1ZS5tYXNrO1xuXHRcdFx0XHQvLyBvdGhlcndpc2UganVzdCBzZXQgLi4uXG5cdFx0XHRcdGVsc2UgdGFyZ2V0UHJvcFsnc2V0J10odmFsdWUpO1xuXG5cdFx0XHRcdC8vIGF1dG8tY29udmVydCBzcmdiXG5cdFx0XHRcdGlmICghVEhSRUUuQ29sb3JNYW5hZ2VtZW50ICYmICFyb290U3RhdGU/LmxpbmVhciAmJiBpc0NvbG9yKSB0YXJnZXRQcm9wLmNvbnZlcnRTUkdCVG9MaW5lYXIoKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0Ly8gZWxzZSBqdXN0IG92ZXJ3cml0ZSB0aGUgdmFsdWVcblx0XHRlbHNlIHtcblx0XHRcdGN1cnJlbnRJbnN0YW5jZVtrZXldID0gdmFsdWU7XG5cdFx0XHQvLyBhdXRvLWNvbnZlcnQgc3JnYiB0ZXh0dXJlc1xuXHRcdFx0aWYgKFxuXHRcdFx0XHRjdXJyZW50SW5zdGFuY2Vba2V5XSBpbnN0YW5jZW9mIFRIUkVFLlRleHR1cmUgJiZcblx0XHRcdFx0Y3VycmVudEluc3RhbmNlW2tleV0uZm9ybWF0ID09PSBUSFJFRS5SR0JBRm9ybWF0ICYmXG5cdFx0XHRcdGN1cnJlbnRJbnN0YW5jZVtrZXldLnR5cGUgPT09IFRIUkVFLlVuc2lnbmVkQnl0ZVR5cGVcblx0XHRcdCkge1xuXHRcdFx0XHRjb25zdCB0ZXh0dXJlID0gY3VycmVudEluc3RhbmNlW2tleV0gYXMgVEhSRUUuVGV4dHVyZTtcblxuXHRcdFx0XHRpZiAocm9vdFN0YXRlPy5nbCkge1xuXHRcdFx0XHRcdGlmIChpcy5jb2xvclNwYWNlRXhpc3QodGV4dHVyZSkgJiYgaXMuY29sb3JTcGFjZUV4aXN0KHJvb3RTdGF0ZS5nbCkpXG5cdFx0XHRcdFx0XHR0ZXh0dXJlLmNvbG9yU3BhY2UgPSByb290U3RhdGUuZ2wub3V0cHV0Q29sb3JTcGFjZTtcblx0XHRcdFx0XHRlbHNlIHRleHR1cmUuZW5jb2RpbmcgPSByb290U3RhdGUuZ2wub3V0cHV0RW5jb2Rpbmc7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRjaGVja1VwZGF0ZShjdXJyZW50SW5zdGFuY2Vba2V5XSk7XG5cdFx0Y2hlY2tVcGRhdGUodGFyZ2V0UHJvcCk7XG5cdFx0aW52YWxpZGF0ZUluc3RhbmNlKGluc3RhbmNlKTtcblx0fVxuXG5cdGNvbnN0IGluc3RhbmNlSGFuZGxlcnMgPSBsb2NhbFN0YXRlLmV2ZW50Q291bnQ7XG5cdGNvbnN0IHBhcmVudCA9IGxvY2FsU3RhdGUucGFyZW50ID8gdW50cmFja2VkKGxvY2FsU3RhdGUucGFyZW50KSA6IG51bGw7XG5cblx0aWYgKHBhcmVudCAmJiByb290U3RhdGUuaW50ZXJuYWwgJiYgaW5zdGFuY2VbJ3JheWNhc3QnXSAmJiBpbnN0YW5jZUhhbmRsZXJzICE9PSBsb2NhbFN0YXRlLmV2ZW50Q291bnQpIHtcblx0XHQvLyBQcmUtZW1wdGl2ZWx5IHJlbW92ZSB0aGUgaW5zdGFuY2UgZnJvbSB0aGUgaW50ZXJhY3Rpb24gbWFuYWdlclxuXHRcdGNvbnN0IGluZGV4ID0gcm9vdFN0YXRlLmludGVybmFsLmludGVyYWN0aW9uLmluZGV4T2YoaW5zdGFuY2UpO1xuXHRcdGlmIChpbmRleCA+IC0xKSByb290U3RhdGUuaW50ZXJuYWwuaW50ZXJhY3Rpb24uc3BsaWNlKGluZGV4LCAxKTtcblx0XHQvLyBBZGQgdGhlIGluc3RhbmNlIHRvIHRoZSBpbnRlcmFjdGlvbiBtYW5hZ2VyIG9ubHkgd2hlbiBpdCBoYXMgaGFuZGxlcnNcblx0XHRpZiAobG9jYWxTdGF0ZS5ldmVudENvdW50KSByb290U3RhdGUuaW50ZXJuYWwuaW50ZXJhY3Rpb24ucHVzaChpbnN0YW5jZSk7XG5cdH1cblxuXHRpZiAocGFyZW50ICYmIGxvY2FsU3RhdGUuYWZ0ZXJVcGRhdGUgJiYgbG9jYWxTdGF0ZS5hZnRlclVwZGF0ZS5vYnNlcnZlZCAmJiBjaGFuZ2VzLmxlbmd0aCkge1xuXHRcdGxvY2FsU3RhdGUuYWZ0ZXJVcGRhdGUuZW1pdChpbnN0YW5jZSk7XG5cdH1cblxuXHRyZXR1cm4gaW5zdGFuY2U7XG59XG4iXX0=
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Injector, assertInInjectionContext, inject } from '@angular/core';
|
|
2
|
+
export function assertInjectionContext(fn, injector) {
|
|
3
|
+
try {
|
|
4
|
+
if (!injector) {
|
|
5
|
+
return inject(Injector);
|
|
6
|
+
}
|
|
7
|
+
return injector;
|
|
8
|
+
}
|
|
9
|
+
catch {
|
|
10
|
+
!injector && assertInInjectionContext(fn);
|
|
11
|
+
return null;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXJ0LWluamVjdGlvbi1jb250ZXh0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvdXRpbHMvYXNzZXJ0LWluamVjdGlvbi1jb250ZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNFLE1BQU0sVUFBVSxzQkFBc0IsQ0FBQyxFQUFZLEVBQUUsUUFBbUI7SUFDdkUsSUFBSTtRQUNILElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDZCxPQUFPLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUN4QjtRQUNELE9BQU8sUUFBUSxDQUFDO0tBQ2hCO0lBQUMsTUFBTTtRQUNQLENBQUMsUUFBUSxJQUFJLHdCQUF3QixDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzFDLE9BQU8sSUFBSyxDQUFDO0tBQ2I7QUFDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0b3IsIGFzc2VydEluSW5qZWN0aW9uQ29udGV4dCwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRJbmplY3Rpb25Db250ZXh0KGZuOiBGdW5jdGlvbiwgaW5qZWN0b3I/OiBJbmplY3Rvcik6IEluamVjdG9yIHtcblx0dHJ5IHtcblx0XHRpZiAoIWluamVjdG9yKSB7XG5cdFx0XHRyZXR1cm4gaW5qZWN0KEluamVjdG9yKTtcblx0XHR9XG5cdFx0cmV0dXJuIGluamVjdG9yO1xuXHR9IGNhdGNoIHtcblx0XHQhaW5qZWN0b3IgJiYgYXNzZXJ0SW5JbmplY3Rpb25Db250ZXh0KGZuKTtcblx0XHRyZXR1cm4gbnVsbCE7XG5cdH1cbn1cbiJdfQ==
|