Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@interactjs/core

Package Overview
Dependencies
Maintainers
2
Versions
137
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@interactjs/core - npm Package Compare versions

Comparing version 1.4.0-rc.9 to 1.4.0-rc.10

README.md

6

Interactable.js

@@ -46,6 +46,6 @@ import * as arr from '@interactjs/utils/arr';

updatePerActionListeners(actionName, prev, cur) {
if (is.array(prev)) {
if (is.array(prev) || is.object(prev)) {
this.off(actionName, prev);
}
if (is.array(cur)) {
if (is.array(cur) || is.object(cur)) {
this.on(actionName, cur);

@@ -328,2 +328,2 @@ }

export default Interactable;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSW50ZXJhY3RhYmxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiSW50ZXJhY3RhYmxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxHQUFHLE1BQU0sdUJBQXVCLENBQUE7QUFDNUMsT0FBTyxPQUFPLE1BQU0sMkJBQTJCLENBQUE7QUFDL0MsT0FBTyxLQUFLLE1BQU0seUJBQXlCLENBQUE7QUFDM0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxNQUFNLDRCQUE0QixDQUFBO0FBQ25HLE9BQU8sTUFBTSxNQUFNLDBCQUEwQixDQUFBO0FBQzdDLE9BQU8sTUFBTSxNQUFNLDBCQUEwQixDQUFBO0FBQzdDLE9BQU8sS0FBSyxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFDMUMsT0FBTyxrQkFBa0IsTUFBTSxzQ0FBc0MsQ0FBQTtBQUNyRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUE7QUFFcEQsT0FBTyxTQUFTLE1BQU0sYUFBYSxDQUFBO0FBS25DLE1BQU07QUFDTixNQUFNLE9BQU8sWUFBWTtJQWlCdkIsTUFBTTtJQUNOLFlBQWEsTUFBdUIsRUFBRSxPQUFZLEVBQUUsY0FBa0M7UUFON0UsV0FBTSxHQUFHLElBQUksU0FBUyxFQUFFLENBQUE7UUFPL0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFBO1FBQy9CLElBQUksQ0FBQyxNQUFNLEdBQUssTUFBTSxDQUFBO1FBQ3RCLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDLE9BQU8sSUFBSSxjQUFjLENBQUE7UUFDakQsSUFBSSxDQUFDLElBQUksR0FBTyxTQUFTLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUN2RSxJQUFJLENBQUMsSUFBSSxHQUFPLElBQUksQ0FB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UyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsTUFBTTtvQkFDdEMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsUUFBUSxFQUFFO29CQUMzQyxTQUFTLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7b0JBQ2hDLFNBQVMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtvQkFDL0IsU0FBUyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO29CQUVoQyxzQ0FBc0M7b0JBQ3RDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRTt3QkFDL0IsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQTtxQkFDdkI7aUJBQ0Y7Z0JBRUQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQTtnQkFDM0QsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLENBQUE7YUFDcEU7U0FDRjthQUNJO1lBQ0gsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBYyxFQUFFLEtBQUssQ0FBQyxDQUFBO1NBQzFDO0lBQ0gsQ0FBQztDQUNGO0FBRUQsZUFBZSxZQUFZLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBhcnIgZnJvbSAnQGludGVyYWN0anMvdXRpbHMvYXJyJ1xuaW1wb3J0IGJyb3dzZXIgZnJvbSAnQGludGVyYWN0anMvdXRpbHMvYnJvd3NlcidcbmltcG9ydCBjbG9uZSBmcm9tICdAaW50ZXJhY3Rqcy91dGlscy9jbG9uZSdcbmltcG9ydCB7IGdldEVsZW1lbnRSZWN0LCBtYXRjaGVzVXBUbywgbm9kZUNvbnRhaW5zLCB0cnlTZWxlY3RvciB9IGZyb20gJ0BpbnRlcmFjdGpzL3V0aWxzL2RvbVV0aWxzJ1xuaW1wb3J0IGV2ZW50cyBmcm9tICdAaW50ZXJhY3Rqcy91dGlscy9ldmVudHMnXG5pbXBvcnQgZXh0ZW5kIGZyb20gJ0BpbnRlcmFjdGpzL3V0aWxzL2V4dGVuZCdcbmltcG9ydCAqIGFzIGlzIGZyb20gJ0BpbnRlcmFjdGpzL3V0aWxzL2lzJ1xuaW1wb3J0IG5vcm1hbGl6ZUxpc3RlbmVycyBmcm9tICdAaW50ZXJhY3Rqcy91dGlscy9ub3JtYWxpemVMaXN0ZW5lcnMnXG5pbXBvcnQgeyBnZXRXaW5kb3cgfSBmcm9tICdAaW50ZXJhY3Rqcy91dGlscy93aW5kb3cnXG5pbXBvcnQgeyBBY3Rpb25EZWZhdWx0cywgRGVmYXVsdHMsIE9wdGlvbnMgfSBmcm9tICcuL2RlZmF1bHRPcHRpb25zJ1xuaW1wb3J0IEV2ZW50YWJsZSBmcm9tICcuL0V2ZW50YWJsZSdcbmltcG9ydCB7IEFjdGlvbnMgfSBmcm9tICcuL3Njb3BlJ1xuXG50eXBlIElnbm9yZVZhbHVlID0gc3RyaW5nIHwgRWxlbWVudCB8IGJvb2xlYW5cblxuLyoqICovXG5leHBvcnQgY2xhc3MgSW50ZXJhY3RhYmxlIGltcGxlbWVudHMgUGFydGlhbDxFdmVudGFibGU+IHtcbiAgcHJvdGVjdGVkIGdldCBfZGVmYXVsdHMgKCk6IERlZmF1bHRzIHtcbiAgICByZXR1cm4ge1xuICAgICAgYmFzZToge30sXG4gICAgICBwZXJBY3Rpb246IHt9LFxuICAgICAgYWN0aW9uczoge30gYXMgQWN0aW9uRGVmYXVsdHMsXG4gICAgfVxuICB9XG5cbiAgcmVhZG9ubHkgb3B0aW9ucyE6IFJlcXVpcmVkPE9wdGlvbnM+XG4gIHJlYWRvbmx5IF9hY3Rpb25zOiBBY3Rpb25zXG4gIHJlYWRvbmx5IHRhcmdldDogSW50ZXJhY3QuVGFyZ2V0XG4gIHJlYWRvbmx5IGV2ZW50cyA9IG5ldyBFdmVudGFibGUoKVxuICByZWFkb25seSBfY29udGV4dDogRG9jdW1lbnQgfCBFbGVtZW50XG4gIHJlYWRvbmx5IF93aW46IFdpbmRvd1xuICByZWFkb25seSBfZG9jOiBEb2N1bWVudFxuXG4gIC8qKiAqL1xuICBjb25zdHJ1Y3RvciAodGFyZ2V0OiBJbnRlcmFjdC5UYXJnZXQsIG9wdGlvbnM6IGFueSwgZGVmYXVsdENvbnRleHQ6IERvY3VtZW50IHwgRWxlbWVudCkge1xuICAgIHRoaXMuX2FjdGlvbnMgPSBvcHRpb25zLmFjdGlvbnNcbiAgICB0aGlzLnRhcmdldCAgID0gdGFyZ2V0XG4gICAgdGhpcy5fY29udGV4dCA9IG9wdGlvbnMuY29udGV4dCB8fCBkZWZhdWx0Q29udGV4dFxuICAgIHRoaXMuX3dpbiAgICAgPSBnZXRXaW5kb3codHJ5U2VsZWN0b3IodGFyZ2V0KSA/IHRoaXMuX2NvbnRleHQgOiB0YXJnZXQpXG4gICAgdGhpcy5fZG9jICAgICA9IHRoaXMuX3dpbi5kb2N1bWVudFxuXG4gICAgdGhpcy5zZXQob3B0aW9ucylcbiAgfVxuXG4gIHNldE9uRXZlbnRzIChhY3Rpb25OYW1lOiBzdHJpbmcsIHBoYXNlczogTm9uTnVsbGFibGU8YW55Pikge1xuICAgIGlmIChpcy5mdW5jKHBoYXNlcy5vbnN0YXJ0KSkgeyB0aGlzLm9uKGAke2FjdGlvbk5hbWV9c3RhcnRgLCBwaGFzZXMub25zdGFydCkgfVxuICAgIGlmIChpcy5mdW5jKHBoYXNlcy5vbm1vdmUpKSB7IHRoaXMub24oYCR7YWN0aW9uTmFtZX1tb3ZlYCwgcGhhc2VzLm9ubW92ZSkgfVxuICAgIGlmIChpcy5mdW5jKHBoYXNlcy5vbmVuZCkpIHsgdGhpcy5vbihgJHthY3Rpb25OYW1lfWVuZGAsIHBoYXNlcy5vbmVuZCkgfVxuICAgIGlmIChpcy5mdW5jKHBoYXNlcy5vbmluZXJ0aWFzdGFydCkpIHsgdGhpcy5vbihgJHthY3Rpb25OYW1lfWluZXJ0aWFzdGFydGAsIHBoYXNlcy5vbmluZXJ0aWFzdGFydCkgfVxuXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIHVwZGF0ZVBlckFjdGlvbkxpc3RlbmVycyAoYWN0aW9uTmFtZSwgcHJldiwgY3VyKSB7XG4gICAgaWYgKGlzLmFycmF5KHByZXYpKSB7XG4gICAgICB0aGlzLm9mZihhY3Rpb25OYW1lLCBwcmV2KVxuICAgIH1cblxuICAgIGlmIChpcy5hcnJheShjdXIpKSB7XG4gICAgICB0aGlzLm9uKGFjdGlvbk5hbWUsIGN1cilcbiAgICB9XG4gIH1cblxuICBzZXRQZXJBY3Rpb24gKGFjdGlvbk5hbWUsIG9wdGlvbnM6IEludGVyYWN0Lk9yQm9vbGVhbjxPcHRpb25zPikge1xuICAgIGNvbnN0IGRlZmF1bHRzID0gdGhpcy5fZGVmYXVsdHNcblxuICAgIC8vIGZvciBhbGwgdGhlIGRlZmF1bHQgcGVyLWFjdGlvbiBvcHRpb25zXG4gICAgZm9yIChjb25zdCBvcHRpb25OYW1lIGluIG9wdGlvbnMpIHtcbiAgICAgIGNvbnN0IGFjdGlvbk9wdGlvbnMgPSB0aGlzLm9wdGlvbnNbYWN0aW9uTmFtZV1cbiAgICAgIGNvbnN0IG9wdGlvblZhbHVlID0gb3B0aW9uc1tvcHRpb25OYW1lXVxuICAgICAgY29uc3QgaXNBcnJheSA9IGlzLmFycmF5KG9wdGlvblZhbHVlKVxuXG4gICAgICAvLyByZW1vdmUgb2xkIGV2ZW50IGxpc3RlbmVycyBhbmQgYWRkIG5ldyBvbmVzXG4gICAgICBpZiAob3B0aW9uTmFtZSA9PT0gJ2xpc3RlbmVycycpIHtcbiAgICAgICAgdGhpcy51cGRhdGVQZXJBY3Rpb25MaXN0ZW5lcnMoYWN0aW9uTmFtZSwgYWN0aW9uT3B0aW9ucy5saXN0ZW5lcnMsIG9wdGlvblZhbHVlKVxuICAgICAgfVxuXG4gICAgICAvLyBpZiB0aGUgb3B0aW9uIHZhbHVlIGlzIGFuIGFycmF5XG4gICAgICBpZiAoaXNBcnJheSkge1xuICAgICAgICBhY3Rpb25PcHRpb25zW29wdGlvbk5hbWVdID0gYXJyLmZyb20ob3B0aW9uVmFsdWUpXG4gICAgICB9XG4gICAgICAvLyBpZiB0aGUgb3B0aW9uIHZhbHVlIGlzIGFuIG9iamVjdFxuICAgICAgZWxzZSBpZiAoIWlzQXJyYXkgJiYgaXMucGxhaW5PYmplY3Qob3B0aW9uVmFsdWUpKSB7XG4gICAgICAgIC8vIGNvcHkgdGhlIG9iamVjdFxuICAgICAgICBhY3Rpb25PcHRpb25zW29wdGlvbk5hbWVdID0gZXh0ZW5kKFxuICAgICAgICAgIGFjdGlvbk9wdGlvbnNbb3B0aW9uTmFtZV0gfHwge30sXG4gICAgICAgICAgY2xvbmUob3B0aW9uVmFsdWUpKVxuXG4gICAgICAgIC8vIHNldCBhbmFibGVkIGZpZWxkIHRvIHRydWUgaWYgaXQgZXhpc3RzIGluIHRoZSBkZWZhdWx0c1xuICAgICAgICBpZiAoaXMub2JqZWN0KGRlZmF1bHRzLnBlckFjdGlvbltvcHRpb25OYW1lXSkgJiYgJ2VuYWJsZWQnIGluIGRlZmF1bHRzLnBlckFjdGlvbltvcHRpb25OYW1lXSkge1xuICAgICAgICAgIGFjdGlvbk9wdGlvbnNbb3B0aW9uTmFtZV0uZW5hYmxlZCA9IG9wdGlvblZhbHVlLmVuYWJsZWQgIT09IGZhbHNlXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC8vIGlmIHRoZSBvcHRpb24gdmFsdWUgaXMgYSBib29sZWFuIGFuZCB0aGUgZGVmYXVsdCBpcyBhbiBvYmplY3RcbiAgICAgIGVsc2UgaWYgKGlzLmJvb2wob3B0aW9uVmFsdWUpICYmIGlzLm9iamVjdChkZWZhdWx0cy5wZXJBY3Rpb25bb3B0aW9uTmFtZV0pKSB7XG4gICAgICAgIGFjdGlvbk9wdGlvbnNbb3B0aW9uTmFtZV0uZW5hYmxlZCA9IG9wdGlvblZhbHVlXG4gICAgICB9XG4gICAgICAvLyBpZiBpdCdzIGFueXRoaW5nIGVsc2UsIGRvIGEgcGxhaW4gYXNzaWdubWVudFxuICAgICAgZWxzZSB7XG4gICAgICAgIGFjdGlvbk9wdGlvbnNbb3B0aW9uTmFtZV0gPSBvcHRpb25WYWx1ZVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgZGVmYXVsdCBmdW5jdGlvbiB0byBnZXQgYW4gSW50ZXJhY3RhYmxlcyBib3VuZGluZyByZWN0LiBDYW4gYmVcbiAgICogb3ZlcnJpZGRlbiB1c2luZyB7QGxpbmsgSW50ZXJhY3RhYmxlLnJlY3RDaGVja2VyfS5cbiAgICpcbiAgICogQHBhcmFtIHtFbGVtZW50fSBbZWxlbWVudF0gVGhlIGVsZW1lbnQgdG8gbWVhc3VyZS5cbiAgICogQHJldHVybiB7b2JqZWN0fSBUaGUgb2JqZWN0J3MgYm91bmRpbmcgcmVjdGFuZ2xlLlxuICAgKi9cbiAgZ2V0UmVjdCAoZWxlbWVudDogRWxlbWVudCkge1xuICAgIGVsZW1lbnQgPSBlbGVtZW50IHx8IChpcy5lbGVtZW50KHRoaXMudGFyZ2V0KVxuICAgICAgPyB0aGlzLnRhcmdldFxuICAgICAgOiBudWxsKVxuXG4gICAgaWYgKGlzLnN0cmluZyh0aGlzLnRhcmdldCkpIHtcbiAgICAgIGVsZW1lbnQgPSBlbGVtZW50IHx8IHRoaXMuX2NvbnRleHQucXVlcnlTZWxlY3Rvcih0aGlzLnRhcmdldClcbiAgICB9XG5cbiAgICByZXR1cm4gZ2V0RWxlbWVudFJlY3QoZWxlbWVudClcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIG9yIHNldHMgdGhlIGZ1bmN0aW9uIHVzZWQgdG8gY2FsY3VsYXRlIHRoZSBpbnRlcmFjdGFibGUnc1xuICAgKiBlbGVtZW50J3MgcmVjdGFuZ2xlXG4gICAqXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IFtjaGVja2VyXSBBIGZ1bmN0aW9uIHdoaWNoIHJldHVybnMgdGhpcyBJbnRlcmFjdGFibGUnc1xuICAgKiBib3VuZGluZyByZWN0YW5nbGUuIFNlZSB7QGxpbmsgSW50ZXJhY3RhYmxlLmdldFJlY3R9XG4gICAqIEByZXR1cm4ge2Z1bmN0aW9uIHwgb2JqZWN0fSBUaGUgY2hlY2tlciBmdW5jdGlvbiBvciB0aGlzIEludGVyYWN0YWJsZVxuICAgKi9cbiAgcmVjdENoZWNrZXIgKGNoZWNrZXI6IChlbGVtZW50OiBFbGVtZW50KSA9PiBhbnkpIHtcbiAgICBpZiAoaXMuZnVuYyhjaGVja2VyKSkge1xuICAgICAgdGhpcy5nZXRSZWN0ID0gY2hlY2tlclxuXG4gICAgICByZXR1cm4gdGhpc1xuICAgIH1cblxuICAgIGlmIChjaGVja2VyID09PSBudWxsKSB7XG4gICAgICBkZWxldGUgdGhpcy5nZXRSZWN0XG5cbiAgICAgIHJldHVybiB0aGlzXG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuZ2V0UmVjdFxuICB9XG5cbiAgX2JhY2tDb21wYXRPcHRpb24gKG9wdGlvbk5hbWUsIG5ld1ZhbHVlKSB7XG4gICAgaWYgKHRyeVNlbGVjdG9yKG5ld1ZhbHVlKSB8fCBpcy5vYmplY3QobmV3VmFsdWUpKSB7XG4gICAgICB0aGlzLm9wdGlvbnNbb3B0aW9uTmFtZV0gPSBuZXdWYWx1ZVxuXG4gICAgICBmb3IgKGNvbnN0IGFjdGlvbiBvZiB0aGlzLl9hY3Rpb25zLm5hbWVzKSB7XG4gICAgICAgIHRoaXMub3B0aW9uc1thY3Rpb25dW29wdGlvbk5hbWVdID0gbmV3VmFsdWVcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXNcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5vcHRpb25zW29wdGlvbk5hbWVdXG4gIH1cblxuICAvKipcbiAgICogR2V0cyBvciBzZXRzIHRoZSBvcmlnaW4gb2YgdGhlIEludGVyYWN0YWJsZSdzIGVsZW1lbnQuICBUaGUgeCBhbmQgeVxuICAgKiBvZiB0aGUgb3JpZ2luIHdpbGwgYmUgc3VidHJhY3RlZCBmcm9tIGFjdGlvbiBldmVudCBjb29yZGluYXRlcy5cbiAgICpcbiAgICogQHBhcmFtIHtFbGVtZW50IHwgb2JqZWN0IHwgc3RyaW5nfSBbb3JpZ2luXSBBbiBIVE1MIG9yIFNWRyBFbGVtZW50IHdob3NlXG4gICAqIHJlY3Qgd2lsbCBiZSB1c2VkLCBhbiBvYmplY3QgZWcuIHsgeDogMCwgeTogMCB9IG9yIHN0cmluZyAncGFyZW50JywgJ3NlbGYnXG4gICAqIG9yIGFueSBDU1Mgc2VsZWN0b3JcbiAgICpcbiAgICogQHJldHVybiB7b2JqZWN0fSBUaGUgY3VycmVudCBvcmlnaW4gb3IgdGhpcyBJbnRlcmFjdGFibGVcbiAgICovXG4gIG9yaWdpbiAobmV3VmFsdWUpIHtcbiAgICByZXR1cm4gdGhpcy5fYmFja0NvbXBhdE9wdGlvbignb3JpZ2luJywgbmV3VmFsdWUpXG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBvciBzZXRzIHRoZSBtb3VzZSBjb29yZGluYXRlIHR5cGVzIHVzZWQgdG8gY2FsY3VsYXRlIHRoZVxuICAgKiBtb3ZlbWVudCBvZiB0aGUgcG9pbnRlci5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtuZXdWYWx1ZV0gVXNlICdjbGllbnQnIGlmIHlvdSB3aWxsIGJlIHNjcm9sbGluZyB3aGlsZVxuICAgKiBpbnRlcmFjdGluZzsgVXNlICdwYWdlJyBpZiB5b3Ugd2FudCBhdXRvU2Nyb2xsIHRvIHdvcmtcbiAgICogQHJldHVybiB7c3RyaW5nIHwgb2JqZWN0fSBUaGUgY3VycmVudCBkZWx0YVNvdXJjZSBvciB0aGlzIEludGVyYWN0YWJsZVxuICAgKi9cbiAgZGVsdGFTb3VyY2UgKG5ld1ZhbHVlKSB7XG4gICAgaWYgKG5ld1ZhbHVlID09PSAncGFnZScgfHwgbmV3VmFsdWUgPT09ICdjbGllbnQnKSB7XG4gICAgICB0aGlzLm9wdGlvbnMuZGVsdGFTb3VyY2UgPSBuZXdWYWx1ZVxuXG4gICAgICByZXR1cm4gdGhpc1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuZGVsdGFTb3VyY2VcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBzZWxlY3RvciBjb250ZXh0IE5vZGUgb2YgdGhlIEludGVyYWN0YWJsZS4gVGhlIGRlZmF1bHQgaXNcbiAgICogYHdpbmRvdy5kb2N1bWVudGAuXG4gICAqXG4gICAqIEByZXR1cm4ge05vZGV9IFRoZSBjb250ZXh0IE5vZGUgb2YgdGhpcyBJbnRlcmFjdGFibGVcbiAgICovXG4gIGNvbnRleHQgKCkge1xuICAgIHJldHVybiB0aGlzLl9jb250ZXh0XG4gIH1cblxuICBpbkNvbnRleHQgKGVsZW1lbnQpIHtcbiAgICByZXR1cm4gKHRoaXMuX2NvbnRleHQgPT09IGVsZW1lbnQub3duZXJEb2N1bWVudCB8fFxuICAgICAgICAgICAgbm9kZUNvbnRhaW5zKHRoaXMuX2NvbnRleHQsIGVsZW1lbnQpKVxuICB9XG5cbiAgdGVzdElnbm9yZUFsbG93ICh0aGlzOiBJbnRlcmFjdGFibGUsIG9wdGlvbnM6IHsgaWdub3JlRnJvbTogSWdub3JlVmFsdWUsIGFsbG93RnJvbTogSWdub3JlVmFsdWUgfSwgaW50ZXJhY3RhYmxlRWxlbWVudDogRWxlbWVudCwgZXZlbnRUYXJnZXQ6IEVsZW1lbnQpIHtcbiAgICByZXR1cm4gKCF0aGlzLnRlc3RJZ25vcmUob3B0aW9ucy5pZ25vcmVGcm9tLCBpbnRlcmFjdGFibGVFbGVtZW50LCBldmVudFRhcmdldCkgJiZcbiAgICAgICAgICAgIHRoaXMudGVzdEFsbG93KG9wdGlvbnMuYWxsb3dGcm9tLCBpbnRlcmFjdGFibGVFbGVtZW50LCBldmVudFRhcmdldCkpXG4gIH1cblxuICB0ZXN0QWxsb3cgKHRoaXM6IEludGVyYWN0YWJsZSwgYWxsb3dGcm9tOiBJZ25vcmVWYWx1ZSwgaW50ZXJhY3RhYmxlRWxlbWVudDogRWxlbWVudCwgZWxlbWVudDogRWxlbWVudCkge1xuICAgIGlmICghYWxsb3dGcm9tKSB7IHJldHVybiB0cnVlIH1cblxuICAgIGlmICghaXMuZWxlbWVudChlbGVtZW50KSkgeyByZXR1cm4gZmFsc2UgfVxuXG4gICAgaWYgKGlzLnN0cmluZyhhbGxvd0Zyb20pKSB7XG4gICAgICByZXR1cm4gbWF0Y2hlc1VwVG8oZWxlbWVudCwgYWxsb3dGcm9tLCBpbnRlcmFjdGFibGVFbGVtZW50KVxuICAgIH1cbiAgICBlbHNlIGlmIChpcy5lbGVtZW50KGFsbG93RnJvbSkpIHtcbiAgICAgIHJldHVybiBub2RlQ29udGFpbnMoYWxsb3dGcm9tLCBlbGVtZW50KVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgdGVzdElnbm9yZSAodGhpczogSW50ZXJhY3RhYmxlLCBpZ25vcmVGcm9tOiBJZ25vcmVWYWx1ZSwgaW50ZXJhY3RhYmxlRWxlbWVudDogRWxlbWVudCwgZWxlbWVudDogRWxlbWVudCkge1xuICAgIGlmICghaWdub3JlRnJvbSB8fCAhaXMuZWxlbWVudChlbGVtZW50KSkgeyByZXR1cm4gZmFsc2UgfVxuXG4gICAgaWYgKGlzLnN0cmluZyhpZ25vcmVGcm9tKSkge1xuICAgICAgcmV0dXJuIG1hdGNoZXNVcFRvKGVsZW1lbnQsIGlnbm9yZUZyb20sIGludGVyYWN0YWJsZUVsZW1lbnQpXG4gICAgfVxuICAgIGVsc2UgaWYgKGlzLmVsZW1lbnQoaWdub3JlRnJvbSkpIHtcbiAgICAgIHJldHVybiBub2RlQ29udGFpbnMoaWdub3JlRnJvbSwgZWxlbWVudClcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxscyBsaXN0ZW5lcnMgZm9yIHRoZSBnaXZlbiBJbnRlcmFjdEV2ZW50IHR5cGUgYm91bmQgZ2xvYmFsbHlcbiAgICogYW5kIGRpcmVjdGx5IHRvIHRoaXMgSW50ZXJhY3RhYmxlXG4gICAqXG4gICAqIEBwYXJhbSB7SW50ZXJhY3RFdmVudH0gaUV2ZW50IFRoZSBJbnRlcmFjdEV2ZW50IG9iamVjdCB0byBiZSBmaXJlZCBvbiB0aGlzXG4gICAqIEludGVyYWN0YWJsZVxuICAgKiBAcmV0dXJuIHtJbnRlcmFjdGFibGV9IHRoaXMgSW50ZXJhY3RhYmxlXG4gICAqL1xuICBmaXJlIChpRXZlbnQpIHtcbiAgICB0aGlzLmV2ZW50cy5maXJlKGlFdmVudClcblxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICBfb25PZmYgKG1ldGhvZDogJ29uJyB8ICdvZmYnLCB0eXBlQXJnOiBJbnRlcmFjdC5FdmVudFR5cGVzLCBsaXN0ZW5lckFyZz86IEludGVyYWN0Lkxpc3RlbmVyc0FyZyB8IG51bGwsIG9wdGlvbnM/OiBhbnkpIHtcbiAgICBpZiAoaXMub2JqZWN0KHR5cGVBcmcpICYmICFpcy5hcnJheSh0eXBlQXJnKSkge1xuICAgICAgb3B0aW9ucyA9IGxpc3RlbmVyQXJnXG4gICAgICBsaXN0ZW5lckFyZyA9IG51bGxcbiAgICB9XG5cbiAgICBjb25zdCBhZGRSZW1vdmUgPSBtZXRob2QgPT09ICdvbicgPyAnYWRkJyA6ICdyZW1vdmUnXG4gICAgY29uc3QgbGlzdGVuZXJzID0gbm9ybWFsaXplTGlzdGVuZXJzKHR5cGVBcmcsIGxpc3RlbmVyQXJnKVxuXG4gICAgZm9yIChsZXQgdHlwZSBpbiBsaXN0ZW5lcnMpIHtcbiAgICAgIGlmICh0eXBlID09PSAnd2hlZWwnKSB7IHR5cGUgPSBicm93c2VyLndoZWVsRXZlbnQgfVxuXG4gICAgICBmb3IgKGNvbnN0IGxpc3RlbmVyIG9mIGxpc3RlbmVyc1t0eXBlXSkge1xuICAgICAgICAvLyBpZiBpdCBpcyBhbiBhY3Rpb24gZXZlbnQgdHlwZVxuICAgICAgICBpZiAoYXJyLmNvbnRhaW5zKHRoaXMuX2FjdGlvbnMuZXZlbnRUeXBlcywgdHlwZSkpIHtcbiAgICAgICAgICB0aGlzLmV2ZW50c1ttZXRob2RdKHR5cGUsIGxpc3RlbmVyKVxuICAgICAgICB9XG4gICAgICAgIC8vIGRlbGVnYXRlZCBldmVudFxuICAgICAgICBlbHNlIGlmIChpcy5zdHJpbmcodGhpcy50YXJnZXQpKSB7XG4gICAgICAgICAgZXZlbnRzW2Ake2FkZFJlbW92ZX1EZWxlZ2F0ZWBdKHRoaXMudGFyZ2V0LCB0aGlzLl9jb250ZXh0LCB0eXBlLCBsaXN0ZW5lciwgb3B0aW9ucylcbiAgICAgICAgfVxuICAgICAgICAvLyByZW1vdmUgbGlzdGVuZXIgZnJvbSB0aGlzIEludGVyYXRhYmxlJ3MgZWxlbWVudFxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAoZXZlbnRzW2FkZFJlbW92ZV0gYXMgdHlwZW9mIGV2ZW50cy5yZW1vdmUpKHRoaXMudGFyZ2V0LCB0eXBlLCBsaXN0ZW5lciwgb3B0aW9ucylcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICAvKipcbiAgICogQmluZHMgYSBsaXN0ZW5lciBmb3IgYW4gSW50ZXJhY3RFdmVudCwgcG9pbnRlckV2ZW50IG9yIERPTSBldmVudC5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmcgfCBhcnJheSB8IG9iamVjdH0gdHlwZXMgVGhlIHR5cGVzIG9mIGV2ZW50cyB0byBsaXN0ZW5cbiAgICogZm9yXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24gfCBhcnJheSB8IG9iamVjdH0gW2xpc3RlbmVyXSBUaGUgZXZlbnQgbGlzdGVuZXIgZnVuY3Rpb24ocylcbiAgICogQHBhcmFtIHtvYmplY3QgfCBib29sZWFufSBbb3B0aW9uc10gb3B0aW9ucyBvYmplY3Qgb3IgdXNlQ2FwdHVyZSBmbGFnIGZvclxuICAgKiBhZGRFdmVudExpc3RlbmVyXG4gICAqIEByZXR1cm4ge0ludGVyYWN0YWJsZX0gVGhpcyBJbnRlcmFjdGFibGVcbiAgICovXG4gIG9uICh0eXBlczogSW50ZXJhY3QuRXZlbnRUeXBlcywgbGlzdGVuZXI/OiBJbnRlcmFjdC5MaXN0ZW5lcnNBcmcsIG9wdGlvbnM/OiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy5fb25PZmYoJ29uJywgdHlwZXMsIGxpc3RlbmVyLCBvcHRpb25zKVxuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZXMgYW4gSW50ZXJhY3RFdmVudCwgcG9pbnRlckV2ZW50IG9yIERPTSBldmVudCBsaXN0ZW5lci5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmcgfCBhcnJheSB8IG9iamVjdH0gdHlwZXMgVGhlIHR5cGVzIG9mIGV2ZW50cyB0aGF0IHdlcmVcbiAgICogbGlzdGVuZWQgZm9yXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24gfCBhcnJheSB8IG9iamVjdH0gW2xpc3RlbmVyXSBUaGUgZXZlbnQgbGlzdGVuZXIgZnVuY3Rpb24ocylcbiAgICogQHBhcmFtIHtvYmplY3QgfCBib29sZWFufSBbb3B0aW9uc10gb3B0aW9ucyBvYmplY3Qgb3IgdXNlQ2FwdHVyZSBmbGFnIGZvclxuICAgKiByZW1vdmVFdmVudExpc3RlbmVyXG4gICAqIEByZXR1cm4ge0ludGVyYWN0YWJsZX0gVGhpcyBJbnRlcmFjdGFibGVcbiAgICovXG4gIG9mZiAodHlwZXM6IHN0cmluZyB8IHN0cmluZ1tdIHwgSW50ZXJhY3QuRXZlbnRUeXBlcywgbGlzdGVuZXI/OiBJbnRlcmFjdC5MaXN0ZW5lcnNBcmcsIG9wdGlvbnM/OiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy5fb25PZmYoJ29mZicsIHR5cGVzLCBsaXN0ZW5lciwgb3B0aW9ucylcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNldCB0aGUgb3B0aW9ucyBvZiB0aGlzIEludGVyYWN0YWJsZVxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gb3B0aW9ucyBUaGUgbmV3IHNldHRpbmdzIHRvIGFwcGx5XG4gICAqIEByZXR1cm4ge29iamVjdH0gVGhpcyBJbnRlcmFjdGFibGVcbiAgICovXG4gIHNldCAob3B0aW9uczogSW50ZXJhY3QuT3B0aW9uc0FyZykge1xuICAgIGNvbnN0IGRlZmF1bHRzID0gdGhpcy5fZGVmYXVsdHNcblxuICAgIGlmICghaXMub2JqZWN0KG9wdGlvbnMpKSB7XG4gICAgICBvcHRpb25zID0ge31cbiAgICB9XG5cbiAgICAodGhpcy5vcHRpb25zIGFzIFJlcXVpcmVkPE9wdGlvbnM+KSA9IGNsb25lKGRlZmF1bHRzLmJhc2UpIGFzIFJlcXVpcmVkPE9wdGlvbnM+XG5cbiAgICBmb3IgKGNvbnN0IGFjdGlvbk5hbWUgaW4gdGhpcy5fYWN0aW9ucy5tZXRob2REaWN0KSB7XG4gICAgICBjb25zdCBtZXRob2ROYW1lID0gdGhpcy5fYWN0aW9ucy5tZXRob2REaWN0W2FjdGlvbk5hbWVdXG5cbiAgICAgIHRoaXMub3B0aW9uc1thY3Rpb25OYW1lXSA9IHt9XG4gICAgICB0aGlzLnNldFBlckFjdGlvbihhY3Rpb25OYW1lLCBleHRlbmQoZXh0ZW5kKHt9LCBkZWZhdWx0cy5wZXJBY3Rpb24pLCBkZWZhdWx0cy5hY3Rpb25zW2FjdGlvbk5hbWVdKSlcblxuICAgICAgdGhpc1ttZXRob2ROYW1lXShvcHRpb25zW2FjdGlvbk5hbWVdKVxuICAgIH1cblxuICAgIGZvciAoY29uc3Qgc2V0dGluZyBpbiBvcHRpb25zKSB7XG4gICAgICBpZiAoaXMuZnVuYyh0aGlzW3NldHRpbmddKSkge1xuICAgICAgICB0aGlzW3NldHRpbmddKG9wdGlvbnNbc2V0dGluZ10pXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmUgdGhpcyBpbnRlcmFjdGFibGUgZnJvbSB0aGUgbGlzdCBvZiBpbnRlcmFjdGFibGVzIGFuZCByZW1vdmUgaXQnc1xuICAgKiBhY3Rpb24gY2FwYWJpbGl0aWVzIGFuZCBldmVudCBsaXN0ZW5lcnNcbiAgICpcbiAgICogQHJldHVybiB7aW50ZXJhY3R9XG4gICAqL1xuICB1bnNldCAoKSB7XG4gICAgZXZlbnRzLnJlbW92ZSh0aGlzLnRhcmdldCBhcyBOb2RlLCAnYWxsJylcblxuICAgIGlmIChpcy5zdHJpbmcodGhpcy50YXJnZXQpKSB7XG4gICAgICAvLyByZW1vdmUgZGVsZWdhdGVkIGV2ZW50c1xuICAgICAgZm9yIChjb25zdCB0eXBlIGluIGV2ZW50cy5kZWxlZ2F0ZWRFdmVudHMpIHtcbiAgICAgICAgY29uc3QgZGVsZWdhdGVkID0gZXZlbnRzLmRlbGVnYXRlZEV2ZW50c1t0eXBlXVxuXG4gICAgICAgIGlmIChkZWxlZ2F0ZWQuc2VsZWN0b3JzWzBdID09PSB0aGlzLnRhcmdldCAmJlxuICAgICAgICAgICAgZGVsZWdhdGVkLmNvbnRleHRzWzBdID09PSB0aGlzLl9jb250ZXh0KSB7XG4gICAgICAgICAgZGVsZWdhdGVkLnNlbGVjdG9ycy5zcGxpY2UoMCwgMSlcbiAgICAgICAgICBkZWxlZ2F0ZWQuY29udGV4dHMuc3BsaWNlKDAsIDEpXG4gICAgICAgICAgZGVsZWdhdGVkLmxpc3RlbmVycy5zcGxpY2UoMCwgMSlcblxuICAgICAgICAgIC8vIHJlbW92ZSB0aGUgYXJyYXlzIGlmIHRoZXkgYXJlIGVtcHR5XG4gICAgICAgICAgaWYgKCFkZWxlZ2F0ZWQuc2VsZWN0b3JzLmxlbmd0aCkge1xuICAgICAgICAgICAgZGVsZWdhdGVkW3R5cGVdID0gbnVsbFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGV2ZW50cy5yZW1vdmUodGhpcy5fY29udGV4dCwgdHlwZSwgZXZlbnRzLmRlbGVnYXRlTGlzdGVuZXIpXG4gICAgICAgIGV2ZW50cy5yZW1vdmUodGhpcy5fY29udGV4dCwgdHlwZSwgZXZlbnRzLmRlbGVnYXRlVXNlQ2FwdHVyZSwgdHJ1ZSlcbiAgICAgIH1cbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBldmVudHMucmVtb3ZlKHRoaXMudGFyZ2V0IGFzIE5vZGUsICdhbGwnKVxuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBJbnRlcmFjdGFibGVcbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSW50ZXJhY3RhYmxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiSW50ZXJhY3RhYmxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxHQUFHLE1BQU0sdUJBQXVCLENBQUE7QUFDNUMsT0FBTyxPQUFPLE1BQU0sMkJBQTJCLENBQUE7QUFDL0MsT0FBTyxLQUFLLE1BQU0seUJBQXlCLENBQUE7QUFDM0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxNQUFNLDRCQUE0QixDQUFBO0FBQ25HLE9BQU8sTUFBTSxNQUFNLDBCQUEwQixDQUFBO0FBQzdDLE9BQU8sTUFBTSxNQUFNLDBCQUEwQixDQUFBO0FBQzdDLE9BQU8sS0FBSyxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFDMUMsT0FBTyxrQkFBa0IsTUFBTSxzQ0FBc0MsQ0FBQTtBQUNyRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUE7QUFFcEQsT0FBTyxTQUFTLE1BQU0sYUFBYSxDQUFBO0FBS25DLE1BQU07QUFDTixNQUFNLE9BQU8sWUFBWTtJQWlCdkIsTUFBTTtJQUNOLFlBQWEsTUFBdUIsRUFBRSxPQUFZLEVBQUUsY0FBa0M7UUFON0UsV0FBTSxHQUFHLElBQUksU0FBUyxFQUFFLENBQUE7UUFPL0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFBO1FBQy9CLElBQUksQ0FBQyxNQUFNLEdBQUssTUFBTSxDQUFBO1FBQ3RCLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDLE9BQU8sSUFBSSxjQUFjLENBQUE7UUFDakQsSUFBSSxDQUFDLElBQUksR0FBTyxTQUFTLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUN2RSxJQUFJLENBQUMsSUFBSSxHQUFPLElBQUksQ0FB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QUN6QyxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFBO2dCQUU5QyxJQUFJLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLE1BQU07b0JBQ3RDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLFFBQVEsRUFBRTtvQkFDM0MsU0FBUyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO29CQUNoQyxTQUFTLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7b0JBQy9CLFNBQVMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtvQkFFaEMsc0NBQXNDO29CQUN0QyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUU7d0JBQy9CLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUE7cUJBQ3ZCO2lCQUNGO2dCQUVELE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUE7Z0JBQzNELE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxDQUFBO2FBQ3BFO1NBQ0Y7YUFDSTtZQUNILE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQWMsRUFBRSxLQUFLLENBQUMsQ0FBQTtTQUMxQztJQUNILENBQUM7Q0FDRjtBQUVELGVBQWUsWUFBWSxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgYXJyIGZyb20gJ0BpbnRlcmFjdGpzL3V0aWxzL2FycidcbmltcG9ydCBicm93c2VyIGZyb20gJ0BpbnRlcmFjdGpzL3V0aWxzL2Jyb3dzZXInXG5pbXBvcnQgY2xvbmUgZnJvbSAnQGludGVyYWN0anMvdXRpbHMvY2xvbmUnXG5pbXBvcnQgeyBnZXRFbGVtZW50UmVjdCwgbWF0Y2hlc1VwVG8sIG5vZGVDb250YWlucywgdHJ5U2VsZWN0b3IgfSBmcm9tICdAaW50ZXJhY3Rqcy91dGlscy9kb21VdGlscydcbmltcG9ydCBldmVudHMgZnJvbSAnQGludGVyYWN0anMvdXRpbHMvZXZlbnRzJ1xuaW1wb3J0IGV4dGVuZCBmcm9tICdAaW50ZXJhY3Rqcy91dGlscy9leHRlbmQnXG5pbXBvcnQgKiBhcyBpcyBmcm9tICdAaW50ZXJhY3Rqcy91dGlscy9pcydcbmltcG9ydCBub3JtYWxpemVMaXN0ZW5lcnMgZnJvbSAnQGludGVyYWN0anMvdXRpbHMvbm9ybWFsaXplTGlzdGVuZXJzJ1xuaW1wb3J0IHsgZ2V0V2luZG93IH0gZnJvbSAnQGludGVyYWN0anMvdXRpbHMvd2luZG93J1xuaW1wb3J0IHsgQWN0aW9uRGVmYXVsdHMsIERlZmF1bHRzLCBPcHRpb25zIH0gZnJvbSAnLi9kZWZhdWx0T3B0aW9ucydcbmltcG9ydCBFdmVudGFibGUgZnJvbSAnLi9FdmVudGFibGUnXG5pbXBvcnQgeyBBY3Rpb25zIH0gZnJvbSAnLi9zY29wZSdcblxudHlwZSBJZ25vcmVWYWx1ZSA9IHN0cmluZyB8IEVsZW1lbnQgfCBib29sZWFuXG5cbi8qKiAqL1xuZXhwb3J0IGNsYXNzIEludGVyYWN0YWJsZSBpbXBsZW1lbnRzIFBhcnRpYWw8RXZlbnRhYmxlPiB7XG4gIHByb3RlY3RlZCBnZXQgX2RlZmF1bHRzICgpOiBEZWZhdWx0cyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGJhc2U6IHt9LFxuICAgICAgcGVyQWN0aW9uOiB7fSxcbiAgICAgIGFjdGlvbnM6IHt9IGFzIEFjdGlvbkRlZmF1bHRzLFxuICAgIH1cbiAgfVxuXG4gIHJlYWRvbmx5IG9wdGlvbnMhOiBSZXF1aXJlZDxPcHRpb25zPlxuICByZWFkb25seSBfYWN0aW9uczogQWN0aW9uc1xuICByZWFkb25seSB0YXJnZXQ6IEludGVyYWN0LlRhcmdldFxuICByZWFkb25seSBldmVudHMgPSBuZXcgRXZlbnRhYmxlKClcbiAgcmVhZG9ubHkgX2NvbnRleHQ6IERvY3VtZW50IHwgRWxlbWVudFxuICByZWFkb25seSBfd2luOiBXaW5kb3dcbiAgcmVhZG9ubHkgX2RvYzogRG9jdW1lbnRcblxuICAvKiogKi9cbiAgY29uc3RydWN0b3IgKHRhcmdldDogSW50ZXJhY3QuVGFyZ2V0LCBvcHRpb25zOiBhbnksIGRlZmF1bHRDb250ZXh0OiBEb2N1bWVudCB8IEVsZW1lbnQpIHtcbiAgICB0aGlzLl9hY3Rpb25zID0gb3B0aW9ucy5hY3Rpb25zXG4gICAgdGhpcy50YXJnZXQgICA9IHRhcmdldFxuICAgIHRoaXMuX2NvbnRleHQgPSBvcHRpb25zLmNvbnRleHQgfHwgZGVmYXVsdENvbnRleHRcbiAgICB0aGlzLl93aW4gICAgID0gZ2V0V2luZG93KHRyeVNlbGVjdG9yKHRhcmdldCkgPyB0aGlzLl9jb250ZXh0IDogdGFyZ2V0KVxuICAgIHRoaXMuX2RvYyAgICAgPSB0aGlzLl93aW4uZG9jdW1lbnRcblxuICAgIHRoaXMuc2V0KG9wdGlvbnMpXG4gIH1cblxuICBzZXRPbkV2ZW50cyAoYWN0aW9uTmFtZTogc3RyaW5nLCBwaGFzZXM6IE5vbk51bGxhYmxlPGFueT4pIHtcbiAgICBpZiAoaXMuZnVuYyhwaGFzZXMub25zdGFydCkpIHsgdGhpcy5vbihgJHthY3Rpb25OYW1lfXN0YXJ0YCwgcGhhc2VzLm9uc3RhcnQpIH1cbiAgICBpZiAoaXMuZnVuYyhwaGFzZXMub25tb3ZlKSkgeyB0aGlzLm9uKGAke2FjdGlvbk5hbWV9bW92ZWAsIHBoYXNlcy5vbm1vdmUpIH1cbiAgICBpZiAoaXMuZnVuYyhwaGFzZXMub25lbmQpKSB7IHRoaXMub24oYCR7YWN0aW9uTmFtZX1lbmRgLCBwaGFzZXMub25lbmQpIH1cbiAgICBpZiAoaXMuZnVuYyhwaGFzZXMub25pbmVydGlhc3RhcnQpKSB7IHRoaXMub24oYCR7YWN0aW9uTmFtZX1pbmVydGlhc3RhcnRgLCBwaGFzZXMub25pbmVydGlhc3RhcnQpIH1cblxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICB1cGRhdGVQZXJBY3Rpb25MaXN0ZW5lcnMgKGFjdGlvbk5hbWUsIHByZXYsIGN1cikge1xuICAgIGlmIChpcy5hcnJheShwcmV2KSB8fCBpcy5vYmplY3QocHJldikpIHtcbiAgICAgIHRoaXMub2ZmKGFjdGlvbk5hbWUsIHByZXYpXG4gICAgfVxuXG4gICAgaWYgKGlzLmFycmF5KGN1cikgfHwgaXMub2JqZWN0KGN1cikpIHtcbiAgICAgIHRoaXMub24oYWN0aW9uTmFtZSwgY3VyKVxuICAgIH1cbiAgfVxuXG4gIHNldFBlckFjdGlvbiAoYWN0aW9uTmFtZSwgb3B0aW9uczogSW50ZXJhY3QuT3JCb29sZWFuPE9wdGlvbnM+KSB7XG4gICAgY29uc3QgZGVmYXVsdHMgPSB0aGlzLl9kZWZhdWx0c1xuXG4gICAgLy8gZm9yIGFsbCB0aGUgZGVmYXVsdCBwZXItYWN0aW9uIG9wdGlvbnNcbiAgICBmb3IgKGNvbnN0IG9wdGlvbk5hbWUgaW4gb3B0aW9ucykge1xuICAgICAgY29uc3QgYWN0aW9uT3B0aW9ucyA9IHRoaXMub3B0aW9uc1thY3Rpb25OYW1lXVxuICAgICAgY29uc3Qgb3B0aW9uVmFsdWUgPSBvcHRpb25zW29wdGlvbk5hbWVdXG4gICAgICBjb25zdCBpc0FycmF5ID0gaXMuYXJyYXkob3B0aW9uVmFsdWUpXG5cbiAgICAgIC8vIHJlbW92ZSBvbGQgZXZlbnQgbGlzdGVuZXJzIGFuZCBhZGQgbmV3IG9uZXNcbiAgICAgIGlmIChvcHRpb25OYW1lID09PSAnbGlzdGVuZXJzJykge1xuICAgICAgICB0aGlzLnVwZGF0ZVBlckFjdGlvbkxpc3RlbmVycyhhY3Rpb25OYW1lLCBhY3Rpb25PcHRpb25zLmxpc3RlbmVycywgb3B0aW9uVmFsdWUpXG4gICAgICB9XG5cbiAgICAgIC8vIGlmIHRoZSBvcHRpb24gdmFsdWUgaXMgYW4gYXJyYXlcbiAgICAgIGlmIChpc0FycmF5KSB7XG4gICAgICAgIGFjdGlvbk9wdGlvbnNbb3B0aW9uTmFtZV0gPSBhcnIuZnJvbShvcHRpb25WYWx1ZSlcbiAgICAgIH1cbiAgICAgIC8vIGlmIHRoZSBvcHRpb24gdmFsdWUgaXMgYW4gb2JqZWN0XG4gICAgICBlbHNlIGlmICghaXNBcnJheSAmJiBpcy5wbGFpbk9iamVjdChvcHRpb25WYWx1ZSkpIHtcbiAgICAgICAgLy8gY29weSB0aGUgb2JqZWN0XG4gICAgICAgIGFjdGlvbk9wdGlvbnNbb3B0aW9uTmFtZV0gPSBleHRlbmQoXG4gICAgICAgICAgYWN0aW9uT3B0aW9uc1tvcHRpb25OYW1lXSB8fCB7fSxcbiAgICAgICAgICBjbG9uZShvcHRpb25WYWx1ZSkpXG5cbiAgICAgICAgLy8gc2V0IGFuYWJsZWQgZmllbGQgdG8gdHJ1ZSBpZiBpdCBleGlzdHMgaW4gdGhlIGRlZmF1bHRzXG4gICAgICAgIGlmIChpcy5vYmplY3QoZGVmYXVsdHMucGVyQWN0aW9uW29wdGlvbk5hbWVdKSAmJiAnZW5hYmxlZCcgaW4gZGVmYXVsdHMucGVyQWN0aW9uW29wdGlvbk5hbWVdKSB7XG4gICAgICAgICAgYWN0aW9uT3B0aW9uc1tvcHRpb25OYW1lXS5lbmFibGVkID0gb3B0aW9uVmFsdWUuZW5hYmxlZCAhPT0gZmFsc2VcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLy8gaWYgdGhlIG9wdGlvbiB2YWx1ZSBpcyBhIGJvb2xlYW4gYW5kIHRoZSBkZWZhdWx0IGlzIGFuIG9iamVjdFxuICAgICAgZWxzZSBpZiAoaXMuYm9vbChvcHRpb25WYWx1ZSkgJiYgaXMub2JqZWN0KGRlZmF1bHRzLnBlckFjdGlvbltvcHRpb25OYW1lXSkpIHtcbiAgICAgICAgYWN0aW9uT3B0aW9uc1tvcHRpb25OYW1lXS5lbmFibGVkID0gb3B0aW9uVmFsdWVcbiAgICAgIH1cbiAgICAgIC8vIGlmIGl0J3MgYW55dGhpbmcgZWxzZSwgZG8gYSBwbGFpbiBhc3NpZ25tZW50XG4gICAgICBlbHNlIHtcbiAgICAgICAgYWN0aW9uT3B0aW9uc1tvcHRpb25OYW1lXSA9IG9wdGlvblZhbHVlXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBkZWZhdWx0IGZ1bmN0aW9uIHRvIGdldCBhbiBJbnRlcmFjdGFibGVzIGJvdW5kaW5nIHJlY3QuIENhbiBiZVxuICAgKiBvdmVycmlkZGVuIHVzaW5nIHtAbGluayBJbnRlcmFjdGFibGUucmVjdENoZWNrZXJ9LlxuICAgKlxuICAgKiBAcGFyYW0ge0VsZW1lbnR9IFtlbGVtZW50XSBUaGUgZWxlbWVudCB0byBtZWFzdXJlLlxuICAgKiBAcmV0dXJuIHtvYmplY3R9IFRoZSBvYmplY3QncyBib3VuZGluZyByZWN0YW5nbGUuXG4gICAqL1xuICBnZXRSZWN0IChlbGVtZW50OiBFbGVtZW50KSB7XG4gICAgZWxlbWVudCA9IGVsZW1lbnQgfHwgKGlzLmVsZW1lbnQodGhpcy50YXJnZXQpXG4gICAgICA/IHRoaXMudGFyZ2V0XG4gICAgICA6IG51bGwpXG5cbiAgICBpZiAoaXMuc3RyaW5nKHRoaXMudGFyZ2V0KSkge1xuICAgICAgZWxlbWVudCA9IGVsZW1lbnQgfHwgdGhpcy5fY29udGV4dC5xdWVyeVNlbGVjdG9yKHRoaXMudGFyZ2V0KVxuICAgIH1cblxuICAgIHJldHVybiBnZXRFbGVtZW50UmVjdChlbGVtZW50KVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgb3Igc2V0cyB0aGUgZnVuY3Rpb24gdXNlZCB0byBjYWxjdWxhdGUgdGhlIGludGVyYWN0YWJsZSdzXG4gICAqIGVsZW1lbnQncyByZWN0YW5nbGVcbiAgICpcbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gW2NoZWNrZXJdIEEgZnVuY3Rpb24gd2hpY2ggcmV0dXJucyB0aGlzIEludGVyYWN0YWJsZSdzXG4gICAqIGJvdW5kaW5nIHJlY3RhbmdsZS4gU2VlIHtAbGluayBJbnRlcmFjdGFibGUuZ2V0UmVjdH1cbiAgICogQHJldHVybiB7ZnVuY3Rpb24gfCBvYmplY3R9IFRoZSBjaGVja2VyIGZ1bmN0aW9uIG9yIHRoaXMgSW50ZXJhY3RhYmxlXG4gICAqL1xuICByZWN0Q2hlY2tlciAoY2hlY2tlcjogKGVsZW1lbnQ6IEVsZW1lbnQpID0+IGFueSkge1xuICAgIGlmIChpcy5mdW5jKGNoZWNrZXIpKSB7XG4gICAgICB0aGlzLmdldFJlY3QgPSBjaGVja2VyXG5cbiAgICAgIHJldHVybiB0aGlzXG4gICAgfVxuXG4gICAgaWYgKGNoZWNrZXIgPT09IG51bGwpIHtcbiAgICAgIGRlbGV0ZSB0aGlzLmdldFJlY3RcblxuICAgICAgcmV0dXJuIHRoaXNcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5nZXRSZWN0XG4gIH1cblxuICBfYmFja0NvbXBhdE9wdGlvbiAob3B0aW9uTmFtZSwgbmV3VmFsdWUpIHtcbiAgICBpZiAodHJ5U2VsZWN0b3IobmV3VmFsdWUpIHx8IGlzLm9iamVjdChuZXdWYWx1ZSkpIHtcbiAgICAgIHRoaXMub3B0aW9uc1tvcHRpb25OYW1lXSA9IG5ld1ZhbHVlXG5cbiAgICAgIGZvciAoY29uc3QgYWN0aW9uIG9mIHRoaXMuX2FjdGlvbnMubmFtZXMpIHtcbiAgICAgICAgdGhpcy5vcHRpb25zW2FjdGlvbl1bb3B0aW9uTmFtZV0gPSBuZXdWYWx1ZVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpc1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLm9wdGlvbnNbb3B0aW9uTmFtZV1cbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIG9yIHNldHMgdGhlIG9yaWdpbiBvZiB0aGUgSW50ZXJhY3RhYmxlJ3MgZWxlbWVudC4gIFRoZSB4IGFuZCB5XG4gICAqIG9mIHRoZSBvcmlnaW4gd2lsbCBiZSBzdWJ0cmFjdGVkIGZyb20gYWN0aW9uIGV2ZW50IGNvb3JkaW5hdGVzLlxuICAgKlxuICAgKiBAcGFyYW0ge0VsZW1lbnQgfCBvYmplY3QgfCBzdHJpbmd9IFtvcmlnaW5dIEFuIEhUTUwgb3IgU1ZHIEVsZW1lbnQgd2hvc2VcbiAgICogcmVjdCB3aWxsIGJlIHVzZWQsIGFuIG9iamVjdCBlZy4geyB4OiAwLCB5OiAwIH0gb3Igc3RyaW5nICdwYXJlbnQnLCAnc2VsZidcbiAgICogb3IgYW55IENTUyBzZWxlY3RvclxuICAgKlxuICAgKiBAcmV0dXJuIHtvYmplY3R9IFRoZSBjdXJyZW50IG9yaWdpbiBvciB0aGlzIEludGVyYWN0YWJsZVxuICAgKi9cbiAgb3JpZ2luIChuZXdWYWx1ZSkge1xuICAgIHJldHVybiB0aGlzLl9iYWNrQ29tcGF0T3B0aW9uKCdvcmlnaW4nLCBuZXdWYWx1ZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIG9yIHNldHMgdGhlIG1vdXNlIGNvb3JkaW5hdGUgdHlwZXMgdXNlZCB0byBjYWxjdWxhdGUgdGhlXG4gICAqIG1vdmVtZW50IG9mIHRoZSBwb2ludGVyLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW25ld1ZhbHVlXSBVc2UgJ2NsaWVudCcgaWYgeW91IHdpbGwgYmUgc2Nyb2xsaW5nIHdoaWxlXG4gICAqIGludGVyYWN0aW5nOyBVc2UgJ3BhZ2UnIGlmIHlvdSB3YW50IGF1dG9TY3JvbGwgdG8gd29ya1xuICAgKiBAcmV0dXJuIHtzdHJpbmcgfCBvYmplY3R9IFRoZSBjdXJyZW50IGRlbHRhU291cmNlIG9yIHRoaXMgSW50ZXJhY3RhYmxlXG4gICAqL1xuICBkZWx0YVNvdXJjZSAobmV3VmFsdWUpIHtcbiAgICBpZiAobmV3VmFsdWUgPT09ICdwYWdlJyB8fCBuZXdWYWx1ZSA9PT0gJ2NsaWVudCcpIHtcbiAgICAgIHRoaXMub3B0aW9ucy5kZWx0YVNvdXJjZSA9IG5ld1ZhbHVlXG5cbiAgICAgIHJldHVybiB0aGlzXG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5kZWx0YVNvdXJjZVxuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHNlbGVjdG9yIGNvbnRleHQgTm9kZSBvZiB0aGUgSW50ZXJhY3RhYmxlLiBUaGUgZGVmYXVsdCBpc1xuICAgKiBgd2luZG93LmRvY3VtZW50YC5cbiAgICpcbiAgICogQHJldHVybiB7Tm9kZX0gVGhlIGNvbnRleHQgTm9kZSBvZiB0aGlzIEludGVyYWN0YWJsZVxuICAgKi9cbiAgY29udGV4dCAoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbnRleHRcbiAgfVxuXG4gIGluQ29udGV4dCAoZWxlbWVudCkge1xuICAgIHJldHVybiAodGhpcy5fY29udGV4dCA9PT0gZWxlbWVudC5vd25lckRvY3VtZW50IHx8XG4gICAgICAgICAgICBub2RlQ29udGFpbnModGhpcy5fY29udGV4dCwgZWxlbWVudCkpXG4gIH1cblxuICB0ZXN0SWdub3JlQWxsb3cgKHRoaXM6IEludGVyYWN0YWJsZSwgb3B0aW9uczogeyBpZ25vcmVGcm9tOiBJZ25vcmVWYWx1ZSwgYWxsb3dGcm9tOiBJZ25vcmVWYWx1ZSB9LCBpbnRlcmFjdGFibGVFbGVtZW50OiBFbGVtZW50LCBldmVudFRhcmdldDogRWxlbWVudCkge1xuICAgIHJldHVybiAoIXRoaXMudGVzdElnbm9yZShvcHRpb25zLmlnbm9yZUZyb20sIGludGVyYWN0YWJsZUVsZW1lbnQsIGV2ZW50VGFyZ2V0KSAmJlxuICAgICAgICAgICAgdGhpcy50ZXN0QWxsb3cob3B0aW9ucy5hbGxvd0Zyb20sIGludGVyYWN0YWJsZUVsZW1lbnQsIGV2ZW50VGFyZ2V0KSlcbiAgfVxuXG4gIHRlc3RBbGxvdyAodGhpczogSW50ZXJhY3RhYmxlLCBhbGxvd0Zyb206IElnbm9yZVZhbHVlLCBpbnRlcmFjdGFibGVFbGVtZW50OiBFbGVtZW50LCBlbGVtZW50OiBFbGVtZW50KSB7XG4gICAgaWYgKCFhbGxvd0Zyb20pIHsgcmV0dXJuIHRydWUgfVxuXG4gICAgaWYgKCFpcy5lbGVtZW50KGVsZW1lbnQpKSB7IHJldHVybiBmYWxzZSB9XG5cbiAgICBpZiAoaXMuc3RyaW5nKGFsbG93RnJvbSkpIHtcbiAgICAgIHJldHVybiBtYXRjaGVzVXBUbyhlbGVtZW50LCBhbGxvd0Zyb20sIGludGVyYWN0YWJsZUVsZW1lbnQpXG4gICAgfVxuICAgIGVsc2UgaWYgKGlzLmVsZW1lbnQoYWxsb3dGcm9tKSkge1xuICAgICAgcmV0dXJuIG5vZGVDb250YWlucyhhbGxvd0Zyb20sIGVsZW1lbnQpXG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICB0ZXN0SWdub3JlICh0aGlzOiBJbnRlcmFjdGFibGUsIGlnbm9yZUZyb206IElnbm9yZVZhbHVlLCBpbnRlcmFjdGFibGVFbGVtZW50OiBFbGVtZW50LCBlbGVtZW50OiBFbGVtZW50KSB7XG4gICAgaWYgKCFpZ25vcmVGcm9tIHx8ICFpcy5lbGVtZW50KGVsZW1lbnQpKSB7IHJldHVybiBmYWxzZSB9XG5cbiAgICBpZiAoaXMuc3RyaW5nKGlnbm9yZUZyb20pKSB7XG4gICAgICByZXR1cm4gbWF0Y2hlc1VwVG8oZWxlbWVudCwgaWdub3JlRnJvbSwgaW50ZXJhY3RhYmxlRWxlbWVudClcbiAgICB9XG4gICAgZWxzZSBpZiAoaXMuZWxlbWVudChpZ25vcmVGcm9tKSkge1xuICAgICAgcmV0dXJuIG5vZGVDb250YWlucyhpZ25vcmVGcm9tLCBlbGVtZW50KVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgLyoqXG4gICAqIENhbGxzIGxpc3RlbmVycyBmb3IgdGhlIGdpdmVuIEludGVyYWN0RXZlbnQgdHlwZSBib3VuZCBnbG9iYWxseVxuICAgKiBhbmQgZGlyZWN0bHkgdG8gdGhpcyBJbnRlcmFjdGFibGVcbiAgICpcbiAgICogQHBhcmFtIHtJbnRlcmFjdEV2ZW50fSBpRXZlbnQgVGhlIEludGVyYWN0RXZlbnQgb2JqZWN0IHRvIGJlIGZpcmVkIG9uIHRoaXNcbiAgICogSW50ZXJhY3RhYmxlXG4gICAqIEByZXR1cm4ge0ludGVyYWN0YWJsZX0gdGhpcyBJbnRlcmFjdGFibGVcbiAgICovXG4gIGZpcmUgKGlFdmVudCkge1xuICAgIHRoaXMuZXZlbnRzLmZpcmUoaUV2ZW50KVxuXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIF9vbk9mZiAobWV0aG9kOiAnb24nIHwgJ29mZicsIHR5cGVBcmc6IEludGVyYWN0LkV2ZW50VHlwZXMsIGxpc3RlbmVyQXJnPzogSW50ZXJhY3QuTGlzdGVuZXJzQXJnIHwgbnVsbCwgb3B0aW9ucz86IGFueSkge1xuICAgIGlmIChpcy5vYmplY3QodHlwZUFyZykgJiYgIWlzLmFycmF5KHR5cGVBcmcpKSB7XG4gICAgICBvcHRpb25zID0gbGlzdGVuZXJBcmdcbiAgICAgIGxpc3RlbmVyQXJnID0gbnVsbFxuICAgIH1cblxuICAgIGNvbnN0IGFkZFJlbW92ZSA9IG1ldGhvZCA9PT0gJ29uJyA/ICdhZGQnIDogJ3JlbW92ZSdcbiAgICBjb25zdCBsaXN0ZW5lcnMgPSBub3JtYWxpemVMaXN0ZW5lcnModHlwZUFyZywgbGlzdGVuZXJBcmcpXG5cbiAgICBmb3IgKGxldCB0eXBlIGluIGxpc3RlbmVycykge1xuICAgICAgaWYgKHR5cGUgPT09ICd3aGVlbCcpIHsgdHlwZSA9IGJyb3dzZXIud2hlZWxFdmVudCB9XG5cbiAgICAgIGZvciAoY29uc3QgbGlzdGVuZXIgb2YgbGlzdGVuZXJzW3R5cGVdKSB7XG4gICAgICAgIC8vIGlmIGl0IGlzIGFuIGFjdGlvbiBldmVudCB0eXBlXG4gICAgICAgIGlmIChhcnIuY29udGFpbnModGhpcy5fYWN0aW9ucy5ldmVudFR5cGVzLCB0eXBlKSkge1xuICAgICAgICAgIHRoaXMuZXZlbnRzW21ldGhvZF0odHlwZSwgbGlzdGVuZXIpXG4gICAgICAgIH1cbiAgICAgICAgLy8gZGVsZWdhdGVkIGV2ZW50XG4gICAgICAgIGVsc2UgaWYgKGlzLnN0cmluZyh0aGlzLnRhcmdldCkpIHtcbiAgICAgICAgICBldmVudHNbYCR7YWRkUmVtb3ZlfURlbGVnYXRlYF0odGhpcy50YXJnZXQsIHRoaXMuX2NvbnRleHQsIHR5cGUsIGxpc3RlbmVyLCBvcHRpb25zKVxuICAgICAgICB9XG4gICAgICAgIC8vIHJlbW92ZSBsaXN0ZW5lciBmcm9tIHRoaXMgSW50ZXJhdGFibGUncyBlbGVtZW50XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIChldmVudHNbYWRkUmVtb3ZlXSBhcyB0eXBlb2YgZXZlbnRzLnJlbW92ZSkodGhpcy50YXJnZXQsIHR5cGUsIGxpc3RlbmVyLCBvcHRpb25zKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIC8qKlxuICAgKiBCaW5kcyBhIGxpc3RlbmVyIGZvciBhbiBJbnRlcmFjdEV2ZW50LCBwb2ludGVyRXZlbnQgb3IgRE9NIGV2ZW50LlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZyB8IGFycmF5IHwgb2JqZWN0fSB0eXBlcyBUaGUgdHlwZXMgb2YgZXZlbnRzIHRvIGxpc3RlblxuICAgKiBmb3JcbiAgICogQHBhcmFtIHtmdW5jdGlvbiB8IGFycmF5IHwgb2JqZWN0fSBbbGlzdGVuZXJdIFRoZSBldmVudCBsaXN0ZW5lciBmdW5jdGlvbihzKVxuICAgKiBAcGFyYW0ge29iamVjdCB8IGJvb2xlYW59IFtvcHRpb25zXSBvcHRpb25zIG9iamVjdCBvciB1c2VDYXB0dXJlIGZsYWcgZm9yXG4gICAqIGFkZEV2ZW50TGlzdGVuZXJcbiAgICogQHJldHVybiB7SW50ZXJhY3RhYmxlfSBUaGlzIEludGVyYWN0YWJsZVxuICAgKi9cbiAgb24gKHR5cGVzOiBJbnRlcmFjdC5FdmVudFR5cGVzLCBsaXN0ZW5lcj86IEludGVyYWN0Lkxpc3RlbmVyc0FyZywgb3B0aW9ucz86IGFueSkge1xuICAgIHJldHVybiB0aGlzLl9vbk9mZignb24nLCB0eXBlcywgbGlzdGVuZXIsIG9wdGlvbnMpXG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlcyBhbiBJbnRlcmFjdEV2ZW50LCBwb2ludGVyRXZlbnQgb3IgRE9NIGV2ZW50IGxpc3RlbmVyLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZyB8IGFycmF5IHwgb2JqZWN0fSB0eXBlcyBUaGUgdHlwZXMgb2YgZXZlbnRzIHRoYXQgd2VyZVxuICAgKiBsaXN0ZW5lZCBmb3JcbiAgICogQHBhcmFtIHtmdW5jdGlvbiB8IGFycmF5IHwgb2JqZWN0fSBbbGlzdGVuZXJdIFRoZSBldmVudCBsaXN0ZW5lciBmdW5jdGlvbihzKVxuICAgKiBAcGFyYW0ge29iamVjdCB8IGJvb2xlYW59IFtvcHRpb25zXSBvcHRpb25zIG9iamVjdCBvciB1c2VDYXB0dXJlIGZsYWcgZm9yXG4gICAqIHJlbW92ZUV2ZW50TGlzdGVuZXJcbiAgICogQHJldHVybiB7SW50ZXJhY3RhYmxlfSBUaGlzIEludGVyYWN0YWJsZVxuICAgKi9cbiAgb2ZmICh0eXBlczogc3RyaW5nIHwgc3RyaW5nW10gfCBJbnRlcmFjdC5FdmVudFR5cGVzLCBsaXN0ZW5lcj86IEludGVyYWN0Lkxpc3RlbmVyc0FyZywgb3B0aW9ucz86IGFueSkge1xuICAgIHJldHVybiB0aGlzLl9vbk9mZignb2ZmJywgdHlwZXMsIGxpc3RlbmVyLCBvcHRpb25zKVxuICB9XG5cbiAgLyoqXG4gICAqIFJlc2V0IHRoZSBvcHRpb25zIG9mIHRoaXMgSW50ZXJhY3RhYmxlXG4gICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBvcHRpb25zIFRoZSBuZXcgc2V0dGluZ3MgdG8gYXBwbHlcbiAgICogQHJldHVybiB7b2JqZWN0fSBUaGlzIEludGVyYWN0YWJsZVxuICAgKi9cbiAgc2V0IChvcHRpb25zOiBJbnRlcmFjdC5PcHRpb25zQXJnKSB7XG4gICAgY29uc3QgZGVmYXVsdHMgPSB0aGlzLl9kZWZhdWx0c1xuXG4gICAgaWYgKCFpcy5vYmplY3Qob3B0aW9ucykpIHtcbiAgICAgIG9wdGlvbnMgPSB7fVxuICAgIH1cblxuICAgICh0aGlzLm9wdGlvbnMgYXMgUmVxdWlyZWQ8T3B0aW9ucz4pID0gY2xvbmUoZGVmYXVsdHMuYmFzZSkgYXMgUmVxdWlyZWQ8T3B0aW9ucz5cblxuICAgIGZvciAoY29uc3QgYWN0aW9uTmFtZSBpbiB0aGlzLl9hY3Rpb25zLm1ldGhvZERpY3QpIHtcbiAgICAgIGNvbnN0IG1ldGhvZE5hbWUgPSB0aGlzLl9hY3Rpb25zLm1ldGhvZERpY3RbYWN0aW9uTmFtZV1cblxuICAgICAgdGhpcy5vcHRpb25zW2FjdGlvbk5hbWVdID0ge31cbiAgICAgIHRoaXMuc2V0UGVyQWN0aW9uKGFjdGlvbk5hbWUsIGV4dGVuZChleHRlbmQoe30sIGRlZmF1bHRzLnBlckFjdGlvbiksIGRlZmF1bHRzLmFjdGlvbnNbYWN0aW9uTmFtZV0pKVxuXG4gICAgICB0aGlzW21ldGhvZE5hbWVdKG9wdGlvbnNbYWN0aW9uTmFtZV0pXG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBzZXR0aW5nIGluIG9wdGlvbnMpIHtcbiAgICAgIGlmIChpcy5mdW5jKHRoaXNbc2V0dGluZ10pKSB7XG4gICAgICAgIHRoaXNbc2V0dGluZ10ob3B0aW9uc1tzZXR0aW5nXSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSB0aGlzIGludGVyYWN0YWJsZSBmcm9tIHRoZSBsaXN0IG9mIGludGVyYWN0YWJsZXMgYW5kIHJlbW92ZSBpdCdzXG4gICAqIGFjdGlvbiBjYXBhYmlsaXRpZXMgYW5kIGV2ZW50IGxpc3RlbmVyc1xuICAgKlxuICAgKiBAcmV0dXJuIHtpbnRlcmFjdH1cbiAgICovXG4gIHVuc2V0ICgpIHtcbiAgICBldmVudHMucmVtb3ZlKHRoaXMudGFyZ2V0IGFzIE5vZGUsICdhbGwnKVxuXG4gICAgaWYgKGlzLnN0cmluZyh0aGlzLnRhcmdldCkpIHtcbiAgICAgIC8vIHJlbW92ZSBkZWxlZ2F0ZWQgZXZlbnRzXG4gICAgICBmb3IgKGNvbnN0IHR5cGUgaW4gZXZlbnRzLmRlbGVnYXRlZEV2ZW50cykge1xuICAgICAgICBjb25zdCBkZWxlZ2F0ZWQgPSBldmVudHMuZGVsZWdhdGVkRXZlbnRzW3R5cGVdXG5cbiAgICAgICAgaWYgKGRlbGVnYXRlZC5zZWxlY3RvcnNbMF0gPT09IHRoaXMudGFyZ2V0ICYmXG4gICAgICAgICAgICBkZWxlZ2F0ZWQuY29udGV4dHNbMF0gPT09IHRoaXMuX2NvbnRleHQpIHtcbiAgICAgICAgICBkZWxlZ2F0ZWQuc2VsZWN0b3JzLnNwbGljZSgwLCAxKVxuICAgICAgICAgIGRlbGVnYXRlZC5jb250ZXh0cy5zcGxpY2UoMCwgMSlcbiAgICAgICAgICBkZWxlZ2F0ZWQubGlzdGVuZXJzLnNwbGljZSgwLCAxKVxuXG4gICAgICAgICAgLy8gcmVtb3ZlIHRoZSBhcnJheXMgaWYgdGhleSBhcmUgZW1wdHlcbiAgICAgICAgICBpZiAoIWRlbGVnYXRlZC5zZWxlY3RvcnMubGVuZ3RoKSB7XG4gICAgICAgICAgICBkZWxlZ2F0ZWRbdHlwZV0gPSBudWxsXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgZXZlbnRzLnJlbW92ZSh0aGlzLl9jb250ZXh0LCB0eXBlLCBldmVudHMuZGVsZWdhdGVMaXN0ZW5lcilcbiAgICAgICAgZXZlbnRzLnJlbW92ZSh0aGlzLl9jb250ZXh0LCB0eXBlLCBldmVudHMuZGVsZWdhdGVVc2VDYXB0dXJlLCB0cnVlKVxuICAgICAgfVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGV2ZW50cy5yZW1vdmUodGhpcy50YXJnZXQgYXMgTm9kZSwgJ2FsbCcpXG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEludGVyYWN0YWJsZVxuIl19

@@ -28,2 +28,3 @@ import Interactable from './Interactable';

delta: Interact.Point;
rect: Required<Interact.Rect>;
x0: number;

@@ -30,0 +31,0 @@ y0: number;

@@ -32,2 +32,3 @@ import extend from '@interactjs/utils/extend';

this.client = extend({}, coords.client);
this.rect = extend({}, interaction.rect);
this.timeStamp = coords.timeStamp;

@@ -135,2 +136,2 @@ if (!ending) {

export default InteractEvent;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSW50ZXJhY3RFdmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIkludGVyYWN0RXZlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxNQUFNLE1BQU0sMEJBQTBCLENBQUE7QUFDN0MsT0FBTyxXQUFXLE1BQU0sK0JBQStCLENBQUE7QUFDdkQsT0FBTyxLQUFLLE1BQU0seUJBQXlCLENBQUE7QUFDM0MsT0FBTyxRQUFRLE1BQU0sa0JBQWtCLENBQUE7QUFLdkMsTUFBTSxDQUFOLElBQVksVUFLWDtBQUxELFdBQVksVUFBVTtJQUNwQiw2QkFBZSxDQUFBO0lBQ2YsMkJBQWEsQ0FBQTtJQUNiLHlCQUFXLENBQUE7SUFDWCx3QkFBVSxDQUFBO0FBQ1osQ0FBQyxFQUxXLFVBQVUsS0FBVixVQUFVLFFBS3JCO0FBRUQsTUFBTSxPQUFPLGFBQWE7SUEwQ3hCLE1BQU07SUFDTixZQUNFLFdBQXdCLEVBQ3hCLEtBQWdDLEVBQ2hDLFVBQWEsRUFDYixLQUFRLEVBQ1IsT0FBZ0IsRUFDaEIsT0FBaUIsRUFDakIsTUFBZ0IsRUFDaEIsSUFBYTtRQVpmLGdDQUEyQixHQUFHLEtBQUssQ0FBQTtRQUNuQyx1QkFBa0IsR0FBRyxLQUFLLENBQUE7UUFheEIsT0FBTyxHQUFHLE9BQU8sSUFBSSxXQUFXLENBQUMsT0FBTyxDQUFBO1FBRXhDLE1BQU0sTUFBTSxHQUFRLFdBQVcsQ0FBQyxZQUFZLENBQUE7UUFDNUMscUNBQXFDO1FBQ3JDLE1BQU0sV0FBVyxHQUFJLENBQUMsQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLFFBQVEsQ0FBUyxDQUFDLFdBQWdDLENBQUE7UUFDdEcsTUFBTSxNQUFNLEdBQVEsV0FBVyxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUE7UUFDNUQsTUFBTSxRQUFRLEdBQU0sS0FBSyxLQUFLLE9BQU8sQ0FBQTtRQUNyQyxNQUFNLE1BQU0sR0FBUSxLQUFLLEtBQUssS0FBSyxD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QUFBO0lBQzVFLENBQUM7SUFFRCxJQUFJLEtBQUssS0FBTSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBLENBQUMsQ0FBQztJQUNuQyxJQUFJLEtBQUssQ0FBRSxLQUFLLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFBLENBQUMsQ0FBQztJQUN6QyxJQUFJLEtBQUssS0FBTSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBLENBQUMsQ0FBQztJQUNuQyxJQUFJLEtBQUssQ0FBRSxLQUFLLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFBLENBQUMsQ0FBQztJQUV6QyxJQUFJLE9BQU8sS0FBTSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFBLENBQUMsQ0FBQztJQUN2QyxJQUFJLE9BQU8sQ0FBRSxLQUFLLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFBLENBQUMsQ0FBQztJQUM3QyxJQUFJLE9BQU8sS0FBTSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFBLENBQUMsQ0FBQztJQUN2QyxJQUFJLE9BQU8sQ0FBRSxLQUFLLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFBLENBQUMsQ0FBQztJQUU3QyxJQUFJLEVBQUUsS0FBTSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFBLENBQUMsQ0FBQztJQUNqQyxJQUFJLEVBQUUsQ0FBRSxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFBLENBQUMsQ0FBQztJQUN2QyxJQUFJLEVBQUUsS0FBTSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFBLENBQUMsQ0FBQztJQUNqQyxJQUFJLEVBQUUsQ0FBRSxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFBLENBQUMsQ0FBQztJQUV2QyxJQUFJLFNBQVMsS0FBTSxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFBLENBQUMsQ0FBQztJQUMzQyxJQUFJLFNBQVMsQ0FBRSxLQUFLLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFBLENBQUMsQ0FBQztJQUNqRCxJQUFJLFNBQVMsS0FBTSxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFBLENBQUMsQ0FBQztJQUMzQyxJQUFJLFNBQVMsQ0FBRSxLQUFLLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFBLENBQUMsQ0FBQztJQUVqRCxRQUFRO1FBQ04sTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQTtRQUVwQyxJQUFJLFdBQVcsQ0FBQyxTQUFTLENBQUMsS0FBSyxHQUFHLEdBQUc7WUFDakMsSUFBSSxDQUFDLFNBQVMsR0FBRyxXQUFXLENBQUMsU0FBUyxDQUFDLFNBQVMsR0FBRyxHQUFHLEVBQUU7WUFDMUQsT0FBTyxJQUFJLENBQUE7U0FDWjtRQUVELElBQUksS0FBSyxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFLFdBQVcsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQTtRQUN4RyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUE7UUFFcEIsSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFO1lBQ2IsS0FBSyxJQUFJLEdBQUcsQ0FBQTtTQUNiO1FBRUQsTUFBTSxJQUFJLEdBQUcsR0FBRyxHQUFHLE9BQU8sSUFBSSxLQUFLLElBQUksS0FBSyxHQUFHLEdBQUcsR0FBRyxPQUFPLENBQUE7UUFDNUQsTUFBTSxFQUFFLEdBQUssR0FBRyxHQUFHLE9BQU8sSUFBSSxLQUFLLElBQUksS0FBSyxHQUFHLEdBQUcsR0FBRyxPQUFPLENBQUE7UUFFNUQsTUFBTSxLQUFLLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxHQUFHLEdBQUcsT0FBTyxJQUFJLEtBQUssSUFBSSxLQUFLLEdBQUksRUFBRSxHQUFHLE9BQU8sQ0FBQyxDQUFBO1FBQ3hFLE1BQU0sSUFBSSxHQUFJLENBQUMsRUFBRSxJQUFRLEVBQUUsR0FBRyxPQUFPLElBQUksS0FBSyxJQUFJLEtBQUssR0FBRyxHQUFHLEdBQUcsT0FBTyxDQUFBO1FBRXZFLE9BQU87WUFDTCxFQUFFO1lBQ0YsSUFBSTtZQUNKLElBQUk7WUFDSixLQUFLO1lBQ0wsS0FBSztZQUNMLEtBQUssRUFBRSxXQUFXLENBQUMsU0FBUyxDQUFDLEtBQUs7WUFDbEMsUUFBUSxFQUFFO2dCQUNSLENBQUMsRUFBRSxXQUFXLENBQUMsU0FBUyxDQUFDLFNBQVM7Z0JBQ2xDLENBQUMsRUFBRSxXQUFXLENBQUMsU0FBUyxDQUFDLFNBQVM7YUFDbkM7U0FDRixDQUFBO0lBQ0gsQ0FBQztJQUVELGNBQWMsS0FBSyxDQUFDO0lBRXBCOztPQUVHO0lBQ0gsd0JBQXdCO1FBQ3RCLElBQUksQ0FBQywyQkFBMkIsR0FBRyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFBO0lBQ25FLENBQUM7SUFFRDs7T0FFRztJQUNILGVBQWU7UUFDYixJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFBO0lBQ2hDLENBQUM7Q0FDRjtBQUVELGVBQWUsYUFBYSxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGV4dGVuZCBmcm9tICdAaW50ZXJhY3Rqcy91dGlscy9leHRlbmQnXG5pbXBvcnQgZ2V0T3JpZ2luWFkgZnJvbSAnQGludGVyYWN0anMvdXRpbHMvZ2V0T3JpZ2luWFknXG5pbXBvcnQgaHlwb3QgZnJvbSAnQGludGVyYWN0anMvdXRpbHMvaHlwb3QnXG5pbXBvcnQgZGVmYXVsdHMgZnJvbSAnLi9kZWZhdWx0T3B0aW9ucydcbmltcG9ydCBJbnRlcmFjdGFibGUgZnJvbSAnLi9JbnRlcmFjdGFibGUnXG5pbXBvcnQgSW50ZXJhY3Rpb24gZnJvbSAnLi9JbnRlcmFjdGlvbidcbmltcG9ydCB7IEFjdGlvbk5hbWUgfSBmcm9tICcuL3Njb3BlJ1xuXG5leHBvcnQgZW51bSBFdmVudFBoYXNlIHtcbiAgU3RhcnQgPSAnc3RhcnQnLFxuICBNb3ZlID0gJ21vdmUnLFxuICBFbmQgPSAnZW5kJyxcbiAgX05PTkUgPSAnJyxcbn1cblxuZXhwb3J0IGNsYXNzIEludGVyYWN0RXZlbnQ8XG4gIFQgZXh0ZW5kcyBBY3Rpb25OYW1lID0gYW55LFxuICBQIGV4dGVuZHMgRXZlbnRQaGFzZSA9IEV2ZW50UGhhc2UuX05PTkUsXG4+IHtcbiAgdHlwZTogc3RyaW5nXG4gIHRhcmdldDogRWxlbWVudFxuICByZWxhdGVkVGFyZ2V0OiBFbGVtZW50IHwgbnVsbFxuICBjdXJyZW50VGFyZ2V0OiBFbGVtZW50XG4gIHNjcmVlblg/OiBudW1iZXJcbiAgc2NyZWVuWT86IG51bWJlclxuICBidXR0b246IG51bWJlclxuICBidXR0b25zOiBudW1iZXJcbiAgY3RybEtleTogYm9vbGVhblxuICBzaGlmdEtleTogYm9vbGVhblxuICBhbHRLZXk6IGJvb2xlYW5cbiAgbWV0YUtleTogYm9vbGVhblxuICAvLyBhZGRlZCBieSBpbnRlcmFjdC5qc1xuICBpbnRlcmFjdGFibGU6IEludGVyYWN0YWJsZVxuICBpbnRlcmFjdGlvbjogSW50ZXJhY3Rpb248VD5cbiAgcGFnZTogSW50ZXJhY3QuUG9pbnRcbiAgY2xpZW50OiBJbnRlcmFjdC5Qb2ludFxuICBkZWx0YTogSW50ZXJhY3QuUG9pbnRcbiAgeDA6IG51bWJlclxuICB5MDogbnVtYmVyXG4gIHQwOiBudW1iZXJcbiAgZHQ6IG51bWJlclxuICBkdXJhdGlvbjogbnVtYmVyXG4gIGNsaWVudFgwOiBudW1iZXJcbiAgY2xpZW50WTA6IG51bWJlclxuICB2ZWxvY2l0eTogSW50ZXJhY3QuUG9pbnRcbiAgc3BlZWQ6IG51bWJlclxuICBzd2lwZTogUmV0dXJuVHlwZTxJbnRlcmFjdEV2ZW50PFQ+WydnZXRTd2lwZSddPlxuICB0aW1lU3RhbXA6IGFueVxuICAvLyBkcmFnXG4gIGRyYWdFbnRlcj86IEVsZW1lbnRcbiAgZHJhZ0xlYXZlPzogRWxlbWVudFxuICAvLyByZXNpemVcbiAgYXhlcz86IEludGVyYWN0LlBvaW50XG4gIHByZUVuZD86IGJvb2xlYW5cbiAgaW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkID0gZmFsc2VcbiAgcHJvcGFnYXRpb25TdG9wcGVkID0gZmFsc2VcblxuICAvKiogKi9cbiAgY29uc3RydWN0b3IgKFxuICAgIGludGVyYWN0aW9uOiBJbnRlcmFjdGlvbixcbiAgICBldmVudDogSW50ZXJhY3QuUG9pbnRlckV2ZW50VHlwZSxcbiAgICBhY3Rpb25OYW1lOiBULFxuICAgIHBoYXNlOiBQLFxuICAgIGVsZW1lbnQ6IEVsZW1lbnQsXG4gICAgcmVsYXRlZD86IEVsZW1lbnQsXG4gICAgcHJlRW5kPzogYm9vbGVhbixcbiAgICB0eXBlPzogc3RyaW5nLFxuICApIHtcbiAgICBlbGVtZW50ID0gZWxlbWVudCB8fCBpbnRlcmFjdGlvbi5lbGVtZW50XG5cbiAgICBjb25zdCB0YXJnZXQgICAgICA9IGludGVyYWN0aW9uLmludGVyYWN0YWJsZVxuICAgIC8vIEZJWE1FOiBhZGQgZGVsdGFTb3VyY2UgdG8gZGVmYXVsdHNcbiAgICBjb25zdCBkZWx0YVNvdXJjZSA9ICgoKHRhcmdldCAmJiB0YXJnZXQub3B0aW9ucykgfHwgZGVmYXVsdHMpIGFzIGFueSkuZGVsdGFTb3VyY2UgYXMgJ3BhZ2UnIHwgJ2NsaWVudCdcbiAgICBjb25zdCBvcmlnaW4gICAgICA9IGdldE9yaWdpblhZKHRhcmdldCwgZWxlbWVudCwgYWN0aW9uTmFtZSlcbiAgICBjb25zdCBzdGFydGluZyAgICA9IHBoYXNlID09PSAnc3RhcnQnXG4gICAgY29uc3QgZW5kaW5nICAgICAgPSBwaGFzZSA9PT0gJ2VuZCdcbiAgICBjb25zdCBwcmV2RXZlbnQgICA9IHN0YXJ0aW5nID8gdGhpcyA6IGludGVyYWN0aW9uLnByZXZFdmVudFxuICAgIGNvbnN0IGNvb3JkcyAgICAgID0gc3RhcnRpbmdcbiAgICAgID8gaW50ZXJhY3Rpb24uY29vcmRzLnN0YXJ0XG4gICAgICA6IGVuZGluZ1xuICAgICAgICA/IHsgcGFnZTogcHJldkV2ZW50LnBhZ2UsIGNsaWVudDogcHJldkV2ZW50LmNsaWVudCwgdGltZVN0YW1wOiBpbnRlcmFjdGlvbi5jb29yZHMuY3VyLnRpbWVTdGFtcCB9XG4gICAgICAgIDogaW50ZXJhY3Rpb24uY29vcmRzLmN1clxuXG4gICAgdGhpcy5wYWdlICAgICAgPSBleHRlbmQoe30sIGNvb3Jkcy5wYWdlKVxuICAgIHRoaXMuY2xpZW50ICAgID0gZXh0ZW5kKHt9LCBjb29yZHMuY2xpZW50KVxuICAgIHRoaXMudGltZVN0YW1wID0gY29vcmRzLnRpbWVTdGFtcFxuXG4gICAgaWYgKCFlbmRpbmcpIHtcbiAgICAgIHRoaXMucGFnZS54IC09IG9yaWdpbi54XG4gICAgICB0aGlzLnBhZ2UueSAtPSBvcmlnaW4ueVxuXG4gICAgICB0aGlzLmNsaWVudC54IC09IG9yaWdpbi54XG4gICAgICB0aGlzLmNsaWVudC55IC09IG9yaWdpbi55XG4gICAgfVxuXG4gICAgdGhpcy5jdHJsS2V5ICAgICAgID0gZXZlbnQuY3RybEtleVxuICAgIHRoaXMuYWx0S2V5ICAgICAgICA9IGV2ZW50LmFsdEtleVxuICAgIHRoaXMuc2hpZnRLZXkgICAgICA9IGV2ZW50LnNoaWZ0S2V5XG4gICAgdGhpcy5tZXRhS2V5ICAgICAgID0gZXZlbnQubWV0YUtleVxuICAgIHRoaXMuYnV0dG9uICAgICAgICA9IChldmVudCBhcyBNb3VzZUV2ZW50KS5idXR0b25cbiAgICB0aGlzLmJ1dHRvbnMgICAgICAgPSAoZXZlbnQgYXMgTW91c2VFdmVudCkuYnV0dG9uc1xuICAgIHRoaXMudGFyZ2V0ICAgICAgICA9IGVsZW1lbnRcbiAgICB0aGlzLmN1cnJlbnRUYXJnZXQgPSBlbGVtZW50XG4gICAgdGhpcy5yZWxhdGVkVGFyZ2V0ID0gcmVsYXRlZCB8fCBudWxsXG4gICAgdGhpcy5wcmVFbmQgICAgICAgID0gcHJlRW5kXG4gICAgdGhpcy50eXBlICAgICAgICAgID0gdHlwZSB8fCAoYWN0aW9uTmFtZSArIChwaGFzZSB8fCAnJykpXG4gICAgdGhpcy5pbnRlcmFjdGlvbiAgID0gaW50ZXJhY3Rpb25cbiAgICB0aGlzLmludGVyYWN0YWJsZSAgPSB0YXJnZXRcblxuICAgIHRoaXMudDAgPSBzdGFydGluZ1xuICAgICAgPyBpbnRlcmFjdGlvbi5wb2ludGVyc1tpbnRlcmFjdGlvbi5wb2ludGVycy5sZW5ndGggLSAxXS5kb3duVGltZVxuICAgICAgOiBwcmV2RXZlbnQudDBcblxuICAgIHRoaXMueDAgICAgICAgPSBpbnRlcmFjdGlvbi5jb29yZHMuc3RhcnQucGFnZS54IC0gb3JpZ2luLnhcbiAgICB0aGlzLnkwICAgICAgID0gaW50ZXJhY3Rpb24uY29vcmRzLnN0YXJ0LnBhZ2UueSAtIG9yaWdpbi55XG4gICAgdGhpcy5jbGllbnRYMCA9IGludGVyYWN0aW9uLmNvb3Jkcy5zdGFydC5jbGllbnQueCAtIG9yaWdpbi54XG4gICAgdGhpcy5jbGllbnRZMCA9IGludGVyYWN0aW9uLmNvb3Jkcy5zdGFydC5jbGllbnQueSAtIG9yaWdpbi55XG5cbiAgICBpZiAoc3RhcnRpbmcgfHwgZW5kaW5nKSB7XG4gICAgICB0aGlzLmRlbHRhID0geyB4OiAwLCB5OiAwIH1cbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICB0aGlzLmRlbHRhID0ge1xuICAgICAgICB4OiB0aGlzW2RlbHRhU291cmNlXS54IC0gcHJldkV2ZW50W2RlbHRhU291cmNlXS54LFxuICAgICAgICB5OiB0aGlzW2RlbHRhU291cmNlXS55IC0gcHJldkV2ZW50W2RlbHRhU291cmNlXS55LFxuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuZHQgICAgICAgID0gaW50ZXJhY3Rpb24uY29vcmRzLmRlbHRhLnRpbWVTdGFtcFxuICAgIHRoaXMuZHVyYXRpb24gID0gdGhpcy50aW1lU3RhbXAgLSB0aGlzLnQwXG5cbiAgICAvLyB2ZWxvY2l0eSBhbmQgc3BlZWQgaW4gcGl4ZWxzIHBlciBzZWNvbmRcbiAgICB0aGlzLnZlbG9jaXR5ID0gZXh0ZW5kKHt9LCBpbnRlcmFjdGlvbi5jb29yZHMudmVsb2NpdHlbZGVsdGFTb3VyY2VdKVxuICAgIHRoaXMuc3BlZWQgPSBoeXBvdCh0aGlzLnZlbG9jaXR5LngsIHRoaXMudmVsb2NpdHkueSlcblxuICAgIHRoaXMuc3dpcGUgPSAoZW5kaW5nIHx8IHBoYXNlID09PSAnaW5lcnRpYXN0YXJ0JykgPyB0aGlzLmdldFN3aXBlKCkgOiBudWxsXG4gIH1cblxuICBnZXQgcGFnZVggKCkgeyByZXR1cm4gdGhpcy5wYWdlLnggfVxuICBzZXQgcGFnZVggKHZhbHVlKSB7IHRoaXMucGFnZS54ID0gdmFsdWUgfVxuICBnZXQgcGFnZVkgKCkgeyByZXR1cm4gdGhpcy5wYWdlLnkgfVxuICBzZXQgcGFnZVkgKHZhbHVlKSB7IHRoaXMucGFnZS55ID0gdmFsdWUgfVxuXG4gIGdldCBjbGllbnRYICgpIHsgcmV0dXJuIHRoaXMuY2xpZW50LnggfVxuICBzZXQgY2xpZW50WCAodmFsdWUpIHsgdGhpcy5jbGllbnQueCA9IHZhbHVlIH1cbiAgZ2V0IGNsaWVudFkgKCkgeyByZXR1cm4gdGhpcy5jbGllbnQueSB9XG4gIHNldCBjbGllbnRZICh2YWx1ZSkgeyB0aGlzLmNsaWVudC55ID0gdmFsdWUgfVxuXG4gIGdldCBkeCAoKSB7IHJldHVybiB0aGlzLmRlbHRhLnggfVxuICBzZXQgZHggKHZhbHVlKSB7IHRoaXMuZGVsdGEueCA9IHZhbHVlIH1cbiAgZ2V0IGR5ICgpIHsgcmV0dXJuIHRoaXMuZGVsdGEueSB9XG4gIHNldCBkeSAodmFsdWUpIHsgdGhpcy5kZWx0YS55ID0gdmFsdWUgfVxuXG4gIGdldCB2ZWxvY2l0eVggKCkgeyByZXR1cm4gdGhpcy52ZWxvY2l0eS54IH1cbiAgc2V0IHZlbG9jaXR5WCAodmFsdWUpIHsgdGhpcy52ZWxvY2l0eS54ID0gdmFsdWUgfVxuICBnZXQgdmVsb2NpdHlZICgpIHsgcmV0dXJuIHRoaXMudmVsb2NpdHkueSB9XG4gIHNldCB2ZWxvY2l0eVkgKHZhbHVlKSB7IHRoaXMudmVsb2NpdHkueSA9IHZhbHVlIH1cblxuICBnZXRTd2lwZSAoKSB7XG4gICAgY29uc3QgaW50ZXJhY3Rpb24gPSB0aGlzLmludGVyYWN0aW9uXG5cbiAgICBpZiAoaW50ZXJhY3Rpb24ucHJldkV2ZW50LnNwZWVkIDwgNjAwIHx8XG4gICAgICAgIHRoaXMudGltZVN0YW1wIC0gaW50ZXJhY3Rpb24ucHJldkV2ZW50LnRpbWVTdGFtcCA+IDE1MCkge1xuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG5cbiAgICBsZXQgYW5nbGUgPSAxODAgKiBNYXRoLmF0YW4yKGludGVyYWN0aW9uLnByZXZFdmVudC52ZWxvY2l0eVksIGludGVyYWN0aW9uLnByZXZFdmVudC52ZWxvY2l0eVgpIC8gTWF0aC5QSVxuICAgIGNvbnN0IG92ZXJsYXAgPSAyMi41XG5cbiAgICBpZiAoYW5nbGUgPCAwKSB7XG4gICAgICBhbmdsZSArPSAzNjBcbiAgICB9XG5cbiAgICBjb25zdCBsZWZ0ID0gMTM1IC0gb3ZlcmxhcCA8PSBhbmdsZSAmJiBhbmdsZSA8IDIyNSArIG92ZXJsYXBcbiAgICBjb25zdCB1cCAgID0gMjI1IC0gb3ZlcmxhcCA8PSBhbmdsZSAmJiBhbmdsZSA8IDMxNSArIG92ZXJsYXBcblxuICAgIGNvbnN0IHJpZ2h0ID0gIWxlZnQgJiYgKDMxNSAtIG92ZXJsYXAgPD0gYW5nbGUgfHwgYW5nbGUgPCAgNDUgKyBvdmVybGFwKVxuICAgIGNvbnN0IGRvd24gID0gIXVwICAgJiYgICA0NSAtIG92ZXJsYXAgPD0gYW5nbGUgJiYgYW5nbGUgPCAxMzUgKyBvdmVybGFwXG5cbiAgICByZXR1cm4ge1xuICAgICAgdXAsXG4gICAgICBkb3duLFxuICAgICAgbGVmdCxcbiAgICAgIHJpZ2h0LFxuICAgICAgYW5nbGUsXG4gICAgICBzcGVlZDogaW50ZXJhY3Rpb24ucHJldkV2ZW50LnNwZWVkLFxuICAgICAgdmVsb2NpdHk6IHtcbiAgICAgICAgeDogaW50ZXJhY3Rpb24ucHJldkV2ZW50LnZlbG9jaXR5WCxcbiAgICAgICAgeTogaW50ZXJhY3Rpb24ucHJldkV2ZW50LnZlbG9jaXR5WSxcbiAgICAgIH0sXG4gICAgfVxuICB9XG5cbiAgcHJldmVudERlZmF1bHQgKCkge31cblxuICAvKipcbiAgICogRG9uJ3QgY2FsbCBsaXN0ZW5lcnMgb24gdGhlIHJlbWFpbmluZyB0YXJnZXRzXG4gICAqL1xuICBzdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24gKCkge1xuICAgIHRoaXMuaW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkID0gdGhpcy5wcm9wYWdhdGlvblN0b3BwZWQgPSB0cnVlXG4gIH1cblxuICAvKipcbiAgICogRG9uJ3QgY2FsbCBhbnkgb3RoZXIgbGlzdGVuZXJzIChldmVuIG9uIHRoZSBjdXJyZW50IHRhcmdldClcbiAgICovXG4gIHN0b3BQcm9wYWdhdGlvbiAoKSB7XG4gICAgdGhpcy5wcm9wYWdhdGlvblN0b3BwZWQgPSB0cnVlXG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgSW50ZXJhY3RFdmVudFxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSW50ZXJhY3RFdmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIkludGVyYWN0RXZlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxNQUFNLE1BQU0sMEJBQTBCLENBQUE7QUFDN0MsT0FBTyxXQUFXLE1BQU0sK0JBQStCLENBQUE7QUFDdkQsT0FBTyxLQUFLLE1BQU0seUJBQXlCLENBQUE7QUFDM0MsT0FBTyxRQUFRLE1BQU0sa0JBQWtCLENBQUE7QUFLdkMsTUFBTSxDQUFOLElBQVksVUFLWDtBQUxELFdBQVksVUFBVTtJQUNwQiw2QkFBZSxDQUFBO0lBQ2YsMkJBQWEsQ0FBQTtJQUNiLHlCQUFXLENBQUE7SUFDWCx3QkFBVSxDQUFBO0FBQ1osQ0FBQyxFQUxXLFVBQVUsS0FBVixVQUFVLFFBS3JCO0FBRUQsTUFBTSxPQUFPLGFBQWE7SUEyQ3hCLE1BQU07SUFDTixZQUNFLFdBQXdCLEVBQ3hCLEtBQWdDLEVBQ2hDLFVBQWEsRUFDYixLQUFRLEVBQ1IsT0FBZ0IsRUFDaEIsT0FBaUIsRUFDakIsTUFBZ0IsRUFDaEIsSUFBYTtRQVpmLGdDQUEyQixHQUFHLEtBQUssQ0FBQTtRQUNuQyx1QkFBa0IsR0FBRyxLQUFLLENBQUE7UUFheEIsT0FBTyxHQUFHLE9BQU8sSUFBSSxXQUFXLENBQUMsT0FBTyxDQUFBO1FBRXhDLE1BQU0sTUFBTSxHQUFRLFdBQVcsQ0FBQyxZQUFZLENBQUE7UUFDNUMscUNBQXFDO1FBQ3JDLE1BQU0sV0FBVyxHQUFJLENBQUMsQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLFFBQVEsQ0FBUyxDQUFDLFdBQWdDLENBQUE7UUFDdEcsTUFBTSxNQUFNLEdBQVEsV0FBVyxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUE7UUFDNUQsTUFBTSxRQUFRLEdBQU0sS0FBSyxLQUFLLE9BQU8sQ0FBQTtRQUNyQyxNQUFNLE1BQU0sR0FBUSxLQUFLLEtBQUssS0FBSyxD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QUMxRCxJQUFJLENBQUMsUUFBUSxHQUFHLFdBQVcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQTtRQUM1RCxJQUFJLENBQUMsUUFBUSxHQUFHLFdBQVcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQTtRQUU1RCxJQUFJLFFBQVEsSUFBSSxNQUFNLEVBQUU7WUFDdEIsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFBO1NBQzVCO2FBQ0k7WUFDSCxJQUFJLENBQUMsS0FBSyxHQUFHO2dCQUNYLENBQUMsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO2dCQUNqRCxDQUFDLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQzthQUNsRCxDQUFBO1NBQ0Y7UUFFRCxJQUFJLENBQUMsRUFBRSxHQUFVLFdBQVcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQTtRQUNuRCxJQUFJLENBQUMsUUFBUSxHQUFJLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQTtRQUV6QywwQ0FBMEM7UUFDMUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUMsRUFBRSxFQUFFLFdBQVcsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUE7UUFDcEUsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUVwRCxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsTUFBTSxJQUFJLEtBQUssS0FBSyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUE7SUFDNUUsQ0FBQztJQUVELElBQUksS0FBSyxLQUFNLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUEsQ0FBQyxDQUFDO0lBQ25DLElBQUksS0FBSyxDQUFFLEtBQUssSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUEsQ0FBQyxDQUFDO0lBQ3pDLElBQUksS0FBSyxLQUFNLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUEsQ0FBQyxDQUFDO0lBQ25DLElBQUksS0FBSyxDQUFFLEtBQUssSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUEsQ0FBQyxDQUFDO0lBRXpDLElBQUksT0FBTyxLQUFNLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUEsQ0FBQyxDQUFDO0lBQ3ZDLElBQUksT0FBTyxDQUFFLEtBQUssSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUEsQ0FBQyxDQUFDO0lBQzdDLElBQUksT0FBTyxLQUFNLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUEsQ0FBQyxDQUFDO0lBQ3ZDLElBQUksT0FBTyxDQUFFLEtBQUssSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUEsQ0FBQyxDQUFDO0lBRTdDLElBQUksRUFBRSxLQUFNLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUEsQ0FBQyxDQUFDO0lBQ2pDLElBQUksRUFBRSxDQUFFLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUEsQ0FBQyxDQUFDO0lBQ3ZDLElBQUksRUFBRSxLQUFNLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUEsQ0FBQyxDQUFDO0lBQ2pDLElBQUksRUFBRSxDQUFFLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUEsQ0FBQyxDQUFDO0lBRXZDLElBQUksU0FBUyxLQUFNLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUEsQ0FBQyxDQUFDO0lBQzNDLElBQUksU0FBUyxDQUFFLEtBQUssSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUEsQ0FBQyxDQUFDO0lBQ2pELElBQUksU0FBUyxLQUFNLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUEsQ0FBQyxDQUFDO0lBQzNDLElBQUksU0FBUyxDQUFFLEtBQUssSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUEsQ0FBQyxDQUFDO0lBRWpELFFBQVE7UUFDTixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFBO1FBRXBDLElBQUksV0FBVyxDQUFDLFNBQVMsQ0FBQyxLQUFLLEdBQUcsR0FBRztZQUNqQyxJQUFJLENBQUMsU0FBUyxHQUFHLFdBQVcsQ0FBQyxTQUFTLENBQUMsU0FBUyxHQUFHLEdBQUcsRUFBRTtZQUMxRCxPQUFPLElBQUksQ0FBQTtTQUNaO1FBRUQsSUFBSSxLQUFLLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsV0FBVyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFBO1FBQ3hHLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQTtRQUVwQixJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUU7WUFDYixLQUFLLElBQUksR0FBRyxDQUFBO1NBQ2I7UUFFRCxNQUFNLElBQUksR0FBRyxHQUFHLEdBQUcsT0FBTyxJQUFJLEtBQUssSUFBSSxLQUFLLEdBQUcsR0FBRyxHQUFHLE9BQU8sQ0FBQTtRQUM1RCxNQUFNLEVBQUUsR0FBSyxHQUFHLEdBQUcsT0FBTyxJQUFJLEtBQUssSUFBSSxLQUFLLEdBQUcsR0FBRyxHQUFHLE9BQU8sQ0FBQTtRQUU1RCxNQUFNLEtBQUssR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLEdBQUcsR0FBRyxPQUFPLElBQUksS0FBSyxJQUFJLEtBQUssR0FBSSxFQUFFLEdBQUcsT0FBTyxDQUFDLENBQUE7UUFDeEUsTUFBTSxJQUFJLEdBQUksQ0FBQyxFQUFFLElBQVEsRUFBRSxHQUFHLE9BQU8sSUFBSSxLQUFLLElBQUksS0FBSyxHQUFHLEdBQUcsR0FBRyxPQUFPLENBQUE7UUFFdkUsT0FBTztZQUNMLEVBQUU7WUFDRixJQUFJO1lBQ0osSUFBSTtZQUNKLEtBQUs7WUFDTCxLQUFLO1lBQ0wsS0FBSyxFQUFFLFdBQVcsQ0FBQyxTQUFTLENBQUMsS0FBSztZQUNsQyxRQUFRLEVBQUU7Z0JBQ1IsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxTQUFTLENBQUMsU0FBUztnQkFDbEMsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxTQUFTLENBQUMsU0FBUzthQUNuQztTQUNGLENBQUE7SUFDSCxDQUFDO0lBRUQsY0FBYyxLQUFLLENBQUM7SUFFcEI7O09BRUc7SUFDSCx3QkFBd0I7UUFDdEIsSUFBSSxDQUFDLDJCQUEyQixHQUFHLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUE7SUFDbkUsQ0FBQztJQUVEOztPQUVHO0lBQ0gsZUFBZTtRQUNiLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUE7SUFDaEMsQ0FBQztDQUNGO0FBRUQsZUFBZSxhQUFhLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZXh0ZW5kIGZyb20gJ0BpbnRlcmFjdGpzL3V0aWxzL2V4dGVuZCdcbmltcG9ydCBnZXRPcmlnaW5YWSBmcm9tICdAaW50ZXJhY3Rqcy91dGlscy9nZXRPcmlnaW5YWSdcbmltcG9ydCBoeXBvdCBmcm9tICdAaW50ZXJhY3Rqcy91dGlscy9oeXBvdCdcbmltcG9ydCBkZWZhdWx0cyBmcm9tICcuL2RlZmF1bHRPcHRpb25zJ1xuaW1wb3J0IEludGVyYWN0YWJsZSBmcm9tICcuL0ludGVyYWN0YWJsZSdcbmltcG9ydCBJbnRlcmFjdGlvbiBmcm9tICcuL0ludGVyYWN0aW9uJ1xuaW1wb3J0IHsgQWN0aW9uTmFtZSB9IGZyb20gJy4vc2NvcGUnXG5cbmV4cG9ydCBlbnVtIEV2ZW50UGhhc2Uge1xuICBTdGFydCA9ICdzdGFydCcsXG4gIE1vdmUgPSAnbW92ZScsXG4gIEVuZCA9ICdlbmQnLFxuICBfTk9ORSA9ICcnLFxufVxuXG5leHBvcnQgY2xhc3MgSW50ZXJhY3RFdmVudDxcbiAgVCBleHRlbmRzIEFjdGlvbk5hbWUgPSBhbnksXG4gIFAgZXh0ZW5kcyBFdmVudFBoYXNlID0gRXZlbnRQaGFzZS5fTk9ORSxcbj4ge1xuICB0eXBlOiBzdHJpbmdcbiAgdGFyZ2V0OiBFbGVtZW50XG4gIHJlbGF0ZWRUYXJnZXQ6IEVsZW1lbnQgfCBudWxsXG4gIGN1cnJlbnRUYXJnZXQ6IEVsZW1lbnRcbiAgc2NyZWVuWD86IG51bWJlclxuICBzY3JlZW5ZPzogbnVtYmVyXG4gIGJ1dHRvbjogbnVtYmVyXG4gIGJ1dHRvbnM6IG51bWJlclxuICBjdHJsS2V5OiBib29sZWFuXG4gIHNoaWZ0S2V5OiBib29sZWFuXG4gIGFsdEtleTogYm9vbGVhblxuICBtZXRhS2V5OiBib29sZWFuXG4gIC8vIGFkZGVkIGJ5IGludGVyYWN0LmpzXG4gIGludGVyYWN0YWJsZTogSW50ZXJhY3RhYmxlXG4gIGludGVyYWN0aW9uOiBJbnRlcmFjdGlvbjxUPlxuICBwYWdlOiBJbnRlcmFjdC5Qb2ludFxuICBjbGllbnQ6IEludGVyYWN0LlBvaW50XG4gIGRlbHRhOiBJbnRlcmFjdC5Qb2ludFxuICByZWN0OiBSZXF1aXJlZDxJbnRlcmFjdC5SZWN0PlxuICB4MDogbnVtYmVyXG4gIHkwOiBudW1iZXJcbiAgdDA6IG51bWJlclxuICBkdDogbnVtYmVyXG4gIGR1cmF0aW9uOiBudW1iZXJcbiAgY2xpZW50WDA6IG51bWJlclxuICBjbGllbnRZMDogbnVtYmVyXG4gIHZlbG9jaXR5OiBJbnRlcmFjdC5Qb2ludFxuICBzcGVlZDogbnVtYmVyXG4gIHN3aXBlOiBSZXR1cm5UeXBlPEludGVyYWN0RXZlbnQ8VD5bJ2dldFN3aXBlJ10+XG4gIHRpbWVTdGFtcDogYW55XG4gIC8vIGRyYWdcbiAgZHJhZ0VudGVyPzogRWxlbWVudFxuICBkcmFnTGVhdmU/OiBFbGVtZW50XG4gIC8vIHJlc2l6ZVxuICBheGVzPzogSW50ZXJhY3QuUG9pbnRcbiAgcHJlRW5kPzogYm9vbGVhblxuICBpbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQgPSBmYWxzZVxuICBwcm9wYWdhdGlvblN0b3BwZWQgPSBmYWxzZVxuXG4gIC8qKiAqL1xuICBjb25zdHJ1Y3RvciAoXG4gICAgaW50ZXJhY3Rpb246IEludGVyYWN0aW9uLFxuICAgIGV2ZW50OiBJbnRlcmFjdC5Qb2ludGVyRXZlbnRUeXBlLFxuICAgIGFjdGlvbk5hbWU6IFQsXG4gICAgcGhhc2U6IFAsXG4gICAgZWxlbWVudDogRWxlbWVudCxcbiAgICByZWxhdGVkPzogRWxlbWVudCxcbiAgICBwcmVFbmQ/OiBib29sZWFuLFxuICAgIHR5cGU/OiBzdHJpbmcsXG4gICkge1xuICAgIGVsZW1lbnQgPSBlbGVtZW50IHx8IGludGVyYWN0aW9uLmVsZW1lbnRcblxuICAgIGNvbnN0IHRhcmdldCAgICAgID0gaW50ZXJhY3Rpb24uaW50ZXJhY3RhYmxlXG4gICAgLy8gRklYTUU6IGFkZCBkZWx0YVNvdXJjZSB0byBkZWZhdWx0c1xuICAgIGNvbnN0IGRlbHRhU291cmNlID0gKCgodGFyZ2V0ICYmIHRhcmdldC5vcHRpb25zKSB8fCBkZWZhdWx0cykgYXMgYW55KS5kZWx0YVNvdXJjZSBhcyAncGFnZScgfCAnY2xpZW50J1xuICAgIGNvbnN0IG9yaWdpbiAgICAgID0gZ2V0T3JpZ2luWFkodGFyZ2V0LCBlbGVtZW50LCBhY3Rpb25OYW1lKVxuICAgIGNvbnN0IHN0YXJ0aW5nICAgID0gcGhhc2UgPT09ICdzdGFydCdcbiAgICBjb25zdCBlbmRpbmcgICAgICA9IHBoYXNlID09PSAnZW5kJ1xuICAgIGNvbnN0IHByZXZFdmVudCAgID0gc3RhcnRpbmcgPyB0aGlzIDogaW50ZXJhY3Rpb24ucHJldkV2ZW50XG4gICAgY29uc3QgY29vcmRzICAgICAgPSBzdGFydGluZ1xuICAgICAgPyBpbnRlcmFjdGlvbi5jb29yZHMuc3RhcnRcbiAgICAgIDogZW5kaW5nXG4gICAgICAgID8geyBwYWdlOiBwcmV2RXZlbnQucGFnZSwgY2xpZW50OiBwcmV2RXZlbnQuY2xpZW50LCB0aW1lU3RhbXA6IGludGVyYWN0aW9uLmNvb3Jkcy5jdXIudGltZVN0YW1wIH1cbiAgICAgICAgOiBpbnRlcmFjdGlvbi5jb29yZHMuY3VyXG5cbiAgICB0aGlzLnBhZ2UgICAgICA9IGV4dGVuZCh7fSwgY29vcmRzLnBhZ2UpXG4gICAgdGhpcy5jbGllbnQgICAgPSBleHRlbmQoe30sIGNvb3Jkcy5jbGllbnQpXG4gICAgdGhpcy5yZWN0ICAgICAgPSBleHRlbmQoe30sIGludGVyYWN0aW9uLnJlY3QpXG4gICAgdGhpcy50aW1lU3RhbXAgPSBjb29yZHMudGltZVN0YW1wXG5cbiAgICBpZiAoIWVuZGluZykge1xuICAgICAgdGhpcy5wYWdlLnggLT0gb3JpZ2luLnhcbiAgICAgIHRoaXMucGFnZS55IC09IG9yaWdpbi55XG5cbiAgICAgIHRoaXMuY2xpZW50LnggLT0gb3JpZ2luLnhcbiAgICAgIHRoaXMuY2xpZW50LnkgLT0gb3JpZ2luLnlcbiAgICB9XG5cbiAgICB0aGlzLmN0cmxLZXkgICAgICAgPSBldmVudC5jdHJsS2V5XG4gICAgdGhpcy5hbHRLZXkgICAgICAgID0gZXZlbnQuYWx0S2V5XG4gICAgdGhpcy5zaGlmdEtleSAgICAgID0gZXZlbnQuc2hpZnRLZXlcbiAgICB0aGlzLm1ldGFLZXkgICAgICAgPSBldmVudC5tZXRhS2V5XG4gICAgdGhpcy5idXR0b24gICAgICAgID0gKGV2ZW50IGFzIE1vdXNlRXZlbnQpLmJ1dHRvblxuICAgIHRoaXMuYnV0dG9ucyAgICAgICA9IChldmVudCBhcyBNb3VzZUV2ZW50KS5idXR0b25zXG4gICAgdGhpcy50YXJnZXQgICAgICAgID0gZWxlbWVudFxuICAgIHRoaXMuY3VycmVudFRhcmdldCA9IGVsZW1lbnRcbiAgICB0aGlzLnJlbGF0ZWRUYXJnZXQgPSByZWxhdGVkIHx8IG51bGxcbiAgICB0aGlzLnByZUVuZCAgICAgICAgPSBwcmVFbmRcbiAgICB0aGlzLnR5cGUgICAgICAgICAgPSB0eXBlIHx8IChhY3Rpb25OYW1lICsgKHBoYXNlIHx8ICcnKSlcbiAgICB0aGlzLmludGVyYWN0aW9uICAgPSBpbnRlcmFjdGlvblxuICAgIHRoaXMuaW50ZXJhY3RhYmxlICA9IHRhcmdldFxuXG4gICAgdGhpcy50MCA9IHN0YXJ0aW5nXG4gICAgICA/IGludGVyYWN0aW9uLnBvaW50ZXJzW2ludGVyYWN0aW9uLnBvaW50ZXJzLmxlbmd0aCAtIDFdLmRvd25UaW1lXG4gICAgICA6IHByZXZFdmVudC50MFxuXG4gICAgdGhpcy54MCAgICAgICA9IGludGVyYWN0aW9uLmNvb3Jkcy5zdGFydC5wYWdlLnggLSBvcmlnaW4ueFxuICAgIHRoaXMueTAgICAgICAgPSBpbnRlcmFjdGlvbi5jb29yZHMuc3RhcnQucGFnZS55IC0gb3JpZ2luLnlcbiAgICB0aGlzLmNsaWVudFgwID0gaW50ZXJhY3Rpb24uY29vcmRzLnN0YXJ0LmNsaWVudC54IC0gb3JpZ2luLnhcbiAgICB0aGlzLmNsaWVudFkwID0gaW50ZXJhY3Rpb24uY29vcmRzLnN0YXJ0LmNsaWVudC55IC0gb3JpZ2luLnlcblxuICAgIGlmIChzdGFydGluZyB8fCBlbmRpbmcpIHtcbiAgICAgIHRoaXMuZGVsdGEgPSB7IHg6IDAsIHk6IDAgfVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHRoaXMuZGVsdGEgPSB7XG4gICAgICAgIHg6IHRoaXNbZGVsdGFTb3VyY2VdLnggLSBwcmV2RXZlbnRbZGVsdGFTb3VyY2VdLngsXG4gICAgICAgIHk6IHRoaXNbZGVsdGFTb3VyY2VdLnkgLSBwcmV2RXZlbnRbZGVsdGFTb3VyY2VdLnksXG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5kdCAgICAgICAgPSBpbnRlcmFjdGlvbi5jb29yZHMuZGVsdGEudGltZVN0YW1wXG4gICAgdGhpcy5kdXJhdGlvbiAgPSB0aGlzLnRpbWVTdGFtcCAtIHRoaXMudDBcblxuICAgIC8vIHZlbG9jaXR5IGFuZCBzcGVlZCBpbiBwaXhlbHMgcGVyIHNlY29uZFxuICAgIHRoaXMudmVsb2NpdHkgPSBleHRlbmQoe30sIGludGVyYWN0aW9uLmNvb3Jkcy52ZWxvY2l0eVtkZWx0YVNvdXJjZV0pXG4gICAgdGhpcy5zcGVlZCA9IGh5cG90KHRoaXMudmVsb2NpdHkueCwgdGhpcy52ZWxvY2l0eS55KVxuXG4gICAgdGhpcy5zd2lwZSA9IChlbmRpbmcgfHwgcGhhc2UgPT09ICdpbmVydGlhc3RhcnQnKSA/IHRoaXMuZ2V0U3dpcGUoKSA6IG51bGxcbiAgfVxuXG4gIGdldCBwYWdlWCAoKSB7IHJldHVybiB0aGlzLnBhZ2UueCB9XG4gIHNldCBwYWdlWCAodmFsdWUpIHsgdGhpcy5wYWdlLnggPSB2YWx1ZSB9XG4gIGdldCBwYWdlWSAoKSB7IHJldHVybiB0aGlzLnBhZ2UueSB9XG4gIHNldCBwYWdlWSAodmFsdWUpIHsgdGhpcy5wYWdlLnkgPSB2YWx1ZSB9XG5cbiAgZ2V0IGNsaWVudFggKCkgeyByZXR1cm4gdGhpcy5jbGllbnQueCB9XG4gIHNldCBjbGllbnRYICh2YWx1ZSkgeyB0aGlzLmNsaWVudC54ID0gdmFsdWUgfVxuICBnZXQgY2xpZW50WSAoKSB7IHJldHVybiB0aGlzLmNsaWVudC55IH1cbiAgc2V0IGNsaWVudFkgKHZhbHVlKSB7IHRoaXMuY2xpZW50LnkgPSB2YWx1ZSB9XG5cbiAgZ2V0IGR4ICgpIHsgcmV0dXJuIHRoaXMuZGVsdGEueCB9XG4gIHNldCBkeCAodmFsdWUpIHsgdGhpcy5kZWx0YS54ID0gdmFsdWUgfVxuICBnZXQgZHkgKCkgeyByZXR1cm4gdGhpcy5kZWx0YS55IH1cbiAgc2V0IGR5ICh2YWx1ZSkgeyB0aGlzLmRlbHRhLnkgPSB2YWx1ZSB9XG5cbiAgZ2V0IHZlbG9jaXR5WCAoKSB7IHJldHVybiB0aGlzLnZlbG9jaXR5LnggfVxuICBzZXQgdmVsb2NpdHlYICh2YWx1ZSkgeyB0aGlzLnZlbG9jaXR5LnggPSB2YWx1ZSB9XG4gIGdldCB2ZWxvY2l0eVkgKCkgeyByZXR1cm4gdGhpcy52ZWxvY2l0eS55IH1cbiAgc2V0IHZlbG9jaXR5WSAodmFsdWUpIHsgdGhpcy52ZWxvY2l0eS55ID0gdmFsdWUgfVxuXG4gIGdldFN3aXBlICgpIHtcbiAgICBjb25zdCBpbnRlcmFjdGlvbiA9IHRoaXMuaW50ZXJhY3Rpb25cblxuICAgIGlmIChpbnRlcmFjdGlvbi5wcmV2RXZlbnQuc3BlZWQgPCA2MDAgfHxcbiAgICAgICAgdGhpcy50aW1lU3RhbXAgLSBpbnRlcmFjdGlvbi5wcmV2RXZlbnQudGltZVN0YW1wID4gMTUwKSB7XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cblxuICAgIGxldCBhbmdsZSA9IDE4MCAqIE1hdGguYXRhbjIoaW50ZXJhY3Rpb24ucHJldkV2ZW50LnZlbG9jaXR5WSwgaW50ZXJhY3Rpb24ucHJldkV2ZW50LnZlbG9jaXR5WCkgLyBNYXRoLlBJXG4gICAgY29uc3Qgb3ZlcmxhcCA9IDIyLjVcblxuICAgIGlmIChhbmdsZSA8IDApIHtcbiAgICAgIGFuZ2xlICs9IDM2MFxuICAgIH1cblxuICAgIGNvbnN0IGxlZnQgPSAxMzUgLSBvdmVybGFwIDw9IGFuZ2xlICYmIGFuZ2xlIDwgMjI1ICsgb3ZlcmxhcFxuICAgIGNvbnN0IHVwICAgPSAyMjUgLSBvdmVybGFwIDw9IGFuZ2xlICYmIGFuZ2xlIDwgMzE1ICsgb3ZlcmxhcFxuXG4gICAgY29uc3QgcmlnaHQgPSAhbGVmdCAmJiAoMzE1IC0gb3ZlcmxhcCA8PSBhbmdsZSB8fCBhbmdsZSA8ICA0NSArIG92ZXJsYXApXG4gICAgY29uc3QgZG93biAgPSAhdXAgICAmJiAgIDQ1IC0gb3ZlcmxhcCA8PSBhbmdsZSAmJiBhbmdsZSA8IDEzNSArIG92ZXJsYXBcblxuICAgIHJldHVybiB7XG4gICAgICB1cCxcbiAgICAgIGRvd24sXG4gICAgICBsZWZ0LFxuICAgICAgcmlnaHQsXG4gICAgICBhbmdsZSxcbiAgICAgIHNwZWVkOiBpbnRlcmFjdGlvbi5wcmV2RXZlbnQuc3BlZWQsXG4gICAgICB2ZWxvY2l0eToge1xuICAgICAgICB4OiBpbnRlcmFjdGlvbi5wcmV2RXZlbnQudmVsb2NpdHlYLFxuICAgICAgICB5OiBpbnRlcmFjdGlvbi5wcmV2RXZlbnQudmVsb2NpdHlZLFxuICAgICAgfSxcbiAgICB9XG4gIH1cblxuICBwcmV2ZW50RGVmYXVsdCAoKSB7fVxuXG4gIC8qKlxuICAgKiBEb24ndCBjYWxsIGxpc3RlbmVycyBvbiB0aGUgcmVtYWluaW5nIHRhcmdldHNcbiAgICovXG4gIHN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbiAoKSB7XG4gICAgdGhpcy5pbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQgPSB0aGlzLnByb3BhZ2F0aW9uU3RvcHBlZCA9IHRydWVcbiAgfVxuXG4gIC8qKlxuICAgKiBEb24ndCBjYWxsIGFueSBvdGhlciBsaXN0ZW5lcnMgKGV2ZW4gb24gdGhlIGN1cnJlbnQgdGFyZ2V0KVxuICAgKi9cbiAgc3RvcFByb3BhZ2F0aW9uICgpIHtcbiAgICB0aGlzLnByb3BhZ2F0aW9uU3RvcHBlZCA9IHRydWVcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBJbnRlcmFjdEV2ZW50XG4iXX0=

@@ -19,3 +19,3 @@ import * as utils from '@interactjs/utils';

element: Element;
rect: Interact.Rect & Interact.Rect3;
rect: Interact.Rect & Interact.Size;
edges: {

@@ -118,3 +118,3 @@ [P in keyof Interact.Rect]?: boolean;

* .on('hold', function (event) {
* var interaction = event.interaction;
* var interaction = event.interaction
*

@@ -124,5 +124,5 @@ * if (!interaction.interacting()) {

* event.interactable,
* event.currentTarget);
* event.currentTarget)
* }
* });
* })
* ```

@@ -151,7 +151,7 @@ *

* // change the snap settings
* event.interactable.draggable({ snap: { targets: [] }});
* event.interactable.draggable({ snap: { targets: [] }})
* // fire another move event with re-calculated snap
* event.interaction.move();
* event.interaction.move()
* }
* });
* })
* ```

@@ -173,7 +173,7 @@ *

* // end the current action
* event.interaction.end();
* event.interaction.end()
* // stop all further listeners from being called
* event.stopImmediatePropagation();
* event.stopImmediatePropagation()
* }
* });
* })
* ```

@@ -180,0 +180,0 @@ *

@@ -79,3 +79,3 @@ import * as utils from '@interactjs/utils';

* .on('hold', function (event) {
* var interaction = event.interaction;
* var interaction = event.interaction
*

@@ -85,5 +85,5 @@ * if (!interaction.interacting()) {

* event.interactable,
* event.currentTarget);
* event.currentTarget)
* }
* });
* })
* ```

