angular-three 1.0.0-beta.9 → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/esm2020/index.mjs +4 -1
- package/esm2020/lib/portal.mjs +241 -0
- package/esm2020/lib/renderer/state.mjs +11 -5
- package/esm2020/lib/renderer/utils.mjs +2 -2
- package/esm2020/lib/stores/store.mjs +2 -2
- package/esm2020/lib/utils/attach.mjs +4 -1
- package/esm2020/lib/utils/instance.mjs +11 -3
- package/fesm2015/angular-three.mjs +239 -12
- package/fesm2015/angular-three.mjs.map +1 -1
- package/fesm2020/angular-three.mjs +259 -11
- package/fesm2020/angular-three.mjs.map +1 -1
- package/index.d.ts +3 -0
- package/lib/portal.d.ts +60 -0
- package/lib/utils/attach.d.ts +7 -1
- package/lib/utils/instance.d.ts +1 -1
- package/package.json +4 -1
- package/plugin/README.md +11 -0
- package/plugin/generators.json +19 -0
- package/plugin/package.json +10 -0
- package/plugin/src/generators/init/compat.d.ts +2 -0
- package/plugin/src/generators/init/compat.js +6 -0
- package/plugin/src/generators/init/compat.js.map +1 -0
- package/plugin/src/generators/init/init.d.ts +5 -0
- package/plugin/src/generators/init/init.js +33 -0
- package/plugin/src/generators/init/init.js.map +1 -0
- package/plugin/src/generators/init/schema.json +6 -0
- package/plugin/src/index.d.ts +1 -0
- package/plugin/src/index.js +6 -0
- package/plugin/src/index.js.map +1 -0
|
@@ -105,7 +105,7 @@ export function removeThreeChild(parent, child, dispose) {
|
|
|
105
105
|
removeThreeRecursive(child.childre, child, !!dispose);
|
|
106
106
|
}
|
|
107
107
|
// dispose
|
|
108
|
-
if (child['dispose'] && !is.scene(child)) {
|
|
108
|
+
if (!isPrimitive && child['dispose'] && !is.scene(child)) {
|
|
109
109
|
queueMicrotask(() => child['dispose']());
|
|
110
110
|
}
|
|
111
111
|
invalidateInstance(parent);
|
|
@@ -174,4 +174,4 @@ export function kebabToPascal(str) {
|
|
|
174
174
|
// join the parts together to create the final PascalCase string
|
|
175
175
|
return pascalParts.join('');
|
|
176
176
|
}
|
|
177
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUvc3JjL2xpYi9yZW5kZXJlci91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFaEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsYUFBYSxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDdEUsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUlqQyxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUc7SUFDM0IsVUFBVSxFQUFFLFlBQVk7SUFDeEIsYUFBYSxFQUFFLGVBQWU7SUFDOUIsU0FBUyxFQUFFLFdBQVc7Q0FDaEIsQ0FBQztBQUVYLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHO0lBQzlCLFFBQVEsRUFBRSxhQUFhO0lBQ3ZCLGVBQWUsRUFBRSxVQUFVO0lBQzNCLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLEtBQUssRUFBRSxVQUFVO0lBQ2pCLEdBQUcsRUFBRSxLQUFLO0NBQ0osQ0FBQztBQUVYLE1BQU0sY0FBYyxHQUFHO0lBQ25CLGFBQWEsRUFBRSxjQUFjO0lBQzdCLFlBQVksRUFBRSxhQUFhO0lBQzNCLFlBQVksRUFBRSxhQUFhO0NBQ3JCLENBQUM7QUFFWCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsTUFBdUIsRUFBRSxLQUFzQjtJQUM1RSxNQUFNLEdBQUcsR0FBRyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbEMsTUFBTSxHQUFHLEdBQUcsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRWpDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLEVB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QUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7U0FDL0Q7SUFDTCxDQUFDLENBQUM7QUFDTixDQUFDO0FBRUQsTUFBTSxVQUFVLGNBQWMsQ0FBQyxRQUE4QixFQUFFLEdBQXNCO0lBQ2pGLE9BQU8sQ0FBQyxLQUE0RixFQUFFLEVBQUU7UUFDcEcsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hCLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN4QixDQUFDLENBQUM7QUFDTixDQUFDO0FBRUQsTUFBTSxVQUFVLGFBQWEsQ0FBQyxHQUFXO0lBQ3JDLGtDQUFrQztJQUNsQyxNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBRTdCLGlFQUFpRTtJQUNqRSxNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7UUFDbkMsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEQsQ0FBQyxDQUFDLENBQUM7SUFFSCxnRUFBZ0U7SUFDaEUsT0FBTyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ2hDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyByZW1vdmVJbnRlcmFjdGl2aXR5IH0gZnJvbSAnLi4vZXZlbnRzJztcbmltcG9ydCB0eXBlIHsgTmd0RXZlbnRIYW5kbGVycywgTmd0SW5zdGFuY2VOb2RlIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgYXR0YWNoLCBkZXRhY2ggfSBmcm9tICcuLi91dGlscy9hdHRhY2gnO1xuaW1wb3J0IHsgZ2V0TG9jYWxTdGF0ZSwgaW52YWxpZGF0ZUluc3RhbmNlIH0gZnJvbSAnLi4vdXRpbHMvaW5zdGFuY2UnO1xuaW1wb3J0IHsgaXMgfSBmcm9tICcuLi91dGlscy9pcyc7XG5pbXBvcnQgeyBzdXBwb3J0ZWRFdmVudHMgfSBmcm9tICcuLi93ZWIvZXZlbnRzJztcbmltcG9ydCB7IE5ndFJlbmRlcmVyQ2xhc3NJZCB9IGZyb20gJy4vZW51bXMnO1xuXG5leHBvcnQgY29uc3QgU1BFQ0lBTF9ET01fVEFHID0ge1xuICAgIE5HVF9QT1JUQUw6ICduZ3QtcG9ydGFsJyxcbiAgICBOR1RfUFJJTUlUSVZFOiAnbmd0LXByaW1pdGl2ZScsXG4gICAgTkdUX1ZBTFVFOiAnbmd0LXZhbHVlJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCBjb25zdCBTUEVDSUFMX1BST1BFUlRJRVMgPSB7XG4gICAgQ09NUE9VTkQ6ICduZ3RDb21wb3VuZCcsXG4gICAgUkVOREVSX1BSSU9SSVRZOiAncHJpb3JpdHknLFxuICAgIEFUVEFDSDogJ2F0dGFjaCcsXG4gICAgVkFMVUU6ICdyYXdWYWx1ZScsXG4gICAgUkVGOiAncmVmJyxcbn0gYXMgY29uc3Q7XG5cbmNvbnN0IFNQRUNJQUxfRVZFTlRTID0ge1xuICAgIEJFRk9SRV9SRU5ERVI6ICdiZWZvcmVSZW5kZXInLFxuICAgIEFGVEVSX1VQREFURTogJ2FmdGVyVXBkYXRlJyxcbiAgICBBRlRFUl9BVFRBQ0g6ICdhZnRlckF0dGFjaCcsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgZnVuY3Rpb24gYXR0YWNoVGhyZWVDaGlsZChwYXJlbnQ6IE5ndEluc3RhbmNlTm9kZSwgY2hpbGQ6IE5ndEluc3RhbmNlTm9kZSkge1xuICAgIGNvbnN0IHBMUyA9IGdldExvY2FsU3RhdGUocGFyZW50KTtcbiAgICBjb25zdCBjTFMgPSBnZXRMb2NhbFN0YXRlKGNoaWxkKTtcblxuICAgIGlmICghcExTIHx8ICFjTFMpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBbTkdUXSBUSFJFRSBpbnN0YW5jZXMgbmVlZCB0byBiZSBwcmVwYXJlZCB3aXRoIGxvY2FsIHN0YXRlLmApO1xuICAgIH1cblxuICAgIC8vIHdoZXRoZXIgdGhlIGNoaWxkIGlzIGFkZGVkIHRvIHRoZSBwYXJlbnQgd2l0aCBwYXJlbnQuYWRkKClcbiAgICBsZXQgYWRkZWQgPSBmYWxzZTtcblxuICAgIC8vIGFzc2lnbiBzdG9yZSBvbiBjaGlsZCBpZiBub3QgYWxyZWFkeSBleGlzdFxuICAgIGlmICghY0xTLnN0b3JlKSB7XG4gICAgICAgIGNMUy5zdG9yZSA9IHBMUy5zdG9yZTtcbiAgICB9XG5cbiAgICBpZiAoY0xTLmF0dGFjaCkge1xuICAgICAgICBjb25zdCBhdHRhY2hQcm9wID0gY0xTLmF0dGFjaDtcblxuICAgICAgICBpZiAodHlwZW9mIGF0dGFjaFByb3AgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIGNvbnN0IGF0dGFjaENsZWFuVXAgPSBhdHRhY2hQcm9wKHBhcmVudCwgY2hpbGQsIGNMUy5zdG9yZSk7XG4gICAgICAgICAgICBpZiAoYXR0YWNoQ2xlYW5VcCkgY0xTLnByZXZpb3VzQXR0YWNoID0gYXR0YWNoQ2xlYW5VcDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIHdlIHNraXAgYXR0YWNoIG5vbmUgaWYgc2V0IGV4cGxpY2l0bHlcbiAgICAgICAgICAgIGlmIChhdHRhY2hQcm9wWzBdID09PSAnbm9uZScpIHtcbiAgICAgICAgICAgICAgICBpbnZhbGlkYXRlSW5zdGFuY2UoY2hpbGQpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gaGFuZGxlIG1hdGVyaWFsIGFycmF5XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgYXR0YWNoUHJvcFswXSA9PT0gJ21hdGVyaWFsJyAmJlxuICAgICAgICAgICAgICAgIGF0dGFjaFByb3BbMV0gJiZcbiAgICAgICAgICAgICAgICB0eXBlb2YgTnVtYmVyKGF0dGFjaFByb3BbMV0pID09PSAnbnVtYmVyJyAmJlxuICAgICAgICAgICAgICAgIGlzLm1hdGVyaWFsKGNoaWxkKSAmJlxuICAgICAgICAgICAgICAgICFBcnJheS5pc0FycmF5KHBhcmVudFsnbWF0ZXJpYWwnXSlcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHBhcmVudFsnbWF0ZXJpYWwnXSA9IFtdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBhdHRhY2hcbiAgICAgICAgICAgIGlmIChjTFMuaXNSYXcpIHtcbiAgICAgICAgICAgICAgICBjTFMucGFyZW50ID0gcGFyZW50O1xuICAgICAgICAgICAgICAgIC8vIGF0IHRoaXMgcG9pbnQgd2UgZG9uJ3QgaGF2ZSByYXdWYWx1ZSB5ZXQsIHNvIHdlIGJhaWwgYW5kIHdhaXQgdW50aWwgdGhlIFJlbmRlcmVyIHJlY2FsbHMgYXR0YWNoXG4gICAgICAgICAgICAgICAgaWYgKGNoaWxkLl9fbmd0X3JlbmRlcmVyX19bTmd0UmVuZGVyZXJDbGFzc0lkLnJhd1ZhbHVlXSA9PT0gdW5kZWZpbmVkKSByZXR1cm47XG4gICAgICAgICAgICAgICAgYXR0YWNoKHBhcmVudCwgY2hpbGQuX19uZ3RfcmVuZGVyZXJfX1tOZ3RSZW5kZXJlckNsYXNzSWQucmF3VmFsdWVdLCBhdHRhY2hQcm9wKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgYXR0YWNoKHBhcmVudCwgY2hpbGQsIGF0dGFjaFByb3ApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gc2F2ZSB2YWx1ZVxuICAgICAgICAgICAgY0xTLnByZXZpb3VzQXR0YWNoID0gYXR0YWNoUHJvcC5yZWR1Y2UoKHZhbHVlLCBwcm9wZXJ0eSkgPT4gdmFsdWVbcHJvcGVydHldLCBwYXJlbnQpO1xuICAgICAgICB9XG4gICAgfSBlbHNlIGlmIChpcy5vYmplY3QzRChwYXJlbnQpICYmIGlzLm9iamVjdDNEKGNoaWxkKSkge1xuICAgICAgICBwYXJlbnQuYWRkKGNoaWxkKTtcbiAgICAgICAgYWRkZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIHBMUy5hZGQoY2hpbGQsIGFkZGVkID8gJ29iamVjdHMnIDogJ25vbk9iamVjdHMnKTtcblxuICAgIGNMUy5wYXJlbnQgPSBwYXJlbnQ7XG5cbiAgICBpZiAoY0xTLmFmdGVyQXR0YWNoKSB7XG4gICAgICAgIGNMUy5hZnRlckF0dGFjaC5lbWl0KHsgcGFyZW50LCBub2RlOiBjaGlsZCB9KTtcbiAgICB9XG5cbiAgICBpbnZhbGlkYXRlSW5zdGFuY2UoY2hpbGQpO1xuICAgIGludmFsaWRhdGVJbnN0YW5jZShwYXJlbnQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlVGhyZWVDaGlsZChwYXJlbnQ6IE5ndEluc3RhbmNlTm9kZSwgY2hpbGQ6IE5ndEluc3RhbmNlTm9kZSwgZGlzcG9zZT86IGJvb2xlYW4pIHtcbiAgICBjb25zdCBwTFMgPSBnZXRMb2NhbFN0YXRlKHBhcmVudCk7XG4gICAgY29uc3QgY0xTID0gZ2V0TG9jYWxTdGF0ZShjaGlsZCk7XG5cbiAgICAvLyBjbGVhciBwYXJlbnQgcmVmXG4gICAgY0xTLnBhcmVudCA9IG51bGw7XG5cbiAgICAvLyByZW1vdmUgY2hpbGQgZnJvbSBwYXJlbnRcbiAgICBpZiAocExTLm9iamVjdHMpIHtcbiAgICAgICAgcExTLnJlbW92ZShjaGlsZCwgJ29iamVjdHMnKTtcbiAgICB9XG5cbiAgICBpZiAocExTLm5vbk9iamVjdHMpIHtcbiAgICAgICAgcExTLnJlbW92ZShjaGlsZCwgJ25vbk9iamVjdHMnKTtcbiAgICB9XG5cbiAgICBpZiAoY0xTLmF0dGFjaCkge1xuICAgICAgICBkZXRhY2gocGFyZW50LCBjaGlsZCwgY0xTLmF0dGFjaCk7XG4gICAgfSBlbHNlIGlmIChpcy5vYmplY3QzRChwYXJlbnQpICYmIGlzLm9iamVjdDNEKGNoaWxkKSkge1xuICAgICAgICBwYXJlbnQucmVtb3ZlKGNoaWxkKTtcbiAgICAgICAgcmVtb3ZlSW50ZXJhY3Rpdml0eShjTFMuc3RvcmUgfHwgcExTLnN0b3JlLCBjaGlsZCk7XG4gICAgfVxuXG4gICAgY29uc3QgaXNQcmltaXRpdmUgPSBjTFMucHJpbWl0aXZlO1xuICAgIGlmICghaXNQcmltaXRpdmUpIHtcbiAgICAgICAgcmVtb3ZlVGhyZWVSZWN1cnNpdmUoY0xTLm9iamVjdHM/LnZhbHVlIHx8IFtdLCBjaGlsZCwgISFkaXNwb3NlKTtcbiAgICAgICAgcmVtb3ZlVGhyZWVSZWN1cnNpdmUoY2hpbGQuY2hpbGRyZSwgY2hpbGQsICEhZGlzcG9zZSk7XG4gICAgfVxuXG4gICAgLy8gZGlzcG9zZVxuICAgIGlmIChjaGlsZFsnZGlzcG9zZSddICYmICFpcy5zY2VuZShjaGlsZCkpIHtcbiAgICAgICAgcXVldWVNaWNyb3Rhc2soKCkgPT4gY2hpbGRbJ2Rpc3Bvc2UnXSgpKTtcbiAgICB9XG5cbiAgICBpbnZhbGlkYXRlSW5zdGFuY2UocGFyZW50KTtcbn1cblxuZnVuY3Rpb24gcmVtb3ZlVGhyZWVSZWN1cnNpdmUoYXJyYXk6IE5ndEluc3RhbmNlTm9kZVtdLCBwYXJlbnQ6IE5ndEluc3RhbmNlTm9kZSwgZGlzcG9zZTogYm9vbGVhbikge1xuICAgIGlmIChhcnJheSkgWy4uLmFycmF5XS5mb3JFYWNoKChjaGlsZCkgPT4gcmVtb3ZlVGhyZWVDaGlsZChwYXJlbnQsIGNoaWxkLCBkaXNwb3NlKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9jZXNzVGhyZWVFdmVudChcbiAgICBpbnN0YW5jZTogTmd0SW5zdGFuY2VOb2RlLFxuICAgIHByaW9yaXR5OiBudW1iZXIsXG4gICAgZXZlbnROYW1lOiBzdHJpbmcsXG4gICAgY2FsbGJhY2s6IChldmVudDogYW55KSA9PiB2b2lkLFxuICAgIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWZcbik6ICgpID0+IHZvaWQge1xuICAgIGNvbnN0IGxTID0gZ2V0TG9jYWxTdGF0ZShpbnN0YW5jZSk7XG4gICAgaWYgKGV2ZW50TmFtZSA9PT0gU1BFQ0lBTF9FVkVOVFMuQkVGT1JFX1JFTkRFUikge1xuICAgICAgICByZXR1cm4gbFMuc3RvcmVcbiAgICAgICAgICAgIC5nZXQoJ2ludGVybmFsJylcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHN0YXRlKSA9PiBjYWxsYmFjayh7IHN0YXRlLCBvYmplY3Q6IGluc3RhbmNlIH0pLCBwcmlvcml0eSB8fCBsUy5wcmlvcml0eSB8fCAwKTtcbiAgICB9XG5cbiAgICBpZiAoZXZlbnROYW1lID09PSBTUEVDSUFMX0VWRU5UUy5BRlRFUl9VUERBVEUgfHwgZXZlbnROYW1lID09PSBTUEVDSUFMX0VWRU5UUy5BRlRFUl9BVFRBQ0gpIHtcbiAgICAgICAgaWYgKCFsU1tldmVudE5hbWVdKSB7XG4gICAgICAgICAgICBsU1tldmVudE5hbWVdID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHN1YiA9IGxTW2V2ZW50TmFtZV0/LnN1YnNjcmliZShjYWxsYmFjayk7XG4gICAgICAgIHJldHVybiBzdWIhLnVuc3Vic2NyaWJlLmJpbmQoc3ViKTtcbiAgICB9XG5cbiAgICBpZiAoIWxTLmhhbmRsZXJzKSB7XG4gICAgICAgIGxTLmhhbmRsZXJzID0ge307XG4gICAgfVxuXG4gICAgLy8gdHJ5IHRvIGdldCB0aGUgcHJldmlvdXMgaGFuZGxlci4gY29tcG91bmQgbWlnaHQgaGF2ZSBvbmUsIHRoZSBUSFJFRSBvYmplY3QgbWlnaHQgYWxzbyBoYXZlIG9uZSB3aXRoIHRoZSBzYW1lIG5hbWVcbiAgICBjb25zdCBwcmV2aW91c0hhbmRsZXIgPSBsUy5oYW5kbGVyc1tldmVudE5hbWUgYXMga2V5b2YgdHlwZW9mIGxTLmhhbmRsZXJzXTtcbiAgICAvLyByZWFkanVzdCB0aGUgY2FsbGJhY2tcbiAgICBjb25zdCB1cGRhdGVkQ2FsbGJhY2s6IHR5cGVvZiBjYWxsYmFjayA9IChldmVudCkgPT4ge1xuICAgICAgICBpZiAocHJldmlvdXNIYW5kbGVyKSBwcmV2aW91c0hhbmRsZXIoZXZlbnQpO1xuICAgICAgICBjYWxsYmFjayhldmVudCk7XG4gICAgfTtcblxuICAgIGxTLmhhbmRsZXJzID0ge1xuICAgICAgICAuLi5sUy5oYW5kbGVycyxcbiAgICAgICAgW2V2ZW50TmFtZV06IGV2ZW50VG9IYW5kbGVyKHVwZGF0ZWRDYWxsYmFjaywgY2RyKSxcbiAgICB9O1xuICAgIC8vIGluY3JlbWVudCB0aGUgY291bnQgZXZlcnl0aW1lXG4gICAgbFMuZXZlbnRDb3VudCArPSAxO1xuICAgIC8vIGJ1dCBvbmx5IGFkZCB0aGUgaW5zdGFuY2UgKHRhcmdldCkgdG8gdGhlIGludGVyYWN0aW9uIGFycmF5IChzbyB0aGF0IGl0IGlzIGhhbmRsZWQgYnkgdGhlIEV2ZW50TWFuYWdlciB3aXRoIFJheWNhc3QpXG4gICAgLy8gdGhlIGZpcnN0IHRpbWUgZXZlbnRDb3VudCBpcyBpbmNyZW1lbnRlZFxuICAgIGlmIChsUy5ldmVudENvdW50ID09PSAxICYmIGluc3RhbmNlWydyYXljYXN0J10pIHtcbiAgICAgICAgbFMuc3RvcmUuZ2V0KCdhZGRJbnRlcmFjdGlvbicpKGluc3RhbmNlKTtcbiAgICB9XG5cbiAgICAvLyBjbGVhbiB1cCB0aGUgZXZlbnQgbGlzdGVuZXIgYnkgcmVtb3ZpbmcgdGhlIHRhcmdldCBmcm9tIHRoZSBpbnRlcmFjdGlvbiBhcnJheVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGxvY2FsU3RhdGUgPSBnZXRMb2NhbFN0YXRlKGluc3RhbmNlKTtcbiAgICAgICAgaWYgKGxvY2FsU3RhdGUgJiYgbG9jYWxTdGF0ZS5ldmVudENvdW50KSB7XG4gICAgICAgICAgICBsb2NhbFN0YXRlLnN0b3JlLmdldCgncmVtb3ZlSW50ZXJhY3Rpb24nKShpbnN0YW5jZVsndXVpZCddKTtcbiAgICAgICAgfVxuICAgIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBldmVudFRvSGFuZGxlcihjYWxsYmFjazogKGV2ZW50OiBhbnkpID0+IHZvaWQsIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgICByZXR1cm4gKGV2ZW50OiBQYXJhbWV0ZXJzPEV4Y2x1ZGU8Tmd0RXZlbnRIYW5kbGVyc1sodHlwZW9mIHN1cHBvcnRlZEV2ZW50cylbbnVtYmVyXV0sIHVuZGVmaW5lZD4+WzBdKSA9PiB7XG4gICAgICAgIGNhbGxiYWNrKGV2ZW50KTtcbiAgICAgICAgY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24ga2ViYWJUb1Bhc2NhbChzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgLy8gc3BsaXQgdGhlIHN0cmluZyBhdCBlYWNoIGh5cGhlblxuICAgIGNvbnN0IHBhcnRzID0gc3RyLnNwbGl0KCctJyk7XG5cbiAgICAvLyBtYXAgb3ZlciB0aGUgcGFydHMsIGNhcGl0YWxpemluZyB0aGUgZmlyc3QgbGV0dGVyIG9mIGVhY2ggcGFydFxuICAgIGNvbnN0IHBhc2NhbFBhcnRzID0gcGFydHMubWFwKChwYXJ0KSA9PiB7XG4gICAgICAgIHJldHVybiBwYXJ0LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgcGFydC5zbGljZSgxKTtcbiAgICB9KTtcblxuICAgIC8vIGpvaW4gdGhlIHBhcnRzIHRvZ2V0aGVyIHRvIGNyZWF0ZSB0aGUgZmluYWwgUGFzY2FsQ2FzZSBzdHJpbmdcbiAgICByZXR1cm4gcGFzY2FsUGFydHMuam9pbignJyk7XG59XG4iXX0=
|
|
177
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUvc3JjL2xpYi9yZW5kZXJlci91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFaEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsYUFBYSxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDdEUsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUlqQyxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUc7SUFDM0IsVUFBVSxFQUFFLFlBQVk7SUFDeEIsYUFBYSxFQUFFLGVBQWU7SUFDOUIsU0FBUyxFQUFFLFdBQVc7Q0FDaEIsQ0FBQztBQUVYLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHO0lBQzlCLFFBQVEsRUFBRSxhQUFhO0lBQ3ZCLGVBQWUsRUFBRSxVQUFVO0lBQzNCLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLEtBQUssRUFBRSxVQUFVO0lBQ2pCLEdBQUcsRUFBRSxLQUFLO0NBQ0osQ0FBQztBQUVYLE1BQU0sY0FBYyxHQUFHO0lBQ25CLGFBQWEsRUFBRSxjQUFjO0lBQzdCLFlBQVksRUFBRSxhQUFhO0lBQzNCLFlBQVksRUFBRSxhQUFhO0NBQ3JCLENBQUM7QUFFWCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsTUFBdUIsRUFBRSxLQUFzQjtJQUM1RSxNQUFNLEdBQUcsR0FBRyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbEMsTUFBTSxHQUFHLEdBQUcsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRWpDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUU7UUFDZCxNQUFNLElBQUksS0FBSyxDQUFDLDZEQUE2RCxDQUFDLENBQUM7S0FDbEY7SUFFRCw2REFBNkQ7SUFDN0QsSUFBSSxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBRWxCLDZDQUE2QztJQUM3QyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRTtRQUNaLEdBQUcsQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQztLQUN6QjtJQUVELElBQUksR0FBRyxDQUFDLE1BQU0sRUFBRTtRQUNaLE1BQU0sVUFBVSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUM7UUFFOUIsSUFBSSxPQUFPLFVBQVUsS0FBSyxVQUFVLEVBQUU7WUFDbEMsTUFBTSxhQUFhLEdBQUcsVUFBVSxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzNELElBQUksYUFBYTtnQkFBRSxHQUFHLENBQUMsY0FBYyxHQUFHLGFBQWEsQ0FBQztTQUN6RDthQUFNO1lBQ0gsd0NBQXdDO1lBQ3hDLElBQUksVUFBVSxDQUFDLENBQUMsQ0FBQyxLQUFLLE1BQU0sRUFBRTtnQkFDMUIsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzFCLE9BQU87YUFDVjtZQUVELHdCQUF3QjtZQUN4QixJQUNJLFVBQVUsQ0FBQyxDQUFDLENBQUMsS0FBSyxVQUFVO2dCQUM1QixVQUFVLENBQUMsQ0FBQyxDQUFDO2dCQUNiLE9BQU8sTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLFFBQVE7Z0JBQ3pDLEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO2dCQUNsQixDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQ3BDO2dCQUNFLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUM7YUFDM0I7WUFFRCxTQUFTO1lBQ1QsSUFBSSxHQUFHLENBQUMsS0FBSyxFQUFFO2dCQUNYLEdBQUcsQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO2dCQUNwQixrR0FBa0c7Z0JBQ2xHLElBQUksS0FBSyxDQUFDLGdCQUFnQixzQ0FBNkIsS0FBSyxTQUFTO29CQUFFLE9BQU87Z0JBQzlFLE1BQU0sQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLGdCQUFnQixzQ0FBNkIsRUFBRSxVQUFVLENBQUMsQ0FBQzthQUNuRjtpQkFBTTtnQkFDSCxNQUFNLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxVQUFVLENBQUMsQ0FBQzthQUNyQztZQUNELGFBQWE7WUFDYixHQUFHLENBQUMsY0FBYyxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7U0FDeEY7S0FDSjtTQUFNLElBQUksRUFBRSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFO1FBQ2xELE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbEIsS0FBSyxHQUFHLElBQUksQ0FBQztLQUNoQjtJQUVELEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUVqRCxHQUFHLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztJQUVwQixJQUFJLEdBQUcsQ0FBQyxXQUFXLEVBQUU7UUFDakIsR0FBRyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7S0FDakQ7SUFFRCxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMxQixrQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUMvQixDQUFDO0FBRUQsTUFBTSxVQUFVLGdCQUFnQixDQUFDLE1BQXVCLEVBQUUsS0FBc0IsRUFBRSxPQUFpQjtJQUMvRixNQUFNLEdBQUcsR0FBRyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbEMsTUFBTSxHQUFHLEdBQUcsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRWpDLG1CQUFtQjtJQUNuQixHQUFHLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztJQUVsQiwyQkFBMkI7SUFDM0IsSUFBSSxHQUFHLENBQUMsT0FBTyxFQUFFO1FBQ2IsR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUM7S0FDaEM7SUFFRCxJQUFJLEdBQUcsQ0FBQyxVQUFVLEVBQUU7UUFDaEIsR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsWUFBWSxDQUFDLENBQUM7S0FDbkM7SUFFRCxJQUFJLEdBQUcsQ0FBQyxNQUFNLEVBQUU7UUFDWixNQUFNLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7S0FDckM7U0FBTSxJQUFJLEVBQUUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUNsRCxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JCLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxLQUFLLElBQUksR0FBRyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztLQUN0RDtJQUVELE1BQU0sV0FBVyxHQUFHLEdBQUcsQ0FBQyxTQUFTLENBQUM7SUFDbEMsSUFBSSxDQUFDLFdBQVcsRUFBRTtRQUNkLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsS0FBSyxJQUFJLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2pFLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztLQUN6RDtJQUVELFVBQVU7SUFDVixJQUFJLENBQUMsV0FBVyxJQUFJLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUU7UUFDdEQsY0FBYyxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7S0FDNUM7SUFFRCxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUMvQixDQUFDO0FBRUQsU0FBUyxvQkFBb0IsQ0FBQyxLQUF3QixFQUFFLE1BQXVCLEVBQUUsT0FBZ0I7SUFDN0YsSUFBSSxLQUFLO1FBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO0FBQ3ZGLENBQUM7QUFFRCxNQUFNLFVBQVUsaUJBQWlCLENBQzdCLFFBQXlCLEVBQ3pCLFFBQWdCLEVBQ2hCLFNBQWlCLEVBQ2pCLFFBQThCLEVBQzlCLEdBQXNCO0lBRXRCLE1BQU0sRUFBRSxHQUFHLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNuQyxJQUFJLFNBQVMsS0FBSyxjQUFjLENBQUMsYUFBYSxFQUFFO1FBQzVDLE9BQU8sRUFBRSxDQUFDLEtBQUs7YUFDVixHQUFHLENBQUMsVUFBVSxDQUFDO2FBQ2YsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsUUFBUSxJQUFJLEVBQUUsQ0FBQyxRQUFRLElBQUksQ0FBQyxDQUFDLENBQUM7S0FDbEc7SUFFRCxJQUFJLFNBQVMsS0FBSyxjQUFjLENBQUMsWUFBWSxJQUFJLFNBQVMsS0FBSyxjQUFjLENBQUMsWUFBWSxFQUFFO1FBQ3hGLElBQUksQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLEVBQUU7WUFDaEIsRUFBRSxDQUFDLFNBQVMsQ0FBQyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7U0FDdEM7UUFDRCxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLEVBQUUsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQy9DLE9BQU8sR0FBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7S0FDckM7SUFFRCxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRTtRQUNkLEVBQUUsQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0tBQ3BCO0lBRUQsb0hBQW9IO0lBQ3BILE1BQU0sZUFBZSxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsU0FBcUMsQ0FBQyxDQUFDO0lBQzNFLHdCQUF3QjtJQUN4QixNQUFNLGVBQWUsR0FBb0IsQ0FBQyxLQUFLLEVBQUUsRUFBRTtRQUMvQyxJQUFJLGVBQWU7WUFBRSxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDNUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3BCLENBQUMsQ0FBQztJQUVGLEVBQUUsQ0FBQyxRQUFRLEdBQUc7UUFDVixHQUFHLEVBQUUsQ0FBQyxRQUFRO1FBQ2QsQ0FBQyxTQUFTLENBQUMsRUFBRSxjQUFjLENBQUMsZUFBZSxFQUFFLEdBQUcsQ0FBQztLQUNwRCxDQUFDO0lBQ0YsZ0NBQWdDO0lBQ2hDLEVBQUUsQ0FBQyxVQUFVLElBQUksQ0FBQyxDQUFDO0lBQ25CLHVIQUF1SDtJQUN2SCwyQ0FBMkM7SUFDM0MsSUFBSSxFQUFFLENBQUMsVUFBVSxLQUFLLENBQUMsSUFBSSxRQUFRLENBQUMsU0FBUyxDQUFDLEVBQUU7UUFDNUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQztLQUM1QztJQUVELGdGQUFnRjtJQUNoRixPQUFPLEdBQUcsRUFBRTtRQUNSLE1BQU0sVUFBVSxHQUFHLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMzQyxJQUFJLFVBQVUsSUFBSSxVQUFVLENBQUMsVUFBVSxFQUFFO1lBQ3JDLFVBQVUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7U0FDL0Q7SUFDTCxDQUFDLENBQUM7QUFDTixDQUFDO0FBRUQsTUFBTSxVQUFVLGNBQWMsQ0FBQyxRQUE4QixFQUFFLEdBQXNCO0lBQ2pGLE9BQU8sQ0FBQyxLQUE0RixFQUFFLEVBQUU7UUFDcEcsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hCLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN4QixDQUFDLENBQUM7QUFDTixDQUFDO0FBRUQsTUFBTSxVQUFVLGFBQWEsQ0FBQyxHQUFXO0lBQ3JDLGtDQUFrQztJQUNsQyxNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBRTdCLGlFQUFpRTtJQUNqRSxNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7UUFDbkMsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEQsQ0FBQyxDQUFDLENBQUM7SUFFSCxnRUFBZ0U7SUFDaEUsT0FBTyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ2hDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyByZW1vdmVJbnRlcmFjdGl2aXR5IH0gZnJvbSAnLi4vZXZlbnRzJztcbmltcG9ydCB0eXBlIHsgTmd0RXZlbnRIYW5kbGVycywgTmd0SW5zdGFuY2VOb2RlIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgYXR0YWNoLCBkZXRhY2ggfSBmcm9tICcuLi91dGlscy9hdHRhY2gnO1xuaW1wb3J0IHsgZ2V0TG9jYWxTdGF0ZSwgaW52YWxpZGF0ZUluc3RhbmNlIH0gZnJvbSAnLi4vdXRpbHMvaW5zdGFuY2UnO1xuaW1wb3J0IHsgaXMgfSBmcm9tICcuLi91dGlscy9pcyc7XG5pbXBvcnQgeyBzdXBwb3J0ZWRFdmVudHMgfSBmcm9tICcuLi93ZWIvZXZlbnRzJztcbmltcG9ydCB7IE5ndFJlbmRlcmVyQ2xhc3NJZCB9IGZyb20gJy4vZW51bXMnO1xuXG5leHBvcnQgY29uc3QgU1BFQ0lBTF9ET01fVEFHID0ge1xuICAgIE5HVF9QT1JUQUw6ICduZ3QtcG9ydGFsJyxcbiAgICBOR1RfUFJJTUlUSVZFOiAnbmd0LXByaW1pdGl2ZScsXG4gICAgTkdUX1ZBTFVFOiAnbmd0LXZhbHVlJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCBjb25zdCBTUEVDSUFMX1BST1BFUlRJRVMgPSB7XG4gICAgQ09NUE9VTkQ6ICduZ3RDb21wb3VuZCcsXG4gICAgUkVOREVSX1BSSU9SSVRZOiAncHJpb3JpdHknLFxuICAgIEFUVEFDSDogJ2F0dGFjaCcsXG4gICAgVkFMVUU6ICdyYXdWYWx1ZScsXG4gICAgUkVGOiAncmVmJyxcbn0gYXMgY29uc3Q7XG5cbmNvbnN0IFNQRUNJQUxfRVZFTlRTID0ge1xuICAgIEJFRk9SRV9SRU5ERVI6ICdiZWZvcmVSZW5kZXInLFxuICAgIEFGVEVSX1VQREFURTogJ2FmdGVyVXBkYXRlJyxcbiAgICBBRlRFUl9BVFRBQ0g6ICdhZnRlckF0dGFjaCcsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgZnVuY3Rpb24gYXR0YWNoVGhyZWVDaGlsZChwYXJlbnQ6IE5ndEluc3RhbmNlTm9kZSwgY2hpbGQ6IE5ndEluc3RhbmNlTm9kZSkge1xuICAgIGNvbnN0IHBMUyA9IGdldExvY2FsU3RhdGUocGFyZW50KTtcbiAgICBjb25zdCBjTFMgPSBnZXRMb2NhbFN0YXRlKGNoaWxkKTtcblxuICAgIGlmICghcExTIHx8ICFjTFMpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBbTkdUXSBUSFJFRSBpbnN0YW5jZXMgbmVlZCB0byBiZSBwcmVwYXJlZCB3aXRoIGxvY2FsIHN0YXRlLmApO1xuICAgIH1cblxuICAgIC8vIHdoZXRoZXIgdGhlIGNoaWxkIGlzIGFkZGVkIHRvIHRoZSBwYXJlbnQgd2l0aCBwYXJlbnQuYWRkKClcbiAgICBsZXQgYWRkZWQgPSBmYWxzZTtcblxuICAgIC8vIGFzc2lnbiBzdG9yZSBvbiBjaGlsZCBpZiBub3QgYWxyZWFkeSBleGlzdFxuICAgIGlmICghY0xTLnN0b3JlKSB7XG4gICAgICAgIGNMUy5zdG9yZSA9IHBMUy5zdG9yZTtcbiAgICB9XG5cbiAgICBpZiAoY0xTLmF0dGFjaCkge1xuICAgICAgICBjb25zdCBhdHRhY2hQcm9wID0gY0xTLmF0dGFjaDtcblxuICAgICAgICBpZiAodHlwZW9mIGF0dGFjaFByb3AgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIGNvbnN0IGF0dGFjaENsZWFuVXAgPSBhdHRhY2hQcm9wKHBhcmVudCwgY2hpbGQsIGNMUy5zdG9yZSk7XG4gICAgICAgICAgICBpZiAoYXR0YWNoQ2xlYW5VcCkgY0xTLnByZXZpb3VzQXR0YWNoID0gYXR0YWNoQ2xlYW5VcDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIHdlIHNraXAgYXR0YWNoIG5vbmUgaWYgc2V0IGV4cGxpY2l0bHlcbiAgICAgICAgICAgIGlmIChhdHRhY2hQcm9wWzBdID09PSAnbm9uZScpIHtcbiAgICAgICAgICAgICAgICBpbnZhbGlkYXRlSW5zdGFuY2UoY2hpbGQpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gaGFuZGxlIG1hdGVyaWFsIGFycmF5XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgYXR0YWNoUHJvcFswXSA9PT0gJ21hdGVyaWFsJyAmJlxuICAgICAgICAgICAgICAgIGF0dGFjaFByb3BbMV0gJiZcbiAgICAgICAgICAgICAgICB0eXBlb2YgTnVtYmVyKGF0dGFjaFByb3BbMV0pID09PSAnbnVtYmVyJyAmJlxuICAgICAgICAgICAgICAgIGlzLm1hdGVyaWFsKGNoaWxkKSAmJlxuICAgICAgICAgICAgICAgICFBcnJheS5pc0FycmF5KHBhcmVudFsnbWF0ZXJpYWwnXSlcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHBhcmVudFsnbWF0ZXJpYWwnXSA9IFtdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBhdHRhY2hcbiAgICAgICAgICAgIGlmIChjTFMuaXNSYXcpIHtcbiAgICAgICAgICAgICAgICBjTFMucGFyZW50ID0gcGFyZW50O1xuICAgICAgICAgICAgICAgIC8vIGF0IHRoaXMgcG9pbnQgd2UgZG9uJ3QgaGF2ZSByYXdWYWx1ZSB5ZXQsIHNvIHdlIGJhaWwgYW5kIHdhaXQgdW50aWwgdGhlIFJlbmRlcmVyIHJlY2FsbHMgYXR0YWNoXG4gICAgICAgICAgICAgICAgaWYgKGNoaWxkLl9fbmd0X3JlbmRlcmVyX19bTmd0UmVuZGVyZXJDbGFzc0lkLnJhd1ZhbHVlXSA9PT0gdW5kZWZpbmVkKSByZXR1cm47XG4gICAgICAgICAgICAgICAgYXR0YWNoKHBhcmVudCwgY2hpbGQuX19uZ3RfcmVuZGVyZXJfX1tOZ3RSZW5kZXJlckNsYXNzSWQucmF3VmFsdWVdLCBhdHRhY2hQcm9wKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgYXR0YWNoKHBhcmVudCwgY2hpbGQsIGF0dGFjaFByb3ApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gc2F2ZSB2YWx1ZVxuICAgICAgICAgICAgY0xTLnByZXZpb3VzQXR0YWNoID0gYXR0YWNoUHJvcC5yZWR1Y2UoKHZhbHVlLCBwcm9wZXJ0eSkgPT4gdmFsdWVbcHJvcGVydHldLCBwYXJlbnQpO1xuICAgICAgICB9XG4gICAgfSBlbHNlIGlmIChpcy5vYmplY3QzRChwYXJlbnQpICYmIGlzLm9iamVjdDNEKGNoaWxkKSkge1xuICAgICAgICBwYXJlbnQuYWRkKGNoaWxkKTtcbiAgICAgICAgYWRkZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIHBMUy5hZGQoY2hpbGQsIGFkZGVkID8gJ29iamVjdHMnIDogJ25vbk9iamVjdHMnKTtcblxuICAgIGNMUy5wYXJlbnQgPSBwYXJlbnQ7XG5cbiAgICBpZiAoY0xTLmFmdGVyQXR0YWNoKSB7XG4gICAgICAgIGNMUy5hZnRlckF0dGFjaC5lbWl0KHsgcGFyZW50LCBub2RlOiBjaGlsZCB9KTtcbiAgICB9XG5cbiAgICBpbnZhbGlkYXRlSW5zdGFuY2UoY2hpbGQpO1xuICAgIGludmFsaWRhdGVJbnN0YW5jZShwYXJlbnQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlVGhyZWVDaGlsZChwYXJlbnQ6IE5ndEluc3RhbmNlTm9kZSwgY2hpbGQ6IE5ndEluc3RhbmNlTm9kZSwgZGlzcG9zZT86IGJvb2xlYW4pIHtcbiAgICBjb25zdCBwTFMgPSBnZXRMb2NhbFN0YXRlKHBhcmVudCk7XG4gICAgY29uc3QgY0xTID0gZ2V0TG9jYWxTdGF0ZShjaGlsZCk7XG5cbiAgICAvLyBjbGVhciBwYXJlbnQgcmVmXG4gICAgY0xTLnBhcmVudCA9IG51bGw7XG5cbiAgICAvLyByZW1vdmUgY2hpbGQgZnJvbSBwYXJlbnRcbiAgICBpZiAocExTLm9iamVjdHMpIHtcbiAgICAgICAgcExTLnJlbW92ZShjaGlsZCwgJ29iamVjdHMnKTtcbiAgICB9XG5cbiAgICBpZiAocExTLm5vbk9iamVjdHMpIHtcbiAgICAgICAgcExTLnJlbW92ZShjaGlsZCwgJ25vbk9iamVjdHMnKTtcbiAgICB9XG5cbiAgICBpZiAoY0xTLmF0dGFjaCkge1xuICAgICAgICBkZXRhY2gocGFyZW50LCBjaGlsZCwgY0xTLmF0dGFjaCk7XG4gICAgfSBlbHNlIGlmIChpcy5vYmplY3QzRChwYXJlbnQpICYmIGlzLm9iamVjdDNEKGNoaWxkKSkge1xuICAgICAgICBwYXJlbnQucmVtb3ZlKGNoaWxkKTtcbiAgICAgICAgcmVtb3ZlSW50ZXJhY3Rpdml0eShjTFMuc3RvcmUgfHwgcExTLnN0b3JlLCBjaGlsZCk7XG4gICAgfVxuXG4gICAgY29uc3QgaXNQcmltaXRpdmUgPSBjTFMucHJpbWl0aXZlO1xuICAgIGlmICghaXNQcmltaXRpdmUpIHtcbiAgICAgICAgcmVtb3ZlVGhyZWVSZWN1cnNpdmUoY0xTLm9iamVjdHM/LnZhbHVlIHx8IFtdLCBjaGlsZCwgISFkaXNwb3NlKTtcbiAgICAgICAgcmVtb3ZlVGhyZWVSZWN1cnNpdmUoY2hpbGQuY2hpbGRyZSwgY2hpbGQsICEhZGlzcG9zZSk7XG4gICAgfVxuXG4gICAgLy8gZGlzcG9zZVxuICAgIGlmICghaXNQcmltaXRpdmUgJiYgY2hpbGRbJ2Rpc3Bvc2UnXSAmJiAhaXMuc2NlbmUoY2hpbGQpKSB7XG4gICAgICAgIHF1ZXVlTWljcm90YXNrKCgpID0+IGNoaWxkWydkaXNwb3NlJ10oKSk7XG4gICAgfVxuXG4gICAgaW52YWxpZGF0ZUluc3RhbmNlKHBhcmVudCk7XG59XG5cbmZ1bmN0aW9uIHJlbW92ZVRocmVlUmVjdXJzaXZlKGFycmF5OiBOZ3RJbnN0YW5jZU5vZGVbXSwgcGFyZW50OiBOZ3RJbnN0YW5jZU5vZGUsIGRpc3Bvc2U6IGJvb2xlYW4pIHtcbiAgICBpZiAoYXJyYXkpIFsuLi5hcnJheV0uZm9yRWFjaCgoY2hpbGQpID0+IHJlbW92ZVRocmVlQ2hpbGQocGFyZW50LCBjaGlsZCwgZGlzcG9zZSkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvY2Vzc1RocmVlRXZlbnQoXG4gICAgaW5zdGFuY2U6IE5ndEluc3RhbmNlTm9kZSxcbiAgICBwcmlvcml0eTogbnVtYmVyLFxuICAgIGV2ZW50TmFtZTogc3RyaW5nLFxuICAgIGNhbGxiYWNrOiAoZXZlbnQ6IGFueSkgPT4gdm9pZCxcbiAgICBjZHI6IENoYW5nZURldGVjdG9yUmVmXG4pOiAoKSA9PiB2b2lkIHtcbiAgICBjb25zdCBsUyA9IGdldExvY2FsU3RhdGUoaW5zdGFuY2UpO1xuICAgIGlmIChldmVudE5hbWUgPT09IFNQRUNJQUxfRVZFTlRTLkJFRk9SRV9SRU5ERVIpIHtcbiAgICAgICAgcmV0dXJuIGxTLnN0b3JlXG4gICAgICAgICAgICAuZ2V0KCdpbnRlcm5hbCcpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChzdGF0ZSkgPT4gY2FsbGJhY2soeyBzdGF0ZSwgb2JqZWN0OiBpbnN0YW5jZSB9KSwgcHJpb3JpdHkgfHwgbFMucHJpb3JpdHkgfHwgMCk7XG4gICAgfVxuXG4gICAgaWYgKGV2ZW50TmFtZSA9PT0gU1BFQ0lBTF9FVkVOVFMuQUZURVJfVVBEQVRFIHx8IGV2ZW50TmFtZSA9PT0gU1BFQ0lBTF9FVkVOVFMuQUZURVJfQVRUQUNIKSB7XG4gICAgICAgIGlmICghbFNbZXZlbnROYW1lXSkge1xuICAgICAgICAgICAgbFNbZXZlbnROYW1lXSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzdWIgPSBsU1tldmVudE5hbWVdPy5zdWJzY3JpYmUoY2FsbGJhY2spO1xuICAgICAgICByZXR1cm4gc3ViIS51bnN1YnNjcmliZS5iaW5kKHN1Yik7XG4gICAgfVxuXG4gICAgaWYgKCFsUy5oYW5kbGVycykge1xuICAgICAgICBsUy5oYW5kbGVycyA9IHt9O1xuICAgIH1cblxuICAgIC8vIHRyeSB0byBnZXQgdGhlIHByZXZpb3VzIGhhbmRsZXIuIGNvbXBvdW5kIG1pZ2h0IGhhdmUgb25lLCB0aGUgVEhSRUUgb2JqZWN0IG1pZ2h0IGFsc28gaGF2ZSBvbmUgd2l0aCB0aGUgc2FtZSBuYW1lXG4gICAgY29uc3QgcHJldmlvdXNIYW5kbGVyID0gbFMuaGFuZGxlcnNbZXZlbnROYW1lIGFzIGtleW9mIHR5cGVvZiBsUy5oYW5kbGVyc107XG4gICAgLy8gcmVhZGp1c3QgdGhlIGNhbGxiYWNrXG4gICAgY29uc3QgdXBkYXRlZENhbGxiYWNrOiB0eXBlb2YgY2FsbGJhY2sgPSAoZXZlbnQpID0+IHtcbiAgICAgICAgaWYgKHByZXZpb3VzSGFuZGxlcikgcHJldmlvdXNIYW5kbGVyKGV2ZW50KTtcbiAgICAgICAgY2FsbGJhY2soZXZlbnQpO1xuICAgIH07XG5cbiAgICBsUy5oYW5kbGVycyA9IHtcbiAgICAgICAgLi4ubFMuaGFuZGxlcnMsXG4gICAgICAgIFtldmVudE5hbWVdOiBldmVudFRvSGFuZGxlcih1cGRhdGVkQ2FsbGJhY2ssIGNkciksXG4gICAgfTtcbiAgICAvLyBpbmNyZW1lbnQgdGhlIGNvdW50IGV2ZXJ5dGltZVxuICAgIGxTLmV2ZW50Q291bnQgKz0gMTtcbiAgICAvLyBidXQgb25seSBhZGQgdGhlIGluc3RhbmNlICh0YXJnZXQpIHRvIHRoZSBpbnRlcmFjdGlvbiBhcnJheSAoc28gdGhhdCBpdCBpcyBoYW5kbGVkIGJ5IHRoZSBFdmVudE1hbmFnZXIgd2l0aCBSYXljYXN0KVxuICAgIC8vIHRoZSBmaXJzdCB0aW1lIGV2ZW50Q291bnQgaXMgaW5jcmVtZW50ZWRcbiAgICBpZiAobFMuZXZlbnRDb3VudCA9PT0gMSAmJiBpbnN0YW5jZVsncmF5Y2FzdCddKSB7XG4gICAgICAgIGxTLnN0b3JlLmdldCgnYWRkSW50ZXJhY3Rpb24nKShpbnN0YW5jZSk7XG4gICAgfVxuXG4gICAgLy8gY2xlYW4gdXAgdGhlIGV2ZW50IGxpc3RlbmVyIGJ5IHJlbW92aW5nIHRoZSB0YXJnZXQgZnJvbSB0aGUgaW50ZXJhY3Rpb24gYXJyYXlcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICBjb25zdCBsb2NhbFN0YXRlID0gZ2V0TG9jYWxTdGF0ZShpbnN0YW5jZSk7XG4gICAgICAgIGlmIChsb2NhbFN0YXRlICYmIGxvY2FsU3RhdGUuZXZlbnRDb3VudCkge1xuICAgICAgICAgICAgbG9jYWxTdGF0ZS5zdG9yZS5nZXQoJ3JlbW92ZUludGVyYWN0aW9uJykoaW5zdGFuY2VbJ3V1aWQnXSk7XG4gICAgICAgIH1cbiAgICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXZlbnRUb0hhbmRsZXIoY2FsbGJhY2s6IChldmVudDogYW55KSA9PiB2b2lkLCBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7XG4gICAgcmV0dXJuIChldmVudDogUGFyYW1ldGVyczxFeGNsdWRlPE5ndEV2ZW50SGFuZGxlcnNbKHR5cGVvZiBzdXBwb3J0ZWRFdmVudHMpW251bWJlcl1dLCB1bmRlZmluZWQ+PlswXSkgPT4ge1xuICAgICAgICBjYWxsYmFjayhldmVudCk7XG4gICAgICAgIGNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGtlYmFiVG9QYXNjYWwoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIC8vIHNwbGl0IHRoZSBzdHJpbmcgYXQgZWFjaCBoeXBoZW5cbiAgICBjb25zdCBwYXJ0cyA9IHN0ci5zcGxpdCgnLScpO1xuXG4gICAgLy8gbWFwIG92ZXIgdGhlIHBhcnRzLCBjYXBpdGFsaXppbmcgdGhlIGZpcnN0IGxldHRlciBvZiBlYWNoIHBhcnRcbiAgICBjb25zdCBwYXNjYWxQYXJ0cyA9IHBhcnRzLm1hcCgocGFydCkgPT4ge1xuICAgICAgICByZXR1cm4gcGFydC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHBhcnQuc2xpY2UoMSk7XG4gICAgfSk7XG5cbiAgICAvLyBqb2luIHRoZSBwYXJ0cyB0b2dldGhlciB0byBjcmVhdGUgdGhlIGZpbmFsIFBhc2NhbENhc2Ugc3RyaW5nXG4gICAgcmV0dXJuIHBhc2NhbFBhcnRzLmpvaW4oJycpO1xufVxuIl19
|
|
@@ -290,7 +290,7 @@ export class NgtStore extends NgtRxStore {
|
|
|
290
290
|
// Safely set color management if available.
|
|
291
291
|
// Avoid accessing THREE.ColorManagement to play nice with older versions
|
|
292
292
|
if (THREE.ColorManagement)
|
|
293
|
-
THREE.ColorManagement.legacyMode =
|
|
293
|
+
THREE.ColorManagement.legacyMode = legacy ?? true;
|
|
294
294
|
const outputEncoding = linear ? THREE.LinearEncoding : THREE.sRGBEncoding;
|
|
295
295
|
const toneMapping = flat ? THREE.NoToneMapping : THREE.ACESFilmicToneMapping;
|
|
296
296
|
if (gl.outputEncoding !== outputEncoding)
|
|
@@ -381,4 +381,4 @@ function computeInitialSize(canvas, defaultSize) {
|
|
|
381
381
|
}
|
|
382
382
|
return { width: 0, height: 0, top: 0, left: 0 };
|
|
383
383
|
}
|
|
384
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUvc3JjL2xpYi9zdG9yZXMvc3RvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNoRCxPQUFPLEtBQUssS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMvQixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBV3JDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDNUMsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNqQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsbUJBQW1CLEVBQUUsT0FBTyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sWUFBWSxDQUFDOztBQUV4QyxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsSUFBSSxHQUFHLEVBQWlDLENBQUM7QUFDckUsTUFBTSxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsR0FBRyxVQUFVLENBQUMsWUFBWSxDQUFDLENBQUM7QUFDekQsTUFBTSxZQUFZLEdBQUcsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQWtCLENBQUM7QUFHM0UsTUFBTSxPQUFPLFFBQVMsU0FBUSxVQUFvQjtJQURsRDs7UUFFcUIsZ0JBQVcsR0FBRyxNQUFNLENB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Q0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNyRCxDQUFDOztxR0FqWlEsUUFBUTt5R0FBUixRQUFROzJGQUFSLFFBQVE7a0JBRHBCLFVBQVU7O0FBcVpYLFNBQVMsa0JBQWtCLENBQUMsTUFBaUQsRUFBRSxXQUFxQjtJQUNoRyxJQUFJLFdBQVcsRUFBRTtRQUNiLE9BQU8sV0FBVyxDQUFDO0tBQ3RCO0lBRUQsSUFBSSxNQUFNLFlBQVksaUJBQWlCLElBQUksTUFBTSxDQUFDLGFBQWEsRUFBRTtRQUM3RCxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQ2xGLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsQ0FBQztLQUN2QztJQUVELE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUM7QUFDcEQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgc2VsZWN0U2xpY2UgfSBmcm9tICdAcngtYW5ndWxhci9zdGF0ZSc7XG5pbXBvcnQgKiBhcyBUSFJFRSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgeyBjcmVhdGVMb29wIH0gZnJvbSAnLi4vbG9vcCc7XG5pbXBvcnQgdHlwZSB7XG4gICAgTmd0QmVmb3JlUmVuZGVyUmVjb3JkLFxuICAgIE5ndENhbnZhc0lucHV0cyxcbiAgICBOZ3REcHIsXG4gICAgTmd0RXF1Q29uZmlnLFxuICAgIE5ndEV2ZW50TWFuYWdlcixcbiAgICBOZ3RTaXplLFxuICAgIE5ndFN0YXRlLFxuICAgIE5ndFZpZXdwb3J0LFxufSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBhcHBseVByb3BzIH0gZnJvbSAnLi4vdXRpbHMvYXBwbHktcHJvcHMnO1xuaW1wb3J0IHsgcHJlcGFyZSB9IGZyb20gJy4uL3V0aWxzL2luc3RhbmNlJztcbmltcG9ydCB7IGlzIH0gZnJvbSAnLi4vdXRpbHMvaXMnO1xuaW1wb3J0IHsgbWFrZURlZmF1bHRDYW1lcmEsIG1ha2VEZWZhdWx0UmVuZGVyZXIsIG1ha2VEcHIgfSBmcm9tICcuLi91dGlscy9tYWtlJztcbmltcG9ydCB7IGNoZWNrTmVlZHNVcGRhdGUsIHVwZGF0ZUNhbWVyYSB9IGZyb20gJy4uL3V0aWxzL3VwZGF0ZSc7XG5pbXBvcnQgeyBOZ3RSeFN0b3JlIH0gZnJvbSAnLi9yeC1zdG9yZSc7XG5cbmV4cG9ydCBjb25zdCByb290U3RhdGVNYXAgPSBuZXcgTWFwPEVsZW1lbnQsIE5ndFJ4U3RvcmU8Tmd0U3RhdGU+PigpO1xuY29uc3QgeyBpbnZhbGlkYXRlLCBhZHZhbmNlIH0gPSBjcmVhdGVMb29wKHJvb3RTdGF0ZU1hcCk7XG5jb25zdCBzaGFsbG93TG9vc2UgPSB7IG9iamVjdHM6ICdzaGFsbG93Jywgc3RyaWN0OiBmYWxzZSB9IGFzIE5ndEVxdUNvbmZpZztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE5ndFN0b3JlIGV4dGVuZHMgTmd0UnhTdG9yZTxOZ3RTdGF0ZT4ge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcGFyZW50U3RvcmUgPSBpbmplY3QoTmd0U3RvcmUsIHsgb3B0aW9uYWw6IHRydWUsIHNraXBTZWxmOiB0cnVlIH0pO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgd2luZG93ID0gaW5qZWN0KERPQ1VNRU5UKS5kZWZhdWx0VmlldyBhcyBXaW5kb3cgJiB0eXBlb2YgZ2xvYmFsVGhpcztcblxuICAgIGlzSW5pdCA9IGZhbHNlO1xuXG4gICAgaW5pdCgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzSW5pdCkge1xuICAgICAgICAgICAgY29uc3QgcG9zaXRpb24gPSBuZXcgVEhSRUUuVmVjdG9yMygpO1xuICAgICAgICAgICAgY29uc3QgZGVmYXVsdFRhcmdldCA9IG5ldyBUSFJFRS5WZWN0b3IzKCk7XG4gICAgICAgICAgICBjb25zdCB0ZW1wVGFyZ2V0ID0gbmV3IFRIUkVFLlZlY3RvcjMoKTtcblxuICAgICAgICAgICAgY29uc3QgZ2V0Q3VycmVudFZpZXdwb3J0ID0gKFxuICAgICAgICAgICAgICAgIGNhbWVyYSA9IHRoaXMuZ2V0KCdjYW1lcmEnKSxcbiAgICAgICAgICAgICAgICB0YXJnZXQ6IFRIUkVFLlZlY3RvcjMgfCBQYXJhbWV0ZXJzPFRIUkVFLlZlY3RvcjNbJ3NldCddPiA9IGRlZmF1bHRUYXJnZXQsXG4gICAgICAgICAgICAgICAgc2l6ZSA9IHRoaXMuZ2V0KCdzaXplJylcbiAgICAgICAgICAgICk6IE9taXQ8Tmd0Vmlld3BvcnQsICdkcHInIHwgJ2luaXRpYWxEcHInPiA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyB3aWR0aCwgaGVpZ2h0LCB0b3AsIGxlZnQgfSA9IHNpemU7XG4gICAgICAgICAgICAgICAgY29uc3QgYXNwZWN0ID0gd2lkdGggLyBoZWlnaHQ7XG4gICAgICAgICAgICAgICAgaWYgKHRhcmdldCBpbnN0YW5jZW9mIFRIUkVFLlZlY3RvcjMpIHRlbXBUYXJnZXQuY29weSh0YXJnZXQpO1xuICAgICAgICAgICAgICAgIGVsc2UgdGVtcFRhcmdldC5zZXQoLi4udGFyZ2V0KTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGRpc3RhbmNlID0gY2FtZXJhLmdldFdvcmxkUG9zaXRpb24ocG9zaXRpb24pLmRpc3RhbmNlVG8odGVtcFRhcmdldCk7XG5cbiAgICAgICAgICAgICAgICBpZiAoaXMub3J0aG9ncmFwaGljQ2FtZXJhKGNhbWVyYSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiB3aWR0aCAvIGNhbWVyYS56b29tLFxuICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBoZWlnaHQgLyBjYW1lcmEuem9vbSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvcCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQsXG4gICAgICAgICAgICAgICAgICAgICAgICBmYWN0b3I6IDEsXG4gICAgICAgICAgICAgICAgICAgICAgICBkaXN0YW5jZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFzcGVjdCxcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdCBmb3YgPSAoY2FtZXJhLmZvdiAqIE1hdGguUEkpIC8gMTgwOyAvLyBjb252ZXJ0IHZlcnRpY2FsIGZvdiB0byByYWRpYW5zXG4gICAgICAgICAgICAgICAgY29uc3QgaCA9IDIgKiBNYXRoLnRhbihmb3YgLyAyKSAqIGRpc3RhbmNlOyAvLyB2aXNpYmxlIGhlaWdodFxuICAgICAgICAgICAgICAgIGNvbnN0IHcgPSBoICogYXNwZWN0O1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiB3LFxuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IGgsXG4gICAgICAgICAgICAgICAgICAgIHRvcCxcbiAgICAgICAgICAgICAgICAgICAgbGVmdCxcbiAgICAgICAgICAgICAgICAgICAgZmFjdG9yOiB3aWR0aCAvIHcsXG4gICAgICAgICAgICAgICAgICAgIGRpc3RhbmNlLFxuICAgICAgICAgICAgICAgICAgICBhc3BlY3QsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGNvbnN0IHBvaW50ZXIgPSBuZXcgVEhSRUUuVmVjdG9yMigpO1xuXG4gICAgICAgICAgICBsZXQgcGVyZm9ybWFuY2VUaW1lb3V0OiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PjtcbiAgICAgICAgICAgIGNvbnN0IHNldFBlcmZvcm1hbmNlQ3VycmVudCA9IChjdXJyZW50OiBudW1iZXIpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldCgoc3RhdGUpID0+ICh7IHBlcmZvcm1hbmNlOiB7IC4uLnN0YXRlLnBlcmZvcm1hbmNlLCBjdXJyZW50IH0gfSkpO1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgdGhpcy5zZXQoe1xuICAgICAgICAgICAgICAgIGdldDogdGhpcy5nZXQuYmluZCh0aGlzKSxcbiAgICAgICAgICAgICAgICBzZXQ6IHRoaXMuc2V0LmJpbmQodGhpcyksXG4gICAgICAgICAgICAgICAgc2VsZWN0OiB0aGlzLnNlbGVjdC5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgICAgIHJlYWR5OiBmYWxzZSxcblxuICAgICAgICAgICAgICAgIHNjZW5lOiBwcmVwYXJlKG5ldyBUSFJFRS5TY2VuZSgpLCB7IHN0b3JlOiB0aGlzIH0pLFxuICAgICAgICAgICAgICAgIGV2ZW50czogeyBwcmlvcml0eTogMSwgZW5hYmxlZDogdHJ1ZSwgY29ubmVjdGVkOiBmYWxzZSB9LFxuXG4gICAgICAgICAgICAgICAgaW52YWxpZGF0ZTogKGZyYW1lcyA9IDEpID0+IGludmFsaWRhdGUodGhpcywgZnJhbWVzKSxcbiAgICAgICAgICAgICAgICBhZHZhbmNlOiAodGltZXN0YW1wOiBudW1iZXIsIHJ1bkdsb2JhbEVmZmVjdHM/OiBib29sZWFuKSA9PiBhZHZhbmNlKHRpbWVzdGFtcCwgcnVuR2xvYmFsRWZmZWN0cywgdGhpcyksXG5cbiAgICAgICAgICAgICAgICBsZWdhY3k6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGxpbmVhcjogZmFsc2UsXG4gICAgICAgICAgICAgICAgZmxhdDogZmFsc2UsXG5cbiAgICAgICAgICAgICAgICBjb250cm9sczogbnVsbCxcbiAgICAgICAgICAgICAgICBjbG9jazogbmV3IFRIUkVFLkNsb2NrKCksXG4gICAgICAgICAgICAgICAgcG9pbnRlcixcblxuICAgICAgICAgICAgICAgIGZyYW1lbG9vcDogJ2Fsd2F5cycsXG4gICAgICAgICAgICAgICAgcGVyZm9ybWFuY2U6IHtcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudDogMSxcbiAgICAgICAgICAgICAgICAgICAgbWluOiAwLjUsXG4gICAgICAgICAgICAgICAgICAgIG1heDogMSxcbiAgICAgICAgICAgICAgICAgICAgZGVib3VuY2U6IDIwMCxcbiAgICAgICAgICAgICAgICAgICAgcmVncmVzczogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RhdGUgPSB0aGlzLmdldCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2xlYXIgdGltZW91dFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBlcmZvcm1hbmNlVGltZW91dCkgY2xlYXJUaW1lb3V0KHBlcmZvcm1hbmNlVGltZW91dCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBzZXQgbG93ZXIgYm91bmRcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdGF0ZS5wZXJmb3JtYW5jZS5jdXJyZW50ICE9PSBzdGF0ZS5wZXJmb3JtYW5jZS5taW4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRQZXJmb3JtYW5jZUN1cnJlbnQoc3RhdGUucGVyZm9ybWFuY2UubWluKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdvIGJhY2sgdG8gdXBwZXIgYm91bmRcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlcmZvcm1hbmNlVGltZW91dCA9IHNldFRpbWVvdXQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkgPT4gc2V0UGVyZm9ybWFuY2VDdXJyZW50KHRoaXMuZ2V0KCdwZXJmb3JtYW5jZScsICdtYXgnKSB8fCAxKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS5wZXJmb3JtYW5jZS5kZWJvdW5jZVxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHNpemU6IHsgd2lkdGg6IDAsIGhlaWdodDogMCwgdG9wOiAwLCBsZWZ0OiAwIH0sXG4gICAgICAgICAgICAgICAgdmlld3BvcnQ6IHtcbiAgICAgICAgICAgICAgICAgICAgaW5pdGlhbERwcjogMCxcbiAgICAgICAgICAgICAgICAgICAgZHByOiAwLFxuICAgICAgICAgICAgICAgICAgICB3aWR0aDogMCxcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAwLFxuICAgICAgICAgICAgICAgICAgICB0b3A6IDAsXG4gICAgICAgICAgICAgICAgICAgIGxlZnQ6IDAsXG4gICAgICAgICAgICAgICAgICAgIGFzcGVjdDogMCxcbiAgICAgICAgICAgICAgICAgICAgZGlzdGFuY2U6IDAsXG4gICAgICAgICAgICAgICAgICAgIGZhY3RvcjogMCxcbiAgICAgICAgICAgICAgICAgICAgZ2V0Q3VycmVudFZpZXdwb3J0LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgcHJldmlvdXNTdG9yZTogdGhpcy5wYXJlbnRTdG9yZSBhcyBOZ3RSeFN0b3JlPE5ndFN0YXRlPixcbiAgICAgICAgICAgICAgICBpbnRlcm5hbDoge1xuICAgICAgICAgICAgICAgICAgICBhY3RpdmU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBwcmlvcml0eTogMCxcbiAgICAgICAgICAgICAgICAgICAgZnJhbWVzOiAwLFxuICAgICAgICAgICAgICAgICAgICBsYXN0RXZlbnQ6IG51bGwhLFxuICAgICAgICAgICAgICAgICAgICBpbnRlcmFjdGlvbjogW10sXG4gICAgICAgICAgICAgICAgICAgIGhvdmVyZWQ6IG5ldyBNYXAoKSxcbiAgICAgICAgICAgICAgICAgICAgc3Vic2NyaWJlcnM6IFtdLFxuICAgICAgICAgICAgICAgICAgICBpbml0aWFsQ2xpY2s6IFswLCAwXSxcbiAgICAgICAgICAgICAgICAgICAgaW5pdGlhbEhpdHM6IFtdLFxuICAgICAgICAgICAgICAgICAgICBjYXB0dXJlZE1hcDogbmV3IE1hcCgpLFxuICAgICAgICAgICAgICAgICAgICBzdWJzY3JpYmU6IChjYWxsYmFjazogTmd0QmVmb3JlUmVuZGVyUmVjb3JkWydjYWxsYmFjayddLCBwcmlvcml0eSA9IDAsIHN0b3JlID0gdGhpcykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50ZXJuYWwgPSB0aGlzLmdldCgnaW50ZXJuYWwnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoaXMgc3Vic2NyaXB0aW9uIHdhcyBnaXZlbiBhIHByaW9yaXR5LCBpdCB0YWtlcyByZW5kZXJpbmcgaW50byBpdHMgb3duIGhhbmRzXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBGb3IgdGhhdCByZWFzb24gd2Ugc3dpdGNoIG9mZiBhdXRvbWF0aWMgcmVuZGVyaW5nIGFuZCBpbmNyZWFzZSB0aGUgbWFudWFsIGZsYWdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFzIGxvbmcgYXMgdGhpcyBmbGFnIGlzIHBvc2l0aXZlIHRoZXJlIGNhbiBiZSBubyBpbnRlcm5hbCByZW5kZXJpbmcgYXQgYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBiZWNhdXNlIHRoZXJlIGNvdWxkIGJlIG11bHRpcGxlIHJlbmRlciBzdWJzY3JpcHRpb25zXG4gICAgICAgICAgICAgICAgICAgICAgICBpbnRlcm5hbC5wcmlvcml0eSA9IGludGVybmFsLnByaW9yaXR5ICsgKHByaW9yaXR5ID4gMCA/IDEgOiAwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGludGVybmFsLnN1YnNjcmliZXJzLnB1c2goeyBwcmlvcml0eSwgc3RvcmUsIGNhbGxiYWNrIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVnaXN0ZXIgc3Vic2NyaWJlciBhbmQgc29ydCBsYXllcnMgZnJvbSBsb3dlc3QgdG8gaGlnaGVzdCwgbWVhbmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGhpZ2hlc3QgcHJpb3JpdHkgcmVuZGVycyBsYXN0IChvbiB0b3Agb2YgdGhlIG90aGVyIGZyYW1lcylcbiAgICAgICAgICAgICAgICAgICAgICAgIGludGVybmFsLnN1YnNjcmliZXJzLnNvcnQoKGEsIGIpID0+IChhLnByaW9yaXR5IHx8IDApIC0gKGIucHJpb3JpdHkgfHwgMCkpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludGVybmFsID0gdGhpcy5nZXQoJ2ludGVybmFsJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGludGVybmFsPy5zdWJzY3JpYmVycykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEZWNyZWFzZSBtYW51YWwgZmxhZyBpZiB0aGlzIHN1YnNjcmlwdGlvbiBoYWQgYSBwcmlvcml0eVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcm5hbC5wcmlvcml0eSA9IGludGVybmFsLnByaW9yaXR5IC0gKHByaW9yaXR5ID4gMCA/IDEgOiAwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVtb3ZlIHN1YnNjcmliZXIgZnJvbSBsaXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVybmFsLnN1YnNjcmliZXJzID0gaW50ZXJuYWwuc3Vic2NyaWJlcnMuZmlsdGVyKChzKSA9PiBzLmNhbGxiYWNrICE9PSBjYWxsYmFjayk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHNldEV2ZW50czogKGV2ZW50czogUGFydGlhbDxOZ3RFdmVudE1hbmFnZXI+KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0KChzdGF0ZSkgPT4gKHsgZXZlbnRzOiB7IC4uLnN0YXRlLmV2ZW50cywgLi4uZXZlbnRzIH0gfSkpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgc2V0U2l6ZTogKHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyLCB0b3A/OiBudW1iZXIsIGxlZnQ/OiBudW1iZXIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2FtZXJhID0gdGhpcy5nZXQoJ2NhbWVyYScpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzaXplID0geyB3aWR0aCwgaGVpZ2h0LCB0b3A6IHRvcCB8fCAwLCBsZWZ0OiBsZWZ0IHx8IDAgfTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldCgoc3RhdGUpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmlld3BvcnQ6IHsgLi4uc3RhdGUudmlld3BvcnQsIC4uLmdldEN1cnJlbnRWaWV3cG9ydChjYW1lcmEsIGRlZmF1bHRUYXJnZXQsIHNpemUpIH0sXG4gICAgICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHNldERwcjogKGRwcjogTmd0RHByKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc29sdmVkID0gbWFrZURwcihkcHIsIHRoaXMud2luZG93KTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXQoKHN0YXRlKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgdmlld3BvcnQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5zdGF0ZS52aWV3cG9ydCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcHI6IHJlc29sdmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWxEcHI6IHN0YXRlLnZpZXdwb3J0LmluaXRpYWxEcHIgfHwgcmVzb2x2ZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBzZXRGcmFtZWxvb3A6IChmcmFtZWxvb3A6ICdhbHdheXMnIHwgJ2RlbWFuZCcgfCAnbmV2ZXInID0gJ2Fsd2F5cycpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2xvY2sgPSB0aGlzLmdldCgnY2xvY2snKTtcbiAgICAgICAgICAgICAgICAgICAgY2xvY2suc3RvcCgpO1xuICAgICAgICAgICAgICAgICAgICBjbG9jay5lbGFwc2VkVGltZSA9IDA7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGZyYW1lbG9vcCAhPT0gJ25ldmVyJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2xvY2suc3RhcnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsb2NrLmVsYXBzZWRUaW1lID0gMDtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0KHsgZnJhbWVsb29wIH0pO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgYWRkSW50ZXJhY3Rpb246IChpbnRlcmFjdGlvbikgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldCgoc3RhdGUpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpbnRlcm5hbDogeyAuLi5zdGF0ZS5pbnRlcm5hbCwgaW50ZXJhY3Rpb246IFsuLi5zdGF0ZS5pbnRlcm5hbC5pbnRlcmFjdGlvbiwgaW50ZXJhY3Rpb25dIH0sXG4gICAgICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHJlbW92ZUludGVyYWN0aW9uOiAodXVpZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldCgoc3RhdGUpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpbnRlcm5hbDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnN0YXRlLmludGVybmFsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVyYWN0aW9uOiBzdGF0ZS5pbnRlcm5hbC5pbnRlcmFjdGlvbi5maWx0ZXIoKGludGVyYWN0aW9uKSA9PiBpbnRlcmFjdGlvbi51dWlkICE9PSB1dWlkKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHRoaXMuaXNJbml0ID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMucmVzaXplKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb25maWd1cmUoaW5wdXRzOiBOZ3RDYW52YXNJbnB1dHMsIGNhbnZhc0VsZW1lbnQ6IEhUTUxDYW52YXNFbGVtZW50KSB7XG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIGdsOiBnbE9wdGlvbnMsXG4gICAgICAgICAgICBzaXplOiBzaXplT3B0aW9ucyxcbiAgICAgICAgICAgIGNhbWVyYTogY2FtZXJhT3B0aW9ucyxcbiAgICAgICAgICAgIHJheWNhc3RlcjogcmF5Y2FzdGVyT3B0aW9ucyxcbiAgICAgICAgICAgIGV2ZW50cyxcbiAgICAgICAgICAgIG9ydGhvZ3JhcGhpYyxcbiAgICAgICAgICAgIGxvb2tBdCxcbiAgICAgICAgICAgIHNoYWRvd3MsXG4gICAgICAgICAgICBsaW5lYXIsXG4gICAgICAgICAgICBsZWdhY3ksXG4gICAgICAgICAgICBmbGF0LFxuICAgICAgICAgICAgZHByLFxuICAgICAgICAgICAgZnJhbWVsb29wLFxuICAgICAgICAgICAgcGVyZm9ybWFuY2UsXG4gICAgICAgIH0gPSBpbnB1dHM7XG5cbiAgICAgICAgY29uc3Qgc3RhdGUgPSB0aGlzLmdldCgpO1xuICAgICAgICBjb25zdCBzdGF0ZVRvVXBkYXRlOiBQYXJ0aWFsPE5ndFN0YXRlPiA9IHt9O1xuXG4gICAgICAgIC8vIHNldHVwIHJlbmRlcmVyXG4gICAgICAgIGxldCBnbCA9IHN0YXRlLmdsO1xuICAgICAgICBpZiAoIXN0YXRlLmdsKSB7XG4gICAgICAgICAgICBzdGF0ZVRvVXBkYXRlLmdsID0gZ2wgPSBtYWtlRGVmYXVsdFJlbmRlcmVyKGdsT3B0aW9ucywgY2FudmFzRWxlbWVudCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBzZXR1cCByYXljYXN0ZXJcbiAgICAgICAgbGV0IHJheWNhc3RlciA9IHN0YXRlLnJheWNhc3RlcjtcbiAgICAgICAgaWYgKCFyYXljYXN0ZXIpIHtcbiAgICAgICAgICAgIHN0YXRlVG9VcGRhdGUucmF5Y2FzdGVyID0gcmF5Y2FzdGVyID0gbmV3IFRIUkVFLlJheWNhc3RlcigpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gc2V0IHJheWNhc3RlciBvcHRpb25zXG4gICAgICAgIGNvbnN0IHsgcGFyYW1zLCAuLi5vcHRpb25zIH0gPSByYXljYXN0ZXJPcHRpb25zIHx8IHt9O1xuICAgICAgICBpZiAoIWlzLmVxdShvcHRpb25zLCByYXljYXN0ZXIsIHNoYWxsb3dMb29zZSkpIGFwcGx5UHJvcHMocmF5Y2FzdGVyLCB7IC4uLm9wdGlvbnMgfSk7XG4gICAgICAgIGlmICghaXMuZXF1KHBhcmFtcywgcmF5Y2FzdGVyLnBhcmFtcywgc2hhbGxvd0xvb3NlKSkge1xuICAgICAgICAgICAgYXBwbHlQcm9wcyhyYXljYXN0ZXIsIHsgcGFyYW1zOiB7IC4uLnJheWNhc3Rlci5wYXJhbXMsIC4uLihwYXJhbXMgfHwge30pIH0gfSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBjcmVhdGUgZGVmYXVsdCBjYW1lcmFcbiAgICAgICAgaWYgKCFzdGF0ZS5jYW1lcmEpIHtcbiAgICAgICAgICAgIGNvbnN0IGlzQ2FtZXJhID0gaXMuY2FtZXJhKGNhbWVyYU9wdGlvbnMpO1xuICAgICAgICAgICAgbGV0IGNhbWVyYSA9IGlzQ2FtZXJhID8gY2FtZXJhT3B0aW9ucyA6IG1ha2VEZWZhdWx0Q2FtZXJhKG9ydGhvZ3JhcGhpYyB8fCBmYWxzZSwgc3RhdGUuc2l6ZSk7XG5cbiAgICAgICAgICAgIGlmICghaXNDYW1lcmEpIHtcbiAgICAgICAgICAgICAgICBpZiAoY2FtZXJhT3B0aW9ucykgYXBwbHlQcm9wcyhjYW1lcmEsIGNhbWVyYU9wdGlvbnMpO1xuXG4gICAgICAgICAgICAgICAgLy8gc2V0IHBvc2l0aW9uLnpcbiAgICAgICAgICAgICAgICBpZiAoIWNhbWVyYU9wdGlvbnM/LnBvc2l0aW9uKSBjYW1lcmEucG9zaXRpb24ueiA9IDU7XG5cbiAgICAgICAgICAgICAgICAvLyBhbHdheXMgbG9vayBhdCBjZW50ZXIgb3IgcGFzc2VkLWluIGxvb2tBdCBieSBkZWZhdWx0XG4gICAgICAgICAgICAgICAgaWYgKCFjYW1lcmFPcHRpb25zPy5yb3RhdGlvbikge1xuICAgICAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShsb29rQXQpKSBjYW1lcmEubG9va0F0KGxvb2tBdFswXSwgbG9va0F0WzFdLCBsb29rQXRbMl0pO1xuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChsb29rQXQgaW5zdGFuY2VvZiBUSFJFRS5WZWN0b3IzKSBjYW1lcmEubG9va0F0KGxvb2tBdCk7XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgY2FtZXJhLmxvb2tBdCgwLCAwLCAwKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyB1cGRhdGUgcHJvamVjdGlvbiBtYXRyaXggYWZ0ZXIgYXBwbHlwcm9wc1xuICAgICAgICAgICAgICAgIGNhbWVyYS51cGRhdGVQcm9qZWN0aW9uTWF0cml4KCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghaXMuaW5zdGFuY2UoY2FtZXJhKSkge1xuICAgICAgICAgICAgICAgIGNhbWVyYSA9IHByZXBhcmUoY2FtZXJhLCB7IHN0b3JlOiB0aGlzIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc3RhdGVUb1VwZGF0ZS5jYW1lcmEgPSBjYW1lcmE7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTZXQgdXAgWFIgKG9uZSB0aW1lIG9ubHkhKVxuICAgICAgICBpZiAoIXN0YXRlLnhyKSB7XG4gICAgICAgICAgICAvLyBIYW5kbGUgZnJhbWUgYmVoYXZpb3IgaW4gV2ViWFJcbiAgICAgICAgICAgIGNvbnN0IGhhbmRsZVhSRnJhbWU6IFhSRnJhbWVSZXF1ZXN0Q2FsbGJhY2sgPSAodGltZXN0YW1wOiBudW1iZXIsIGZyYW1lPzogWFJGcmFtZSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHN0YXRlID0gdGhpcy5nZXQoKTtcbiAgICAgICAgICAgICAgICBpZiAoc3RhdGUuZnJhbWVsb29wID09PSAnbmV2ZXInKSByZXR1cm47XG4gICAgICAgICAgICAgICAgYWR2YW5jZSh0aW1lc3RhbXAsIHRydWUsIHRoaXMsIGZyYW1lKTtcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIC8vIFRvZ2dsZSByZW5kZXIgc3dpdGNoaW5nIG9uIHNlc3Npb25cbiAgICAgICAgICAgIGNvbnN0IGhhbmRsZVNlc3Npb25DaGFuZ2UgPSAoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc3RhdGUgPSB0aGlzLmdldCgpO1xuICAgICAgICAgICAgICAgIHN0YXRlLmdsLnhyLmVuYWJsZWQgPSBzdGF0ZS5nbC54ci5pc1ByZXNlbnRpbmc7XG5cbiAgICAgICAgICAgICAgICBzdGF0ZS5nbC54ci5zZXRBbmltYXRpb25Mb29wKHN0YXRlLmdsLnhyLmlzUHJlc2VudGluZyA/IGhhbmRsZVhSRnJhbWUgOiBudWxsKTtcbiAgICAgICAgICAgICAgICBpZiAoIXN0YXRlLmdsLnhyLmlzUHJlc2VudGluZykgaW52YWxpZGF0ZSh0aGlzKTtcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIC8vIFdlYlhSIHNlc3Npb24gbWFuYWdlclxuICAgICAgICAgICAgY29uc3QgeHIgPSB7XG4gICAgICAgICAgICAgICAgY29ubmVjdDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBnbC54ci5hZGRFdmVudExpc3RlbmVyKCdzZXNzaW9uc3RhcnQnLCBoYW5kbGVTZXNzaW9uQ2hhbmdlKTtcbiAgICAgICAgICAgICAgICAgICAgZ2wueHIuYWRkRXZlbnRMaXN0ZW5lcignc2Vzc2lvbmVuZCcsIGhhbmRsZVNlc3Npb25DaGFuZ2UpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZGlzY29ubmVjdDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBnbC54ci5yZW1vdmVFdmVudExpc3RlbmVyKCdzZXNzaW9uc3RhcnQnLCBoYW5kbGVTZXNzaW9uQ2hhbmdlKTtcbiAgICAgICAgICAgICAgICAgICAgZ2wueHIucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Vzc2lvbmVuZCcsIGhhbmRsZVNlc3Npb25DaGFuZ2UpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAvLyBTdWJzY3JpYmUgdG8gV2ViWFIgc2Vzc2lvbiBldmVudHNcbiAgICAgICAgICAgIGlmIChnbC54cikgeHIuY29ubmVjdCgpO1xuICAgICAgICAgICAgc3RhdGVUb1VwZGF0ZS54ciA9IHhyO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gU2V0IHNoYWRvd21hcFxuICAgICAgICBpZiAoZ2wuc2hhZG93TWFwKSB7XG4gICAgICAgICAgICBjb25zdCBpc0Jvb2xlYW4gPSB0eXBlb2Ygc2hhZG93cyA9PT0gJ2Jvb2xlYW4nO1xuICAgICAgICAgICAgaWYgKChpc0Jvb2xlYW4gJiYgZ2wuc2hhZG93TWFwLmVuYWJsZWQgIT09IHNoYWRvd3MpIHx8ICFpcy5lcXUoc2hhZG93cywgZ2wuc2hhZG93TWFwLCBzaGFsbG93TG9vc2UpKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgb2xkID0gZ2wuc2hhZG93TWFwLmVuYWJsZWQ7XG4gICAgICAgICAgICAgICAgZ2wuc2hhZG93TWFwLmVuYWJsZWQgPSAhIXNoYWRvd3M7XG4gICAgICAgICAgICAgICAgaWYgKCFpc0Jvb2xlYW4pIE9iamVjdC5hc3NpZ24oZ2wuc2hhZG93TWFwLCBzaGFkb3dzKTtcbiAgICAgICAgICAgICAgICBlbHNlIGdsLnNoYWRvd01hcC50eXBlID0gVEhSRUUuUENGU29mdFNoYWRvd01hcDtcblxuICAgICAgICAgICAgICAgIGlmIChvbGQgIT09IGdsLnNoYWRvd01hcC5lbmFibGVkKSBjaGVja05lZWRzVXBkYXRlKGdsLnNoYWRvd01hcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTYWZlbHkgc2V0IGNvbG9yIG1hbmFnZW1lbnQgaWYgYXZhaWxhYmxlLlxuICAgICAgICAvLyBBdm9pZCBhY2Nlc3NpbmcgVEhSRUUuQ29sb3JNYW5hZ2VtZW50IHRvIHBsYXkgbmljZSB3aXRoIG9sZGVyIHZlcnNpb25zXG4gICAgICAgIGlmIChUSFJFRS5Db2xvck1hbmFnZW1lbnQpIFRIUkVFLkNvbG9yTWFuYWdlbWVudC5sZWdhY3lNb2RlID0gc3RhdGUubGVnYWN5O1xuICAgICAgICBjb25zdCBvdXRwdXRFbmNvZGluZyA9IGxpbmVhciA/IFRIUkVFLkxpbmVhckVuY29kaW5nIDogVEhSRUUuc1JHQkVuY29kaW5nO1xuICAgICAgICBjb25zdCB0b25lTWFwcGluZyA9IGZsYXQgPyBUSFJFRS5Ob1RvbmVNYXBwaW5nIDogVEhSRUUuQUNFU0ZpbG1pY1RvbmVNYXBwaW5nO1xuXG4gICAgICAgIGlmIChnbC5vdXRwdXRFbmNvZGluZyAhPT0gb3V0cHV0RW5jb2RpbmcpIGdsLm91dHB1dEVuY29kaW5nID0gb3V0cHV0RW5jb2Rpbmc7XG4gICAgICAgIGlmIChnbC50b25lTWFwcGluZyAhPT0gdG9uZU1hcHBpbmcpIGdsLnRvbmVNYXBwaW5nID0gdG9uZU1hcHBpbmc7XG5cbiAgICAgICAgLy8gVXBkYXRlIGNvbG9yIG1hbmFnZW1lbnQgc3RhdGVcbiAgICAgICAgaWYgKHN0YXRlLmxlZ2FjeSAhPT0gbGVnYWN5KSBzdGF0ZVRvVXBkYXRlLmxlZ2FjeSA9IGxlZ2FjeTtcbiAgICAgICAgaWYgKHN0YXRlLmxpbmVhciAhPT0gbGluZWFyKSBzdGF0ZVRvVXBkYXRlLmxpbmVhciA9IGxpbmVhcjtcbiAgICAgICAgaWYgKHN0YXRlLmZsYXQgIT09IGZsYXQpIHN0YXRlVG9VcGRhdGUuZmxhdCA9IGZsYXQ7XG5cbiAgICAgICAgLy8gU2V0IGdsIHByb3BzXG4gICAgICAgIGdsLnNldENsZWFyQWxwaGEoMCk7XG4gICAgICAgIGdsLnNldFBpeGVsUmF0aW8obWFrZURwcihzdGF0ZS52aWV3cG9ydC5kcHIpKTtcbiAgICAgICAgZ2wuc2V0U2l6ZShzdGF0ZS5zaXplLndpZHRoLCBzdGF0ZS5zaXplLmhlaWdodCk7XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgaXMub2JqKGdsT3B0aW9ucykgJiZcbiAgICAgICAgICAgICEodHlwZW9mIGdsT3B0aW9ucyA9PT0gJ2Z1bmN0aW9uJykgJiZcbiAgICAgICAgICAgICFpcy5yZW5kZXJlcihnbE9wdGlvbnMpICYmXG4gICAgICAgICAgICAhaXMuZXF1KGdsT3B0aW9ucywgZ2wsIHNoYWxsb3dMb29zZSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBhcHBseVByb3BzKGdsLCBnbE9wdGlvbnMpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gU3RvcmUgZXZlbnRzIGludGVybmFsbHlcbiAgICAgICAgaWYgKGV2ZW50cyAmJiAhc3RhdGUuZXZlbnRzLmhhbmRsZXJzKSB7XG4gICAgICAgICAgICBzdGF0ZVRvVXBkYXRlLmV2ZW50cyA9IGV2ZW50cyh0aGlzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIENoZWNrIHBlcmZvcm1hbmNlXG4gICAgICAgIGlmIChwZXJmb3JtYW5jZSAmJiAhaXMuZXF1KHBlcmZvcm1hbmNlLCBzdGF0ZS5wZXJmb3JtYW5jZSwgc2hhbGxvd0xvb3NlKSkge1xuICAgICAgICAgICAgc3RhdGVUb1VwZGF0ZS5wZXJmb3JtYW5jZSA9IHsgLi4uc3RhdGUucGVyZm9ybWFuY2UsIC4uLnBlcmZvcm1hbmNlIH07XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNldChzdGF0ZVRvVXBkYXRlKTtcblxuICAgICAgICAvLyBDaGVjayBwaXhlbHJhdGlvXG4gICAgICAgIGlmIChkcHIgJiYgc3RhdGUudmlld3BvcnQuZHByICE9PSBtYWtlRHByKGRwcikpIHN0YXRlLnNldERwcihkcHIpO1xuICAgICAgICAvLyBDaGVjayBzaXplLCBhbGxvdyBpdCB0byB0YWtlIG9uIGNvbnRhaW5lciBib3VuZHMgaW5pdGlhbGx5XG4gICAgICAgIGNvbnN0IHNpemUgPSBjb21wdXRlSW5pdGlhbFNpemUoY2FudmFzRWxlbWVudCwgc2l6ZU9wdGlvbnMpO1xuICAgICAgICBpZiAoIWlzLmVxdShzaXplLCBzdGF0ZS5zaXplLCBzaGFsbG93TG9vc2UpKSBzdGF0ZS5zZXRTaXplKHNpemUud2lkdGgsIHNpemUuaGVpZ2h0LCBzaXplLnRvcCwgc2l6ZS5sZWZ0KTtcblxuICAgICAgICAvLyBDaGVjayBmcmFtZWxvb3BcbiAgICAgICAgaWYgKHN0YXRlLmZyYW1lbG9vcCAhPT0gZnJhbWVsb29wKSBzdGF0ZS5zZXRGcmFtZWxvb3AoZnJhbWVsb29wKTtcblxuICAgICAgICBpZiAoIXRoaXMuZ2V0KCdyZWFkeScpKSB7XG4gICAgICAgICAgICB0aGlzLnNldCh7IHJlYWR5OiB0cnVlIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5pbnZhbGlkYXRlKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZXNpemUoKSB7XG4gICAgICAgIGNvbnN0IHN0YXRlID0gdGhpcy5nZXQoKTtcbiAgICAgICAgbGV0IG9sZFNpemUgPSBzdGF0ZS5zaXplO1xuICAgICAgICBsZXQgb2xkRHByID0gc3RhdGUudmlld3BvcnQuZHByO1xuICAgICAgICBsZXQgb2xkQ2FtZXJhID0gc3RhdGUuY2FtZXJhO1xuXG4gICAgICAgIHRoaXMuaG9sZCh0aGlzLnNlbGVjdChzZWxlY3RTbGljZShbJ2NhbWVyYScsICdzaXplJywgJ3ZpZXdwb3J0JywgJ2dsJ10pKSwgKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgeyBjYW1lcmEsIHNpemUsIHZpZXdwb3J0LCBnbCwgc2V0IH0gPSB0aGlzLmdldCgpO1xuICAgICAgICAgICAgLy8gcmVzaXplIGNhbWVyYSBhbmQgcmVuZGVyZXIgb24gY2hhbmdlcyB0byBzaXplIGFuZCBkcHJcbiAgICAgICAgICAgIGlmIChzaXplICE9PSBvbGRTaXplIHx8IHZpZXdwb3J0LmRwciAhPT0gb2xkRHByKSB7XG4gICAgICAgICAgICAgICAgb2xkU2l6ZSA9IHNpemU7XG4gICAgICAgICAgICAgICAgb2xkRHByID0gdmlld3BvcnQuZHByO1xuICAgICAgICAgICAgICAgIC8vIHVwZGF0ZSBjYW1lcmFcbiAgICAgICAgICAgICAgICB1cGRhdGVDYW1lcmEoY2FtZXJhLCBzaXplKTtcbiAgICAgICAgICAgICAgICBnbC5zZXRQaXhlbFJhdGlvKHZpZXdwb3J0LmRwcik7XG4gICAgICAgICAgICAgICAgZ2wuc2V0U2l6ZShzaXplLndpZHRoLCBzaXplLmhlaWdodCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIHVwZGF0ZSB2aWV3cG9ydCB3aGVuIGNhbWVyYSBjaGFuZ2VzXG4gICAgICAgICAgICBpZiAoY2FtZXJhICE9PSBvbGRDYW1lcmEpIHtcbiAgICAgICAgICAgICAgICB1cGRhdGVDYW1lcmEoY2FtZXJhLCBzaXplKTtcbiAgICAgICAgICAgICAgICBvbGRDYW1lcmEgPSBjYW1lcmE7XG4gICAgICAgICAgICAgICAgc2V0KChzdGF0ZSkgPT4gKHsgdmlld3BvcnQ6IHsgLi4uc3RhdGUudmlld3BvcnQsIC4uLnN0YXRlLnZpZXdwb3J0LmdldEN1cnJlbnRWaWV3cG9ydChjYW1lcmEpIH0gfSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGludmFsaWRhdGUoKSB7XG4gICAgICAgIHRoaXMuaG9sZCh0aGlzLnNlbGVjdCgpLCAoKSA9PiBpbnZhbGlkYXRlKHRoaXMpKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGNvbXB1dGVJbml0aWFsU2l6ZShjYW52YXM6IEhUTUxDYW52YXNFbGVtZW50IHwgVEhSRUUuT2Zmc2NyZWVuQ2FudmFzLCBkZWZhdWx0U2l6ZT86IE5ndFNpemUpOiBOZ3RTaXplIHtcbiAgICBpZiAoZGVmYXVsdFNpemUpIHtcbiAgICAgICAgcmV0dXJuIGRlZmF1bHRTaXplO1xuICAgIH1cblxuICAgIGlmIChjYW52YXMgaW5zdGFuY2VvZiBIVE1MQ2FudmFzRWxlbWVudCAmJiBjYW52YXMucGFyZW50RWxlbWVudCkge1xuICAgICAgICBjb25zdCB7IHdpZHRoLCBoZWlnaHQsIHRvcCwgbGVmdCB9ID0gY2FudmFzLnBhcmVudEVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIHJldHVybiB7IHdpZHRoLCBoZWlnaHQsIHRvcCwgbGVmdCB9O1xuICAgIH1cblxuICAgIHJldHVybiB7IHdpZHRoOiAwLCBoZWlnaHQ6IDAsIHRvcDogMCwgbGVmdDogMCB9O1xufVxuIl19
|
|
384
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUvc3JjL2xpYi9zdG9yZXMvc3RvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNoRCxPQUFPLEtBQUssS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMvQixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBV3JDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDNUMsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNqQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsbUJBQW1CLEVBQUUsT0FBTyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sWUFBWSxDQUFDOztBQUV4QyxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsSUFBSSxHQUFHLEVBQWlDLENBQUM7QUFDckUsTUFBTSxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsR0FBRyxVQUFVLENBQUMsWUFBWSxDQUFDLENBQUM7QUFDekQsTUFBTSxZQUFZLEdBQUcsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQWtCLENBQUM7QUFHM0UsTUFBTSxPQUFPLFFBQVMsU0FBUSxVQUFvQjtJQURsRDs7UUFFcUIsZ0JBQVcsR0FBRyxNQUFNLENB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Q0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNyRCxDQUFDOztxR0FqWlEsUUFBUTt5R0FBUixRQUFROzJGQUFSLFFBQVE7a0JBRHBCLFVBQVU7O0FBcVpYLFNBQVMsa0JBQWtCLENBQUMsTUFBaUQsRUFBRSxXQUFxQjtJQUNoRyxJQUFJLFdBQVcsRUFBRTtRQUNiLE9BQU8sV0FBVyxDQUFDO0tBQ3RCO0lBRUQsSUFBSSxNQUFNLFlBQVksaUJBQWlCLElBQUksTUFBTSxDQUFDLGFBQWEsRUFBRTtRQUM3RCxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQ2xGLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsQ0FBQztLQUN2QztJQUVELE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUM7QUFDcEQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgc2VsZWN0U2xpY2UgfSBmcm9tICdAcngtYW5ndWxhci9zdGF0ZSc7XG5pbXBvcnQgKiBhcyBUSFJFRSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgeyBjcmVhdGVMb29wIH0gZnJvbSAnLi4vbG9vcCc7XG5pbXBvcnQgdHlwZSB7XG4gICAgTmd0QmVmb3JlUmVuZGVyUmVjb3JkLFxuICAgIE5ndENhbnZhc0lucHV0cyxcbiAgICBOZ3REcHIsXG4gICAgTmd0RXF1Q29uZmlnLFxuICAgIE5ndEV2ZW50TWFuYWdlcixcbiAgICBOZ3RTaXplLFxuICAgIE5ndFN0YXRlLFxuICAgIE5ndFZpZXdwb3J0LFxufSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBhcHBseVByb3BzIH0gZnJvbSAnLi4vdXRpbHMvYXBwbHktcHJvcHMnO1xuaW1wb3J0IHsgcHJlcGFyZSB9IGZyb20gJy4uL3V0aWxzL2luc3RhbmNlJztcbmltcG9ydCB7IGlzIH0gZnJvbSAnLi4vdXRpbHMvaXMnO1xuaW1wb3J0IHsgbWFrZURlZmF1bHRDYW1lcmEsIG1ha2VEZWZhdWx0UmVuZGVyZXIsIG1ha2VEcHIgfSBmcm9tICcuLi91dGlscy9tYWtlJztcbmltcG9ydCB7IGNoZWNrTmVlZHNVcGRhdGUsIHVwZGF0ZUNhbWVyYSB9IGZyb20gJy4uL3V0aWxzL3VwZGF0ZSc7XG5pbXBvcnQgeyBOZ3RSeFN0b3JlIH0gZnJvbSAnLi9yeC1zdG9yZSc7XG5cbmV4cG9ydCBjb25zdCByb290U3RhdGVNYXAgPSBuZXcgTWFwPEVsZW1lbnQsIE5ndFJ4U3RvcmU8Tmd0U3RhdGU+PigpO1xuY29uc3QgeyBpbnZhbGlkYXRlLCBhZHZhbmNlIH0gPSBjcmVhdGVMb29wKHJvb3RTdGF0ZU1hcCk7XG5jb25zdCBzaGFsbG93TG9vc2UgPSB7IG9iamVjdHM6ICdzaGFsbG93Jywgc3RyaWN0OiBmYWxzZSB9IGFzIE5ndEVxdUNvbmZpZztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE5ndFN0b3JlIGV4dGVuZHMgTmd0UnhTdG9yZTxOZ3RTdGF0ZT4ge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcGFyZW50U3RvcmUgPSBpbmplY3QoTmd0U3RvcmUsIHsgb3B0aW9uYWw6IHRydWUsIHNraXBTZWxmOiB0cnVlIH0pO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgd2luZG93ID0gaW5qZWN0KERPQ1VNRU5UKS5kZWZhdWx0VmlldyBhcyBXaW5kb3cgJiB0eXBlb2YgZ2xvYmFsVGhpcztcblxuICAgIGlzSW5pdCA9IGZhbHNlO1xuXG4gICAgaW5pdCgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzSW5pdCkge1xuICAgICAgICAgICAgY29uc3QgcG9zaXRpb24gPSBuZXcgVEhSRUUuVmVjdG9yMygpO1xuICAgICAgICAgICAgY29uc3QgZGVmYXVsdFRhcmdldCA9IG5ldyBUSFJFRS5WZWN0b3IzKCk7XG4gICAgICAgICAgICBjb25zdCB0ZW1wVGFyZ2V0ID0gbmV3IFRIUkVFLlZlY3RvcjMoKTtcblxuICAgICAgICAgICAgY29uc3QgZ2V0Q3VycmVudFZpZXdwb3J0ID0gKFxuICAgICAgICAgICAgICAgIGNhbWVyYSA9IHRoaXMuZ2V0KCdjYW1lcmEnKSxcbiAgICAgICAgICAgICAgICB0YXJnZXQ6IFRIUkVFLlZlY3RvcjMgfCBQYXJhbWV0ZXJzPFRIUkVFLlZlY3RvcjNbJ3NldCddPiA9IGRlZmF1bHRUYXJnZXQsXG4gICAgICAgICAgICAgICAgc2l6ZSA9IHRoaXMuZ2V0KCdzaXplJylcbiAgICAgICAgICAgICk6IE9taXQ8Tmd0Vmlld3BvcnQsICdkcHInIHwgJ2luaXRpYWxEcHInPiA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyB3aWR0aCwgaGVpZ2h0LCB0b3AsIGxlZnQgfSA9IHNpemU7XG4gICAgICAgICAgICAgICAgY29uc3QgYXNwZWN0ID0gd2lkdGggLyBoZWlnaHQ7XG4gICAgICAgICAgICAgICAgaWYgKHRhcmdldCBpbnN0YW5jZW9mIFRIUkVFLlZlY3RvcjMpIHRlbXBUYXJnZXQuY29weSh0YXJnZXQpO1xuICAgICAgICAgICAgICAgIGVsc2UgdGVtcFRhcmdldC5zZXQoLi4udGFyZ2V0KTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGRpc3RhbmNlID0gY2FtZXJhLmdldFdvcmxkUG9zaXRpb24ocG9zaXRpb24pLmRpc3RhbmNlVG8odGVtcFRhcmdldCk7XG5cbiAgICAgICAgICAgICAgICBpZiAoaXMub3J0aG9ncmFwaGljQ2FtZXJhKGNhbWVyYSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiB3aWR0aCAvIGNhbWVyYS56b29tLFxuICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBoZWlnaHQgLyBjYW1lcmEuem9vbSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvcCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQsXG4gICAgICAgICAgICAgICAgICAgICAgICBmYWN0b3I6IDEsXG4gICAgICAgICAgICAgICAgICAgICAgICBkaXN0YW5jZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFzcGVjdCxcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdCBmb3YgPSAoY2FtZXJhLmZvdiAqIE1hdGguUEkpIC8gMTgwOyAvLyBjb252ZXJ0IHZlcnRpY2FsIGZvdiB0byByYWRpYW5zXG4gICAgICAgICAgICAgICAgY29uc3QgaCA9IDIgKiBNYXRoLnRhbihmb3YgLyAyKSAqIGRpc3RhbmNlOyAvLyB2aXNpYmxlIGhlaWdodFxuICAgICAgICAgICAgICAgIGNvbnN0IHcgPSBoICogYXNwZWN0O1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiB3LFxuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IGgsXG4gICAgICAgICAgICAgICAgICAgIHRvcCxcbiAgICAgICAgICAgICAgICAgICAgbGVmdCxcbiAgICAgICAgICAgICAgICAgICAgZmFjdG9yOiB3aWR0aCAvIHcsXG4gICAgICAgICAgICAgICAgICAgIGRpc3RhbmNlLFxuICAgICAgICAgICAgICAgICAgICBhc3BlY3QsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGNvbnN0IHBvaW50ZXIgPSBuZXcgVEhSRUUuVmVjdG9yMigpO1xuXG4gICAgICAgICAgICBsZXQgcGVyZm9ybWFuY2VUaW1lb3V0OiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PjtcbiAgICAgICAgICAgIGNvbnN0IHNldFBlcmZvcm1hbmNlQ3VycmVudCA9IChjdXJyZW50OiBudW1iZXIpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldCgoc3RhdGUpID0+ICh7IHBlcmZvcm1hbmNlOiB7IC4uLnN0YXRlLnBlcmZvcm1hbmNlLCBjdXJyZW50IH0gfSkpO1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgdGhpcy5zZXQoe1xuICAgICAgICAgICAgICAgIGdldDogdGhpcy5nZXQuYmluZCh0aGlzKSxcbiAgICAgICAgICAgICAgICBzZXQ6IHRoaXMuc2V0LmJpbmQodGhpcyksXG4gICAgICAgICAgICAgICAgc2VsZWN0OiB0aGlzLnNlbGVjdC5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgICAgIHJlYWR5OiBmYWxzZSxcblxuICAgICAgICAgICAgICAgIHNjZW5lOiBwcmVwYXJlKG5ldyBUSFJFRS5TY2VuZSgpLCB7IHN0b3JlOiB0aGlzIH0pLFxuICAgICAgICAgICAgICAgIGV2ZW50czogeyBwcmlvcml0eTogMSwgZW5hYmxlZDogdHJ1ZSwgY29ubmVjdGVkOiBmYWxzZSB9LFxuXG4gICAgICAgICAgICAgICAgaW52YWxpZGF0ZTogKGZyYW1lcyA9IDEpID0+IGludmFsaWRhdGUodGhpcywgZnJhbWVzKSxcbiAgICAgICAgICAgICAgICBhZHZhbmNlOiAodGltZXN0YW1wOiBudW1iZXIsIHJ1bkdsb2JhbEVmZmVjdHM/OiBib29sZWFuKSA9PiBhZHZhbmNlKHRpbWVzdGFtcCwgcnVuR2xvYmFsRWZmZWN0cywgdGhpcyksXG5cbiAgICAgICAgICAgICAgICBsZWdhY3k6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGxpbmVhcjogZmFsc2UsXG4gICAgICAgICAgICAgICAgZmxhdDogZmFsc2UsXG5cbiAgICAgICAgICAgICAgICBjb250cm9sczogbnVsbCxcbiAgICAgICAgICAgICAgICBjbG9jazogbmV3IFRIUkVFLkNsb2NrKCksXG4gICAgICAgICAgICAgICAgcG9pbnRlcixcblxuICAgICAgICAgICAgICAgIGZyYW1lbG9vcDogJ2Fsd2F5cycsXG4gICAgICAgICAgICAgICAgcGVyZm9ybWFuY2U6IHtcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudDogMSxcbiAgICAgICAgICAgICAgICAgICAgbWluOiAwLjUsXG4gICAgICAgICAgICAgICAgICAgIG1heDogMSxcbiAgICAgICAgICAgICAgICAgICAgZGVib3VuY2U6IDIwMCxcbiAgICAgICAgICAgICAgICAgICAgcmVncmVzczogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RhdGUgPSB0aGlzLmdldCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2xlYXIgdGltZW91dFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBlcmZvcm1hbmNlVGltZW91dCkgY2xlYXJUaW1lb3V0KHBlcmZvcm1hbmNlVGltZW91dCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBzZXQgbG93ZXIgYm91bmRcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdGF0ZS5wZXJmb3JtYW5jZS5jdXJyZW50ICE9PSBzdGF0ZS5wZXJmb3JtYW5jZS5taW4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRQZXJmb3JtYW5jZUN1cnJlbnQoc3RhdGUucGVyZm9ybWFuY2UubWluKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdvIGJhY2sgdG8gdXBwZXIgYm91bmRcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlcmZvcm1hbmNlVGltZW91dCA9IHNldFRpbWVvdXQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkgPT4gc2V0UGVyZm9ybWFuY2VDdXJyZW50KHRoaXMuZ2V0KCdwZXJmb3JtYW5jZScsICdtYXgnKSB8fCAxKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS5wZXJmb3JtYW5jZS5kZWJvdW5jZVxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHNpemU6IHsgd2lkdGg6IDAsIGhlaWdodDogMCwgdG9wOiAwLCBsZWZ0OiAwIH0sXG4gICAgICAgICAgICAgICAgdmlld3BvcnQ6IHtcbiAgICAgICAgICAgICAgICAgICAgaW5pdGlhbERwcjogMCxcbiAgICAgICAgICAgICAgICAgICAgZHByOiAwLFxuICAgICAgICAgICAgICAgICAgICB3aWR0aDogMCxcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAwLFxuICAgICAgICAgICAgICAgICAgICB0b3A6IDAsXG4gICAgICAgICAgICAgICAgICAgIGxlZnQ6IDAsXG4gICAgICAgICAgICAgICAgICAgIGFzcGVjdDogMCxcbiAgICAgICAgICAgICAgICAgICAgZGlzdGFuY2U6IDAsXG4gICAgICAgICAgICAgICAgICAgIGZhY3RvcjogMCxcbiAgICAgICAgICAgICAgICAgICAgZ2V0Q3VycmVudFZpZXdwb3J0LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgcHJldmlvdXNTdG9yZTogdGhpcy5wYXJlbnRTdG9yZSBhcyBOZ3RSeFN0b3JlPE5ndFN0YXRlPixcbiAgICAgICAgICAgICAgICBpbnRlcm5hbDoge1xuICAgICAgICAgICAgICAgICAgICBhY3RpdmU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBwcmlvcml0eTogMCxcbiAgICAgICAgICAgICAgICAgICAgZnJhbWVzOiAwLFxuICAgICAgICAgICAgICAgICAgICBsYXN0RXZlbnQ6IG51bGwhLFxuICAgICAgICAgICAgICAgICAgICBpbnRlcmFjdGlvbjogW10sXG4gICAgICAgICAgICAgICAgICAgIGhvdmVyZWQ6IG5ldyBNYXAoKSxcbiAgICAgICAgICAgICAgICAgICAgc3Vic2NyaWJlcnM6IFtdLFxuICAgICAgICAgICAgICAgICAgICBpbml0aWFsQ2xpY2s6IFswLCAwXSxcbiAgICAgICAgICAgICAgICAgICAgaW5pdGlhbEhpdHM6IFtdLFxuICAgICAgICAgICAgICAgICAgICBjYXB0dXJlZE1hcDogbmV3IE1hcCgpLFxuICAgICAgICAgICAgICAgICAgICBzdWJzY3JpYmU6IChjYWxsYmFjazogTmd0QmVmb3JlUmVuZGVyUmVjb3JkWydjYWxsYmFjayddLCBwcmlvcml0eSA9IDAsIHN0b3JlID0gdGhpcykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50ZXJuYWwgPSB0aGlzLmdldCgnaW50ZXJuYWwnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoaXMgc3Vic2NyaXB0aW9uIHdhcyBnaXZlbiBhIHByaW9yaXR5LCBpdCB0YWtlcyByZW5kZXJpbmcgaW50byBpdHMgb3duIGhhbmRzXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBGb3IgdGhhdCByZWFzb24gd2Ugc3dpdGNoIG9mZiBhdXRvbWF0aWMgcmVuZGVyaW5nIGFuZCBpbmNyZWFzZSB0aGUgbWFudWFsIGZsYWdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFzIGxvbmcgYXMgdGhpcyBmbGFnIGlzIHBvc2l0aXZlIHRoZXJlIGNhbiBiZSBubyBpbnRlcm5hbCByZW5kZXJpbmcgYXQgYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBiZWNhdXNlIHRoZXJlIGNvdWxkIGJlIG11bHRpcGxlIHJlbmRlciBzdWJzY3JpcHRpb25zXG4gICAgICAgICAgICAgICAgICAgICAgICBpbnRlcm5hbC5wcmlvcml0eSA9IGludGVybmFsLnByaW9yaXR5ICsgKHByaW9yaXR5ID4gMCA/IDEgOiAwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGludGVybmFsLnN1YnNjcmliZXJzLnB1c2goeyBwcmlvcml0eSwgc3RvcmUsIGNhbGxiYWNrIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVnaXN0ZXIgc3Vic2NyaWJlciBhbmQgc29ydCBsYXllcnMgZnJvbSBsb3dlc3QgdG8gaGlnaGVzdCwgbWVhbmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGhpZ2hlc3QgcHJpb3JpdHkgcmVuZGVycyBsYXN0IChvbiB0b3Agb2YgdGhlIG90aGVyIGZyYW1lcylcbiAgICAgICAgICAgICAgICAgICAgICAgIGludGVybmFsLnN1YnNjcmliZXJzLnNvcnQoKGEsIGIpID0+IChhLnByaW9yaXR5IHx8IDApIC0gKGIucHJpb3JpdHkgfHwgMCkpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludGVybmFsID0gdGhpcy5nZXQoJ2ludGVybmFsJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGludGVybmFsPy5zdWJzY3JpYmVycykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEZWNyZWFzZSBtYW51YWwgZmxhZyBpZiB0aGlzIHN1YnNjcmlwdGlvbiBoYWQgYSBwcmlvcml0eVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcm5hbC5wcmlvcml0eSA9IGludGVybmFsLnByaW9yaXR5IC0gKHByaW9yaXR5ID4gMCA/IDEgOiAwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVtb3ZlIHN1YnNjcmliZXIgZnJvbSBsaXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVybmFsLnN1YnNjcmliZXJzID0gaW50ZXJuYWwuc3Vic2NyaWJlcnMuZmlsdGVyKChzKSA9PiBzLmNhbGxiYWNrICE9PSBjYWxsYmFjayk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHNldEV2ZW50czogKGV2ZW50czogUGFydGlhbDxOZ3RFdmVudE1hbmFnZXI+KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0KChzdGF0ZSkgPT4gKHsgZXZlbnRzOiB7IC4uLnN0YXRlLmV2ZW50cywgLi4uZXZlbnRzIH0gfSkpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgc2V0U2l6ZTogKHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyLCB0b3A/OiBudW1iZXIsIGxlZnQ/OiBudW1iZXIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2FtZXJhID0gdGhpcy5nZXQoJ2NhbWVyYScpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzaXplID0geyB3aWR0aCwgaGVpZ2h0LCB0b3A6IHRvcCB8fCAwLCBsZWZ0OiBsZWZ0IHx8IDAgfTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldCgoc3RhdGUpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmlld3BvcnQ6IHsgLi4uc3RhdGUudmlld3BvcnQsIC4uLmdldEN1cnJlbnRWaWV3cG9ydChjYW1lcmEsIGRlZmF1bHRUYXJnZXQsIHNpemUpIH0sXG4gICAgICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHNldERwcjogKGRwcjogTmd0RHByKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc29sdmVkID0gbWFrZURwcihkcHIsIHRoaXMud2luZG93KTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXQoKHN0YXRlKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgdmlld3BvcnQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5zdGF0ZS52aWV3cG9ydCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcHI6IHJlc29sdmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWxEcHI6IHN0YXRlLnZpZXdwb3J0LmluaXRpYWxEcHIgfHwgcmVzb2x2ZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBzZXRGcmFtZWxvb3A6IChmcmFtZWxvb3A6ICdhbHdheXMnIHwgJ2RlbWFuZCcgfCAnbmV2ZXInID0gJ2Fsd2F5cycpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2xvY2sgPSB0aGlzLmdldCgnY2xvY2snKTtcbiAgICAgICAgICAgICAgICAgICAgY2xvY2suc3RvcCgpO1xuICAgICAgICAgICAgICAgICAgICBjbG9jay5lbGFwc2VkVGltZSA9IDA7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGZyYW1lbG9vcCAhPT0gJ25ldmVyJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2xvY2suc3RhcnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsb2NrLmVsYXBzZWRUaW1lID0gMDtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0KHsgZnJhbWVsb29wIH0pO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgYWRkSW50ZXJhY3Rpb246IChpbnRlcmFjdGlvbikgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldCgoc3RhdGUpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpbnRlcm5hbDogeyAuLi5zdGF0ZS5pbnRlcm5hbCwgaW50ZXJhY3Rpb246IFsuLi5zdGF0ZS5pbnRlcm5hbC5pbnRlcmFjdGlvbiwgaW50ZXJhY3Rpb25dIH0sXG4gICAgICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHJlbW92ZUludGVyYWN0aW9uOiAodXVpZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldCgoc3RhdGUpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpbnRlcm5hbDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnN0YXRlLmludGVybmFsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVyYWN0aW9uOiBzdGF0ZS5pbnRlcm5hbC5pbnRlcmFjdGlvbi5maWx0ZXIoKGludGVyYWN0aW9uKSA9PiBpbnRlcmFjdGlvbi51dWlkICE9PSB1dWlkKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHRoaXMuaXNJbml0ID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMucmVzaXplKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb25maWd1cmUoaW5wdXRzOiBOZ3RDYW52YXNJbnB1dHMsIGNhbnZhc0VsZW1lbnQ6IEhUTUxDYW52YXNFbGVtZW50KSB7XG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIGdsOiBnbE9wdGlvbnMsXG4gICAgICAgICAgICBzaXplOiBzaXplT3B0aW9ucyxcbiAgICAgICAgICAgIGNhbWVyYTogY2FtZXJhT3B0aW9ucyxcbiAgICAgICAgICAgIHJheWNhc3RlcjogcmF5Y2FzdGVyT3B0aW9ucyxcbiAgICAgICAgICAgIGV2ZW50cyxcbiAgICAgICAgICAgIG9ydGhvZ3JhcGhpYyxcbiAgICAgICAgICAgIGxvb2tBdCxcbiAgICAgICAgICAgIHNoYWRvd3MsXG4gICAgICAgICAgICBsaW5lYXIsXG4gICAgICAgICAgICBsZWdhY3ksXG4gICAgICAgICAgICBmbGF0LFxuICAgICAgICAgICAgZHByLFxuICAgICAgICAgICAgZnJhbWVsb29wLFxuICAgICAgICAgICAgcGVyZm9ybWFuY2UsXG4gICAgICAgIH0gPSBpbnB1dHM7XG5cbiAgICAgICAgY29uc3Qgc3RhdGUgPSB0aGlzLmdldCgpO1xuICAgICAgICBjb25zdCBzdGF0ZVRvVXBkYXRlOiBQYXJ0aWFsPE5ndFN0YXRlPiA9IHt9O1xuXG4gICAgICAgIC8vIHNldHVwIHJlbmRlcmVyXG4gICAgICAgIGxldCBnbCA9IHN0YXRlLmdsO1xuICAgICAgICBpZiAoIXN0YXRlLmdsKSB7XG4gICAgICAgICAgICBzdGF0ZVRvVXBkYXRlLmdsID0gZ2wgPSBtYWtlRGVmYXVsdFJlbmRlcmVyKGdsT3B0aW9ucywgY2FudmFzRWxlbWVudCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBzZXR1cCByYXljYXN0ZXJcbiAgICAgICAgbGV0IHJheWNhc3RlciA9IHN0YXRlLnJheWNhc3RlcjtcbiAgICAgICAgaWYgKCFyYXljYXN0ZXIpIHtcbiAgICAgICAgICAgIHN0YXRlVG9VcGRhdGUucmF5Y2FzdGVyID0gcmF5Y2FzdGVyID0gbmV3IFRIUkVFLlJheWNhc3RlcigpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gc2V0IHJheWNhc3RlciBvcHRpb25zXG4gICAgICAgIGNvbnN0IHsgcGFyYW1zLCAuLi5vcHRpb25zIH0gPSByYXljYXN0ZXJPcHRpb25zIHx8IHt9O1xuICAgICAgICBpZiAoIWlzLmVxdShvcHRpb25zLCByYXljYXN0ZXIsIHNoYWxsb3dMb29zZSkpIGFwcGx5UHJvcHMocmF5Y2FzdGVyLCB7IC4uLm9wdGlvbnMgfSk7XG4gICAgICAgIGlmICghaXMuZXF1KHBhcmFtcywgcmF5Y2FzdGVyLnBhcmFtcywgc2hhbGxvd0xvb3NlKSkge1xuICAgICAgICAgICAgYXBwbHlQcm9wcyhyYXljYXN0ZXIsIHsgcGFyYW1zOiB7IC4uLnJheWNhc3Rlci5wYXJhbXMsIC4uLihwYXJhbXMgfHwge30pIH0gfSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBjcmVhdGUgZGVmYXVsdCBjYW1lcmFcbiAgICAgICAgaWYgKCFzdGF0ZS5jYW1lcmEpIHtcbiAgICAgICAgICAgIGNvbnN0IGlzQ2FtZXJhID0gaXMuY2FtZXJhKGNhbWVyYU9wdGlvbnMpO1xuICAgICAgICAgICAgbGV0IGNhbWVyYSA9IGlzQ2FtZXJhID8gY2FtZXJhT3B0aW9ucyA6IG1ha2VEZWZhdWx0Q2FtZXJhKG9ydGhvZ3JhcGhpYyB8fCBmYWxzZSwgc3RhdGUuc2l6ZSk7XG5cbiAgICAgICAgICAgIGlmICghaXNDYW1lcmEpIHtcbiAgICAgICAgICAgICAgICBpZiAoY2FtZXJhT3B0aW9ucykgYXBwbHlQcm9wcyhjYW1lcmEsIGNhbWVyYU9wdGlvbnMpO1xuXG4gICAgICAgICAgICAgICAgLy8gc2V0IHBvc2l0aW9uLnpcbiAgICAgICAgICAgICAgICBpZiAoIWNhbWVyYU9wdGlvbnM/LnBvc2l0aW9uKSBjYW1lcmEucG9zaXRpb24ueiA9IDU7XG5cbiAgICAgICAgICAgICAgICAvLyBhbHdheXMgbG9vayBhdCBjZW50ZXIgb3IgcGFzc2VkLWluIGxvb2tBdCBieSBkZWZhdWx0XG4gICAgICAgICAgICAgICAgaWYgKCFjYW1lcmFPcHRpb25zPy5yb3RhdGlvbikge1xuICAgICAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShsb29rQXQpKSBjYW1lcmEubG9va0F0KGxvb2tBdFswXSwgbG9va0F0WzFdLCBsb29rQXRbMl0pO1xuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChsb29rQXQgaW5zdGFuY2VvZiBUSFJFRS5WZWN0b3IzKSBjYW1lcmEubG9va0F0KGxvb2tBdCk7XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgY2FtZXJhLmxvb2tBdCgwLCAwLCAwKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyB1cGRhdGUgcHJvamVjdGlvbiBtYXRyaXggYWZ0ZXIgYXBwbHlwcm9wc1xuICAgICAgICAgICAgICAgIGNhbWVyYS51cGRhdGVQcm9qZWN0aW9uTWF0cml4KCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghaXMuaW5zdGFuY2UoY2FtZXJhKSkge1xuICAgICAgICAgICAgICAgIGNhbWVyYSA9IHByZXBhcmUoY2FtZXJhLCB7IHN0b3JlOiB0aGlzIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc3RhdGVUb1VwZGF0ZS5jYW1lcmEgPSBjYW1lcmE7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTZXQgdXAgWFIgKG9uZSB0aW1lIG9ubHkhKVxuICAgICAgICBpZiAoIXN0YXRlLnhyKSB7XG4gICAgICAgICAgICAvLyBIYW5kbGUgZnJhbWUgYmVoYXZpb3IgaW4gV2ViWFJcbiAgICAgICAgICAgIGNvbnN0IGhhbmRsZVhSRnJhbWU6IFhSRnJhbWVSZXF1ZXN0Q2FsbGJhY2sgPSAodGltZXN0YW1wOiBudW1iZXIsIGZyYW1lPzogWFJGcmFtZSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHN0YXRlID0gdGhpcy5nZXQoKTtcbiAgICAgICAgICAgICAgICBpZiAoc3RhdGUuZnJhbWVsb29wID09PSAnbmV2ZXInKSByZXR1cm47XG4gICAgICAgICAgICAgICAgYWR2YW5jZSh0aW1lc3RhbXAsIHRydWUsIHRoaXMsIGZyYW1lKTtcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIC8vIFRvZ2dsZSByZW5kZXIgc3dpdGNoaW5nIG9uIHNlc3Npb25cbiAgICAgICAgICAgIGNvbnN0IGhhbmRsZVNlc3Npb25DaGFuZ2UgPSAoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc3RhdGUgPSB0aGlzLmdldCgpO1xuICAgICAgICAgICAgICAgIHN0YXRlLmdsLnhyLmVuYWJsZWQgPSBzdGF0ZS5nbC54ci5pc1ByZXNlbnRpbmc7XG5cbiAgICAgICAgICAgICAgICBzdGF0ZS5nbC54ci5zZXRBbmltYXRpb25Mb29wKHN0YXRlLmdsLnhyLmlzUHJlc2VudGluZyA/IGhhbmRsZVhSRnJhbWUgOiBudWxsKTtcbiAgICAgICAgICAgICAgICBpZiAoIXN0YXRlLmdsLnhyLmlzUHJlc2VudGluZykgaW52YWxpZGF0ZSh0aGlzKTtcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIC8vIFdlYlhSIHNlc3Npb24gbWFuYWdlclxuICAgICAgICAgICAgY29uc3QgeHIgPSB7XG4gICAgICAgICAgICAgICAgY29ubmVjdDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBnbC54ci5hZGRFdmVudExpc3RlbmVyKCdzZXNzaW9uc3RhcnQnLCBoYW5kbGVTZXNzaW9uQ2hhbmdlKTtcbiAgICAgICAgICAgICAgICAgICAgZ2wueHIuYWRkRXZlbnRMaXN0ZW5lcignc2Vzc2lvbmVuZCcsIGhhbmRsZVNlc3Npb25DaGFuZ2UpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZGlzY29ubmVjdDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBnbC54ci5yZW1vdmVFdmVudExpc3RlbmVyKCdzZXNzaW9uc3RhcnQnLCBoYW5kbGVTZXNzaW9uQ2hhbmdlKTtcbiAgICAgICAgICAgICAgICAgICAgZ2wueHIucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Vzc2lvbmVuZCcsIGhhbmRsZVNlc3Npb25DaGFuZ2UpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAvLyBTdWJzY3JpYmUgdG8gV2ViWFIgc2Vzc2lvbiBldmVudHNcbiAgICAgICAgICAgIGlmIChnbC54cikgeHIuY29ubmVjdCgpO1xuICAgICAgICAgICAgc3RhdGVUb1VwZGF0ZS54ciA9IHhyO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gU2V0IHNoYWRvd21hcFxuICAgICAgICBpZiAoZ2wuc2hhZG93TWFwKSB7XG4gICAgICAgICAgICBjb25zdCBpc0Jvb2xlYW4gPSB0eXBlb2Ygc2hhZG93cyA9PT0gJ2Jvb2xlYW4nO1xuICAgICAgICAgICAgaWYgKChpc0Jvb2xlYW4gJiYgZ2wuc2hhZG93TWFwLmVuYWJsZWQgIT09IHNoYWRvd3MpIHx8ICFpcy5lcXUoc2hhZG93cywgZ2wuc2hhZG93TWFwLCBzaGFsbG93TG9vc2UpKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgb2xkID0gZ2wuc2hhZG93TWFwLmVuYWJsZWQ7XG4gICAgICAgICAgICAgICAgZ2wuc2hhZG93TWFwLmVuYWJsZWQgPSAhIXNoYWRvd3M7XG4gICAgICAgICAgICAgICAgaWYgKCFpc0Jvb2xlYW4pIE9iamVjdC5hc3NpZ24oZ2wuc2hhZG93TWFwLCBzaGFkb3dzKTtcbiAgICAgICAgICAgICAgICBlbHNlIGdsLnNoYWRvd01hcC50eXBlID0gVEhSRUUuUENGU29mdFNoYWRvd01hcDtcblxuICAgICAgICAgICAgICAgIGlmIChvbGQgIT09IGdsLnNoYWRvd01hcC5lbmFibGVkKSBjaGVja05lZWRzVXBkYXRlKGdsLnNoYWRvd01hcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTYWZlbHkgc2V0IGNvbG9yIG1hbmFnZW1lbnQgaWYgYXZhaWxhYmxlLlxuICAgICAgICAvLyBBdm9pZCBhY2Nlc3NpbmcgVEhSRUUuQ29sb3JNYW5hZ2VtZW50IHRvIHBsYXkgbmljZSB3aXRoIG9sZGVyIHZlcnNpb25zXG4gICAgICAgIGlmIChUSFJFRS5Db2xvck1hbmFnZW1lbnQpIFRIUkVFLkNvbG9yTWFuYWdlbWVudC5sZWdhY3lNb2RlID0gbGVnYWN5ID8/IHRydWU7XG4gICAgICAgIGNvbnN0IG91dHB1dEVuY29kaW5nID0gbGluZWFyID8gVEhSRUUuTGluZWFyRW5jb2RpbmcgOiBUSFJFRS5zUkdCRW5jb2Rpbmc7XG4gICAgICAgIGNvbnN0IHRvbmVNYXBwaW5nID0gZmxhdCA/IFRIUkVFLk5vVG9uZU1hcHBpbmcgOiBUSFJFRS5BQ0VTRmlsbWljVG9uZU1hcHBpbmc7XG5cbiAgICAgICAgaWYgKGdsLm91dHB1dEVuY29kaW5nICE9PSBvdXRwdXRFbmNvZGluZykgZ2wub3V0cHV0RW5jb2RpbmcgPSBvdXRwdXRFbmNvZGluZztcbiAgICAgICAgaWYgKGdsLnRvbmVNYXBwaW5nICE9PSB0b25lTWFwcGluZykgZ2wudG9uZU1hcHBpbmcgPSB0b25lTWFwcGluZztcblxuICAgICAgICAvLyBVcGRhdGUgY29sb3IgbWFuYWdlbWVudCBzdGF0ZVxuICAgICAgICBpZiAoc3RhdGUubGVnYWN5ICE9PSBsZWdhY3kpIHN0YXRlVG9VcGRhdGUubGVnYWN5ID0gbGVnYWN5O1xuICAgICAgICBpZiAoc3RhdGUubGluZWFyICE9PSBsaW5lYXIpIHN0YXRlVG9VcGRhdGUubGluZWFyID0gbGluZWFyO1xuICAgICAgICBpZiAoc3RhdGUuZmxhdCAhPT0gZmxhdCkgc3RhdGVUb1VwZGF0ZS5mbGF0ID0gZmxhdDtcblxuICAgICAgICAvLyBTZXQgZ2wgcHJvcHNcbiAgICAgICAgZ2wuc2V0Q2xlYXJBbHBoYSgwKTtcbiAgICAgICAgZ2wuc2V0UGl4ZWxSYXRpbyhtYWtlRHByKHN0YXRlLnZpZXdwb3J0LmRwcikpO1xuICAgICAgICBnbC5zZXRTaXplKHN0YXRlLnNpemUud2lkdGgsIHN0YXRlLnNpemUuaGVpZ2h0KTtcblxuICAgICAgICBpZiAoXG4gICAgICAgICAgICBpcy5vYmooZ2xPcHRpb25zKSAmJlxuICAgICAgICAgICAgISh0eXBlb2YgZ2xPcHRpb25zID09PSAnZnVuY3Rpb24nKSAmJlxuICAgICAgICAgICAgIWlzLnJlbmRlcmVyKGdsT3B0aW9ucykgJiZcbiAgICAgICAgICAgICFpcy5lcXUoZ2xPcHRpb25zLCBnbCwgc2hhbGxvd0xvb3NlKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIGFwcGx5UHJvcHMoZ2wsIGdsT3B0aW9ucyk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTdG9yZSBldmVudHMgaW50ZXJuYWxseVxuICAgICAgICBpZiAoZXZlbnRzICYmICFzdGF0ZS5ldmVudHMuaGFuZGxlcnMpIHtcbiAgICAgICAgICAgIHN0YXRlVG9VcGRhdGUuZXZlbnRzID0gZXZlbnRzKHRoaXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ2hlY2sgcGVyZm9ybWFuY2VcbiAgICAgICAgaWYgKHBlcmZvcm1hbmNlICYmICFpcy5lcXUocGVyZm9ybWFuY2UsIHN0YXRlLnBlcmZvcm1hbmNlLCBzaGFsbG93TG9vc2UpKSB7XG4gICAgICAgICAgICBzdGF0ZVRvVXBkYXRlLnBlcmZvcm1hbmNlID0geyAuLi5zdGF0ZS5wZXJmb3JtYW5jZSwgLi4ucGVyZm9ybWFuY2UgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2V0KHN0YXRlVG9VcGRhdGUpO1xuXG4gICAgICAgIC8vIENoZWNrIHBpeGVscmF0aW9cbiAgICAgICAgaWYgKGRwciAmJiBzdGF0ZS52aWV3cG9ydC5kcHIgIT09IG1ha2VEcHIoZHByKSkgc3RhdGUuc2V0RHByKGRwcik7XG4gICAgICAgIC8vIENoZWNrIHNpemUsIGFsbG93IGl0IHRvIHRha2Ugb24gY29udGFpbmVyIGJvdW5kcyBpbml0aWFsbHlcbiAgICAgICAgY29uc3Qgc2l6ZSA9IGNvbXB1dGVJbml0aWFsU2l6ZShjYW52YXNFbGVtZW50LCBzaXplT3B0aW9ucyk7XG4gICAgICAgIGlmICghaXMuZXF1KHNpemUsIHN0YXRlLnNpemUsIHNoYWxsb3dMb29zZSkpIHN0YXRlLnNldFNpemUoc2l6ZS53aWR0aCwgc2l6ZS5oZWlnaHQsIHNpemUudG9wLCBzaXplLmxlZnQpO1xuXG4gICAgICAgIC8vIENoZWNrIGZyYW1lbG9vcFxuICAgICAgICBpZiAoc3RhdGUuZnJhbWVsb29wICE9PSBmcmFtZWxvb3ApIHN0YXRlLnNldEZyYW1lbG9vcChmcmFtZWxvb3ApO1xuXG4gICAgICAgIGlmICghdGhpcy5nZXQoJ3JlYWR5JykpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0KHsgcmVhZHk6IHRydWUgfSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmludmFsaWRhdGUoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlc2l6ZSgpIHtcbiAgICAgICAgY29uc3Qgc3RhdGUgPSB0aGlzLmdldCgpO1xuICAgICAgICBsZXQgb2xkU2l6ZSA9IHN0YXRlLnNpemU7XG4gICAgICAgIGxldCBvbGREcHIgPSBzdGF0ZS52aWV3cG9ydC5kcHI7XG4gICAgICAgIGxldCBvbGRDYW1lcmEgPSBzdGF0ZS5jYW1lcmE7XG5cbiAgICAgICAgdGhpcy5ob2xkKHRoaXMuc2VsZWN0KHNlbGVjdFNsaWNlKFsnY2FtZXJhJywgJ3NpemUnLCAndmlld3BvcnQnLCAnZ2wnXSkpLCAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB7IGNhbWVyYSwgc2l6ZSwgdmlld3BvcnQsIGdsLCBzZXQgfSA9IHRoaXMuZ2V0KCk7XG4gICAgICAgICAgICAvLyByZXNpemUgY2FtZXJhIGFuZCByZW5kZXJlciBvbiBjaGFuZ2VzIHRvIHNpemUgYW5kIGRwclxuICAgICAgICAgICAgaWYgKHNpemUgIT09IG9sZFNpemUgfHwgdmlld3BvcnQuZHByICE9PSBvbGREcHIpIHtcbiAgICAgICAgICAgICAgICBvbGRTaXplID0gc2l6ZTtcbiAgICAgICAgICAgICAgICBvbGREcHIgPSB2aWV3cG9ydC5kcHI7XG4gICAgICAgICAgICAgICAgLy8gdXBkYXRlIGNhbWVyYVxuICAgICAgICAgICAgICAgIHVwZGF0ZUNhbWVyYShjYW1lcmEsIHNpemUpO1xuICAgICAgICAgICAgICAgIGdsLnNldFBpeGVsUmF0aW8odmlld3BvcnQuZHByKTtcbiAgICAgICAgICAgICAgICBnbC5zZXRTaXplKHNpemUud2lkdGgsIHNpemUuaGVpZ2h0KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gdXBkYXRlIHZpZXdwb3J0IHdoZW4gY2FtZXJhIGNoYW5nZXNcbiAgICAgICAgICAgIGlmIChjYW1lcmEgIT09IG9sZENhbWVyYSkge1xuICAgICAgICAgICAgICAgIHVwZGF0ZUNhbWVyYShjYW1lcmEsIHNpemUpO1xuICAgICAgICAgICAgICAgIG9sZENhbWVyYSA9IGNhbWVyYTtcbiAgICAgICAgICAgICAgICBzZXQoKHN0YXRlKSA9PiAoeyB2aWV3cG9ydDogeyAuLi5zdGF0ZS52aWV3cG9ydCwgLi4uc3RhdGUudmlld3BvcnQuZ2V0Q3VycmVudFZpZXdwb3J0KGNhbWVyYSkgfSB9KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW52YWxpZGF0ZSgpIHtcbiAgICAgICAgdGhpcy5ob2xkKHRoaXMuc2VsZWN0KCksICgpID0+IGludmFsaWRhdGUodGhpcykpO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gY29tcHV0ZUluaXRpYWxTaXplKGNhbnZhczogSFRNTENhbnZhc0VsZW1lbnQgfCBUSFJFRS5PZmZzY3JlZW5DYW52YXMsIGRlZmF1bHRTaXplPzogTmd0U2l6ZSk6IE5ndFNpemUge1xuICAgIGlmIChkZWZhdWx0U2l6ZSkge1xuICAgICAgICByZXR1cm4gZGVmYXVsdFNpemU7XG4gICAgfVxuXG4gICAgaWYgKGNhbnZhcyBpbnN0YW5jZW9mIEhUTUxDYW52YXNFbGVtZW50ICYmIGNhbnZhcy5wYXJlbnRFbGVtZW50KSB7XG4gICAgICAgIGNvbnN0IHsgd2lkdGgsIGhlaWdodCwgdG9wLCBsZWZ0IH0gPSBjYW52YXMucGFyZW50RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgcmV0dXJuIHsgd2lkdGgsIGhlaWdodCwgdG9wLCBsZWZ0IH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgd2lkdGg6IDAsIGhlaWdodDogMCwgdG9wOiAwLCBsZWZ0OiAwIH07XG59XG4iXX0=
|
|
@@ -26,4 +26,7 @@ function assignEmpty(obj, base) {
|
|
|
26
26
|
obj[base] = {};
|
|
27
27
|
}
|
|
28
28
|
}
|
|
29
|
-
|
|
29
|
+
export function createAttachFunction(cb) {
|
|
30
|
+
return (parent, child, store) => cb({ parent, child, store });
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0YWNoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXRocmVlL3NyYy9saWIvdXRpbHMvYXR0YWNoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUUzQyxNQUFNLFVBQVUsTUFBTSxDQUFDLE1BQW9CLEVBQUUsS0FBYyxFQUFFLFFBQWtCLEVBQUU7SUFDN0UsTUFBTSxDQUFDLElBQUksRUFBRSxHQUFHLFNBQVMsQ0FBQyxHQUFHLEtBQUssQ0FBQztJQUNuQyxJQUFJLENBQUMsSUFBSTtRQUFFLE9BQU87SUFFbEIsSUFBSSxTQUFTLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtRQUN4QixVQUFVLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0tBQ3pDO1NBQU07UUFDSCxXQUFXLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzFCLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0tBQzFDO0FBQ0wsQ0FBQztBQUVELE1BQU0sVUFBVSxNQUFNLENBQUMsTUFBb0IsRUFBRSxLQUFtQixFQUFFLFVBQXdDO0lBQ3RHLE1BQU0sZUFBZSxHQUFHLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM3QyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUU7UUFDM0IsTUFBTSxDQUFDLE1BQU0sRUFBRSxlQUFlLENBQUMsY0FBYyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0tBQzlEO1NBQU07UUFDRixlQUFlLENBQUMsY0FBMkIsRUFBRSxDQUFDO0tBQ2xEO0FBQ0wsQ0FBQztBQUVELFNBQVMsV0FBVyxDQUFDLEdBQWlCLEVBQUUsSUFBWTtJQUNoRCxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsSUFBSSxPQUFPLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxTQUFTLEVBQUU7UUFDL0csR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztLQUNsQjtBQUNMLENBQUM7QUFFRCxNQUFNLFVBQVUsb0JBQW9CLENBQ2hDLEVBQW9HO0lBRXBHLE9BQU8sQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0FBQ2xFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ3RSeFN0b3JlIH0gZnJvbSAnLi4vc3RvcmVzL3J4LXN0b3JlJztcbmltcG9ydCB0eXBlIHsgTmd0QW55UmVjb3JkLCBOZ3RBdHRhY2hGdW5jdGlvbiwgTmd0U3RhdGUgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBhcHBseVByb3BzIH0gZnJvbSAnLi9hcHBseS1wcm9wcyc7XG5pbXBvcnQgeyBnZXRMb2NhbFN0YXRlIH0gZnJvbSAnLi9pbnN0YW5jZSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBhdHRhY2gob2JqZWN0OiBOZ3RBbnlSZWNvcmQsIHZhbHVlOiB1bmtub3duLCBwYXRoczogc3RyaW5nW10gPSBbXSk6IHZvaWQge1xuICAgIGNvbnN0IFtiYXNlLCAuLi5yZW1haW5pbmddID0gcGF0aHM7XG4gICAgaWYgKCFiYXNlKSByZXR1cm47XG5cbiAgICBpZiAocmVtYWluaW5nLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBhcHBseVByb3BzKG9iamVjdCwgeyBbYmFzZV06IHZhbHVlIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGFzc2lnbkVtcHR5KG9iamVjdCwgYmFzZSk7XG4gICAgICAgIGF0dGFjaChvYmplY3RbYmFzZV0sIHZhbHVlLCByZW1haW5pbmcpO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRldGFjaChwYXJlbnQ6IE5ndEFueVJlY29yZCwgY2hpbGQ6IE5ndEFueVJlY29yZCwgYXR0YWNoUHJvcDogc3RyaW5nW10gfCBOZ3RBdHRhY2hGdW5jdGlvbikge1xuICAgIGNvbnN0IGNoaWxkTG9jYWxTdGF0ZSA9IGdldExvY2FsU3RhdGUoY2hpbGQpO1xuICAgIGlmIChBcnJheS5pc0FycmF5KGF0dGFjaFByb3ApKSB7XG4gICAgICAgIGF0dGFjaChwYXJlbnQsIGNoaWxkTG9jYWxTdGF0ZS5wcmV2aW91c0F0dGFjaCwgYXR0YWNoUHJvcCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgKGNoaWxkTG9jYWxTdGF0ZS5wcmV2aW91c0F0dGFjaCBhcyBGdW5jdGlvbikoKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGFzc2lnbkVtcHR5KG9iajogTmd0QW55UmVjb3JkLCBiYXNlOiBzdHJpbmcpIHtcbiAgICBpZiAoKCFPYmplY3QuaGFzT3duKG9iaiwgYmFzZSkgJiYgUmVmbGVjdCAmJiAhIVJlZmxlY3QuaGFzICYmICFSZWZsZWN0LmhhcyhvYmosIGJhc2UpKSB8fCBvYmpbYmFzZV0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBvYmpbYmFzZV0gPSB7fTtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVBdHRhY2hGdW5jdGlvbjxUUGFyZW50ID0gYW55LCBUQ2hpbGQgPSBhbnk+KFxuICAgIGNiOiAocGFyYW1zOiB7IHBhcmVudDogVFBhcmVudDsgY2hpbGQ6IFRDaGlsZDsgc3RvcmU6IE5ndFJ4U3RvcmU8Tmd0U3RhdGU+IH0pID0+ICgoKSA9PiB2b2lkKSB8IHZvaWRcbik6IE5ndEF0dGFjaEZ1bmN0aW9uPFRDaGlsZCwgVFBhcmVudD4ge1xuICAgIHJldHVybiAocGFyZW50LCBjaGlsZCwgc3RvcmUpID0+IGNiKHsgcGFyZW50LCBjaGlsZCwgc3RvcmUgfSk7XG59XG4iXX0=
|
|
@@ -12,7 +12,7 @@ export function invalidateInstance(instance) {
|
|
|
12
12
|
checkUpdate(instance);
|
|
13
13
|
}
|
|
14
14
|
export function prepare(object, localState) {
|
|
15
|
-
const instance = object;
|
|
15
|
+
const instance = (typeof object === 'function' ? object() : object);
|
|
16
16
|
if (localState?.primitive || !instance.__ngt__) {
|
|
17
17
|
const { objects = new BehaviorSubject([]), nonObjects = new BehaviorSubject([]), ...rest } = localState || {};
|
|
18
18
|
instance.__ngt__ = {
|
|
@@ -25,7 +25,15 @@ export function prepare(object, localState) {
|
|
|
25
25
|
objects,
|
|
26
26
|
nonObjects,
|
|
27
27
|
add: (object, type) => {
|
|
28
|
-
instance.__ngt__[type].
|
|
28
|
+
const current = instance.__ngt__[type].value;
|
|
29
|
+
const foundIndex = current.indexOf((obj) => obj === object);
|
|
30
|
+
if (foundIndex > -1) {
|
|
31
|
+
current.splice(foundIndex, 1, object);
|
|
32
|
+
instance.__ngt__[type].next(current);
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
instance.__ngt__[type].next([...instance.__ngt__[type].value, object]);
|
|
36
|
+
}
|
|
29
37
|
notifyAncestors(instance.__ngt__.parent);
|
|
30
38
|
},
|
|
31
39
|
remove: (object, type) => {
|
|
@@ -47,4 +55,4 @@ function notifyAncestors(instance) {
|
|
|
47
55
|
localState.nonObjects.next(localState.nonObjects.value);
|
|
48
56
|
notifyAncestors(localState.parent);
|
|
49
57
|
}
|
|
50
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
58
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdGFuY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUvc3JjL2xpYi91dGlscy9pbnN0YW5jZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXZDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFdkMsTUFBTSxVQUFVLGFBQWEsQ0FDekIsR0FBMEI7SUFFMUIsSUFBSSxDQUFDLEdBQUc7UUFBRSxPQUFPLEVBQXNDLENBQUM7SUFDeEQsT0FBUSxHQUFvQixDQUFDLFNBQVMsQ0FBQyxJQUFLLEVBQTRCLENBQUM7QUFDN0UsQ0FBQztBQUVELE1BQU0sVUFBVSxrQkFBa0IsQ0FBMkIsUUFBbUI7SUFDNUUsTUFBTSxLQUFLLEdBQUcsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUNuRCxJQUFJLEtBQUssSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sS0FBSyxDQUFDO1FBQUUsS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQzdELFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUMxQixDQUFDO0FBRUQsTUFBTSxVQUFVLE9BQU8sQ0FDbkIsTUFBcUMsRUFDckMsVUFBMkM7SUFFM0MsTUFBTSxRQUFRLEdBQUcsQ0FBQyxPQUFPLE1BQU0sS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQTBDLENBQUM7SUFFN0csSUFBSSxVQUFVLEVBQUUsU0FBUyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRTtRQUM1QyxNQUFNLEVBQ0YsT0FBTyxHQUFHLElBQUksZUFBZSxDQUFvQixFQUFFLENBQUMsRUFDcEQsVUFBVSxHQUFHLElBQUksZUFBZSxDQUFvQixFQUFFLENBQUMsRUFDdkQsR0FBRyxJQUFJLEVBQ1YsR0FBRyxVQUFVLElBQUksRUFBRSxDQUFDO1FBRXJCLFFBQVEsQ0FBQyxPQUFPLEdBQUc7WUFDZixjQUFjLEVBQUUsSUFBSTtZQUNwQixLQUFLLEVBQUUsSUFBSTtZQUNYLE1BQU0sRUFBRSxJQUFJO1lBQ1osUUFBUSxFQUFFLEVBQUU7WUFDWixVQUFVLEVBQUUsQ0FBQztZQUNiLFFBQVEsRUFBRSxFQUFFO1lBQ1osT0FBTztZQUNQLFVBQVU7WUFDVixHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLEVBQUU7Z0JBQ2xCLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDO2dCQUM3QyxNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBb0IsRUFBRSxFQUFFLENBQUMsR0FBRyxLQUFLLE1BQU0sQ0FBQyxDQUFDO2dCQUM3RSxJQUFJLFVBQVUsR0FBRyxDQUFDLENBQUMsRUFBRTtvQkFDakIsT0FBTyxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO29CQUN0QyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztpQkFDeEM7cUJBQU07b0JBQ0gsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7aUJBQzFFO2dCQUNELGVBQWUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQzdDLENBQUM7WUFDRCxNQUFNLEVBQUUsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLEVBQUU7Z0JBQ3JCLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUM7Z0JBQ3RGLGVBQWUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQzdDLENBQUM7WUFDRCxHQUFHLElBQUk7U0FDZSxDQUFDO0tBQzlCO0lBRUQsT0FBTyxRQUFRLENBQUM7QUFDcEIsQ0FBQztBQUVELFNBQVMsZUFBZSxDQUFDLFFBQWdDO0lBQ3JELElBQUksQ0FBQyxRQUFRO1FBQUUsT0FBTztJQUN0QixNQUFNLFVBQVUsR0FBRyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDM0MsSUFBSSxVQUFVLENBQUMsT0FBTztRQUFFLFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDMUUsSUFBSSxVQUFVLENBQUMsVUFBVTtRQUFFLFVBQVUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbkYsZUFBZSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUN2QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgdHlwZSB7IE5ndEFueVJlY29yZCwgTmd0SW5zdGFuY2VMb2NhbFN0YXRlLCBOZ3RJbnN0YW5jZU5vZGUgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBjaGVja1VwZGF0ZSB9IGZyb20gJy4vdXBkYXRlJztcblxuZXhwb3J0IGZ1bmN0aW9uIGdldExvY2FsU3RhdGU8VEluc3RhbmNlIGV4dGVuZHMgb2JqZWN0ID0gTmd0QW55UmVjb3JkPihcbiAgICBvYmo6IFRJbnN0YW5jZSB8IHVuZGVmaW5lZFxuKTogTmd0SW5zdGFuY2VMb2NhbFN0YXRlIHtcbiAgICBpZiAoIW9iaikgcmV0dXJuIHt9IGFzIHVua25vd24gYXMgTmd0SW5zdGFuY2VMb2NhbFN0YXRlO1xuICAgIHJldHVybiAob2JqIGFzIE5ndEFueVJlY29yZClbJ19fbmd0X18nXSB8fCAoe30gYXMgTmd0SW5zdGFuY2VMb2NhbFN0YXRlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGludmFsaWRhdGVJbnN0YW5jZTxUSW5zdGFuY2UgZXh0ZW5kcyBvYmplY3Q+KGluc3RhbmNlOiBUSW5zdGFuY2UpIHtcbiAgICBjb25zdCBzdGF0ZSA9IGdldExvY2FsU3RhdGUoaW5zdGFuY2UpLnN0b3JlPy5nZXQoKTtcbiAgICBpZiAoc3RhdGUgJiYgc3RhdGUuaW50ZXJuYWwuZnJhbWVzID09PSAwKSBzdGF0ZS5pbnZhbGlkYXRlKCk7XG4gICAgY2hlY2tVcGRhdGUoaW5zdGFuY2UpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJlcGFyZTxUSW5zdGFuY2UgZXh0ZW5kcyBvYmplY3QgPSBOZ3RBbnlSZWNvcmQ+KFxuICAgIG9iamVjdDogVEluc3RhbmNlIHwgKCgpID0+IFRJbnN0YW5jZSksXG4gICAgbG9jYWxTdGF0ZT86IFBhcnRpYWw8Tmd0SW5zdGFuY2VMb2NhbFN0YXRlPlxuKTogTmd0SW5zdGFuY2VOb2RlPFRJbnN0YW5jZT4ge1xuICAgIGNvbnN0IGluc3RhbmNlID0gKHR5cGVvZiBvYmplY3QgPT09ICdmdW5jdGlvbicgPyBvYmplY3QoKSA6IG9iamVjdCkgYXMgdW5rbm93biBhcyBOZ3RJbnN0YW5jZU5vZGU8VEluc3RhbmNlPjtcblxuICAgIGlmIChsb2NhbFN0YXRlPy5wcmltaXRpdmUgfHwgIWluc3RhbmNlLl9fbmd0X18pIHtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgb2JqZWN0cyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Tmd0SW5zdGFuY2VOb2RlW10+KFtdKSxcbiAgICAgICAgICAgIG5vbk9iamVjdHMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE5ndEluc3RhbmNlTm9kZVtdPihbXSksXG4gICAgICAgICAgICAuLi5yZXN0XG4gICAgICAgIH0gPSBsb2NhbFN0YXRlIHx8IHt9O1xuXG4gICAgICAgIGluc3RhbmNlLl9fbmd0X18gPSB7XG4gICAgICAgICAgICBwcmV2aW91c0F0dGFjaDogbnVsbCxcbiAgICAgICAgICAgIHN0b3JlOiBudWxsLFxuICAgICAgICAgICAgcGFyZW50OiBudWxsLFxuICAgICAgICAgICAgbWVtb2l6ZWQ6IHt9LFxuICAgICAgICAgICAgZXZlbnRDb3VudDogMCxcbiAgICAgICAgICAgIGhhbmRsZXJzOiB7fSxcbiAgICAgICAgICAgIG9iamVjdHMsXG4gICAgICAgICAgICBub25PYmplY3RzLFxuICAgICAgICAgICAgYWRkOiAob2JqZWN0LCB0eXBlKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgY3VycmVudCA9IGluc3RhbmNlLl9fbmd0X19bdHlwZV0udmFsdWU7XG4gICAgICAgICAgICAgICAgY29uc3QgZm91bmRJbmRleCA9IGN1cnJlbnQuaW5kZXhPZigob2JqOiBOZ3RJbnN0YW5jZU5vZGUpID0+IG9iaiA9PT0gb2JqZWN0KTtcbiAgICAgICAgICAgICAgICBpZiAoZm91bmRJbmRleCA+IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnQuc3BsaWNlKGZvdW5kSW5kZXgsIDEsIG9iamVjdCk7XG4gICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLl9fbmd0X19bdHlwZV0ubmV4dChjdXJyZW50KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS5fX25ndF9fW3R5cGVdLm5leHQoWy4uLmluc3RhbmNlLl9fbmd0X19bdHlwZV0udmFsdWUsIG9iamVjdF0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBub3RpZnlBbmNlc3RvcnMoaW5zdGFuY2UuX19uZ3RfXy5wYXJlbnQpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJlbW92ZTogKG9iamVjdCwgdHlwZSkgPT4ge1xuICAgICAgICAgICAgICAgIGluc3RhbmNlLl9fbmd0X19bdHlwZV0ubmV4dChpbnN0YW5jZS5fX25ndF9fW3R5cGVdLnZhbHVlLmZpbHRlcigobykgPT4gbyAhPT0gb2JqZWN0KSk7XG4gICAgICAgICAgICAgICAgbm90aWZ5QW5jZXN0b3JzKGluc3RhbmNlLl9fbmd0X18ucGFyZW50KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAuLi5yZXN0LFxuICAgICAgICB9IGFzIE5ndEluc3RhbmNlTG9jYWxTdGF0ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gaW5zdGFuY2U7XG59XG5cbmZ1bmN0aW9uIG5vdGlmeUFuY2VzdG9ycyhpbnN0YW5jZTogTmd0SW5zdGFuY2VOb2RlIHwgbnVsbCkge1xuICAgIGlmICghaW5zdGFuY2UpIHJldHVybjtcbiAgICBjb25zdCBsb2NhbFN0YXRlID0gZ2V0TG9jYWxTdGF0ZShpbnN0YW5jZSk7XG4gICAgaWYgKGxvY2FsU3RhdGUub2JqZWN0cykgbG9jYWxTdGF0ZS5vYmplY3RzLm5leHQobG9jYWxTdGF0ZS5vYmplY3RzLnZhbHVlKTtcbiAgICBpZiAobG9jYWxTdGF0ZS5ub25PYmplY3RzKSBsb2NhbFN0YXRlLm5vbk9iamVjdHMubmV4dChsb2NhbFN0YXRlLm5vbk9iamVjdHMudmFsdWUpO1xuICAgIG5vdGlmeUFuY2VzdG9ycyhsb2NhbFN0YXRlLnBhcmVudCk7XG59XG4iXX0=
|