@dcl/asset-packs 2.8.1 → 2.9.0
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/bin/index.js +13247 -14267
- package/dist/actions.js +2 -2
- package/dist/admin-toolkit-ui/Button.d.ts +2 -3
- package/dist/admin-toolkit-ui/Button.js +7 -2
- package/dist/admin-toolkit-ui/FeedbackButton.d.ts +8 -0
- package/dist/admin-toolkit-ui/FeedbackButton.js +49 -0
- package/dist/admin-toolkit-ui/VideoControl/DclCast/DclCastInfo.js +6 -27
- package/dist/admin-toolkit-ui/VideoControl/DclCast/styles.js +12 -1
- package/dist/admin-toolkit-ui/VideoControl/LiveStream/ShowStreamKey.d.ts +1 -1
- package/dist/admin-toolkit-ui/VideoControl/LiveStream/ShowStreamKey.js +6 -5
- package/dist/bin/index.js +13247 -14267
- package/dist/helpers.d.ts +7 -0
- package/dist/helpers.js +48 -0
- package/dist/triggers.js +9 -13
- package/package.json +1 -2
package/dist/actions.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { getEntityParent, getPlayerPosition, getWorldPosition, getWorldRotation, } from '@dcl-sdk/utils';
|
|
2
1
|
import { Material, AudioStream, MeshCollider, getComponentEntityTree, Tween, } from '@dcl/ecs';
|
|
3
2
|
import { Quaternion, Vector3 } from '@dcl/sdk/math';
|
|
3
|
+
import { getEntityParent, getPlayerPosition, getWorldPosition, getWorldRotation } from './helpers';
|
|
4
4
|
import { ActionType, ProximityLayer, TriggerType, TweenType, clone, getComponents, initVideoPlayerComponentMaterial, } from './definitions';
|
|
5
5
|
import { getDefaultValue, isValidState } from './states';
|
|
6
6
|
import { getActionEvents, getTriggerEvents } from './events';
|
|
@@ -1061,4 +1061,4 @@ export function createActionsSystem(engine, pointerEventsSystem, sdkHelpers, pla
|
|
|
1061
1061
|
});
|
|
1062
1062
|
}
|
|
1063
1063
|
}
|
|
1064
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9hY3Rpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxlQUFlLEVBQ2YsaUJBQWlCLEVBQ2pCLGdCQUFnQixFQUNoQixnQkFBZ0IsR0FDakIsTUFBTSxnQkFBZ0IsQ0FBQztBQVl4QixPQUFPLEVBQ0wsUUFBUSxFQUNSLFdBQVcsRUFLWCxZQUFZLEVBQ1osc0JBQXNCLEVBQ3RCLEtBQUssR0FDTixNQUFNLFVBQVUsQ0FBQztBQUNsQixPQUFPLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUdwRCxPQUFPLEVBQ0wsVUFBVSxFQUNWLGNBQWMsRUFDZCxXQUFXLEVBQ1gsU0FBUyxFQUNULEtBQUssRUFDTCxhQUFhLEVBQ2IsZ0NBQWdDLEdBQ2pDLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDN0QsT0FBTyxFQUNMLGFBQWEsRUFDYixZQUFZLEVBQ1osZ0JBQWdCLEVBQ2hCLGVBQWUsRUFDZixZQUFZLEVBQ1osV0FBVyxHQUNaLE1BQU0sU0FBUyxDQUFDO0FBQ2pCLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1QyxPQUFPLEVBQ0wsZUFBZSxFQUNmLFNBQVMsRUFDVCxjQUFjLEVBQ2QscUJBQXFCLEVBQ3JCLGlCQUFpQixHQUNsQixNQUFNLE1BQU0sQ0FBQztBQUNkLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNyRCxPQUFPLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDdEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN4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TUFBTSxFQUNOLE9BQU8sRUFDUCxhQUFhLEVBQ2IsbUJBQW1CLEVBQ25CLElBQUksRUFDSixTQUFTLENBQUMsRUFBRTtZQUVWLFlBQVksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFO2dCQUM5QixFQUFFLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUNuQixLQUFLLEVBQUUsU0FBUzthQUNqQixDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBVSxFQUFFLEVBQUU7Z0JBQ3JCLElBQUksS0FBSyxFQUFFLENBQUM7Z0JBRVosQ0FBQztZQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUNGLENBQUM7SUFDSixDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGdldEVudGl0eVBhcmVudCxcbiAgZ2V0UGxheWVyUG9zaXRpb24sXG4gIGdldFdvcmxkUG9zaXRpb24sXG4gIGdldFdvcmxkUm90YXRpb24sXG59IGZyb20gJ0BkY2wtc2RrL3V0aWxzJztcbmltcG9ydCB0eXBlIHtcbiAgSUVuZ2luZSxcbiAgRW50aXR5LFxuICBUZXh0QWxpZ25Nb2RlLFxuICBGb250LFxuICBNb3ZlLFxuICBQQlR3ZWVuLFxuICBSb3RhdGUsXG4gIFNjYWxlLFxuICBQb2ludGVyRXZlbnRzU3lzdGVtLFxufSBmcm9tICdAZGNsL2Vjcyc7XG5pbXBvcnQge1xuICBNYXRlcmlhbCxcbiAgQXVkaW9TdHJlYW0sXG4gIFlHVW5pdCxcbiAgWUdQb3NpdGlvblR5cGUsXG4gIFBvaW50ZXJGaWx0ZXJNb2RlLFxuICBJbnB1dEFjdGlvbixcbiAgTWVzaENvbGxpZGVyLFxuICBnZXRDb21wb25lbnRFbnRpdHlUcmVlLFxuICBUd2Vlbixcbn0gZnJvbSAnQGRjbC9lY3MnO1xuaW1wb3J0IHsgUXVhdGVybmlvbiwgVmVjdG9yMyB9IGZyb20gJ0BkY2wvc2RrL21hdGgnO1xuaW1wb3J0IHR5cGUgeyBUZXh0dXJlTW92ZW1lbnRUeXBlIGFzIFNka1RleHR1cmVNb3ZlbWVudFR5cGUgfSBmcm9tICdAZGNsL2Vjcy9kaXN0L2NvbXBvbmVudHMvZ2VuZXJhdGVkL3BiL2RlY2VudHJhbGFuZC9zZGsvY29tcG9uZW50cy90d2Vlbi5nZW4nO1xuaW1wb3J0IHR5cGUgeyBBY3Rpb25QYXlsb2FkLCBJU0RLSGVscGVycywgSVBsYXllcnNIZWxwZXIsIFNjcmVlbkFsaWduTW9kZSB9IGZyb20gJy4vZGVmaW5pdGlvbnMnO1xuaW1wb3J0IHtcbiAgQWN0aW9uVHlwZSxcbiAgUHJveGltaXR5TGF5ZXIsXG4gIFRyaWdnZXJUeXBlLFxuICBUd2VlblR5cGUsXG4gIGNsb25lLFxuICBnZXRDb21wb25lbnRzLFxuICBpbml0VmlkZW9QbGF5ZXJDb21wb25lbnRNYXRlcmlhbCxcbn0gZnJvbSAnLi9kZWZpbml0aW9ucyc7XG5pbXBvcnQgeyBnZXREZWZhdWx0VmFsdWUsIGlzVmFsaWRTdGF0ZSB9IGZyb20gJy4vc3RhdGVzJztcbmltcG9ydCB7IGdldEFjdGlvbkV2ZW50cywgZ2V0VHJpZ2dlckV2ZW50cyB9IGZyb20gJy4vZXZlbnRzJztcbmltcG9ydCB7XG4gIHN0YXJ0SW50ZXJ2YWwsXG4gIHN0YXJ0VGltZW91dCxcbiAgc3RvcEFsbEludGVydmFscyxcbiAgc3RvcEFsbFRpbWVvdXRzLFxuICBzdG9wSW50ZXJ2YWwsXG4gIHN0b3BUaW1lb3V0LFxufSBmcm9tICcuL3RpbWVyJztcbmltcG9ydCB7IGdldFBheWxvYWQgfSBmcm9tICcuL2FjdGlvbi10eXBlcyc7XG5pbXBvcnQge1xuICBnZXRVSUJhY2tncm91bmQsXG4gIGdldFVJVGV4dCxcbiAgZ2V0VUlUcmFuc2Zvcm0sXG4gIG1hcEFsaWduVG9TY3JlZW5BbGlnbixcbiAgc2hvd0NhcHRjaGFQcm9tcHQsXG59IGZyb20gJy4vdWknO1xuaW1wb3J0IHsgZ2V0RXhwbG9yZXJDb21wb25lbnRzIH0gZnJvbSAnLi9jb21wb25lbnRzJztcbmltcG9ydCB7IGluaXRUcmlnZ2VycywgZGFtYWdlVGFyZ2V0cywgaGVhbFRhcmdldHMgfSBmcm9tICcuL3RyaWdnZXJzJztcbmltcG9ydCB7IGZvbGxvd01hcCB9IGZyb20gJy4vdHJhbnNmb3JtJztcbmltcG9ydCB7IGdldEVhc2luZ0Z1bmN0aW9uRnJvbUludGVycG9sYXRpb24gfSBmcm9tICcuL3R3ZWVucyc7XG5pbXBvcnQgeyBSRVdBUkRTX1NFUlZFUl9VUkwgfSBmcm9tICcuL2FkbWluLXRvb2xraXQtdWkvY29uc3RhbnRzJztcbmltcG9ydCB7IHJlcXVlc3RUZWxlcG9ydCB9IGZyb20gJ35zeXN0ZW0vVXNlckFjdGlvbk1vZHVsZSc7XG5pbXBvcnQge1xuICBtb3ZlUGxheWVyVG8sXG4gIHRyaWdnZXJFbW90ZSxcbiAgdHJpZ2dlclNjZW5lRW1vdGUsXG4gIG9wZW5FeHRlcm5hbFVybCxcbn0gZnJvbSAnfnN5c3RlbS9SZXN0cmljdGVkQWN0aW9ucyc7XG5pbXBvcnQgdHlwZSB7IEZsYXRGZXRjaEluaXQgfSBmcm9tICd+c3lzdGVtL1NpZ25lZEZldGNoJztcbmltcG9ydCB7IGdldFJlYWxtIH0gZnJvbSAnfnN5c3RlbS9SdW50aW1lJztcbmltcG9ydCB7IHNpZ25lZEZldGNoIH0gZnJvbSAnfnN5c3RlbS9TaWduZWRGZXRjaCc7XG5cbmNvbnN0IGluaXRlZEVudGl0aWVzID0gbmV3IFNldDxFbnRpdHk+KCk7XG5jb25zdCB1aVN0YWNrcyA9IG5ldyBNYXA8c3RyaW5nLCBFbnRpdHk+KCk7XG5jb25zdCBsYXN0VWlFbnRpdHlDbGlja2VkID0gbmV3IE1hcDxFbnRpdHksIEVudGl0eT4oKTtcbmNvbnN0IHRleHRFbnRpdGllcyA9IG5ldyBNYXA8RW50aXR5LCBFbnRpdHk+KCk7IC8vIE1vZGVsIEVudGl0eSwgVGV4dCBFbnRpdHlcblxubGV0IGludGVybmFsSW5pdEFjdGlvbnM6ICgoZW50aXR5OiBFbnRpdHkpID0+IHZvaWQpIHwgbnVsbCA9IG51bGw7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbml0QWN0aW9ucyhlbnRpdHk6IEVudGl0eSkge1xuICBpZiAoaW50ZXJuYWxJbml0QWN0aW9ucykge1xuICAgIHJldHVybiBpbnRlcm5hbEluaXRBY3Rpb25zKGVudGl0eSk7XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgY2FsbCBpbml0QWN0aW9ucyB3aGlsZSBhY3Rpb25zU3lzdGVtIGhhcyBub3QgYmVlbiBjcmVhdGVkJyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVBY3Rpb25zU3lzdGVtKFxuICBlbmdpbmU6IElFbmdpbmUsXG4gIHBvaW50ZXJFdmVudHNTeXN0ZW06IFBvaW50ZXJFdmVudHNTeXN0ZW0sXG4gIHNka0hlbHBlcnM/OiBJU0RLSGVscGVycyxcbiAgcGxheWVyc0hlbHBlcj86IElQbGF5ZXJzSGVscGVyLFxuKSB7XG4gIGNvbnN0IHtcbiAgICBBbmltYXRvcixcbiAgICBUcmFuc2Zvcm0sXG4gICAgQXVkaW9Tb3VyY2UsXG4gICAgQXZhdGFyQXR0YWNoLFxuICAgIFZpc2liaWxpdHlDb21wb25lbnQsXG4gICAgR2x0ZkNvbnRhaW5lcixcbiAgICBVaVRyYW5zZm9ybSxcbiAgICBVaVRleHQsXG4gICAgVWlCYWNrZ3JvdW5kLFxuICAgIFVpSW5wdXQsXG4gICAgVWlJbnB1dFJlc3VsdCxcbiAgICBUd2VlbjogVHdlZW5Db21wb25lbnQsXG4gICAgVHdlZW5TZXF1ZW5jZSxcbiAgICBWaWRlb1BsYXllcixcbiAgICBMaWdodFNvdXJjZSxcbiAgICBNYWluQ2FtZXJhLFxuICAgIFZpcnR1YWxDYW1lcmEsXG4gICAgVGV4dFNoYXBlLFxuICB9ID0gZ2V0RXhwbG9yZXJDb21wb25lbnRzKGVuZ2luZSk7XG4gIGNvbnN0IHsgQWN0aW9ucywgU3RhdGVzLCBDb3VudGVyLCBUcmlnZ2VycywgUmV3YXJkcyB9ID0gZ2V0Q29tcG9uZW50cyhlbmdpbmUpO1xuXG4gIC8vIHNhdmUgaW50ZXJuYWwgcmVmZXJlbmNlIHRvIGluaXQgZnVuY2lvblxuICBpbnRlcm5hbEluaXRBY3Rpb25zID0gaW5pdEFjdGlvbnM7XG5cbiAgcmV0dXJuIGZ1bmN0aW9uIGFjdGlvbnNTeXN0ZW0oX2R0OiBudW1iZXIpIHtcbiAgICBjb25zdCBlbnRpdGllc1dpdGhBY3Rpb25zID0gZW5naW5lLmdldEVudGl0aWVzV2l0aChBY3Rpb25zKTtcblxuICAgIGZvciAoY29uc3QgW2VudGl0eV0gb2YgZW50aXRpZXNXaXRoQWN0aW9ucykge1xuICAgICAgaW5pdEFjdGlvbnMoZW50aXR5KTtcbiAgICB9XG4gIH07XG5cbiAgZnVuY3Rpb24gaW5pdEFjdGlvbnMoZW50aXR5OiBFbnRpdHkpIHtcbiAgICBpZiAoIUFjdGlvbnMuaGFzKGVudGl0eSkgfHwgaW5pdGVkRW50aXRpZXMuaGFzKGVudGl0eSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBnZXQgYWN0aW9ucyBkYXRhXG4gICAgY29uc3QgYWN0aW9ucyA9IEFjdGlvbnMuZ2V0KGVudGl0eSk7XG5cbiAgICAvLyBpbml0aWFsaXplIGFjdGlvbnMgZm9yIGdpdmVuIGVudGl0eVxuICAgIGNvbnN0IHR5cGVzID0gYWN0aW9ucy52YWx1ZS5yZWR1Y2UoXG4gICAgICAodHlwZXMsIGFjdGlvbikgPT4gdHlwZXMuYWRkKGFjdGlvbi50eXBlKSxcbiAgICAgIG5ldyBTZXQ8c3RyaW5nPigpLFxuICAgICk7XG5cbiAgICBmb3IgKGNvbnN0IHR5cGUgb2YgdHlwZXMpIHtcbiAgICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICBjYXNlIEFjdGlvblR5cGUuUExBWV9BTklNQVRJT046IHtcbiAgICAgICAgICBpbml0UGxheUFuaW1hdGlvbihlbnRpdHkpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gYmluZCBhY3Rpb25zXG4gICAgY29uc3QgYWN0aW9uRXZlbnRzID0gZ2V0QWN0aW9uRXZlbnRzKGVudGl0eSk7XG4gICAgZm9yIChjb25zdCBhY3Rpb24gb2YgYWN0aW9ucy52YWx1ZSkge1xuICAgICAgYWN0aW9uRXZlbnRzLm9uKGFjdGlvbi5uYW1lLCAoKSA9PiB7XG4gICAgICAgIHN3aXRjaCAoYWN0aW9uLnR5cGUpIHtcbiAgICAgICAgICBjYXNlIEFjdGlvblR5cGUuUExBWV9BTklNQVRJT046IHtcbiAgICAgICAgICAgIGhhbmRsZVBsYXlBbmltYXRpb24oZW50aXR5LCBnZXRQYXlsb2FkPEFjdGlvblR5cGUuUExBWV9BTklNQVRJT04+KGFjdGlvbikpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgQWN0aW9uVHlwZS5TVE9QX0FOSU1BVElPTjoge1xuICAgICAgICAgICAgaGFuZGxlU3RvcEFuaW1hdGlvbihlbnRpdHksIGdldFBheWxvYWQ8QWN0aW9uVHlwZS5TVE9QX0FOSU1BVElPTj4oYWN0aW9uKSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSBBY3Rpb25UeXBlLlNFVF9TVEFURToge1xuICAgICAgICAgICAgaGFuZGxlU2V0U3RhdGUoZW50aXR5LCBnZXRQYXlsb2FkPEFjdGlvblR5cGUuU0VUX1NUQVRFPihhY3Rpb24pKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIEFjdGlvblR5cGUuU1RBUlRfVFdFRU46IHtcbiAgICAgICAgICAgIGhhbmRsZVN0YXJ0VHdlZW4oZW50aXR5LCBnZXRQYXlsb2FkPEFjdGlvblR5cGUuU1RBUlRfVFdFRU4+KGFjdGlvbikpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgQWN0aW9uVHlwZS5TVE9QX1RXRUVOOiB7XG4gICAgICAgICAgICBoYW5kbGVTdG9wVHdlZW4oZW50aXR5KTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIEFjdGlvblR5cGUuU0xJREVfVEVYVFVSRToge1xuICAgICAgICAgICAgaGFuZGxlU2xpZGVUZXh0dXJlKGVudGl0eSwgZ2V0UGF5bG9hZDxBY3Rpb25UeXBlLlNMSURFX1RFWFRVUkU+KGFjdGlvbikpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgQWN0aW9uVHlwZS5TRVRfQ09VTlRFUjoge1xuICAgICAgICAgICAgaGFuZGxlU2V0Q291bnRlcihlbnRpdHksIGdldFBheWxvYWQ8QWN0aW9uVHlwZS5TRVRfQ09VTlRFUj4oYWN0aW9uKSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSBBY3Rpb25UeXBlLklOQ1JFTUVOVF9DT1VOVEVSOiB7XG4gICAgICAgICAgICBoYW5kbGVJbmNyZW1lbnRDb3VudGVyKGVudGl0eSwgZ2V0UGF5bG9hZDxBY3Rpb25UeXBlLklOQ1JFTUVOVF9DT1VOVEVSPihhY3Rpb24pKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIEFjdGlvblR5cGUuREVDUkVBU0VfQ09VTlRFUjoge1xuICAgICAgICAgICAgaGFuZGxlRGVjcmVhc2VDb3VudGVyKGVudGl0eSwgZ2V0UGF5bG9hZDxBY3Rpb25UeXBlLkRFQ1JFQVNFX0NPVU5URVI+KGFjdGlvbikpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgQWN0aW9uVHlwZS5QTEFZX1NPVU5EOiB7XG4gICAgICAgICAgICBoYW5kbGVQbGF5U291bmQoZW50aXR5LCBnZXRQYXlsb2FkPEFjdGlvblR5cGUuUExBWV9TT1VORD4oYWN0aW9uKSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSBBY3Rpb25UeXBlLlNUT1BfU09VTkQ6IHtcbiAgICAgICAgICAgIGhhbmRsZVN0b3BTb3VuZChlbnRpdHksIGdldFBheWxvYWQ8QWN0aW9uVHlwZS5TVE9QX1NPVU5EPihhY3Rpb24pKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIEFjdGlvblR5cGUuU0VUX1ZJU0lCSUxJVFk6IHtcbiAgICAgICAgICAgIGhhbmRsZVNldFZpc2liaWxpdHkoZW50aXR5LCBnZXRQYXlsb2FkPEFjdGlvblR5cGUuU0VUX1ZJU0lCSUxJVFk+KGFjdGlvbikpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgQWN0aW9uVHlwZS5BVFRBQ0hfVE9fUExBWUVSOiB7XG4gICAgICAgICAgICBoYW5kbGVBdHRhY2hUb1BsYXllcihlbnRpdHksIGdldFBheWxvYWQ8QWN0aW9uVHlwZS5BVFRBQ0hfVE9fUExBWUVSPihhY3Rpb24pKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIEFjdGlvblR5cGUuREVUQUNIX0ZST01fUExBWUVSOiB7XG4gICAgICAgICAgICBoYW5kbGVEZXRhY2hGcm9tUGxheWVyKGVudGl0eSwgZ2V0UGF5bG9hZDxBY3Rpb25UeXBlLkRFVEFDSF9GUk9NX1BMQVlFUj4oYWN0aW9uKSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSBBY3Rpb25UeXBlLlBMQVlfVklERU9fU1RSRUFNOiB7XG4gICAgICAgICAgICBoYW5kbGVQbGF5VmlkZW8oZW50aXR5LCBnZXRQYXlsb2FkPEFjdGlvblR5cGUuUExBWV9WSURFT19TVFJFQU0+KGFjdGlvbikpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgQWN0aW9uVHlwZS5TVE9QX1ZJREVPX1NUUkVBTToge1xuICAgICAgICAgICAgaGFuZGxlU3RvcFZpZGVvKGVudGl0eSwgZ2V0UGF5bG9hZDxBY3Rpb25UeXBlLlNUT1BfVklERU9fU1RSRUFNPihhY3Rpb24pKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIEFjdGlvblR5cGUuUExBWV9BVURJT19TVFJFQU06IHtcbiAgICAgICAgICAgIGhhbmRsZVBsYXlBdWRpb1N0cmVhbShlbnRpdHksIGdldFBheWxvYWQ8QWN0aW9uVHlwZS5QTEFZX0FVRElPX1NUUkVBTT4oYWN0aW9uKSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSBBY3Rpb25UeXBlLlNUT1BfQVVESU9fU1RSRUFNOiB7XG4gICAgICAgICAgICBoYW5kbGVTdG9wQXVkaW9TdHJlYW0oZW50aXR5LCBnZXRQYXlsb2FkPEFjdGlvblR5cGUuU1RPUF9BVURJT19TVFJFQU0+KGFjdGlvbikpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgQWN0aW9uVHlwZS5URUxFUE9SVF9QTEFZRVI6IHtcbiAgICAgICAgICAgIGhhbmRsZVRlbGVwb3J0UGxheWVyKGVudGl0eSwgZ2V0UGF5bG9hZDxBY3Rpb25UeXBlLlRFTEVQT1JUX1BMQVlFUj4oYWN0aW9uKSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSBBY3Rpb25UeXBlLk1PVkVfUExBWUVSOiB7XG4gICAgICAgICAgICBoYW5kbGVNb3ZlUGxheWVyKGVudGl0eSwgZ2V0UGF5bG9hZDxBY3Rpb25UeXBlLk1PVkVfUExBWUVSPihhY3Rpb24pKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIEFjdGlvblR5cGUuUExBWV9ERUZBVUxUX0VNT1RFOiB7XG4gICAgICAgICAgICBoYW5kbGVQbGF5RGVmYXVsdEVtb3RlKGVudGl0eSwgZ2V0UGF5bG9hZDxBY3Rpb25UeXBlLlBMQVlfREVGQVVMVF9FTU9URT4oYWN0aW9uKSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSBBY3Rpb25UeXBlLlBMQVlfQ1VTVE9NX0VNT1RFOiB7XG4gICAgICAgICAgICBoYW5kbGVQbGF5Q3VzdG9tRW1vdGUoZW50aXR5LCBnZXRQYXlsb2FkPEFjdGlvblR5cGUuUExBWV9DVVNUT01fRU1PVEU+KGFjdGlvbikpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgQWN0aW9uVHlwZS5PUEVOX0xJTks6IHtcbiAgICAgICAgICAgIGhhbmRsZU9wZW5MaW5rKGVudGl0eSwgZ2V0UGF5bG9hZDxBY3Rpb25UeXBlLk9QRU5fTElOSz4oYWN0aW9uKSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSBBY3Rpb25UeXBlLlNIT1dfVEVYVDoge1xuICAgICAgICAgICAgaGFuZGxlU2hvd1RleHQoZW50aXR5LCBnZXRQYXlsb2FkPEFjdGlvblR5cGUuU0hPV19URVhUPihhY3Rpb24pKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIEFjdGlvblR5cGUuSElERV9URVhUOiB7XG4gICAgICAgICAgICBoYW5kbGVIaWRlVGV4dChlbnRpdHksIGdldFBheWxvYWQ8QWN0aW9uVHlwZS5ISURFX1RFWFQ+KGFjdGlvbikpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgQWN0aW9uVHlwZS5TVEFSVF9ERUxBWToge1xuICAgICAgICAgICAgaGFuZGxlU3RhcnREZWxheShlbnRpdHksIGdldFBheWxvYWQ8QWN0aW9uVHlwZS5TVEFSVF9ERUxBWT4oYWN0aW9uKSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSBBY3Rpb25UeXBlLlNUT1BfREVMQVk6IHtcbiAgICAgICAgICAgIGhhbmRsZVN0b3BEZWxheShlbnRpdHksIGdldFBheWxvYWQ8QWN0aW9uVHlwZS5TVE9QX0RFTEFZPihhY3Rpb24pKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIEFjdGlvblR5cGUuU1RBUlRfTE9PUDoge1xuICAgICAgICAgICAgaGFuZGxlU3RhcnRMb29wKGVudGl0eSwgZ2V0UGF5bG9hZDxBY3Rpb25UeXBlLlNUQVJUX0xPT1A+KGFjdGlvbikpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgQWN0aW9uVHlwZS5TVE9QX0xPT1A6IHtcbiAgICAgICAgICAgIGhhbmRsZVN0b3BMb29wKGVudGl0eSwgZ2V0UGF5bG9hZDxBY3Rpb25UeXBlLlNUT1BfTE9PUD4oYWN0aW9uKSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSBBY3Rpb25UeXBlLkNMT05FX0VOVElUWToge1xuICAgICAgICAgICAgaGFuZGxlQ2xvbmVFbnRpdHkoZW50aXR5LCBnZXRQYXlsb2FkPEFjdGlvblR5cGUuQ0xPTkVfRU5USVRZPihhY3Rpb24pKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIEFjdGlvblR5cGUuUkVNT1ZFX0VOVElUWToge1xuICAgICAgICAgICAgaGFuZGxlUmVtb3ZlRW50aXR5KGVudGl0eSwgZ2V0UGF5bG9hZDxBY3Rpb25UeXBlLlJFTU9WRV9FTlRJVFk+KGFjdGlvbikpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgQWN0aW9uVHlwZS5TSE9XX0lNQUdFOiB7XG4gICAgICAgICAgICBoYW5kbGVTaG93SW1hZ2UoZW50aXR5LCBnZXRQYXlsb2FkPEFjdGlvblR5cGUuU0hPV19JTUFHRT4oYWN0aW9uKSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSBBY3Rpb25UeXBlLkhJREVfSU1BR0U6IHtcbiAgICAgICAgICAgIGhhbmRsZUhpZGVJbWFnZShlbnRpdHksIGdldFBheWxvYWQ8QWN0aW9uVHlwZS5ISURFX0lNQUdFPihhY3Rpb24pKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIEFjdGlvblR5cGUuREFNQUdFOiB7XG4gICAgICAgICAgICBoYW5kbGVEYW1hZ2UoZW50aXR5LCBnZXRQYXlsb2FkPEFjdGlvblR5cGUuREFNQUdFPihhY3Rpb24pKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIEFjdGlvblR5cGUuTU9WRV9QTEFZRVJfSEVSRToge1xuICAgICAgICAgICAgaGFuZGxlTW92ZVBsYXllckhlcmUoZW50aXR5LCBnZXRQYXlsb2FkPEFjdGlvblR5cGUuTU9WRV9QTEFZRVJfSEVSRT4oYWN0aW9uKSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSBBY3Rpb25UeXBlLkZPTExPV19QTEFZRVI6IHtcbiAgICAgICAgICAgIGhhbmRsZUZvbGxvd1BsYXllcihlbnRpdHksIGdldFBheWxvYWQ8QWN0aW9uVHlwZS5GT0xMT1dfUExBWUVSPihhY3Rpb24pKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIEFjdGlvblR5cGUuU1RPUF9GT0xMT1dJTkdfUExBWUVSOiB7XG4gICAgICAgICAgICBoYW5kbGVTdG9wRm9sbG93aW5nUGxheWVyKGVudGl0eSwgZ2V0UGF5bG9hZDxBY3Rpb25UeXBlLlNUT1BfRk9MTE9XSU5HX1BMQVlFUj4oYWN0aW9uKSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSBBY3Rpb25UeXBlLlBMQUNFX09OX1BMQVlFUjoge1xuICAgICAgICAgICAgaGFuZGxlUGxhY2VPblBsYXllcihlbnRpdHksIGdldFBheWxvYWQ8QWN0aW9uVHlwZS5QTEFDRV9PTl9QTEFZRVI+KGFjdGlvbikpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgQWN0aW9uVHlwZS5ST1RBVEVfQVNfUExBWUVSOiB7XG4gICAgICAgICAgICBoYW5kbGVSb3RhdGVBc1BsYXllcihlbnRpdHksIGdldFBheWxvYWQ8QWN0aW9uVHlwZS5ST1RBVEVfQVNfUExBWUVSPihhY3Rpb24pKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIEFjdGlvblR5cGUuUExBQ0VfT05fQ0FNRVJBOiB7XG4gICAgICAgICAgICBoYW5kbGVQbGFjZU9uQ2FtZXJhKGVudGl0eSwgZ2V0UGF5bG9hZDxBY3Rpb25UeXBlLlBMQUNFX09OX0NBTUVSQT4oYWN0aW9uKSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSBBY3Rpb25UeXBlLlJPVEFURV9BU19DQU1FUkE6IHtcbiAgICAgICAgICAgIGhhbmRsZVJvdGF0ZUFzQ2FtZXJhKGVudGl0eSwgZ2V0UGF5bG9hZDxBY3Rpb25UeXBlLlJPVEFURV9BU19DQU1FUkE+KGFjdGlvbikpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgQWN0aW9uVHlwZS5TRVRfUE9TSVRJT046IHtcbiAgICAgICAgICAgIGhhbmRsZVNldFBvc2l0aW9uKGVudGl0eSwgZ2V0UGF5bG9hZDxBY3Rpb25UeXBlLlNFVF9QT1NJVElPTj4oYWN0aW9uKSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSBBY3Rpb25UeXBlLlNFVF9ST1RBVElPTjoge1xuICAgICAgICAgICAgaGFuZGxlU2V0Um90YXRpb24oZW50aXR5LCBnZXRQYXlsb2FkPEFjdGlvblR5cGUuU0VUX1JPVEFUSU9OPihhY3Rpb24pKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIEFjdGlvblR5cGUuU0VUX1NDQUxFOiB7XG4gICAgICAgICAgICBoYW5kbGVTZXRTY2FsZShlbnRpdHksIGdldFBheWxvYWQ8QWN0aW9uVHlwZS5TRVRfU0NBTEU+KGFjdGlvbikpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgQWN0aW9uVHlwZS5SQU5ET006IHtcbiAgICAgICAgICAgIGhhbmRsZVJhbmRvbShlbnRpdHksIGdldFBheWxvYWQ8QWN0aW9uVHlwZS5SQU5ET00+KGFjdGlvbikpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgQWN0aW9uVHlwZS5CQVRDSDoge1xuICAgICAgICAgICAgaGFuZGxlQmF0Y2goZW50aXR5LCBnZXRQYXlsb2FkPEFjdGlvblR5cGUuQkFUQ0g+KGFjdGlvbikpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgQWN0aW9uVHlwZS5IRUFMX1BMQVlFUjoge1xuICAgICAgICAgICAgaGFuZGxlSGVhbFBsYXllcihlbnRpdHksIGdldFBheWxvYWQ8QWN0aW9uVHlwZS5IRUFMX1BMQVlFUj4oYWN0aW9uKSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSBBY3Rpb25UeXBlLkNMQUlNX0FJUkRST1A6IHtcbiAgICAgICAgICAgIGhhbmRsZUNsYWltQWlyZHJvcChlbnRpdHksIGdldFBheWxvYWQ8QWN0aW9uVHlwZS5DTEFJTV9BSVJEUk9QPihhY3Rpb24pKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIEFjdGlvblR5cGUuTElHSFRTX09OOiB7XG4gICAgICAgICAgICBoYW5kbGVMaWdodHNPbihlbnRpdHkpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgQWN0aW9uVHlwZS5MSUdIVFNfT0ZGOiB7XG4gICAgICAgICAgICBoYW5kbGVMaWdodHNPZmYoZW50aXR5KTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIEFjdGlvblR5cGUuTElHSFRTX01PRElGWToge1xuICAgICAgICAgICAgaGFuZGxlTGlnaHRzTW9kaWZ5KGVudGl0eSwgZ2V0UGF5bG9hZDxBY3Rpb25UeXBlLkxJR0hUU19NT0RJRlk+KGFjdGlvbikpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgQWN0aW9uVHlwZS5DSEFOR0VfQ0FNRVJBOiB7XG4gICAgICAgICAgICBoYW5kbGVDaGFuZ2VDYW1lcmEoZW50aXR5LCBnZXRQYXlsb2FkPEFjdGlvblR5cGUuQ0hBTkdFX0NBTUVSQT4oYWN0aW9uKSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSBBY3Rpb25UeXBlLkNIQU5HRV9URVhUOiB7XG4gICAgICAgICAgICBoYW5kbGVDaGFuZ2VUZXh0KGVudGl0eSwgZ2V0UGF5bG9hZDxBY3Rpb25UeXBlLkNIQU5HRV9URVhUPihhY3Rpb24pKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGluaXRlZEVudGl0aWVzLmFkZChlbnRpdHkpO1xuICB9XG5cbiAgLy8gTElHSFRTX09OXG4gIGZ1bmN0aW9uIGhhbmRsZUxpZ2h0c09uKGVudGl0eTogRW50aXR5KSB7XG4gICAgY29uc3QgbGlnaHQgPSBMaWdodFNvdXJjZS5nZXRNdXRhYmxlT3JOdWxsKGVudGl0eSk7XG4gICAgaWYgKGxpZ2h0KSB7XG4gICAgICBsaWdodC5hY3RpdmUgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIC8vIExJR0hUU19PRkZcbiAgZnVuY3Rpb24gaGFuZGxlTGlnaHRzT2ZmKGVudGl0eTogRW50aXR5KSB7XG4gICAgY29uc3QgbGlnaHQgPSBMaWdodFNvdXJjZS5nZXRNdXRhYmxlT3JOdWxsKGVudGl0eSk7XG4gICAgaWYgKGxpZ2h0KSB7XG4gICAgICBsaWdodC5hY3RpdmUgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICAvLyBMSUdIVFNfTU9ESUZZXG4gIGZ1bmN0aW9uIGhhbmRsZUxpZ2h0c01vZGlmeShlbnRpdHk6IEVudGl0eSwgcGF5bG9hZDogQWN0aW9uUGF5bG9hZDxBY3Rpb25UeXBlLkxJR0hUU19NT0RJRlk+KSB7XG4gICAgY29uc3QgbGlnaHQgPSBMaWdodFNvdXJjZS5nZXRNdXRhYmxlT3JOdWxsKGVudGl0eSk7XG4gICAgaWYgKCFsaWdodCkgcmV0dXJuO1xuICAgIGlmIChwYXlsb2FkLmFjdGl2ZSAhPT0gdW5kZWZpbmVkKSBsaWdodC5hY3RpdmUgPSBwYXlsb2FkLmFjdGl2ZTtcbiAgICBpZiAocGF5bG9hZC5jb2xvcikgbGlnaHQuY29sb3IgPSBwYXlsb2FkLmNvbG9yO1xuICAgIGlmIChwYXlsb2FkLmludGVuc2l0eSAhPT0gdW5kZWZpbmVkKSBsaWdodC5pbnRlbnNpdHkgPSBwYXlsb2FkLmludGVuc2l0eTtcbiAgfVxuXG4gIC8vIENIQU5HRV9DQU1FUkFcbiAgZnVuY3Rpb24gaGFuZGxlQ2hhbmdlQ2FtZXJhKF9lbnRpdHk6IEVudGl0eSwgcGF5bG9hZDogQWN0aW9uUGF5bG9hZDxBY3Rpb25UeXBlLkNIQU5HRV9DQU1FUkE+KSB7XG4gICAgY29uc3QgdGFyZ2V0ID0gcGF5bG9hZC52aXJ0dWFsQ2FtZXJhRW50aXR5O1xuICAgIGlmICghdGFyZ2V0KSB7XG4gICAgICBpZiAoTWFpbkNhbWVyYS5oYXMoZW5naW5lLkNhbWVyYUVudGl0eSkpIHtcbiAgICAgICAgTWFpbkNhbWVyYS5kZWxldGVGcm9tKGVuZ2luZS5DYW1lcmFFbnRpdHkpO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIEVuc3VyZSB0aGUgc2VsZWN0ZWQgZW50aXR5IGhhcyBWaXJ0dWFsQ2FtZXJhIGJlZm9yZSBhcHBseWluZ1xuICAgIGlmICghVmlydHVhbENhbWVyYS5oYXModGFyZ2V0KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIE1haW5DYW1lcmEuY3JlYXRlT3JSZXBsYWNlKGVuZ2luZS5DYW1lcmFFbnRpdHksIHtcbiAgICAgIHZpcnR1YWxDYW1lcmFFbnRpdHk6IHRhcmdldCxcbiAgICB9KTtcbiAgfVxuXG4gIC8vIENIQU5HRV9URVhUXG4gIGZ1bmN0aW9uIGhhbmRsZUNoYW5nZVRleHQoZW50aXR5OiBFbnRpdHksIHBheWxvYWQ6IEFjdGlvblBheWxvYWQ8QWN0aW9uVHlwZS5DSEFOR0VfVEVYVD4pIHtcbiAgICBjb25zdCB0ZXh0ID0gVGV4dFNoYXBlLmdldE11dGFibGVPck51bGwoZW50aXR5KTtcbiAgICBpZiAoIXRleHQpIHJldHVybjtcblxuICAgIHRleHQudGV4dCA9IHBheWxvYWQudGV4dDtcbiAgICBpZiAocGF5bG9hZC5mb250U2l6ZSAhPT0gdW5kZWZpbmVkKSB0ZXh0LmZvbnRTaXplID0gcGF5bG9hZC5mb250U2l6ZTtcbiAgICBpZiAocGF5bG9hZC5jb2xvcikgdGV4dC50ZXh0Q29sb3IgPSBwYXlsb2FkLmNvbG9yO1xuICB9XG5cbiAgLy8gUExBWV9BTklNQVRJT05cbiAgZnVuY3Rpb24gaW5pdFBsYXlBbmltYXRpb24oZW50aXR5OiBFbnRpdHkpIHtcbiAgICBpZiAoIUFuaW1hdG9yLmhhcyhlbnRpdHkpKSB7XG4gICAgICBBbmltYXRvci5jcmVhdGUoZW50aXR5LCB7XG4gICAgICAgIHN0YXRlczogW10sXG4gICAgICB9KTtcbiAgICAgIEFuaW1hdG9yLnN0b3BBbGxBbmltYXRpb25zKGVudGl0eSk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gbm9ybWFsaXplQW5pbWF0aW9uV2VpZ2h0KHJhd1dlaWdodDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBpZiAocmF3V2VpZ2h0IDwgMCB8fCByYXdXZWlnaHQgPiAxKSByZXR1cm4gMTtcbiAgICByZXR1cm4gcmF3V2VpZ2h0O1xuICB9XG5cbiAgZnVuY3Rpb24gaGFuZGxlUGxheUFuaW1hdGlvbihlbnRpdHk6IEVudGl0eSwgcGF5bG9hZDogQWN0aW9uUGF5bG9hZDxBY3Rpb25UeXBlLlBMQVlfQU5JTUFUSU9OPikge1xuICAgIGNvbnN0IHsgYW5pbWF0aW9uLCBsb29wIH0gPSBwYXlsb2FkO1xuXG4gICAgY29uc3QgYW5pbWF0b3IgPSBBbmltYXRvci5nZXRNdXRhYmxlKGVudGl0eSk7XG4gICAgaWYgKCFhbmltYXRvci5zdGF0ZXMuc29tZSgkID0+ICQuY2xpcCA9PT0gYW5pbWF0aW9uKSkge1xuICAgICAgYW5pbWF0b3Iuc3RhdGVzID0gW1xuICAgICAgICAuLi5hbmltYXRvci5zdGF0ZXMsXG4gICAgICAgIHtcbiAgICAgICAgICBjbGlwOiBhbmltYXRpb24sXG4gICAgICAgIH0sXG4gICAgICBdO1xuICAgIH1cblxuICAgIEFuaW1hdG9yLnN0b3BBbGxBbmltYXRpb25zKGVudGl0eSk7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgY2xpcCA9IEFuaW1hdG9yLmdldENsaXAoZW50aXR5LCBhbmltYXRpb24pO1xuICAgICAgY2xpcC5wbGF5aW5nID0gdHJ1ZTtcbiAgICAgIGNsaXAubG9vcCA9IGxvb3AgPz8gZmFsc2U7XG4gICAgICBjbGlwLndlaWdodCA9IG5vcm1hbGl6ZUFuaW1hdGlvbldlaWdodChjbGlwLndlaWdodCA/PyAxKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBwbGF5aW5nIGFuaW1hdGlvbicsIGUpO1xuICAgIH1cbiAgfVxuXG4gIC8vIFNUT1BfQU5JTUFUSU9OXG4gIGZ1bmN0aW9uIGhhbmRsZVN0b3BBbmltYXRpb24oZW50aXR5OiBFbnRpdHksIF9wYXlsb2FkOiBBY3Rpb25QYXlsb2FkPEFjdGlvblR5cGUuU1RPUF9BTklNQVRJT04+KSB7XG4gICAgaWYgKEFuaW1hdG9yLmhhcyhlbnRpdHkpKSB7XG4gICAgICBBbmltYXRvci5zdG9wQWxsQW5pbWF0aW9ucyhlbnRpdHkpO1xuICAgIH1cbiAgfVxuXG4gIC8vIFNFVF9TVEFURVxuICBmdW5jdGlvbiBoYW5kbGVTZXRTdGF0ZShlbnRpdHk6IEVudGl0eSwgcGF5bG9hZDogQWN0aW9uUGF5bG9hZDxBY3Rpb25UeXBlLlNFVF9TVEFURT4pIHtcbiAgICBjb25zdCBzdGF0ZXMgPSBTdGF0ZXMuZ2V0TXV0YWJsZU9yTnVsbChlbnRpdHkpO1xuXG4gICAgaWYgKHN0YXRlcykge1xuICAgICAgY29uc3QgZGVmYXVsdFZhbHVlID0gZ2V0RGVmYXVsdFZhbHVlKHN0YXRlcyk7XG4gICAgICBsZXQgbmV4dFN0YXRlOiBzdHJpbmcgfCB1bmRlZmluZWQgPSBwYXlsb2FkLnN0YXRlO1xuICAgICAgbmV4dFN0YXRlID0gaXNWYWxpZFN0YXRlKHN0YXRlcywgbmV4dFN0YXRlKSA/IG5leHRTdGF0ZSA6IGRlZmF1bHRWYWx1ZTtcbiAgICAgIGNvbnN0IHByZXZpb3VzVmFsdWUgPSBzdGF0ZXMuY3VycmVudFZhbHVlID8/IGRlZmF1bHRWYWx1ZSA/PyB1bmRlZmluZWQ7XG4gICAgICBzdGF0ZXMucHJldmlvdXNWYWx1ZSA9IHByZXZpb3VzVmFsdWU7XG4gICAgICBzdGF0ZXMuY3VycmVudFZhbHVlID0gbmV4dFN0YXRlO1xuXG4gICAgICBjb25zdCB0cmlnZ2VyRXZlbnRzID0gZ2V0VHJpZ2dlckV2ZW50cyhlbnRpdHkpO1xuICAgICAgdHJpZ2dlckV2ZW50cy5lbWl0KFRyaWdnZXJUeXBlLk9OX1NUQVRFX0NIQU5HRSk7XG4gICAgfVxuICB9XG5cbiAgLy8gU1RBUlRfVFdFRU5cbiAgZnVuY3Rpb24gaGFuZGxlU3RhcnRUd2VlbihlbnRpdHk6IEVudGl0eSwgcGF5bG9hZDogQWN0aW9uUGF5bG9hZDxBY3Rpb25UeXBlLlNUQVJUX1RXRUVOPikge1xuICAgIGlmIChwYXlsb2FkKSB7XG4gICAgICAvLyBHZXQgdGhlIGluaXRpYWwgdHdlZW4gaWYgZXhpc3RzIHRvIHJldmVydCB0aGUgb2JqZWN0IG1vdmVtZW50IHRvIHRoYXQgc2VxdWVuY2Ugd2hlbiBleGVjdXRpbmcgYSB0d2VlbiBmcm9tIGFjdGlvbnNcbiAgICAgIGNvbnN0IGluaXRpYWxUd2VlbiA9IFR3ZWVuQ29tcG9uZW50LmdldE11dGFibGVPck51bGwoZW50aXR5KTtcbiAgICAgIGxldCB0d2VlbjtcblxuICAgICAgc3dpdGNoIChwYXlsb2FkLnR5cGUpIHtcbiAgICAgICAgY2FzZSBUd2VlblR5cGUuTU9WRV9JVEVNOiB7XG4gICAgICAgICAgdHdlZW4gPSBoYW5kbGVNb3ZlSXRlbShlbnRpdHksIHBheWxvYWQpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgVHdlZW5UeXBlLlJPVEFURV9JVEVNOiB7XG4gICAgICAgICAgdHdlZW4gPSBoYW5kbGVSb3RhdGVJdGVtKGVudGl0eSwgcGF5bG9hZCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBUd2VlblR5cGUuU0NBTEVfSVRFTToge1xuICAgICAgICAgIHR3ZWVuID0gaGFuZGxlU2NhbGVJdGVtKGVudGl0eSwgcGF5bG9hZCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBUd2VlblR5cGUuS0VFUF9ST1RBVElOR19JVEVNOiB7XG4gICAgICAgICAgdHdlZW4gPSBoYW5kbGVLZWVwUm90YXRpbmdJdGVtKGVudGl0eSwgcGF5bG9hZCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biB0d2VlbiB0eXBlOiAke3BheWxvYWQudHlwZX1gKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXZlcnRUd2VlbihlbnRpdHksIGluaXRpYWxUd2VlbiwgdHdlZW4pO1xuICAgIH1cbiAgfVxuXG4gIC8vIFJlc3RhcnQgdG8gdGhlIGluaXRpYWwgbW92ZW1lbnQgc2VxdWVuY2Ugd2hlbiBleGVjdXRpbmcgYW4gYWRpdGlvbmFsIHR3ZWVuXG4gIGZ1bmN0aW9uIHJldmVydFR3ZWVuKGVudGl0eTogRW50aXR5LCBpbml0aWFsVHdlZW46IFBCVHdlZW4gfCBudWxsLCB0d2VlbjogUEJUd2Vlbikge1xuICAgIGNvbnN0IHR3ZWVuU2VxdWVuY2UgPSBUd2VlblNlcXVlbmNlLmdldE11dGFibGVPck51bGwoZW50aXR5KTtcbiAgICBsZXQgX3JldmVydFR3ZWVuID0ge1xuICAgICAgLi4udHdlZW4sXG4gICAgfTtcblxuICAgIGlmICghaW5pdGlhbFR3ZWVuIHx8ICF0d2VlblNlcXVlbmNlIHx8ICF0d2VlblNlcXVlbmNlLmxvb3ApIHJldHVybjtcblxuICAgIHN3aXRjaCAoaW5pdGlhbFR3ZWVuLm1vZGU/LiRjYXNlKSB7XG4gICAgICBjYXNlICdtb3ZlJzoge1xuICAgICAgICBfcmV2ZXJ0VHdlZW4gPSB7XG4gICAgICAgICAgLi4uX3JldmVydFR3ZWVuLFxuICAgICAgICAgIG1vZGU6IFR3ZWVuLk1vZGUuTW92ZSh7XG4gICAgICAgICAgICBzdGFydDogKHR3ZWVuLm1vZGUgYXMgeyAkY2FzZTogJ21vdmUnOyBtb3ZlOiBNb3ZlIH0pLm1vdmUuZW5kLFxuICAgICAgICAgICAgZW5kOiBpbml0aWFsVHdlZW4ubW9kZS5tb3ZlLnN0YXJ0LFxuICAgICAgICAgIH0pLFxuICAgICAgICB9O1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ3JvdGF0ZSc6IHtcbiAgICAgICAgX3JldmVydFR3ZWVuID0ge1xuICAgICAgICAgIC4uLl9yZXZlcnRUd2VlbixcbiAgICAgICAgICBtb2RlOiBUd2Vlbi5Nb2RlLlJvdGF0ZSh7XG4gICAgICAgICAgICBzdGFydDogKHR3ZWVuLm1vZGUgYXMgeyAkY2FzZTogJ3JvdGF0ZSc7IHJvdGF0ZTogUm90YXRlIH0pLnJvdGF0ZS5lbmQsXG4gICAgICAgICAgICBlbmQ6IGluaXRpYWxUd2Vlbi5tb2RlLnJvdGF0ZS5zdGFydCxcbiAgICAgICAgICB9KSxcbiAgICAgICAgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdzY2FsZSc6IHtcbiAgICAgICAgX3JldmVydFR3ZWVuID0ge1xuICAgICAgICAgIC4uLl9yZXZlcnRUd2VlbixcbiAgICAgICAgICBtb2RlOiBUd2Vlbi5Nb2RlLlNjYWxlKHtcbiAgICAgICAgICAgIHN0YXJ0OiAodHdlZW4ubW9kZSBhcyB7ICRjYXNlOiAnc2NhbGUnOyBzY2FsZTogU2NhbGUgfSkuc2NhbGUuZW5kLFxuICAgICAgICAgICAgZW5kOiBpbml0aWFsVHdlZW4ubW9kZS5zY2FsZS5zdGFydCxcbiAgICAgICAgICB9KSxcbiAgICAgICAgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biB0d2VlbiBtb2RlOiAke2luaXRpYWxUd2Vlbi5tb2RlfWApO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIElmIHRoZSBpbml0aWFsIHR3ZWVuIGlzIG5vdCBwbGF5aW5nIGJ1dCB0aGUgbG9vcCBwcm9wZXJ0eSBpcyBhY3RpdmUsIHN0YXJ0IGl0XG4gICAgaW5pdGlhbFR3ZWVuLnBsYXlpbmcgPSB0cnVlO1xuICAgIHR3ZWVuU2VxdWVuY2Uuc2VxdWVuY2UgPSBbX3JldmVydFR3ZWVuLCBpbml0aWFsVHdlZW5dO1xuICB9XG5cbiAgLy8gTU9WRV9JVEVNXG4gIGZ1bmN0aW9uIGhhbmRsZU1vdmVJdGVtKGVudGl0eTogRW50aXR5LCB0d2VlbjogQWN0aW9uUGF5bG9hZDxBY3Rpb25UeXBlLlNUQVJUX1RXRUVOPikge1xuICAgIGNvbnN0IHRyYW5zZm9ybSA9IFRyYW5zZm9ybS5nZXQoZW50aXR5KTtcbiAgICBjb25zdCB7IGR1cmF0aW9uLCBpbnRlcnBvbGF0aW9uVHlwZSwgcmVsYXRpdmUgfSA9IHR3ZWVuO1xuICAgIGNvbnN0IGVuZCA9IFZlY3RvcjMuY3JlYXRlKHR3ZWVuLmVuZC54LCB0d2Vlbi5lbmQueSwgdHdlZW4uZW5kLnopO1xuICAgIGNvbnN0IGVuZFBvc2l0aW9uID0gcmVsYXRpdmUgPyBWZWN0b3IzLmFkZCh0cmFuc2Zvcm0ucG9zaXRpb24sIGVuZCkgOiBlbmQ7XG5cbiAgICByZXR1cm4gVHdlZW5Db21wb25lbnQuY3JlYXRlT3JSZXBsYWNlKGVudGl0eSwge1xuICAgICAgbW9kZTogVHdlZW4uTW9kZS5Nb3ZlKHtcbiAgICAgICAgc3RhcnQ6IHRyYW5zZm9ybS5wb3NpdGlvbixcbiAgICAgICAgZW5kOiBlbmRQb3NpdGlvbixcbiAgICAgIH0pLFxuICAgICAgZHVyYXRpb246IGR1cmF0aW9uICogMTAwMCwgLy8gZnJvbSBzZWNzIHRvIG1zXG4gICAgICBlYXNpbmdGdW5jdGlvbjogZ2V0RWFzaW5nRnVuY3Rpb25Gcm9tSW50ZXJwb2xhdGlvbihpbnRlcnBvbGF0aW9uVHlwZSksXG4gICAgfSk7XG4gIH1cblxuICAvLyBST1RBVEVfSVRFTVxuICBmdW5jdGlvbiBoYW5kbGVSb3RhdGVJdGVtKGVudGl0eTogRW50aXR5LCB0d2VlbjogQWN0aW9uUGF5bG9hZDxBY3Rpb25UeXBlLlNUQVJUX1RXRUVOPikge1xuICAgIGNvbnN0IHRyYW5zZm9ybSA9IFRyYW5zZm9ybS5nZXQoZW50aXR5KTtcbiAgICBjb25zdCB7IGR1cmF0aW9uLCBpbnRlcnBvbGF0aW9uVHlwZSwgcmVsYXRpdmUgfSA9IHR3ZWVuO1xuICAgIGNvbnN0IGVuZCA9IFF1YXRlcm5pb24uZnJvbUV1bGVyRGVncmVlcyh0d2Vlbi5lbmQueCwgdHdlZW4uZW5kLnksIHR3ZWVuLmVuZC56KTtcbiAgICBjb25zdCBlbmRSb3RhdGlvbiA9IHJlbGF0aXZlID8gUXVhdGVybmlvbi5tdWx0aXBseSh0cmFuc2Zvcm0ucm90YXRpb24sIGVuZCkgOiBlbmQ7XG5cbiAgICByZXR1cm4gVHdlZW5Db21wb25lbnQuY3JlYXRlT3JSZXBsYWNlKGVudGl0eSwge1xuICAgICAgbW9kZTogVHdlZW4uTW9kZS5Sb3RhdGUoe1xuICAgICAgICBzdGFydDogdHJhbnNmb3JtLnJvdGF0aW9uLFxuICAgICAgICBlbmQ6IGVuZFJvdGF0aW9uLFxuICAgICAgfSksXG4gICAgICBkdXJhdGlvbjogZHVyYXRpb24gKiAxMDAwLCAvLyBmcm9tIHNlY3MgdG8gbXNcbiAgICAgIGVhc2luZ0Z1bmN0aW9uOiBnZXRFYXNpbmdGdW5jdGlvbkZyb21JbnRlcnBvbGF0aW9uKGludGVycG9sYXRpb25UeXBlKSxcbiAgICB9KTtcbiAgfVxuXG4gIC8vIFNDQUxFX0lURU1cbiAgZnVuY3Rpb24gaGFuZGxlU2NhbGVJdGVtKGVudGl0eTogRW50aXR5LCB0d2VlbjogQWN0aW9uUGF5bG9hZDxBY3Rpb25UeXBlLlNUQVJUX1RXRUVOPikge1xuICAgIGNvbnN0IHRyYW5zZm9ybSA9IFRyYW5zZm9ybS5nZXQoZW50aXR5KTtcbiAgICBjb25zdCB7IGR1cmF0aW9uLCBpbnRlcnBvbGF0aW9uVHlwZSwgcmVsYXRpdmUgfSA9IHR3ZWVuO1xuICAgIGNvbnN0IGVuZCA9IFZlY3RvcjMuY3JlYXRlKHR3ZWVuLmVuZC54LCB0d2Vlbi5lbmQueSwgdHdlZW4uZW5kLnopO1xuICAgIGNvbnN0IGVuZFNjYWxlID0gcmVsYXRpdmUgPyBWZWN0b3IzLmFkZCh0cmFuc2Zvcm0uc2NhbGUsIGVuZCkgOiBlbmQ7XG5cbiAgICByZXR1cm4gVHdlZW5Db21wb25lbnQuY3JlYXRlT3JSZXBsYWNlKGVudGl0eSwge1xuICAgICAgbW9kZTogVHdlZW4uTW9kZS5TY2FsZSh7XG4gICAgICAgIHN0YXJ0OiB0cmFuc2Zvcm0uc2NhbGUsXG4gICAgICAgIGVuZDogZW5kU2NhbGUsXG4gICAgICB9KSxcbiAgICAgIGR1cmF0aW9uOiBkdXJhdGlvbiAqIDEwMDAsIC8vIGZyb20gc2VjcyB0byBtc1xuICAgICAgZWFzaW5nRnVuY3Rpb246IGdldEVhc2luZ0Z1bmN0aW9uRnJvbUludGVycG9sYXRpb24oaW50ZXJwb2xhdGlvblR5cGUpLFxuICAgIH0pO1xuICB9XG5cbiAgLy8gS0VFUF9ST1RBVElOR19JVEVNIChjb250aW51b3VzIHJvdGF0aW9uKVxuICBmdW5jdGlvbiBoYW5kbGVLZWVwUm90YXRpbmdJdGVtKGVudGl0eTogRW50aXR5LCB0d2VlbjogQWN0aW9uUGF5bG9hZDxBY3Rpb25UeXBlLlNUQVJUX1RXRUVOPikge1xuICAgIGNvbnN0IHsgZHVyYXRpb24sIGludGVycG9sYXRpb25UeXBlIH0gPSB0d2VlbjtcbiAgICBjb25zdCBkaXIgPSB0d2Vlbi5kaXJlY3Rpb24gPz8geyB4OiAwLCB5OiAxLCB6OiAwIH07XG4gICAgY29uc3Qgc3BlZWQgPSB0d2Vlbi5zcGVlZCA/PyAxO1xuXG4gICAgcmV0dXJuIFR3ZWVuQ29tcG9uZW50LmNyZWF0ZU9yUmVwbGFjZShlbnRpdHksIHtcbiAgICAgIG1vZGU6IFR3ZWVuLk1vZGUuUm90YXRlQ29udGludW91cyh7XG4gICAgICAgIGRpcmVjdGlvbjogUXVhdGVybmlvbi5mcm9tRXVsZXJEZWdyZWVzKGRpci54LCBkaXIueSwgZGlyLnopLFxuICAgICAgICBzcGVlZCxcbiAgICAgIH0pLFxuICAgICAgZHVyYXRpb246IChkdXJhdGlvbiA/PyAwKSAqIDEwMDAsXG4gICAgICBlYXNpbmdGdW5jdGlvbjogZ2V0RWFzaW5nRnVuY3Rpb25Gcm9tSW50ZXJwb2xhdGlvbihpbnRlcnBvbGF0aW9uVHlwZSksXG4gICAgfSk7XG4gIH1cblxuICAvLyBTVE9QX1RXRUVOXG4gIGZ1bmN0aW9uIGhhbmRsZVN0b3BUd2VlbihlbnRpdHk6IEVudGl0eSkge1xuICAgIGlmIChUd2VlbkNvbXBvbmVudC5oYXMoZW50aXR5KSkge1xuICAgICAgVHdlZW5Db21wb25lbnQuZGVsZXRlRnJvbShlbnRpdHkpO1xuICAgIH1cbiAgfVxuXG4gIC8vIFNMSURFX1RFWFRVUkVcbiAgZnVuY3Rpb24gaGFuZGxlU2xpZGVUZXh0dXJlKGVudGl0eTogRW50aXR5LCBwYXlsb2FkOiBBY3Rpb25QYXlsb2FkPEFjdGlvblR5cGUuU0xJREVfVEVYVFVSRT4pIHtcbiAgICBjb25zdCBkaXIgPSBwYXlsb2FkLmRpcmVjdGlvbjtcbiAgICBjb25zdCBzcGVlZCA9IHBheWxvYWQuc3BlZWQ7XG4gICAgY29uc3QgbW92ZW1lbnRUeXBlID0gcGF5bG9hZC5tb3ZlbWVudFR5cGUgYXMgdW5rbm93biBhcyBTZGtUZXh0dXJlTW92ZW1lbnRUeXBlIHwgdW5kZWZpbmVkO1xuICAgIGNvbnN0IGR1cmF0aW9uID0gcGF5bG9hZC5kdXJhdGlvbiA/PyAwO1xuXG4gICAgcmV0dXJuIFR3ZWVuQ29tcG9uZW50LmNyZWF0ZU9yUmVwbGFjZShlbnRpdHksIHtcbiAgICAgIG1vZGU6IFR3ZWVuLk1vZGUuVGV4dHVyZU1vdmVDb250aW51b3VzKHtcbiAgICAgICAgZGlyZWN0aW9uOiB7IHg6IGRpci54LCB5OiBkaXIueSB9LFxuICAgICAgICBzcGVlZCxcbiAgICAgICAgbW92ZW1lbnRUeXBlLFxuICAgICAgfSksXG4gICAgICBkdXJhdGlvbjogZHVyYXRpb24gKiAxMDAwLFxuICAgICAgZWFzaW5nRnVuY3Rpb246IDAsXG4gICAgfSk7XG4gIH1cblxuICAvLyBTRVRfQ09VTlRFUlxuICBmdW5jdGlvbiBoYW5kbGVTZXRDb3VudGVyKGVudGl0eTogRW50aXR5LCBwYXlsb2FkOiBBY3Rpb25QYXlsb2FkPEFjdGlvblR5cGUuU0VUX0NPVU5URVI+KSB7XG4gICAgY29uc3QgY291bnRlciA9IENvdW50ZXIuZ2V0TXV0YWJsZU9yTnVsbChlbnRpdHkpO1xuXG4gICAgaWYgKGNvdW50ZXIpIHtcbiAgICAgIGNvdW50ZXIudmFsdWUgPSBwYXlsb2FkLmNvdW50ZXI7XG5cbiAgICAgIGNvbnN0IHRyaWdnZXJFdmVudHMgPSBnZXRUcmlnZ2VyRXZlbnRzKGVudGl0eSk7XG4gICAgICB0cmlnZ2VyRXZlbnRzLmVtaXQoVHJpZ2dlclR5cGUuT05fQ09VTlRFUl9DSEFOR0UpO1xuICAgIH1cbiAgfVxuXG4gIC8vIElOQ1JFTUVOVF9DT1VOVEVSXG4gIGZ1bmN0aW9uIGhhbmRsZUluY3JlbWVudENvdW50ZXIoXG4gICAgZW50aXR5OiBFbnRpdHksXG4gICAgcGF5bG9hZDogQWN0aW9uUGF5bG9hZDxBY3Rpb25UeXBlLklOQ1JFTUVOVF9DT1VOVEVSPixcbiAgKSB7XG4gICAgY29uc3QgY291bnRlciA9IENvdW50ZXIuZ2V0TXV0YWJsZU9yTnVsbChlbnRpdHkpO1xuICAgIGNvbnN0IGFtb3VudCA9IHBheWxvYWQuYW1vdW50ID8/IDE7XG5cbiAgICBpZiAoY291bnRlcikge1xuICAgICAgY291bnRlci52YWx1ZSArPSBhbW91bnQ7XG5cbiAgICAgIGNvbnN0IHRyaWdnZXJFdmVudHMgPSBnZXRUcmlnZ2VyRXZlbnRzKGVudGl0eSk7XG4gICAgICB0cmlnZ2VyRXZlbnRzLmVtaXQoVHJpZ2dlclR5cGUuT05fQ09VTlRFUl9DSEFOR0UpO1xuICAgIH1cbiAgfVxuXG4gIC8vIERFQ1JFQVNFX0NPVU5URVJcbiAgZnVuY3Rpb24gaGFuZGxlRGVjcmVhc2VDb3VudGVyKFxuICAgIGVudGl0eTogRW50aXR5LFxuICAgIHBheWxvYWQ6IEFjdGlvblBheWxvYWQ8QWN0aW9uVHlwZS5JTkNSRU1FTlRfQ09VTlRFUj4sXG4gICkge1xuICAgIGNvbnN0IGNvdW50ZXIgPSBDb3VudGVyLmdldE11dGFibGVPck51bGwoZW50aXR5KTtcbiAgICBjb25zdCBhbW91bnQgPSBwYXlsb2FkLmFtb3VudCA/PyAxO1xuXG4gICAgaWYgKGNvdW50ZXIpIHtcbiAgICAgIGNvdW50ZXIudmFsdWUgLT0gYW1vdW50O1xuXG4gICAgICBjb25zdCB0cmlnZ2VyRXZlbnRzID0gZ2V0VHJpZ2dlckV2ZW50cyhlbnRpdHkpO1xuICAgICAgdHJpZ2dlckV2ZW50cy5lbWl0KFRyaWdnZXJUeXBlLk9OX0NPVU5URVJfQ0hBTkdFKTtcbiAgICB9XG4gIH1cblxuICAvLyBQTEFZX1NPVU5EXG4gIGZ1bmN0aW9uIGhhbmRsZVBsYXlTb3VuZChlbnRpdHk6IEVudGl0eSwgcGF5bG9hZDogQWN0aW9uUGF5bG9hZDxBY3Rpb25UeXBlLlBMQVlfU09VTkQ+KSB7XG4gICAgY29uc3QgeyBzcmMsIGxvb3AsIHZvbHVtZSwgZ2xvYmFsIH0gPSBwYXlsb2FkO1xuICAgIGlmIChBdWRpb1NvdXJjZS5oYXMoZW50aXR5KSkge1xuICAgICAgQXVkaW9Tb3VyY2UucGxheVNvdW5kKGVudGl0eSwgc3JjKTtcbiAgICAgIGNvbnN0IGF1ZGlvU291cmNlID0gQXVkaW9Tb3VyY2UuZ2V0TXV0YWJsZShlbnRpdHkpO1xuICAgICAgYXVkaW9Tb3VyY2UubG9vcCA9IGxvb3A7XG4gICAgICBhdWRpb1NvdXJjZS52b2x1bWUgPSB2b2x1bWUgPz8gMTtcbiAgICAgIGF1ZGlvU291cmNlLmdsb2JhbCA9IGdsb2JhbCA/PyBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgQXVkaW9Tb3VyY2UuY3JlYXRlKGVudGl0eSwge1xuICAgICAgICBhdWRpb0NsaXBVcmw6IHNyYyxcbiAgICAgICAgbG9vcCxcbiAgICAgICAgcGxheWluZzogdHJ1ZSxcbiAgICAgICAgdm9sdW1lOiB2b2x1bWUgPz8gMSxcbiAgICAgICAgZ2xvYmFsLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLy8gU1RPUF9TT1VORFxuICBmdW5jdGlvbiBoYW5kbGVTdG9wU291bmQoZW50aXR5OiBFbnRpdHksIF9wYXlsb2FkOiBBY3Rpb25QYXlsb2FkPEFjdGlvblR5cGUuU1RPUF9TT1VORD4pIHtcbiAgICBjb25zdCBhdWRpb1NvdXJjZSA9IEF1ZGlvU291cmNlLmdldE11dGFibGVPck51bGwoZW50aXR5KTtcbiAgICBpZiAoYXVkaW9Tb3VyY2UpIHtcbiAgICAgIGF1ZGlvU291cmNlLnBsYXlpbmcgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICAvLyBTRVRfVklTSUJJTElUWVxuICBmdW5jdGlvbiBoYW5kbGVTZXRWaXNpYmlsaXR5KGVudGl0eTogRW50aXR5LCBwYXlsb2FkOiBBY3Rpb25QYXlsb2FkPEFjdGlvblR5cGUuU0VUX1ZJU0lCSUxJVFk+KSB7XG4gICAgY29uc3QgeyB2aXNpYmxlLCBjb2xsaWRlciB9ID0gcGF5bG9hZDtcbiAgICBWaXNpYmlsaXR5Q29tcG9uZW50LmNyZWF0ZU9yUmVwbGFjZShlbnRpdHksIHsgdmlzaWJsZSB9KTtcbiAgICBjb25zdCBnbHRmID0gR2x0ZkNvbnRhaW5lci5nZXRNdXRhYmxlT3JOdWxsKGVudGl0eSk7XG4gICAgY29uc3QgbWVzaENvbGxpZGVyID0gTWVzaENvbGxpZGVyLmdldE11dGFibGVPck51bGwoZW50aXR5KTtcblxuICAgIGlmIChjb2xsaWRlciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAoZ2x0Zikge1xuICAgICAgICBnbHRmLmludmlzaWJsZU1lc2hlc0NvbGxpc2lvbk1hc2sgPSBjb2xsaWRlcjtcbiAgICAgIH0gZWxzZSBpZiAobWVzaENvbGxpZGVyKSB7XG4gICAgICAgIG1lc2hDb2xsaWRlci5jb2xsaXNpb25NYXNrID0gY29sbGlkZXI7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gQVRUQUNIX1RPX1BMQVlFUlxuICBmdW5jdGlvbiBoYW5kbGVBdHRhY2hUb1BsYXllcihcbiAgICBlbnRpdHk6IEVudGl0eSxcbiAgICBwYXlsb2FkOiBBY3Rpb25QYXlsb2FkPEFjdGlvblR5cGUuQVRUQUNIX1RPX1BMQVlFUj4sXG4gICkge1xuICAgIGNvbnN0IHsgYW5jaG9yUG9pbnRJZCB9ID0gcGF5bG9hZDtcbiAgICBjb25zdCB1c2VyID0gcGxheWVyc0hlbHBlcj8uZ2V0UGxheWVyKCk/LnVzZXJJZDtcbiAgICBpZiAodXNlcikge1xuICAgICAgQXZhdGFyQXR0YWNoLmNyZWF0ZU9yUmVwbGFjZShlbnRpdHksIHsgYW5jaG9yUG9pbnRJZDogYW5jaG9yUG9pbnRJZCwgYXZhdGFySWQ6IHVzZXIgfSk7XG4gICAgfVxuICB9XG5cbiAgLy8gREVUQUNIX0ZST01fUExBWUVSXG4gIGZ1bmN0aW9uIGhhbmRsZURldGFjaEZyb21QbGF5ZXIoXG4gICAgZW50aXR5OiBFbnRpdHksXG4gICAgX3BheWxvYWQ6IEFjdGlvblBheWxvYWQ8QWN0aW9uVHlwZS5ERVRBQ0hfRlJPTV9QTEFZRVI+LFxuICApIHtcbiAgICBpZiAoQXZhdGFyQXR0YWNoLmhhcyhlbnRpdHkpKSB7XG4gICAgICBBdmF0YXJBdHRhY2guZGVsZXRlRnJvbShlbnRpdHkpO1xuICAgIH1cbiAgfVxuXG4gIC8vIFRFTEVQT1JUIFBMQVlFUlxuICBmdW5jdGlvbiBoYW5kbGVUZWxlcG9ydFBsYXllcihcbiAgICBfZW50aXR5OiBFbnRpdHksXG4gICAgcGF5bG9hZDogQWN0aW9uUGF5bG9hZDxBY3Rpb25UeXBlLlRFTEVQT1JUX1BMQVlFUj4sXG4gICkge1xuICAgIGNvbnN0IHsgeCwgeSB9ID0gcGF5bG9hZDtcbiAgICByZXF1ZXN0VGVsZXBvcnQoe1xuICAgICAgZGVzdGluYXRpb246IGAke3h9LCR7eX1gLFxuICAgIH0pO1xuICB9XG5cbiAgLy8gTU9WRSBQTEFZRVJcbiAgZnVuY3Rpb24gaGFuZGxlTW92ZVBsYXllcihfZW50aXR5OiBFbnRpdHksIHBheWxvYWQ6IEFjdGlvblBheWxvYWQ8QWN0aW9uVHlwZS5NT1ZFX1BMQVlFUj4pIHtcbiAgICBjb25zdCBvcHRpb25zID0ge1xuICAgICAgbmV3UmVsYXRpdmVQb3NpdGlvbjogcGF5bG9hZC5wb3NpdGlvbixcbiAgICAgIGNhbWVyYVRhcmdldDogcGF5bG9hZC5jYW1lcmFUYXJnZXQsXG4gICAgfTtcbiAgICB2b2lkIG1vdmVQbGF5ZXJUbyhvcHRpb25zKTtcbiAgfVxuXG4gIC8vIFBMQVkgREVGQVVMVCBFTU9URVxuICBmdW5jdGlvbiBoYW5kbGVQbGF5RGVmYXVsdEVtb3RlKFxuICAgIF9lbnRpdHk6IEVudGl0eSxcbiAgICBwYXlsb2FkOiBBY3Rpb25QYXlsb2FkPEFjdGlvblR5cGUuUExBWV9ERUZBVUxUX0VNT1RFPixcbiAgKSB7XG4gICAgY29uc3QgeyBlbW90ZSB9ID0gcGF5bG9hZDtcbiAgICB2b2lkIHRyaWdnZXJFbW90ZSh7IHByZWRlZmluZWRFbW90ZTogZW1vdGUgfSk7XG4gIH1cblxuICAvLyBQTEFZIENVU1RPTSBFTU9URVxuICBmdW5jdGlvbiBoYW5kbGVQbGF5Q3VzdG9tRW1vdGUoXG4gICAgX2VudGl0eTogRW50aXR5LFxuICAgIHBheWxvYWQ6IEFjdGlvblBheWxvYWQ8QWN0aW9uVHlwZS5QTEFZX0NVU1RPTV9FTU9URT4sXG4gICkge1xuICAgIGNvbnN0IHsgc3JjLCBsb29wIH0gPSBwYXlsb2FkO1xuICAgIHZvaWQgdHJpZ2dlclNjZW5lRW1vdGUoeyBzcmMsIGxvb3AgfSk7XG4gIH1cblxuICAvLyBPUEVOIExJTktcbiAgZnVuY3Rpb24gaGFuZGxlT3BlbkxpbmsoX2VudGl0eTogRW50aXR5LCBwYXlsb2FkOiBBY3Rpb25QYXlsb2FkPEFjdGlvblR5cGUuT1BFTl9MSU5LPikge1xuICAgIGNvbnN0IHsgdXJsIH0gPSBwYXlsb2FkO1xuICAgIHZvaWQgb3BlbkV4dGVybmFsVXJsKHsgdXJsIH0pO1xuICB9XG5cbiAgLy8gUExBWV9WSURFT1xuICBmdW5jdGlvbiBoYW5kbGVQbGF5VmlkZW8oZW50aXR5OiBFbnRpdHksIHBheWxvYWQ6IEFjdGlvblBheWxvYWQ8QWN0aW9uVHlwZS5QTEFZX1ZJREVPX1NUUkVBTT4pIHtcbiAgICBjb25zdCB2aWRlb1NvdXJjZSA9IFZpZGVvUGxheWVyLmdldE11dGFibGVPck51bGwoZW50aXR5KTtcbiAgICBpZiAoIXZpZGVvU291cmNlICYmIHBheWxvYWQuc3JjKSB7XG4gICAgICBWaWRlb1BsYXllci5jcmVhdGVPclJlcGxhY2UoZW50aXR5LCB7XG4gICAgICAgIHNyYzogcGF5bG9hZC5zcmMsXG4gICAgICAgIHZvbHVtZTogcGF5bG9hZC52b2x1bWUgPz8gMSxcbiAgICAgICAgbG9vcDogcGF5bG9hZC5sb29wID8/IGZhbHNlLFxuICAgICAgICBwbGF5aW5nOiB0cnVlLFxuICAgICAgfSk7XG5cbiAgICAgIC8vIEluaXQgdmlkZW8gcGxheWVyIG1hdGVyaWFsIHdoZW4gdGhlIGVudGl0eSBkb2Vzbid0IGhhdmUgYSBWaWRlb1BsYXllciBjb21wb25lbnQgZGVmaW5lZFxuICAgICAgaW5pdFZpZGVvUGxheWVyQ29tcG9uZW50TWF0ZXJpYWwoZW50aXR5LCB7IE1hdGVyaWFsIH0sIE1hdGVyaWFsLmdldE9yTnVsbChlbnRpdHkpKTtcbiAgICB9XG4gICAgaWYgKHZpZGVvU291cmNlKSB7XG4gICAgICBpZiAodmlkZW9Tb3VyY2U/LnNyYyAhPT0gcGF5bG9hZC5zcmMpIHtcbiAgICAgICAgdmlkZW9Tb3VyY2Uuc3JjID0gcGF5bG9hZC5zcmMgPz8gJyc7XG4gICAgICB9XG4gICAgICB2aWRlb1NvdXJjZS52b2x1bWUgPSBwYXlsb2FkLnZvbHVtZSA/PyB2aWRlb1NvdXJjZS52b2x1bWU7XG4gICAgICB2aWRlb1NvdXJjZS5sb29wID0gcGF5bG9hZC5sb29wID8/IHZpZGVvU291cmNlLmxvb3A7XG4gICAgICB2aWRlb1NvdXJjZS5wbGF5aW5nID0gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgLy8gU1RPUF9WSURFT1xuICBmdW5jdGlvbiBoYW5kbGVTdG9wVmlkZW8oZW50aXR5OiBFbnRpdHksIF9wYXlsb2FkOiBBY3Rpb25QYXlsb2FkPEFjdGlvblR5cGUuU1RPUF9WSURFT19TVFJFQU0+KSB7XG4gICAgY29uc3QgdmlkZW9Tb3VyY2UgPSBWaWRlb1BsYXllci5nZXRNdXRhYmxlT3JOdWxsKGVudGl0eSk7XG4gICAgaWYgKHZpZGVvU291cmNlKSB7XG4gICAgICB2aWRlb1NvdXJjZS5wbGF5aW5nID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgLy8gUExBWV9BVURJT19TVFJFQU1cbiAgZnVuY3Rpb24gaGFuZGxlUGxheUF1ZGlvU3RyZWFtKFxuICAgIGVudGl0eTogRW50aXR5LFxuICAgIHBheWxvYWQ6IEFjdGlvblBheWxvYWQ8QWN0aW9uVHlwZS5QTEFZX0FVRElPX1NUUkVBTT4sXG4gICkge1xuICAgIGNvbnN0IHsgdXJsLCB2b2x1bWUgfSA9IHBheWxvYWQ7XG4gICAgQXVkaW9TdHJlYW0uY3JlYXRlT3JSZXBsYWNlKGVudGl0eSwge1xuICAgICAgdXJsLFxuICAgICAgcGxheWluZzogdHJ1ZSxcbiAgICAgIHZvbHVtZTogdm9sdW1lID8/IDEsXG4gICAgfSk7XG4gIH1cblxuICAvLyBTVE9QX0FVRElPX1NUUkVBTVxuICBmdW5jdGlvbiBoYW5kbGVTdG9wQXVkaW9TdHJlYW0oXG4gICAgZW50aXR5OiBFbnRpdHksXG4gICAgX3BheWxvYWQ6IEFjdGlvblBheWxvYWQ8QWN0aW9uVHlwZS5TVE9QX0FVRElPX1NUUkVBTT4sXG4gICkge1xuICAgIGNvbnN0IGF1ZGlvU291cmNlID0gQXVkaW9TdHJlYW0uZ2V0TXV0YWJsZU9yTnVsbChlbnRpdHkpO1xuICAgIGlmIChhdWRpb1NvdXJjZSkge1xuICAgICAgYXVkaW9Tb3VyY2UucGxheWluZyA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIC8vIFNIT1dfVEVYVFxuICBmdW5jdGlvbiBoYW5kbGVTaG93VGV4dChlbnRpdHk6IEVudGl0eSwgcGF5bG9hZDogQWN0aW9uUGF5bG9hZDxBY3Rpb25UeXBlLlNIT1dfVEVYVD4pIHtcbiAgICBjb25zdCB7IHRleHQsIGhpZGVBZnRlclNlY29uZHMsIGZvbnQsIGZvbnRTaXplLCB0ZXh0QWxpZ24gfSA9IHBheWxvYWQ7XG4gICAgLy8gQ3JlYXRlIGEgbmV3IGVudGl0eSBmb3IgdGhlIHRleHRcbiAgICBjb25zdCB0ZXh0RW50aXR5ID0gZW5naW5lLmFkZEVudGl0eSgpO1xuICAgIC8vIFNldCB0aGUgdGV4dCBlbnRpdHkgYXMgYSBjaGlsZCBvZiB0aGUgZW50aXR5IHRoYXQgY2FsbGVkIHRoZSBhY3Rpb25cbiAgICB0ZXh0RW50aXRpZXMuc2V0KGVudGl0eSwgdGV4dEVudGl0eSk7XG4gICAgY29uc3QgdWlUcmFuc2Zvcm1Db21wb25lbnQgPSBnZXRVSVRyYW5zZm9ybShVaVRyYW5zZm9ybSwgdGV4dEVudGl0eSk7XG4gICAgaWYgKHVpVHJhbnNmb3JtQ29tcG9uZW50KSB7XG4gICAgICB1aVRyYW5zZm9ybUNvbXBvbmVudC5wYXJlbnQgPSBlbnRpdHk7XG4gICAgICAvLyBTZXQgdGhlIHBvaW50ZXIgZmlsdGVyIHRvIG5vbmUsIGFsbG93aW5nIHBsYXllcnMgdG8gY29udGludWUgaW50ZXJhY3Rpbmcgd2l0aCB0aGUgc2NlbmVcbiAgICAgIHVpVHJhbnNmb3JtQ29tcG9uZW50LnBvaW50ZXJGaWx0ZXIgPSBQb2ludGVyRmlsdGVyTW9kZS5QRk1fTk9ORTtcbiAgICAgIFVpVGV4dC5jcmVhdGVPclJlcGxhY2UodGV4dEVudGl0eSwge1xuICAgICAgICB2YWx1ZTogdGV4dCxcbiAgICAgICAgZm9udDogZm9udCBhcyB1bmtub3duIGFzIEZvbnQsXG4gICAgICAgIGZvbnRTaXplLFxuICAgICAgICB0ZXh0QWxpZ246IHRleHRBbGlnbiBhcyB1bmtub3duIGFzIFRleHRBbGlnbk1vZGUsXG4gICAgICB9KTtcbiAgICAgIHN0YXJ0VGltZW91dChlbnRpdHksIEFjdGlvblR5cGUuSElERV9URVhULCBoaWRlQWZ0ZXJTZWNvbmRzLCAoKSA9PlxuICAgICAgICBoYW5kbGVIaWRlVGV4dChlbnRpdHksIHt9KSxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLy8gSElERV9URVhUXG4gIGZ1bmN0aW9uIGhhbmRsZUhpZGVUZXh0KGVudGl0eTogRW50aXR5LCBfcGF5bG9hZDogQWN0aW9uUGF5bG9hZDxBY3Rpb25UeXBlLkhJREVfVEVYVD4pIHtcbiAgICBjb25zdCB0ZXh0RW50aXR5ID0gdGV4dEVudGl0aWVzLmdldChlbnRpdHkpO1xuICAgIGlmICh0ZXh0RW50aXR5KSB7XG4gICAgICAvLyBEZWxldGUgdGV4dCBjb21wb25lbnRcbiAgICAgIFVpVGV4dC5kZWxldGVGcm9tKHRleHRFbnRpdHkpO1xuICAgICAgLy8gRGVsZXRlIHRyYW5zZm9ybSBjb21wb25lbnRcbiAgICAgIFVpVHJhbnNmb3JtLmRlbGV0ZUZyb20odGV4dEVudGl0eSk7XG4gICAgICAvLyBDbGVhciB0aW1lb3V0IGlmIGl0IGV4aXN0c1xuICAgICAgc3RvcFRpbWVvdXQoZW50aXR5LCBBY3Rpb25UeXBlLkhJREVfVEVYVCk7XG4gICAgICAvLyBEZWxldGUgdGV4dCBlbnRpdHkgZnJvbSB0aGUgbWFwXG4gICAgICB0ZXh0RW50aXRpZXMuZGVsZXRlKGVudGl0eSk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gZmluZEFjdGlvbkJ5TmFtZShlbnRpdHk6IEVudGl0eSwgbmFtZTogc3RyaW5nKSB7XG4gICAgY29uc3QgYWN0aW9ucyA9IEFjdGlvbnMuZ2V0T3JOdWxsKGVudGl0eSk7XG4gICAgcmV0dXJuIGFjdGlvbnM/LnZhbHVlLmZpbmQoJCA9PiAkLm5hbWUgPT09IG5hbWUpO1xuICB9XG5cbiAgLy8gU1RBUlRfREVMQVlcbiAgZnVuY3Rpb24gaGFuZGxlU3RhcnREZWxheShlbnRpdHk6IEVudGl0eSwgcGF5bG9hZDogQWN0aW9uUGF5bG9hZDxBY3Rpb25UeXBlLlNUQVJUX0RFTEFZPikge1xuICAgIGNvbnN0IHsgYWN0aW9ucywgdGltZW91dCB9ID0gcGF5bG9hZDtcbiAgICBmb3IgKGNvbnN0IGFjdGlvbk5hbWUgb2YgYWN0aW9ucykge1xuICAgICAgY29uc3QgYWN0aW9uID0gZmluZEFjdGlvbkJ5TmFtZShlbnRpdHksIGFjdGlvbk5hbWUpO1xuICAgICAgaWYgKGFjdGlvbikge1xuICAgICAgICBzdGFydFRpbWVvdXQoZW50aXR5LCBhY3Rpb25OYW1lLCB0aW1lb3V0LCAoKSA9PiB7XG4gICAgICAgICAgY29uc3QgYWN0aW9uRXZlbnRzID0gZ2V0QWN0aW9uRXZlbnRzKGVudGl0eSk7XG4gICAgICAgICAgYWN0aW9uRXZlbnRzLmVtaXQoYWN0aW9uLm5hbWUsIGdldFBheWxvYWQoYWN0aW9uKSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFNUT1BfREVMQVlcbiAgZnVuY3Rpb24gaGFuZGxlU3RvcERlbGF5KGVudGl0eTogRW50aXR5LCBwYXlsb2FkOiBBY3Rpb25QYXlsb2FkPEFjdGlvblR5cGUuU1RPUF9ERUxBWT4pIHtcbiAgICBjb25zdCB7IGFjdGlvbiB9ID0gcGF5bG9hZDtcbiAgICBzdG9wVGltZW91dChlbnRpdHksIGFjdGlvbik7XG4gIH1cblxuICAvLyBTVEFSVF9MT09QXG4gIGZ1bmN0aW9uIGhhbmRsZVN0YXJ0TG9vcChlbnRpdHk6IEVudGl0eSwgcGF5bG9hZDogQWN0aW9uUGF5bG9hZDxBY3Rpb25UeXBlLlNUQVJUX0xPT1A+KSB7XG4gICAgY29uc3QgeyBhY3Rpb25zLCBpbnRlcnZhbCB9ID0gcGF5bG9hZDtcbiAgICBmb3IgKGNvbnN0IGFjdGlvbk5hbWUgb2YgYWN0aW9ucykge1xuICAgICAgY29uc3QgYWN0aW9uID0gZmluZEFjdGlvbkJ5TmFtZShlbnRpdHksIGFjdGlvbk5hbWUpO1xuICAgICAgaWYgKGFjdGlvbikge1xuICAgICAgICBzdGFydEludGVydmFsKGVudGl0eSwgYWN0aW9uTmFtZSwgaW50ZXJ2YWwsICgpID0+IHtcbiAgICAgICAgICBjb25zdCBhY3Rpb25FdmVudHMgPSBnZXRBY3Rpb25FdmVudHMoZW50aXR5KTtcbiAgICAgICAgICBhY3Rpb25FdmVudHMuZW1pdChhY3Rpb24ubmFtZSwgZ2V0UGF5bG9hZChhY3Rpb24pKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gU1RPUF9MT09QXG4gIGZ1bmN0aW9uIGhhbmRsZVN0b3BMb29wKGVudGl0eTogRW50aXR5LCBwYXlsb2FkOiBBY3Rpb25QYXlsb2FkPEFjdGlvblR5cGUuU1RPUF9MT09QPikge1xuICAgIGNvbnN0IHsgYWN0aW9uIH0gPSBwYXlsb2FkO1xuICAgIHN0b3BJbnRlcnZhbChlbnRpdHksIGFjdGlvbik7XG4gIH1cblxuICAvLyBDTE9ORV9FTlRJVFlcbiAgZnVuY3Rpb24gaGFuZGxlQ2xvbmVFbnRpdHkoZW50aXR5OiBFbnRpdHksIHBheWxvYWQ6IEFjdGlvblBheWxvYWQ8QWN0aW9uVHlwZS5DTE9ORV9FTlRJVFk+KSB7XG4gICAgY29uc3QgeyBwb3NpdGlvbiB9ID0gcGF5bG9hZDtcblxuICAgIC8vIGNsb25lIGVudGl0eVxuICAgIGNvbnN0IHsgY2xvbmVkLCBlbnRpdGllcyB9ID0gY2xvbmUoZW50aXR5LCBlbmdpbmUsIFRyYW5zZm9ybSwgVHJpZ2dlcnMsIHNka0hlbHBlcnMpO1xuICAgIGZvciAoY29uc3QgY2xvbmVkIG9mIGVudGl0aWVzLnZhbHVlcygpKSB7XG4gICAgICAvLyBpbml0aWFsaXplXG4gICAgICBpbml0QWN0aW9ucyhjbG9uZWQpO1xuICAgICAgaW5pdFRyaWdnZXJzKGNsb25lZCk7XG5cbiAgICAgIGNvbnN0IHRyaWdnZXJFdmVudHMgPSBnZXRUcmlnZ2VyRXZlbnRzKGNsb25lZCk7XG4gICAgICB0cmlnZ2VyRXZlbnRzLmVtaXQoVHJpZ2dlclR5cGUuT05fQ0xPTkUpO1xuICAgIH1cblxuICAgIGNvbnN0IHRyYW5zZm9ybSA9IFRyYW5zZm9ybS5nZXRPckNyZWF0ZU11dGFibGUoY2xvbmVkKTtcbiAgICB0cmFuc2Zvcm0ucG9zaXRpb24gPSBwb3NpdGlvbjtcbiAgfVxuXG4gIC8vIFJFTU9WRV9FTlRJVFlcbiAgZnVuY3Rpb24gaGFuZGxlUmVtb3ZlRW50aXR5KGVudGl0eTogRW50aXR5LCBfcGF5bG9hZDogQWN0aW9uUGF5bG9hZDxBY3Rpb25UeXBlLlJFTU9WRV9FTlRJVFk+KSB7XG4gICAgLy8gUmVtb3ZlIGFsbCB0aW1lcnMgYmVmb3JlIHJlbW92ZSB0aGUgZW50aXR5XG4gICAgc3RvcEFsbFRpbWVvdXRzKGVudGl0eSk7XG4gICAgc3RvcEFsbEludGVydmFscyhlbnRpdHkpO1xuXG4gICAgY29uc3QgdHJlZSA9IGdldENvbXBvbmVudEVudGl0eVRyZWUoZW5naW5lLCBlbnRpdHksIFRyYW5zZm9ybSk7XG4gICAgZm9yIChjb25zdCBlbnRpdHlUb1JlbW92ZSBvZiB0cmVlKSB7XG4gICAgICBlbmdpbmUucmVtb3ZlRW50aXR5KGVudGl0eVRvUmVtb3ZlKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBnZXRVaVN0YWNrKGFsaWduOiBTY3JlZW5BbGlnbk1vZGUpIHtcbiAgICBjb25zdCBrZXkgPSBgJHthbGlnbi5hbGlnbkl0ZW1zfSwke2FsaWduLmp1c3RpZnlDb250ZW50fWA7XG5cbiAgICBpZiAoIXVpU3RhY2tzLmhhcyhrZXkpKSB7XG4gICAgICB1aVN0YWNrcy5zZXQoa2V5LCBlbmdpbmUuYWRkRW50aXR5KCkpO1xuICAgIH1cblxuICAgIHJldHVybiB1aVN0YWNrcy5nZXQoa2V5KSE7XG4gIH1cblxuICAvLyBTSE9XX0lNQUdFXG4gIGZ1bmN0aW9uIGhhbmRsZVNob3dJbWFnZShlbnRpdHk6IEVudGl0eSwgcGF5bG9hZDogQWN0aW9uUGF5bG9hZDxBY3Rpb25UeXBlLlNIT1dfSU1BR0U+KSB7XG4gICAgY29uc3QgeyBzcmMsIHRleHQsIGhpZGVBZnRlclNlY29uZHMsIGZvbnRTaXplLCBhbGlnbiwgaGVpZ2h0LCB3aWR0aCB9ID0gcGF5bG9hZDtcblxuICAgIC8vIEdldC9DcmVhdGUgYSBVSSB0cmFuc2Zvcm0gZm9yIHRoZSByb290IGVudGl0eVxuICAgIGdldFVJVHJhbnNmb3JtKFVpVHJhbnNmb3JtLCBlbmdpbmUuUm9vdEVudGl0eSk7XG5cbiAgICAvLyBHZXQgYSBVSSBTdGFjayBlbnRpdHlcbiAgICBjb25zdCBzY3JlZW5BbGlnbiA9IG1hcEFsaWduVG9TY3JlZW5BbGlnbihhbGlnbik7XG4gICAgY29uc3QgdWlTdGFjayA9IGdldFVpU3RhY2soc2NyZWVuQWxpZ24pO1xuXG4gICAgLy8gVE9ETzogRml4IGl0ZW1zIHdyYXBwaW5nXG4gICAgLy8gR2V0L0NyZWF0ZSBhIFVJIFRyYW5zZm9ybSBmb3IgdGhlIFVJIHN0YWNrXG4gICAgY29uc3QgdWlTdGFja1RyYW5zZm9ybUNvbXBvbmVudCA9IGdldFVJVHJhbnNmb3JtKFVpVHJhbnNmb3JtLCB1aVN0YWNrKTtcbiAgICB1aVN0YWNrVHJhbnNmb3JtQ29tcG9uZW50LmFsaWduSXRlbXMgPSBzY3JlZW5BbGlnbi5hbGlnbkl0ZW1zO1xuICAgIHVpU3RhY2tUcmFuc2Zvcm1Db21wb25lbnQuanVzdGlmeUNvbnRlbnQgPSBzY3JlZW5BbGlnbi5qdXN0aWZ5Q29udGVudDtcbiAgICB1aVN0YWNrVHJhbnNmb3JtQ29tcG9uZW50LnBvc2l0aW9uVHlwZSA9IFlHUG9zaXRpb25UeXBlLllHUFRfQUJTT0xVVEU7XG5cbiAgICAvLyBDcmVhdGUgYSBVSSBlbnRpdHkgYW5kIGEgVHJhbnNmb3JtIGNvbXBvbmVudCBmb3IgdGhlIGltYWdlXG4gICAgY29uc3QgaW1hZ2VFbnRpdHkgPSBlbmdpbmUuYWRkRW50aXR5KCk7XG4gICAgY29uc3QgaW1hZ2VUcmFuc2Zvcm1Db21wb25lbnQgPSBnZXRVSVRyYW5zZm9ybShcbiAgICAgIFVpVHJhbnNmb3JtLFxuICAgICAgaW1hZ2VFbnRpdHksXG4gICAgICB3aWR0aCxcbiAgICAgIGhlaWdodCxcbiAgICAgIFlHVW5pdC5ZR1VfUE9JTlQsXG4gICAgKTtcbiAgICBpbWFnZVRyYW5zZm9ybUNvbXBvbmVudC5wYXJlbnQgPSB1aVN0YWNrO1xuICAgIGltYWdlVHJhbnNmb3JtQ29tcG9uZW50LnBvaW50ZXJGaWx0ZXIgPSBQb2ludGVyRmlsdGVyTW9kZS5QRk1fQkxPQ0s7XG5cbiAgICAvLyBDcmVhdGUgQmFja2dyb3VuZCBDb21wb25lbnRcbiAgICBnZXRVSUJhY2tncm91bmQoVWlCYWNrZ3JvdW5kLCBpbWFnZUVudGl0eSwgc3JjKTtcblxuICAgIGlmICh0ZXh0KSB7XG4gICAgICAvLyBDcmVhdGUgVGV4dCBDb21wb25lbnRcbiAgICAgIC8vIFRPRE86IEZpeCB0ZXh0IHdyYXBwaW5nIGFuZCBzY3JvbGxpbmdcbiAgICAgIGdldFVJVGV4dChVaVRleHQsIGltYWdlRW50aXR5LCB0ZXh0LCBmb250U2l6ZSwgd2lkdGgpO1xuICAgIH1cblxuICAgIHBvaW50ZXJFdmVudHNTeXN0ZW0ub25Qb2ludGVyRG93bihcbiAgICAgIHtcbiAgICAgICAgZW50aXR5OiBpbWFnZUVudGl0eSxcbiAgICAgICAgb3B0czoge1xuICAgICAgICAgIGJ1dHRvbjogSW5wdXRBY3Rpb24uSUFfUE9JTlRFUixcbiAgICAgICAgICBob3ZlclRleHQ6ICdDbGljaycsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgKCkgPT4ge1xuICAgICAgICBsYXN0VWlFbnRpdHlDbGlja2VkLnNldChlbnRpdHksIGltYWdlRW50aXR5KTtcbiAgICAgICAgY29uc3QgdHJpZ2dlckV2ZW50cyA9IGdldFRyaWdnZXJFdmVudHMoZW50aXR5KTtcbiAgICAgICAgdHJpZ2dlckV2ZW50cy5lbWl0KFRyaWdnZXJUeXBlLk9OX0NMSUNLX0lNQUdFKTtcbiAgICAgIH0sXG4gICAgKTtcblxuICAgIGlmIChoaWRlQWZ0ZXJTZWNvbmRzKSB7XG4gICAgICBzdGFydFRpbWVvdXQoZW50aXR5LCBBY3Rpb25UeXBlLkhJREVfSU1BR0UsIGhpZGVBZnRlclNlY29uZHMsICgpID0+XG4gICAgICAgIGhhbmRsZUhpZGVJbWFnZShlbnRpdHksIHsgaW1hZ2VFbnRpdHk6IGltYWdlRW50aXR5IH0pLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvLyBISURFX0lNQUdFXG4gIGZ1bmN0aW9uIGhhbmRsZUhpZGVJbWFnZShlbnRpdHk6IEVudGl0eSwgcGF5bG9hZDogQWN0aW9uUGF5bG9hZDxBY3Rpb25UeXBlLkhJREVfSU1BR0U+KSB7XG4gICAgY29uc3QgeyBpbWFnZUVudGl0eSB9ID0gcGF5bG9hZDtcblxuICAgIGlmIChpbWFnZUVudGl0eSkge1xuICAgICAgZW5naW5lLnJlbW92ZUVudGl0eShpbWFnZUVudGl0eSBhcyBFbnRpdHkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBjbGlja2VkSW1hZ2UgPSBsYXN0VWlFbnRpdHlDbGlja2VkLmdldChlbnRpdHkpO1xuICAgICAgaWYgKGNsaWNrZWRJbWFnZSkge1xuICAgICAgICBlbmdpbmUucmVtb3ZlRW50aXR5KGNsaWNrZWRJbWFnZSk7XG4gICAgICAgIGxhc3RVaUVudGl0eUNsaWNrZWQuZGVsZXRlKGVudGl0eSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gREFNQUdFXG4gIGZ1bmN0aW9uIGhhbmRsZURhbWFnZShlbnRpdHk6IEVudGl0eSwgcGF5bG9hZDogQWN0aW9uUGF5bG9hZDxBY3Rpb25UeXBlLkRBTUFHRT4pIHtcbiAgICBjb25zdCB7IHJhZGl1cywgbGF5ZXIsIGhpdHMgfSA9IHBheWxvYWQ7XG4gICAgY29uc3QgZW50aXR5UG9zaXRpb24gPSBBdmF0YXJBdHRhY2guaGFzKGVudGl0eSlcbiAgICAgID8gZ2V0UGxheWVyUG9zaXRpb24oKVxuICAgICAgOiBnZXRXb3JsZFBvc2l0aW9uKGVudGl0eSk7XG5cbiAgICBjb25zdCBnZXRSb290ID0gKGVudGl0eTogRW50aXR5KTogRW50aXR5ID0+IHtcbiAgICAgIGNvbnN0IHBhcmVudCA9IGdldEVudGl0eVBhcmVudChlbnRpdHkpO1xuICAgICAgcmV0dXJuICFwYXJlbnQgPyBlbnRpdHkgOiBnZXRSb290KHBhcmVudCk7XG4gICAgfTtcblxuICAgIGZvciAoY29uc3QgdGFyZ2V0IG9mIGRhbWFnZVRhcmdldHMpIHtcbiAgICAgIGNvbnN0IHRhcmdldFBvc2l0aW9uID0gZ2V0V29ybGRQb3NpdGlvbih0YXJnZXQpO1xuICAgICAgY29uc3QgZGlzdGFuY2UgPSBWZWN0b3IzLmRpc3RhbmNlKGVudGl0eVBvc2l0aW9uLCB0YXJnZXRQb3NpdGlvbik7XG5cbiAgICAgIC8vIGF2b2lkIGNhdXNpbmcgZGFtYWdlIHRvIHRoZSBlbnRpdHkgaXRzZWxmIG9yIGl0cyBjaGlsZHJlblxuICAgICAgY29uc3QgZW50aXR5VHJlZSA9IEFycmF5LmZyb20oZ2V0Q29tcG9uZW50RW50aXR5VHJlZShlbmdpbmUsIGVudGl0eSwgVHJhbnNmb3JtKSk7XG4gICAgICBjb25zdCBpc1BhcnRPZkVudGl0eVRyZWUgPSBlbnRpdHlUcmVlLnNvbWUoJCA9PiAkID09PSB0YXJnZXQpO1xuICAgICAgaWYgKGlzUGFydE9mRW50aXR5VHJlZSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKGxheWVyKSB7XG4gICAgICAgIGlmIChsYXllciA9PT0gUHJveGltaXR5TGF5ZXIuUExBWUVSKSB7XG4gICAgICAgICAgY29uc3Qgcm9vdCA9IGdldFJvb3QodGFyZ2V0KTtcbiAgICAgICAgICBpZiAocm9vdCAhPT0gZW5naW5lLlBsYXllckVudGl0eSAmJiByb290ICE9PSBlbmdpbmUuQ2FtZXJhRW50aXR5KSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAobGF5ZXIgPT09IFByb3hpbWl0eUxheWVyLk5PTl9QTEFZRVIpIHtcbiAgICAgICAgICBjb25zdCByb290ID0gZ2V0Um9vdCh0YXJnZXQpO1xuICAgICAgICAgIGlmIChyb290ID09PSBlbmdpbmUuUGxheWVyRW50aXR5IHx8IHJvb3QgPT09IGVuZ2luZS5DYW1lcmFFbnRpdHkpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGRpc3RhbmNlIDw9IHJhZGl1cykge1xuICAgICAgICBjb25zdCB0b3RhbCA9IGhpdHMgPT09IHVuZGVmaW5lZCA/IDEgOiBNYXRoLm1heChoaXRzLCAxKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0b3RhbDsgaSsrKSB7XG4gICAgICAgICAgY29uc3QgdHJpZ2dlckV2ZW50cyA9IGdldFRyaWdnZXJFdmVudHModGFyZ2V0KTtcbiAgICAgICAgICB0cmlnZ2VyRXZlbnRzLmVtaXQoVHJpZ2dlclR5cGUuT05fREFNQUdFKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIE1PVkVfUExBWUVSX0hFUkVcbiAgZnVuY3Rpb24gaGFuZGxlTW92ZVBsYXllckhlcmUoXG4gICAgZW50aXR5OiBFbnRpdHksXG4gICAgX3BheWxvYWQ6IEFjdGlvblBheWxvYWQ8QWN0aW9uVHlwZS5NT1ZFX1BMQVlFUl9IRVJFPixcbiAgKSB7XG4gICAgY29uc3QgaGVyZSA9IGdldFdvcmxkUG9zaXRpb24oZW50aXR5KTtcbiAgICBjb25zdCByb3RhdGlvbiA9IGdldFdvcmxkUm90YXRpb24oZW50aXR5KTtcblxuICAgIC8vIFdlIFdhbnQgdGhlIHBsYXllciB0byBsb29rIDFtIGluIGZyb250IG9mIHRoZSBlbnRpdHlcbiAgICBjb25zdCBmb3J3YXJkID0gVmVjdG9yMy5Gb3J3YXJkKCk7XG4gICAgY29uc3Qgcm90YXRlZERpcmVjdGlvbiA9IFZlY3RvcjMucm90YXRlKGZvcndhcmQsIHJvdGF0aW9uKTtcbiAgICBjb25zdCBtb3ZlRGVsdGEgPSBWZWN0b3IzLnNjYWxlKHJvdGF0ZWREaXJlY3Rpb24sIDEpO1xuXG4gICAgdm9pZCBtb3ZlUGxheWVyVG8oe1xuICAgICAgbmV3UmVsYXRpdmVQb3NpdGlvbjogaGVyZSxcbiAgICAgIGF2YXRhclRhcmdldDogVmVjdG9yMy5hZGQoaGVyZSwgbW92ZURlbHRhKSxcbiAgICB9KTtcblxuICAgIGNvbnN0IHRyaWdnZXJFdmVudHMgPSBnZXRUcmlnZ2VyRXZlbnRzKGVudGl0eSk7XG4gICAgdHJpZ2dlckV2ZW50cy5lbWl0KFRyaWdnZXJUeXBlLk9OX1BMQVlFUl9TUEFXTik7XG4gIH1cblxuICAvLyBQTEFDRV9PTl9QTEFZRVJcbiAgZnVuY3Rpb24gaGFuZGxlUGxhY2VPblBsYXllcihcbiAgICBlbnRpdHk6IEVudGl0eSxcbiAgICBfcGF5bG9hZDogQWN0aW9uUGF5bG9hZDxBY3Rpb25UeXBlLlBMQUNFX09OX1BMQVlFUj4sXG4gICkge1xuICAgIGNvbnN0IHRyYW5zZm9ybSA9IFRyYW5zZm9ybS5nZXRNdXRhYmxlT3JOdWxsKGVudGl0eSk7XG4gICAgY29uc3QgcGxheWVyID0gVHJhbnNmb3JtLmdldE9yTnVsbChlbmdpbmUuUGxheWVyRW50aXR5KTtcbiAgICBpZiAodHJhbnNmb3JtICYmIHBsYXllcikge1xuICAgICAgdHJhbnNmb3JtLnBvc2l0aW9uID0gcGxheWVyLnBvc2l0aW9uO1xuICAgIH1cbiAgfVxuXG4gIC8vIFJPVEFURV9BU19QTEFZRVJcbiAgZnVuY3Rpb24gaGFuZGxlUm90YXRlQXNQbGF5ZXIoXG4gICAgZW50aXR5OiBFbnRpdHksXG4gICAgX3BheWxvYWQ6IEFjdGlvblBheWxvYWQ8QWN0aW9uVHlwZS5ST1RBVEVfQVNfUExBWUVSPixcbiAgKSB7XG4gICAgY29uc3QgdHJhbnNmb3JtID0gVHJhbnNmb3JtLmdldE11dGFibGVPck51bGwoZW50aXR5KTtcbiAgICBjb25zdCBwbGF5ZXIgPSBUcmFuc2Zvcm0uZ2V0T3JOdWxsKGVuZ2luZS5QbGF5ZXJFbnRpdHkpO1xuICAgIGlmICh0cmFuc2Zvcm0gJiYgcGxheWVyKSB7XG4gICAgICB0cmFuc2Zvcm0ucm90YXRpb24gPSBwbGF5ZXIucm90YXRpb247XG4gICAgfVxuICB9XG5cbiAgLy8gUExBQ0VfT05fQ0FNRVJBXG4gIGZ1bmN0aW9uIGhhbmRsZVBsYWNlT25DYW1lcmEoXG4gICAgZW50aXR5OiBFbnRpdHksXG4gICAgX3BheWxvYWQ6IEFjdGlvblBheWxvYWQ8QWN0aW9uVHlwZS5QTEFDRV9PTl9DQU1FUkE+LFxuICApIHtcbiAgICBjb25zdCB0cmFuc2Zvcm0gPSBUcmFuc2Zvcm0uZ2V0TXV0YWJsZU9yTnVsbChlbnRpdHkpO1xuICAgIGNvbnN0IGNhbWVyYSA9IFRyYW5zZm9ybS5nZXRPck51bGwoZW5naW5lLkNhbWVyYUVudGl0eSk7XG4gICAgaWYgKHRyYW5zZm9ybSAmJiBjYW1lcmEpIHtcbiAgICAgIHRyYW5zZm9ybS5wb3NpdGlvbiA9IGNhbWVyYS5wb3NpdGlvbjtcbiAgICB9XG4gIH1cblxuICAvLyBST1RBVEVfQVNfQ0FNRVJBXG4gIGZ1bmN0aW9uIGhhbmRsZVJvdGF0ZUFzQ2FtZXJhKFxuICAgIGVudGl0eTogRW50aXR5LFxuICAgIF9wYXlsb2FkOiBBY3Rpb25QYXlsb2FkPEFjdGlvblR5cGUuUk9UQVRFX0FTX0NBTUVSQT4sXG4gICkge1xuICAgIGNvbnN0IHRyYW5zZm9ybSA9IFRyYW5zZm9ybS5nZXRNdXRhYmxlT3JOdWxsKGVudGl0eSk7XG4gICAgY29uc3QgY2FtZXJhID0gVHJhbnNmb3JtLmdldE9yTnVsbChlbmdpbmUuQ2FtZXJhRW50aXR5KTtcbiAgICBpZiAodHJhbnNmb3JtICYmIGNhbWVyYSkge1xuICAgICAgdHJhbnNmb3JtLnJvdGF0aW9uID0gY2FtZXJhLnJvdGF0aW9uO1xuICAgIH1cbiAgfVxuXG4gIC8vIFNFVF9QT1NJVElPTlxuICBmdW5jdGlvbiBoYW5kbGVTZXRQb3NpdGlvbihlbnRpdHk6IEVudGl0eSwgcGF5bG9hZDogQWN0aW9uUGF5bG9hZDxBY3Rpb25UeXBlLlNFVF9QT1NJVElPTj4pIHtcbiAgICBjb25zdCB0cmFuc2Zvcm0gPSBUcmFuc2Zvcm0uZ2V0TXV0YWJsZU9yTnVsbChlbnRpdHkpO1xuICAgIGlmICh0cmFuc2Zvcm0pIHtcbiAgICAgIGlmIChwYXlsb2FkLnJlbGF0aXZlKSB7XG4gICAgICAgIHRyYW5zZm9ybS5wb3NpdGlvbiA9IFZlY3RvcjMuYWRkKFxuICAgICAgICAgIHRyYW5zZm9ybS5wb3NpdGlvbixcbiAgICAgICAgICBWZWN0b3IzLmNyZWF0ZShwYXlsb2FkLngsIHBheWxvYWQueSwgcGF5bG9hZC56KSxcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRyYW5zZm9ybS5wb3NpdGlvbiA9IFZlY3RvcjMuY3JlYXRlKHBheWxvYWQueCwgcGF5bG9hZC55LCBwYXlsb2FkLnopO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFNFVF9ST1RBVElPTlxuICBmdW5jdGlvbiBoYW5kbGVTZXRSb3RhdGlvbihlbnRpdHk6IEVudGl0eSwgcGF5bG9hZDogQWN0aW9uUGF5bG9hZDxBY3Rpb25UeXBlLlNFVF9ST1RBVElPTj4pIHtcbiAgICBjb25zdCB0cmFuc2Zvcm0gPSBUcmFuc2Zvcm0uZ2V0TXV0YWJsZU9yTnVsbChlbnRpdHkpO1xuICAgIGlmICh0cmFuc2Zvcm0pIHtcbiAgICAgIGlmIChwYXlsb2FkLnJlbGF0aXZlKSB7XG4gICAgICAgIHRyYW5zZm9ybS5yb3RhdGlvbiA9IFF1YXRlcm5pb24ubXVsdGlwbHkoXG4gICAgICAgICAgdHJhbnNmb3JtLnJvdGF0aW9uLFxuICAgICAgICAgIFF1YXRlcm5pb24uZnJvbUV1bGVyRGVncmVlcyhwYXlsb2FkLngsIHBheWxvYWQueSwgcGF5bG9hZC56KSxcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRyYW5zZm9ybS5yb3RhdGlvbiA9IFF1YXRlcm5pb24uZnJvbUV1bGVyRGVncmVlcyhwYXlsb2FkLngsIHBheWxvYWQueSwgcGF5bG9hZC56KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBTRVRfU0NBTEVcbiAgZnVuY3Rpb24gaGFuZGxlU2V0U2NhbGUoZW50aXR5OiBFbnRpdHksIHBheWxvYWQ6IEFjdGlvblBheWxvYWQ8QWN0aW9uVHlwZS5TRVRfU0NBTEU+KSB7XG4gICAgY29uc3QgdHJhbnNmb3JtID0gVHJhbnNmb3JtLmdldE11dGFibGVPck51bGwoZW50aXR5KTtcbiAgICBpZiAodHJhbnNmb3JtKSB7XG4gICAgICBpZiAocGF5bG9hZC5yZWxhdGl2ZSkge1xuICAgICAgICB0cmFuc2Zvcm0uc2NhbGUgPSBWZWN0b3IzLmFkZChcbiAgICAgICAgICB0cmFuc2Zvcm0uc2NhbGUsXG4gICAgICAgICAgVmVjdG9yMy5jcmVhdGUocGF5bG9hZC54LCBwYXlsb2FkLnksIHBheWxvYWQueiksXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0cmFuc2Zvcm0uc2NhbGUgPSBWZWN0b3IzLmNyZWF0ZShwYXlsb2FkLngsIHBheWxvYWQueSwgcGF5bG9hZC56KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBGT0xMT1dfUExBWUVSXG4gIGZ1bmN0aW9uIGhhbmRsZUZvbGxvd1BsYXllcihlbnRpdHk6IEVudGl0eSwgcGF5bG9hZDogQWN0aW9uUGF5bG9hZDxBY3Rpb25UeXBlLkZPTExPV19QTEFZRVI+KSB7XG4gICAgY29uc3QgeyBzcGVlZCwgeCwgeSwgeiwgbWluRGlzdGFuY2UgfSA9IHBheWxvYWQ7XG4gICAgZm9sbG93TWFwLnNldChlbnRpdHksIHtcbiAgICAgIHRhcmdldDogZW5naW5lLlBsYXllckVudGl0eSxcbiAgICAgIHNwZWVkLFxuICAgICAgbWluRGlzdGFuY2UsXG4gICAgICBheGVzOiB7IHgsIHksIHogfSxcbiAgICB9KTtcbiAgfVxuXG4gIC8vIFNUT1BfRk9MTE9XSU5HX1BMQVlFUlxuICBmdW5jdGlvbiBoYW5kbGVTdG9wRm9sbG93aW5nUGxheWVyKFxuICAgIGVudGl0eTogRW50aXR5LFxuICAgIF9wYXlsb2FkOiBBY3Rpb25QYXlsb2FkPEFjdGlvblR5cGUuU1RPUF9GT0xMT1dJTkdfUExBWUVSPixcbiAgKSB7XG4gICAgZm9sbG93TWFwLmRlbGV0ZShlbnRpdHkpO1xuICB9XG5cbiAgZnVuY3Rpb24gaGFuZGxlUmFuZG9tKGVudGl0eTogRW50aXR5LCBwYXlsb2FkOiBBY3Rpb25QYXlsb2FkPEFjdGlvblR5cGUuUkFORE9NPikge1xuICAgIGNvbnN0IHsgYWN0aW9ucyB9ID0gcGF5bG9hZDtcbiAgICBjb25zdCBhY3Rpb25FdmVudHMgPSBnZXRBY3Rpb25FdmVudHMoZW50aXR5KTtcbiAgICBjb25zdCBhY3Rpb25OYW1lID0gYWN0aW9uc1tNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBhY3Rpb25zLmxlbmd0aCldO1xuICAgIGNvbnN0IGFjdGlvbiA9IGZpbmRBY3Rpb25CeU5hbWUoZW50aXR5LCBhY3Rpb25OYW1lKTtcbiAgICBpZiAoYWN0aW9uKSB7XG4gICAgICBhY3Rpb25FdmVudHMuZW1pdChhY3Rpb24ubmFtZSwgZ2V0UGF5bG9hZChhY3Rpb24pKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBoYW5kbGVCYXRjaChlbnRpdHk6IEVudGl0eSwgcGF5bG9hZDogQWN0aW9uUGF5bG9hZDxBY3Rpb25UeXBlLkJBVENIPikge1xuICAgIGNvbnN0IHsgYWN0aW9ucyB9ID0gcGF5bG9hZDtcbiAgICBjb25zdCBhY3Rpb25FdmVudHMgPSBnZXRBY3Rpb25FdmVudHMoZW50aXR5KTtcbiAgICBmb3IgKGNvbnN0IGFjdGlvbk5hbWUgb2YgYWN0aW9ucykge1xuICAgICAgY29uc3QgYWN0aW9uID0gZmluZEFjdGlvbkJ5TmFtZShlbnRpdHksIGFjdGlvbk5hbWUpO1xuICAgICAgaWYgKGFjdGlvbikge1xuICAgICAgICBhY3Rpb25FdmVudHMuZW1pdChhY3Rpb24ubmFtZSwgZ2V0UGF5bG9hZChhY3Rpb24pKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBoYW5kbGVIZWFsUGxheWVyKGVudGl0eTogRW50aXR5LCBwYXlsb2FkOiBBY3Rpb25QYXlsb2FkPEFjdGlvblR5cGUuSEVBTF9QTEFZRVI+KSB7XG4gICAgY29uc3QgeyBtdWx0aXBsaWVyIH0gPSBwYXlsb2FkO1xuXG4gICAgY29uc3QgZ2V0Um9vdCA9IChlbnRpdHk6IEVudGl0eSk6IEVudGl0eSA9PiB7XG4gICAgICBjb25zdCBwYXJlbnQgPSBnZXRFbnRpdHlQYXJlbnQoZW50aXR5KTtcbiAgICAgIHJldHVybiAhcGFyZW50ID8gZW50aXR5IDogZ2V0Um9vdChwYXJlbnQpO1xuICAgIH07XG5cbiAgICBmb3IgKGNvbnN0IHRhcmdldCBvZiBoZWFsVGFyZ2V0cykge1xuICAgICAgY29uc3Qgcm9vdCA9IGdldFJvb3QodGFyZ2V0KTtcbiAgICAgIGlmIChyb290ID09PSBlbmdpbmUuUGxheWVyRW50aXR5KSB7XG4gICAgICAgIGNvbnN0IHRyaWdnZXJFdmVudHMgPSBnZXRUcmlnZ2VyRXZlbnRzKHRhcmdldCk7XG4gICAgICAgIGNvbnN0IHRvdGFsID0gTWF0aC5tYXgobXVsdGlwbGllciA/PyAxLCAxKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0b3RhbDsgaSsrKSB7XG4gICAgICAgICAgdHJpZ2dlckV2ZW50cy5lbWl0KFRyaWdnZXJUeXBlLk9OX0hFQUxfUExBWUVSKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGZ1bmN0aW9uIHJlcXVlc3QodXJsOiBzdHJpbmcsIGluaXQ/OiBGbGF0RmV0Y2hJbml0KSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgc2lnbmVkRmV0Y2goe1xuICAgICAgICB1cmw6IHVybCxcbiAgICAgICAgLi4uKGluaXQgPyB7IGluaXQgfSA6IHt9KSxcbiAgICAgIH0pO1xuICAgICAgaWYgKCFyZXNwb25zZSB8fCAhcmVzcG9uc2UuYm9keSkge1xuICAgICAgICAvLyBUT0RPOiBTaG93IGFuIGVycm9yIFByb21wdFxuICAgICAgICAvLyAnRXJyb3IgZmV0Y2hpbmcgY2FtcGFpZ24gZGF0YSdcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGpzb24gPSBhd2FpdCBKU09OLnBhcnNlKHJlc3BvbnNlLmJvZHkpO1xuXG4gICAgICBpZiAoIWpzb24ub2spIHtcbiAgICAgICAgLy8gVE9ETzogU2hvdyBhbiBlcnJvciBQcm9tcHRcbiAgICAgICAgLy8gJ0Vycm9yIGZldGNoaW5nIGNhbXBhaWduIGRhdGEnXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4ganNvbi5kYXRhO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAvLyBUT0RPOiBTaG93IGFuIGVycm9yIFByb21wdFxuICAgICAgLy8gJ0Vycm9yIGZldGNoaW5nIGNhbXBhaWduIGRhdGEnXG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICBhc3luYyBmdW5jdGlvbiBmZXRjaENhbXBhaWduc0J5RGlzcGVuc2VyS2V5KGRpc3BlbnNlcktleTogc3RyaW5nKSB7XG4gICAgY29uc3QgdXJsID0gYCR7UkVXQVJEU19TRVJWRVJfVVJMfS9hcGkvY2FtcGFpZ25zL2tleXM/Y2FtcGFpZ25fa2V5PSR7ZW5jb2RlVVJJQ29tcG9uZW50KGRpc3BlbnNlcktleSl9YDtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHJlcXVlc3QodXJsKTtcbiAgICByZXR1cm4gcmVzcG9uc2U7XG4gIH1cblxuICBhc3luYyBmdW5jdGlvbiBmZXRjaENhcHRjaGEoKSB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCByZXF1ZXN0KGAke1JFV0FSRFNfU0VSVkVSX1VSTH0vYXBpL2NhcHRjaGFgLCB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgIH0sXG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3BvbnNlO1xuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24gcmVxdWVzdFRva2VuKFxuICAgIGRpc3BlbnNlcktleTogc3RyaW5nLFxuICAgIGNhcHRjaGE/OiB7XG4gICAgICBpZDogc3RyaW5nO1xuICAgICAgdmFsdWU6IHN0cmluZztcbiAgICB9LFxuICApIHtcbiAgICBjb25zdCB1cmwgPSBgJHtSRVdBUkRTX1NFUlZFUl9VUkx9L2FwaS9yZXdhcmRzYDtcbiAgICBjb25zdCByZWFsbSA9IGF3YWl0IGdldFJlYWxtKHt9KTtcbiAgICBjb25zdCBwbGF5ZXIgPSBwbGF5ZXJzSGVscGVyPy5nZXRQbGF5ZXIoKTtcblxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgcmVxdWVzdCh1cmwsIHtcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgaGVhZGVyczoge1xuICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgfSxcbiAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgY2FtcGFpZ25fa2V5OiBkaXNwZW5zZXJLZXksXG4gICAgICAgIGJlbmVmaWNpYXJ5OiAhcGxheWVyPy5pc0d1ZXN0ID8gcGxheWVyPy51c2VySWQgOiAnJyxcbiAgICAgICAgY2F0YWx5c3Q6IHJlYWxtLnJlYWxtSW5mbyA/IHJlYWxtLnJlYWxtSW5mby5iYXNlVXJsIDogJycsXG4gICAgICAgIC4uLihjYXB0Y2hhID8geyBjYXB0Y2hhX2lkOiBjYXB0Y2hhLmlkLCBjYXB0Y2hhX3ZhbHVlOiBjYXB0Y2hhLnZhbHVlIH0gOiB7fSksXG4gICAgICB9KSxcbiAgICB9KTtcbiAgICByZXR1cm4gcmVzcG9uc2U7XG4gIH1cblxuICBmdW5jdGlvbiBoYW5kbGVDbGFpbUFpcmRyb3AoZW50aXR5OiBFbnRpdHksIF9wYXlsb2FkOiBBY3Rpb25QYXlsb2FkPEFjdGlvblR5cGUuQ0xBSU1fQUlSRFJPUD4pIHtcbiAgICBjb25zdCByZXdhcmRzID0gUmV3YXJkcy5nZXRPck51bGwoZW50aXR5KTtcbiAgICBpZiAoIXJld2FyZHMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB7IHRlc3RNb2RlLCBjYW1wYWlnbklkLCBkaXNwZW5zZXJLZXkgfSA9IHJld2FyZHM7XG5cbiAgICBpZiAodGVzdE1vZGUpIHtcbiAgICAgIC8vIFRPRE86IFNob3cgYW4gVUkgaW5kaWNhdGluZyB0ZXN0aW5nIG1vZGVcbiAgICAgIC8vICdIYW5kbGUgQ2xhaW0gQWlyZHJvcCBpbiBUZXN0IE1vZGUgOiknXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZmV0Y2hDYW1wYWlnbnNCeURpc3BlbnNlcktleShkaXNwZW5zZXJLZXkpXG4gICAgICAudGhlbihjYW1wYWlnbnMgPT4ge1xuICAgICAgICBjb25zdCBjYW1wYWlnbiA9IGNhbXBhaWducy5maW5kKChjOiBhbnkpID0+IGMuY2FtcGFpZ25faWQgPT09IGNhbXBhaWduSWQpO1xuICAgICAgICBpZiAoY2FtcGFpZ24gJiYgY2FtcGFpZ24uZW5hYmxlZCkge1xuICAgICAgICAgIGlmIChjYW1wYWlnbi5yZXF1aXJlc19jYXB0Y2hhKSB7XG4gICAgICAgICAgICBmZXRjaENhcHRjaGEoKVxuICAgICAgICAgICAgICAudGhlbihjYXB0Y2hhID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoY2FwdGNoYSkge1xuICAgICAgICAgICAgICAgICAgX3Nob3dDYXB0Y2hhUHJvbXB0KGVudGl0eSwge1xuICAgICAgICAgICAgICAgICAgICBjYW1wYWlnbklkLFxuICAgICAgICAgICAgICAgICAgICBkaXNwZW5zZXJLZXksXG4gICAgICAgICAgICAgICAgICAgIGNhcHRjaGEsXG4gICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIC5jYXRjaChfZXJyb3IgPT4ge1xuICAgICAgICAgICAgICAgIC8vIFRPRE86IFNob3cgYW4gZXJyb3IgUHJvbXB0XG4gICAgICAgICAgICAgICAgLy8gJ0Vycm9yIGZldGNoaW5nIGNhcHRjaGEnXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXF1ZXN0VG9rZW4oZGlzcGVuc2VyS2V5KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICAuY2F0Y2goX2Vycm9yID0+IHtcbiAgICAgICAgLy8gVE9ETzogU2hvdyBhbiBlcnJvciBQcm9tcHRcbiAgICAgICAgLy8gJ0Vycm9yIGZldGNoaW5nIGNhbXBhaWduIGRhdGEnLCBlcnJvclxuICAgICAgfSk7XG4gIH1cblxuICBmdW5jdGlvbiBfc2hvd0NhcHRjaGFQcm9tcHQoXG4gICAgX2VudGl0eTogRW50aXR5LFxuICAgIGRhdGE6IHsgY2FtcGFpZ25JZDogc3RyaW5nOyBkaXNwZW5zZXJLZXk6IHN0cmluZzsgY2FwdGNoYTogYW55IH0sXG4gICkge1xuICAgIHNob3dDYXB0Y2hhUHJvbXB0KFxuICAgICAgZW5naW5lLFxuICAgICAgVWlUcmFuc2Zvcm0sXG4gICAgICBVaUJhY2tncm91bmQsXG4gICAgICBVaVRleHQsXG4gICAgICBVaUlucHV0LFxuICAgICAgVWlJbnB1dFJlc3VsdCxcbiAgICAgIHBvaW50ZXJFdmVudHNTeXN0ZW0sXG4gICAgICBkYXRhLFxuICAgICAgaW5wdXRUZXh0ID0+IHtcbiAgICAgICAgLy8gUmVxdWVzdCB0b2tlbiB3aXRoIGNhcHRjaGEgdmFsaWRhdGlvblxuICAgICAgICByZXF1ZXN0VG9rZW4oZGF0YS5kaXNwZW5zZXJLZXksIHtcbiAgICAgICAgICBpZDogZGF0YS5jYXB0Y2hhLmlkLFxuICAgICAgICAgIHZhbHVlOiBpbnB1dFRleHQsXG4gICAgICAgIH0pLnRoZW4oKHRva2VuOiBhbnkpID0+IHtcbiAgICAgICAgICBpZiAodG9rZW4pIHtcbiAgICAgICAgICAgIC8vICdUb2tlbiByZXF1ZXN0ZWQgc3VjY2Vzc2Z1bGx5JywgeyB0b2tlbiB9XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgKTtcbiAgfVxufVxuIl19
|
|
1064
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9hY3Rpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVdBLE9BQU8sRUFDTCxRQUFRLEVBQ1IsV0FBVyxFQUtYLFlBQVksRUFDWixzQkFBc0IsRUFDdEIsS0FBSyxHQUNOLE1BQU0sVUFBVSxDQUFDO0FBQ2xCLE9BQU8sRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXBELE9BQU8sRUFBRSxlQUFlLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFbkcsT0FBTyxFQUNMLFVBQVUsRUFDVixjQUFjLEVBQ2QsV0FBVyxFQUNYLFNBQVMsRUFDVCxLQUFLLEVBQ0wsYUFBYSxFQUNiLGdDQUFnQyxHQUNqQyxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQzdELE9BQU8sRUFDTCxhQUFhLEVBQ2IsWUFBWSxFQUNaLGdCQUFnQixFQUNoQixlQUFlLEVBQ2YsWUFBWSxFQUNaLFdBQVcsR0FDWixNQUFNLFNBQVMsQ0FBQztBQUNqQixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUMsT0FBTyxFQUNMLGVBQWUsRUFDZixTQUFTLEVBQ1QsY0FBYyxFQUNkLHFCQUFxQixFQUNyQixpQkFBaUIsR0FDbEIsTUFBTSxNQUFNLENBQUM7QUFDZCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDckQsT0FBTyxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDeEMsT0FB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RUFDTixPQUFPLEVBQ1AsYUFBYSxFQUNiLG1CQUFtQixFQUNuQixJQUFJLEVBQ0osU0FBUyxDQUFDLEVBQUU7WUFFVixZQUFZLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRTtnQkFDOUIsRUFBRSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRTtnQkFDbkIsS0FBSyxFQUFFLFNBQVM7YUFDakIsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQVUsRUFBRSxFQUFFO2dCQUNyQixJQUFJLEtBQUssRUFBRSxDQUFDO2dCQUVaLENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FDRixDQUFDO0lBQ0osQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7XG4gIElFbmdpbmUsXG4gIEVudGl0eSxcbiAgVGV4dEFsaWduTW9kZSxcbiAgRm9udCxcbiAgTW92ZSxcbiAgUEJUd2VlbixcbiAgUm90YXRlLFxuICBTY2FsZSxcbiAgUG9pbnRlckV2ZW50c1N5c3RlbSxcbn0gZnJvbSAnQGRjbC9lY3MnO1xuaW1wb3J0IHtcbiAgTWF0ZXJpYWwsXG4gIEF1ZGlvU3RyZWFtLFxuICBZR1VuaXQsXG4gIFlHUG9zaXRpb25UeXBlLFxuICBQb2ludGVyRmlsdGVyTW9kZSxcbiAgSW5wdXRBY3Rpb24sXG4gIE1lc2hDb2xsaWRlcixcbiAgZ2V0Q29tcG9uZW50RW50aXR5VHJlZSxcbiAgVHdlZW4sXG59IGZyb20gJ0BkY2wvZWNzJztcbmltcG9ydCB7IFF1YXRlcm5pb24sIFZlY3RvcjMgfSBmcm9tICdAZGNsL3Nkay9tYXRoJztcbmltcG9ydCB0eXBlIHsgVGV4dHVyZU1vdmVtZW50VHlwZSBhcyBTZGtUZXh0dXJlTW92ZW1lbnRUeXBlIH0gZnJvbSAnQGRjbC9lY3MvZGlzdC9jb21wb25lbnRzL2dlbmVyYXRlZC9wYi9kZWNlbnRyYWxhbmQvc2RrL2NvbXBvbmVudHMvdHdlZW4uZ2VuJztcbmltcG9ydCB7IGdldEVudGl0eVBhcmVudCwgZ2V0UGxheWVyUG9zaXRpb24sIGdldFdvcmxkUG9zaXRpb24sIGdldFdvcmxkUm90YXRpb24gfSBmcm9tICcuL2hlbHBlcnMnO1xuaW1wb3J0IHR5cGUgeyBBY3Rpb25QYXlsb2FkLCBJU0RLSGVscGVycywgSVBsYXllcnNIZWxwZXIsIFNjcmVlbkFsaWduTW9kZSB9IGZyb20gJy4vZGVmaW5pdGlvbnMnO1xuaW1wb3J0IHtcbiAgQWN0aW9uVHlwZSxcbiAgUHJveGltaXR5TGF5ZXIsXG4gIFRyaWdnZXJUeXBlLFxuICBUd2VlblR5cGUsXG4gIGNsb25lLFxuICBnZXRDb21wb25lbnRzLFxuICBpbml0VmlkZW9QbGF5ZXJDb21wb25lbnRNYXRlcmlhbCxcbn0gZnJvbSAnLi9kZWZpbml0aW9ucyc7XG5pbXBvcnQgeyBnZXREZWZhdWx0VmFsdWUsIGlzVmFsaWRTdGF0ZSB9IGZyb20gJy4vc3RhdGVzJztcbmltcG9ydCB7IGdldEFjdGlvbkV2ZW50cywgZ2V0VHJpZ2dlckV2ZW50cyB9IGZyb20gJy4vZXZlbnRzJztcbmltcG9ydCB7XG4gIHN0YXJ0SW50ZXJ2YWwsXG4gIHN0YXJ0VGltZW91dCxcbiAgc3RvcEFsbEludGVydmFscyxcbiAgc3RvcEFsbFRpbWVvdXRzLFxuICBzdG9wSW50ZXJ2YWwsXG4gIHN0b3BUaW1lb3V0LFxufSBmcm9tICcuL3RpbWVyJztcbmltcG9ydCB7IGdldFBheWxvYWQgfSBmcm9tICcuL2FjdGlvbi10eXBlcyc7XG5pbXBvcnQge1xuICBnZXRVSUJhY2tncm91bmQsXG4gIGdldFVJVGV4dCxcbiAgZ2V0VUlUcmFuc2Zvcm0sXG4gIG1hcEFsaWduVG9TY3JlZW5BbGlnbixcbiAgc2hvd0NhcHRjaGFQcm9tcHQsXG59IGZyb20gJy4vdWknO1xuaW1wb3J0IHsgZ2V0RXhwbG9yZXJDb21wb25lbnRzIH0gZnJvbSAnLi9jb21wb25lbnRzJztcbmltcG9ydCB7IGluaXRUcmlnZ2VycywgZGFtYWdlVGFyZ2V0cywgaGVhbFRhcmdldHMgfSBmcm9tICcuL3RyaWdnZXJzJztcbmltcG9ydCB7IGZvbGxvd01hcCB9IGZyb20gJy4vdHJhbnNmb3JtJztcbmltcG9ydCB7IGdldEVhc2luZ0Z1bmN0aW9uRnJvbUludGVycG9sYXRpb24gfSBmcm9tICcuL3R3ZWVucyc7XG5pbXBvcnQgeyBSRVdBUkRTX1NFUlZFUl9VUkwgfSBmcm9tICcuL2FkbWluLXRvb2xraXQtdWkvY29uc3RhbnRzJztcbmltcG9ydCB7IHJlcXVlc3RUZWxlcG9ydCB9IGZyb20gJ35zeXN0ZW0vVXNlckFjdGlvbk1vZHVsZSc7XG5pbXBvcnQge1xuICBtb3ZlUGxheWVyVG8sXG4gIHRyaWdnZXJFbW90ZSxcbiAgdHJpZ2dlclNjZW5lRW1vdGUsXG4gIG9wZW5FeHRlcm5hbFVybCxcbn0gZnJvbSAnfnN5c3RlbS9SZXN0cmljdGVkQWN0aW9ucyc7XG5pbXBvcnQgdHlwZSB7IEZsYXRGZXRjaEluaXQgfSBmcm9tICd+c3lzdGVtL1NpZ25lZEZldGNoJztcbmltcG9ydCB7IGdldFJlYWxtIH0gZnJvbSAnfnN5c3RlbS9SdW50aW1lJztcbmltcG9ydCB7IHNpZ25lZEZldGNoIH0gZnJvbSAnfnN5c3RlbS9TaWduZWRGZXRjaCc7XG5cbmNvbnN0IGluaXRlZEVudGl0aWVzID0gbmV3IFNldDxFbnRpdHk+KCk7XG5jb25zdCB1aVN0YWNrcyA9IG5ldyBNYXA8c3RyaW5nLCBFbnRpdHk+KCk7XG5jb25zdCBsYXN0VWlFbnRpdHlDbGlja2VkID0gbmV3IE1hcDxFbnRpdHksIEVudGl0eT4oKTtcbmNvbnN0IHRleHRFbnRpdGllcyA9IG5ldyBNYXA8RW50aXR5LCBFbnRpdHk+KCk7IC8vIE1vZGVsIEVudGl0eSwgVGV4dCBFbnRpdHlcblxubGV0IGludGVybmFsSW5pdEFjdGlvbnM6ICgoZW50aXR5OiBFbnRpdHkpID0+IHZvaWQpIHwgbnVsbCA9IG51bGw7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbml0QWN0aW9ucyhlbnRpdHk6IEVudGl0eSkge1xuICBpZiAoaW50ZXJuYWxJbml0QWN0aW9ucykge1xuICAgIHJldHVybiBpbnRlcm5hbEluaXRBY3Rpb25zKGVudGl0eSk7XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgY2FsbCBpbml0QWN0aW9ucyB3aGlsZSBhY3Rpb25zU3lzdGVtIGhhcyBub3QgYmVlbiBjcmVhdGVkJyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVBY3Rpb25zU3lzdGVtKFxuICBlbmdpbmU6IElFbmdpbmUsXG4gIHBvaW50ZXJFdmVudHNTeXN0ZW06IFBvaW50ZXJFdmVudHNTeXN0ZW0sXG4gIHNka0hlbHBlcnM/OiBJU0RLSGVscGVycyxcbiAgcGxheWVyc0hlbHBlcj86IElQbGF5ZXJzSGVscGVyLFxuKSB7XG4gIGNvbnN0IHtcbiAgICBBbmltYXRvcixcbiAgICBUcmFuc2Zvcm0sXG4gICAgQXVkaW9Tb3VyY2UsXG4gICAgQXZhdGFyQXR0YWNoLFxuICAgIFZpc2liaWxpdHlDb21wb25lbnQsXG4gICAgR2x0ZkNvbnRhaW5lcixcbiAgICBVaVRyYW5zZm9ybSxcbiAgICBVaVRleHQsXG4gICAgVWlCYWNrZ3JvdW5kLFxuICAgIFVpSW5wdXQsXG4gICAgVWlJbnB1dFJlc3VsdCxcbiAgICBUd2VlbjogVHdlZW5Db21wb25lbnQsXG4gICAgVHdlZW5TZXF1ZW5jZSxcbiAgICBWaWRlb1BsYXllcixcbiAgICBMaWdodFNvdXJjZSxcbiAgICBNYWluQ2FtZXJhLFxuICAgIFZpcnR1YWxDYW1lcmEsXG4gICAgVGV4dFNoYXBlLFxuICB9ID0gZ2V0RXhwbG9yZXJDb21wb25lbnRzKGVuZ2luZSk7XG4gIGNvbnN0IHsgQWN0aW9ucywgU3RhdGVzLCBDb3VudGVyLCBUcmlnZ2VycywgUmV3YXJkcyB9ID0gZ2V0Q29tcG9uZW50cyhlbmdpbmUpO1xuXG4gIC8vIHNhdmUgaW50ZXJuYWwgcmVmZXJlbmNlIHRvIGluaXQgZnVuY2lvblxuICBpbnRlcm5hbEluaXRBY3Rpb25zID0gaW5pdEFjdGlvbnM7XG5cbiAgcmV0dXJuIGZ1bmN0aW9uIGFjdGlvbnNTeXN0ZW0oX2R0OiBudW1iZXIpIHtcbiAgICBjb25zdCBlbnRpdGllc1dpdGhBY3Rpb25zID0gZW5naW5lLmdldEVudGl0aWVzV2l0aChBY3Rpb25zKTtcblxuICAgIGZvciAoY29uc3QgW2VudGl0eV0gb2YgZW50aXRpZXNXaXRoQWN0aW9ucykge1xuICAgICAgaW5pdEFjdGlvbnMoZW50aXR5KTtcbiAgICB9XG4gIH07XG5cbiAgZnVuY3Rpb24gaW5pdEFjdGlvbnMoZW50aXR5OiBFbnRpdHkpIHtcbiAgICBpZiAoIUFjdGlvbnMuaGFzKGVudGl0eSkgfHwgaW5pdGVkRW50aXRpZXMuaGFzKGVudGl0eSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBnZXQgYWN0aW9ucyBkYXRhXG4gICAgY29uc3QgYWN0aW9ucyA9IEFjdGlvbnMuZ2V0KGVudGl0eSk7XG5cbiAgICAvLyBpbml0aWFsaXplIGFjdGlvbnMgZm9yIGdpdmVuIGVudGl0eVxuICAgIGNvbnN0IHR5cGVzID0gYWN0aW9ucy52YWx1ZS5yZWR1Y2UoXG4gICAgICAodHlwZXMsIGFjdGlvbikgPT4gdHlwZXMuYWRkKGFjdGlvbi50eXBlKSxcbiAgICAgIG5ldyBTZXQ8c3RyaW5nPigpLFxuICAgICk7XG5cbiAgICBmb3IgKGNvbnN0IHR5cGUgb2YgdHlwZXMpIHtcbiAgICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICBjYXNlIEFjdGlvblR5cGUuUExBWV9BTklNQVRJT046IHtcbiAgICAgICAgICBpbml0UGxheUFuaW1hdGlvbihlbnRpdHkpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gYmluZCBhY3Rpb25zXG4gICAgY29uc3QgYWN0aW9uRXZlbnRzID0gZ2V0QWN0aW9uRXZlbnRzKGVudGl0eSk7XG4gICAgZm9yIChjb25zdCBhY3Rpb24gb2YgYWN0aW9ucy52YWx1ZSkge1xuICAgICAgYWN0aW9uRXZlbnRzLm9uKGFjdGlvbi5uYW1lLCAoKSA9PiB7XG4gICAgICAgIHN3aXRjaCAoYWN0aW9uLnR5cGUpIHtcbiAgICAgICAgICBjYXNlIEFjdGlvblR5cGUuUExBWV9BTklNQVRJT046IHtcbiAgICAgICAgICAgIGhhbmRsZVBsYXlBbmltYXRpb24oZW50aXR5LCBnZXRQYXlsb2FkPEFjdGlvblR5cGUuUExBWV9BTklNQVRJT04+KGFjdGlvbikpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgQWN0aW9uVHlwZS5TVE9QX0FOSU1BVElPTjoge1xuICAgICAgICAgICAgaGFuZGxlU3RvcEFuaW1hdGlvbihlbnRpdHksIGdldFBheWxvYWQ8QWN0aW9uVHlwZS5TVE9QX0FOSU1BVElPTj4oYWN0aW9uKSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSBBY3Rpb25UeXBlLlNFVF9TVEFURToge1xuICAgICAgICAgICAgaGFuZGxlU2V0U3RhdGUoZW50aXR5LCBnZXRQYXlsb2FkPEFjdGlvblR5cGUuU0VUX1NUQVRFPihhY3Rpb24pKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIEFjdGlvblR5cGUuU1RBUlRfVFdFRU46IHtcbiAgICAgICAgICAgIGhhbmRsZVN0YXJ0VHdlZW4oZW50aXR5LCBnZXRQYXlsb2FkPEFjdGlvblR5cGUuU1RBUlRfVFdFRU4+KGFjdGlvbikpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgQWN0aW9uVHlwZS5TVE9QX1RXRUVOOiB7XG4gICAgICAgICAgICBoYW5kbGVTdG9wVHdlZW4oZW50aXR5KTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIEFjdGlvblR5cGUuU0xJREVfVEVYVFVSRToge1xuICAgICAgICAgICAgaGFuZGxlU2xpZGVUZXh0dXJlKGVudGl0eSwgZ2V0UGF5bG9hZDxBY3Rpb25UeXBlLlNMSURFX1RFWFRVUkU+KGFjdGlvbikpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgQWN0aW9uVHlwZS5TRVRfQ09VTlRFUjoge1xuICAgICAgICAgICAgaGFuZGxlU2V0Q291bnRlcihlbnRpdHksIGdldFBheWxvYWQ8QWN0aW9uVHlwZS5TRVRfQ09VTlRFUj4oYWN0aW9uKSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSBBY3Rpb25UeXBlLklOQ1JFTUVOVF9DT1VOVEVSOiB7XG4gICAgICAgICAgICBoYW5kbGVJbmNyZW1lbnRDb3VudGVyKGVudGl0eSwgZ2V0UGF5bG9hZDxBY3Rpb25UeXBlLklOQ1JFTUVOVF9DT1VOVEVSPihhY3Rpb24pKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIEFjdGlvblR5cGUuREVDUkVBU0VfQ09VTlRFUjoge1xuICAgICAgICAgICAgaGFuZGxlRGVjcmVhc2VDb3VudGVyKGVudGl0eSwgZ2V0UGF5bG9hZDxBY3Rpb25UeXBlLkRFQ1JFQVNFX0NPVU5URVI+KGFjdGlvbikpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgQWN0aW9uVHlwZS5QTEFZX1NPVU5EOiB7XG4gICAgICAgICAgICBoYW5kbGVQbGF5U291bmQoZW50aXR5LCBnZXRQYXlsb2FkPEFjdGlvblR5cGUuUExBWV9TT1VORD4oYWN0aW9uKSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSBBY3Rpb25UeXBlLlNUT1BfU09VTkQ6IHtcbiAgICAgICAgICAgIGhhbmRsZVN0b3BTb3VuZChlbnRpdHksIGdldFBheWxvYWQ8QWN0aW9uVHlwZS5TVE9QX1NPVU5EPihhY3Rpb24pKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIEFjdGlvblR5cGUuU0VUX1ZJU0lCSUxJVFk6IHtcbiAgICAgICAgICAgIGhhbmRsZVNldFZpc2liaWxpdHkoZW50aXR5LCBnZXRQYXlsb2FkPEFjdGlvblR5cGUuU0VUX1ZJU0lCSUxJVFk+KGFjdGlvbikpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgQWN0aW9uVHlwZS5BVFRBQ0hfVE9fUExBWUVSOiB7XG4gICAgICAgICAgICBoYW5kbGVBdHRhY2hUb1BsYXllcihlbnRpdHksIGdldFBheWxvYWQ8QWN0aW9uVHlwZS5BVFRBQ0hfVE9fUExBWUVSPihhY3Rpb24pKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIEFjdGlvblR5cGUuREVUQUNIX0ZST01fUExBWUVSOiB7XG4gICAgICAgICAgICBoYW5kbGVEZXRhY2hGcm9tUGxheWVyKGVudGl0eSwgZ2V0UGF5bG9hZDxBY3Rpb25UeXBlLkRFVEFDSF9GUk9NX1BMQVlFUj4oYWN0aW9uKSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSBBY3Rpb25UeXBlLlBMQVlfVklERU9fU1RSRUFNOiB7XG4gICAgICAgICAgICBoYW5kbGVQbGF5VmlkZW8oZW50aXR5LCBnZXRQYXlsb2FkPEFjdGlvblR5cGUuUExBWV9WSURFT19TVFJFQU0+KGFjdGlvbikpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgQWN0aW9uVHlwZS5TVE9QX1ZJREVPX1NUUkVBTToge1xuICAgICAgICAgICAgaGFuZGxlU3RvcFZpZGVvKGVudGl0eSwgZ2V0UGF5bG9hZDxBY3Rpb25UeXBlLlNUT1BfVklERU9fU1RSRUFNPihhY3Rpb24pKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIEFjdGlvblR5cGUuUExBWV9BVURJT19TVFJFQU06IHtcbiAgICAgICAgICAgIGhhbmRsZVBsYXlBdWRpb1N0cmVhbShlbnRpdHksIGdldFBheWxvYWQ8QWN0aW9uVHlwZS5QTEFZX0FVRElPX1NUUkVBTT4oYWN0aW9uKSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSBBY3Rpb25UeXBlLlNUT1BfQVVESU9fU1RSRUFNOiB7XG4gICAgICAgICAgICBoYW5kbGVTdG9wQXVkaW9TdHJlYW0oZW50aXR5LCBnZXRQYXlsb2FkPEFjdGlvblR5cGUuU1RPUF9BVURJT19TVFJFQU0+KGFjdGlvbikpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgQWN0aW9uVHlwZS5URUxFUE9SVF9QTEFZRVI6IHtcbiAgICAgICAgICAgIGhhbmRsZVRlbGVwb3J0UGxheWVyKGVudGl0eSwgZ2V0UGF5bG9hZDxBY3Rpb25UeXBlLlRFTEVQT1JUX1BMQVlFUj4oYWN0aW9uKSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSBBY3Rpb25UeXBlLk1PVkVfUExBWUVSOiB7XG4gICAgICAgICAgICBoYW5kbGVNb3ZlUGxheWVyKGVudGl0eSwgZ2V0UGF5bG9hZDxBY3Rpb25UeXBlLk1PVkVfUExBWUVSPihhY3Rpb24pKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIEFjdGlvblR5cGUuUExBWV9ERUZBVUxUX0VNT1RFOiB7XG4gICAgICAgICAgICBoYW5kbGVQbGF5RGVmYXVsdEVtb3RlKGVudGl0eSwgZ2V0UGF5bG9hZDxBY3Rpb25UeXBlLlBMQVlfREVGQVVMVF9FTU9URT4oYWN0aW9uKSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSBBY3Rpb25UeXBlLlBMQVlfQ1VTVE9NX0VNT1RFOiB7XG4gICAgICAgICAgICBoYW5kbGVQbGF5Q3VzdG9tRW1vdGUoZW50aXR5LCBnZXRQYXlsb2FkPEFjdGlvblR5cGUuUExBWV9DVVNUT01fRU1PVEU+KGFjdGlvbikpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgQWN0aW9uVHlwZS5PUEVOX0xJTks6IHtcbiAgICAgICAgICAgIGhhbmRsZU9wZW5MaW5rKGVudGl0eSwgZ2V0UGF5bG9hZDxBY3Rpb25UeXBlLk9QRU5fTElOSz4oYWN0aW9uKSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSBBY3Rpb25UeXBlLlNIT1dfVEVYVDoge1xuICAgICAgICAgICAgaGFuZGxlU2hvd1RleHQoZW50aXR5LCBnZXRQYXlsb2FkPEFjdGlvblR5cGUuU0hPV19URVhUPihhY3Rpb24pKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIEFjdGlvblR5cGUuSElERV9URVhUOiB7XG4gICAgICAgICAgICBoYW5kbGVIaWRlVGV4dChlbnRpdHksIGdldFBheWxvYWQ8QWN0aW9uVHlwZS5ISURFX1RFWFQ+KGFjdGlvbikpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgQWN0aW9uVHlwZS5TVEFSVF9ERUxBWToge1xuICAgICAgICAgICAgaGFuZGxlU3RhcnREZWxheShlbnRpdHksIGdldFBheWxvYWQ8QWN0aW9uVHlwZS5TVEFSVF9ERUxBWT4oYWN0aW9uKSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSBBY3Rpb25UeXBlLlNUT1BfREVMQVk6IHtcbiAgICAgICAgICAgIGhhbmRsZVN0b3BEZWxheShlbnRpdHksIGdldFBheWxvYWQ8QWN0aW9uVHlwZS5TVE9QX0RFTEFZPihhY3Rpb24pKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIEFjdGlvblR5cGUuU1RBUlRfTE9PUDoge1xuICAgICAgICAgICAgaGFuZGxlU3RhcnRMb29wKGVudGl0eSwgZ2V0UGF5bG9hZDxBY3Rpb25UeXBlLlNUQVJUX0xPT1A+KGFjdGlvbikpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgQWN0aW9uVHlwZS5TVE9QX0xPT1A6IHtcbiAgICAgICAgICAgIGhhbmRsZVN0b3BMb29wKGVudGl0eSwgZ2V0UGF5bG9hZDxBY3Rpb25UeXBlLlNUT1BfTE9PUD4oYWN0aW9uKSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSBBY3Rpb25UeXBlLkNMT05FX0VOVElUWToge1xuICAgICAgICAgICAgaGFuZGxlQ2xvbmVFbnRpdHkoZW50aXR5LCBnZXRQYXlsb2FkPEFjdGlvblR5cGUuQ0xPTkVfRU5USVRZPihhY3Rpb24pKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIEFjdGlvblR5cGUuUkVNT1ZFX0VOVElUWToge1xuICAgICAgICAgICAgaGFuZGxlUmVtb3ZlRW50aXR5KGVudGl0eSwgZ2V0UGF5bG9hZDxBY3Rpb25UeXBlLlJFTU9WRV9FTlRJVFk+KGFjdGlvbikpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgQWN0aW9uVHlwZS5TSE9XX0lNQUdFOiB7XG4gICAgICAgICAgICBoYW5kbGVTaG93SW1hZ2UoZW50aXR5LCBnZXRQYXlsb2FkPEFjdGlvblR5cGUuU0hPV19JTUFHRT4oYWN0aW9uKSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSBBY3Rpb25UeXBlLkhJREVfSU1BR0U6IHtcbiAgICAgICAgICAgIGhhbmRsZUhpZGVJbWFnZShlbnRpdHksIGdldFBheWxvYWQ8QWN0aW9uVHlwZS5ISURFX0lNQUdFPihhY3Rpb24pKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIEFjdGlvblR5cGUuREFNQUdFOiB7XG4gICAgICAgICAgICBoYW5kbGVEYW1hZ2UoZW50aXR5LCBnZXRQYXlsb2FkPEFjdGlvblR5cGUuREFNQUdFPihhY3Rpb24pKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIEFjdGlvblR5cGUuTU9WRV9QTEFZRVJfSEVSRToge1xuICAgICAgICAgICAgaGFuZGxlTW92ZVBsYXllckhlcmUoZW50aXR5LCBnZXRQYXlsb2FkPEFjdGlvblR5cGUuTU9WRV9QTEFZRVJfSEVSRT4oYWN0aW9uKSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSBBY3Rpb25UeXBlLkZPTExPV19QTEFZRVI6IHtcbiAgICAgICAgICAgIGhhbmRsZUZvbGxvd1BsYXllcihlbnRpdHksIGdldFBheWxvYWQ8QWN0aW9uVHlwZS5GT0xMT1dfUExBWUVSPihhY3Rpb24pKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIEFjdGlvblR5cGUuU1RPUF9GT0xMT1dJTkdfUExBWUVSOiB7XG4gICAgICAgICAgICBoYW5kbGVTdG9wRm9sbG93aW5nUGxheWVyKGVudGl0eSwgZ2V0UGF5bG9hZDxBY3Rpb25UeXBlLlNUT1BfRk9MTE9XSU5HX1BMQVlFUj4oYWN0aW9uKSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSBBY3Rpb25UeXBlLlBMQUNFX09OX1BMQVlFUjoge1xuICAgICAgICAgICAgaGFuZGxlUGxhY2VPblBsYXllcihlbnRpdHksIGdldFBheWxvYWQ8QWN0aW9uVHlwZS5QTEFDRV9PTl9QTEFZRVI+KGFjdGlvbikpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgQWN0aW9uVHlwZS5ST1RBVEVfQVNfUExBWUVSOiB7XG4gICAgICAgICAgICBoYW5kbGVSb3RhdGVBc1BsYXllcihlbnRpdHksIGdldFBheWxvYWQ8QWN0aW9uVHlwZS5ST1RBVEVfQVNfUExBWUVSPihhY3Rpb24pKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIEFjdGlvblR5cGUuUExBQ0VfT05fQ0FNRVJBOiB7XG4gICAgICAgICAgICBoYW5kbGVQbGFjZU9uQ2FtZXJhKGVudGl0eSwgZ2V0UGF5bG9hZDxBY3Rpb25UeXBlLlBMQUNFX09OX0NBTUVSQT4oYWN0aW9uKSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSBBY3Rpb25UeXBlLlJPVEFURV9BU19DQU1FUkE6IHtcbiAgICAgICAgICAgIGhhbmRsZVJvdGF0ZUFzQ2FtZXJhKGVudGl0eSwgZ2V0UGF5bG9hZDxBY3Rpb25UeXBlLlJPVEFURV9BU19DQU1FUkE+KGFjdGlvbikpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgQWN0aW9uVHlwZS5TRVRfUE9TSVRJT046IHtcbiAgICAgICAgICAgIGhhbmRsZVNldFBvc2l0aW9uKGVudGl0eSwgZ2V0UGF5bG9hZDxBY3Rpb25UeXBlLlNFVF9QT1NJVElPTj4oYWN0aW9uKSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSBBY3Rpb25UeXBlLlNFVF9ST1RBVElPTjoge1xuICAgICAgICAgICAgaGFuZGxlU2V0Um90YXRpb24oZW50aXR5LCBnZXRQYXlsb2FkPEFjdGlvblR5cGUuU0VUX1JPVEFUSU9OPihhY3Rpb24pKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIEFjdGlvblR5cGUuU0VUX1NDQUxFOiB7XG4gICAgICAgICAgICBoYW5kbGVTZXRTY2FsZShlbnRpdHksIGdldFBheWxvYWQ8QWN0aW9uVHlwZS5TRVRfU0NBTEU+KGFjdGlvbikpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgQWN0aW9uVHlwZS5SQU5ET006IHtcbiAgICAgICAgICAgIGhhbmRsZVJhbmRvbShlbnRpdHksIGdldFBheWxvYWQ8QWN0aW9uVHlwZS5SQU5ET00+KGFjdGlvbikpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgQWN0aW9uVHlwZS5CQVRDSDoge1xuICAgICAgICAgICAgaGFuZGxlQmF0Y2goZW50aXR5LCBnZXRQYXlsb2FkPEFjdGlvblR5cGUuQkFUQ0g+KGFjdGlvbikpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgQWN0aW9uVHlwZS5IRUFMX1BMQVlFUjoge1xuICAgICAgICAgICAgaGFuZGxlSGVhbFBsYXllcihlbnRpdHksIGdldFBheWxvYWQ8QWN0aW9uVHlwZS5IRUFMX1BMQVlFUj4oYWN0aW9uKSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSBBY3Rpb25UeXBlLkNMQUlNX0FJUkRST1A6IHtcbiAgICAgICAgICAgIGhhbmRsZUNsYWltQWlyZHJvcChlbnRpdHksIGdldFBheWxvYWQ8QWN0aW9uVHlwZS5DTEFJTV9BSVJEUk9QPihhY3Rpb24pKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIEFjdGlvblR5cGUuTElHSFRTX09OOiB7XG4gICAgICAgICAgICBoYW5kbGVMaWdodHNPbihlbnRpdHkpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgQWN0aW9uVHlwZS5MSUdIVFNfT0ZGOiB7XG4gICAgICAgICAgICBoYW5kbGVMaWdodHNPZmYoZW50aXR5KTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIEFjdGlvblR5cGUuTElHSFRTX01PRElGWToge1xuICAgICAgICAgICAgaGFuZGxlTGlnaHRzTW9kaWZ5KGVudGl0eSwgZ2V0UGF5bG9hZDxBY3Rpb25UeXBlLkxJR0hUU19NT0RJRlk+KGFjdGlvbikpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgQWN0aW9uVHlwZS5DSEFOR0VfQ0FNRVJBOiB7XG4gICAgICAgICAgICBoYW5kbGVDaGFuZ2VDYW1lcmEoZW50aXR5LCBnZXRQYXlsb2FkPEFjdGlvblR5cGUuQ0hBTkdFX0NBTUVSQT4oYWN0aW9uKSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSBBY3Rpb25UeXBlLkNIQU5HRV9URVhUOiB7XG4gICAgICAgICAgICBoYW5kbGVDaGFuZ2VUZXh0KGVudGl0eSwgZ2V0UGF5bG9hZDxBY3Rpb25UeXBlLkNIQU5HRV9URVhUPihhY3Rpb24pKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGluaXRlZEVudGl0aWVzLmFkZChlbnRpdHkpO1xuICB9XG5cbiAgLy8gTElHSFRTX09OXG4gIGZ1bmN0aW9uIGhhbmRsZUxpZ2h0c09uKGVudGl0eTogRW50aXR5KSB7XG4gICAgY29uc3QgbGlnaHQgPSBMaWdodFNvdXJjZS5nZXRNdXRhYmxlT3JOdWxsKGVudGl0eSk7XG4gICAgaWYgKGxpZ2h0KSB7XG4gICAgICBsaWdodC5hY3RpdmUgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIC8vIExJR0hUU19PRkZcbiAgZnVuY3Rpb24gaGFuZGxlTGlnaHRzT2ZmKGVudGl0eTogRW50aXR5KSB7XG4gICAgY29uc3QgbGlnaHQgPSBMaWdodFNvdXJjZS5nZXRNdXRhYmxlT3JOdWxsKGVudGl0eSk7XG4gICAgaWYgKGxpZ2h0KSB7XG4gICAgICBsaWdodC5hY3RpdmUgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICAvLyBMSUdIVFNfTU9ESUZZXG4gIGZ1bmN0aW9uIGhhbmRsZUxpZ2h0c01vZGlmeShlbnRpdHk6IEVudGl0eSwgcGF5bG9hZDogQWN0aW9uUGF5bG9hZDxBY3Rpb25UeXBlLkxJR0hUU19NT0RJRlk+KSB7XG4gICAgY29uc3QgbGlnaHQgPSBMaWdodFNvdXJjZS5nZXRNdXRhYmxlT3JOdWxsKGVudGl0eSk7XG4gICAgaWYgKCFsaWdodCkgcmV0dXJuO1xuICAgIGlmIChwYXlsb2FkLmFjdGl2ZSAhPT0gdW5kZWZpbmVkKSBsaWdodC5hY3RpdmUgPSBwYXlsb2FkLmFjdGl2ZTtcbiAgICBpZiAocGF5bG9hZC5jb2xvcikgbGlnaHQuY29sb3IgPSBwYXlsb2FkLmNvbG9yO1xuICAgIGlmIChwYXlsb2FkLmludGVuc2l0eSAhPT0gdW5kZWZpbmVkKSBsaWdodC5pbnRlbnNpdHkgPSBwYXlsb2FkLmludGVuc2l0eTtcbiAgfVxuXG4gIC8vIENIQU5HRV9DQU1FUkFcbiAgZnVuY3Rpb24gaGFuZGxlQ2hhbmdlQ2FtZXJhKF9lbnRpdHk6IEVudGl0eSwgcGF5bG9hZDogQWN0aW9uUGF5bG9hZDxBY3Rpb25UeXBlLkNIQU5HRV9DQU1FUkE+KSB7XG4gICAgY29uc3QgdGFyZ2V0ID0gcGF5bG9hZC52aXJ0dWFsQ2FtZXJhRW50aXR5O1xuICAgIGlmICghdGFyZ2V0KSB7XG4gICAgICBpZiAoTWFpbkNhbWVyYS5oYXMoZW5naW5lLkNhbWVyYUVudGl0eSkpIHtcbiAgICAgICAgTWFpbkNhbWVyYS5kZWxldGVGcm9tKGVuZ2luZS5DYW1lcmFFbnRpdHkpO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIEVuc3VyZSB0aGUgc2VsZWN0ZWQgZW50aXR5IGhhcyBWaXJ0dWFsQ2FtZXJhIGJlZm9yZSBhcHBseWluZ1xuICAgIGlmICghVmlydHVhbENhbWVyYS5oYXModGFyZ2V0KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIE1haW5DYW1lcmEuY3JlYXRlT3JSZXBsYWNlKGVuZ2luZS5DYW1lcmFFbnRpdHksIHtcbiAgICAgIHZpcnR1YWxDYW1lcmFFbnRpdHk6IHRhcmdldCxcbiAgICB9KTtcbiAgfVxuXG4gIC8vIENIQU5HRV9URVhUXG4gIGZ1bmN0aW9uIGhhbmRsZUNoYW5nZVRleHQoZW50aXR5OiBFbnRpdHksIHBheWxvYWQ6IEFjdGlvblBheWxvYWQ8QWN0aW9uVHlwZS5DSEFOR0VfVEVYVD4pIHtcbiAgICBjb25zdCB0ZXh0ID0gVGV4dFNoYXBlLmdldE11dGFibGVPck51bGwoZW50aXR5KTtcbiAgICBpZiAoIXRleHQpIHJldHVybjtcblxuICAgIHRleHQudGV4dCA9IHBheWxvYWQudGV4dDtcbiAgICBpZiAocGF5bG9hZC5mb250U2l6ZSAhPT0gdW5kZWZpbmVkKSB0ZXh0LmZvbnRTaXplID0gcGF5bG9hZC5mb250U2l6ZTtcbiAgICBpZiAocGF5bG9hZC5jb2xvcikgdGV4dC50ZXh0Q29sb3IgPSBwYXlsb2FkLmNvbG9yO1xuICB9XG5cbiAgLy8gUExBWV9BTklNQVRJT05cbiAgZnVuY3Rpb24gaW5pdFBsYXlBbmltYXRpb24oZW50aXR5OiBFbnRpdHkpIHtcbiAgICBpZiAoIUFuaW1hdG9yLmhhcyhlbnRpdHkpKSB7XG4gICAgICBBbmltYXRvci5jcmVhdGUoZW50aXR5LCB7XG4gICAgICAgIHN0YXRlczogW10sXG4gICAgICB9KTtcbiAgICAgIEFuaW1hdG9yLnN0b3BBbGxBbmltYXRpb25zKGVudGl0eSk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gbm9ybWFsaXplQW5pbWF0aW9uV2VpZ2h0KHJhd1dlaWdodDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBpZiAocmF3V2VpZ2h0IDwgMCB8fCByYXdXZWlnaHQgPiAxKSByZXR1cm4gMTtcbiAgICByZXR1cm4gcmF3V2VpZ2h0O1xuICB9XG5cbiAgZnVuY3Rpb24gaGFuZGxlUGxheUFuaW1hdGlvbihlbnRpdHk6IEVudGl0eSwgcGF5bG9hZDogQWN0aW9uUGF5bG9hZDxBY3Rpb25UeXBlLlBMQVlfQU5JTUFUSU9OPikge1xuICAgIGNvbnN0IHsgYW5pbWF0aW9uLCBsb29wIH0gPSBwYXlsb2FkO1xuXG4gICAgY29uc3QgYW5pbWF0b3IgPSBBbmltYXRvci5nZXRNdXRhYmxlKGVudGl0eSk7XG4gICAgaWYgKCFhbmltYXRvci5zdGF0ZXMuc29tZSgkID0+ICQuY2xpcCA9PT0gYW5pbWF0aW9uKSkge1xuICAgICAgYW5pbWF0b3Iuc3RhdGVzID0gW1xuICAgICAgICAuLi5hbmltYXRvci5zdGF0ZXMsXG4gICAgICAgIHtcbiAgICAgICAgICBjbGlwOiBhbmltYXRpb24sXG4gICAgICAgIH0sXG4gICAgICBdO1xuICAgIH1cblxuICAgIEFuaW1hdG9yLnN0b3BBbGxBbmltYXRpb25zKGVudGl0eSk7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgY2xpcCA9IEFuaW1hdG9yLmdldENsaXAoZW50aXR5LCBhbmltYXRpb24pO1xuICAgICAgY2xpcC5wbGF5aW5nID0gdHJ1ZTtcbiAgICAgIGNsaXAubG9vcCA9IGxvb3AgPz8gZmFsc2U7XG4gICAgICBjbGlwLndlaWdodCA9IG5vcm1hbGl6ZUFuaW1hdGlvbldlaWdodChjbGlwLndlaWdodCA/PyAxKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBwbGF5aW5nIGFuaW1hdGlvbicsIGUpO1xuICAgIH1cbiAgfVxuXG4gIC8vIFNUT1BfQU5JTUFUSU9OXG4gIGZ1bmN0aW9uIGhhbmRsZVN0b3BBbmltYXRpb24oZW50aXR5OiBFbnRpdHksIF9wYXlsb2FkOiBBY3Rpb25QYXlsb2FkPEFjdGlvblR5cGUuU1RPUF9BTklNQVRJT04+KSB7XG4gICAgaWYgKEFuaW1hdG9yLmhhcyhlbnRpdHkpKSB7XG4gICAgICBBbmltYXRvci5zdG9wQWxsQW5pbWF0aW9ucyhlbnRpdHkpO1xuICAgIH1cbiAgfVxuXG4gIC8vIFNFVF9TVEFURVxuICBmdW5jdGlvbiBoYW5kbGVTZXRTdGF0ZShlbnRpdHk6IEVudGl0eSwgcGF5bG9hZDogQWN0aW9uUGF5bG9hZDxBY3Rpb25UeXBlLlNFVF9TVEFURT4pIHtcbiAgICBjb25zdCBzdGF0ZXMgPSBTdGF0ZXMuZ2V0TXV0YWJsZU9yTnVsbChlbnRpdHkpO1xuXG4gICAgaWYgKHN0YXRlcykge1xuICAgICAgY29uc3QgZGVmYXVsdFZhbHVlID0gZ2V0RGVmYXVsdFZhbHVlKHN0YXRlcyk7XG4gICAgICBsZXQgbmV4dFN0YXRlOiBzdHJpbmcgfCB1bmRlZmluZWQgPSBwYXlsb2FkLnN0YXRlO1xuICAgICAgbmV4dFN0YXRlID0gaXNWYWxpZFN0YXRlKHN0YXRlcywgbmV4dFN0YXRlKSA/IG5leHRTdGF0ZSA6IGRlZmF1bHRWYWx1ZTtcbiAgICAgIGNvbnN0IHByZXZpb3VzVmFsdWUgPSBzdGF0ZXMuY3VycmVudFZhbHVlID8/IGRlZmF1bHRWYWx1ZSA/PyB1bmRlZmluZWQ7XG4gICAgICBzdGF0ZXMucHJldmlvdXNWYWx1ZSA9IHByZXZpb3VzVmFsdWU7XG4gICAgICBzdGF0ZXMuY3VycmVudFZhbHVlID0gbmV4dFN0YXRlO1xuXG4gICAgICBjb25zdCB0cmlnZ2VyRXZlbnRzID0gZ2V0VHJpZ2dlckV2ZW50cyhlbnRpdHkpO1xuICAgICAgdHJpZ2dlckV2ZW50cy5lbWl0KFRyaWdnZXJUeXBlLk9OX1NUQVRFX0NIQU5HRSk7XG4gICAgfVxuICB9XG5cbiAgLy8gU1RBUlRfVFdFRU5cbiAgZnVuY3Rpb24gaGFuZGxlU3RhcnRUd2VlbihlbnRpdHk6IEVudGl0eSwgcGF5bG9hZDogQWN0aW9uUGF5bG9hZDxBY3Rpb25UeXBlLlNUQVJUX1RXRUVOPikge1xuICAgIGlmIChwYXlsb2FkKSB7XG4gICAgICAvLyBHZXQgdGhlIGluaXRpYWwgdHdlZW4gaWYgZXhpc3RzIHRvIHJldmVydCB0aGUgb2JqZWN0IG1vdmVtZW50IHRvIHRoYXQgc2VxdWVuY2Ugd2hlbiBleGVjdXRpbmcgYSB0d2VlbiBmcm9tIGFjdGlvbnNcbiAgICAgIGNvbnN0IGluaXRpYWxUd2VlbiA9IFR3ZWVuQ29tcG9uZW50LmdldE11dGFibGVPck51bGwoZW50aXR5KTtcbiAgICAgIGxldCB0d2VlbjtcblxuICAgICAgc3dpdGNoIChwYXlsb2FkLnR5cGUpIHtcbiAgICAgICAgY2FzZSBUd2VlblR5cGUuTU9WRV9JVEVNOiB7XG4gICAgICAgICAgdHdlZW4gPSBoYW5kbGVNb3ZlSXRlbShlbnRpdHksIHBheWxvYWQpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgVHdlZW5UeXBlLlJPVEFURV9JVEVNOiB7XG4gICAgICAgICAgdHdlZW4gPSBoYW5kbGVSb3RhdGVJdGVtKGVudGl0eSwgcGF5bG9hZCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBUd2VlblR5cGUuU0NBTEVfSVRFTToge1xuICAgICAgICAgIHR3ZWVuID0gaGFuZGxlU2NhbGVJdGVtKGVudGl0eSwgcGF5bG9hZCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBUd2VlblR5cGUuS0VFUF9ST1RBVElOR19JVEVNOiB7XG4gICAgICAgICAgdHdlZW4gPSBoYW5kbGVLZWVwUm90YXRpbmdJdGVtKGVudGl0eSwgcGF5bG9hZCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biB0d2VlbiB0eXBlOiAke3BheWxvYWQudHlwZX1gKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXZlcnRUd2VlbihlbnRpdHksIGluaXRpYWxUd2VlbiwgdHdlZW4pO1xuICAgIH1cbiAgfVxuXG4gIC8vIFJlc3RhcnQgdG8gdGhlIGluaXRpYWwgbW92ZW1lbnQgc2VxdWVuY2Ugd2hlbiBleGVjdXRpbmcgYW4gYWRpdGlvbmFsIHR3ZWVuXG4gIGZ1bmN0aW9uIHJldmVydFR3ZWVuKGVudGl0eTogRW50aXR5LCBpbml0aWFsVHdlZW46IFBCVHdlZW4gfCBudWxsLCB0d2VlbjogUEJUd2Vlbikge1xuICAgIGNvbnN0IHR3ZWVuU2VxdWVuY2UgPSBUd2VlblNlcXVlbmNlLmdldE11dGFibGVPck51bGwoZW50aXR5KTtcbiAgICBsZXQgX3JldmVydFR3ZWVuID0ge1xuICAgICAgLi4udHdlZW4sXG4gICAgfTtcblxuICAgIGlmICghaW5pdGlhbFR3ZWVuIHx8ICF0d2VlblNlcXVlbmNlIHx8ICF0d2VlblNlcXVlbmNlLmxvb3ApIHJldHVybjtcblxuICAgIHN3aXRjaCAoaW5pdGlhbFR3ZWVuLm1vZGU/LiRjYXNlKSB7XG4gICAgICBjYXNlICdtb3ZlJzoge1xuICAgICAgICBfcmV2ZXJ0VHdlZW4gPSB7XG4gICAgICAgICAgLi4uX3JldmVydFR3ZWVuLFxuICAgICAgICAgIG1vZGU6IFR3ZWVuLk1vZGUuTW92ZSh7XG4gICAgICAgICAgICBzdGFydDogKHR3ZWVuLm1vZGUgYXMgeyAkY2FzZTogJ21vdmUnOyBtb3ZlOiBNb3ZlIH0pLm1vdmUuZW5kLFxuICAgICAgICAgICAgZW5kOiBpbml0aWFsVHdlZW4ubW9kZS5tb3ZlLnN0YXJ0LFxuICAgICAgICAgIH0pLFxuICAgICAgICB9O1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ3JvdGF0ZSc6IHtcbiAgICAgICAgX3JldmVydFR3ZWVuID0ge1xuICAgICAgICAgIC4uLl9yZXZlcnRUd2VlbixcbiAgICAgICAgICBtb2RlOiBUd2Vlbi5Nb2RlLlJvdGF0ZSh7XG4gICAgICAgICAgICBzdGFydDogKHR3ZWVuLm1vZGUgYXMgeyAkY2FzZTogJ3JvdGF0ZSc7IHJvdGF0ZTogUm90YXRlIH0pLnJvdGF0ZS5lbmQsXG4gICAgICAgICAgICBlbmQ6IGluaXRpYWxUd2Vlbi5tb2RlLnJvdGF0ZS5zdGFydCxcbiAgICAgICAgICB9KSxcbiAgICAgICAgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdzY2FsZSc6IHtcbiAgICAgICAgX3JldmVydFR3ZWVuID0ge1xuICAgICAgICAgIC4uLl9yZXZlcnRUd2VlbixcbiAgICAgICAgICBtb2RlOiBUd2Vlbi5Nb2RlLlNjYWxlKHtcbiAgICAgICAgICAgIHN0YXJ0OiAodHdlZW4ubW9kZSBhcyB7ICRjYXNlOiAnc2NhbGUnOyBzY2FsZTogU2NhbGUgfSkuc2NhbGUuZW5kLFxuICAgICAgICAgICAgZW5kOiBpbml0aWFsVHdlZW4ubW9kZS5zY2FsZS5zdGFydCxcbiAgICAgICAgICB9KSxcbiAgICAgICAgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biB0d2VlbiBtb2RlOiAke2luaXRpYWxUd2Vlbi5tb2RlfWApO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIElmIHRoZSBpbml0aWFsIHR3ZWVuIGlzIG5vdCBwbGF5aW5nIGJ1dCB0aGUgbG9vcCBwcm9wZXJ0eSBpcyBhY3RpdmUsIHN0YXJ0IGl0XG4gICAgaW5pdGlhbFR3ZWVuLnBsYXlpbmcgPSB0cnVlO1xuICAgIHR3ZWVuU2VxdWVuY2Uuc2VxdWVuY2UgPSBbX3JldmVydFR3ZWVuLCBpbml0aWFsVHdlZW5dO1xuICB9XG5cbiAgLy8gTU9WRV9JVEVNXG4gIGZ1bmN0aW9uIGhhbmRsZU1vdmVJdGVtKGVudGl0eTogRW50aXR5LCB0d2VlbjogQWN0aW9uUGF5bG9hZDxBY3Rpb25UeXBlLlNUQVJUX1RXRUVOPikge1xuICAgIGNvbnN0IHRyYW5zZm9ybSA9IFRyYW5zZm9ybS5nZXQoZW50aXR5KTtcbiAgICBjb25zdCB7IGR1cmF0aW9uLCBpbnRlcnBvbGF0aW9uVHlwZSwgcmVsYXRpdmUgfSA9IHR3ZWVuO1xuICAgIGNvbnN0IGVuZCA9IFZlY3RvcjMuY3JlYXRlKHR3ZWVuLmVuZC54LCB0d2Vlbi5lbmQueSwgdHdlZW4uZW5kLnopO1xuICAgIGNvbnN0IGVuZFBvc2l0aW9uID0gcmVsYXRpdmUgPyBWZWN0b3IzLmFkZCh0cmFuc2Zvcm0ucG9zaXRpb24sIGVuZCkgOiBlbmQ7XG5cbiAgICByZXR1cm4gVHdlZW5Db21wb25lbnQuY3JlYXRlT3JSZXBsYWNlKGVudGl0eSwge1xuICAgICAgbW9kZTogVHdlZW4uTW9kZS5Nb3ZlKHtcbiAgICAgICAgc3RhcnQ6IHRyYW5zZm9ybS5wb3NpdGlvbixcbiAgICAgICAgZW5kOiBlbmRQb3NpdGlvbixcbiAgICAgIH0pLFxuICAgICAgZHVyYXRpb246IGR1cmF0aW9uICogMTAwMCwgLy8gZnJvbSBzZWNzIHRvIG1zXG4gICAgICBlYXNpbmdGdW5jdGlvbjogZ2V0RWFzaW5nRnVuY3Rpb25Gcm9tSW50ZXJwb2xhdGlvbihpbnRlcnBvbGF0aW9uVHlwZSksXG4gICAgfSk7XG4gIH1cblxuICAvLyBST1RBVEVfSVRFTVxuICBmdW5jdGlvbiBoYW5kbGVSb3RhdGVJdGVtKGVudGl0eTogRW50aXR5LCB0d2VlbjogQWN0aW9uUGF5bG9hZDxBY3Rpb25UeXBlLlNUQVJUX1RXRUVOPikge1xuICAgIGNvbnN0IHRyYW5zZm9ybSA9IFRyYW5zZm9ybS5nZXQoZW50aXR5KTtcbiAgICBjb25zdCB7IGR1cmF0aW9uLCBpbnRlcnBvbGF0aW9uVHlwZSwgcmVsYXRpdmUgfSA9IHR3ZWVuO1xuICAgIGNvbnN0IGVuZCA9IFF1YXRlcm5pb24uZnJvbUV1bGVyRGVncmVlcyh0d2Vlbi5lbmQueCwgdHdlZW4uZW5kLnksIHR3ZWVuLmVuZC56KTtcbiAgICBjb25zdCBlbmRSb3RhdGlvbiA9IHJlbGF0aXZlID8gUXVhdGVybmlvbi5tdWx0aXBseSh0cmFuc2Zvcm0ucm90YXRpb24sIGVuZCkgOiBlbmQ7XG5cbiAgICByZXR1cm4gVHdlZW5Db21wb25lbnQuY3JlYXRlT3JSZXBsYWNlKGVudGl0eSwge1xuICAgICAgbW9kZTogVHdlZW4uTW9kZS5Sb3RhdGUoe1xuICAgICAgICBzdGFydDogdHJhbnNmb3JtLnJvdGF0aW9uLFxuICAgICAgICBlbmQ6IGVuZFJvdGF0aW9uLFxuICAgICAgfSksXG4gICAgICBkdXJhdGlvbjogZHVyYXRpb24gKiAxMDAwLCAvLyBmcm9tIHNlY3MgdG8gbXNcbiAgICAgIGVhc2luZ0Z1bmN0aW9uOiBnZXRFYXNpbmdGdW5jdGlvbkZyb21JbnRlcnBvbGF0aW9uKGludGVycG9sYXRpb25UeXBlKSxcbiAgICB9KTtcbiAgfVxuXG4gIC8vIFNDQUxFX0lURU1cbiAgZnVuY3Rpb24gaGFuZGxlU2NhbGVJdGVtKGVudGl0eTogRW50aXR5LCB0d2VlbjogQWN0aW9uUGF5bG9hZDxBY3Rpb25UeXBlLlNUQVJUX1RXRUVOPikge1xuICAgIGNvbnN0IHRyYW5zZm9ybSA9IFRyYW5zZm9ybS5nZXQoZW50aXR5KTtcbiAgICBjb25zdCB7IGR1cmF0aW9uLCBpbnRlcnBvbGF0aW9uVHlwZSwgcmVsYXRpdmUgfSA9IHR3ZWVuO1xuICAgIGNvbnN0IGVuZCA9IFZlY3RvcjMuY3JlYXRlKHR3ZWVuLmVuZC54LCB0d2Vlbi5lbmQueSwgdHdlZW4uZW5kLnopO1xuICAgIGNvbnN0IGVuZFNjYWxlID0gcmVsYXRpdmUgPyBWZWN0b3IzLmFkZCh0cmFuc2Zvcm0uc2NhbGUsIGVuZCkgOiBlbmQ7XG5cbiAgICByZXR1cm4gVHdlZW5Db21wb25lbnQuY3JlYXRlT3JSZXBsYWNlKGVudGl0eSwge1xuICAgICAgbW9kZTogVHdlZW4uTW9kZS5TY2FsZSh7XG4gICAgICAgIHN0YXJ0OiB0cmFuc2Zvcm0uc2NhbGUsXG4gICAgICAgIGVuZDogZW5kU2NhbGUsXG4gICAgICB9KSxcbiAgICAgIGR1cmF0aW9uOiBkdXJhdGlvbiAqIDEwMDAsIC8vIGZyb20gc2VjcyB0byBtc1xuICAgICAgZWFzaW5nRnVuY3Rpb246IGdldEVhc2luZ0Z1bmN0aW9uRnJvbUludGVycG9sYXRpb24oaW50ZXJwb2xhdGlvblR5cGUpLFxuICAgIH0pO1xuICB9XG5cbiAgLy8gS0VFUF9ST1RBVElOR19JVEVNIChjb250aW51b3VzIHJvdGF0aW9uKVxuICBmdW5jdGlvbiBoYW5kbGVLZWVwUm90YXRpbmdJdGVtKGVudGl0eTogRW50aXR5LCB0d2VlbjogQWN0aW9uUGF5bG9hZDxBY3Rpb25UeXBlLlNUQVJUX1RXRUVOPikge1xuICAgIGNvbnN0IHsgZHVyYXRpb24sIGludGVycG9sYXRpb25UeXBlIH0gPSB0d2VlbjtcbiAgICBjb25zdCBkaXIgPSB0d2Vlbi5kaXJlY3Rpb24gPz8geyB4OiAwLCB5OiAxLCB6OiAwIH07XG4gICAgY29uc3Qgc3BlZWQgPSB0d2Vlbi5zcGVlZCA/PyAxO1xuXG4gICAgcmV0dXJuIFR3ZWVuQ29tcG9uZW50LmNyZWF0ZU9yUmVwbGFjZShlbnRpdHksIHtcbiAgICAgIG1vZGU6IFR3ZWVuLk1vZGUuUm90YXRlQ29udGludW91cyh7XG4gICAgICAgIGRpcmVjdGlvbjogUXVhdGVybmlvbi5mcm9tRXVsZXJEZWdyZWVzKGRpci54LCBkaXIueSwgZGlyLnopLFxuICAgICAgICBzcGVlZCxcbiAgICAgIH0pLFxuICAgICAgZHVyYXRpb246IChkdXJhdGlvbiA/PyAwKSAqIDEwMDAsXG4gICAgICBlYXNpbmdGdW5jdGlvbjogZ2V0RWFzaW5nRnVuY3Rpb25Gcm9tSW50ZXJwb2xhdGlvbihpbnRlcnBvbGF0aW9uVHlwZSksXG4gICAgfSk7XG4gIH1cblxuICAvLyBTVE9QX1RXRUVOXG4gIGZ1bmN0aW9uIGhhbmRsZVN0b3BUd2VlbihlbnRpdHk6IEVudGl0eSkge1xuICAgIGlmIChUd2VlbkNvbXBvbmVudC5oYXMoZW50aXR5KSkge1xuICAgICAgVHdlZW5Db21wb25lbnQuZGVsZXRlRnJvbShlbnRpdHkpO1xuICAgIH1cbiAgfVxuXG4gIC8vIFNMSURFX1RFWFRVUkVcbiAgZnVuY3Rpb24gaGFuZGxlU2xpZGVUZXh0dXJlKGVudGl0eTogRW50aXR5LCBwYXlsb2FkOiBBY3Rpb25QYXlsb2FkPEFjdGlvblR5cGUuU0xJREVfVEVYVFVSRT4pIHtcbiAgICBjb25zdCBkaXIgPSBwYXlsb2FkLmRpcmVjdGlvbjtcbiAgICBjb25zdCBzcGVlZCA9IHBheWxvYWQuc3BlZWQ7XG4gICAgY29uc3QgbW92ZW1lbnRUeXBlID0gcGF5bG9hZC5tb3ZlbWVudFR5cGUgYXMgdW5rbm93biBhcyBTZGtUZXh0dXJlTW92ZW1lbnRUeXBlIHwgdW5kZWZpbmVkO1xuICAgIGNvbnN0IGR1cmF0aW9uID0gcGF5bG9hZC5kdXJhdGlvbiA/PyAwO1xuXG4gICAgcmV0dXJuIFR3ZWVuQ29tcG9uZW50LmNyZWF0ZU9yUmVwbGFjZShlbnRpdHksIHtcbiAgICAgIG1vZGU6IFR3ZWVuLk1vZGUuVGV4dHVyZU1vdmVDb250aW51b3VzKHtcbiAgICAgICAgZGlyZWN0aW9uOiB7IHg6IGRpci54LCB5OiBkaXIueSB9LFxuICAgICAgICBzcGVlZCxcbiAgICAgICAgbW92ZW1lbnRUeXBlLFxuICAgICAgfSksXG4gICAgICBkdXJhdGlvbjogZHVyYXRpb24gKiAxMDAwLFxuICAgICAgZWFzaW5nRnVuY3Rpb246IDAsXG4gICAgfSk7XG4gIH1cblxuICAvLyBTRVRfQ09VTlRFUlxuICBmdW5jdGlvbiBoYW5kbGVTZXRDb3VudGVyKGVudGl0eTogRW50aXR5LCBwYXlsb2FkOiBBY3Rpb25QYXlsb2FkPEFjdGlvblR5cGUuU0VUX0NPVU5URVI+KSB7XG4gICAgY29uc3QgY291bnRlciA9IENvdW50ZXIuZ2V0TXV0YWJsZU9yTnVsbChlbnRpdHkpO1xuXG4gICAgaWYgKGNvdW50ZXIpIHtcbiAgICAgIGNvdW50ZXIudmFsdWUgPSBwYXlsb2FkLmNvdW50ZXI7XG5cbiAgICAgIGNvbnN0IHRyaWdnZXJFdmVudHMgPSBnZXRUcmlnZ2VyRXZlbnRzKGVudGl0eSk7XG4gICAgICB0cmlnZ2VyRXZlbnRzLmVtaXQoVHJpZ2dlclR5cGUuT05fQ09VTlRFUl9DSEFOR0UpO1xuICAgIH1cbiAgfVxuXG4gIC8vIElOQ1JFTUVOVF9DT1VOVEVSXG4gIGZ1bmN0aW9uIGhhbmRsZUluY3JlbWVudENvdW50ZXIoXG4gICAgZW50aXR5OiBFbnRpdHksXG4gICAgcGF5bG9hZDogQWN0aW9uUGF5bG9hZDxBY3Rpb25UeXBlLklOQ1JFTUVOVF9DT1VOVEVSPixcbiAgKSB7XG4gICAgY29uc3QgY291bnRlciA9IENvdW50ZXIuZ2V0TXV0YWJsZU9yTnVsbChlbnRpdHkpO1xuICAgIGNvbnN0IGFtb3VudCA9IHBheWxvYWQuYW1vdW50ID8/IDE7XG5cbiAgICBpZiAoY291bnRlcikge1xuICAgICAgY291bnRlci52YWx1ZSArPSBhbW91bnQ7XG5cbiAgICAgIGNvbnN0IHRyaWdnZXJFdmVudHMgPSBnZXRUcmlnZ2VyRXZlbnRzKGVudGl0eSk7XG4gICAgICB0cmlnZ2VyRXZlbnRzLmVtaXQoVHJpZ2dlclR5cGUuT05fQ09VTlRFUl9DSEFOR0UpO1xuICAgIH1cbiAgfVxuXG4gIC8vIERFQ1JFQVNFX0NPVU5URVJcbiAgZnVuY3Rpb24gaGFuZGxlRGVjcmVhc2VDb3VudGVyKFxuICAgIGVudGl0eTogRW50aXR5LFxuICAgIHBheWxvYWQ6IEFjdGlvblBheWxvYWQ8QWN0aW9uVHlwZS5JTkNSRU1FTlRfQ09VTlRFUj4sXG4gICkge1xuICAgIGNvbnN0IGNvdW50ZXIgPSBDb3VudGVyLmdldE11dGFibGVPck51bGwoZW50aXR5KTtcbiAgICBjb25zdCBhbW91bnQgPSBwYXlsb2FkLmFtb3VudCA/PyAxO1xuXG4gICAgaWYgKGNvdW50ZXIpIHtcbiAgICAgIGNvdW50ZXIudmFsdWUgLT0gYW1vdW50O1xuXG4gICAgICBjb25zdCB0cmlnZ2VyRXZlbnRzID0gZ2V0VHJpZ2dlckV2ZW50cyhlbnRpdHkpO1xuICAgICAgdHJpZ2dlckV2ZW50cy5lbWl0KFRyaWdnZXJUeXBlLk9OX0NPVU5URVJfQ0hBTkdFKTtcbiAgICB9XG4gIH1cblxuICAvLyBQTEFZX1NPVU5EXG4gIGZ1bmN0aW9uIGhhbmRsZVBsYXlTb3VuZChlbnRpdHk6IEVudGl0eSwgcGF5bG9hZDogQWN0aW9uUGF5bG9hZDxBY3Rpb25UeXBlLlBMQVlfU09VTkQ+KSB7XG4gICAgY29uc3QgeyBzcmMsIGxvb3AsIHZvbHVtZSwgZ2xvYmFsIH0gPSBwYXlsb2FkO1xuICAgIGlmIChBdWRpb1NvdXJjZS5oYXMoZW50aXR5KSkge1xuICAgICAgQXVkaW9Tb3VyY2UucGxheVNvdW5kKGVudGl0eSwgc3JjKTtcbiAgICAgIGNvbnN0IGF1ZGlvU291cmNlID0gQXVkaW9Tb3VyY2UuZ2V0TXV0YWJsZShlbnRpdHkpO1xuICAgICAgYXVkaW9Tb3VyY2UubG9vcCA9IGxvb3A7XG4gICAgICBhdWRpb1NvdXJjZS52b2x1bWUgPSB2b2x1bWUgPz8gMTtcbiAgICAgIGF1ZGlvU291cmNlLmdsb2JhbCA9IGdsb2JhbCA/PyBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgQXVkaW9Tb3VyY2UuY3JlYXRlKGVudGl0eSwge1xuICAgICAgICBhdWRpb0NsaXBVcmw6IHNyYyxcbiAgICAgICAgbG9vcCxcbiAgICAgICAgcGxheWluZzogdHJ1ZSxcbiAgICAgICAgdm9sdW1lOiB2b2x1bWUgPz8gMSxcbiAgICAgICAgZ2xvYmFsLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLy8gU1RPUF9TT1VORFxuICBmdW5jdGlvbiBoYW5kbGVTdG9wU291bmQoZW50aXR5OiBFbnRpdHksIF9wYXlsb2FkOiBBY3Rpb25QYXlsb2FkPEFjdGlvblR5cGUuU1RPUF9TT1VORD4pIHtcbiAgICBjb25zdCBhdWRpb1NvdXJjZSA9IEF1ZGlvU291cmNlLmdldE11dGFibGVPck51bGwoZW50aXR5KTtcbiAgICBpZiAoYXVkaW9Tb3VyY2UpIHtcbiAgICAgIGF1ZGlvU291cmNlLnBsYXlpbmcgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICAvLyBTRVRfVklTSUJJTElUWVxuICBmdW5jdGlvbiBoYW5kbGVTZXRWaXNpYmlsaXR5KGVudGl0eTogRW50aXR5LCBwYXlsb2FkOiBBY3Rpb25QYXlsb2FkPEFjdGlvblR5cGUuU0VUX1ZJU0lCSUxJVFk+KSB7XG4gICAgY29uc3QgeyB2aXNpYmxlLCBjb2xsaWRlciB9ID0gcGF5bG9hZDtcbiAgICBWaXNpYmlsaXR5Q29tcG9uZW50LmNyZWF0ZU9yUmVwbGFjZShlbnRpdHksIHsgdmlzaWJsZSB9KTtcbiAgICBjb25zdCBnbHRmID0gR2x0ZkNvbnRhaW5lci5nZXRNdXRhYmxlT3JOdWxsKGVudGl0eSk7XG4gICAgY29uc3QgbWVzaENvbGxpZGVyID0gTWVzaENvbGxpZGVyLmdldE11dGFibGVPck51bGwoZW50aXR5KTtcblxuICAgIGlmIChjb2xsaWRlciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAoZ2x0Zikge1xuICAgICAgICBnbHRmLmludmlzaWJsZU1lc2hlc0NvbGxpc2lvbk1hc2sgPSBjb2xsaWRlcjtcbiAgICAgIH0gZWxzZSBpZiAobWVzaENvbGxpZGVyKSB7XG4gICAgICAgIG1lc2hDb2xsaWRlci5jb2xsaXNpb25NYXNrID0gY29sbGlkZXI7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gQVRUQUNIX1RPX1BMQVlFUlxuICBmdW5jdGlvbiBoYW5kbGVBdHRhY2hUb1BsYXllcihcbiAgICBlbnRpdHk6IEVudGl0eSxcbiAgICBwYXlsb2FkOiBBY3Rpb25QYXlsb2FkPEFjdGlvblR5cGUuQVRUQUNIX1RPX1BMQVlFUj4sXG4gICkge1xuICAgIGNvbnN0IHsgYW5jaG9yUG9pbnRJZCB9ID0gcGF5bG9hZDtcbiAgICBjb25zdCB1c2VyID0gcGxheWVyc0hlbHBlcj8uZ2V0UGxheWVyKCk/LnVzZXJJZDtcbiAgICBpZiAodXNlcikge1xuICAgICAgQXZhdGFyQXR0YWNoLmNyZWF0ZU9yUmVwbGFjZShlbnRpdHksIHsgYW5jaG9yUG9pbnRJZDogYW5jaG9yUG9pbnRJZCwgYXZhdGFySWQ6IHVzZXIgfSk7XG4gICAgfVxuICB9XG5cbiAgLy8gREVUQUNIX0ZST01fUExBWUVSXG4gIGZ1bmN0aW9uIGhhbmRsZURldGFjaEZyb21QbGF5ZXIoXG4gICAgZW50aXR5OiBFbnRpdHksXG4gICAgX3BheWxvYWQ6IEFjdGlvblBheWxvYWQ8QWN0aW9uVHlwZS5ERVRBQ0hfRlJPTV9QTEFZRVI+LFxuICApIHtcbiAgICBpZiAoQXZhdGFyQXR0YWNoLmhhcyhlbnRpdHkpKSB7XG4gICAgICBBdmF0YXJBdHRhY2guZGVsZXRlRnJvbShlbnRpdHkpO1xuICAgIH1cbiAgfVxuXG4gIC8vIFRFTEVQT1JUIFBMQVlFUlxuICBmdW5jdGlvbiBoYW5kbGVUZWxlcG9ydFBsYXllcihcbiAgICBfZW50aXR5OiBFbnRpdHksXG4gICAgcGF5bG9hZDogQWN0aW9uUGF5bG9hZDxBY3Rpb25UeXBlLlRFTEVQT1JUX1BMQVlFUj4sXG4gICkge1xuICAgIGNvbnN0IHsgeCwgeSB9ID0gcGF5bG9hZDtcbiAgICByZXF1ZXN0VGVsZXBvcnQoe1xuICAgICAgZGVzdGluYXRpb246IGAke3h9LCR7eX1gLFxuICAgIH0pO1xuICB9XG5cbiAgLy8gTU9WRSBQTEFZRVJcbiAgZnVuY3Rpb24gaGFuZGxlTW92ZVBsYXllcihfZW50aXR5OiBFbnRpdHksIHBheWxvYWQ6IEFjdGlvblBheWxvYWQ8QWN0aW9uVHlwZS5NT1ZFX1BMQVlFUj4pIHtcbiAgICBjb25zdCBvcHRpb25zID0ge1xuICAgICAgbmV3UmVsYXRpdmVQb3NpdGlvbjogcGF5bG9hZC5wb3NpdGlvbixcbiAgICAgIGNhbWVyYVRhcmdldDogcGF5bG9hZC5jYW1lcmFUYXJnZXQsXG4gICAgfTtcbiAgICB2b2lkIG1vdmVQbGF5ZXJUbyhvcHRpb25zKTtcbiAgfVxuXG4gIC8vIFBMQVkgREVGQVVMVCBFTU9URVxuICBmdW5jdGlvbiBoYW5kbGVQbGF5RGVmYXVsdEVtb3RlKFxuICAgIF9lbnRpdHk6IEVudGl0eSxcbiAgICBwYXlsb2FkOiBBY3Rpb25QYXlsb2FkPEFjdGlvblR5cGUuUExBWV9ERUZBVUxUX0VNT1RFPixcbiAgKSB7XG4gICAgY29uc3QgeyBlbW90ZSB9ID0gcGF5bG9hZDtcbiAgICB2b2lkIHRyaWdnZXJFbW90ZSh7IHByZWRlZmluZWRFbW90ZTogZW1vdGUgfSk7XG4gIH1cblxuICAvLyBQTEFZIENVU1RPTSBFTU9URVxuICBmdW5jdGlvbiBoYW5kbGVQbGF5Q3VzdG9tRW1vdGUoXG4gICAgX2VudGl0eTogRW50aXR5LFxuICAgIHBheWxvYWQ6IEFjdGlvblBheWxvYWQ8QWN0aW9uVHlwZS5QTEFZX0NVU1RPTV9FTU9URT4sXG4gICkge1xuICAgIGNvbnN0IHsgc3JjLCBsb29wIH0gPSBwYXlsb2FkO1xuICAgIHZvaWQgdHJpZ2dlclNjZW5lRW1vdGUoeyBzcmMsIGxvb3AgfSk7XG4gIH1cblxuICAvLyBPUEVOIExJTktcbiAgZnVuY3Rpb24gaGFuZGxlT3BlbkxpbmsoX2VudGl0eTogRW50aXR5LCBwYXlsb2FkOiBBY3Rpb25QYXlsb2FkPEFjdGlvblR5cGUuT1BFTl9MSU5LPikge1xuICAgIGNvbnN0IHsgdXJsIH0gPSBwYXlsb2FkO1xuICAgIHZvaWQgb3BlbkV4dGVybmFsVXJsKHsgdXJsIH0pO1xuICB9XG5cbiAgLy8gUExBWV9WSURFT1xuICBmdW5jdGlvbiBoYW5kbGVQbGF5VmlkZW8oZW50aXR5OiBFbnRpdHksIHBheWxvYWQ6IEFjdGlvblBheWxvYWQ8QWN0aW9uVHlwZS5QTEFZX1ZJREVPX1NUUkVBTT4pIHtcbiAgICBjb25zdCB2aWRlb1NvdXJjZSA9IFZpZGVvUGxheWVyLmdldE11dGFibGVPck51bGwoZW50aXR5KTtcbiAgICBpZiAoIXZpZGVvU291cmNlICYmIHBheWxvYWQuc3JjKSB7XG4gICAgICBWaWRlb1BsYXllci5jcmVhdGVPclJlcGxhY2UoZW50aXR5LCB7XG4gICAgICAgIHNyYzogcGF5bG9hZC5zcmMsXG4gICAgICAgIHZvbHVtZTogcGF5bG9hZC52b2x1bWUgPz8gMSxcbiAgICAgICAgbG9vcDogcGF5bG9hZC5sb29wID8/IGZhbHNlLFxuICAgICAgICBwbGF5aW5nOiB0cnVlLFxuICAgICAgfSk7XG5cbiAgICAgIC8vIEluaXQgdmlkZW8gcGxheWVyIG1hdGVyaWFsIHdoZW4gdGhlIGVudGl0eSBkb2Vzbid0IGhhdmUgYSBWaWRlb1BsYXllciBjb21wb25lbnQgZGVmaW5lZFxuICAgICAgaW5pdFZpZGVvUGxheWVyQ29tcG9uZW50TWF0ZXJpYWwoZW50aXR5LCB7IE1hdGVyaWFsIH0sIE1hdGVyaWFsLmdldE9yTnVsbChlbnRpdHkpKTtcbiAgICB9XG4gICAgaWYgKHZpZGVvU291cmNlKSB7XG4gICAgICBpZiAodmlkZW9Tb3VyY2U/LnNyYyAhPT0gcGF5bG9hZC5zcmMpIHtcbiAgICAgICAgdmlkZW9Tb3VyY2Uuc3JjID0gcGF5bG9hZC5zcmMgPz8gJyc7XG4gICAgICB9XG4gICAgICB2aWRlb1NvdXJjZS52b2x1bWUgPSBwYXlsb2FkLnZvbHVtZSA/PyB2aWRlb1NvdXJjZS52b2x1bWU7XG4gICAgICB2aWRlb1NvdXJjZS5sb29wID0gcGF5bG9hZC5sb29wID8/IHZpZGVvU291cmNlLmxvb3A7XG4gICAgICB2aWRlb1NvdXJjZS5wbGF5aW5nID0gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgLy8gU1RPUF9WSURFT1xuICBmdW5jdGlvbiBoYW5kbGVTdG9wVmlkZW8oZW50aXR5OiBFbnRpdHksIF9wYXlsb2FkOiBBY3Rpb25QYXlsb2FkPEFjdGlvblR5cGUuU1RPUF9WSURFT19TVFJFQU0+KSB7XG4gICAgY29uc3QgdmlkZW9Tb3VyY2UgPSBWaWRlb1BsYXllci5nZXRNdXRhYmxlT3JOdWxsKGVudGl0eSk7XG4gICAgaWYgKHZpZGVvU291cmNlKSB7XG4gICAgICB2aWRlb1NvdXJjZS5wbGF5aW5nID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgLy8gUExBWV9BVURJT19TVFJFQU1cbiAgZnVuY3Rpb24gaGFuZGxlUGxheUF1ZGlvU3RyZWFtKFxuICAgIGVudGl0eTogRW50aXR5LFxuICAgIHBheWxvYWQ6IEFjdGlvblBheWxvYWQ8QWN0aW9uVHlwZS5QTEFZX0FVRElPX1NUUkVBTT4sXG4gICkge1xuICAgIGNvbnN0IHsgdXJsLCB2b2x1bWUgfSA9IHBheWxvYWQ7XG4gICAgQXVkaW9TdHJlYW0uY3JlYXRlT3JSZXBsYWNlKGVudGl0eSwge1xuICAgICAgdXJsLFxuICAgICAgcGxheWluZzogdHJ1ZSxcbiAgICAgIHZvbHVtZTogdm9sdW1lID8/IDEsXG4gICAgfSk7XG4gIH1cblxuICAvLyBTVE9QX0FVRElPX1NUUkVBTVxuICBmdW5jdGlvbiBoYW5kbGVTdG9wQXVkaW9TdHJlYW0oXG4gICAgZW50aXR5OiBFbnRpdHksXG4gICAgX3BheWxvYWQ6IEFjdGlvblBheWxvYWQ8QWN0aW9uVHlwZS5TVE9QX0FVRElPX1NUUkVBTT4sXG4gICkge1xuICAgIGNvbnN0IGF1ZGlvU291cmNlID0gQXVkaW9TdHJlYW0uZ2V0TXV0YWJsZU9yTnVsbChlbnRpdHkpO1xuICAgIGlmIChhdWRpb1NvdXJjZSkge1xuICAgICAgYXVkaW9Tb3VyY2UucGxheWluZyA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIC8vIFNIT1dfVEVYVFxuICBmdW5jdGlvbiBoYW5kbGVTaG93VGV4dChlbnRpdHk6IEVudGl0eSwgcGF5bG9hZDogQWN0aW9uUGF5bG9hZDxBY3Rpb25UeXBlLlNIT1dfVEVYVD4pIHtcbiAgICBjb25zdCB7IHRleHQsIGhpZGVBZnRlclNlY29uZHMsIGZvbnQsIGZvbnRTaXplLCB0ZXh0QWxpZ24gfSA9IHBheWxvYWQ7XG4gICAgLy8gQ3JlYXRlIGEgbmV3IGVudGl0eSBmb3IgdGhlIHRleHRcbiAgICBjb25zdCB0ZXh0RW50aXR5ID0gZW5naW5lLmFkZEVudGl0eSgpO1xuICAgIC8vIFNldCB0aGUgdGV4dCBlbnRpdHkgYXMgYSBjaGlsZCBvZiB0aGUgZW50aXR5IHRoYXQgY2FsbGVkIHRoZSBhY3Rpb25cbiAgICB0ZXh0RW50aXRpZXMuc2V0KGVudGl0eSwgdGV4dEVudGl0eSk7XG4gICAgY29uc3QgdWlUcmFuc2Zvcm1Db21wb25lbnQgPSBnZXRVSVRyYW5zZm9ybShVaVRyYW5zZm9ybSwgdGV4dEVudGl0eSk7XG4gICAgaWYgKHVpVHJhbnNmb3JtQ29tcG9uZW50KSB7XG4gICAgICB1aVRyYW5zZm9ybUNvbXBvbmVudC5wYXJlbnQgPSBlbnRpdHk7XG4gICAgICAvLyBTZXQgdGhlIHBvaW50ZXIgZmlsdGVyIHRvIG5vbmUsIGFsbG93aW5nIHBsYXllcnMgdG8gY29udGludWUgaW50ZXJhY3Rpbmcgd2l0aCB0aGUgc2NlbmVcbiAgICAgIHVpVHJhbnNmb3JtQ29tcG9uZW50LnBvaW50ZXJGaWx0ZXIgPSBQb2ludGVyRmlsdGVyTW9kZS5QRk1fTk9ORTtcbiAgICAgIFVpVGV4dC5jcmVhdGVPclJlcGxhY2UodGV4dEVudGl0eSwge1xuICAgICAgICB2YWx1ZTogdGV4dCxcbiAgICAgICAgZm9udDogZm9udCBhcyB1bmtub3duIGFzIEZvbnQsXG4gICAgICAgIGZvbnRTaXplLFxuICAgICAgICB0ZXh0QWxpZ246IHRleHRBbGlnbiBhcyB1bmtub3duIGFzIFRleHRBbGlnbk1vZGUsXG4gICAgICB9KTtcbiAgICAgIHN0YXJ0VGltZW91dChlbnRpdHksIEFjdGlvblR5cGUuSElERV9URVhULCBoaWRlQWZ0ZXJTZWNvbmRzLCAoKSA9PlxuICAgICAgICBoYW5kbGVIaWRlVGV4dChlbnRpdHksIHt9KSxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLy8gSElERV9URVhUXG4gIGZ1bmN0aW9uIGhhbmRsZUhpZGVUZXh0KGVudGl0eTogRW50aXR5LCBfcGF5bG9hZDogQWN0aW9uUGF5bG9hZDxBY3Rpb25UeXBlLkhJREVfVEVYVD4pIHtcbiAgICBjb25zdCB0ZXh0RW50aXR5ID0gdGV4dEVudGl0aWVzLmdldChlbnRpdHkpO1xuICAgIGlmICh0ZXh0RW50aXR5KSB7XG4gICAgICAvLyBEZWxldGUgdGV4dCBjb21wb25lbnRcbiAgICAgIFVpVGV4dC5kZWxldGVGcm9tKHRleHRFbnRpdHkpO1xuICAgICAgLy8gRGVsZXRlIHRyYW5zZm9ybSBjb21wb25lbnRcbiAgICAgIFVpVHJhbnNmb3JtLmRlbGV0ZUZyb20odGV4dEVudGl0eSk7XG4gICAgICAvLyBDbGVhciB0aW1lb3V0IGlmIGl0IGV4aXN0c1xuICAgICAgc3RvcFRpbWVvdXQoZW50aXR5LCBBY3Rpb25UeXBlLkhJREVfVEVYVCk7XG4gICAgICAvLyBEZWxldGUgdGV4dCBlbnRpdHkgZnJvbSB0aGUgbWFwXG4gICAgICB0ZXh0RW50aXRpZXMuZGVsZXRlKGVudGl0eSk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gZmluZEFjdGlvbkJ5TmFtZShlbnRpdHk6IEVudGl0eSwgbmFtZTogc3RyaW5nKSB7XG4gICAgY29uc3QgYWN0aW9ucyA9IEFjdGlvbnMuZ2V0T3JOdWxsKGVudGl0eSk7XG4gICAgcmV0dXJuIGFjdGlvbnM/LnZhbHVlLmZpbmQoJCA9PiAkLm5hbWUgPT09IG5hbWUpO1xuICB9XG5cbiAgLy8gU1RBUlRfREVMQVlcbiAgZnVuY3Rpb24gaGFuZGxlU3RhcnREZWxheShlbnRpdHk6IEVudGl0eSwgcGF5bG9hZDogQWN0aW9uUGF5bG9hZDxBY3Rpb25UeXBlLlNUQVJUX0RFTEFZPikge1xuICAgIGNvbnN0IHsgYWN0aW9ucywgdGltZW91dCB9ID0gcGF5bG9hZDtcbiAgICBmb3IgKGNvbnN0IGFjdGlvbk5hbWUgb2YgYWN0aW9ucykge1xuICAgICAgY29uc3QgYWN0aW9uID0gZmluZEFjdGlvbkJ5TmFtZShlbnRpdHksIGFjdGlvbk5hbWUpO1xuICAgICAgaWYgKGFjdGlvbikge1xuICAgICAgICBzdGFydFRpbWVvdXQoZW50aXR5LCBhY3Rpb25OYW1lLCB0aW1lb3V0LCAoKSA9PiB7XG4gICAgICAgICAgY29uc3QgYWN0aW9uRXZlbnRzID0gZ2V0QWN0aW9uRXZlbnRzKGVudGl0eSk7XG4gICAgICAgICAgYWN0aW9uRXZlbnRzLmVtaXQoYWN0aW9uLm5hbWUsIGdldFBheWxvYWQoYWN0aW9uKSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFNUT1BfREVMQVlcbiAgZnVuY3Rpb24gaGFuZGxlU3RvcERlbGF5KGVudGl0eTogRW50aXR5LCBwYXlsb2FkOiBBY3Rpb25QYXlsb2FkPEFjdGlvblR5cGUuU1RPUF9ERUxBWT4pIHtcbiAgICBjb25zdCB7IGFjdGlvbiB9ID0gcGF5bG9hZDtcbiAgICBzdG9wVGltZW91dChlbnRpdHksIGFjdGlvbik7XG4gIH1cblxuICAvLyBTVEFSVF9MT09QXG4gIGZ1bmN0aW9uIGhhbmRsZVN0YXJ0TG9vcChlbnRpdHk6IEVudGl0eSwgcGF5bG9hZDogQWN0aW9uUGF5bG9hZDxBY3Rpb25UeXBlLlNUQVJUX0xPT1A+KSB7XG4gICAgY29uc3QgeyBhY3Rpb25zLCBpbnRlcnZhbCB9ID0gcGF5bG9hZDtcbiAgICBmb3IgKGNvbnN0IGFjdGlvbk5hbWUgb2YgYWN0aW9ucykge1xuICAgICAgY29uc3QgYWN0aW9uID0gZmluZEFjdGlvbkJ5TmFtZShlbnRpdHksIGFjdGlvbk5hbWUpO1xuICAgICAgaWYgKGFjdGlvbikge1xuICAgICAgICBzdGFydEludGVydmFsKGVudGl0eSwgYWN0aW9uTmFtZSwgaW50ZXJ2YWwsICgpID0+IHtcbiAgICAgICAgICBjb25zdCBhY3Rpb25FdmVudHMgPSBnZXRBY3Rpb25FdmVudHMoZW50aXR5KTtcbiAgICAgICAgICBhY3Rpb25FdmVudHMuZW1pdChhY3Rpb24ubmFtZSwgZ2V0UGF5bG9hZChhY3Rpb24pKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gU1RPUF9MT09QXG4gIGZ1bmN0aW9uIGhhbmRsZVN0b3BMb29wKGVudGl0eTogRW50aXR5LCBwYXlsb2FkOiBBY3Rpb25QYXlsb2FkPEFjdGlvblR5cGUuU1RPUF9MT09QPikge1xuICAgIGNvbnN0IHsgYWN0aW9uIH0gPSBwYXlsb2FkO1xuICAgIHN0b3BJbnRlcnZhbChlbnRpdHksIGFjdGlvbik7XG4gIH1cblxuICAvLyBDTE9ORV9FTlRJVFlcbiAgZnVuY3Rpb24gaGFuZGxlQ2xvbmVFbnRpdHkoZW50aXR5OiBFbnRpdHksIHBheWxvYWQ6IEFjdGlvblBheWxvYWQ8QWN0aW9uVHlwZS5DTE9ORV9FTlRJVFk+KSB7XG4gICAgY29uc3QgeyBwb3NpdGlvbiB9ID0gcGF5bG9hZDtcblxuICAgIC8vIGNsb25lIGVudGl0eVxuICAgIGNvbnN0IHsgY2xvbmVkLCBlbnRpdGllcyB9ID0gY2xvbmUoZW50aXR5LCBlbmdpbmUsIFRyYW5zZm9ybSwgVHJpZ2dlcnMsIHNka0hlbHBlcnMpO1xuICAgIGZvciAoY29uc3QgY2xvbmVkIG9mIGVudGl0aWVzLnZhbHVlcygpKSB7XG4gICAgICAvLyBpbml0aWFsaXplXG4gICAgICBpbml0QWN0aW9ucyhjbG9uZWQpO1xuICAgICAgaW5pdFRyaWdnZXJzKGNsb25lZCk7XG5cbiAgICAgIGNvbnN0IHRyaWdnZXJFdmVudHMgPSBnZXRUcmlnZ2VyRXZlbnRzKGNsb25lZCk7XG4gICAgICB0cmlnZ2VyRXZlbnRzLmVtaXQoVHJpZ2dlclR5cGUuT05fQ0xPTkUpO1xuICAgIH1cblxuICAgIGNvbnN0IHRyYW5zZm9ybSA9IFRyYW5zZm9ybS5nZXRPckNyZWF0ZU11dGFibGUoY2xvbmVkKTtcbiAgICB0cmFuc2Zvcm0ucG9zaXRpb24gPSBwb3NpdGlvbjtcbiAgfVxuXG4gIC8vIFJFTU9WRV9FTlRJVFlcbiAgZnVuY3Rpb24gaGFuZGxlUmVtb3ZlRW50aXR5KGVudGl0eTogRW50aXR5LCBfcGF5bG9hZDogQWN0aW9uUGF5bG9hZDxBY3Rpb25UeXBlLlJFTU9WRV9FTlRJVFk+KSB7XG4gICAgLy8gUmVtb3ZlIGFsbCB0aW1lcnMgYmVmb3JlIHJlbW92ZSB0aGUgZW50aXR5XG4gICAgc3RvcEFsbFRpbWVvdXRzKGVudGl0eSk7XG4gICAgc3RvcEFsbEludGVydmFscyhlbnRpdHkpO1xuXG4gICAgY29uc3QgdHJlZSA9IGdldENvbXBvbmVudEVudGl0eVRyZWUoZW5naW5lLCBlbnRpdHksIFRyYW5zZm9ybSk7XG4gICAgZm9yIChjb25zdCBlbnRpdHlUb1JlbW92ZSBvZiB0cmVlKSB7XG4gICAgICBlbmdpbmUucmVtb3ZlRW50aXR5KGVudGl0eVRvUmVtb3ZlKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBnZXRVaVN0YWNrKGFsaWduOiBTY3JlZW5BbGlnbk1vZGUpIHtcbiAgICBjb25zdCBrZXkgPSBgJHthbGlnbi5hbGlnbkl0ZW1zfSwke2FsaWduLmp1c3RpZnlDb250ZW50fWA7XG5cbiAgICBpZiAoIXVpU3RhY2tzLmhhcyhrZXkpKSB7XG4gICAgICB1aVN0YWNrcy5zZXQoa2V5LCBlbmdpbmUuYWRkRW50aXR5KCkpO1xuICAgIH1cblxuICAgIHJldHVybiB1aVN0YWNrcy5nZXQoa2V5KSE7XG4gIH1cblxuICAvLyBTSE9XX0lNQUdFXG4gIGZ1bmN0aW9uIGhhbmRsZVNob3dJbWFnZShlbnRpdHk6IEVudGl0eSwgcGF5bG9hZDogQWN0aW9uUGF5bG9hZDxBY3Rpb25UeXBlLlNIT1dfSU1BR0U+KSB7XG4gICAgY29uc3QgeyBzcmMsIHRleHQsIGhpZGVBZnRlclNlY29uZHMsIGZvbnRTaXplLCBhbGlnbiwgaGVpZ2h0LCB3aWR0aCB9ID0gcGF5bG9hZDtcblxuICAgIC8vIEdldC9DcmVhdGUgYSBVSSB0cmFuc2Zvcm0gZm9yIHRoZSByb290IGVudGl0eVxuICAgIGdldFVJVHJhbnNmb3JtKFVpVHJhbnNmb3JtLCBlbmdpbmUuUm9vdEVudGl0eSk7XG5cbiAgICAvLyBHZXQgYSBVSSBTdGFjayBlbnRpdHlcbiAgICBjb25zdCBzY3JlZW5BbGlnbiA9IG1hcEFsaWduVG9TY3JlZW5BbGlnbihhbGlnbik7XG4gICAgY29uc3QgdWlTdGFjayA9IGdldFVpU3RhY2soc2NyZWVuQWxpZ24pO1xuXG4gICAgLy8gVE9ETzogRml4IGl0ZW1zIHdyYXBwaW5nXG4gICAgLy8gR2V0L0NyZWF0ZSBhIFVJIFRyYW5zZm9ybSBmb3IgdGhlIFVJIHN0YWNrXG4gICAgY29uc3QgdWlTdGFja1RyYW5zZm9ybUNvbXBvbmVudCA9IGdldFVJVHJhbnNmb3JtKFVpVHJhbnNmb3JtLCB1aVN0YWNrKTtcbiAgICB1aVN0YWNrVHJhbnNmb3JtQ29tcG9uZW50LmFsaWduSXRlbXMgPSBzY3JlZW5BbGlnbi5hbGlnbkl0ZW1zO1xuICAgIHVpU3RhY2tUcmFuc2Zvcm1Db21wb25lbnQuanVzdGlmeUNvbnRlbnQgPSBzY3JlZW5BbGlnbi5qdXN0aWZ5Q29udGVudDtcbiAgICB1aVN0YWNrVHJhbnNmb3JtQ29tcG9uZW50LnBvc2l0aW9uVHlwZSA9IFlHUG9zaXRpb25UeXBlLllHUFRfQUJTT0xVVEU7XG5cbiAgICAvLyBDcmVhdGUgYSBVSSBlbnRpdHkgYW5kIGEgVHJhbnNmb3JtIGNvbXBvbmVudCBmb3IgdGhlIGltYWdlXG4gICAgY29uc3QgaW1hZ2VFbnRpdHkgPSBlbmdpbmUuYWRkRW50aXR5KCk7XG4gICAgY29uc3QgaW1hZ2VUcmFuc2Zvcm1Db21wb25lbnQgPSBnZXRVSVRyYW5zZm9ybShcbiAgICAgIFVpVHJhbnNmb3JtLFxuICAgICAgaW1hZ2VFbnRpdHksXG4gICAgICB3aWR0aCxcbiAgICAgIGhlaWdodCxcbiAgICAgIFlHVW5pdC5ZR1VfUE9JTlQsXG4gICAgKTtcbiAgICBpbWFnZVRyYW5zZm9ybUNvbXBvbmVudC5wYXJlbnQgPSB1aVN0YWNrO1xuICAgIGltYWdlVHJhbnNmb3JtQ29tcG9uZW50LnBvaW50ZXJGaWx0ZXIgPSBQb2ludGVyRmlsdGVyTW9kZS5QRk1fQkxPQ0s7XG5cbiAgICAvLyBDcmVhdGUgQmFja2dyb3VuZCBDb21wb25lbnRcbiAgICBnZXRVSUJhY2tncm91bmQoVWlCYWNrZ3JvdW5kLCBpbWFnZUVudGl0eSwgc3JjKTtcblxuICAgIGlmICh0ZXh0KSB7XG4gICAgICAvLyBDcmVhdGUgVGV4dCBDb21wb25lbnRcbiAgICAgIC8vIFRPRE86IEZpeCB0ZXh0IHdyYXBwaW5nIGFuZCBzY3JvbGxpbmdcbiAgICAgIGdldFVJVGV4dChVaVRleHQsIGltYWdlRW50aXR5LCB0ZXh0LCBmb250U2l6ZSwgd2lkdGgpO1xuICAgIH1cblxuICAgIHBvaW50ZXJFdmVudHNTeXN0ZW0ub25Qb2ludGVyRG93bihcbiAgICAgIHtcbiAgICAgICAgZW50aXR5OiBpbWFnZUVudGl0eSxcbiAgICAgICAgb3B0czoge1xuICAgICAgICAgIGJ1dHRvbjogSW5wdXRBY3Rpb24uSUFfUE9JTlRFUixcbiAgICAgICAgICBob3ZlclRleHQ6ICdDbGljaycsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgKCkgPT4ge1xuICAgICAgICBsYXN0VWlFbnRpdHlDbGlja2VkLnNldChlbnRpdHksIGltYWdlRW50aXR5KTtcbiAgICAgICAgY29uc3QgdHJpZ2dlckV2ZW50cyA9IGdldFRyaWdnZXJFdmVudHMoZW50aXR5KTtcbiAgICAgICAgdHJpZ2dlckV2ZW50cy5lbWl0KFRyaWdnZXJUeXBlLk9OX0NMSUNLX0lNQUdFKTtcbiAgICAgIH0sXG4gICAgKTtcblxuICAgIGlmIChoaWRlQWZ0ZXJTZWNvbmRzKSB7XG4gICAgICBzdGFydFRpbWVvdXQoZW50aXR5LCBBY3Rpb25UeXBlLkhJREVfSU1BR0UsIGhpZGVBZnRlclNlY29uZHMsICgpID0+XG4gICAgICAgIGhhbmRsZUhpZGVJbWFnZShlbnRpdHksIHsgaW1hZ2VFbnRpdHk6IGltYWdlRW50aXR5IH0pLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvLyBISURFX0lNQUdFXG4gIGZ1bmN0aW9uIGhhbmRsZUhpZGVJbWFnZShlbnRpdHk6IEVudGl0eSwgcGF5bG9hZDogQWN0aW9uUGF5bG9hZDxBY3Rpb25UeXBlLkhJREVfSU1BR0U+KSB7XG4gICAgY29uc3QgeyBpbWFnZUVudGl0eSB9ID0gcGF5bG9hZDtcblxuICAgIGlmIChpbWFnZUVudGl0eSkge1xuICAgICAgZW5naW5lLnJlbW92ZUVudGl0eShpbWFnZUVudGl0eSBhcyBFbnRpdHkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBjbGlja2VkSW1hZ2UgPSBsYXN0VWlFbnRpdHlDbGlja2VkLmdldChlbnRpdHkpO1xuICAgICAgaWYgKGNsaWNrZWRJbWFnZSkge1xuICAgICAgICBlbmdpbmUucmVtb3ZlRW50aXR5KGNsaWNrZWRJbWFnZSk7XG4gICAgICAgIGxhc3RVaUVudGl0eUNsaWNrZWQuZGVsZXRlKGVudGl0eSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gREFNQUdFXG4gIGZ1bmN0aW9uIGhhbmRsZURhbWFnZShlbnRpdHk6IEVudGl0eSwgcGF5bG9hZDogQWN0aW9uUGF5bG9hZDxBY3Rpb25UeXBlLkRBTUFHRT4pIHtcbiAgICBjb25zdCB7IHJhZGl1cywgbGF5ZXIsIGhpdHMgfSA9IHBheWxvYWQ7XG4gICAgY29uc3QgZW50aXR5UG9zaXRpb24gPSBBdmF0YXJBdHRhY2guaGFzKGVudGl0eSlcbiAgICAgID8gZ2V0UGxheWVyUG9zaXRpb24oKVxuICAgICAgOiBnZXRXb3JsZFBvc2l0aW9uKGVudGl0eSk7XG5cbiAgICBjb25zdCBnZXRSb290ID0gKGVudGl0eTogRW50aXR5KTogRW50aXR5ID0+IHtcbiAgICAgIGNvbnN0IHBhcmVudCA9IGdldEVudGl0eVBhcmVudChlbnRpdHkpO1xuICAgICAgcmV0dXJuICFwYXJlbnQgPyBlbnRpdHkgOiBnZXRSb290KHBhcmVudCk7XG4gICAgfTtcblxuICAgIGZvciAoY29uc3QgdGFyZ2V0IG9mIGRhbWFnZVRhcmdldHMpIHtcbiAgICAgIGNvbnN0IHRhcmdldFBvc2l0aW9uID0gZ2V0V29ybGRQb3NpdGlvbih0YXJnZXQpO1xuICAgICAgY29uc3QgZGlzdGFuY2UgPSBWZWN0b3IzLmRpc3RhbmNlKGVudGl0eVBvc2l0aW9uLCB0YXJnZXRQb3NpdGlvbik7XG5cbiAgICAgIC8vIGF2b2lkIGNhdXNpbmcgZGFtYWdlIHRvIHRoZSBlbnRpdHkgaXRzZWxmIG9yIGl0cyBjaGlsZHJlblxuICAgICAgY29uc3QgZW50aXR5VHJlZSA9IEFycmF5LmZyb20oZ2V0Q29tcG9uZW50RW50aXR5VHJlZShlbmdpbmUsIGVudGl0eSwgVHJhbnNmb3JtKSk7XG4gICAgICBjb25zdCBpc1BhcnRPZkVudGl0eVRyZWUgPSBlbnRpdHlUcmVlLnNvbWUoJCA9PiAkID09PSB0YXJnZXQpO1xuICAgICAgaWYgKGlzUGFydE9mRW50aXR5VHJlZSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKGxheWVyKSB7XG4gICAgICAgIGlmIChsYXllciA9PT0gUHJveGltaXR5TGF5ZXIuUExBWUVSKSB7XG4gICAgICAgICAgY29uc3Qgcm9vdCA9IGdldFJvb3QodGFyZ2V0KTtcbiAgICAgICAgICBpZiAocm9vdCAhPT0gZW5naW5lLlBsYXllckVudGl0eSAmJiByb290ICE9PSBlbmdpbmUuQ2FtZXJhRW50aXR5KSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAobGF5ZXIgPT09IFByb3hpbWl0eUxheWVyLk5PTl9QTEFZRVIpIHtcbiAgICAgICAgICBjb25zdCByb290ID0gZ2V0Um9vdCh0YXJnZXQpO1xuICAgICAgICAgIGlmIChyb290ID09PSBlbmdpbmUuUGxheWVyRW50aXR5IHx8IHJvb3QgPT09IGVuZ2luZS5DYW1lcmFFbnRpdHkpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGRpc3RhbmNlIDw9IHJhZGl1cykge1xuICAgICAgICBjb25zdCB0b3RhbCA9IGhpdHMgPT09IHVuZGVmaW5lZCA/IDEgOiBNYXRoLm1heChoaXRzLCAxKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0b3RhbDsgaSsrKSB7XG4gICAgICAgICAgY29uc3QgdHJpZ2dlckV2ZW50cyA9IGdldFRyaWdnZXJFdmVudHModGFyZ2V0KTtcbiAgICAgICAgICB0cmlnZ2VyRXZlbnRzLmVtaXQoVHJpZ2dlclR5cGUuT05fREFNQUdFKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIE1PVkVfUExBWUVSX0hFUkVcbiAgZnVuY3Rpb24gaGFuZGxlTW92ZVBsYXllckhlcmUoXG4gICAgZW50aXR5OiBFbnRpdHksXG4gICAgX3BheWxvYWQ6IEFjdGlvblBheWxvYWQ8QWN0aW9uVHlwZS5NT1ZFX1BMQVlFUl9IRVJFPixcbiAgKSB7XG4gICAgY29uc3QgaGVyZSA9IGdldFdvcmxkUG9zaXRpb24oZW50aXR5KTtcbiAgICBjb25zdCByb3RhdGlvbiA9IGdldFdvcmxkUm90YXRpb24oZW50aXR5KTtcblxuICAgIC8vIFdlIFdhbnQgdGhlIHBsYXllciB0byBsb29rIDFtIGluIGZyb250IG9mIHRoZSBlbnRpdHlcbiAgICBjb25zdCBmb3J3YXJkID0gVmVjdG9yMy5Gb3J3YXJkKCk7XG4gICAgY29uc3Qgcm90YXRlZERpcmVjdGlvbiA9IFZlY3RvcjMucm90YXRlKGZvcndhcmQsIHJvdGF0aW9uKTtcbiAgICBjb25zdCBtb3ZlRGVsdGEgPSBWZWN0b3IzLnNjYWxlKHJvdGF0ZWREaXJlY3Rpb24sIDEpO1xuXG4gICAgdm9pZCBtb3ZlUGxheWVyVG8oe1xuICAgICAgbmV3UmVsYXRpdmVQb3NpdGlvbjogaGVyZSxcbiAgICAgIGF2YXRhclRhcmdldDogVmVjdG9yMy5hZGQoaGVyZSwgbW92ZURlbHRhKSxcbiAgICB9KTtcblxuICAgIGNvbnN0IHRyaWdnZXJFdmVudHMgPSBnZXRUcmlnZ2VyRXZlbnRzKGVudGl0eSk7XG4gICAgdHJpZ2dlckV2ZW50cy5lbWl0KFRyaWdnZXJUeXBlLk9OX1BMQVlFUl9TUEFXTik7XG4gIH1cblxuICAvLyBQTEFDRV9PTl9QTEFZRVJcbiAgZnVuY3Rpb24gaGFuZGxlUGxhY2VPblBsYXllcihcbiAgICBlbnRpdHk6IEVudGl0eSxcbiAgICBfcGF5bG9hZDogQWN0aW9uUGF5bG9hZDxBY3Rpb25UeXBlLlBMQUNFX09OX1BMQVlFUj4sXG4gICkge1xuICAgIGNvbnN0IHRyYW5zZm9ybSA9IFRyYW5zZm9ybS5nZXRNdXRhYmxlT3JOdWxsKGVudGl0eSk7XG4gICAgY29uc3QgcGxheWVyID0gVHJhbnNmb3JtLmdldE9yTnVsbChlbmdpbmUuUGxheWVyRW50aXR5KTtcbiAgICBpZiAodHJhbnNmb3JtICYmIHBsYXllcikge1xuICAgICAgdHJhbnNmb3JtLnBvc2l0aW9uID0gcGxheWVyLnBvc2l0aW9uO1xuICAgIH1cbiAgfVxuXG4gIC8vIFJPVEFURV9BU19QTEFZRVJcbiAgZnVuY3Rpb24gaGFuZGxlUm90YXRlQXNQbGF5ZXIoXG4gICAgZW50aXR5OiBFbnRpdHksXG4gICAgX3BheWxvYWQ6IEFjdGlvblBheWxvYWQ8QWN0aW9uVHlwZS5ST1RBVEVfQVNfUExBWUVSPixcbiAgKSB7XG4gICAgY29uc3QgdHJhbnNmb3JtID0gVHJhbnNmb3JtLmdldE11dGFibGVPck51bGwoZW50aXR5KTtcbiAgICBjb25zdCBwbGF5ZXIgPSBUcmFuc2Zvcm0uZ2V0T3JOdWxsKGVuZ2luZS5QbGF5ZXJFbnRpdHkpO1xuICAgIGlmICh0cmFuc2Zvcm0gJiYgcGxheWVyKSB7XG4gICAgICB0cmFuc2Zvcm0ucm90YXRpb24gPSBwbGF5ZXIucm90YXRpb247XG4gICAgfVxuICB9XG5cbiAgLy8gUExBQ0VfT05fQ0FNRVJBXG4gIGZ1bmN0aW9uIGhhbmRsZVBsYWNlT25DYW1lcmEoXG4gICAgZW50aXR5OiBFbnRpdHksXG4gICAgX3BheWxvYWQ6IEFjdGlvblBheWxvYWQ8QWN0aW9uVHlwZS5QTEFDRV9PTl9DQU1FUkE+LFxuICApIHtcbiAgICBjb25zdCB0cmFuc2Zvcm0gPSBUcmFuc2Zvcm0uZ2V0TXV0YWJsZU9yTnVsbChlbnRpdHkpO1xuICAgIGNvbnN0IGNhbWVyYSA9IFRyYW5zZm9ybS5nZXRPck51bGwoZW5naW5lLkNhbWVyYUVudGl0eSk7XG4gICAgaWYgKHRyYW5zZm9ybSAmJiBjYW1lcmEpIHtcbiAgICAgIHRyYW5zZm9ybS5wb3NpdGlvbiA9IGNhbWVyYS5wb3NpdGlvbjtcbiAgICB9XG4gIH1cblxuICAvLyBST1RBVEVfQVNfQ0FNRVJBXG4gIGZ1bmN0aW9uIGhhbmRsZVJvdGF0ZUFzQ2FtZXJhKFxuICAgIGVudGl0eTogRW50aXR5LFxuICAgIF9wYXlsb2FkOiBBY3Rpb25QYXlsb2FkPEFjdGlvblR5cGUuUk9UQVRFX0FTX0NBTUVSQT4sXG4gICkge1xuICAgIGNvbnN0IHRyYW5zZm9ybSA9IFRyYW5zZm9ybS5nZXRNdXRhYmxlT3JOdWxsKGVudGl0eSk7XG4gICAgY29uc3QgY2FtZXJhID0gVHJhbnNmb3JtLmdldE9yTnVsbChlbmdpbmUuQ2FtZXJhRW50aXR5KTtcbiAgICBpZiAodHJhbnNmb3JtICYmIGNhbWVyYSkge1xuICAgICAgdHJhbnNmb3JtLnJvdGF0aW9uID0gY2FtZXJhLnJvdGF0aW9uO1xuICAgIH1cbiAgfVxuXG4gIC8vIFNFVF9QT1NJVElPTlxuICBmdW5jdGlvbiBoYW5kbGVTZXRQb3NpdGlvbihlbnRpdHk6IEVudGl0eSwgcGF5bG9hZDogQWN0aW9uUGF5bG9hZDxBY3Rpb25UeXBlLlNFVF9QT1NJVElPTj4pIHtcbiAgICBjb25zdCB0cmFuc2Zvcm0gPSBUcmFuc2Zvcm0uZ2V0TXV0YWJsZU9yTnVsbChlbnRpdHkpO1xuICAgIGlmICh0cmFuc2Zvcm0pIHtcbiAgICAgIGlmIChwYXlsb2FkLnJlbGF0aXZlKSB7XG4gICAgICAgIHRyYW5zZm9ybS5wb3NpdGlvbiA9IFZlY3RvcjMuYWRkKFxuICAgICAgICAgIHRyYW5zZm9ybS5wb3NpdGlvbixcbiAgICAgICAgICBWZWN0b3IzLmNyZWF0ZShwYXlsb2FkLngsIHBheWxvYWQueSwgcGF5bG9hZC56KSxcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRyYW5zZm9ybS5wb3NpdGlvbiA9IFZlY3RvcjMuY3JlYXRlKHBheWxvYWQueCwgcGF5bG9hZC55LCBwYXlsb2FkLnopO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFNFVF9ST1RBVElPTlxuICBmdW5jdGlvbiBoYW5kbGVTZXRSb3RhdGlvbihlbnRpdHk6IEVudGl0eSwgcGF5bG9hZDogQWN0aW9uUGF5bG9hZDxBY3Rpb25UeXBlLlNFVF9ST1RBVElPTj4pIHtcbiAgICBjb25zdCB0cmFuc2Zvcm0gPSBUcmFuc2Zvcm0uZ2V0TXV0YWJsZU9yTnVsbChlbnRpdHkpO1xuICAgIGlmICh0cmFuc2Zvcm0pIHtcbiAgICAgIGlmIChwYXlsb2FkLnJlbGF0aXZlKSB7XG4gICAgICAgIHRyYW5zZm9ybS5yb3RhdGlvbiA9IFF1YXRlcm5pb24ubXVsdGlwbHkoXG4gICAgICAgICAgdHJhbnNmb3JtLnJvdGF0aW9uLFxuICAgICAgICAgIFF1YXRlcm5pb24uZnJvbUV1bGVyRGVncmVlcyhwYXlsb2FkLngsIHBheWxvYWQueSwgcGF5bG9hZC56KSxcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRyYW5zZm9ybS5yb3RhdGlvbiA9IFF1YXRlcm5pb24uZnJvbUV1bGVyRGVncmVlcyhwYXlsb2FkLngsIHBheWxvYWQueSwgcGF5bG9hZC56KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBTRVRfU0NBTEVcbiAgZnVuY3Rpb24gaGFuZGxlU2V0U2NhbGUoZW50aXR5OiBFbnRpdHksIHBheWxvYWQ6IEFjdGlvblBheWxvYWQ8QWN0aW9uVHlwZS5TRVRfU0NBTEU+KSB7XG4gICAgY29uc3QgdHJhbnNmb3JtID0gVHJhbnNmb3JtLmdldE11dGFibGVPck51bGwoZW50aXR5KTtcbiAgICBpZiAodHJhbnNmb3JtKSB7XG4gICAgICBpZiAocGF5bG9hZC5yZWxhdGl2ZSkge1xuICAgICAgICB0cmFuc2Zvcm0uc2NhbGUgPSBWZWN0b3IzLmFkZChcbiAgICAgICAgICB0cmFuc2Zvcm0uc2NhbGUsXG4gICAgICAgICAgVmVjdG9yMy5jcmVhdGUocGF5bG9hZC54LCBwYXlsb2FkLnksIHBheWxvYWQueiksXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0cmFuc2Zvcm0uc2NhbGUgPSBWZWN0b3IzLmNyZWF0ZShwYXlsb2FkLngsIHBheWxvYWQueSwgcGF5bG9hZC56KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBGT0xMT1dfUExBWUVSXG4gIGZ1bmN0aW9uIGhhbmRsZUZvbGxvd1BsYXllcihlbnRpdHk6IEVudGl0eSwgcGF5bG9hZDogQWN0aW9uUGF5bG9hZDxBY3Rpb25UeXBlLkZPTExPV19QTEFZRVI+KSB7XG4gICAgY29uc3QgeyBzcGVlZCwgeCwgeSwgeiwgbWluRGlzdGFuY2UgfSA9IHBheWxvYWQ7XG4gICAgZm9sbG93TWFwLnNldChlbnRpdHksIHtcbiAgICAgIHRhcmdldDogZW5naW5lLlBsYXllckVudGl0eSxcbiAgICAgIHNwZWVkLFxuICAgICAgbWluRGlzdGFuY2UsXG4gICAgICBheGVzOiB7IHgsIHksIHogfSxcbiAgICB9KTtcbiAgfVxuXG4gIC8vIFNUT1BfRk9MTE9XSU5HX1BMQVlFUlxuICBmdW5jdGlvbiBoYW5kbGVTdG9wRm9sbG93aW5nUGxheWVyKFxuICAgIGVudGl0eTogRW50aXR5LFxuICAgIF9wYXlsb2FkOiBBY3Rpb25QYXlsb2FkPEFjdGlvblR5cGUuU1RPUF9GT0xMT1dJTkdfUExBWUVSPixcbiAgKSB7XG4gICAgZm9sbG93TWFwLmRlbGV0ZShlbnRpdHkpO1xuICB9XG5cbiAgZnVuY3Rpb24gaGFuZGxlUmFuZG9tKGVudGl0eTogRW50aXR5LCBwYXlsb2FkOiBBY3Rpb25QYXlsb2FkPEFjdGlvblR5cGUuUkFORE9NPikge1xuICAgIGNvbnN0IHsgYWN0aW9ucyB9ID0gcGF5bG9hZDtcbiAgICBjb25zdCBhY3Rpb25FdmVudHMgPSBnZXRBY3Rpb25FdmVudHMoZW50aXR5KTtcbiAgICBjb25zdCBhY3Rpb25OYW1lID0gYWN0aW9uc1tNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBhY3Rpb25zLmxlbmd0aCldO1xuICAgIGNvbnN0IGFjdGlvbiA9IGZpbmRBY3Rpb25CeU5hbWUoZW50aXR5LCBhY3Rpb25OYW1lKTtcbiAgICBpZiAoYWN0aW9uKSB7XG4gICAgICBhY3Rpb25FdmVudHMuZW1pdChhY3Rpb24ubmFtZSwgZ2V0UGF5bG9hZChhY3Rpb24pKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBoYW5kbGVCYXRjaChlbnRpdHk6IEVudGl0eSwgcGF5bG9hZDogQWN0aW9uUGF5bG9hZDxBY3Rpb25UeXBlLkJBVENIPikge1xuICAgIGNvbnN0IHsgYWN0aW9ucyB9ID0gcGF5bG9hZDtcbiAgICBjb25zdCBhY3Rpb25FdmVudHMgPSBnZXRBY3Rpb25FdmVudHMoZW50aXR5KTtcbiAgICBmb3IgKGNvbnN0IGFjdGlvbk5hbWUgb2YgYWN0aW9ucykge1xuICAgICAgY29uc3QgYWN0aW9uID0gZmluZEFjdGlvbkJ5TmFtZShlbnRpdHksIGFjdGlvbk5hbWUpO1xuICAgICAgaWYgKGFjdGlvbikge1xuICAgICAgICBhY3Rpb25FdmVudHMuZW1pdChhY3Rpb24ubmFtZSwgZ2V0UGF5bG9hZChhY3Rpb24pKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBoYW5kbGVIZWFsUGxheWVyKGVudGl0eTogRW50aXR5LCBwYXlsb2FkOiBBY3Rpb25QYXlsb2FkPEFjdGlvblR5cGUuSEVBTF9QTEFZRVI+KSB7XG4gICAgY29uc3QgeyBtdWx0aXBsaWVyIH0gPSBwYXlsb2FkO1xuXG4gICAgY29uc3QgZ2V0Um9vdCA9IChlbnRpdHk6IEVudGl0eSk6IEVudGl0eSA9PiB7XG4gICAgICBjb25zdCBwYXJlbnQgPSBnZXRFbnRpdHlQYXJlbnQoZW50aXR5KTtcbiAgICAgIHJldHVybiAhcGFyZW50ID8gZW50aXR5IDogZ2V0Um9vdChwYXJlbnQpO1xuICAgIH07XG5cbiAgICBmb3IgKGNvbnN0IHRhcmdldCBvZiBoZWFsVGFyZ2V0cykge1xuICAgICAgY29uc3Qgcm9vdCA9IGdldFJvb3QodGFyZ2V0KTtcbiAgICAgIGlmIChyb290ID09PSBlbmdpbmUuUGxheWVyRW50aXR5KSB7XG4gICAgICAgIGNvbnN0IHRyaWdnZXJFdmVudHMgPSBnZXRUcmlnZ2VyRXZlbnRzKHRhcmdldCk7XG4gICAgICAgIGNvbnN0IHRvdGFsID0gTWF0aC5tYXgobXVsdGlwbGllciA/PyAxLCAxKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0b3RhbDsgaSsrKSB7XG4gICAgICAgICAgdHJpZ2dlckV2ZW50cy5lbWl0KFRyaWdnZXJUeXBlLk9OX0hFQUxfUExBWUVSKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGZ1bmN0aW9uIHJlcXVlc3QodXJsOiBzdHJpbmcsIGluaXQ/OiBGbGF0RmV0Y2hJbml0KSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgc2lnbmVkRmV0Y2goe1xuICAgICAgICB1cmw6IHVybCxcbiAgICAgICAgLi4uKGluaXQgPyB7IGluaXQgfSA6IHt9KSxcbiAgICAgIH0pO1xuICAgICAgaWYgKCFyZXNwb25zZSB8fCAhcmVzcG9uc2UuYm9keSkge1xuICAgICAgICAvLyBUT0RPOiBTaG93IGFuIGVycm9yIFByb21wdFxuICAgICAgICAvLyAnRXJyb3IgZmV0Y2hpbmcgY2FtcGFpZ24gZGF0YSdcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGpzb24gPSBhd2FpdCBKU09OLnBhcnNlKHJlc3BvbnNlLmJvZHkpO1xuXG4gICAgICBpZiAoIWpzb24ub2spIHtcbiAgICAgICAgLy8gVE9ETzogU2hvdyBhbiBlcnJvciBQcm9tcHRcbiAgICAgICAgLy8gJ0Vycm9yIGZldGNoaW5nIGNhbXBhaWduIGRhdGEnXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4ganNvbi5kYXRhO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAvLyBUT0RPOiBTaG93IGFuIGVycm9yIFByb21wdFxuICAgICAgLy8gJ0Vycm9yIGZldGNoaW5nIGNhbXBhaWduIGRhdGEnXG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICBhc3luYyBmdW5jdGlvbiBmZXRjaENhbXBhaWduc0J5RGlzcGVuc2VyS2V5KGRpc3BlbnNlcktleTogc3RyaW5nKSB7XG4gICAgY29uc3QgdXJsID0gYCR7UkVXQVJEU19TRVJWRVJfVVJMfS9hcGkvY2FtcGFpZ25zL2tleXM/Y2FtcGFpZ25fa2V5PSR7ZW5jb2RlVVJJQ29tcG9uZW50KGRpc3BlbnNlcktleSl9YDtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHJlcXVlc3QodXJsKTtcbiAgICByZXR1cm4gcmVzcG9uc2U7XG4gIH1cblxuICBhc3luYyBmdW5jdGlvbiBmZXRjaENhcHRjaGEoKSB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCByZXF1ZXN0KGAke1JFV0FSRFNfU0VSVkVSX1VSTH0vYXBpL2NhcHRjaGFgLCB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgIH0sXG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3BvbnNlO1xuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24gcmVxdWVzdFRva2VuKFxuICAgIGRpc3BlbnNlcktleTogc3RyaW5nLFxuICAgIGNhcHRjaGE/OiB7XG4gICAgICBpZDogc3RyaW5nO1xuICAgICAgdmFsdWU6IHN0cmluZztcbiAgICB9LFxuICApIHtcbiAgICBjb25zdCB1cmwgPSBgJHtSRVdBUkRTX1NFUlZFUl9VUkx9L2FwaS9yZXdhcmRzYDtcbiAgICBjb25zdCByZWFsbSA9IGF3YWl0IGdldFJlYWxtKHt9KTtcbiAgICBjb25zdCBwbGF5ZXIgPSBwbGF5ZXJzSGVscGVyPy5nZXRQbGF5ZXIoKTtcblxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgcmVxdWVzdCh1cmwsIHtcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgaGVhZGVyczoge1xuICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgfSxcbiAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgY2FtcGFpZ25fa2V5OiBkaXNwZW5zZXJLZXksXG4gICAgICAgIGJlbmVmaWNpYXJ5OiAhcGxheWVyPy5pc0d1ZXN0ID8gcGxheWVyPy51c2VySWQgOiAnJyxcbiAgICAgICAgY2F0YWx5c3Q6IHJlYWxtLnJlYWxtSW5mbyA/IHJlYWxtLnJlYWxtSW5mby5iYXNlVXJsIDogJycsXG4gICAgICAgIC4uLihjYXB0Y2hhID8geyBjYXB0Y2hhX2lkOiBjYXB0Y2hhLmlkLCBjYXB0Y2hhX3ZhbHVlOiBjYXB0Y2hhLnZhbHVlIH0gOiB7fSksXG4gICAgICB9KSxcbiAgICB9KTtcbiAgICByZXR1cm4gcmVzcG9uc2U7XG4gIH1cblxuICBmdW5jdGlvbiBoYW5kbGVDbGFpbUFpcmRyb3AoZW50aXR5OiBFbnRpdHksIF9wYXlsb2FkOiBBY3Rpb25QYXlsb2FkPEFjdGlvblR5cGUuQ0xBSU1fQUlSRFJPUD4pIHtcbiAgICBjb25zdCByZXdhcmRzID0gUmV3YXJkcy5nZXRPck51bGwoZW50aXR5KTtcbiAgICBpZiAoIXJld2FyZHMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB7IHRlc3RNb2RlLCBjYW1wYWlnbklkLCBkaXNwZW5zZXJLZXkgfSA9IHJld2FyZHM7XG5cbiAgICBpZiAodGVzdE1vZGUpIHtcbiAgICAgIC8vIFRPRE86IFNob3cgYW4gVUkgaW5kaWNhdGluZyB0ZXN0aW5nIG1vZGVcbiAgICAgIC8vICdIYW5kbGUgQ2xhaW0gQWlyZHJvcCBpbiBUZXN0IE1vZGUgOiknXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZmV0Y2hDYW1wYWlnbnNCeURpc3BlbnNlcktleShkaXNwZW5zZXJLZXkpXG4gICAgICAudGhlbihjYW1wYWlnbnMgPT4ge1xuICAgICAgICBjb25zdCBjYW1wYWlnbiA9IGNhbXBhaWducy5maW5kKChjOiBhbnkpID0+IGMuY2FtcGFpZ25faWQgPT09IGNhbXBhaWduSWQpO1xuICAgICAgICBpZiAoY2FtcGFpZ24gJiYgY2FtcGFpZ24uZW5hYmxlZCkge1xuICAgICAgICAgIGlmIChjYW1wYWlnbi5yZXF1aXJlc19jYXB0Y2hhKSB7XG4gICAgICAgICAgICBmZXRjaENhcHRjaGEoKVxuICAgICAgICAgICAgICAudGhlbihjYXB0Y2hhID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoY2FwdGNoYSkge1xuICAgICAgICAgICAgICAgICAgX3Nob3dDYXB0Y2hhUHJvbXB0KGVudGl0eSwge1xuICAgICAgICAgICAgICAgICAgICBjYW1wYWlnbklkLFxuICAgICAgICAgICAgICAgICAgICBkaXNwZW5zZXJLZXksXG4gICAgICAgICAgICAgICAgICAgIGNhcHRjaGEsXG4gICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIC5jYXRjaChfZXJyb3IgPT4ge1xuICAgICAgICAgICAgICAgIC8vIFRPRE86IFNob3cgYW4gZXJyb3IgUHJvbXB0XG4gICAgICAgICAgICAgICAgLy8gJ0Vycm9yIGZldGNoaW5nIGNhcHRjaGEnXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXF1ZXN0VG9rZW4oZGlzcGVuc2VyS2V5KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICAuY2F0Y2goX2Vycm9yID0+IHtcbiAgICAgICAgLy8gVE9ETzogU2hvdyBhbiBlcnJvciBQcm9tcHRcbiAgICAgICAgLy8gJ0Vycm9yIGZldGNoaW5nIGNhbXBhaWduIGRhdGEnLCBlcnJvclxuICAgICAgfSk7XG4gIH1cblxuICBmdW5jdGlvbiBfc2hvd0NhcHRjaGFQcm9tcHQoXG4gICAgX2VudGl0eTogRW50aXR5LFxuICAgIGRhdGE6IHsgY2FtcGFpZ25JZDogc3RyaW5nOyBkaXNwZW5zZXJLZXk6IHN0cmluZzsgY2FwdGNoYTogYW55IH0sXG4gICkge1xuICAgIHNob3dDYXB0Y2hhUHJvbXB0KFxuICAgICAgZW5naW5lLFxuICAgICAgVWlUcmFuc2Zvcm0sXG4gICAgICBVaUJhY2tncm91bmQsXG4gICAgICBVaVRleHQsXG4gICAgICBVaUlucHV0LFxuICAgICAgVWlJbnB1dFJlc3VsdCxcbiAgICAgIHBvaW50ZXJFdmVudHNTeXN0ZW0sXG4gICAgICBkYXRhLFxuICAgICAgaW5wdXRUZXh0ID0+IHtcbiAgICAgICAgLy8gUmVxdWVzdCB0b2tlbiB3aXRoIGNhcHRjaGEgdmFsaWRhdGlvblxuICAgICAgICByZXF1ZXN0VG9rZW4oZGF0YS5kaXNwZW5zZXJLZXksIHtcbiAgICAgICAgICBpZDogZGF0YS5jYXB0Y2hhLmlkLFxuICAgICAgICAgIHZhbHVlOiBpbnB1dFRleHQsXG4gICAgICAgIH0pLnRoZW4oKHRva2VuOiBhbnkpID0+IHtcbiAgICAgICAgICBpZiAodG9rZW4pIHtcbiAgICAgICAgICAgIC8vICdUb2tlbiByZXF1ZXN0ZWQgc3VjY2Vzc2Z1bGx5JywgeyB0b2tlbiB9XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgKTtcbiAgfVxufVxuIl19
|
|
@@ -34,8 +34,8 @@ export declare const BTN_BORDER_COLOR: {
|
|
|
34
34
|
disabled: Color4.MutableColor4;
|
|
35
35
|
};
|
|
36
36
|
};
|
|
37
|
-
type ButtonVariant = 'primary' | 'secondary' | 'text';
|
|
38
|
-
interface CompositeButtonProps extends Omit<UiButtonProps, 'value' | 'variant'> {
|
|
37
|
+
export type ButtonVariant = 'primary' | 'secondary' | 'text';
|
|
38
|
+
export interface CompositeButtonProps extends Omit<UiButtonProps, 'value' | 'variant'> {
|
|
39
39
|
id: string;
|
|
40
40
|
value?: string;
|
|
41
41
|
icon?: string;
|
|
@@ -49,4 +49,3 @@ interface CompositeButtonProps extends Omit<UiButtonProps, 'value' | 'variant'>
|
|
|
49
49
|
labelTransform?: UiTransformProps;
|
|
50
50
|
}
|
|
51
51
|
export declare const Button: (props: CompositeButtonProps) => ReactEcs.JSX.Element;
|
|
52
|
-
export {};
|