@@ -172,7 +172,7 @@ *

* // change the snap settings
* event.interactable.draggable({ snap: { targets: [] }});
* event.interactable.draggable({ snap: { targets: [] }})
* // fire another move event with re-calculated snap
* event.interaction.move();
* event.interaction.move()
* }
* });
* })
* ```

@@ -226,7 +226,7 @@ *

* // end the current action
* event.interaction.end();
* event.interaction.end()
* // stop all further listeners from being called
* event.stopImmediatePropagation();
* event.stopImmediatePropagation()
* }
* });
* })
* ```

@@ -370,2 +370,4 @@ *

}
rect.width = rect.right - rect.left;
rect.height = rect.bottom - rect.top;
}

@@ -381,2 +383,2 @@ this._signals.fire(`action-${phase}`, signalArg);

export { PointerInfo };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSW50ZXJhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJJbnRlcmFjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssS0FBSyxNQUFNLG1CQUFtQixDQUFBO0FBRTFDLE9BQU8sYUFBYSxFQUFFLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDM0QsT0FBTyxXQUFXLE1BQU0sZUFBZSxDQUFBO0FBQ3ZDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxTQUFTLENBQUE7QUFjcEMsTUFBTSxPQUFPLFdBQVc7SUE0RXRCLE1BQU07SUFDTixZQUFhLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBb0Q7UUE1RXZGLDZDQUE2QztRQUM3QyxpQkFBWSxHQUFpQixJQUFJLENBQUE7UUFFakMseUNBQXlDO1FBQ3pDLFlBQU8sR0FBWSxJQUFJLENBQUE7UUFRdkIscURBQXFEO1FBQ3JELGFBQVEsR0FBbUI7WUFDekIsSUFBSSxFQUFHLElBQUk7WUFDWCxJQUFJLEVBQUcsSUFBSTtZQUNYLEtBQUssRUFBRSxJQUFJO1NBQ1osQ0FBQTtRQUlELCtCQUErQjtRQUMvQixhQUFRLEdBQWtCLEVBQUUsQ0FBQTtRQUU1Qix5Q0FBeUM7UUFDekMsY0FBUyxHQUE4QixJQUFJLENBQUE7UUFFM0MsZ0JBQVcsR0FBeUIsRUFBMEIsQ0FBQTtRQUU5RCxtQkFBYyxHQUlWO1lBQ0YsT0FBTyxFQUFFLElBQUk7WUFDYixLQUFLLEVBQUUsSUFBSTtZQUNYLFdBQVcsRUFBRSxJQUFJO1NBQ2xCLENBQUE7UUFFRCx3QkFBd0I7UUFDeEIsY0FBUyxHQUFxQixJQUFJLENBQUE7UUFFbEMsa0JBQWEsR0FBRyxLQUFLLENBQUE7UUFDckIsb0JBQWUsR0FBRyxLQUFLLENBQUE7UUFDdkIsaUJBQVksR0FBRyxLQUFLLENBQUE7UUFDcEIsWUFBTyxHQUFHLEtBQUssQ0FBQTtRQUVmLGVBQVUsR0FBRyxJQUFJLENBQUE7UUFNakI7O1dBRUc7UUFD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QU0sQ0FBQyxDQUFBO1FBRXZCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGdCQUFnQixLQUFLLEVBQUUsRUFBRSxTQUFTLENBQUMsQ0FBQTtRQUV0RCxPQUFPLElBQUksQ0FBQTtJQUNiLENBQUM7SUFFRCxJQUFJLEtBQU0sT0FBTyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUEsQ0FBQyxDQUFDO0NBQzlCO0FBRUQsZUFBZSxXQUFXLENBQUE7QUFDMUIsT0FBTyxFQUFFLFdBQVcsRUFBRSxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgdXRpbHMgZnJvbSAnQGludGVyYWN0anMvdXRpbHMnXG5pbXBvcnQgSW50ZXJhY3RhYmxlIGZyb20gJy4vSW50ZXJhY3RhYmxlJ1xuaW1wb3J0IEludGVyYWN0RXZlbnQsIHsgRXZlbnRQaGFzZSB9IGZyb20gJy4vSW50ZXJhY3RFdmVudCdcbmltcG9ydCBQb2ludGVySW5mbyBmcm9tICcuL1BvaW50ZXJJbmZvJ1xuaW1wb3J0IHsgQWN0aW9uTmFtZSB9IGZyb20gJy4vc2NvcGUnXG5cbmV4cG9ydCBpbnRlcmZhY2UgQWN0aW9uUHJvcHM8VCBleHRlbmRzIEFjdGlvbk5hbWUgPSBhbnk+IHtcbiAgbmFtZTogVFxuICBheGlzPzogJ3gnIHwgJ3knIHwgJ3h5J1xuICBlZGdlcz86IHtcbiAgICBbZWRnZSBpbiBrZXlvZiBJbnRlcmFjdC5SZWN0XT86IGJvb2xlYW5cbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN0YXJ0QWN0aW9uIGV4dGVuZHMgQWN0aW9uUHJvcHMge1xuICBuYW1lOiBBY3Rpb25OYW1lIHwgc3RyaW5nXG59XG5cbmV4cG9ydCBjbGFzcyBJbnRlcmFjdGlvbjxUIGV4dGVuZHMgQWN0aW9uTmFtZSA9IGFueT4ge1xuICAvLyBjdXJyZW50IGludGVyYWN0YWJsZSBiZWluZyBpbnRlcmFjdGVkIHdpdGhcbiAgaW50ZXJhY3RhYmxlOiBJbnRlcmFjdGFibGUgPSBudWxsXG5cbiAgLy8gdGhlIHRhcmdldCBlbGVtZW50IG9mIHRoZSBpbnRlcmFjdGFibGVcbiAgZWxlbWVudDogRWxlbWVudCA9IG51bGxcbiAgcmVjdDogSW50ZXJhY3QuUmVjdCAmIEludGVyYWN0LlJlY3QzXG4gIGVkZ2VzOiB7XG4gICAgW1AgaW4ga2V5b2YgSW50ZXJhY3QuUmVjdF0/OiBib29sZWFuXG4gIH1cblxuICBfc2lnbmFsczogdXRpbHMuU2lnbmFsc1xuXG4gIC8vIGFjdGlvbiB0aGF0J3MgcmVhZHkgdG8gYmUgZmlyZWQgb24gbmV4dCBtb3ZlIGV2ZW50XG4gIHByZXBhcmVkOiBBY3Rpb25Qcm9wczxUPiA9IHtcbiAgICBuYW1lIDogbnVsbCxcbiAgICBheGlzIDogbnVsbCxcbiAgICBlZGdlczogbnVsbCxcbiAgfVxuXG4gIHBvaW50ZXJUeXBlOiBzdHJpbmdcblxuICAvLyBrZWVwIHRyYWNrIG9mIGFkZGVkIHBvaW50ZXJzXG4gIHBvaW50ZXJzOiBQb2ludGVySW5mb1tdID0gW11cblxuICAvLyBwb2ludGVyZG93bi9tb3VzZWRvd24vdG91Y2hzdGFydCBldmVudFxuICBkb3duRXZlbnQ6IEludGVyYWN0LlBvaW50ZXJFdmVudFR5cGUgPSBudWxsXG5cbiAgZG93blBvaW50ZXI6IEludGVyYWN0LlBvaW50ZXJUeXBlID0ge30gYXMgSW50ZXJhY3QuUG9pbnRlclR5cGVcblxuICBfbGF0ZXN0UG9pbnRlcjoge1xuICAgIHBvaW50ZXI6IEludGVyYWN0LkV2ZW50VGFyZ2V0XG4gICAgZXZlbnQ6IEludGVyYWN0LlBvaW50ZXJFdmVudFR5cGVcbiAgICBldmVudFRhcmdldDogTm9kZSxcbiAgfSA9IHtcbiAgICBwb2ludGVyOiBudWxsLFxuICAgIGV2ZW50OiBudWxsLFxuICAgIGV2ZW50VGFyZ2V0OiBudWxsLFxuICB9XG5cbiAgLy8gcHJldmlvdXMgYWN0aW9uIGV2ZW50XG4gIHByZXZFdmVudDogSW50ZXJhY3RFdmVudDxUPiA9IG51bGxcblxuICBwb2ludGVySXNEb3duID0gZmFsc2VcbiAgcG9pbnRlcldhc01vdmVkID0gZmFsc2VcbiAgX2ludGVyYWN0aW5nID0gZmFsc2VcbiAgX2VuZGluZyA9IGZhbHNlXG5cbiAgc2ltdWxhdGlvbiA9IG51bGxcblxuICBnZXQgcG9pbnRlck1vdmVUb2xlcmFuY2UgKCkge1xuICAgIHJldHVybiAxXG4gIH1cblxuICAvKipcbiAgICogQGFsaWFzIEludGVyYWN0aW9uLnByb3RvdHlwZS5tb3ZlXG4gICAqL1xuICBkb01vdmUgPSB1dGlscy53YXJuT25jZShcbiAgICBmdW5jdGlvbiAodGhpczogSW50ZXJhY3Rpb24sIHNpZ25hbEFyZzogYW55KSB7XG4gICAgICB0aGlzLm1vdmUoc2lnbmFsQXJnKVxuICAgIH0sXG4gICAgJ1RoZSBpbnRlcmFjdGlvbi5kb01vdmUoKSBtZXRob2QgaGFzIGJlZW4gcmVuYW1lZCB0byBpbnRlcmFjdGlvbi5tb3ZlKCknKVxuXG4gIGNvb3JkcyA9IHtcbiAgICAvLyBTdGFydGluZyBJbnRlcmFjdEV2ZW50IHBvaW50ZXIgY29vcmRpbmF0ZXNcbiAgICBzdGFydDogdXRpbHMucG9pbnRlci5uZXdDb29yZHMoKSxcbiAgICAvLyBQcmV2aW91cyBuYXRpdmUgcG9pbnRlciBtb3ZlIGV2ZW50IGNvb3JkaW5hdGVzXG4gICAgcHJldjogdXRpbHMucG9pbnRlci5uZXdDb29yZHMoKSxcbiAgICAvLyBjdXJyZW50IG5hdGl2ZSBwb2ludGVyIG1vdmUgZXZlbnQgY29vcmRpbmF0ZXNcbiAgICBjdXI6IHV0aWxzLnBvaW50ZXIubmV3Q29vcmRzKCksXG4gICAgLy8gQ2hhbmdlIGluIGNvb3JkaW5hdGVzIGFuZCB0aW1lIG9mIHRoZSBwb2ludGVyXG4gICAgZGVsdGE6IHV0aWxzLnBvaW50ZXIubmV3Q29vcmRzKCksXG4gICAgLy8gcG9pbnRlciB2ZWxvY2l0eVxuICAgIHZlbG9jaXR5OiB1dGlscy5wb2ludGVyLm5ld0Nvb3JkcygpLFxuICB9XG5cbiAgLyoqICovXG4gIGNvbnN0cnVjdG9yICh7IHBvaW50ZXJUeXBlLCBzaWduYWxzIH06IHsgcG9pbnRlclR5cGU/OiBzdHJpbmcsIHNpZ25hbHM6IHV0aWxzLlNpZ25hbHMgfSkge1xuICAgIHRoaXMuX3NpZ25hbHMgPSBzaWduYWxzXG4gICAgdGhpcy5wb2ludGVyVHlwZSA9IHBvaW50ZXJUeXBlXG5cbiAgICB0aGlzLl9zaWduYWxzLmZpcmUoJ25ldycsIHsgaW50ZXJhY3Rpb246IHRoaXMgfSlcbiAgfVxuXG4gIHBvaW50ZXJEb3duIChwb2ludGVyOiBJbnRlcmFjdC5Qb2ludGVyVHlwZSwgZXZlbnQ6IEludGVyYWN0LlBvaW50ZXJFdmVudFR5cGUsIGV2ZW50VGFyZ2V0OiBFdmVudFRhcmdldCkge1xuICAgIGNvbnN0IHBvaW50ZXJJbmRleCA9IHRoaXMudXBkYXRlUG9pbnRlcihwb2ludGVyLCBldmVudCwgZXZlbnRUYXJnZXQsIHRydWUpXG5cbiAgICB0aGlzLl9zaWduYWxzLmZpcmUoJ2Rvd24nLCB7XG4gICAgICBwb2ludGVyLFxuICAgICAgZXZlbnQsXG4gICAgICBldmVudFRhcmdldCxcbiAgICAgIHBvaW50ZXJJbmRleCxcbiAgICAgIGludGVyYWN0aW9uOiB0aGlzLFxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogYGBganNcbiAgICogaW50ZXJhY3QodGFyZ2V0KVxuICAgKiAgIC5kcmFnZ2FibGUoe1xuICAgKiAgICAgLy8gZGlzYWJsZSB0aGUgZGVmYXVsdCBkcmFnIHN0YXJ0IGJ5IGRvd24tPm1vdmVcbiAgICogICAgIG1hbnVhbFN0YXJ0OiB0cnVlXG4gICAqICAgfSlcbiAgICogICAvLyBzdGFydCBkcmFnZ2luZyBhZnRlciB0aGUgdXNlciBob2xkcyB0aGUgcG9pbnRlciBkb3duXG4gICAqICAgLm9uKCdob2xkJywgZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAqICAgICB2YXIgaW50ZXJhY3Rpb24gPSBldmVudC5pbnRlcmFjdGlvbjtcbiAgICpcbiAgICogICAgIGlmICghaW50ZXJhY3Rpb24uaW50ZXJhY3RpbmcoKSkge1xuICAgKiAgICAgICBpbnRlcmFjdGlvbi5zdGFydCh7IG5hbWU6ICdkcmFnJyB9LFxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICBldmVudC5pbnRlcmFjdGFibGUsXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LmN1cnJlbnRUYXJnZXQpO1xuICAgKiAgICAgfVxuICAgKiB9KTtcbiAgICogYGBgXG4gICAqXG4gICAqIFN0YXJ0IGFuIGFjdGlvbiB3aXRoIHRoZSBnaXZlbiBJbnRlcmFjdGFibGUgYW5kIEVsZW1lbnQgYXMgdGFydGdldHMuIFRoZVxuICAgKiBhY3Rpb24gbXVzdCBiZSBlbmFibGVkIGZvciB0aGUgdGFyZ2V0IEludGVyYWN0YWJsZSBhbmQgYW4gYXBwcm9wcmlhdGVcbiAgICogbnVtYmVyIG9mIHBvaW50ZXJzIG11c3QgYmUgaGVsZCBkb3duIC0gMSBmb3IgZHJhZy9yZXNpemUsIDIgZm9yIGdlc3R1cmUuXG4gICAqXG4gICAqIFVzZSBpdCB3aXRoIGBpbnRlcmFjdGFibGUuPGFjdGlvbj5hYmxlKHsgbWFudWFsU3RhcnQ6IGZhbHNlIH0pYCB0byBhbHdheXNcbiAgICogW3N0YXJ0IGFjdGlvbnMgbWFudWFsbHldKGh0dHBzOi8vZ2l0aHViLmNvbS90YXllL2ludGVyYWN0LmpzL2lzc3Vlcy8xMTQpXG4gICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBhY3Rpb24gICBUaGUgYWN0aW9uIHRvIGJlIHBlcmZvcm1lZCAtIGRyYWcsIHJlc2l6ZSwgZXRjLlxuICAgKiBAcGFyYW0ge0ludGVyYWN0YWJsZX0gdGFyZ2V0ICBUaGUgSW50ZXJhY3RhYmxlIHRvIHRhcmdldFxuICAgKiBAcGFyYW0ge0VsZW1lbnR9IGVsZW1lbnQgVGhlIERPTSBFbGVtZW50IHRvIHRhcmdldFxuICAgKiBAcmV0dXJuIHtvYmplY3R9IGludGVyYWN0XG4gICAqL1xuICBzdGFydCAoYWN0aW9uOiBTdGFydEFjdGlvbiwgaW50ZXJhY3RhYmxlOiBJbnRlcmFjdGFibGUsIGVsZW1lbnQ6IEVsZW1lbnQpIHtcbiAgICBpZiAodGhpcy5pbnRlcmFjdGluZygpIHx8XG4gICAgICAgICF0aGlzLnBvaW50ZXJJc0Rvd24gfHxcbiAgICAgICAgdGhpcy5wb2ludGVycy5sZW5ndGggPCAoYWN0aW9uLm5hbWUgPT09IEFjdGlvbk5hbWUuR2VzdHVyZSA/IDIgOiAxKSB8fFxuICAgICAgICAhaW50ZXJhY3RhYmxlLm9wdGlvbnNbYWN0aW9uLm5hbWVdLmVuYWJsZWQpIHtcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cblxuICAgIHV0aWxzLmNvcHlBY3Rpb24odGhpcy5wcmVwYXJlZCwgYWN0aW9uKVxuXG4gICAgdGhpcy5pbnRlcmFjdGFibGUgPSBpbnRlcmFjdGFibGVcbiAgICB0aGlzLmVsZW1lbnQgICAgICA9IGVsZW1lbnRcbiAgICB0aGlzLnJlY3QgICAgICAgICA9IGludGVyYWN0YWJsZS5nZXRSZWN0KGVsZW1lbnQpXG4gICAgdGhpcy5lZGdlcyAgICAgICAgPSB0aGlzLnByZXBhcmVkLmVkZ2VzXG4gICAgdGhpcy5faW50ZXJhY3RpbmcgPSB0aGlzLl9kb1BoYXNlKHtcbiAgICAgIGludGVyYWN0aW9uOiB0aGlzLFxuICAgICAgZXZlbnQ6IHRoaXMuZG93bkV2ZW50LFxuICAgICAgcGhhc2U6IEV2ZW50UGhhc2UuU3RhcnQsXG4gICAgfSlcblxuICAgIHJldHVybiB0aGlzLl9pbnRlcmFjdGluZ1xuICB9XG5cbiAgcG9pbnRlck1vdmUgKHBvaW50ZXI6IEludGVyYWN0LlBvaW50ZXJUeXBlLCBldmVudDogSW50ZXJhY3QuUG9pbnRlckV2ZW50VHlwZSwgZXZlbnRUYXJnZXQ6IEV2ZW50VGFyZ2V0KSB7XG4gICAgaWYgKCF0aGlzLnNpbXVsYXRpb24pIHtcbiAgICAgIHRoaXMudXBkYXRlUG9pbnRlcihwb2ludGVyLCBldmVudCwgZXZlbnRUYXJnZXQsIGZhbHNlKVxuICAgICAgdXRpbHMucG9pbnRlci5zZXRDb29yZHModGhpcy5jb29yZHMuY3VyLCB0aGlzLnBvaW50ZXJzLm1hcCgocCkgPT4gcC5wb2ludGVyKSwgdGhpcy5fbm93KCkpXG4gICAgfVxuXG4gICAgY29uc3QgZHVwbGljYXRlTW92ZSA9ICh0aGlzLmNvb3Jkcy5jdXIucGFnZS54ID09PSB0aGlzLmNvb3Jkcy5wcmV2LnBhZ2UueCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb29yZHMuY3VyLnBhZ2UueSA9PT0gdGhpcy5jb29yZHMucHJldi5wYWdlLnkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29vcmRzLmN1ci5jbGllbnQueCA9PT0gdGhpcy5jb29yZHMucHJldi5jbGllbnQueCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb29yZHMuY3VyLmNsaWVudC55ID09PSB0aGlzLmNvb3Jkcy5wcmV2LmNsaWVudC55KVxuXG4gICAgbGV0IGR4XG4gICAgbGV0IGR5XG5cbiAgICAvLyByZWdpc3RlciBtb3ZlbWVudCBncmVhdGVyIHRoYW4gcG9pbnRlck1vdmVUb2xlcmFuY2VcbiAgICBpZiAodGhpcy5wb2ludGVySXNEb3duICYmICF0aGlzLnBvaW50ZXJXYXNNb3ZlZCkge1xuICAgICAgZHggPSB0aGlzLmNvb3Jkcy5jdXIuY2xpZW50LnggLSB0aGlzLmNvb3Jkcy5zdGFydC5jbGllbnQueFxuICAgICAgZHkgPSB0aGlzLmNvb3Jkcy5jdXIuY2xpZW50LnkgLSB0aGlzLmNvb3Jkcy5zdGFydC5jbGllbnQueVxuXG4gICAgICB0aGlzLnBvaW50ZXJXYXNNb3ZlZCA9IHV0aWxzLmh5cG90KGR4LCBkeSkgPiB0aGlzLnBvaW50ZXJNb3ZlVG9sZXJhbmNlXG4gICAgfVxuXG4gICAgY29uc3Qgc2lnbmFsQXJnID0ge1xuICAgICAgcG9pbnRlcixcbiAgICAgIHBvaW50ZXJJbmRleDogdGhpcy5nZXRQb2ludGVySW5kZXgocG9pbnRlciksXG4gICAgICBldmVudCxcbiAgICAgIGV2ZW50VGFyZ2V0LFxuICAgICAgZHgsXG4gICAgICBkeSxcbiAgICAgIGR1cGxpY2F0ZTogZHVwbGljYXRlTW92ZSxcbiAgICAgIGludGVyYWN0aW9uOiB0aGlzLFxuICAgIH1cblxuICAgIGlmICghZHVwbGljYXRlTW92ZSkge1xuICAgICAgLy8gc2V0IHBvaW50ZXIgY29vcmRpbmF0ZSwgdGltZSBjaGFuZ2VzIGFuZCB2ZWxvY2l0eVxuICAgICAgdXRpbHMucG9pbnRlci5zZXRDb29yZERlbHRhcyh0aGlzLmNvb3Jkcy5kZWx0YSwgdGhpcy5jb29yZHMucHJldiwgdGhpcy5jb29yZHMuY3VyKVxuICAgICAgdXRpbHMucG9pbnRlci5zZXRDb29yZFZlbG9jaXR5KHRoaXMuY29vcmRzLnZlbG9jaXR5LCB0aGlzLmNvb3Jkcy5kZWx0YSlcbiAgICB9XG5cbiAgICB0aGlzLl9zaWduYWxzLmZpcmUoJ21vdmUnLCBzaWduYWxBcmcpXG5cbiAgICBpZiAoIWR1cGxpY2F0ZU1vdmUpIHtcbiAgICAgIC8vIGlmIGludGVyYWN0aW5nLCBmaXJlIGFuICdhY3Rpb24tbW92ZScgc2lnbmFsIGV0Y1xuICAgICAgaWYgKHRoaXMuaW50ZXJhY3RpbmcoKSkge1xuICAgICAgICB0aGlzLm1vdmUoc2lnbmFsQXJnKVxuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5wb2ludGVyV2FzTW92ZWQpIHtcbiAgICAgICAgdXRpbHMucG9pbnRlci5jb3B5Q29vcmRzKHRoaXMuY29vcmRzLnByZXYsIHRoaXMuY29vcmRzLmN1cilcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogYGBganNcbiAgICogaW50ZXJhY3QodGFyZ2V0KVxuICAgKiAgIC5kcmFnZ2FibGUodHJ1ZSlcbiAgICogICAub24oJ2RyYWdtb3ZlJywgZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAqICAgICBpZiAoc29tZUNvbmRpdGlvbikge1xuICAgKiAgICAgICAvLyBjaGFuZ2UgdGhlIHNuYXAgc2V0dGluZ3NcbiAgICogICAgICAgZXZlbnQuaW50ZXJhY3RhYmxlLmRyYWdnYWJsZSh7IHNuYXA6IHsgdGFyZ2V0czogW10gfX0pO1xuICAgKiAgICAgICAvLyBmaXJlIGFub3RoZXIgbW92ZSBldmVudCB3aXRoIHJlLWNhbGN1bGF0ZWQgc25hcFxuICAgKiAgICAgICBldmVudC5pbnRlcmFjdGlvbi5tb3ZlKCk7XG4gICAqICAgICB9XG4gICAqICAgfSk7XG4gICAqIGBgYFxuICAgKlxuICAgKiBGb3JjZSBhIG1vdmUgb2YgdGhlIGN1cnJlbnQgYWN0aW9uIGF0IHRoZSBzYW1lIGNvb3JkaW5hdGVzLiBVc2VmdWwgaWZcbiAgICogc25hcC9yZXN0cmljdCBoYXMgYmVlbiBjaGFuZ2VkIGFuZCB5b3Ugd2FudCBhIG1vdmVtZW50IHdpdGggdGhlIG5ld1xuICAgKiBzZXR0aW5ncy5cbiAgICovXG4gIG1vdmUgKHNpZ25hbEFyZz8pIHtcbiAgICBzaWduYWxBcmcgPSB1dGlscy5leHRlbmQoe1xuICAgICAgcG9pbnRlcjogdGhpcy5fbGF0ZXN0UG9pbnRlci5wb2ludGVyLFxuICAgICAgZXZlbnQ6IHRoaXMuX2xhdGVzdFBvaW50ZXIuZXZlbnQsXG4gICAgICBldmVudFRhcmdldDogdGhpcy5fbGF0ZXN0UG9pbnRlci5ldmVudFRhcmdldCxcbiAgICAgIGludGVyYWN0aW9uOiB0aGlzLFxuICAgICAgbm9CZWZvcmU6IGZhbHNlLFxuICAgIH0sIHNpZ25hbEFyZyB8fCB7fSlcblxuICAgIHNpZ25hbEFyZy5waGFzZSA9IEV2ZW50UGhhc2UuTW92ZVxuXG4gICAgdGhpcy5fZG9QaGFzZShzaWduYWxBcmcpXG4gIH1cblxuICAvLyBFbmQgaW50ZXJhY3QgbW92ZSBldmVudHMgYW5kIHN0b3AgYXV0by1zY3JvbGwgdW5sZXNzIHNpbXVsYXRpb24gaXMgcnVubmluZ1xuICBwb2ludGVyVXAgKHBvaW50ZXI6IEludGVyYWN0LlBvaW50ZXJUeXBlLCBldmVudDogSW50ZXJhY3QuUG9pbnRlckV2ZW50VHlwZSwgZXZlbnRUYXJnZXQ6IEV2ZW50VGFyZ2V0LCBjdXJFdmVudFRhcmdldDogRXZlbnRUYXJnZXQpIHtcbiAgICBsZXQgcG9pbnRlckluZGV4ID0gdGhpcy5nZXRQb2ludGVySW5kZXgocG9pbnRlcilcblxuICAgIGlmIChwb2ludGVySW5kZXggPT09IC0xKSB7XG4gICAgICBwb2ludGVySW5kZXggPSB0aGlzLnVwZGF0ZVBvaW50ZXIocG9pbnRlciwgZXZlbnQsIGV2ZW50VGFyZ2V0LCBmYWxzZSlcbiAgICB9XG5cbiAgICB0aGlzLl9zaWduYWxzLmZpcmUoL2NhbmNlbCQvaS50ZXN0KGV2ZW50LnR5cGUpID8gJ2NhbmNlbCcgOiAndXAnLCB7XG4gICAgICBwb2ludGVyLFxuICAgICAgcG9pbnRlckluZGV4LFxuICAgICAgZXZlbnQsXG4gICAgICBldmVudFRhcmdldCxcbiAgICAgIGN1ckV2ZW50VGFyZ2V0LFxuICAgICAgaW50ZXJhY3Rpb246IHRoaXMsXG4gICAgfSlcblxuICAgIGlmICghdGhpcy5zaW11bGF0aW9uKSB7XG4gICAgICB0aGlzLmVuZChldmVudClcbiAgICB9XG5cbiAgICB0aGlzLnBvaW50ZXJJc0Rvd24gPSBmYWxzZVxuICAgIHRoaXMucmVtb3ZlUG9pbnRlcihwb2ludGVyLCBldmVudClcbiAgfVxuXG4gIGRvY3VtZW50Qmx1ciAoZXZlbnQpIHtcbiAgICB0aGlzLmVuZChldmVudClcbiAgICB0aGlzLl9zaWduYWxzLmZpcmUoJ2JsdXInLCB7IGV2ZW50LCBpbnRlcmFjdGlvbjogdGhpcyB9KVxuICB9XG5cbiAgLyoqXG4gICAqIGBgYGpzXG4gICAqIGludGVyYWN0KHRhcmdldClcbiAgICogICAuZHJhZ2dhYmxlKHRydWUpXG4gICAqICAgLm9uKCdtb3ZlJywgZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAqICAgICBpZiAoZXZlbnQucGFnZVggPiAxMDAwKSB7XG4gICAqICAgICAgIC8vIGVuZCB0aGUgY3VycmVudCBhY3Rpb25cbiAgICogICAgICAgZXZlbnQuaW50ZXJhY3Rpb24uZW5kKCk7XG4gICAqICAgICAgIC8vIHN0b3AgYWxsIGZ1cnRoZXIgbGlzdGVuZXJzIGZyb20gYmVpbmcgY2FsbGVkXG4gICAqICAgICAgIGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgKiAgICAgfVxuICAgKiAgIH0pO1xuICAgKiBgYGBcbiAgICpcbiAgICogQHBhcmFtIHtQb2ludGVyRXZlbnR9IFtldmVudF1cbiAgICovXG4gIGVuZCAoZXZlbnQ/OiBJbnRlcmFjdC5Qb2ludGVyRXZlbnRUeXBlKSB7XG4gICAgdGhpcy5fZW5kaW5nID0gdHJ1ZVxuICAgIGV2ZW50ID0gZXZlbnQgfHwgdGhpcy5fbGF0ZXN0UG9pbnRlci5ldmVudFxuICAgIGxldCBlbmRQaGFzZVJlc3VsdFxuXG4gICAgaWYgKHRoaXMuaW50ZXJhY3RpbmcoKSkge1xuICAgICAgZW5kUGhhc2VSZXN1bHQgPSB0aGlzLl9kb1BoYXNlKHtcbiAgICAgICAgZXZlbnQsXG4gICAgICAgIGludGVyYWN0aW9uOiB0aGlzLFxuICAgICAgICBwaGFzZTogRXZlbnRQaGFzZS5FbmQsXG4gICAgICB9KVxuICAgIH1cblxuICAgIHRoaXMuX2VuZGluZyA9IGZhbHNlXG5cbiAgICBpZiAoZW5kUGhhc2VSZXN1bHQgPT09IHRydWUpIHtcbiAgICAgIHRoaXMuc3RvcCgpXG4gICAgfVxuICB9XG5cbiAgY3VycmVudEFjdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2ludGVyYWN0aW5nID8gdGhpcy5wcmVwYXJlZC5uYW1lIDogbnVsbFxuICB9XG5cbiAgaW50ZXJhY3RpbmcgKCkge1xuICAgIHJldHVybiB0aGlzLl9pbnRlcmFjdGluZ1xuICB9XG5cbiAgLyoqICovXG4gIHN0b3AgKCkge1xuICAgIHRoaXMuX3NpZ25hbHMuZmlyZSgnc3RvcCcsIHsgaW50ZXJhY3Rpb246IHRoaXMgfSlcblxuICAgIHRoaXMuaW50ZXJhY3RhYmxlID0gdGhpcy5lbGVtZW50ID0gbnVsbFxuXG4gICAgdGhpcy5faW50ZXJhY3RpbmcgPSBmYWxzZVxuICAgIHRoaXMucHJlcGFyZWQubmFtZSA9IHRoaXMucHJldkV2ZW50ID0gbnVsbFxuICB9XG5cbiAgZ2V0UG9pbnRlckluZGV4IChwb2ludGVyKSB7XG4gICAgY29uc3QgcG9pbnRlcklkID0gdXRpbHMucG9pbnRlci5nZXRQb2ludGVySWQocG9pbnRlcilcblxuICAgIC8vIG1vdXNlIGFuZCBwZW4gaW50ZXJhY3Rpb25zIG1heSBoYXZlIG9ubHkgb25lIHBvaW50ZXJcbiAgICByZXR1cm4gKHRoaXMucG9pbnRlclR5cGUgPT09ICdtb3VzZScgfHwgdGhpcy5wb2ludGVyVHlwZSA9PT0gJ3BlbicpXG4gICAgICA/IHRoaXMucG9pbnRlcnMubGVuZ3RoIC0gMVxuICAgICAgOiB1dGlscy5hcnIuZmluZEluZGV4KHRoaXMucG9pbnRlcnMsIChjdXJQb2ludGVyKSA9PiBjdXJQb2ludGVyLmlkID09PSBwb2ludGVySWQpXG4gIH1cblxuICBnZXRQb2ludGVySW5mbyAocG9pbnRlcikge1xuICAgIHJldHVybiB0aGlzLnBvaW50ZXJzW3RoaXMuZ2V0UG9pbnRlckluZGV4KHBvaW50ZXIpXVxuICB9XG5cbiAgdXBkYXRlUG9pbnRlciAocG9pbnRlcjogSW50ZXJhY3QuUG9pbnRlclR5cGUsIGV2ZW50OiBJbnRlcmFjdC5Qb2ludGVyRXZlbnRUeXBlLCBldmVudFRhcmdldDogRXZlbnRUYXJnZXQsIGRvd24/OiBib29sZWFuKSB7XG4gICAgY29uc3QgaWQgPSB1dGlscy5wb2ludGVyLmdldFBvaW50ZXJJZChwb2ludGVyKVxuICAgIGxldCBwb2ludGVySW5kZXggPSB0aGlzLmdldFBvaW50ZXJJbmRleChwb2ludGVyKVxuICAgIGxldCBwb2ludGVySW5mbyA9IHRoaXMucG9pbnRlcnNbcG9pbnRlckluZGV4XVxuXG4gICAgZG93biA9IGRvd24gPT09IGZhbHNlXG4gICAgICA/IGZhbHNlXG4gICAgICA6IGRvd24gfHwgLyhkb3dufHN0YXJ0KSQvaS50ZXN0KGV2ZW50LnR5cGUpXG5cbiAgICBpZiAoIXBvaW50ZXJJbmZvKSB7XG4gICAgICBwb2ludGVySW5mbyA9IG5ldyBQb2ludGVySW5mbyhcbiAgICAgICAgaWQsXG4gICAgICAgIHBvaW50ZXIsXG4gICAgICAgIGV2ZW50LFxuICAgICAgICBudWxsLFxuICAgICAgICBudWxsLFxuICAgICAgKVxuXG4gICAgICBwb2ludGVySW5kZXggPSB0aGlzLnBvaW50ZXJzLmxlbmd0aFxuICAgICAgdGhpcy5wb2ludGVycy5wdXNoKHBvaW50ZXJJbmZvKVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHBvaW50ZXJJbmZvLnBvaW50ZXIgPSBwb2ludGVyXG4gICAgfVxuXG4gICAgaWYgKGRvd24pIHtcbiAgICAgIHRoaXMucG9pbnRlcklzRG93biA9IHRydWVcblxuICAgICAgaWYgKCF0aGlzLmludGVyYWN0aW5nKCkpIHtcbiAgICAgICAgdXRpbHMucG9pbnRlci5zZXRDb29yZHModGhpcy5jb29yZHMuc3RhcnQsIHRoaXMucG9pbnRlcnMubWFwKChwKSA9PiBwLnBvaW50ZXIpLCB0aGlzLl9ub3coKSlcblxuICAgICAgICB1dGlscy5wb2ludGVyLmNvcHlDb29yZHModGhpcy5jb29yZHMuY3VyLCB0aGlzLmNvb3Jkcy5zdGFydClcbiAgICAgICAgdXRpbHMucG9pbnRlci5jb3B5Q29vcmRzKHRoaXMuY29vcmRzLnByZXYsIHRoaXMuY29vcmRzLnN0YXJ0KVxuICAgICAgICB1dGlscy5wb2ludGVyLnBvaW50ZXJFeHRlbmQodGhpcy5kb3duUG9pbnRlciwgcG9pbnRlcilcblxuICAgICAgICB0aGlzLmRvd25FdmVudCA9IGV2ZW50XG4gICAgICAgIHBvaW50ZXJJbmZvLmRvd25UaW1lID0gdGhpcy5jb29yZHMuY3VyLnRpbWVTdGFtcFxuICAgICAgICBwb2ludGVySW5mby5kb3duVGFyZ2V0ID0gZXZlbnRUYXJnZXRcblxuICAgICAgICB0aGlzLnBvaW50ZXJXYXNNb3ZlZCA9IGZhbHNlXG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5fdXBkYXRlTGF0ZXN0UG9pbnRlcihwb2ludGVyLCBldmVudCwgZXZlbnRUYXJnZXQpXG5cbiAgICB0aGlzLl9zaWduYWxzLmZpcmUoJ3VwZGF0ZS1wb2ludGVyJywge1xuICAgICAgcG9pbnRlcixcbiAgICAgIGV2ZW50LFxuICAgICAgZXZlbnRUYXJnZXQsXG4gICAgICBkb3duLFxuICAgICAgcG9pbnRlckluZm8sXG4gICAgICBwb2ludGVySW5kZXgsXG4gICAgICBpbnRlcmFjdGlvbjogdGhpcyxcbiAgICB9KVxuXG4gICAgcmV0dXJuIHBvaW50ZXJJbmRleFxuICB9XG5cbiAgcmVtb3ZlUG9pbnRlciAocG9pbnRlciwgZXZlbnQpIHtcbiAgICBjb25zdCBwb2ludGVySW5kZXggPSB0aGlzLmdldFBvaW50ZXJJbmRleChwb2ludGVyKVxuXG4gICAgaWYgKHBvaW50ZXJJbmRleCA9PT0gLTEpIHsgcmV0dXJuIH1cblxuICAgIGNvbnN0IHBvaW50ZXJJbmZvID0gdGhpcy5wb2ludGVyc1twb2ludGVySW5kZXhdXG5cbiAgICB0aGlzLl9zaWduYWxzLmZpcmUoJ3JlbW92ZS1wb2ludGVyJywge1xuICAgICAgcG9pbnRlcixcbiAgICAgIGV2ZW50LFxuICAgICAgcG9pbnRlckluZGV4LFxuICAgICAgcG9pbnRlckluZm8sXG4gICAgICBpbnRlcmFjdGlvbjogdGhpcyxcbiAgICB9KVxuXG4gICAgdGhpcy5wb2ludGVycy5zcGxpY2UocG9pbnRlckluZGV4LCAxKVxuICB9XG5cbiAgX3VwZGF0ZUxhdGVzdFBvaW50ZXIgKHBvaW50ZXIsIGV2ZW50LCBldmVudFRhcmdldCkge1xuICAgIHRoaXMuX2xhdGVzdFBvaW50ZXIucG9pbnRlciA9IHBvaW50ZXJcbiAgICB0aGlzLl9sYXRlc3RQb2ludGVyLmV2ZW50ID0gZXZlbnRcbiAgICB0aGlzLl9sYXRlc3RQb2ludGVyLmV2ZW50VGFyZ2V0ID0gZXZlbnRUYXJnZXRcbiAgfVxuXG4gIF9jcmVhdGVQcmVwYXJlZEV2ZW50IChldmVudDogSW50ZXJhY3QuUG9pbnRlckV2ZW50VHlwZSwgcGhhc2U6IEV2ZW50UGhhc2UsIHByZUVuZDogYm9vbGVhbiwgdHlwZTogc3RyaW5nKSB7XG4gICAgY29uc3QgYWN0aW9uTmFtZSA9IHRoaXMucHJlcGFyZWQubmFtZVxuXG4gICAgcmV0dXJuIG5ldyBJbnRlcmFjdEV2ZW50KHRoaXMsIGV2ZW50LCBhY3Rpb25OYW1lLCBwaGFzZSwgdGhpcy5lbGVtZW50LCBudWxsLCBwcmVFbmQsIHR5cGUpXG4gIH1cblxuICBfZmlyZUV2ZW50IChpRXZlbnQpIHtcbiAgICB0aGlzLmludGVyYWN0YWJsZS5maXJlKGlFdmVudClcblxuICAgIGlmICghdGhpcy5wcmV2RXZlbnQgfHwgaUV2ZW50LnRpbWVTdGFtcCA+PSB0aGlzLnByZXZFdmVudC50aW1lU3RhbXApIHtcbiAgICAgIHRoaXMucHJldkV2ZW50ID0gaUV2ZW50XG4gICAgfVxuICB9XG5cbiAgX2RvUGhhc2UgKHNpZ25hbEFyZzogUGFydGlhbDxJbnRlcmFjdC5TaWduYWxBcmc+KSB7XG4gICAgY29uc3QgeyBldmVudCwgcGhhc2UsIHByZUVuZCwgdHlwZSB9ID0gc2lnbmFsQXJnXG5cbiAgICBpZiAoIXNpZ25hbEFyZy5ub0JlZm9yZSkge1xuICAgICAgY29uc3QgYmVmb3JlUmVzdWx0ID0gdGhpcy5fc2lnbmFscy5maXJlKGBiZWZvcmUtYWN0aW9uLSR7cGhhc2V9YCwgc2lnbmFsQXJnKVxuXG4gICAgICBpZiAoYmVmb3JlUmVzdWx0ID09PSBmYWxzZSkge1xuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBpRXZlbnQgPSBzaWduYWxBcmcuaUV2ZW50ID0gdGhpcy5fY3JlYXRlUHJlcGFyZWRFdmVudChldmVudCwgcGhhc2UsIHByZUVuZCwgdHlwZSlcbiAgICBjb25zdCB7IHJlY3QgfSA9IHRoaXNcblxuICAgIGlmIChyZWN0KSB7XG4gICAgICAvLyB1cGRhdGUgdGhlIHJlY3QgbW9kaWZpY2F0aW9uc1xuICAgICAgY29uc3QgZWRnZXMgPSB0aGlzLmVkZ2VzIHx8IHRoaXMucHJlcGFyZWQuZWRnZXMgfHwgeyBsZWZ0OiB0cnVlLCByaWdodDogdHJ1ZSwgdG9wOiB0cnVlLCBib3R0b206IHRydWUgfVxuXG4gICAgICBpZiAoZWRnZXMudG9wKSAgICB7IHJlY3QudG9wICAgICs9IGlFdmVudC5kZWx0YS55IH1cbiAgICAgIGlmIChlZGdlcy5ib3R0b20pIHsgcmVjdC5ib3R0b20gKz0gaUV2ZW50LmRlbHRhLnkgfVxuICAgICAgaWYgKGVkZ2VzLmxlZnQpICAgeyByZWN0LmxlZnQgICArPSBpRXZlbnQuZGVsdGEueCB9XG4gICAgICBpZiAoZWRnZXMucmlnaHQpICB7IHJlY3QucmlnaHQgICs9IGlFdmVudC5kZWx0YS54IH1cbiAgICB9XG5cbiAgICB0aGlzLl9zaWduYWxzLmZpcmUoYGFjdGlvbi0ke3BoYXNlfWAsIHNpZ25hbEFyZylcblxuICAgIHRoaXMuX2ZpcmVFdmVudChpRXZlbnQpXG5cbiAgICB0aGlzLl9zaWduYWxzLmZpcmUoYGFmdGVyLWFjdGlvbi0ke3BoYXNlfWAsIHNpZ25hbEFyZylcblxuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICBfbm93ICgpIHsgcmV0dXJuIERhdGUubm93KCkgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBJbnRlcmFjdGlvblxuZXhwb3J0IHsgUG9pbnRlckluZm8gfVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSW50ZXJhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJJbnRlcmFjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssS0FBSyxNQUFNLG1CQUFtQixDQUFBO0FBRTFDLE9BQU8sYUFBYSxFQUFFLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDM0QsT0FBTyxXQUFXLE1BQU0sZUFBZSxDQUFBO0FBQ3ZDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxTQUFTLENBQUE7QUFjcEMsTUFBTSxPQUFPLFdBQVc7SUE0RXRCLE1BQU07SUFDTixZQUFhLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBb0Q7UUE1RXZGLDZDQUE2QztRQUM3QyxpQkFBWSxHQUFpQixJQUFJLENBQUE7UUFFakMseUNBQXlDO1FBQ3pDLFlBQU8sR0FBWSxJQUFJLENBQUE7UUFRdkIscURBQXFEO1FBQ3JELGFBQVEsR0FBbUI7WUFDekIsSUFBSSxFQUFHLElBQUk7WUFDWCxJQUFJLEVBQUcsSUFBSTtZQUNYLEtBQUssRUFBRSxJQUFJO1NBQ1osQ0FBQTtRQUlELCtCQUErQjtRQUMvQixhQUFRLEdBQWtCLEVBQUUsQ0FBQTtRQUU1Qix5Q0FBeUM7UUFDekMsY0FBUyxHQUE4QixJQUFJLENBQUE7UUFFM0MsZ0JBQVcsR0FBeUIsRUFBMEIsQ0FBQTtRQUU5RCxtQkFBYyxHQUlWO1lBQ0YsT0FBTyxFQUFFLElBQUk7WUFDYixLQUFLLEVBQUUsSUFBSTtZQUNYLFdBQVcsRUFBRSxJQUFJO1NBQ2xCLENBQUE7UUFFRCx3QkFBd0I7UUFDeEIsY0FBUyxHQUFxQixJQUFJLENBQUE7UUFFbEMsa0JBQWEsR0FBRyxLQUFLLENBQUE7UUFDckIsb0JBQWUsR0FBRyxLQUFLLENBQUE7UUFDdkIsaUJBQVksR0FBRyxLQUFLLENBQUE7UUFDcEIsWUFBTyxHQUFHLEtBQUssQ0FBQTtRQUVmLGVBQVUsR0FBRyxJQUFJLENBQUE7UUFNakI7O1dBRUc7UUFD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QU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFBO1NBQ3JDO1FBRUQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxLQUFLLEVBQUUsRUFBRSxTQUFTLENBQUMsQ0FBQTtRQUVoRCxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBRXZCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGdCQUFnQixLQUFLLEVBQUUsRUFBRSxTQUFTLENBQUMsQ0FBQTtRQUV0RCxPQUFPLElBQUksQ0FBQTtJQUNiLENBQUM7SUFFRCxJQUFJLEtBQU0sT0FBTyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUEsQ0FBQyxDQUFDO0NBQzlCO0FBRUQsZUFBZSxXQUFXLENBQUE7QUFDMUIsT0FBTyxFQUFFLFdBQVcsRUFBRSxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgdXRpbHMgZnJvbSAnQGludGVyYWN0anMvdXRpbHMnXG5pbXBvcnQgSW50ZXJhY3RhYmxlIGZyb20gJy4vSW50ZXJhY3RhYmxlJ1xuaW1wb3J0IEludGVyYWN0RXZlbnQsIHsgRXZlbnRQaGFzZSB9IGZyb20gJy4vSW50ZXJhY3RFdmVudCdcbmltcG9ydCBQb2ludGVySW5mbyBmcm9tICcuL1BvaW50ZXJJbmZvJ1xuaW1wb3J0IHsgQWN0aW9uTmFtZSB9IGZyb20gJy4vc2NvcGUnXG5cbmV4cG9ydCBpbnRlcmZhY2UgQWN0aW9uUHJvcHM8VCBleHRlbmRzIEFjdGlvbk5hbWUgPSBhbnk+IHtcbiAgbmFtZTogVFxuICBheGlzPzogJ3gnIHwgJ3knIHwgJ3h5J1xuICBlZGdlcz86IHtcbiAgICBbZWRnZSBpbiBrZXlvZiBJbnRlcmFjdC5SZWN0XT86IGJvb2xlYW5cbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN0YXJ0QWN0aW9uIGV4dGVuZHMgQWN0aW9uUHJvcHMge1xuICBuYW1lOiBBY3Rpb25OYW1lIHwgc3RyaW5nXG59XG5cbmV4cG9ydCBjbGFzcyBJbnRlcmFjdGlvbjxUIGV4dGVuZHMgQWN0aW9uTmFtZSA9IGFueT4ge1xuICAvLyBjdXJyZW50IGludGVyYWN0YWJsZSBiZWluZyBpbnRlcmFjdGVkIHdpdGhcbiAgaW50ZXJhY3RhYmxlOiBJbnRlcmFjdGFibGUgPSBudWxsXG5cbiAgLy8gdGhlIHRhcmdldCBlbGVtZW50IG9mIHRoZSBpbnRlcmFjdGFibGVcbiAgZWxlbWVudDogRWxlbWVudCA9IG51bGxcbiAgcmVjdDogSW50ZXJhY3QuUmVjdCAmIEludGVyYWN0LlNpemVcbiAgZWRnZXM6IHtcbiAgICBbUCBpbiBrZXlvZiBJbnRlcmFjdC5SZWN0XT86IGJvb2xlYW5cbiAgfVxuXG4gIF9zaWduYWxzOiB1dGlscy5TaWduYWxzXG5cbiAgLy8gYWN0aW9uIHRoYXQncyByZWFkeSB0byBiZSBmaXJlZCBvbiBuZXh0IG1vdmUgZXZlbnRcbiAgcHJlcGFyZWQ6IEFjdGlvblByb3BzPFQ+ID0ge1xuICAgIG5hbWUgOiBudWxsLFxuICAgIGF4aXMgOiBudWxsLFxuICAgIGVkZ2VzOiBudWxsLFxuICB9XG5cbiAgcG9pbnRlclR5cGU6IHN0cmluZ1xuXG4gIC8vIGtlZXAgdHJhY2sgb2YgYWRkZWQgcG9pbnRlcnNcbiAgcG9pbnRlcnM6IFBvaW50ZXJJbmZvW10gPSBbXVxuXG4gIC8vIHBvaW50ZXJkb3duL21vdXNlZG93bi90b3VjaHN0YXJ0IGV2ZW50XG4gIGRvd25FdmVudDogSW50ZXJhY3QuUG9pbnRlckV2ZW50VHlwZSA9IG51bGxcblxuICBkb3duUG9pbnRlcjogSW50ZXJhY3QuUG9pbnRlclR5cGUgPSB7fSBhcyBJbnRlcmFjdC5Qb2ludGVyVHlwZVxuXG4gIF9sYXRlc3RQb2ludGVyOiB7XG4gICAgcG9pbnRlcjogSW50ZXJhY3QuRXZlbnRUYXJnZXRcbiAgICBldmVudDogSW50ZXJhY3QuUG9pbnRlckV2ZW50VHlwZVxuICAgIGV2ZW50VGFyZ2V0OiBOb2RlLFxuICB9ID0ge1xuICAgIHBvaW50ZXI6IG51bGwsXG4gICAgZXZlbnQ6IG51bGwsXG4gICAgZXZlbnRUYXJnZXQ6IG51bGwsXG4gIH1cblxuICAvLyBwcmV2aW91cyBhY3Rpb24gZXZlbnRcbiAgcHJldkV2ZW50OiBJbnRlcmFjdEV2ZW50PFQ+ID0gbnVsbFxuXG4gIHBvaW50ZXJJc0Rvd24gPSBmYWxzZVxuICBwb2ludGVyV2FzTW92ZWQgPSBmYWxzZVxuICBfaW50ZXJhY3RpbmcgPSBmYWxzZVxuICBfZW5kaW5nID0gZmFsc2VcblxuICBzaW11bGF0aW9uID0gbnVsbFxuXG4gIGdldCBwb2ludGVyTW92ZVRvbGVyYW5jZSAoKSB7XG4gICAgcmV0dXJuIDFcbiAgfVxuXG4gIC8qKlxuICAgKiBAYWxpYXMgSW50ZXJhY3Rpb24ucHJvdG90eXBlLm1vdmVcbiAgICovXG4gIGRvTW92ZSA9IHV0aWxzLndhcm5PbmNlKFxuICAgIGZ1bmN0aW9uICh0aGlzOiBJbnRlcmFjdGlvbiwgc2lnbmFsQXJnOiBhbnkpIHtcbiAgICAgIHRoaXMubW92ZShzaWduYWxBcmcpXG4gICAgfSxcbiAgICAnVGhlIGludGVyYWN0aW9uLmRvTW92ZSgpIG1ldGhvZCBoYXMgYmVlbiByZW5hbWVkIHRvIGludGVyYWN0aW9uLm1vdmUoKScpXG5cbiAgY29vcmRzID0ge1xuICAgIC8vIFN0YXJ0aW5nIEludGVyYWN0RXZlbnQgcG9pbnRlciBjb29yZGluYXRlc1xuICAgIHN0YXJ0OiB1dGlscy5wb2ludGVyLm5ld0Nvb3JkcygpLFxuICAgIC8vIFByZXZpb3VzIG5hdGl2ZSBwb2ludGVyIG1vdmUgZXZlbnQgY29vcmRpbmF0ZXNcbiAgICBwcmV2OiB1dGlscy5wb2ludGVyLm5ld0Nvb3JkcygpLFxuICAgIC8vIGN1cnJlbnQgbmF0aXZlIHBvaW50ZXIgbW92ZSBldmVudCBjb29yZGluYXRlc1xuICAgIGN1cjogdXRpbHMucG9pbnRlci5uZXdDb29yZHMoKSxcbiAgICAvLyBDaGFuZ2UgaW4gY29vcmRpbmF0ZXMgYW5kIHRpbWUgb2YgdGhlIHBvaW50ZXJcbiAgICBkZWx0YTogdXRpbHMucG9pbnRlci5uZXdDb29yZHMoKSxcbiAgICAvLyBwb2ludGVyIHZlbG9jaXR5XG4gICAgdmVsb2NpdHk6IHV0aWxzLnBvaW50ZXIubmV3Q29vcmRzKCksXG4gIH1cblxuICAvKiogKi9cbiAgY29uc3RydWN0b3IgKHsgcG9pbnRlclR5cGUsIHNpZ25hbHMgfTogeyBwb2ludGVyVHlwZT86IHN0cmluZywgc2lnbmFsczogdXRpbHMuU2lnbmFscyB9KSB7XG4gICAgdGhpcy5fc2lnbmFscyA9IHNpZ25hbHNcbiAgICB0aGlzLnBvaW50ZXJUeXBlID0gcG9pbnRlclR5cGVcblxuICAgIHRoaXMuX3NpZ25hbHMuZmlyZSgnbmV3JywgeyBpbnRlcmFjdGlvbjogdGhpcyB9KVxuICB9XG5cbiAgcG9pbnRlckRvd24gKHBvaW50ZXI6IEludGVyYWN0LlBvaW50ZXJUeXBlLCBldmVudDogSW50ZXJhY3QuUG9pbnRlckV2ZW50VHlwZSwgZXZlbnRUYXJnZXQ6IEV2ZW50VGFyZ2V0KSB7XG4gICAgY29uc3QgcG9pbnRlckluZGV4ID0gdGhpcy51cGRhdGVQb2ludGVyKHBvaW50ZXIsIGV2ZW50LCBldmVudFRhcmdldCwgdHJ1ZSlcblxuICAgIHRoaXMuX3NpZ25hbHMuZmlyZSgnZG93bicsIHtcbiAgICAgIHBvaW50ZXIsXG4gICAgICBldmVudCxcbiAgICAgIGV2ZW50VGFyZ2V0LFxuICAgICAgcG9pbnRlckluZGV4LFxuICAgICAgaW50ZXJhY3Rpb246IHRoaXMsXG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBgYGBqc1xuICAgKiBpbnRlcmFjdCh0YXJnZXQpXG4gICAqICAgLmRyYWdnYWJsZSh7XG4gICAqICAgICAvLyBkaXNhYmxlIHRoZSBkZWZhdWx0IGRyYWcgc3RhcnQgYnkgZG93bi0+bW92ZVxuICAgKiAgICAgbWFudWFsU3RhcnQ6IHRydWVcbiAgICogICB9KVxuICAgKiAgIC8vIHN0YXJ0IGRyYWdnaW5nIGFmdGVyIHRoZSB1c2VyIGhvbGRzIHRoZSBwb2ludGVyIGRvd25cbiAgICogICAub24oJ2hvbGQnLCBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICogICAgIHZhciBpbnRlcmFjdGlvbiA9IGV2ZW50LmludGVyYWN0aW9uXG4gICAqXG4gICAqICAgICBpZiAoIWludGVyYWN0aW9uLmludGVyYWN0aW5nKCkpIHtcbiAgICogICAgICAgaW50ZXJhY3Rpb24uc3RhcnQoeyBuYW1lOiAnZHJhZycgfSxcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQuaW50ZXJhY3RhYmxlLFxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICBldmVudC5jdXJyZW50VGFyZ2V0KVxuICAgKiAgICAgfVxuICAgKiB9KVxuICAgKiBgYGBcbiAgICpcbiAgICogU3RhcnQgYW4gYWN0aW9uIHdpdGggdGhlIGdpdmVuIEludGVyYWN0YWJsZSBhbmQgRWxlbWVudCBhcyB0YXJ0Z2V0cy4gVGhlXG4gICAqIGFjdGlvbiBtdXN0IGJlIGVuYWJsZWQgZm9yIHRoZSB0YXJnZXQgSW50ZXJhY3RhYmxlIGFuZCBhbiBhcHByb3ByaWF0ZVxuICAgKiBudW1iZXIgb2YgcG9pbnRlcnMgbXVzdCBiZSBoZWxkIGRvd24gLSAxIGZvciBkcmFnL3Jlc2l6ZSwgMiBmb3IgZ2VzdHVyZS5cbiAgICpcbiAgICogVXNlIGl0IHdpdGggYGludGVyYWN0YWJsZS48YWN0aW9uPmFibGUoeyBtYW51YWxTdGFydDogZmFsc2UgfSlgIHRvIGFsd2F5c1xuICAgKiBbc3RhcnQgYWN0aW9ucyBtYW51YWxseV0oaHR0cHM6Ly9naXRodWIuY29tL3RheWUvaW50ZXJhY3QuanMvaXNzdWVzLzExNClcbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IGFjdGlvbiAgIFRoZSBhY3Rpb24gdG8gYmUgcGVyZm9ybWVkIC0gZHJhZywgcmVzaXplLCBldGMuXG4gICAqIEBwYXJhbSB7SW50ZXJhY3RhYmxlfSB0YXJnZXQgIFRoZSBJbnRlcmFjdGFibGUgdG8gdGFyZ2V0XG4gICAqIEBwYXJhbSB7RWxlbWVudH0gZWxlbWVudCBUaGUgRE9NIEVsZW1lbnQgdG8gdGFyZ2V0XG4gICAqIEByZXR1cm4ge29iamVjdH0gaW50ZXJhY3RcbiAgICovXG4gIHN0YXJ0IChhY3Rpb246IFN0YXJ0QWN0aW9uLCBpbnRlcmFjdGFibGU6IEludGVyYWN0YWJsZSwgZWxlbWVudDogRWxlbWVudCkge1xuICAgIGlmICh0aGlzLmludGVyYWN0aW5nKCkgfHxcbiAgICAgICAgIXRoaXMucG9pbnRlcklzRG93biB8fFxuICAgICAgICB0aGlzLnBvaW50ZXJzLmxlbmd0aCA8IChhY3Rpb24ubmFtZSA9PT0gQWN0aW9uTmFtZS5HZXN0dXJlID8gMiA6IDEpIHx8XG4gICAgICAgICFpbnRlcmFjdGFibGUub3B0aW9uc1thY3Rpb24ubmFtZV0uZW5hYmxlZCkge1xuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuXG4gICAgdXRpbHMuY29weUFjdGlvbih0aGlzLnByZXBhcmVkLCBhY3Rpb24pXG5cbiAgICB0aGlzLmludGVyYWN0YWJsZSA9IGludGVyYWN0YWJsZVxuICAgIHRoaXMuZWxlbWVudCAgICAgID0gZWxlbWVudFxuICAgIHRoaXMucmVjdCAgICAgICAgID0gaW50ZXJhY3RhYmxlLmdldFJlY3QoZWxlbWVudClcbiAgICB0aGlzLmVkZ2VzICAgICAgICA9IHRoaXMucHJlcGFyZWQuZWRnZXNcbiAgICB0aGlzLl9pbnRlcmFjdGluZyA9IHRoaXMuX2RvUGhhc2Uoe1xuICAgICAgaW50ZXJhY3Rpb246IHRoaXMsXG4gICAgICBldmVudDogdGhpcy5kb3duRXZlbnQsXG4gICAgICBwaGFzZTogRXZlbnRQaGFzZS5TdGFydCxcbiAgICB9KVxuXG4gICAgcmV0dXJuIHRoaXMuX2ludGVyYWN0aW5nXG4gIH1cblxuICBwb2ludGVyTW92ZSAocG9pbnRlcjogSW50ZXJhY3QuUG9pbnRlclR5cGUsIGV2ZW50OiBJbnRlcmFjdC5Qb2ludGVyRXZlbnRUeXBlLCBldmVudFRhcmdldDogRXZlbnRUYXJnZXQpIHtcbiAgICBpZiAoIXRoaXMuc2ltdWxhdGlvbikge1xuICAgICAgdGhpcy51cGRhdGVQb2ludGVyKHBvaW50ZXIsIGV2ZW50LCBldmVudFRhcmdldCwgZmFsc2UpXG4gICAgICB1dGlscy5wb2ludGVyLnNldENvb3Jkcyh0aGlzLmNvb3Jkcy5jdXIsIHRoaXMucG9pbnRlcnMubWFwKChwKSA9PiBwLnBvaW50ZXIpLCB0aGlzLl9ub3coKSlcbiAgICB9XG5cbiAgICBjb25zdCBkdXBsaWNhdGVNb3ZlID0gKHRoaXMuY29vcmRzLmN1ci5wYWdlLnggPT09IHRoaXMuY29vcmRzLnByZXYucGFnZS54ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvb3Jkcy5jdXIucGFnZS55ID09PSB0aGlzLmNvb3Jkcy5wcmV2LnBhZ2UueSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb29yZHMuY3VyLmNsaWVudC54ID09PSB0aGlzLmNvb3Jkcy5wcmV2LmNsaWVudC54ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvb3Jkcy5jdXIuY2xpZW50LnkgPT09IHRoaXMuY29vcmRzLnByZXYuY2xpZW50LnkpXG5cbiAgICBsZXQgZHhcbiAgICBsZXQgZHlcblxuICAgIC8vIHJlZ2lzdGVyIG1vdmVtZW50IGdyZWF0ZXIgdGhhbiBwb2ludGVyTW92ZVRvbGVyYW5jZVxuICAgIGlmICh0aGlzLnBvaW50ZXJJc0Rvd24gJiYgIXRoaXMucG9pbnRlcldhc01vdmVkKSB7XG4gICAgICBkeCA9IHRoaXMuY29vcmRzLmN1ci5jbGllbnQueCAtIHRoaXMuY29vcmRzLnN0YXJ0LmNsaWVudC54XG4gICAgICBkeSA9IHRoaXMuY29vcmRzLmN1ci5jbGllbnQueSAtIHRoaXMuY29vcmRzLnN0YXJ0LmNsaWVudC55XG5cbiAgICAgIHRoaXMucG9pbnRlcldhc01vdmVkID0gdXRpbHMuaHlwb3QoZHgsIGR5KSA+IHRoaXMucG9pbnRlck1vdmVUb2xlcmFuY2VcbiAgICB9XG5cbiAgICBjb25zdCBzaWduYWxBcmcgPSB7XG4gICAgICBwb2ludGVyLFxuICAgICAgcG9pbnRlckluZGV4OiB0aGlzLmdldFBvaW50ZXJJbmRleChwb2ludGVyKSxcbiAgICAgIGV2ZW50LFxuICAgICAgZXZlbnRUYXJnZXQsXG4gICAgICBkeCxcbiAgICAgIGR5LFxuICAgICAgZHVwbGljYXRlOiBkdXBsaWNhdGVNb3ZlLFxuICAgICAgaW50ZXJhY3Rpb246IHRoaXMsXG4gICAgfVxuXG4gICAgaWYgKCFkdXBsaWNhdGVNb3ZlKSB7XG4gICAgICAvLyBzZXQgcG9pbnRlciBjb29yZGluYXRlLCB0aW1lIGNoYW5nZXMgYW5kIHZlbG9jaXR5XG4gICAgICB1dGlscy5wb2ludGVyLnNldENvb3JkRGVsdGFzKHRoaXMuY29vcmRzLmRlbHRhLCB0aGlzLmNvb3Jkcy5wcmV2LCB0aGlzLmNvb3Jkcy5jdXIpXG4gICAgICB1dGlscy5wb2ludGVyLnNldENvb3JkVmVsb2NpdHkodGhpcy5jb29yZHMudmVsb2NpdHksIHRoaXMuY29vcmRzLmRlbHRhKVxuICAgIH1cblxuICAgIHRoaXMuX3NpZ25hbHMuZmlyZSgnbW92ZScsIHNpZ25hbEFyZylcblxuICAgIGlmICghZHVwbGljYXRlTW92ZSkge1xuICAgICAgLy8gaWYgaW50ZXJhY3RpbmcsIGZpcmUgYW4gJ2FjdGlvbi1tb3ZlJyBzaWduYWwgZXRjXG4gICAgICBpZiAodGhpcy5pbnRlcmFjdGluZygpKSB7XG4gICAgICAgIHRoaXMubW92ZShzaWduYWxBcmcpXG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLnBvaW50ZXJXYXNNb3ZlZCkge1xuICAgICAgICB1dGlscy5wb2ludGVyLmNvcHlDb29yZHModGhpcy5jb29yZHMucHJldiwgdGhpcy5jb29yZHMuY3VyKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBgYGBqc1xuICAgKiBpbnRlcmFjdCh0YXJnZXQpXG4gICAqICAgLmRyYWdnYWJsZSh0cnVlKVxuICAgKiAgIC5vbignZHJhZ21vdmUnLCBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICogICAgIGlmIChzb21lQ29uZGl0aW9uKSB7XG4gICAqICAgICAgIC8vIGNoYW5nZSB0aGUgc25hcCBzZXR0aW5nc1xuICAgKiAgICAgICBldmVudC5pbnRlcmFjdGFibGUuZHJhZ2dhYmxlKHsgc25hcDogeyB0YXJnZXRzOiBbXSB9fSlcbiAgICogICAgICAgLy8gZmlyZSBhbm90aGVyIG1vdmUgZXZlbnQgd2l0aCByZS1jYWxjdWxhdGVkIHNuYXBcbiAgICogICAgICAgZXZlbnQuaW50ZXJhY3Rpb24ubW92ZSgpXG4gICAqICAgICB9XG4gICAqICAgfSlcbiAgICogYGBgXG4gICAqXG4gICAqIEZvcmNlIGEgbW92ZSBvZiB0aGUgY3VycmVudCBhY3Rpb24gYXQgdGhlIHNhbWUgY29vcmRpbmF0ZXMuIFVzZWZ1bCBpZlxuICAgKiBzbmFwL3Jlc3RyaWN0IGhhcyBiZWVuIGNoYW5nZWQgYW5kIHlvdSB3YW50IGEgbW92ZW1lbnQgd2l0aCB0aGUgbmV3XG4gICAqIHNldHRpbmdzLlxuICAgKi9cbiAgbW92ZSAoc2lnbmFsQXJnPykge1xuICAgIHNpZ25hbEFyZyA9IHV0aWxzLmV4dGVuZCh7XG4gICAgICBwb2ludGVyOiB0aGlzLl9sYXRlc3RQb2ludGVyLnBvaW50ZXIsXG4gICAgICBldmVudDogdGhpcy5fbGF0ZXN0UG9pbnRlci5ldmVudCxcbiAgICAgIGV2ZW50VGFyZ2V0OiB0aGlzLl9sYXRlc3RQb2ludGVyLmV2ZW50VGFyZ2V0LFxuICAgICAgaW50ZXJhY3Rpb246IHRoaXMsXG4gICAgICBub0JlZm9yZTogZmFsc2UsXG4gICAgfSwgc2lnbmFsQXJnIHx8IHt9KVxuXG4gICAgc2lnbmFsQXJnLnBoYXNlID0gRXZlbnRQaGFzZS5Nb3ZlXG5cbiAgICB0aGlzLl9kb1BoYXNlKHNpZ25hbEFyZylcbiAgfVxuXG4gIC8vIEVuZCBpbnRlcmFjdCBtb3ZlIGV2ZW50cyBhbmQgc3RvcCBhdXRvLXNjcm9sbCB1bmxlc3Mgc2ltdWxhdGlvbiBpcyBydW5uaW5nXG4gIHBvaW50ZXJVcCAocG9pbnRlcjogSW50ZXJhY3QuUG9pbnRlclR5cGUsIGV2ZW50OiBJbnRlcmFjdC5Qb2ludGVyRXZlbnRUeXBlLCBldmVudFRhcmdldDogRXZlbnRUYXJnZXQsIGN1ckV2ZW50VGFyZ2V0OiBFdmVudFRhcmdldCkge1xuICAgIGxldCBwb2ludGVySW5kZXggPSB0aGlzLmdldFBvaW50ZXJJbmRleChwb2ludGVyKVxuXG4gICAgaWYgKHBvaW50ZXJJbmRleCA9PT0gLTEpIHtcbiAgICAgIHBvaW50ZXJJbmRleCA9IHRoaXMudXBkYXRlUG9pbnRlcihwb2ludGVyLCBldmVudCwgZXZlbnRUYXJnZXQsIGZhbHNlKVxuICAgIH1cblxuICAgIHRoaXMuX3NpZ25hbHMuZmlyZSgvY2FuY2VsJC9pLnRlc3QoZXZlbnQudHlwZSkgPyAnY2FuY2VsJyA6ICd1cCcsIHtcbiAgICAgIHBvaW50ZXIsXG4gICAgICBwb2ludGVySW5kZXgsXG4gICAgICBldmVudCxcbiAgICAgIGV2ZW50VGFyZ2V0LFxuICAgICAgY3VyRXZlbnRUYXJnZXQsXG4gICAgICBpbnRlcmFjdGlvbjogdGhpcyxcbiAgICB9KVxuXG4gICAgaWYgKCF0aGlzLnNpbXVsYXRpb24pIHtcbiAgICAgIHRoaXMuZW5kKGV2ZW50KVxuICAgIH1cblxuICAgIHRoaXMucG9pbnRlcklzRG93biA9IGZhbHNlXG4gICAgdGhpcy5yZW1vdmVQb2ludGVyKHBvaW50ZXIsIGV2ZW50KVxuICB9XG5cbiAgZG9jdW1lbnRCbHVyIChldmVudCkge1xuICAgIHRoaXMuZW5kKGV2ZW50KVxuICAgIHRoaXMuX3NpZ25hbHMuZmlyZSgnYmx1cicsIHsgZXZlbnQsIGludGVyYWN0aW9uOiB0aGlzIH0pXG4gIH1cblxuICAvKipcbiAgICogYGBganNcbiAgICogaW50ZXJhY3QodGFyZ2V0KVxuICAgKiAgIC5kcmFnZ2FibGUodHJ1ZSlcbiAgICogICAub24oJ21vdmUnLCBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICogICAgIGlmIChldmVudC5wYWdlWCA+IDEwMDApIHtcbiAgICogICAgICAgLy8gZW5kIHRoZSBjdXJyZW50IGFjdGlvblxuICAgKiAgICAgICBldmVudC5pbnRlcmFjdGlvbi5lbmQoKVxuICAgKiAgICAgICAvLyBzdG9wIGFsbCBmdXJ0aGVyIGxpc3RlbmVycyBmcm9tIGJlaW5nIGNhbGxlZFxuICAgKiAgICAgICBldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKVxuICAgKiAgICAgfVxuICAgKiAgIH0pXG4gICAqIGBgYFxuICAgKlxuICAgKiBAcGFyYW0ge1BvaW50ZXJFdmVudH0gW2V2ZW50XVxuICAgKi9cbiAgZW5kIChldmVudD86IEludGVyYWN0LlBvaW50ZXJFdmVudFR5cGUpIHtcbiAgICB0aGlzLl9lbmRpbmcgPSB0cnVlXG4gICAgZXZlbnQgPSBldmVudCB8fCB0aGlzLl9sYXRlc3RQb2ludGVyLmV2ZW50XG4gICAgbGV0IGVuZFBoYXNlUmVzdWx0XG5cbiAgICBpZiAodGhpcy5pbnRlcmFjdGluZygpKSB7XG4gICAgICBlbmRQaGFzZVJlc3VsdCA9IHRoaXMuX2RvUGhhc2Uoe1xuICAgICAgICBldmVudCxcbiAgICAgICAgaW50ZXJhY3Rpb246IHRoaXMsXG4gICAgICAgIHBoYXNlOiBFdmVudFBoYXNlLkVuZCxcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgdGhpcy5fZW5kaW5nID0gZmFsc2VcblxuICAgIGlmIChlbmRQaGFzZVJlc3VsdCA9PT0gdHJ1ZSkge1xuICAgICAgdGhpcy5zdG9wKClcbiAgICB9XG4gIH1cblxuICBjdXJyZW50QWN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5faW50ZXJhY3RpbmcgPyB0aGlzLnByZXBhcmVkLm5hbWUgOiBudWxsXG4gIH1cblxuICBpbnRlcmFjdGluZyAoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2ludGVyYWN0aW5nXG4gIH1cblxuICAvKiogKi9cbiAgc3RvcCAoKSB7XG4gICAgdGhpcy5fc2lnbmFscy5maXJlKCdzdG9wJywgeyBpbnRlcmFjdGlvbjogdGhpcyB9KVxuXG4gICAgdGhpcy5pbnRlcmFjdGFibGUgPSB0aGlzLmVsZW1lbnQgPSBudWxsXG5cbiAgICB0aGlzLl9pbnRlcmFjdGluZyA9IGZhbHNlXG4gICAgdGhpcy5wcmVwYXJlZC5uYW1lID0gdGhpcy5wcmV2RXZlbnQgPSBudWxsXG4gIH1cblxuICBnZXRQb2ludGVySW5kZXggKHBvaW50ZXIpIHtcbiAgICBjb25zdCBwb2ludGVySWQgPSB1dGlscy5wb2ludGVyLmdldFBvaW50ZXJJZChwb2ludGVyKVxuXG4gICAgLy8gbW91c2UgYW5kIHBlbiBpbnRlcmFjdGlvbnMgbWF5IGhhdmUgb25seSBvbmUgcG9pbnRlclxuICAgIHJldHVybiAodGhpcy5wb2ludGVyVHlwZSA9PT0gJ21vdXNlJyB8fCB0aGlzLnBvaW50ZXJUeXBlID09PSAncGVuJylcbiAgICAgID8gdGhpcy5wb2ludGVycy5sZW5ndGggLSAxXG4gICAgICA6IHV0aWxzLmFyci5maW5kSW5kZXgodGhpcy5wb2ludGVycywgKGN1clBvaW50ZXIpID0+IGN1clBvaW50ZXIuaWQgPT09IHBvaW50ZXJJZClcbiAgfVxuXG4gIGdldFBvaW50ZXJJbmZvIChwb2ludGVyKSB7XG4gICAgcmV0dXJuIHRoaXMucG9pbnRlcnNbdGhpcy5nZXRQb2ludGVySW5kZXgocG9pbnRlcildXG4gIH1cblxuICB1cGRhdGVQb2ludGVyIChwb2ludGVyOiBJbnRlcmFjdC5Qb2ludGVyVHlwZSwgZXZlbnQ6IEludGVyYWN0LlBvaW50ZXJFdmVudFR5cGUsIGV2ZW50VGFyZ2V0OiBFdmVudFRhcmdldCwgZG93bj86IGJvb2xlYW4pIHtcbiAgICBjb25zdCBpZCA9IHV0aWxzLnBvaW50ZXIuZ2V0UG9pbnRlcklkKHBvaW50ZXIpXG4gICAgbGV0IHBvaW50ZXJJbmRleCA9IHRoaXMuZ2V0UG9pbnRlckluZGV4KHBvaW50ZXIpXG4gICAgbGV0IHBvaW50ZXJJbmZvID0gdGhpcy5wb2ludGVyc1twb2ludGVySW5kZXhdXG5cbiAgICBkb3duID0gZG93biA9PT0gZmFsc2VcbiAgICAgID8gZmFsc2VcbiAgICAgIDogZG93biB8fCAvKGRvd258c3RhcnQpJC9pLnRlc3QoZXZlbnQudHlwZSlcblxuICAgIGlmICghcG9pbnRlckluZm8pIHtcbiAgICAgIHBvaW50ZXJJbmZvID0gbmV3IFBvaW50ZXJJbmZvKFxuICAgICAgICBpZCxcbiAgICAgICAgcG9pbnRlcixcbiAgICAgICAgZXZlbnQsXG4gICAgICAgIG51bGwsXG4gICAgICAgIG51bGwsXG4gICAgICApXG5cbiAgICAgIHBvaW50ZXJJbmRleCA9IHRoaXMucG9pbnRlcnMubGVuZ3RoXG4gICAgICB0aGlzLnBvaW50ZXJzLnB1c2gocG9pbnRlckluZm8pXG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgcG9pbnRlckluZm8ucG9pbnRlciA9IHBvaW50ZXJcbiAgICB9XG5cbiAgICBpZiAoZG93bikge1xuICAgICAgdGhpcy5wb2ludGVySXNEb3duID0gdHJ1ZVxuXG4gICAgICBpZiAoIXRoaXMuaW50ZXJhY3RpbmcoKSkge1xuICAgICAgICB1dGlscy5wb2ludGVyLnNldENvb3Jkcyh0aGlzLmNvb3Jkcy5zdGFydCwgdGhpcy5wb2ludGVycy5tYXAoKHApID0+IHAucG9pbnRlciksIHRoaXMuX25vdygpKVxuXG4gICAgICAgIHV0aWxzLnBvaW50ZXIuY29weUNvb3Jkcyh0aGlzLmNvb3Jkcy5jdXIsIHRoaXMuY29vcmRzLnN0YXJ0KVxuICAgICAgICB1dGlscy5wb2ludGVyLmNvcHlDb29yZHModGhpcy5jb29yZHMucHJldiwgdGhpcy5jb29yZHMuc3RhcnQpXG4gICAgICAgIHV0aWxzLnBvaW50ZXIucG9pbnRlckV4dGVuZCh0aGlzLmRvd25Qb2ludGVyLCBwb2ludGVyKVxuXG4gICAgICAgIHRoaXMuZG93bkV2ZW50ID0gZXZlbnRcbiAgICAgICAgcG9pbnRlckluZm8uZG93blRpbWUgPSB0aGlzLmNvb3Jkcy5jdXIudGltZVN0YW1wXG4gICAgICAgIHBvaW50ZXJJbmZvLmRvd25UYXJnZXQgPSBldmVudFRhcmdldFxuXG4gICAgICAgIHRoaXMucG9pbnRlcldhc01vdmVkID0gZmFsc2VcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLl91cGRhdGVMYXRlc3RQb2ludGVyKHBvaW50ZXIsIGV2ZW50LCBldmVudFRhcmdldClcblxuICAgIHRoaXMuX3NpZ25hbHMuZmlyZSgndXBkYXRlLXBvaW50ZXInLCB7XG4gICAgICBwb2ludGVyLFxuICAgICAgZXZlbnQsXG4gICAgICBldmVudFRhcmdldCxcbiAgICAgIGRvd24sXG4gICAgICBwb2ludGVySW5mbyxcbiAgICAgIHBvaW50ZXJJbmRleCxcbiAgICAgIGludGVyYWN0aW9uOiB0aGlzLFxuICAgIH0pXG5cbiAgICByZXR1cm4gcG9pbnRlckluZGV4XG4gIH1cblxuICByZW1vdmVQb2ludGVyIChwb2ludGVyLCBldmVudCkge1xuICAgIGNvbnN0IHBvaW50ZXJJbmRleCA9IHRoaXMuZ2V0UG9pbnRlckluZGV4KHBvaW50ZXIpXG5cbiAgICBpZiAocG9pbnRlckluZGV4ID09PSAtMSkgeyByZXR1cm4gfVxuXG4gICAgY29uc3QgcG9pbnRlckluZm8gPSB0aGlzLnBvaW50ZXJzW3BvaW50ZXJJbmRleF1cblxuICAgIHRoaXMuX3NpZ25hbHMuZmlyZSgncmVtb3ZlLXBvaW50ZXInLCB7XG4gICAgICBwb2ludGVyLFxuICAgICAgZXZlbnQsXG4gICAgICBwb2ludGVySW5kZXgsXG4gICAgICBwb2ludGVySW5mbyxcbiAgICAgIGludGVyYWN0aW9uOiB0aGlzLFxuICAgIH0pXG5cbiAgICB0aGlzLnBvaW50ZXJzLnNwbGljZShwb2ludGVySW5kZXgsIDEpXG4gIH1cblxuICBfdXBkYXRlTGF0ZXN0UG9pbnRlciAocG9pbnRlciwgZXZlbnQsIGV2ZW50VGFyZ2V0KSB7XG4gICAgdGhpcy5fbGF0ZXN0UG9pbnRlci5wb2ludGVyID0gcG9pbnRlclxuICAgIHRoaXMuX2xhdGVzdFBvaW50ZXIuZXZlbnQgPSBldmVudFxuICAgIHRoaXMuX2xhdGVzdFBvaW50ZXIuZXZlbnRUYXJnZXQgPSBldmVudFRhcmdldFxuICB9XG5cbiAgX2NyZWF0ZVByZXBhcmVkRXZlbnQgKGV2ZW50OiBJbnRlcmFjdC5Qb2ludGVyRXZlbnRUeXBlLCBwaGFzZTogRXZlbnRQaGFzZSwgcHJlRW5kOiBib29sZWFuLCB0eXBlOiBzdHJpbmcpIHtcbiAgICBjb25zdCBhY3Rpb25OYW1lID0gdGhpcy5wcmVwYXJlZC5uYW1lXG5cbiAgICByZXR1cm4gbmV3IEludGVyYWN0RXZlbnQodGhpcywgZXZlbnQsIGFjdGlvbk5hbWUsIHBoYXNlLCB0aGlzLmVsZW1lbnQsIG51bGwsIHByZUVuZCwgdHlwZSlcbiAgfVxuXG4gIF9maXJlRXZlbnQgKGlFdmVudCkge1xuICAgIHRoaXMuaW50ZXJhY3RhYmxlLmZpcmUoaUV2ZW50KVxuXG4gICAgaWYgKCF0aGlzLnByZXZFdmVudCB8fCBpRXZlbnQudGltZVN0YW1wID49IHRoaXMucHJldkV2ZW50LnRpbWVTdGFtcCkge1xuICAgICAgdGhpcy5wcmV2RXZlbnQgPSBpRXZlbnRcbiAgICB9XG4gIH1cblxuICBfZG9QaGFzZSAoc2lnbmFsQXJnOiBQYXJ0aWFsPEludGVyYWN0LlNpZ25hbEFyZz4pIHtcbiAgICBjb25zdCB7IGV2ZW50LCBwaGFzZSwgcHJlRW5kLCB0eXBlIH0gPSBzaWduYWxBcmdcblxuICAgIGlmICghc2lnbmFsQXJnLm5vQmVmb3JlKSB7XG4gICAgICBjb25zdCBiZWZvcmVSZXN1bHQgPSB0aGlzLl9zaWduYWxzLmZpcmUoYGJlZm9yZS1hY3Rpb24tJHtwaGFzZX1gLCBzaWduYWxBcmcpXG5cbiAgICAgIGlmIChiZWZvcmVSZXN1bHQgPT09IGZhbHNlKSB7XG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGlFdmVudCA9IHNpZ25hbEFyZy5pRXZlbnQgPSB0aGlzLl9jcmVhdGVQcmVwYXJlZEV2ZW50KGV2ZW50LCBwaGFzZSwgcHJlRW5kLCB0eXBlKVxuICAgIGNvbnN0IHsgcmVjdCB9ID0gdGhpc1xuXG4gICAgaWYgKHJlY3QpIHtcbiAgICAgIC8vIHVwZGF0ZSB0aGUgcmVjdCBtb2RpZmljYXRpb25zXG4gICAgICBjb25zdCBlZGdlcyA9IHRoaXMuZWRnZXMgfHwgdGhpcy5wcmVwYXJlZC5lZGdlcyB8fCB7IGxlZnQ6IHRydWUsIHJpZ2h0OiB0cnVlLCB0b3A6IHRydWUsIGJvdHRvbTogdHJ1ZSB9XG5cbiAgICAgIGlmIChlZGdlcy50b3ApICAgIHsgcmVjdC50b3AgICAgKz0gaUV2ZW50LmRlbHRhLnkgfVxuICAgICAgaWYgKGVkZ2VzLmJvdHRvbSkgeyByZWN0LmJvdHRvbSArPSBpRXZlbnQuZGVsdGEueSB9XG4gICAgICBpZiAoZWRnZXMubGVmdCkgICB7IHJlY3QubGVmdCAgICs9IGlFdmVudC5kZWx0YS54IH1cbiAgICAgIGlmIChlZGdlcy5yaWdodCkgIHsgcmVjdC5yaWdodCAgKz0gaUV2ZW50LmRlbHRhLnggfVxuXG4gICAgICByZWN0LndpZHRoID0gcmVjdC5yaWdodCAtIHJlY3QubGVmdFxuICAgICAgcmVjdC5oZWlnaHQgPSByZWN0LmJvdHRvbSAtIHJlY3QudG9wXG4gICAgfVxuXG4gICAgdGhpcy5fc2lnbmFscy5maXJlKGBhY3Rpb24tJHtwaGFzZX1gLCBzaWduYWxBcmcpXG5cbiAgICB0aGlzLl9maXJlRXZlbnQoaUV2ZW50KVxuXG4gICAgdGhpcy5fc2lnbmFscy5maXJlKGBhZnRlci1hY3Rpb24tJHtwaGFzZX1gLCBzaWduYWxBcmcpXG5cbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgX25vdyAoKSB7IHJldHVybiBEYXRlLm5vdygpIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgSW50ZXJhY3Rpb25cbmV4cG9ydCB7IFBvaW50ZXJJbmZvIH1cbiJdfQ==

@@ -22,3 +22,2 @@ import Signals from '@interactjs/utils/Signals';

declare function doOnInteractions(method: any, scope: any): (event: any) => void;
export declare function newInteraction(options: any, scope: any): any;
declare function onDocSignal({ doc, scope, options }: {

@@ -34,5 +33,4 @@ doc: any;

doOnInteractions: typeof doOnInteractions;
newInteraction: typeof newInteraction;
methodNames: string[];
};
export default _default;

@@ -59,3 +59,5 @@ import browser from '@interactjs/utils/browser';

options.signals = signals;
return new scope.Interaction(options);
const interaction = new scope.Interaction(options);
scope.interactions.list.push(interaction);
return interaction;
},

@@ -140,9 +142,4 @@ listeners,

scope.interactions.signals.fire('find', signalArg);
return signalArg.interaction || newInteraction({ pointerType }, scope);
return signalArg.interaction || scope.interactions.new({ pointerType });
}
export function newInteraction(options, scope) {
const interaction = scope.interactions.new(options);
scope.interactions.list.push(interaction);
return interaction;
}
function onDocSignal({ doc, scope, options }, signalName) {

@@ -170,5 +167,4 @@ const { eventMap } = scope.interactions;

doOnInteractions,
newInteraction,
methodNames,
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJhY3Rpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiaW50ZXJhY3Rpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sT0FBTyxNQUFNLDJCQUEyQixDQUFBO0FBQy9DLE9BQU8sVUFBVSxNQUFNLDhCQUE4QixDQUFBO0FBQ3JELE9BQU8sTUFBTSxNQUFNLDBCQUEwQixDQUFBO0FBQzdDLE9BQU8sTUFBeUIsTUFBTSxxQ0FBcUMsQ0FBQTtBQUMzRSxPQUFPLFlBQVksTUFBTSxnQ0FBZ0MsQ0FBQTtBQUN6RCxPQUFPLE9BQU8sTUFBTSwyQkFBMkIsQ0FBQTtBQUMvQyxPQUFPLGVBQWUsTUFBTSxlQUFlLENBQUE7QUFrQjNDLE1BQU0sV0FBVyxHQUFHO0lBQ2xCLGFBQWEsRUFBRSxhQUFhLEVBQUUsV0FBVztJQUN6QyxlQUFlLEVBQUUsZUFBZSxFQUFFLFlBQVk7Q0FDL0MsQ0FBQTtBQUVELFNBQVMsT0FBTyxDQUFFLEtBQVk7SUFDNUIsTUFBTSxPQUFPLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQTtJQUU3QixNQUFNLFNBQVMsR0FBRyxFQUFTLENBQUE7SUFFM0IsS0FBSyxNQUFNLE1BQU0sSUFBSSxXQUFXLEVBQUU7UUFDaEMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxHQUFHLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQTtLQUNwRDtJQUVELE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUE7SUFDdkMsTUFBTSxRQUFRLEdBQUcsRUFBMEMsQ0FBQTtJQUUzRCxJQUFJLFVBQVUsQ0FBQyxZQUFZLEVBQUU7UUFDM0IsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUcsR0FBRyxTQUFTLENBQUMsV0FBVyxDQUFBO1FBQ3BELFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFHLEdBQUcsU0FBUyxDQUFDLFdBQVcsQ0FBQTtRQUNwRCxRQUFRLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBSyxH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QUE7S0FDL0Q7QUFDSCxDQUFDO0FBRUQsZUFBZTtJQUNiLEVBQUUsRUFBRSxtQkFBbUI7SUFDdkIsT0FBTztJQUNQLFdBQVc7SUFDWCxnQkFBZ0I7SUFDaEIsY0FBYztJQUNkLFdBQVc7Q0FDWixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGJyb3dzZXIgZnJvbSAnQGludGVyYWN0anMvdXRpbHMvYnJvd3NlcidcbmltcG9ydCBkb21PYmplY3RzIGZyb20gJ0BpbnRlcmFjdGpzL3V0aWxzL2RvbU9iamVjdHMnXG5pbXBvcnQgZXZlbnRzIGZyb20gJ0BpbnRlcmFjdGpzL3V0aWxzL2V2ZW50cydcbmltcG9ydCBmaW5kZXIsIHsgU2VhcmNoRGV0YWlscyB9IGZyb20gJ0BpbnRlcmFjdGpzL3V0aWxzL2ludGVyYWN0aW9uRmluZGVyJ1xuaW1wb3J0IHBvaW50ZXJVdGlscyBmcm9tICdAaW50ZXJhY3Rqcy91dGlscy9wb2ludGVyVXRpbHMnXG5pbXBvcnQgU2lnbmFscyBmcm9tICdAaW50ZXJhY3Rqcy91dGlscy9TaWduYWxzJ1xuaW1wb3J0IEludGVyYWN0aW9uQmFzZSBmcm9tICcuL0ludGVyYWN0aW9uJ1xuaW1wb3J0IHsgU2NvcGUgfSBmcm9tICcuL3Njb3BlJ1xuXG5kZWNsYXJlIG1vZHVsZSAnQGludGVyYWN0anMvY29yZS9zY29wZScge1xuICBpbnRlcmZhY2UgU2NvcGUge1xuICAgIEludGVyYWN0aW9uOiB0eXBlb2YgSW50ZXJhY3Rpb25CYXNlXG4gICAgaW50ZXJhY3Rpb25zOiB7XG4gICAgICBzaWduYWxzOiBTaWduYWxzXG4gICAgICBuZXc6IChvcHRpb25zOiBhbnkpID0+IEludGVyYWN0aW9uQmFzZVxuICAgICAgbGlzdDogSW50ZXJhY3Rpb25CYXNlW11cbiAgICAgIGxpc3RlbmVyczogeyBbdHlwZTogc3RyaW5nXTogSW50ZXJhY3QuTGlzdGVuZXIgfVxuICAgICAgZXZlbnRNYXA6IGFueVxuICAgICAgcG9pbnRlck1vdmVUb2xlcmFuY2U6IG51bWJlclxuICAgIH1cbiAgICBwcmV2VG91Y2hUaW1lOiBudW1iZXJcbiAgfVxufVxuXG5jb25zdCBtZXRob2ROYW1lcyA9IFtcbiAgJ3BvaW50ZXJEb3duJywgJ3BvaW50ZXJNb3ZlJywgJ3BvaW50ZXJVcCcsXG4gICd1cGRhdGVQb2ludGVyJywgJ3JlbW92ZVBvaW50ZXInLCAnd2luZG93Qmx1cicsXG5dXG5cbmZ1bmN0aW9uIGluc3RhbGwgKHNjb3BlOiBTY29wZSkge1xuICBjb25zdCBzaWduYWxzID0gbmV3IFNpZ25hbHMoKVxuXG4gIGNvbnN0IGxpc3RlbmVycyA9IHt9IGFzIGFueVxuXG4gIGZvciAoY29uc3QgbWV0aG9kIG9mIG1ldGhvZE5hbWVzKSB7XG4gICAgbGlzdGVuZXJzW21ldGhvZF0gPSBkb09uSW50ZXJhY3Rpb25zKG1ldGhvZCwgc2NvcGUpXG4gIH1cblxuICBjb25zdCBwRXZlbnRUeXBlcyA9IGJyb3dzZXIucEV2ZW50VHlwZXNcbiAgY29uc3QgZXZlbnRNYXAgPSB7fSBhcyB7IFtrZXk6IHN0cmluZ106IEludGVyYWN0Lkxpc3RlbmVyIH1cblxuICBpZiAoZG9tT2JqZWN0cy5Qb2ludGVyRXZlbnQpIHtcbiAgICBldmVudE1hcFtwRXZlbnRUeXBlcy5kb3duICBdID0gbGlzdGVuZXJzLnBvaW50ZXJEb3duXG4gICAgZXZlbnRNYXBbcEV2ZW50VHlwZXMubW92ZSAgXSA9IGxpc3RlbmVycy5wb2ludGVyTW92ZVxuICAgIGV2ZW50TWFwW3BFdmVudFR5cGVzLnVwICAgIF0gPSBsaXN0ZW5lcnMucG9pbnRlclVwXG4gICAgZXZlbnRNYXBbcEV2ZW50VHlwZXMuY2FuY2VsXSA9IGxpc3RlbmVycy5wb2ludGVyVXBcbiAgfVxuICBlbHNlIHtcbiAgICBldmVudE1hcC5tb3VzZWRvd24gICA9IGxpc3RlbmVycy5wb2ludGVyRG93blxuICAgIGV2ZW50TWFwLm1vdXNlbW92ZSAgID0gbGlzdGVuZXJzLnBvaW50ZXJNb3ZlXG4gICAgZXZlbnRNYXAubW91c2V1cCAgICAgPSBsaXN0ZW5lcnMucG9pbnRlclVwXG5cbiAgICBldmVudE1hcC50b3VjaHN0YXJ0ICA9IGxpc3RlbmVycy5wb2ludGVyRG93blxuICAgIGV2ZW50TWFwLnRvdWNobW92ZSAgID0gbGlzdGVuZXJzLnBvaW50ZXJNb3ZlXG4gICAgZXZlbnRNYXAudG91Y2hlbmQgICAgPSBsaXN0ZW5lcnMucG9pbnRlclVwXG4gICAgZXZlbnRNYXAudG91Y2hjYW5jZWwgPSBsaXN0ZW5lcnMucG9pbnRlclVwXG4gIH1cblxuICBldmVudE1hcC5ibHVyID0gKGV2ZW50KSA9PiB7XG4gICAgZm9yIChjb25zdCBpbnRlcmFjdGlvbiBvZiBzY29wZS5pbnRlcmFjdGlvbnMubGlzdCkge1xuICAgICAgaW50ZXJhY3Rpb24uZG9jdW1lbnRCbHVyKGV2ZW50KVxuICAgIH1cbiAgfVxuXG4gIHNjb3BlLnNpZ25hbHMub24oJ2FkZC1kb2N1bWVudCcsIG9uRG9jU2lnbmFsKVxuICBzY29wZS5zaWduYWxzLm9uKCdyZW1vdmUtZG9jdW1lbnQnLCBvbkRvY1NpZ25hbClcblxuICAvLyBmb3IgaWdub3JpbmcgYnJvd3NlcidzIHNpbXVsYXRlZCBtb3VzZSBldmVudHNcbiAgc2NvcGUucHJldlRvdWNoVGltZSA9IDBcblxuICBzY29wZS5JbnRlcmFjdGlvbiA9IGNsYXNzIEludGVyYWN0aW9uIGV4dGVuZHMgSW50ZXJhY3Rpb25CYXNlIHtcbiAgICBnZXQgcG9pbnRlck1vdmVUb2xlcmFuY2UgKCkge1xuICAgICAgcmV0dXJuIHNjb3BlLmludGVyYWN0aW9ucy5wb2ludGVyTW92ZVRvbGVyYW5jZVxuICAgIH1cblxuICAgIHNldCBwb2ludGVyTW92ZVRvbGVyYW5jZSAodmFsdWUpIHtcbiAgICAgIHNjb3BlLmludGVyYWN0aW9ucy5wb2ludGVyTW92ZVRvbGVyYW5jZSA9IHZhbHVlXG4gICAgfVxuXG4gICAgX25vdyAoKSB7IHJldHVybiBzY29wZS5ub3coKSB9XG4gIH1cbiAgc2NvcGUuaW50ZXJhY3Rpb25zID0ge1xuICAgIHNpZ25hbHMsXG4gICAgLy8gYWxsIGFjdGl2ZSBhbmQgaWRsZSBpbnRlcmFjdGlvbnNcbiAgICBsaXN0OiBbXSxcbiAgICBuZXcgKG9wdGlvbnM6IHsgcG9pbnRlclR5cGU/OiBzdHJpbmcsIHNpZ25hbHM/OiBTaWduYWxzIH0pIHtcbiAgICAgIG9wdGlvbnMuc2lnbmFscyA9IHNpZ25hbHNcblxuICAgICAgcmV0dXJuIG5ldyBzY29wZS5JbnRlcmFjdGlvbihvcHRpb25zIGFzIFJlcXVpcmVkPHR5cGVvZiBvcHRpb25zPilcbiAgICB9LFxuICAgIGxpc3RlbmVycyxcbiAgICBldmVudE1hcCxcbiAgICBwb2ludGVyTW92ZVRvbGVyYW5jZTogMSxcbiAgfVxufVxuXG5mdW5jdGlvbiBkb09uSW50ZXJhY3Rpb25zIChtZXRob2QsIHNjb3BlKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICBjb25zdCBpbnRlcmFjdGlvbnMgPSBzY29wZS5pbnRlcmFjdGlvbnMubGlzdFxuXG4gICAgY29uc3QgcG9pbnRlclR5cGUgPSBwb2ludGVyVXRpbHMuZ2V0UG9pbnRlclR5cGUoZXZlbnQpXG4gICAgY29uc3QgW2V2ZW50VGFyZ2V0LCBjdXJFdmVudFRhcmdldF0gPSBwb2ludGVyVXRpbHMuZ2V0RXZlbnRUYXJnZXRzKGV2ZW50KVxuICAgIGNvbnN0IG1hdGNoZXMgPSBbXSAvLyBbIFtwb2ludGVyLCBpbnRlcmFjdGlvbl0sIC4uLl1cblxuICAgIGlmIChicm93c2VyLnN1cHBvcnRzVG91Y2ggJiYgL3RvdWNoLy50ZXN0KGV2ZW50LnR5cGUpKSB7XG4gICAgICBzY29wZS5wcmV2VG91Y2hUaW1lID0gc2NvcGUubm93KClcblxuICAgICAgZm9yIChjb25zdCBjaGFuZ2VkVG91Y2ggb2YgZXZlbnQuY2hhbmdlZFRvdWNoZXMpIHtcbiAgICAgICAgY29uc3QgcG9pbnRlciA9IGNoYW5nZWRUb3VjaFxuICAgICAgICBjb25zdCBwb2ludGVySWQgPSBwb2ludGVyVXRpbHMuZ2V0UG9pbnRlcklkKHBvaW50ZXIpXG4gICAgICAgIGNvbnN0IHNlYXJjaERldGFpbHM6IFNlYXJjaERldGFpbHMgPSB7XG4gICAgICAgICAgcG9pbnRlcixcbiAgICAgICAgICBwb2ludGVySWQsXG4gICAgICAgICAgcG9pbnRlclR5cGUsXG4gICAgICAgICAgZXZlbnRUeXBlOiBldmVudC50eXBlLFxuICAgICAgICAgIGV2ZW50VGFyZ2V0LFxuICAgICAgICAgIGN1ckV2ZW50VGFyZ2V0LFxuICAgICAgICAgIHNjb3BlLFxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGludGVyYWN0aW9uID0gZ2V0SW50ZXJhY3Rpb24oc2VhcmNoRGV0YWlscylcblxuICAgICAgICBtYXRjaGVzLnB1c2goW1xuICAgICAgICAgIHNlYXJjaERldGFpbHMucG9pbnRlcixcbiAgICAgICAgICBzZWFyY2hEZXRhaWxzLmV2ZW50VGFyZ2V0LFxuICAgICAgICAgIHNlYXJjaERldGFpbHMuY3VyRXZlbnRUYXJnZXQsXG4gICAgICAgICAgaW50ZXJhY3Rpb24sXG4gICAgICAgIF0pXG4gICAgICB9XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgbGV0IGludmFsaWRQb2ludGVyID0gZmFsc2VcblxuICAgICAgaWYgKCFicm93c2VyLnN1cHBvcnRzUG9pbnRlckV2ZW50ICYmIC9tb3VzZS8udGVzdChldmVudC50eXBlKSkge1xuICAgICAgICAvLyBpZ25vcmUgbW91c2UgZXZlbnRzIHdoaWxlIHRvdWNoIGludGVyYWN0aW9ucyBhcmUgYWN0aXZlXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaW50ZXJhY3Rpb25zLmxlbmd0aCAmJiAhaW52YWxpZFBvaW50ZXI7IGkrKykge1xuICAgICAgICAgIGludmFsaWRQb2ludGVyID0gaW50ZXJhY3Rpb25zW2ldLnBvaW50ZXJUeXBlICE9PSAnbW91c2UnICYmIGludGVyYWN0aW9uc1tpXS5wb2ludGVySXNEb3duXG4gICAgICAgIH1cblxuICAgICAgICAvLyB0cnkgdG8gaWdub3JlIG1vdXNlIGV2ZW50cyB0aGF0IGFyZSBzaW11bGF0ZWQgYnkgdGhlIGJyb3dzZXJcbiAgICAgICAgLy8gYWZ0ZXIgYSB0b3VjaCBldmVudFxuICAgICAgICBpbnZhbGlkUG9pbnRlciA9IGludmFsaWRQb2ludGVyIHx8XG4gICAgICAgICAgKHNjb3BlLm5vdygpIC0gc2NvcGUucHJldlRvdWNoVGltZSA8IDUwMCkgfHxcbiAgICAgICAgICAvLyBvbiBpT1MgYW5kIEZpcmVmb3ggTW9iaWxlLCBNb3VzZUV2ZW50LnRpbWVTdGFtcCBpcyB6ZXJvIGlmIHNpbXVsYXRlZFxuICAgICAgICAgIGV2ZW50LnRpbWVTdGFtcCA9PT0gMFxuICAgICAgfVxuXG4gICAgICBpZiAoIWludmFsaWRQb2ludGVyKSB7XG4gICAgICAgIGNvbnN0IHNlYXJjaERldGFpbHMgPSB7XG4gICAgICAgICAgcG9pbnRlcjogZXZlbnQsXG4gICAgICAgICAgcG9pbnRlcklkOiBwb2ludGVyVXRpbHMuZ2V0UG9pbnRlcklkKGV2ZW50KSxcbiAgICAgICAgICBwb2ludGVyVHlwZSxcbiAgICAgICAgICBldmVudFR5cGU6IGV2ZW50LnR5cGUsXG4gICAgICAgICAgY3VyRXZlbnRUYXJnZXQsXG4gICAgICAgICAgZXZlbnRUYXJnZXQsXG4gICAgICAgICAgc2NvcGUsXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBpbnRlcmFjdGlvbiA9IGdldEludGVyYWN0aW9uKHNlYXJjaERldGFpbHMpXG5cbiAgICAgICAgbWF0Y2hlcy5wdXNoKFtcbiAgICAgICAgICBzZWFyY2hEZXRhaWxzLnBvaW50ZXIsXG4gICAgICAgICAgc2VhcmNoRGV0YWlscy5ldmVudFRhcmdldCxcbiAgICAgICAgICBzZWFyY2hEZXRhaWxzLmN1ckV2ZW50VGFyZ2V0LFxuICAgICAgICAgIGludGVyYWN0aW9uLFxuICAgICAgICBdKVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zaGFkb3dcbiAgICBmb3IgKGNvbnN0IFtwb2ludGVyLCBldmVudFRhcmdldCwgY3VyRXZlbnRUYXJnZXQsIGludGVyYWN0aW9uXSBvZiBtYXRjaGVzKSB7XG4gICAgICBpbnRlcmFjdGlvblttZXRob2RdKHBvaW50ZXIsIGV2ZW50LCBldmVudFRhcmdldCwgY3VyRXZlbnRUYXJnZXQpXG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGdldEludGVyYWN0aW9uIChzZWFyY2hEZXRhaWxzOiBTZWFyY2hEZXRhaWxzKSB7XG4gIGNvbnN0IHsgcG9pbnRlclR5cGUsIHNjb3BlIH0gPSBzZWFyY2hEZXRhaWxzXG5cbiAgY29uc3QgZm91bmRJbnRlcmFjdGlvbiA9IGZpbmRlci5zZWFyY2goc2VhcmNoRGV0YWlscylcbiAgY29uc3Qgc2lnbmFsQXJnID0geyBpbnRlcmFjdGlvbjogZm91bmRJbnRlcmFjdGlvbiwgc2VhcmNoRGV0YWlscyB9XG5cbiAgc2NvcGUuaW50ZXJhY3Rpb25zLnNpZ25hbHMuZmlyZSgnZmluZCcsIHNpZ25hbEFyZylcblxuICByZXR1cm4gc2lnbmFsQXJnLmludGVyYWN0aW9uIHx8IG5ld0ludGVyYWN0aW9uKHsgcG9pbnRlclR5cGUgfSwgc2NvcGUpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBuZXdJbnRlcmFjdGlvbiAob3B0aW9ucywgc2NvcGUpIHtcbiAgY29uc3QgaW50ZXJhY3Rpb24gPSBzY29wZS5pbnRlcmFjdGlvbnMubmV3KG9wdGlvbnMpXG5cbiAgc2NvcGUuaW50ZXJhY3Rpb25zLmxpc3QucHVzaChpbnRlcmFjdGlvbilcbiAgcmV0dXJuIGludGVyYWN0aW9uXG59XG5cbmZ1bmN0aW9uIG9uRG9jU2lnbmFsICh7IGRvYywgc2NvcGUsIG9wdGlvbnMgfSwgc2lnbmFsTmFtZSkge1xuICBjb25zdCB7IGV2ZW50TWFwIH0gPSBzY29wZS5pbnRlcmFjdGlvbnNcbiAgY29uc3QgZXZlbnRNZXRob2QgPSBzaWduYWxOYW1lLmluZGV4T2YoJ2FkZCcpID09PSAwXG4gICAgPyBldmVudHMuYWRkIDogZXZlbnRzLnJlbW92ZVxuXG4gIGlmIChzY29wZS5icm93c2VyLmlzSU9TICYmICFvcHRpb25zLmV2ZW50cykge1xuICAgIG9wdGlvbnMuZXZlbnRzID0geyBwYXNzaXZlOiBmYWxzZSB9XG4gIH1cblxuICAvLyBkZWxlZ2F0ZSBldmVudCBsaXN0ZW5lclxuICBmb3IgKGNvbnN0IGV2ZW50VHlwZSBpbiBldmVudHMuZGVsZWdhdGVkRXZlbnRzKSB7XG4gICAgZXZlbnRNZXRob2QoZG9jLCBldmVudFR5cGUsIGV2ZW50cy5kZWxlZ2F0ZUxpc3RlbmVyKVxuICAgIGV2ZW50TWV0aG9kKGRvYywgZXZlbnRUeXBlLCBldmVudHMuZGVsZWdhdGVVc2VDYXB0dXJlLCB0cnVlKVxuICB9XG5cbiAgY29uc3QgZXZlbnRPcHRpb25zID0gb3B0aW9ucyAmJiBvcHRpb25zLmV2ZW50c1xuXG4gIGZvciAoY29uc3QgZXZlbnRUeXBlIGluIGV2ZW50TWFwKSB7XG4gICAgZXZlbnRNZXRob2QoZG9jLCBldmVudFR5cGUsIGV2ZW50TWFwW2V2ZW50VHlwZV0sIGV2ZW50T3B0aW9ucylcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIGlkOiAnY29yZS9pbnRlcmFjdGlvbnMnLFxuICBpbnN0YWxsLFxuICBvbkRvY1NpZ25hbCxcbiAgZG9PbkludGVyYWN0aW9ucyxcbiAgbmV3SW50ZXJhY3Rpb24sXG4gIG1ldGhvZE5hbWVzLFxufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJhY3Rpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiaW50ZXJhY3Rpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sT0FBTyxNQUFNLDJCQUEyQixDQUFBO0FBQy9DLE9BQU8sVUFBVSxNQUFNLDhCQUE4QixDQUFBO0FBQ3JELE9BQU8sTUFBTSxNQUFNLDBCQUEwQixDQUFBO0FBQzdDLE9BQU8sTUFBeUIsTUFBTSxxQ0FBcUMsQ0FBQTtBQUMzRSxPQUFPLFlBQVksTUFBTSxnQ0FBZ0MsQ0FBQTtBQUN6RCxPQUFPLE9BQU8sTUFBTSwyQkFBMkIsQ0FBQTtBQUMvQyxPQUFPLGVBQWUsTUFBTSxlQUFlLENBQUE7QUFrQjNDLE1BQU0sV0FBVyxHQUFHO0lBQ2xCLGFBQWEsRUFBRSxhQUFhLEVBQUUsV0FBVztJQUN6QyxlQUFlLEVBQUUsZUFBZSxFQUFFLFlBQVk7Q0FDL0MsQ0FBQTtBQUVELFNBQVMsT0FBTyxDQUFFLEtBQVk7SUFDNUIsTUFBTSxPQUFPLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQTtJQUU3QixNQUFNLFNBQVMsR0FBRyxFQUFTLENBQUE7SUFFM0IsS0FBSyxNQUFNLE1BQU0sSUFBSSxXQUFXLEVBQUU7UUFDaEMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxHQUFHLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQTtLQUNwRDtJQUVELE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUE7SUFDdkMsTUFBTSxRQUFRLEdBQUcsRUFBMEMsQ0FBQTtJQUUzRCxJQUFJLFVBQVUsQ0FBQyxZQUFZLEVBQUU7UUFDM0IsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUcsR0FBRyxTQUFTLENBQUMsV0FBVyxDQUFBO1FBQ3BELFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFHLEdBQUcsU0FBUyxDQUFDLFdBQVcsQ0FBQTtRQUNwRCxRQUFRLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBSyxH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Q1osQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBicm93c2VyIGZyb20gJ0BpbnRlcmFjdGpzL3V0aWxzL2Jyb3dzZXInXG5pbXBvcnQgZG9tT2JqZWN0cyBmcm9tICdAaW50ZXJhY3Rqcy91dGlscy9kb21PYmplY3RzJ1xuaW1wb3J0IGV2ZW50cyBmcm9tICdAaW50ZXJhY3Rqcy91dGlscy9ldmVudHMnXG5pbXBvcnQgZmluZGVyLCB7IFNlYXJjaERldGFpbHMgfSBmcm9tICdAaW50ZXJhY3Rqcy91dGlscy9pbnRlcmFjdGlvbkZpbmRlcidcbmltcG9ydCBwb2ludGVyVXRpbHMgZnJvbSAnQGludGVyYWN0anMvdXRpbHMvcG9pbnRlclV0aWxzJ1xuaW1wb3J0IFNpZ25hbHMgZnJvbSAnQGludGVyYWN0anMvdXRpbHMvU2lnbmFscydcbmltcG9ydCBJbnRlcmFjdGlvbkJhc2UgZnJvbSAnLi9JbnRlcmFjdGlvbidcbmltcG9ydCB7IFNjb3BlIH0gZnJvbSAnLi9zY29wZSdcblxuZGVjbGFyZSBtb2R1bGUgJ0BpbnRlcmFjdGpzL2NvcmUvc2NvcGUnIHtcbiAgaW50ZXJmYWNlIFNjb3BlIHtcbiAgICBJbnRlcmFjdGlvbjogdHlwZW9mIEludGVyYWN0aW9uQmFzZVxuICAgIGludGVyYWN0aW9uczoge1xuICAgICAgc2lnbmFsczogU2lnbmFsc1xuICAgICAgbmV3OiAob3B0aW9uczogYW55KSA9PiBJbnRlcmFjdGlvbkJhc2VcbiAgICAgIGxpc3Q6IEludGVyYWN0aW9uQmFzZVtdXG4gICAgICBsaXN0ZW5lcnM6IHsgW3R5cGU6IHN0cmluZ106IEludGVyYWN0Lkxpc3RlbmVyIH1cbiAgICAgIGV2ZW50TWFwOiBhbnlcbiAgICAgIHBvaW50ZXJNb3ZlVG9sZXJhbmNlOiBudW1iZXJcbiAgICB9XG4gICAgcHJldlRvdWNoVGltZTogbnVtYmVyXG4gIH1cbn1cblxuY29uc3QgbWV0aG9kTmFtZXMgPSBbXG4gICdwb2ludGVyRG93bicsICdwb2ludGVyTW92ZScsICdwb2ludGVyVXAnLFxuICAndXBkYXRlUG9pbnRlcicsICdyZW1vdmVQb2ludGVyJywgJ3dpbmRvd0JsdXInLFxuXVxuXG5mdW5jdGlvbiBpbnN0YWxsIChzY29wZTogU2NvcGUpIHtcbiAgY29uc3Qgc2lnbmFscyA9IG5ldyBTaWduYWxzKClcblxuICBjb25zdCBsaXN0ZW5lcnMgPSB7fSBhcyBhbnlcblxuICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBtZXRob2ROYW1lcykge1xuICAgIGxpc3RlbmVyc1ttZXRob2RdID0gZG9PbkludGVyYWN0aW9ucyhtZXRob2QsIHNjb3BlKVxuICB9XG5cbiAgY29uc3QgcEV2ZW50VHlwZXMgPSBicm93c2VyLnBFdmVudFR5cGVzXG4gIGNvbnN0IGV2ZW50TWFwID0ge30gYXMgeyBba2V5OiBzdHJpbmddOiBJbnRlcmFjdC5MaXN0ZW5lciB9XG5cbiAgaWYgKGRvbU9iamVjdHMuUG9pbnRlckV2ZW50KSB7XG4gICAgZXZlbnRNYXBbcEV2ZW50VHlwZXMuZG93biAgXSA9IGxpc3RlbmVycy5wb2ludGVyRG93blxuICAgIGV2ZW50TWFwW3BFdmVudFR5cGVzLm1vdmUgIF0gPSBsaXN0ZW5lcnMucG9pbnRlck1vdmVcbiAgICBldmVudE1hcFtwRXZlbnRUeXBlcy51cCAgICBdID0gbGlzdGVuZXJzLnBvaW50ZXJVcFxuICAgIGV2ZW50TWFwW3BFdmVudFR5cGVzLmNhbmNlbF0gPSBsaXN0ZW5lcnMucG9pbnRlclVwXG4gIH1cbiAgZWxzZSB7XG4gICAgZXZlbnRNYXAubW91c2Vkb3duICAgPSBsaXN0ZW5lcnMucG9pbnRlckRvd25cbiAgICBldmVudE1hcC5tb3VzZW1vdmUgICA9IGxpc3RlbmVycy5wb2ludGVyTW92ZVxuICAgIGV2ZW50TWFwLm1vdXNldXAgICAgID0gbGlzdGVuZXJzLnBvaW50ZXJVcFxuXG4gICAgZXZlbnRNYXAudG91Y2hzdGFydCAgPSBsaXN0ZW5lcnMucG9pbnRlckRvd25cbiAgICBldmVudE1hcC50b3VjaG1vdmUgICA9IGxpc3RlbmVycy5wb2ludGVyTW92ZVxuICAgIGV2ZW50TWFwLnRvdWNoZW5kICAgID0gbGlzdGVuZXJzLnBvaW50ZXJVcFxuICAgIGV2ZW50TWFwLnRvdWNoY2FuY2VsID0gbGlzdGVuZXJzLnBvaW50ZXJVcFxuICB9XG5cbiAgZXZlbnRNYXAuYmx1ciA9IChldmVudCkgPT4ge1xuICAgIGZvciAoY29uc3QgaW50ZXJhY3Rpb24gb2Ygc2NvcGUuaW50ZXJhY3Rpb25zLmxpc3QpIHtcbiAgICAgIGludGVyYWN0aW9uLmRvY3VtZW50Qmx1cihldmVudClcbiAgICB9XG4gIH1cblxuICBzY29wZS5zaWduYWxzLm9uKCdhZGQtZG9jdW1lbnQnLCBvbkRvY1NpZ25hbClcbiAgc2NvcGUuc2lnbmFscy5vbigncmVtb3ZlLWRvY3VtZW50Jywgb25Eb2NTaWduYWwpXG5cbiAgLy8gZm9yIGlnbm9yaW5nIGJyb3dzZXIncyBzaW11bGF0ZWQgbW91c2UgZXZlbnRzXG4gIHNjb3BlLnByZXZUb3VjaFRpbWUgPSAwXG5cbiAgc2NvcGUuSW50ZXJhY3Rpb24gPSBjbGFzcyBJbnRlcmFjdGlvbiBleHRlbmRzIEludGVyYWN0aW9uQmFzZSB7XG4gICAgZ2V0IHBvaW50ZXJNb3ZlVG9sZXJhbmNlICgpIHtcbiAgICAgIHJldHVybiBzY29wZS5pbnRlcmFjdGlvbnMucG9pbnRlck1vdmVUb2xlcmFuY2VcbiAgICB9XG5cbiAgICBzZXQgcG9pbnRlck1vdmVUb2xlcmFuY2UgKHZhbHVlKSB7XG4gICAgICBzY29wZS5pbnRlcmFjdGlvbnMucG9pbnRlck1vdmVUb2xlcmFuY2UgPSB2YWx1ZVxuICAgIH1cblxuICAgIF9ub3cgKCkgeyByZXR1cm4gc2NvcGUubm93KCkgfVxuICB9XG4gIHNjb3BlLmludGVyYWN0aW9ucyA9IHtcbiAgICBzaWduYWxzLFxuICAgIC8vIGFsbCBhY3RpdmUgYW5kIGlkbGUgaW50ZXJhY3Rpb25zXG4gICAgbGlzdDogW10sXG4gICAgbmV3IChvcHRpb25zOiB7IHBvaW50ZXJUeXBlPzogc3RyaW5nLCBzaWduYWxzPzogU2lnbmFscyB9KSB7XG4gICAgICBvcHRpb25zLnNpZ25hbHMgPSBzaWduYWxzXG5cbiAgICAgIGNvbnN0IGludGVyYWN0aW9uID0gbmV3IHNjb3BlLkludGVyYWN0aW9uKG9wdGlvbnMgYXMgUmVxdWlyZWQ8dHlwZW9mIG9wdGlvbnM+KVxuXG4gICAgICBzY29wZS5pbnRlcmFjdGlvbnMubGlzdC5wdXNoKGludGVyYWN0aW9uKVxuICAgICAgcmV0dXJuIGludGVyYWN0aW9uXG4gICAgfSxcbiAgICBsaXN0ZW5lcnMsXG4gICAgZXZlbnRNYXAsXG4gICAgcG9pbnRlck1vdmVUb2xlcmFuY2U6IDEsXG4gIH1cbn1cblxuZnVuY3Rpb24gZG9PbkludGVyYWN0aW9ucyAobWV0aG9kLCBzY29wZSkge1xuICByZXR1cm4gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgY29uc3QgaW50ZXJhY3Rpb25zID0gc2NvcGUuaW50ZXJhY3Rpb25zLmxpc3RcblxuICAgIGNvbnN0IHBvaW50ZXJUeXBlID0gcG9pbnRlclV0aWxzLmdldFBvaW50ZXJUeXBlKGV2ZW50KVxuICAgIGNvbnN0IFtldmVudFRhcmdldCwgY3VyRXZlbnRUYXJnZXRdID0gcG9pbnRlclV0aWxzLmdldEV2ZW50VGFyZ2V0cyhldmVudClcbiAgICBjb25zdCBtYXRjaGVzID0gW10gLy8gWyBbcG9pbnRlciwgaW50ZXJhY3Rpb25dLCAuLi5dXG5cbiAgICBpZiAoYnJvd3Nlci5zdXBwb3J0c1RvdWNoICYmIC90b3VjaC8udGVzdChldmVudC50eXBlKSkge1xuICAgICAgc2NvcGUucHJldlRvdWNoVGltZSA9IHNjb3BlLm5vdygpXG5cbiAgICAgIGZvciAoY29uc3QgY2hhbmdlZFRvdWNoIG9mIGV2ZW50LmNoYW5nZWRUb3VjaGVzKSB7XG4gICAgICAgIGNvbnN0IHBvaW50ZXIgPSBjaGFuZ2VkVG91Y2hcbiAgICAgICAgY29uc3QgcG9pbnRlcklkID0gcG9pbnRlclV0aWxzLmdldFBvaW50ZXJJZChwb2ludGVyKVxuICAgICAgICBjb25zdCBzZWFyY2hEZXRhaWxzOiBTZWFyY2hEZXRhaWxzID0ge1xuICAgICAgICAgIHBvaW50ZXIsXG4gICAgICAgICAgcG9pbnRlcklkLFxuICAgICAgICAgIHBvaW50ZXJUeXBlLFxuICAgICAgICAgIGV2ZW50VHlwZTogZXZlbnQudHlwZSxcbiAgICAgICAgICBldmVudFRhcmdldCxcbiAgICAgICAgICBjdXJFdmVudFRhcmdldCxcbiAgICAgICAgICBzY29wZSxcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBpbnRlcmFjdGlvbiA9IGdldEludGVyYWN0aW9uKHNlYXJjaERldGFpbHMpXG5cbiAgICAgICAgbWF0Y2hlcy5wdXNoKFtcbiAgICAgICAgICBzZWFyY2hEZXRhaWxzLnBvaW50ZXIsXG4gICAgICAgICAgc2VhcmNoRGV0YWlscy5ldmVudFRhcmdldCxcbiAgICAgICAgICBzZWFyY2hEZXRhaWxzLmN1ckV2ZW50VGFyZ2V0LFxuICAgICAgICAgIGludGVyYWN0aW9uLFxuICAgICAgICBdKVxuICAgICAgfVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGxldCBpbnZhbGlkUG9pbnRlciA9IGZhbHNlXG5cbiAgICAgIGlmICghYnJvd3Nlci5zdXBwb3J0c1BvaW50ZXJFdmVudCAmJiAvbW91c2UvLnRlc3QoZXZlbnQudHlwZSkpIHtcbiAgICAgICAgLy8gaWdub3JlIG1vdXNlIGV2ZW50cyB3aGlsZSB0b3VjaCBpbnRlcmFjdGlvbnMgYXJlIGFjdGl2ZVxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGludGVyYWN0aW9ucy5sZW5ndGggJiYgIWludmFsaWRQb2ludGVyOyBpKyspIHtcbiAgICAgICAgICBpbnZhbGlkUG9pbnRlciA9IGludGVyYWN0aW9uc1tpXS5wb2ludGVyVHlwZSAhPT0gJ21vdXNlJyAmJiBpbnRlcmFjdGlvbnNbaV0ucG9pbnRlcklzRG93blxuICAgICAgICB9XG5cbiAgICAgICAgLy8gdHJ5IHRvIGlnbm9yZSBtb3VzZSBldmVudHMgdGhhdCBhcmUgc2ltdWxhdGVkIGJ5IHRoZSBicm93c2VyXG4gICAgICAgIC8vIGFmdGVyIGEgdG91Y2ggZXZlbnRcbiAgICAgICAgaW52YWxpZFBvaW50ZXIgPSBpbnZhbGlkUG9pbnRlciB8fFxuICAgICAgICAgIChzY29wZS5ub3coKSAtIHNjb3BlLnByZXZUb3VjaFRpbWUgPCA1MDApIHx8XG4gICAgICAgICAgLy8gb24gaU9TIGFuZCBGaXJlZm94IE1vYmlsZSwgTW91c2VFdmVudC50aW1lU3RhbXAgaXMgemVybyBpZiBzaW11bGF0ZWRcbiAgICAgICAgICBldmVudC50aW1lU3RhbXAgPT09IDBcbiAgICAgIH1cblxuICAgICAgaWYgKCFpbnZhbGlkUG9pbnRlcikge1xuICAgICAgICBjb25zdCBzZWFyY2hEZXRhaWxzID0ge1xuICAgICAgICAgIHBvaW50ZXI6IGV2ZW50LFxuICAgICAgICAgIHBvaW50ZXJJZDogcG9pbnRlclV0aWxzLmdldFBvaW50ZXJJZChldmVudCksXG4gICAgICAgICAgcG9pbnRlclR5cGUsXG4gICAgICAgICAgZXZlbnRUeXBlOiBldmVudC50eXBlLFxuICAgICAgICAgIGN1ckV2ZW50VGFyZ2V0LFxuICAgICAgICAgIGV2ZW50VGFyZ2V0LFxuICAgICAgICAgIHNjb3BlLFxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgaW50ZXJhY3Rpb24gPSBnZXRJbnRlcmFjdGlvbihzZWFyY2hEZXRhaWxzKVxuXG4gICAgICAgIG1hdGNoZXMucHVzaChbXG4gICAgICAgICAgc2VhcmNoRGV0YWlscy5wb2ludGVyLFxuICAgICAgICAgIHNlYXJjaERldGFpbHMuZXZlbnRUYXJnZXQsXG4gICAgICAgICAgc2VhcmNoRGV0YWlscy5jdXJFdmVudFRhcmdldCxcbiAgICAgICAgICBpbnRlcmFjdGlvbixcbiAgICAgICAgXSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2hhZG93XG4gICAgZm9yIChjb25zdCBbcG9pbnRlciwgZXZlbnRUYXJnZXQsIGN1ckV2ZW50VGFyZ2V0LCBpbnRlcmFjdGlvbl0gb2YgbWF0Y2hlcykge1xuICAgICAgaW50ZXJhY3Rpb25bbWV0aG9kXShwb2ludGVyLCBldmVudCwgZXZlbnRUYXJnZXQsIGN1ckV2ZW50VGFyZ2V0KVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRJbnRlcmFjdGlvbiAoc2VhcmNoRGV0YWlsczogU2VhcmNoRGV0YWlscykge1xuICBjb25zdCB7IHBvaW50ZXJUeXBlLCBzY29wZSB9ID0gc2VhcmNoRGV0YWlsc1xuXG4gIGNvbnN0IGZvdW5kSW50ZXJhY3Rpb24gPSBmaW5kZXIuc2VhcmNoKHNlYXJjaERldGFpbHMpXG4gIGNvbnN0IHNpZ25hbEFyZyA9IHsgaW50ZXJhY3Rpb246IGZvdW5kSW50ZXJhY3Rpb24sIHNlYXJjaERldGFpbHMgfVxuXG4gIHNjb3BlLmludGVyYWN0aW9ucy5zaWduYWxzLmZpcmUoJ2ZpbmQnLCBzaWduYWxBcmcpXG5cbiAgcmV0dXJuIHNpZ25hbEFyZy5pbnRlcmFjdGlvbiB8fCBzY29wZS5pbnRlcmFjdGlvbnMubmV3KHsgcG9pbnRlclR5cGUgfSlcbn1cblxuZnVuY3Rpb24gb25Eb2NTaWduYWwgKHsgZG9jLCBzY29wZSwgb3B0aW9ucyB9LCBzaWduYWxOYW1lKSB7XG4gIGNvbnN0IHsgZXZlbnRNYXAgfSA9IHNjb3BlLmludGVyYWN0aW9uc1xuICBjb25zdCBldmVudE1ldGhvZCA9IHNpZ25hbE5hbWUuaW5kZXhPZignYWRkJykgPT09IDBcbiAgICA/IGV2ZW50cy5hZGQgOiBldmVudHMucmVtb3ZlXG5cbiAgaWYgKHNjb3BlLmJyb3dzZXIuaXNJT1MgJiYgIW9wdGlvbnMuZXZlbnRzKSB7XG4gICAgb3B0aW9ucy5ldmVudHMgPSB7IHBhc3NpdmU6IGZhbHNlIH1cbiAgfVxuXG4gIC8vIGRlbGVnYXRlIGV2ZW50IGxpc3RlbmVyXG4gIGZvciAoY29uc3QgZXZlbnRUeXBlIGluIGV2ZW50cy5kZWxlZ2F0ZWRFdmVudHMpIHtcbiAgICBldmVudE1ldGhvZChkb2MsIGV2ZW50VHlwZSwgZXZlbnRzLmRlbGVnYXRlTGlzdGVuZXIpXG4gICAgZXZlbnRNZXRob2QoZG9jLCBldmVudFR5cGUsIGV2ZW50cy5kZWxlZ2F0ZVVzZUNhcHR1cmUsIHRydWUpXG4gIH1cblxuICBjb25zdCBldmVudE9wdGlvbnMgPSBvcHRpb25zICYmIG9wdGlvbnMuZXZlbnRzXG5cbiAgZm9yIChjb25zdCBldmVudFR5cGUgaW4gZXZlbnRNYXApIHtcbiAgICBldmVudE1ldGhvZChkb2MsIGV2ZW50VHlwZSwgZXZlbnRNYXBbZXZlbnRUeXBlXSwgZXZlbnRPcHRpb25zKVxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgaWQ6ICdjb3JlL2ludGVyYWN0aW9ucycsXG4gIGluc3RhbGwsXG4gIG9uRG9jU2lnbmFsLFxuICBkb09uSW50ZXJhY3Rpb25zLFxuICBtZXRob2ROYW1lcyxcbn1cbiJdfQ==
{
"name": "@interactjs/core",
"version": "1.4.0-rc.9",
"version": "1.4.0-rc.10",
"peerDependencies": {
"@interactjs/dev-tools": "1.4.0-rc.9",
"@interactjs/utils": "1.4.0-rc.9"
"@interactjs/dev-tools": "1.4.0-rc.10",
"@interactjs/utils": "1.4.0-rc.10"
},

@@ -8,0 +8,0 @@ "publishConfig": {

@@ -50,2 +50,7 @@ import * as utils from '@interactjs/utils';

super.unset();
for (const interaction of scope.interactions.list) {
if (interaction.interactable === this) {
interaction.stop();
}
}
scope.interactables.signals.fire('unset', { interactable: this });

@@ -124,2 +129,2 @@ }

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NvcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJzY29wZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssS0FBSyxNQUFNLG1CQUFtQixDQUFBO0FBQzFDLE9BQU8sVUFBVSxNQUFNLDhCQUE4QixDQUFBO0FBQ3JELE9BQU8sUUFBUSxNQUFNLGtCQUFrQixDQUFBO0FBQ3ZDLE9BQU8sU0FBUyxNQUFNLGFBQWEsQ0FBQTtBQUNuQyxPQUFPLGdCQUFnQixNQUFNLGdCQUFnQixDQUFBO0FBQzdDLE9BQU8sZUFBZSxNQUFNLG1CQUFtQixDQUFBO0FBQy9DLE9BQU8sYUFBYSxNQUFNLGlCQUFpQixDQUFBO0FBQzNDLE9BQU8sWUFBWSxNQUFNLGdCQUFnQixDQUFBO0FBRXpDLE1BQU0sRUFDSixHQUFHLEVBQ0gsT0FBTyxFQUNQLEdBQUcsRUFDSCxPQUFPLEVBQ1AsTUFBTSxHQUNQLEdBQUcsS0FBSyxDQUFBO0FBRVQsTUFBTSxDQUFOLElBQVksVUFDWDtBQURELFdBQVksVUFBVTtBQUN0QixDQUFDLEVBRFcsVUFBVSxLQUFWLFVBQVUsUUFDckI7QUFRRCxNQUFNLFVBQVUsV0FBVztJQUN6QixPQUFPLElBQUksS0FBSyxFQUFFLENBQUE7QUFDcEIsQ0FBQztBQVVELE1BQU0sT0FBTyxLQUFLO0lBaUNoQjtRQWhDQSxPQUFFLEdBQUcsb0JBQW9CLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEdBQUcsQ0FBQyxFQUFFLENBQUE7UUFDMUQsWUFBTyxHQUFHLElBQUksT0FBTyxFQUFFLENBQUE7UUFDdkIsWUFBTyxHQUFHLE9BQU8sQ0FBQTtRQUNqQixXQUFNLEdBQUcsTUFBTSxDQUFBO1FBQ2YsVUFBSyxHQUFHLEtBQUssQ0FBQTtRQUNiLGFBQVEsR0FBYSxLQUFLLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBYSxDQUFBO1FBQ3RELGNBQVMsR0FBRyxTQUFTLENBQUE7UUFDckIsWUFBTyxHQUFZ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SSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssR0FBRyxFQUFFO2dCQUNqQyxPQUFPLENBQUMsQ0FBQTthQUNUO1NBQ0Y7UUFFRCxPQUFPLENBQUMsQ0FBQyxDQUFBO0lBQ1gsQ0FBQztJQUVELGFBQWEsQ0FBRSxHQUFhO1FBQzFCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUE7UUFFdEMsT0FBTyxRQUFRLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUE7SUFDbEUsQ0FBQztJQUVELEdBQUc7UUFDRCxPQUFPLENBQUUsSUFBSSxDQUFDLE1BQWMsQ0FBQyxJQUFtQixJQUFJLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFBO0lBQ2pFLENBQUM7Q0FDRjtBQUVELE1BQU0sVUFBVSxTQUFTLENBQUUsS0FBWSxFQUFFLE1BQWM7SUFDckQsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUNoQixVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQ3ZCLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDcEIsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUNoQixNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBRW5CLEtBQUssQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLENBQUE7SUFDN0IsS0FBSyxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFBO0lBQ2hDLEtBQUssQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFBO0lBRXJCLE9BQU8sS0FBSyxDQUFBO0FBQ2QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHV0aWxzIGZyb20gJ0BpbnRlcmFjdGpzL3V0aWxzJ1xuaW1wb3J0IGRvbU9iamVjdHMgZnJvbSAnQGludGVyYWN0anMvdXRpbHMvZG9tT2JqZWN0cydcbmltcG9ydCBkZWZhdWx0cyBmcm9tICcuL2RlZmF1bHRPcHRpb25zJ1xuaW1wb3J0IEV2ZW50YWJsZSBmcm9tICcuL0V2ZW50YWJsZSdcbmltcG9ydCBJbnRlcmFjdGFibGVCYXNlIGZyb20gJy4vSW50ZXJhY3RhYmxlJ1xuaW1wb3J0IEludGVyYWN0YWJsZVNldCBmcm9tICcuL0ludGVyYWN0YWJsZVNldCdcbmltcG9ydCBJbnRlcmFjdEV2ZW50IGZyb20gJy4vSW50ZXJhY3RFdmVudCdcbmltcG9ydCBpbnRlcmFjdGlvbnMgZnJvbSAnLi9pbnRlcmFjdGlvbnMnXG5cbmNvbnN0IHtcbiAgd2luLFxuICBicm93c2VyLFxuICByYWYsXG4gIFNpZ25hbHMsXG4gIGV2ZW50cyxcbn0gPSB1dGlsc1xuXG5leHBvcnQgZW51bSBBY3Rpb25OYW1lIHtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBY3Rpb25zIHtcbiAgbmFtZXM6IEFjdGlvbk5hbWVbXVxuICBtZXRob2REaWN0OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9XG4gIGV2ZW50VHlwZXM6IHN0cmluZ1tdXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVTY29wZSAoKSB7XG4gIHJldHVybiBuZXcgU2NvcGUoKVxufVxuXG5leHBvcnQgdHlwZSBEZWZhdWx0cyA9IHR5cGVvZiBkZWZhdWx0c1xuXG5leHBvcnQgaW50ZXJmYWNlIFBsdWdpbiB7XG4gIGlkPzogc3RyaW5nXG4gIGluc3RhbGwgKHNjb3BlOiBTY29wZSwgb3B0aW9ucz86IGFueSk6IHZvaWRcbiAgW2tleTogc3RyaW5nXTogYW55XG59XG5cbmV4cG9ydCBjbGFzcyBTY29wZSB7XG4gIGlkID0gYF9faW50ZXJhY3Rfc2NvcGVfJHtNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAxMDApfWBcbiAgc2lnbmFscyA9IG5ldyBTaWduYWxzKClcbiAgYnJvd3NlciA9IGJyb3dzZXJcbiAgZXZlbnRzID0gZXZlbnRzXG4gIHV0aWxzID0gdXRpbHNcbiAgZGVmYXVsdHM6IERlZmF1bHRzID0gdXRpbHMuY2xvbmUoZGVmYXVsdHMpIGFzIERlZmF1bHRzXG4gIEV2ZW50YWJsZSA9IEV2ZW50YWJsZVxuICBhY3Rpb25zOiBBY3Rpb25zID0ge1xuICAgIG5hbWVzOiBbXSxcbiAgICBtZXRob2REaWN0OiB7fSxcbiAgICBldmVudFR5cGVzOiBbXSxcbiAgfVxuXG4gIEludGVyYWN0RXZlbnQgPSBJbnRlcmFjdEV2ZW50XG4gIEludGVyYWN0YWJsZSE6IHR5cGVvZiBJbnRlcmFjdGFibGVCYXNlXG4gIGludGVyYWN0YWJsZXMgPSBuZXcgSW50ZXJhY3RhYmxlU2V0KHRoaXMpXG5cbiAgLy8gbWFpbiB3aW5kb3dcbiAgX3dpbiE6IFdpbmRvd1xuXG4gIC8vIG1haW4gZG9jdW1lbnRcbiAgZG9jdW1lbnQhOiBEb2N1bWVudFxuXG4gIC8vIG1haW4gd2luZG93XG4gIHdpbmRvdyE6IFdpbmRvd1xuXG4gIC8vIGFsbCBkb2N1bWVudHMgYmVpbmcgbGlzdGVuZWQgdG9cbiAgZG9jdW1lbnRzOiBBcnJheTx7IGRvYzogRG9jdW1lbnQsIG9wdGlvbnM6IGFueSB9PiA9IFtdXG5cbiAgX3BsdWdpbnM6IFBsdWdpbltdID0gW11cbiAgX3BsdWdpbk1hcDogeyBbaWQ6IHN0cmluZ106IFBsdWdpbiB9ID0ge31cblxuICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgY29uc3Qgc2NvcGUgPSB0aGlzIGFzIFNjb3BlO1xuXG4gICAgKHRoaXMgYXMgeyBJbnRlcmFjdGFibGU6IHR5cGVvZiBJbnRlcmFjdGFibGVCYXNlIH0pLkludGVyYWN0YWJsZSA9IGNsYXNzIEludGVyYWN0YWJsZSBleHRlbmRzIEludGVyYWN0YWJsZUJhc2UgaW1wbGVtZW50cyBJbnRlcmFjdGFibGVCYXNlIHtcbiAgICAgIGdldCBfZGVmYXVsdHMgKCkgeyByZXR1cm4gc2NvcGUuZGVmYXVsdHMgfVxuXG4gICAgICBzZXQgKG9wdGlvbnM6IGFueSkge1xuICAgICAgICBzdXBlci5zZXQob3B0aW9ucylcblxuICAgICAgICBzY29wZS5pbnRlcmFjdGFibGVzLnNpZ25hbHMuZmlyZSgnc2V0Jywge1xuICAgICAgICAgIG9wdGlvbnMsXG4gICAgICAgICAgaW50ZXJhY3RhYmxlOiB0aGlzLFxuICAgICAgICB9KVxuXG4gICAgICAgIHJldHVybiB0aGlzXG4gICAgICB9XG5cbiAgICAgIHVuc2V0ICgpIHtcbiAgICAgICAgc3VwZXIudW5zZXQoKVxuICAgICAgICBzY29wZS5pbnRlcmFjdGFibGVzLnNpZ25hbHMuZmlyZSgndW5zZXQnLCB7IGludGVyYWN0YWJsZTogdGhpcyB9KVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG9uV2luZG93VW5sb2FkID0gKGV2ZW50OiBCZWZvcmVVbmxvYWRFdmVudCkgPT4gdGhpcy5yZW1vdmVEb2N1bWVudChldmVudC50YXJnZXQgYXMgRG9jdW1lbnQpXG5cbiAgaW5pdCAod2luZG93OiBXaW5kb3cpIHtcbiAgICByZXR1cm4gaW5pdFNjb3BlKHRoaXMsIHdpbmRvdylcbiAgfVxuXG4gIHBsdWdpbklzSW5zdGFsbGVkIChwbHVnaW46IFBsdWdpbikge1xuICAgIHJldHVybiB0aGlzLl9wbHVnaW5NYXBbcGx1Z2luLmlkXSB8fCB0aGlzLl9wbHVnaW5zLmluZGV4T2YocGx1Z2luKSAhPT0gLTFcbiAgfVxuXG4gIHVzZVBsdWdpbiAocGx1Z2luOiBQbHVnaW4sIG9wdGlvbnM/OiB7IFtrZXk6IHN0cmluZ106IGFueSB9KSB7XG4gICAgaWYgKHRoaXMucGx1Z2luSXNJbnN0YWxsZWQocGx1Z2luKSkge1xuICAgICAgcmV0dXJuIHRoaXNcbiAgICB9XG5cbiAgICBpZiAocGx1Z2luLmlkKSB7IHRoaXMuX3BsdWdpbk1hcFtwbHVnaW4uaWRdID0gcGx1Z2luIH1cblxuICAgIHBsdWdpbi5pbnN0YWxsKHRoaXMsIG9wdGlvbnMpXG4gICAgdGhpcy5fcGx1Z2lucy5wdXNoKHBsdWdpbilcblxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICBhZGREb2N1bWVudCAoZG9jOiBEb2N1bWVudCwgb3B0aW9ucz86IGFueSk6IHZvaWQgfCBmYWxzZSB7XG4gICAgLy8gZG8gbm90aGluZyBpZiBkb2N1bWVudCBpcyBhbHJlYWR5IGtub3duXG4gICAgaWYgKHRoaXMuZ2V0RG9jSW5kZXgoZG9jKSAhPT0gLTEpIHsgcmV0dXJuIGZhbHNlIH1cblxuICAgIGNvbnN0IHdpbmRvdyA9IHdpbi5nZXRXaW5kb3coZG9jKVxuXG4gICAgb3B0aW9ucyA9IG9wdGlvbnMgPyB1dGlscy5leHRlbmQoe30sIG9wdGlvbnMpIDoge31cblxuICAgIHRoaXMuZG9jdW1lbnRzLnB1c2goeyBkb2MsIG9wdGlvbnMgfSlcbiAgICBldmVudHMuZG9jdW1lbnRzLnB1c2goZG9jKVxuXG4gICAgLy8gZG9uJ3QgYWRkIGFuIHVubG9hZCBldmVudCBmb3IgdGhlIG1haW4gZG9jdW1lbnRcbiAgICAvLyBzbyB0aGF0IHRoZSBwYWdlIG1heSBiZSBjYWNoZWQgaW4gYnJvd3NlciBoaXN0b3J5XG4gICAgaWYgKGRvYyAhPT0gdGhpcy5kb2N1bWVudCkge1xuICAgICAgZXZlbnRzLmFkZCh3aW5kb3csICd1bmxvYWQnLCB0aGlzLm9uV2luZG93VW5sb2FkKVxuICAgIH1cblxuICAgIHRoaXMuc2lnbmFscy5maXJlKCdhZGQtZG9jdW1lbnQnLCB7IGRvYywgd2luZG93LCBzY29wZTogdGhpcywgb3B0aW9ucyB9KVxuICB9XG5cbiAgcmVtb3ZlRG9jdW1lbnQgKGRvYzogRG9jdW1lbnQpIHtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuZ2V0RG9jSW5kZXgoZG9jKVxuXG4gICAgY29uc3Qgd2luZG93ID0gd2luLmdldFdpbmRvdyhkb2MpXG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuZG9jdW1lbnRzW2luZGV4XS5vcHRpb25zXG5cbiAgICBldmVudHMucmVtb3ZlKHdpbmRvdywgJ3VubG9hZCcsIHRoaXMub25XaW5kb3dVbmxvYWQpXG5cbiAgICB0aGlzLmRvY3VtZW50cy5zcGxpY2UoaW5kZXgsIDEpXG4gICAgZXZlbnRzLmRvY3VtZW50cy5zcGxpY2UoaW5kZXgsIDEpXG5cbiAgICB0aGlzLnNpZ25hbHMuZmlyZSgncmVtb3ZlLWRvY3VtZW50JywgeyBkb2MsIHdpbmRvdywgc2NvcGU6IHRoaXMsIG9wdGlvbnMgfSlcbiAgfVxuXG4gIGdldERvY0luZGV4IChkb2M6IERvY3VtZW50KSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmRvY3VtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKHRoaXMuZG9jdW1lbnRzW2ldLmRvYyA9PT0gZG9jKSB7XG4gICAgICAgIHJldHVybiBpXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIC0xXG4gIH1cblxuICBnZXREb2NPcHRpb25zIChkb2M6IERvY3VtZW50KSB7XG4gICAgY29uc3QgZG9jSW5kZXggPSB0aGlzLmdldERvY0luZGV4KGRvYylcblxuICAgIHJldHVybiBkb2NJbmRleCA9PT0gLTEgPyBudWxsIDogdGhpcy5kb2N1bWVudHNbZG9jSW5kZXhdLm9wdGlvbnNcbiAgfVxuXG4gIG5vdyAoKSB7XG4gICAgcmV0dXJuICgodGhpcy53aW5kb3cgYXMgYW55KS5EYXRlIGFzIHR5cGVvZiBEYXRlIHx8IERhdGUpLm5vdygpXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluaXRTY29wZSAoc2NvcGU6IFNjb3BlLCB3aW5kb3c6IFdpbmRvdykge1xuICB3aW4uaW5pdCh3aW5kb3cpXG4gIGRvbU9iamVjdHMuaW5pdCh3aW5kb3cpXG4gIGJyb3dzZXIuaW5pdCh3aW5kb3cpXG4gIHJhZi5pbml0KHdpbmRvdylcbiAgZXZlbnRzLmluaXQod2luZG93KVxuXG4gIHNjb3BlLnVzZVBsdWdpbihpbnRlcmFjdGlvbnMpXG4gIHNjb3BlLmRvY3VtZW50ID0gd2luZG93LmRvY3VtZW50XG4gIHNjb3BlLndpbmRvdyA9IHdpbmRvd1xuXG4gIHJldHVybiBzY29wZVxufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NvcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJzY29wZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssS0FBSyxNQUFNLG1CQUFtQixDQUFBO0FBQzFDLE9BQU8sVUFBVSxNQUFNLDhCQUE4QixDQUFBO0FBQ3JELE9BQU8sUUFBUSxNQUFNLGtCQUFrQixDQUFBO0FBQ3ZDLE9BQU8sU0FBUyxNQUFNLGFBQWEsQ0FBQTtBQUNuQyxPQUFPLGdCQUFnQixNQUFNLGdCQUFnQixDQUFBO0FBQzdDLE9BQU8sZUFBZSxNQUFNLG1CQUFtQixDQUFBO0FBQy9DLE9BQU8sYUFBYSxNQUFNLGlCQUFpQixDQUFBO0FBQzNDLE9BQU8sWUFBWSxNQUFNLGdCQUFnQixDQUFBO0FBRXpDLE1BQU0sRUFDSixHQUFHLEVBQ0gsT0FBTyxFQUNQLEdBQUcsRUFDSCxPQUFPLEVBQ1AsTUFBTSxHQUNQLEdBQUcsS0FBSyxDQUFBO0FBRVQsTUFBTSxDQUFOLElBQVksVUFDWDtBQURELFdBQVksVUFBVTtBQUN0QixDQUFDLEVBRFcsVUFBVSxLQUFWLFVBQVUsUUFDckI7QUFRRCxNQUFNLFVBQVUsV0FBVztJQUN6QixPQUFPLElBQUksS0FBSyxFQUFFLENBQUE7QUFDcEIsQ0FBQztBQVVELE1BQU0sT0FBTyxLQUFLO0lBaUNoQjtRQWhDQSxPQUFFLEdBQUcsb0JBQW9CLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEdBQUcsQ0FBQyxFQUFFLENBQUE7UUFDMUQsWUFBTyxHQUFHLElBQUksT0FBTyxFQUFFLENBQUE7UUFDdkIsWUFBTyxHQUFHLE9BQU8sQ0FBQTtRQUNqQixXQUFNLEdBQUcsTUFBTSxDQUFBO1FBQ2YsVUFBSyxHQUFHLEtBQUssQ0FBQTtRQUNiLGFBQVEsR0FBYSxLQUFLLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBYSxDQUFBO1FBQ3RELGNBQVMsR0FBRyxTQUFTLENBQUE7UUFDckIsWUFBTyxHQUFZ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S0FBSyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUE7SUFFckIsT0FBTyxLQUFLLENBQUE7QUFDZCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgdXRpbHMgZnJvbSAnQGludGVyYWN0anMvdXRpbHMnXG5pbXBvcnQgZG9tT2JqZWN0cyBmcm9tICdAaW50ZXJhY3Rqcy91dGlscy9kb21PYmplY3RzJ1xuaW1wb3J0IGRlZmF1bHRzIGZyb20gJy4vZGVmYXVsdE9wdGlvbnMnXG5pbXBvcnQgRXZlbnRhYmxlIGZyb20gJy4vRXZlbnRhYmxlJ1xuaW1wb3J0IEludGVyYWN0YWJsZUJhc2UgZnJvbSAnLi9JbnRlcmFjdGFibGUnXG5pbXBvcnQgSW50ZXJhY3RhYmxlU2V0IGZyb20gJy4vSW50ZXJhY3RhYmxlU2V0J1xuaW1wb3J0IEludGVyYWN0RXZlbnQgZnJvbSAnLi9JbnRlcmFjdEV2ZW50J1xuaW1wb3J0IGludGVyYWN0aW9ucyBmcm9tICcuL2ludGVyYWN0aW9ucydcblxuY29uc3Qge1xuICB3aW4sXG4gIGJyb3dzZXIsXG4gIHJhZixcbiAgU2lnbmFscyxcbiAgZXZlbnRzLFxufSA9IHV0aWxzXG5cbmV4cG9ydCBlbnVtIEFjdGlvbk5hbWUge1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFjdGlvbnMge1xuICBuYW1lczogQWN0aW9uTmFtZVtdXG4gIG1ldGhvZERpY3Q6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH1cbiAgZXZlbnRUeXBlczogc3RyaW5nW11cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVNjb3BlICgpIHtcbiAgcmV0dXJuIG5ldyBTY29wZSgpXG59XG5cbmV4cG9ydCB0eXBlIERlZmF1bHRzID0gdHlwZW9mIGRlZmF1bHRzXG5cbmV4cG9ydCBpbnRlcmZhY2UgUGx1Z2luIHtcbiAgaWQ/OiBzdHJpbmdcbiAgaW5zdGFsbCAoc2NvcGU6IFNjb3BlLCBvcHRpb25zPzogYW55KTogdm9pZFxuICBba2V5OiBzdHJpbmddOiBhbnlcbn1cblxuZXhwb3J0IGNsYXNzIFNjb3BlIHtcbiAgaWQgPSBgX19pbnRlcmFjdF9zY29wZV8ke01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDEwMCl9YFxuICBzaWduYWxzID0gbmV3IFNpZ25hbHMoKVxuICBicm93c2VyID0gYnJvd3NlclxuICBldmVudHMgPSBldmVudHNcbiAgdXRpbHMgPSB1dGlsc1xuICBkZWZhdWx0czogRGVmYXVsdHMgPSB1dGlscy5jbG9uZShkZWZhdWx0cykgYXMgRGVmYXVsdHNcbiAgRXZlbnRhYmxlID0gRXZlbnRhYmxlXG4gIGFjdGlvbnM6IEFjdGlvbnMgPSB7XG4gICAgbmFtZXM6IFtdLFxuICAgIG1ldGhvZERpY3Q6IHt9LFxuICAgIGV2ZW50VHlwZXM6IFtdLFxuICB9XG5cbiAgSW50ZXJhY3RFdmVudCA9IEludGVyYWN0RXZlbnRcbiAgSW50ZXJhY3RhYmxlITogdHlwZW9mIEludGVyYWN0YWJsZUJhc2VcbiAgaW50ZXJhY3RhYmxlcyA9IG5ldyBJbnRlcmFjdGFibGVTZXQodGhpcylcblxuICAvLyBtYWluIHdpbmRvd1xuICBfd2luITogV2luZG93XG5cbiAgLy8gbWFpbiBkb2N1bWVudFxuICBkb2N1bWVudCE6IERvY3VtZW50XG5cbiAgLy8gbWFpbiB3aW5kb3dcbiAgd2luZG93ITogV2luZG93XG5cbiAgLy8gYWxsIGRvY3VtZW50cyBiZWluZyBsaXN0ZW5lZCB0b1xuICBkb2N1bWVudHM6IEFycmF5PHsgZG9jOiBEb2N1bWVudCwgb3B0aW9uczogYW55IH0+ID0gW11cblxuICBfcGx1Z2luczogUGx1Z2luW10gPSBbXVxuICBfcGx1Z2luTWFwOiB7IFtpZDogc3RyaW5nXTogUGx1Z2luIH0gPSB7fVxuXG4gIGNvbnN0cnVjdG9yICgpIHtcbiAgICBjb25zdCBzY29wZSA9IHRoaXMgYXMgU2NvcGVcblxuICAgIDsgKHRoaXMgYXMgeyBJbnRlcmFjdGFibGU6IHR5cGVvZiBJbnRlcmFjdGFibGVCYXNlIH0pLkludGVyYWN0YWJsZSA9IGNsYXNzIEludGVyYWN0YWJsZSBleHRlbmRzIEludGVyYWN0YWJsZUJhc2UgaW1wbGVtZW50cyBJbnRlcmFjdGFibGVCYXNlIHtcbiAgICAgIGdldCBfZGVmYXVsdHMgKCkgeyByZXR1cm4gc2NvcGUuZGVmYXVsdHMgfVxuXG4gICAgICBzZXQgKG9wdGlvbnM6IGFueSkge1xuICAgICAgICBzdXBlci5zZXQob3B0aW9ucylcblxuICAgICAgICBzY29wZS5pbnRlcmFjdGFibGVzLnNpZ25hbHMuZmlyZSgnc2V0Jywge1xuICAgICAgICAgIG9wdGlvbnMsXG4gICAgICAgICAgaW50ZXJhY3RhYmxlOiB0aGlzLFxuICAgICAgICB9KVxuXG4gICAgICAgIHJldHVybiB0aGlzXG4gICAgICB9XG5cbiAgICAgIHVuc2V0ICgpIHtcbiAgICAgICAgc3VwZXIudW5zZXQoKVxuICAgICAgICBmb3IgKGNvbnN0IGludGVyYWN0aW9uIG9mIHNjb3BlLmludGVyYWN0aW9ucy5saXN0KSB7XG4gICAgICAgICAgaWYgKGludGVyYWN0aW9uLmludGVyYWN0YWJsZSA9PT0gdGhpcykge1xuICAgICAgICAgICAgaW50ZXJhY3Rpb24uc3RvcCgpXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgc2NvcGUuaW50ZXJhY3RhYmxlcy5zaWduYWxzLmZpcmUoJ3Vuc2V0JywgeyBpbnRlcmFjdGFibGU6IHRoaXMgfSlcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBvbldpbmRvd1VubG9hZCA9IChldmVudDogQmVmb3JlVW5sb2FkRXZlbnQpID0+IHRoaXMucmVtb3ZlRG9jdW1lbnQoZXZlbnQudGFyZ2V0IGFzIERvY3VtZW50KVxuXG4gIGluaXQgKHdpbmRvdzogV2luZG93KSB7XG4gICAgcmV0dXJuIGluaXRTY29wZSh0aGlzLCB3aW5kb3cpXG4gIH1cblxuICBwbHVnaW5Jc0luc3RhbGxlZCAocGx1Z2luOiBQbHVnaW4pIHtcbiAgICByZXR1cm4gdGhpcy5fcGx1Z2luTWFwW3BsdWdpbi5pZF0gfHwgdGhpcy5fcGx1Z2lucy5pbmRleE9mKHBsdWdpbikgIT09IC0xXG4gIH1cblxuICB1c2VQbHVnaW4gKHBsdWdpbjogUGx1Z2luLCBvcHRpb25zPzogeyBba2V5OiBzdHJpbmddOiBhbnkgfSkge1xuICAgIGlmICh0aGlzLnBsdWdpbklzSW5zdGFsbGVkKHBsdWdpbikpIHtcbiAgICAgIHJldHVybiB0aGlzXG4gICAgfVxuXG4gICAgaWYgKHBsdWdpbi5pZCkgeyB0aGlzLl9wbHVnaW5NYXBbcGx1Z2luLmlkXSA9IHBsdWdpbiB9XG5cbiAgICBwbHVnaW4uaW5zdGFsbCh0aGlzLCBvcHRpb25zKVxuICAgIHRoaXMuX3BsdWdpbnMucHVzaChwbHVnaW4pXG5cbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgYWRkRG9jdW1lbnQgKGRvYzogRG9jdW1lbnQsIG9wdGlvbnM/OiBhbnkpOiB2b2lkIHwgZmFsc2Uge1xuICAgIC8vIGRvIG5vdGhpbmcgaWYgZG9jdW1lbnQgaXMgYWxyZWFkeSBrbm93blxuICAgIGlmICh0aGlzLmdldERvY0luZGV4KGRvYykgIT09IC0xKSB7IHJldHVybiBmYWxzZSB9XG5cbiAgICBjb25zdCB3aW5kb3cgPSB3aW4uZ2V0V2luZG93KGRvYylcblxuICAgIG9wdGlvbnMgPSBvcHRpb25zID8gdXRpbHMuZXh0ZW5kKHt9LCBvcHRpb25zKSA6IHt9XG5cbiAgICB0aGlzLmRvY3VtZW50cy5wdXNoKHsgZG9jLCBvcHRpb25zIH0pXG4gICAgZXZlbnRzLmRvY3VtZW50cy5wdXNoKGRvYylcblxuICAgIC8vIGRvbid0IGFkZCBhbiB1bmxvYWQgZXZlbnQgZm9yIHRoZSBtYWluIGRvY3VtZW50XG4gICAgLy8gc28gdGhhdCB0aGUgcGFnZSBtYXkgYmUgY2FjaGVkIGluIGJyb3dzZXIgaGlzdG9yeVxuICAgIGlmIChkb2MgIT09IHRoaXMuZG9jdW1lbnQpIHtcbiAgICAgIGV2ZW50cy5hZGQod2luZG93LCAndW5sb2FkJywgdGhpcy5vbldpbmRvd1VubG9hZClcbiAgICB9XG5cbiAgICB0aGlzLnNpZ25hbHMuZmlyZSgnYWRkLWRvY3VtZW50JywgeyBkb2MsIHdpbmRvdywgc2NvcGU6IHRoaXMsIG9wdGlvbnMgfSlcbiAgfVxuXG4gIHJlbW92ZURvY3VtZW50IChkb2M6IERvY3VtZW50KSB7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmdldERvY0luZGV4KGRvYylcblxuICAgIGNvbnN0IHdpbmRvdyA9IHdpbi5nZXRXaW5kb3coZG9jKVxuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmRvY3VtZW50c1tpbmRleF0ub3B0aW9uc1xuXG4gICAgZXZlbnRzLnJlbW92ZSh3aW5kb3csICd1bmxvYWQnLCB0aGlzLm9uV2luZG93VW5sb2FkKVxuXG4gICAgdGhpcy5kb2N1bWVudHMuc3BsaWNlKGluZGV4LCAxKVxuICAgIGV2ZW50cy5kb2N1bWVudHMuc3BsaWNlKGluZGV4LCAxKVxuXG4gICAgdGhpcy5zaWduYWxzLmZpcmUoJ3JlbW92ZS1kb2N1bWVudCcsIHsgZG9jLCB3aW5kb3csIHNjb3BlOiB0aGlzLCBvcHRpb25zIH0pXG4gIH1cblxuICBnZXREb2NJbmRleCAoZG9jOiBEb2N1bWVudCkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5kb2N1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmICh0aGlzLmRvY3VtZW50c1tpXS5kb2MgPT09IGRvYykge1xuICAgICAgICByZXR1cm4gaVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiAtMVxuICB9XG5cbiAgZ2V0RG9jT3B0aW9ucyAoZG9jOiBEb2N1bWVudCkge1xuICAgIGNvbnN0IGRvY0luZGV4ID0gdGhpcy5nZXREb2NJbmRleChkb2MpXG5cbiAgICByZXR1cm4gZG9jSW5kZXggPT09IC0xID8gbnVsbCA6IHRoaXMuZG9jdW1lbnRzW2RvY0luZGV4XS5vcHRpb25zXG4gIH1cblxuICBub3cgKCkge1xuICAgIHJldHVybiAoKHRoaXMud2luZG93IGFzIGFueSkuRGF0ZSBhcyB0eXBlb2YgRGF0ZSB8fCBEYXRlKS5ub3coKVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbml0U2NvcGUgKHNjb3BlOiBTY29wZSwgd2luZG93OiBXaW5kb3cpIHtcbiAgd2luLmluaXQod2luZG93KVxuICBkb21PYmplY3RzLmluaXQod2luZG93KVxuICBicm93c2VyLmluaXQod2luZG93KVxuICByYWYuaW5pdCh3aW5kb3cpXG4gIGV2ZW50cy5pbml0KHdpbmRvdylcblxuICBzY29wZS51c2VQbHVnaW4oaW50ZXJhY3Rpb25zKVxuICBzY29wZS5kb2N1bWVudCA9IHdpbmRvdy5kb2N1bWVudFxuICBzY29wZS53aW5kb3cgPSB3aW5kb3dcblxuICByZXR1cm4gc2NvcGVcbn1cbiJdfQ==

@@ -125,2 +125,2 @@ /* eslint-disable no-restricted-syntax */

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiX2hlbHBlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJfaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx5Q0FBeUM7QUFDekMsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLCtCQUErQixDQUFBO0FBQ25ELE9BQU8sS0FBSyxLQUFLLE1BQU0sbUJBQW1CLENBQUE7QUFDMUMsT0FBTyxPQUFPLE1BQU0sMkJBQTJCLENBQUE7QUFDL0MsT0FBTyxTQUFTLE1BQU0sY0FBYyxDQUFBO0FBQ3BDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFFdEMsSUFBSSxPQUFPLEdBQUcsQ0FBQyxDQUFBO0FBRWYsTUFBTSxVQUFVLE1BQU07SUFDcEIsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUE7QUFDcEIsQ0FBQztBQUVELE1BQU0sVUFBVSxXQUFXLENBQUUsR0FBRztJQUM5QixLQUFLLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRTtRQUN0QixJQUFJLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUFFLFNBQVE7U0FBRTtRQUUzQyxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ3hCLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtTQUN2QjthQUNJO1lBQ0gsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQTtTQUN4QjtLQUNGO0FBQ0gsQ0FBQztBQUVELE1BQU0sVUFBVSxZQUFZLENBQUUsQ0FBQyxHQUFHLENBQUM7SUFDakMsT0FBTztRQUNMLEtBQUssRUFBRTtZQUNMLElBQUksRUFBTyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDN0IsTUFBTSxFQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENB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LEtBQUssQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQ3BELE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUM7SUFFeEMsTUFBYyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUE7SUFDL0IsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUE7SUFFakQsWUFBWSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUE7SUFFN0MsT0FBTztRQUNMLEtBQUs7UUFDTCxXQUFXO1FBQ1gsTUFBTTtRQUNOLFlBQVk7UUFDWixNQUFNO1FBQ04sS0FBSztLQUNOLENBQUE7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tcmVzdHJpY3RlZC1zeW50YXggKi9cbmltcG9ydCB7IGRvYyB9IGZyb20gJ0BpbnRlcmFjdGpzL19kZXYvdGVzdC9kb21hdG9yJ1xuaW1wb3J0ICogYXMgdXRpbHMgZnJvbSAnQGludGVyYWN0anMvdXRpbHMnXG5pbXBvcnQgU2lnbmFscyBmcm9tICdAaW50ZXJhY3Rqcy91dGlscy9TaWduYWxzJ1xuaW1wb3J0IEV2ZW50YWJsZSBmcm9tICcuLi9FdmVudGFibGUnXG5pbXBvcnQgeyBjcmVhdGVTY29wZSB9IGZyb20gJy4uL3Njb3BlJ1xuXG5sZXQgY291bnRlciA9IDBcblxuZXhwb3J0IGZ1bmN0aW9uIHVuaXF1ZSAoKSB7XG4gIHJldHVybiAoY291bnRlcisrKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdW5pcXVlUHJvcHMgKG9iaikge1xuICBmb3IgKGNvbnN0IHByb3AgaW4gb2JqKSB7XG4gICAgaWYgKCFvYmouaGFzT3duUHJvcGVydHkocHJvcCkpIHsgY29udGludWUgfVxuXG4gICAgaWYgKHV0aWxzLmlzLm9iamVjdChvYmopKSB7XG4gICAgICB1bmlxdWVQcm9wcyhvYmpbcHJvcF0pXG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgb2JqW3Byb3BdID0gKGNvdW50ZXIrKylcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5ld0Nvb3Jkc1NldCAobiA9IDApIHtcbiAgcmV0dXJuIHtcbiAgICBzdGFydDoge1xuICAgICAgcGFnZSAgICAgOiB7IHg6IG4rKywgeTogbisrIH0sXG4gICAgICBjbGllbnQgICA6IHsgeDogbisrLCB5OiBuKysgfSxcbiAgICAgIHRpbWVTdGFtcDogbisrLFxuICAgIH0sXG4gICAgY3VyOiB7XG4gICAgICBwYWdlICAgICA6IHsgeDogbisrLCB5OiBuKysgfSxcbiAgICAgIGNsaWVudCAgIDogeyB4OiBuKyssIHk6IG4rKyB9LFxuICAgICAgdGltZVN0YW1wOiBuKyssXG4gICAgfSxcbiAgICBwcmV2OiB7XG4gICAgICBwYWdlICAgICA6IHsgeDogbisrLCB5OiBuKysgfSxcbiAgICAgIGNsaWVudCAgIDogeyB4OiBuKyssIHk6IG4rKyB9LFxuICAgICAgdGltZVN0YW1wOiBuKyssXG4gICAgfSxcbiAgICBkZWx0YToge1xuICAgICAgcGFnZSAgICAgOiB7IHg6IG4rKywgeTogbisrIH0sXG4gICAgICBjbGllbnQgICA6IHsgeDogbisrLCB5OiBuKysgfSxcbiAgICAgIHRpbWVTdGFtcDogbisrLFxuICAgIH0sXG4gICAgdmVsb2NpdHk6IHtcbiAgICAgIHBhZ2UgICAgIDogeyB4OiBuKyssIHk6IG4rKyB9LFxuICAgICAgY2xpZW50ICAgOiB7IHg6IG4rKywgeTogbisrIH0sXG4gICAgICB0aW1lU3RhbXA6IG4rKyxcbiAgICB9LFxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBuZXdQb2ludGVyIChuID0gNTApIHtcbiAgcmV0dXJuIHtcbiAgICBwb2ludGVySWQ6IG4rKyxcbiAgICBwYWdlWDogbisrLFxuICAgIHBhZ2VZOiBuKyssXG4gICAgY2xpZW50WDogbisrLFxuICAgIGNsaWVudFk6IG4rKyxcbiAgfSBhcyBJbnRlcmFjdC5Qb2ludGVyVHlwZVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbW9ja1Njb3BlIChvcHRpb25zID0ge30gYXMgYW55KSB7XG4gIGNvbnN0IGRvY3VtZW50ID0gb3B0aW9ucy5kb2N1bWVudCB8fCBkb2NcbiAgY29uc3Qgd2luZG93ID0gZG9jdW1lbnQuZGVmYXVsdFZpZXdcblxuICBjb25zdCBzY29wZTogYW55ID0gY3JlYXRlU2NvcGUoKS5pbml0KHdpbmRvdylcblxuICBzY29wZS5pbnRlcmFjdCA9IE9iamVjdC5hc3NpZ24oKCkgPT4ge30sIHsgdXNlICgpIHt9IH0pIGFzIGFueVxuXG4gIHJldHVybiBzY29wZVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbW9ja1NpZ25hbHMgKCkge1xuICByZXR1cm4ge1xuICAgIG9uICgpIHt9LFxuICAgIG9mZiAoKSB7fSxcbiAgICBmaXJlICgpIHt9LFxuICB9IGFzIHVua25vd24gYXMgYW55XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtb2NrSW50ZXJhY3RhYmxlIChwcm9wcyA9IHt9KSB7XG4gIHJldHVybiBPYmplY3QuYXNzaWduKFxuICAgIHtcbiAgICAgIF9zaWduYWxzOiBuZXcgU2lnbmFscygpLFxuICAgICAgX2FjdGlvbnM6IHtcbiAgICAgICAgbmFtZXM6IFtdLFxuICAgICAgICBtZXRob2REaWN0OiB7fSxcbiAgICAgIH0sXG4gICAgICBvcHRpb25zOiB7XG4gICAgICAgIGRlbHRhU291cmNlOiAncGFnZScsXG4gICAgICB9LFxuICAgICAgdGFyZ2V0OiB7fSxcbiAgICAgIGV2ZW50czogbmV3IEV2ZW50YWJsZSgpLFxuICAgICAgZ2V0UmVjdCAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnRcbiAgICAgICAgICA/IHV0aWxzLmRvbS5nZXRFbGVtZW50Q2xpZW50UmVjdCh0aGlzLmVsZW1lbnQpXG4gICAgICAgICAgOiB7IGxlZnQ6IDAsIHRvcDogMCwgcmlnaHQ6IDAsIGJvdHRvbTogMCB9XG4gICAgICB9LFxuICAgICAgZmlyZSAoZXZlbnQpIHtcbiAgICAgICAgdGhpcy5ldmVudHMuZmlyZShldmVudClcbiAgICAgIH0sXG4gICAgfSxcbiAgICBwcm9wcykgYXMgYW55XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRQcm9wczxUIGV4dGVuZHMge30sIEsgZXh0ZW5kcyBrZXlvZiBUPiAoc3JjOiBULCBwcm9wczogS1tdKSB7XG4gIHJldHVybiBwcm9wcy5yZWR1Y2UoKGFjYywgcHJvcCkgPT4ge1xuICAgIGFjY1twcm9wXSA9IHNyY1twcm9wXVxuICAgIHJldHVybiBhY2NcbiAgfSwge30gYXMgUGljazxULCBLPilcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRlc3RFbnYgKHtcbiAgcGx1Z2lucyA9IFtdLFxuICB0YXJnZXQsXG4gIHJlY3QgPSB7ICB0b3A6IDAsIGxlZnQ6IDAsIGJvdHRvbTogMCwgcmlnaHQ6IDAgIH0sXG59OiB7XG4gIHBsdWdpbnM/OiBJbnRlcmFjdC5QbHVnaW5bXSxcbiAgdGFyZ2V0PzogSW50ZXJhY3QuVGFyZ2V0LFxuICByZWN0PzogSW50ZXJhY3QuUmVjdCxcbn0gPSB7fSkge1xuICBjb25zdCBzY29wZTogSW50ZXJhY3QuU2NvcGUgPSBtb2NrU2NvcGUoKVxuXG4gIGZvciAoY29uc3QgcGx1Z2luIG9mIHBsdWdpbnMpIHtcbiAgICBzY29wZS51c2VQbHVnaW4ocGx1Z2luKVxuICB9XG5cbiAgdGFyZ2V0ID0gdGFyZ2V0IHx8IHNjb3BlLmRvY3VtZW50LmJvZHlcblxuICBjb25zdCBpbnRlcmFjdGlvbiA9IHNjb3BlLmludGVyYWN0aW9ucy5uZXcoe30pXG4gIGNvbnN0IGludGVyYWN0YWJsZSA9IHNjb3BlLmludGVyYWN0YWJsZXMubmV3KHRhcmdldClcbiAgY29uc3QgY29vcmRzID0gdXRpbHMucG9pbnRlci5uZXdDb29yZHMoKTtcblxuICAoY29vcmRzIGFzIGFueSkudGFyZ2V0ID0gdGFyZ2V0XG4gIGNvbnN0IGV2ZW50ID0gdXRpbHMucG9pbnRlci5jb29yZHNUb0V2ZW50KGNvb3JkcylcblxuICBpbnRlcmFjdGFibGUucmVjdENoZWNrZXIoKCkgPT4gKHsgLi4ucmVjdCB9KSlcblxuICByZXR1cm4ge1xuICAgIHNjb3BlLFxuICAgIGludGVyYWN0aW9uLFxuICAgIHRhcmdldCxcbiAgICBpbnRlcmFjdGFibGUsXG4gICAgY29vcmRzLFxuICAgIGV2ZW50LFxuICB9XG59XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiX2hlbHBlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJfaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx5Q0FBeUM7QUFDekMsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLCtCQUErQixDQUFBO0FBQ25ELE9BQU8sS0FBSyxLQUFLLE1BQU0sbUJBQW1CLENBQUE7QUFDMUMsT0FBTyxPQUFPLE1BQU0sMkJBQTJCLENBQUE7QUFDL0MsT0FBTyxTQUFTLE1BQU0sY0FBYyxDQUFBO0FBQ3BDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFFdEMsSUFBSSxPQUFPLEdBQUcsQ0FBQyxDQUFBO0FBRWYsTUFBTSxVQUFVLE1BQU07SUFDcEIsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUE7QUFDcEIsQ0FBQztBQUVELE1BQU0sVUFBVSxXQUFXLENBQUUsR0FBRztJQUM5QixLQUFLLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRTtRQUN0QixJQUFJLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUFFLFNBQVE7U0FBRTtRQUUzQyxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ3hCLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtTQUN2QjthQUNJO1lBQ0gsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQTtTQUN4QjtLQUNGO0FBQ0gsQ0FBQztBQUVELE1BQU0sVUFBVSxZQUFZLENBQUUsQ0FBQyxHQUFHLENBQUM7SUFDakMsT0FBTztRQUNMLEtBQUssRUFBRTtZQUNMLElBQUksRUFBTyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDN0IsTUFBTSxFQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENB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LEtBQUssQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQ3BELE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLENBRXZDO0lBQUUsTUFBYyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUE7SUFDakMsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUE7SUFFakQsWUFBWSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUE7SUFFN0MsT0FBTztRQUNMLEtBQUs7UUFDTCxXQUFXO1FBQ1gsTUFBTTtRQUNOLFlBQVk7UUFDWixNQUFNO1FBQ04sS0FBSztLQUNOLENBQUE7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tcmVzdHJpY3RlZC1zeW50YXggKi9cbmltcG9ydCB7IGRvYyB9IGZyb20gJ0BpbnRlcmFjdGpzL19kZXYvdGVzdC9kb21hdG9yJ1xuaW1wb3J0ICogYXMgdXRpbHMgZnJvbSAnQGludGVyYWN0anMvdXRpbHMnXG5pbXBvcnQgU2lnbmFscyBmcm9tICdAaW50ZXJhY3Rqcy91dGlscy9TaWduYWxzJ1xuaW1wb3J0IEV2ZW50YWJsZSBmcm9tICcuLi9FdmVudGFibGUnXG5pbXBvcnQgeyBjcmVhdGVTY29wZSB9IGZyb20gJy4uL3Njb3BlJ1xuXG5sZXQgY291bnRlciA9IDBcblxuZXhwb3J0IGZ1bmN0aW9uIHVuaXF1ZSAoKSB7XG4gIHJldHVybiAoY291bnRlcisrKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdW5pcXVlUHJvcHMgKG9iaikge1xuICBmb3IgKGNvbnN0IHByb3AgaW4gb2JqKSB7XG4gICAgaWYgKCFvYmouaGFzT3duUHJvcGVydHkocHJvcCkpIHsgY29udGludWUgfVxuXG4gICAgaWYgKHV0aWxzLmlzLm9iamVjdChvYmopKSB7XG4gICAgICB1bmlxdWVQcm9wcyhvYmpbcHJvcF0pXG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgb2JqW3Byb3BdID0gKGNvdW50ZXIrKylcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5ld0Nvb3Jkc1NldCAobiA9IDApIHtcbiAgcmV0dXJuIHtcbiAgICBzdGFydDoge1xuICAgICAgcGFnZSAgICAgOiB7IHg6IG4rKywgeTogbisrIH0sXG4gICAgICBjbGllbnQgICA6IHsgeDogbisrLCB5OiBuKysgfSxcbiAgICAgIHRpbWVTdGFtcDogbisrLFxuICAgIH0sXG4gICAgY3VyOiB7XG4gICAgICBwYWdlICAgICA6IHsgeDogbisrLCB5OiBuKysgfSxcbiAgICAgIGNsaWVudCAgIDogeyB4OiBuKyssIHk6IG4rKyB9LFxuICAgICAgdGltZVN0YW1wOiBuKyssXG4gICAgfSxcbiAgICBwcmV2OiB7XG4gICAgICBwYWdlICAgICA6IHsgeDogbisrLCB5OiBuKysgfSxcbiAgICAgIGNsaWVudCAgIDogeyB4OiBuKyssIHk6IG4rKyB9LFxuICAgICAgdGltZVN0YW1wOiBuKyssXG4gICAgfSxcbiAgICBkZWx0YToge1xuICAgICAgcGFnZSAgICAgOiB7IHg6IG4rKywgeTogbisrIH0sXG4gICAgICBjbGllbnQgICA6IHsgeDogbisrLCB5OiBuKysgfSxcbiAgICAgIHRpbWVTdGFtcDogbisrLFxuICAgIH0sXG4gICAgdmVsb2NpdHk6IHtcbiAgICAgIHBhZ2UgICAgIDogeyB4OiBuKyssIHk6IG4rKyB9LFxuICAgICAgY2xpZW50ICAgOiB7IHg6IG4rKywgeTogbisrIH0sXG4gICAgICB0aW1lU3RhbXA6IG4rKyxcbiAgICB9LFxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBuZXdQb2ludGVyIChuID0gNTApIHtcbiAgcmV0dXJuIHtcbiAgICBwb2ludGVySWQ6IG4rKyxcbiAgICBwYWdlWDogbisrLFxuICAgIHBhZ2VZOiBuKyssXG4gICAgY2xpZW50WDogbisrLFxuICAgIGNsaWVudFk6IG4rKyxcbiAgfSBhcyBJbnRlcmFjdC5Qb2ludGVyVHlwZVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbW9ja1Njb3BlIChvcHRpb25zID0ge30gYXMgYW55KSB7XG4gIGNvbnN0IGRvY3VtZW50ID0gb3B0aW9ucy5kb2N1bWVudCB8fCBkb2NcbiAgY29uc3Qgd2luZG93ID0gZG9jdW1lbnQuZGVmYXVsdFZpZXdcblxuICBjb25zdCBzY29wZTogYW55ID0gY3JlYXRlU2NvcGUoKS5pbml0KHdpbmRvdylcblxuICBzY29wZS5pbnRlcmFjdCA9IE9iamVjdC5hc3NpZ24oKCkgPT4ge30sIHsgdXNlICgpIHt9IH0pIGFzIGFueVxuXG4gIHJldHVybiBzY29wZVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbW9ja1NpZ25hbHMgKCkge1xuICByZXR1cm4ge1xuICAgIG9uICgpIHt9LFxuICAgIG9mZiAoKSB7fSxcbiAgICBmaXJlICgpIHt9LFxuICB9IGFzIHVua25vd24gYXMgYW55XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtb2NrSW50ZXJhY3RhYmxlIChwcm9wcyA9IHt9KSB7XG4gIHJldHVybiBPYmplY3QuYXNzaWduKFxuICAgIHtcbiAgICAgIF9zaWduYWxzOiBuZXcgU2lnbmFscygpLFxuICAgICAgX2FjdGlvbnM6IHtcbiAgICAgICAgbmFtZXM6IFtdLFxuICAgICAgICBtZXRob2REaWN0OiB7fSxcbiAgICAgIH0sXG4gICAgICBvcHRpb25zOiB7XG4gICAgICAgIGRlbHRhU291cmNlOiAncGFnZScsXG4gICAgICB9LFxuICAgICAgdGFyZ2V0OiB7fSxcbiAgICAgIGV2ZW50czogbmV3IEV2ZW50YWJsZSgpLFxuICAgICAgZ2V0UmVjdCAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnRcbiAgICAgICAgICA/IHV0aWxzLmRvbS5nZXRFbGVtZW50Q2xpZW50UmVjdCh0aGlzLmVsZW1lbnQpXG4gICAgICAgICAgOiB7IGxlZnQ6IDAsIHRvcDogMCwgcmlnaHQ6IDAsIGJvdHRvbTogMCB9XG4gICAgICB9LFxuICAgICAgZmlyZSAoZXZlbnQpIHtcbiAgICAgICAgdGhpcy5ldmVudHMuZmlyZShldmVudClcbiAgICAgIH0sXG4gICAgfSxcbiAgICBwcm9wcykgYXMgYW55XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRQcm9wczxUIGV4dGVuZHMge30sIEsgZXh0ZW5kcyBrZXlvZiBUPiAoc3JjOiBULCBwcm9wczogS1tdKSB7XG4gIHJldHVybiBwcm9wcy5yZWR1Y2UoKGFjYywgcHJvcCkgPT4ge1xuICAgIGFjY1twcm9wXSA9IHNyY1twcm9wXVxuICAgIHJldHVybiBhY2NcbiAgfSwge30gYXMgUGljazxULCBLPilcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRlc3RFbnYgKHtcbiAgcGx1Z2lucyA9IFtdLFxuICB0YXJnZXQsXG4gIHJlY3QgPSB7ICB0b3A6IDAsIGxlZnQ6IDAsIGJvdHRvbTogMCwgcmlnaHQ6IDAgIH0sXG59OiB7XG4gIHBsdWdpbnM/OiBJbnRlcmFjdC5QbHVnaW5bXSxcbiAgdGFyZ2V0PzogSW50ZXJhY3QuVGFyZ2V0LFxuICByZWN0PzogSW50ZXJhY3QuUmVjdCxcbn0gPSB7fSkge1xuICBjb25zdCBzY29wZTogSW50ZXJhY3QuU2NvcGUgPSBtb2NrU2NvcGUoKVxuXG4gIGZvciAoY29uc3QgcGx1Z2luIG9mIHBsdWdpbnMpIHtcbiAgICBzY29wZS51c2VQbHVnaW4ocGx1Z2luKVxuICB9XG5cbiAgdGFyZ2V0ID0gdGFyZ2V0IHx8IHNjb3BlLmRvY3VtZW50LmJvZHlcblxuICBjb25zdCBpbnRlcmFjdGlvbiA9IHNjb3BlLmludGVyYWN0aW9ucy5uZXcoe30pXG4gIGNvbnN0IGludGVyYWN0YWJsZSA9IHNjb3BlLmludGVyYWN0YWJsZXMubmV3KHRhcmdldClcbiAgY29uc3QgY29vcmRzID0gdXRpbHMucG9pbnRlci5uZXdDb29yZHMoKVxuXG4gIDsgKGNvb3JkcyBhcyBhbnkpLnRhcmdldCA9IHRhcmdldFxuICBjb25zdCBldmVudCA9IHV0aWxzLnBvaW50ZXIuY29vcmRzVG9FdmVudChjb29yZHMpXG5cbiAgaW50ZXJhY3RhYmxlLnJlY3RDaGVja2VyKCgpID0+ICh7IC4uLnJlY3QgfSkpXG5cbiAgcmV0dXJuIHtcbiAgICBzY29wZSxcbiAgICBpbnRlcmFjdGlvbixcbiAgICB0YXJnZXQsXG4gICAgaW50ZXJhY3RhYmxlLFxuICAgIGNvb3JkcyxcbiAgICBldmVudCxcbiAgfVxufVxuIl19
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc