appium-xcuitest-driver 3.49.1 → 3.50.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -164,6 +164,10 @@ commands.performActions = async function performActions(actions) {
164
164
  });
165
165
  };
166
166
 
167
+ commands.releaseActions = function releaseActions() {
168
+ _logger.default.warn('On this platform, releaseActions is a no-op');
169
+ };
170
+
167
171
  commands.performTouch = async function performTouch(gestures) {
168
172
  _logger.default.debug(`Received the following touch action: ${gesturesChainToString(gestures)}`);
169
173
 
@@ -423,4 +427,4 @@ var _default = extensions;
423
427
  exports.default = _default;require('source-map-support').install();
424
428
 
425
429
 
426
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9nZXN0dXJlLmpzIl0sIm5hbWVzIjpbImhlbHBlcnMiLCJleHRlbnNpb25zIiwiY29tbWFuZHMiLCJ0b0VsZW1lbnRJZCIsIm9wdHMiLCJlbGVtZW50IiwibG9nIiwiaW5mbyIsImVsIiwiZWxlbWVudElkIiwidXRpbCIsInVud3JhcEVsZW1lbnQiLCJ0b0VsZW1lbnRPckFwcGxpY2F0aW9uSWQiLCJkcml2ZXIiLCJmaW5kTmF0aXZlRWxlbWVudE9yRWxlbWVudHMiLCJtb3ZlVG8iLCJ4b2Zmc2V0IiwieW9mZnNldCIsImlzV2ViQ29udGV4dCIsIngiLCJ5IiwiZ2V0TG9jYXRpb24iLCJjb29yZHMiLCJjdXJXZWJDb29yZHMiLCJhdG9tc0VsZW1lbnQiLCJ1c2VBdG9tc0VsZW1lbnQiLCJyZWxDb29yZHMiLCJleGVjdXRlQXRvbSIsIl8iLCJpc05pbCIsImN1ckNvb3JkcyIsImVycm9ycyIsIlVua25vd25FeGNlcHRpb24iLCJlbFBvcyIsInJlcXVpcmVGbG9hdFBhcmFtZXRlciIsInBhcmFtTmFtZSIsInBhcmFtVmFsdWUiLCJtZXRob2ROYW1lIiwiaXNVbmRlZmluZWQiLCJJbnZhbGlkQXJndW1lbnRFcnJvciIsInJlc3VsdCIsInBhcnNlRmxvYXQiLCJpc05hTiIsInJlcXVpcmVJbnRQYXJhbWV0ZXIiLCJwYXJzZUludCIsIm1vYmlsZVNoYWtlIiwiaXNTaW11bGF0b3IiLCJVbmtub3duRXJyb3IiLCJkZXZpY2UiLCJzaGFrZSIsImNsaWNrIiwibmF0aXZlQ2xpY2siLCJzZXR0aW5ncyIsImdldFNldHRpbmdzIiwibmF0aXZlV2ViVGFwIiwibmF0aXZlV2ViVGFwU3RyaWN0IiwiZGVidWciLCJnZXN0dXJlc0NoYWluVG9TdHJpbmciLCJnZXN0dXJlcyIsImtleXNUb0luY2x1ZGUiLCJtYXAiLCJpdGVtIiwib3RoZXJLZXlzIiwiZGlmZmVyZW5jZSIsImtleXMiLCJpc0FycmF5IiwiaW50ZXJzZWN0aW9uIiwibGVuZ3RoIiwiYWN0aW9uIiwiaXNQbGFpbk9iamVjdCIsIkpTT04iLCJzdHJpbmdpZnkiLCJqb2luIiwicGVyZm9ybUFjdGlvbnMiLCJhY3Rpb25zIiwicHJlcHJvY2Vzc2VkQWN0aW9ucyIsIk9iamVjdCIsImFzc2lnbiIsInR5cGUiLCJwYXJhbWV0ZXJzIiwicG9pbnRlclR5cGUiLCJtb2RpZmllZEFjdGlvbiIsImNsb25lIiwiZmlsdGVyIiwiaW5uZXJBY3Rpb24iLCJkdXJhdGlvbiIsInByb3h5Q29tbWFuZCIsInBlcmZvcm1Ub3VjaCIsImUiLCJlcnJvckFuZFRocm93IiwibWVzc2FnZSIsInBlcmZvcm1NdWx0aUFjdGlvbiIsImkiLCJlbmRwb2ludCIsIm1vYmlsZVNjcm9sbCIsInN3aXBlIiwicGFyYW1zIiwibmFtZSIsImRpcmVjdGlvbiIsImluY2x1ZGVzIiwidG9Mb3dlckNhc2UiLCJtc2ciLCJwcmVkaWNhdGVTdHJpbmciLCJ0b1Zpc2libGUiLCJkaXN0YW5jZSIsIm1vYmlsZVN3aXBlIiwibW9iaWxlUGluY2giLCJzY2FsZSIsInZlbG9jaXR5IiwibW9iaWxlRG91YmxlVGFwIiwibW9iaWxlVHdvRmluZ2VyVGFwIiwibW9iaWxlVG91Y2hBbmRIb2xkIiwibW9iaWxlVGFwIiwibW9iaWxlRHJhZ0Zyb21Ub0ZvckR1cmF0aW9uIiwiZnJvbVgiLCJmcm9tWSIsInRvWCIsInRvWSIsIm1vYmlsZVRhcFdpdGhOdW1iZXJPZlRhcHMiLCJudW1iZXJPZlRhcHMiLCJudW1iZXJPZlRvdWNoZXMiLCJtb2JpbGVTZWxlY3RQaWNrZXJXaGVlbFZhbHVlIiwiaXNTdHJpbmciLCJvcmRlciIsIm9mZnNldCIsIm1vYmlsZVJvdGF0ZUVsZW1lbnQiLCJyb3RhdGlvbiIsImdldENvb3JkaW5hdGVzIiwiZ2VzdHVyZSIsImNvb3JkaW5hdGVzIiwiYXJlT2Zmc2V0cyIsIm9wdGlvblgiLCJvcHRpb25zIiwib3B0aW9uWSIsInJlY3QiLCJnZXRFbGVtZW50UmVjdCIsInBvcyIsInNpemUiLCJ3Iiwid2lkdGgiLCJoIiwiaGVpZ2h0Iiwib2Zmc2V0WCIsIm9mZnNldFkiLCJhcHBseU1vdmVUb09mZnNldCIsImZpcnN0Q29vcmRpbmF0ZXMiLCJzZWNvbmRDb29yZGluYXRlcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBR0EsTUFBTUEsT0FBTyxHQUFHLEVBQWhCO0FBQUEsTUFBb0JDLFVBQVUsR0FBRyxFQUFqQztBQUFBLE1BQXFDQyxRQUFRLEdBQUcsRUFBaEQ7Ozs7O0FBRUEsU0FBU0MsV0FBVCxDQUFzQkMsSUFBSSxHQUFHLEVBQTdCLEVBQWlDO0FBQy9CLE1BQUlBLElBQUksQ0FBQ0MsT0FBVCxFQUFrQjtBQUNoQkMsb0JBQUlDLElBQUosQ0FBVSwrRUFBVjtBQUNEOztBQUNELFFBQU1DLEVBQUUsR0FBR0osSUFBSSxDQUFDSyxTQUFMLElBQWtCTCxJQUFJLENBQUNDLE9BQWxDO0FBQ0EsU0FBT0csRUFBRSxHQUFHRSxvQkFBS0MsYUFBTCxDQUFtQkgsRUFBbkIsQ0FBSCxHQUE0QixJQUFyQztBQUNEOztBQUVELGVBQWVJLHdCQUFmLENBQXlDQyxNQUF6QyxFQUFpRFQsSUFBSSxHQUFHLEVBQXhELEVBQTREO0FBQzFELFNBQU9ELFdBQVcsQ0FBQ0MsSUFBRCxDQUFYLElBQ0ZNLG9CQUFLQyxhQUFMLENBQW1CLE1BQU1FLE1BQU0sQ0FBQ0MsMkJBQVAsQ0FBb0MsWUFBcEMsRUFBa0QsNEJBQWxELEVBQStFLEtBQS9FLENBQXpCLENBREw7QUFFRDs7QUFFRFosUUFBUSxDQUFDYSxNQUFULEdBQWtCLGVBQWVBLE1BQWYsQ0FBdUJQLEVBQXZCLEVBQTJCUSxPQUFPLEdBQUcsQ0FBckMsRUFBd0NDLE9BQU8sR0FBRyxDQUFsRCxFQUFxRDtBQUNyRVQsRUFBQUEsRUFBRSxHQUFHRSxvQkFBS0MsYUFBTCxDQUFtQkgsRUFBbkIsQ0FBTDs7QUFFQSxNQUFJLEtBQUtVLFlBQUwsRUFBSixFQUF5QjtBQUN2QixRQUFJO0FBQUNDLE1BQUFBLENBQUQ7QUFBSUMsTUFBQUE7QUFBSixRQUFTLE1B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LENBQUM5RyxDQUFaLEdBQWlCZ0gsT0FBTyxJQUFJLENBQTVCO0FBQ0FGLElBQUFBLFdBQVcsQ0FBQzdHLENBQVosR0FBaUJpSCxPQUFPLElBQUksQ0FBNUI7QUFDRDs7QUFDRCxTQUFPSixXQUFQO0FBQ0QsQ0EzQ0Q7O0FBNkNBakksT0FBTyxDQUFDZ0osaUJBQVIsR0FBNEIsU0FBU0EsaUJBQVQsQ0FBNEJDLGdCQUE1QixFQUE4Q0MsaUJBQTlDLEVBQWlFO0FBQzNGLE1BQUlBLGlCQUFpQixDQUFDaEIsVUFBdEIsRUFBa0M7QUFDaEMsV0FBTztBQUNML0csTUFBQUEsQ0FBQyxFQUFFOEgsZ0JBQWdCLENBQUM5SCxDQUFqQixHQUFxQitILGlCQUFpQixDQUFDL0gsQ0FEckM7QUFFTEMsTUFBQUEsQ0FBQyxFQUFFNkgsZ0JBQWdCLENBQUM3SCxDQUFqQixHQUFxQjhILGlCQUFpQixDQUFDOUg7QUFGckMsS0FBUDtBQUlELEdBTEQsTUFLTztBQUNMLFdBQU84SCxpQkFBUDtBQUNEO0FBQ0YsQ0FURDs7QUFXQXRFLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjNUUsVUFBZCxFQUEwQkQsT0FBMUIsRUFBbUNFLFFBQW5DO2VBRWVELFUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBlcnJvcnMgfSBmcm9tICdhcHBpdW0tYmFzZS1kcml2ZXInO1xuaW1wb3J0IHsgdXRpbCB9IGZyb20gJ2FwcGl1bS1zdXBwb3J0JztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgbG9nIGZyb20gJy4uL2xvZ2dlcic7XG5cblxuY29uc3QgaGVscGVycyA9IHt9LCBleHRlbnNpb25zID0ge30sIGNvbW1hbmRzID0ge307XG5cbmZ1bmN0aW9uIHRvRWxlbWVudElkIChvcHRzID0ge30pIHtcbiAgaWYgKG9wdHMuZWxlbWVudCkge1xuICAgIGxvZy5pbmZvKGBUaGUgJ2VsZW1lbnQnIGFyZ3VtZW50IG5hbWUgaXMgZGVwcmVjYXRlZC4gQ29uc2lkZXIgdXNpbmcgJ2VsZW1lbnRJZCcgaW5zdGVhZGApO1xuICB9XG4gIGNvbnN0IGVsID0gb3B0cy5lbGVtZW50SWQgfHwgb3B0cy5lbGVtZW50O1xuICByZXR1cm4gZWwgPyB1dGlsLnVud3JhcEVsZW1lbnQoZWwpIDogbnVsbDtcbn1cblxuYXN5bmMgZnVuY3Rpb24gdG9FbGVtZW50T3JBcHBsaWNhdGlvbklkIChkcml2ZXIsIG9wdHMgPSB7fSkge1xuICByZXR1cm4gdG9FbGVtZW50SWQob3B0cylcbiAgICB8fCB1dGlsLnVud3JhcEVsZW1lbnQoYXdhaXQgZHJpdmVyLmZpbmROYXRpdmVFbGVtZW50T3JFbGVtZW50cyhgY2xhc3MgbmFtZWAsIGBYQ1VJRWxlbWVudFR5cGVBcHBsaWNhdGlvbmAsIGZhbHNlKSk7XG59XG5cbmNvbW1hbmRzLm1vdmVUbyA9IGFzeW5jIGZ1bmN0aW9uIG1vdmVUbyAoZWwsIHhvZmZzZXQgPSAwLCB5b2Zmc2V0ID0gMCkge1xuICBlbCA9IHV0aWwudW53cmFwRWxlbWVudChlbCk7XG5cbiAgaWYgKHRoaXMuaXNXZWJDb250ZXh0KCkpIHtcbiAgICBsZXQge3gsIHl9ID0gYXdhaXQgdGhpcy5nZXRMb2NhdGlvbihlbCk7XG4gICAgbGV0IGNvb3JkcyA9IHtcbiAgICAgIHg6IHggKyB4b2Zmc2V0LFxuICAgICAgeTogeSArIHlvZmZzZXRcbiAgICB9O1xuICAgIHRoaXMuY3VyV2ViQ29vcmRzID0gY29vcmRzO1xuICAgIGxldCBhdG9tc0VsZW1lbnQgPSB0aGlzLnVzZUF0b21zRWxlbWVudChlbCk7XG4gICAgbGV0IHJlbENvb3JkcyA9IHt4OiB4b2Zmc2V0LCB5OiB5b2Zmc2V0fTtcbiAgICBhd2FpdCB0aGlzLmV4ZWN1dGVBdG9tKCdtb3ZlX21vdXNlJywgW2F0b21zRWxlbWVudCwgcmVsQ29vcmRzXSk7XG4gIH0gZWxzZSB7XG4gICAgaWYgKF8uaXNOaWwoZWwpKSB7XG4gICAgICBpZiAoIXRoaXMuY3VyQ29vcmRzKSB7XG4gICAgICAgIHRocm93IG5ldyBlcnJvcnMuVW5rbm93bkV4Y2VwdGlvbihcbiAgICAgICAgICAnQ3VycmVudCBjdXJzb3IgcG9zaXRpb24gdW5rbm93biwgcGxlYXNlIHVzZSBtb3ZlVG8gd2l0aCBhbiBlbGVtZW50IHRoZSBmaXJzdCB0aW1lLicpO1xuICAgICAgfVxuICAgICAgdGhpcy5jdXJDb29yZHMgPSB7XG4gICAgICAgIHg6IHRoaXMuY3VyQ29vcmRzLnggKyB4b2Zmc2V0LFxuICAgICAgICB5OiB0aGlzLmN1ckNvb3Jkcy55ICsgeW9mZnNldFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IGVsUG9zID0gYXdhaXQgdGhpcy5nZXRMb2NhdGlvbihlbCk7XG4gICAgICB0aGlzLmN1ckNvb3JkcyA9IHtcbiAgICAgICAgeDogZWxQb3MueCArIHhvZmZzZXQsXG4gICAgICAgIHk6IGVsUG9zLnkgKyB5b2Zmc2V0XG4gICAgICB9O1xuICAgIH1cbiAgfVxufTtcblxuZnVuY3Rpb24gcmVxdWlyZUZsb2F0UGFyYW1ldGVyIChwYXJhbU5hbWUsIHBhcmFtVmFsdWUsIG1ldGhvZE5hbWUpIHtcbiAgaWYgKF8uaXNVbmRlZmluZWQocGFyYW1WYWx1ZSkpIHtcbiAgICB0aHJvdyBuZXcgZXJyb3JzLkludmFsaWRBcmd1bWVudEVycm9yKGBcIiR7cGFyYW1OYW1lfVwiIHBhcmFtZXRlciBpcyBtYW5kYXRvcnkgZm9yIFwiJHttZXRob2ROYW1lfVwiIGNhbGxgKTtcbiAgfVxuICBjb25zdCByZXN1bHQgPSBwYXJzZUZsb2F0KHBhcmFtVmFsdWUpO1xuICBpZiAoaXNOYU4ocmVzdWx0KSkge1xuICAgIHRocm93IG5ldyBlcnJvcnMuSW52YWxpZEFyZ3VtZW50RXJyb3IoYFwiJHtwYXJhbU5hbWV9XCIgcGFyYW1ldGVyIHNob3VsZCBiZSBhIHZhbGlkIG51bWJlci4gXCIke3BhcmFtVmFsdWV9XCIgaXMgZ2l2ZW4gaW5zdGVhZGApO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIHJlcXVpcmVJbnRQYXJhbWV0ZXIgKHBhcmFtTmFtZSwgcGFyYW1WYWx1ZSwgbWV0aG9kTmFtZSkge1xuICBpZiAoXy5pc1VuZGVmaW5lZChwYXJhbVZhbHVlKSkge1xuICAgIHRocm93IG5ldyBlcnJvcnMuSW52YWxpZEFyZ3VtZW50RXJyb3IoYFwiJHtwYXJhbU5hbWV9XCIgcGFyYW1ldGVyIGlzIG1hbmRhdG9yeSBmb3IgXCIke21ldGhvZE5hbWV9XCIgY2FsbGApO1xuICB9XG4gIGNvbnN0IHJlc3VsdCA9IHBhcnNlSW50KHBhcmFtVmFsdWUsIDEwKTtcbiAgaWYgKGlzTmFOKHJlc3VsdCkpIHtcbiAgICB0aHJvdyBuZXcgZXJyb3JzLkludmFsaWRBcmd1bWVudEVycm9yKGBcIiR7cGFyYW1OYW1lfVwiIHBhcmFtZXRlciBzaG91bGQgYmUgYSB2YWxpZCBpbnRlZ2VyLiBcIiR7cGFyYW1WYWx1ZX1cIiBpcyBnaXZlbiBpbnN0ZWFkYCk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuY29tbWFuZHMubW9iaWxlU2hha2UgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVTaGFrZSAoKSB7XG4gIGlmICghdGhpcy5pc1NpbXVsYXRvcigpKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5Vbmtub3duRXJyb3IoJ1NoYWtlIGlzIG5vdCBzdXBwb3J0ZWQgb24gcmVhbCBkZXZpY2VzJyk7XG4gIH1cbiAgYXdhaXQgdGhpcy5vcHRzLmRldmljZS5zaGFrZSgpO1xufTtcblxuY29tbWFuZHMuY2xpY2sgPSBhc3luYyBmdW5jdGlvbiBjbGljayAoZWwpIHtcbiAgaWYgKCF0aGlzLmlzV2ViQ29udGV4dCgpKSB7XG4gICAgLy8gdGhlcmUgYXJlIG11bHRpcGxlIGNvbW1hbmRzIHRoYXQgbWFwIGhlcmUsIHNvIG1hbnVhbGx5IHByb3h5XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMubmF0aXZlQ2xpY2soZWwpO1xuICB9XG4gIGVsID0gdXRpbC51bndyYXBFbGVtZW50KGVsKTtcbiAgaWYgKChhd2FpdCB0aGlzLnNldHRpbmdzLmdldFNldHRpbmdzKCkpLm5hdGl2ZVdlYlRhcCB8fCAoYXdhaXQgdGhpcy5zZXR0aW5ncy5nZXRTZXR0aW5ncygpKS5uYXRpdmVXZWJUYXBTdHJpY3QpIHtcbiAgICAvLyBhdG9tcy1iYXNlZCBjbGlja3MgZG9uJ3QgYWx3YXlzIHdvcmsgaW4gc2FmYXJpIDdcbiAgICBsb2cuZGVidWcoJ1VzaW5nIG5hdGl2ZSB3ZWIgdGFwJyk7XG4gICAgYXdhaXQgdGhpcy5uYXRpdmVXZWJUYXAoZWwpO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IGF0b21zRWxlbWVudCA9IHRoaXMudXNlQXRvbXNFbGVtZW50KGVsKTtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5leGVjdXRlQXRvbSgnY2xpY2snLCBbYXRvbXNFbGVtZW50XSk7XG4gIH1cbn07XG5cbmZ1bmN0aW9uIGdlc3R1cmVzQ2hhaW5Ub1N0cmluZyAoZ2VzdHVyZXMsIGtleXNUb0luY2x1ZGUgPSBbJ29wdGlvbnMnXSkge1xuICByZXR1cm4gZ2VzdHVyZXMubWFwKChpdGVtKSA9PiB7XG4gICAgbGV0IG90aGVyS2V5cyA9IF8uZGlmZmVyZW5jZShfLmtleXMoaXRlbSksIFsnYWN0aW9uJ10pO1xuICAgIG90aGVyS2V5cyA9IF8uaXNBcnJheShrZXlzVG9JbmNsdWRlKSA/IF8uaW50ZXJzZWN0aW9uKG90aGVyS2V5cywga2V5c1RvSW5jbHVkZSkgOiBvdGhlcktleXM7XG4gICAgaWYgKG90aGVyS2V5cy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBgJHtpdGVtLmFjdGlvbn1gICtcbiAgICAgICAgYCgke18ubWFwKG90aGVyS2V5cywgKHgpID0+IHggKyAnPScgKyAoXy5pc1BsYWluT2JqZWN0KGl0ZW1beF0pID8gSlNPTi5zdHJpbmdpZnkoaXRlbVt4XSkgOiBpdGVtW3hdKSkuam9pbignLCAnKX0pYDtcbiAgICB9XG4gICAgcmV0dXJuIGl0ZW0uYWN0aW9uO1xuICB9KS5qb2luKCctJyk7XG59XG5cbmNvbW1hbmRzLnBlcmZvcm1BY3Rpb25zID0gYXN5bmMgZnVuY3Rpb24gcGVyZm9ybUFjdGlvbnMgKGFjdGlvbnMpIHtcbiAgbG9nLmRlYnVnKGBSZWNlaXZlZCB0aGUgZm9sbG93aW5nIFczQyBhY3Rpb25zOiAke0pTT04uc3RyaW5naWZ5KGFjdGlvbnMsIG51bGwsICcgICcpfWApO1xuICAvLyBUaGlzIGlzIG1hbmRhdG9yeSwgc2luY2UgV0RBIG9ubHkgc3VwcG9ydHMgVE9VQ0ggcG9pbnRlciB0eXBlXG4gIC8vIGFuZCBTZWxlbml1bSBBUEkgdXNlcyBNT1VTRSBhcyB0aGUgZGVmYXVsdCBvbmVcbiAgY29uc3QgcHJlcHJvY2Vzc2VkQWN0aW9ucyA9IGFjdGlvbnNcbiAgICAubWFwKChhY3Rpb24pID0+IE9iamVjdC5hc3NpZ24oe30sIGFjdGlvbiwgYWN0aW9uLnR5cGUgPT09ICdwb2ludGVyJyA/IHtcbiAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgcG9pbnRlclR5cGU6ICd0b3VjaCdcbiAgICAgIH1cbiAgICB9IDoge30pKVxuICAgIC5tYXAoKGFjdGlvbikgPT4ge1xuICAgICAgY29uc3QgbW9kaWZpZWRBY3Rpb24gPSBfLmNsb25lKGFjdGlvbikgfHwge307XG4gICAgICAvLyBTZWxlbml1bSBBUEkgdW5leHBlY3RlZGx5IGluc2VydHMgemVybyBwYXVzZXMsIHdoaWNoIGFyZSBub3Qgc3VwcG9ydGVkIGJ5IFdEQVxuICAgICAgbW9kaWZpZWRBY3Rpb24uYWN0aW9ucyA9IChhY3Rpb24uYWN0aW9ucyB8fCBbXSlcbiAgICAgICAgLmZpbHRlcigoaW5uZXJBY3Rpb24pID0+ICEoaW5uZXJBY3Rpb24udHlwZSA9PT0gJ3BhdXNlJyAmJiBpbm5lckFjdGlvbi5kdXJhdGlvbiA9PT0gMCkpO1xuICAgICAgcmV0dXJuIG1vZGlmaWVkQWN0aW9uO1xuICAgIH0pO1xuICBsb2cuZGVidWcoYFByZXByb2Nlc3NlZCBhY3Rpb25zOiAke0pTT04uc3RyaW5naWZ5KHByZXByb2Nlc3NlZEFjdGlvbnMsIG51bGwsICcgICcpfWApO1xuICByZXR1cm4gYXdhaXQgdGhpcy5wcm94eUNvbW1hbmQoJy9hY3Rpb25zJywgJ1BPU1QnLCB7YWN0aW9uczogcHJlcHJvY2Vzc2VkQWN0aW9uc30pO1xufTtcblxuY29tbWFuZHMucGVyZm9ybVRvdWNoID0gYXN5bmMgZnVuY3Rpb24gcGVyZm9ybVRvdWNoIChnZXN0dXJlcykge1xuICBsb2cuZGVidWcoYFJlY2VpdmVkIHRoZSBmb2xsb3dpbmcgdG91Y2ggYWN0aW9uOiAke2dlc3R1cmVzQ2hhaW5Ub1N0cmluZyhnZXN0dXJlcyl9YCk7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMucHJveHlDb21tYW5kKCcvd2RhL3RvdWNoL3BlcmZvcm0nLCAnUE9TVCcsIHthY3Rpb25zOiBnZXN0dXJlc30pO1xuICB9IGNhdGNoIChlKSB7XG4gICAgaWYgKCF0aGlzLmlzV2ViQ29udGV4dCgpKSB7XG4gICAgICB0aHJvdyBlO1xuICAgIH1cbiAgICBsb2cuZXJyb3JBbmRUaHJvdygnVGhlIFRvdWNoIEFQSSBpcyBhaW1lZCBmb3IgdXNhZ2UgaW4gTkFUSVZFIGNvbnRleHQuICcgK1xuICAgICAgJ0NvbnNpZGVyIHVzaW5nIFwiZXhlY3V0ZVwiIEFQSSB3aXRoIGN1c3RvbSBldmVudHMgdHJpZ2dlciBzY3JpcHQgJyArXG4gICAgICBgdG8gZW11bGF0ZSB0b3VjaCBldmVudHMgYmVpbmcgaW4gV0VCVklFVyBjb250ZXh0LiBPcmlnaW5hbCBlcnJvcjogJHtlLm1lc3NhZ2V9YCk7XG4gIH1cbn07XG5cbmNvbW1hbmRzLnBlcmZvcm1NdWx0aUFjdGlvbiA9IGFzeW5jIGZ1bmN0aW9uIHBlcmZvcm1NdWx0aUFjdGlvbiAoYWN0aW9ucykge1xuICBsb2cuZGVidWcoYFJlY2VpdmVkIHRoZSBmb2xsb3dpbmcgbXVsdGkgdG91Y2ggYWN0aW9uOmApO1xuICBmb3IgKGxldCBpIGluIGFjdGlvbnMpIHtcbiAgICBsb2cuZGVidWcoYCAgICAke3BhcnNlSW50KGksIDEwKSArIDF9OiAke18ubWFwKGFjdGlvbnNbaV0sICdhY3Rpb24nKS5qb2luKCctJyl9YCk7XG4gIH1cbiAgdHJ5IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5wcm94eUNvbW1hbmQoJy93ZGEvdG91Y2gvbXVsdGkvcGVyZm9ybScsICdQT1NUJywge2FjdGlvbnN9KTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGlmICghdGhpcy5pc1dlYkNvbnRleHQoKSkge1xuICAgICAgdGhyb3cgZTtcbiAgICB9XG4gICAgbG9nLmVycm9yQW5kVGhyb3coJ1RoZSBNdWx0aVRvdWNoIEFQSSBpcyBhaW1lZCBmb3IgdXNhZ2UgaW4gTkFUSVZFIGNvbnRleHQuICcgK1xuICAgICAgJ0NvbnNpZGVyIHVzaW5nIFwiZXhlY3V0ZVwiIEFQSSB3aXRoIGN1c3RvbSBldmVudHMgdHJpZ2dlciBzY3JpcHQgJyArXG4gICAgICBgdG8gZW11bGF0ZSBtdWx0aXRvdWNoIGV2ZW50cyBiZWluZyBpbiBXRUJWSUVXIGNvbnRleHQuIE9yaWdpbmFsIGVycm9yOiAke2UubWVzc2FnZX1gKTtcbiAgfVxufTtcblxuY29tbWFuZHMubmF0aXZlQ2xpY2sgPSBhc3luYyBmdW5jdGlvbiBuYXRpdmVDbGljayAoZWwpIHtcbiAgZWwgPSB1dGlsLnVud3JhcEVsZW1lbnQoZWwpO1xuICBsZXQgZW5kcG9pbnQgPSBgL2VsZW1lbnQvJHtlbH0vY2xpY2tgO1xuICByZXR1cm4gYXdhaXQgdGhpcy5wcm94eUNvbW1hbmQoZW5kcG9pbnQsICdQT1NUJywge30pO1xufTtcblxuLypcbiAqIFNlZSBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svV2ViRHJpdmVyQWdlbnQvYmxvYi9tYXN0ZXIvV2ViRHJpdmVyQWdlbnRMaWIvQ29tbWFuZHMvRkJFbGVtZW50Q29tbWFuZHMubVxuICogdG8gZ2V0IHRoZSBpbmZvIGFib3V0IGF2YWlsYWJsZSBXREEgZ2VzdHVyZXMgQVBJXG4gKlxuICogU2VlIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9yZWZlcmVuY2UveGN0ZXN0L3hjdWllbGVtZW50IGFuZFxuICogaHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL3JlZmVyZW5jZS94Y3Rlc3QveGN1aWNvb3JkaW5hdGUgdG8gZ2V0IHRoZSBkZXRhaWxlZCBkZXNjcmlwdGlvbiBvZlxuICogYWxsIFhDVGVzdCBnZXN0dXJlc1xuKi9cblxuaGVscGVycy5tb2JpbGVTY3JvbGwgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVTY3JvbGwgKG9wdHMgPSB7fSwgc3dpcGUgPSBmYWxzZSkge1xuICAvLyBXREEgc3VwcG9ydHMgZm91ciBzY3JvbGxpbmcgc3RyYXRlZ2llczogcHJlZGljYXRpb24gYmFzZWQgb24gbmFtZSwgZGlyZWN0aW9uLFxuICAvLyBwcmVkaWNhdGVTdHJpbmcsIGFuZCB0b1Zpc2libGUsIGluIHRoYXQgb3JkZXIuIFN3aXBpbmcgcmVxdWlyZXMgZGlyZWN0aW9uLlxuICBjb25zdCBwYXJhbXMgPSB7fTtcbiAgaWYgKG9wdHMubmFtZSAmJiAhc3dpcGUpIHtcbiAgICBwYXJhbXMubmFtZSA9IG9wdHMubmFtZTtcbiAgfSBlbHNlIGlmIChvcHRzLmRpcmVjdGlvbikge1xuICAgIGlmICghWyd1cCcsICdkb3duJywgJ2xlZnQnLCAncmlnaHQnXS5pbmNsdWRlcyhvcHRzLmRpcmVjdGlvbi50b0xvd2VyQ2FzZSgpKSkge1xuICAgICAgbGV0IG1zZyA9ICdEaXJlY3Rpb24gbXVzdCBiZSB1cCwgZG93biwgbGVmdCBvciByaWdodCc7XG4gICAgICBsb2cuZXJyb3JBbmRUaHJvdyhtc2cpO1xuICAgIH1cbiAgICBwYXJhbXMuZGlyZWN0aW9uID0gb3B0cy5kaXJlY3Rpb247XG4gIH0gZWxzZSBpZiAob3B0cy5wcmVkaWNhdGVTdHJpbmcgJiYgIXN3aXBlKSB7XG4gICAgcGFyYW1zLnByZWRpY2F0ZVN0cmluZyA9IG9wdHMucHJlZGljYXRlU3RyaW5nO1xuICB9IGVsc2UgaWYgKG9wdHMudG9WaXNpYmxlICYmICFzd2lwZSkge1xuICAgIHBhcmFtcy50b1Zpc2libGUgPSBvcHRzLnRvVmlzaWJsZTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBtc2cgPSBzd2lwZVxuICAgICAgPyAnTW9iaWxlIHN3aXBlIHJlcXVpcmVzIGRpcmVjdGlvbidcbiAgICAgIDogJ01vYmlsZSBzY3JvbGwgc3VwcG9ydHMgdGhlIGZvbGxvd2luZyBzdHJhdGVnaWVzOiBuYW1lLCBkaXJlY3Rpb24sIHByZWRpY2F0ZVN0cmluZywgYW5kIHRvVmlzaWJsZS4gU3BlY2lmeSBvbmUgb2YgdGhlc2UnO1xuICAgIHRocm93IG5ldyBlcnJvcnMuSW52YWxpZEFyZ3VtZW50RXJyb3IobXNnKTtcbiAgfVxuXG4gIC8vIHdlIGNhbiBhbHNvIG9wdGlvbmFsbHkgcGFzcyBhIGRpc3RhbmNlIHdoaWNoIGFwcGVhcnMgdG8gYmUgYSByYXRpbyBvZlxuICAvLyBzY3JlZW4gaGVpZ2h0LCBzbyAxLjAgbWVhbnMgYSBmdWxsIHNjcmVlbidzIHdvcnRoIG9mIHNjcm9sbGluZ1xuICBpZiAoIXN3aXBlICYmIG9wdHMuZGlzdGFuY2UpIHtcbiAgICBwYXJhbXMuZGlzdGFuY2UgPSBvcHRzLmRpc3RhbmNlO1xuICB9XG5cbiAgY29uc3QgZWxlbWVudElkID0gYXdhaXQgdG9FbGVtZW50T3JBcHBsaWNhdGlvbklkKHRoaXMsIG9wdHMpO1xuICBjb25zdCBlbmRwb2ludCA9IGAvd2RhL2VsZW1lbnQvJHtlbGVtZW50SWR9LyR7c3dpcGUgPyAnc3dpcGUnIDogJ3Njcm9sbCd9YDtcbiAgcmV0dXJuIGF3YWl0IHRoaXMucHJveHlDb21tYW5kKGVuZHBvaW50LCAnUE9TVCcsIHBhcmFtcyk7XG59O1xuXG5oZWxwZXJzLm1vYmlsZVN3aXBlID0gYXN5bmMgZnVuY3Rpb24gbW9iaWxlU3dpcGUgKG9wdHMgPSB7fSkge1xuICByZXR1cm4gYXdhaXQgdGhpcy5tb2JpbGVTY3JvbGwob3B0cywgdHJ1ZSk7XG59O1xuXG5oZWxwZXJzLm1vYmlsZVBpbmNoID0gYXN5bmMgZnVuY3Rpb24gbW9iaWxlUGluY2ggKG9wdHMgPSB7fSkge1xuICBjb25zdCBwYXJhbXMgPSB7XG4gICAgc2NhbGU6IHJlcXVpcmVGbG9hdFBhcmFtZXRlcignc2NhbGUnLCBvcHRzLnNjYWxlLCAncGluY2gnKSxcbiAgICB2ZWxvY2l0eTogcmVxdWlyZUZsb2F0UGFyYW1ldGVyKCd2ZWxvY2l0eScsIG9wdHMudmVsb2NpdHksICdwaW5jaCcpXG4gIH07XG4gIGNvbnN0IGVsZW1lbnRJZCA9IGF3YWl0IHRvRWxlbWVudE9yQXBwbGljYXRpb25JZCh0aGlzLCBvcHRzKTtcbiAgcmV0dXJuIGF3YWl0IHRoaXMucHJveHlDb21tYW5kKGAvd2RhL2VsZW1lbnQvJHtlbGVtZW50SWR9L3BpbmNoYCwgJ1BPU1QnLCBwYXJhbXMpO1xufTtcblxuaGVscGVycy5tb2JpbGVEb3VibGVUYXAgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVEb3VibGVUYXAgKG9wdHMgPSB7fSkge1xuICBjb25zdCBlbGVtZW50SWQgPSB0b0VsZW1lbnRJZChvcHRzKTtcbiAgaWYgKGVsZW1lbnRJZCkge1xuICAgIC8vIERvdWJsZSB0YXAgZWxlbWVudFxuICAgIHJldHVybiBhd2FpdCB0aGlzLnByb3h5Q29tbWFuZChgL3dkYS9lbGVtZW50LyR7ZWxlbWVudElkfS9kb3VibGVUYXBgLCAnUE9TVCcpO1xuICB9XG4gIC8vIERvdWJsZSB0YXAgY29vcmRpbmF0ZXNcbiAgY29uc3QgcGFyYW1zID0ge1xuICAgIHg6IHJlcXVpcmVGbG9hdFBhcmFtZXRlcigneCcsIG9wdHMueCwgJ2RvdWJsZVRhcCcpLFxuICAgIHk6IHJlcXVpcmVGbG9hdFBhcmFtZXRlcigneScsIG9wdHMueSwgJ2RvdWJsZVRhcCcpXG4gIH07XG4gIHJldHVybiBhd2FpdCB0aGlzLnByb3h5Q29tbWFuZCgnL3dkYS9kb3VibGVUYXAnLCAnUE9TVCcsIHBhcmFtcyk7XG59O1xuXG5oZWxwZXJzLm1vYmlsZVR3b0ZpbmdlclRhcCA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZVR3b0ZpbmdlclRhcCAob3B0cyA9IHt9KSB7XG4gIGNvbnN0IGVsZW1lbnRJZCA9IGF3YWl0IHRvRWxlbWVudE9yQXBwbGljYXRpb25JZCh0aGlzLCBvcHRzKTtcbiAgcmV0dXJuIGF3YWl0IHRoaXMucHJveHlDb21tYW5kKGAvd2RhL2VsZW1lbnQvJHtlbGVtZW50SWR9L3R3b0ZpbmdlclRhcGAsICdQT1NUJyk7XG59O1xuXG5oZWxwZXJzLm1vYmlsZVRvdWNoQW5kSG9sZCA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZVRvdWNoQW5kSG9sZCAob3B0cyA9IHt9KSB7XG4gIGNvbnN0IHBhcmFtcyA9IHtcbiAgICBkdXJhdGlvbjogcmVxdWlyZUZsb2F0UGFyYW1ldGVyKCdkdXJhdGlvbicsIG9wdHMuZHVyYXRpb24sICd0b3VjaEFuZEhvbGQnKVxuICB9O1xuICBjb25zdCBlbGVtZW50SWQgPSB0b0VsZW1lbnRJZChvcHRzKTtcbiAgaWYgKGVsZW1lbnRJZCkge1xuICAgIC8vIExvbmcgdGFwIGVsZW1lbnRcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5wcm94eUNvbW1hbmQoYC93ZGEvZWxlbWVudC8ke2VsZW1lbnRJZH0vdG91Y2hBbmRIb2xkYCwgJ1BPU1QnLCBwYXJhbXMpO1xuICB9XG4gIC8vIExvbmcgdGFwIGNvb3JkaW5hdGVzXG4gIHBhcmFtcy54ID0gcmVxdWlyZUZsb2F0UGFyYW1ldGVyKCd4Jywgb3B0cy54LCAndG91Y2hBbmRIb2xkJyk7XG4gIHBhcmFtcy55ID0gcmVxdWlyZUZsb2F0UGFyYW1ldGVyKCd5Jywgb3B0cy55LCAndG91Y2hBbmRIb2xkJyk7XG4gIHJldHVybiBhd2FpdCB0aGlzLnByb3h5Q29tbWFuZCgnL3dkYS90b3VjaEFuZEhvbGQnLCAnUE9TVCcsIHBhcmFtcyk7XG59O1xuXG5oZWxwZXJzLm1vYmlsZVRhcCA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZVRhcCAob3B0cyA9IHt9KSB7XG4gIGNvbnN0IHBhcmFtcyA9IHtcbiAgICB4OiByZXF1aXJlRmxvYXRQYXJhbWV0ZXIoJ3gnLCBvcHRzLngsICd0YXAnKSxcbiAgICB5OiByZXF1aXJlRmxvYXRQYXJhbWV0ZXIoJ3knLCBvcHRzLnksICd0YXAnKVxuICB9O1xuICBjb25zdCBlbGVtZW50SWQgPSB0b0VsZW1lbnRJZChvcHRzKSB8fCAnMCc7XG4gIHJldHVybiBhd2FpdCB0aGlzLnByb3h5Q29tbWFuZChgL3dkYS90YXAvJHtlbGVtZW50SWR9YCwgJ1BPU1QnLCBwYXJhbXMpO1xufTtcblxuaGVscGVycy5tb2JpbGVEcmFnRnJvbVRvRm9yRHVyYXRpb24gPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVEcmFnRnJvbVRvRm9yRHVyYXRpb24gKG9wdHMgPSB7fSkge1xuICBjb25zdCBwYXJhbXMgPSB7XG4gICAgZHVyYXRpb246IHJlcXVpcmVGbG9hdFBhcmFtZXRlcignZHVyYXRpb24nLCBvcHRzLmR1cmF0aW9uLCAnZHJhZ0Zyb21Ub0ZvckR1cmF0aW9uJyksXG4gICAgZnJvbVg6IHJlcXVpcmVGbG9hdFBhcmFtZXRlcignZnJvbVgnLCBvcHRzLmZyb21YLCAnZHJhZ0Zyb21Ub0ZvckR1cmF0aW9uJyksXG4gICAgZnJvbVk6IHJlcXVpcmVGbG9hdFBhcmFtZXRlcignZnJvbVknLCBvcHRzLmZyb21ZLCAnZHJhZ0Zyb21Ub0ZvckR1cmF0aW9uJyksXG4gICAgdG9YOiByZXF1aXJlRmxvYXRQYXJhbWV0ZXIoJ3RvWCcsIG9wdHMudG9YLCAnZHJhZ0Zyb21Ub0ZvckR1cmF0aW9uJyksXG4gICAgdG9ZOiByZXF1aXJlRmxvYXRQYXJhbWV0ZXIoJ3RvWScsIG9wdHMudG9ZLCAnZHJhZ0Zyb21Ub0ZvckR1cmF0aW9uJylcbiAgfTtcbiAgY29uc3QgZWxlbWVudElkID0gdG9FbGVtZW50SWQob3B0cyk7XG4gIHJldHVybiBlbGVtZW50SWRcbiAgICAvLyBEcmFnIGVsZW1lbnRcbiAgICA/IGF3YWl0IHRoaXMucHJveHlDb21tYW5kKGAvd2RhL2VsZW1lbnQvJHtlbGVtZW50SWR9L2RyYWdmcm9tdG9mb3JkdXJhdGlvbmAsICdQT1NUJywgcGFyYW1zKVxuICAgIC8vIERyYWcgY29vcmRpbmF0ZXNcbiAgICA6IGF3YWl0IHRoaXMucHJveHlDb21tYW5kKCcvd2RhL2RyYWdmcm9tdG9mb3JkdXJhdGlvbicsICdQT1NUJywgcGFyYW1zKTtcbn07XG5cbmhlbHBlcnMubW9iaWxlVGFwV2l0aE51bWJlck9mVGFwcyA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZVRhcFdpdGhOdW1iZXJPZlRhcHMgKG9wdHMgPSB7fSkge1xuICBjb25zdCBlbGVtZW50SWQgPSB0b0VsZW1lbnRJZChvcHRzKTtcbiAgaWYgKCFlbGVtZW50SWQpIHtcbiAgICB0aHJvdyBuZXcgZXJyb3JzLkludmFsaWRBcmd1bWVudEVycm9yKCdFbGVtZW50IGlkIGlzIGV4cGVjdGVkIHRvIGJlIHNldCBmb3IgdGFwV2l0aE51bWJlck9mVGFwcyBtZXRob2QnKTtcbiAgfVxuICBjb25zdCBwYXJhbXMgPSB7XG4gICAgbnVtYmVyT2ZUYXBzOiByZXF1aXJlSW50UGFyYW1ldGVyKCdudW1iZXJPZlRhcHMnLCBvcHRzLm51bWJlck9mVGFwcywgJ3RhcFdpdGhOdW1iZXJPZlRhcHMnKSxcbiAgICBudW1iZXJPZlRvdWNoZXM6IHJlcXVpcmVJbnRQYXJhbWV0ZXIoJ251bWJlck9mVG91Y2hlcycsIG9wdHMubnVtYmVyT2ZUb3VjaGVzLCAndGFwV2l0aE51bWJlck9mVGFwcycpLFxuICB9O1xuICByZXR1cm4gYXdhaXQgdGhpcy5wcm94eUNvbW1hbmQoYC93ZGEvZWxlbWVudC8ke2VsZW1lbnRJZH0vdGFwV2l0aE51bWJlck9mVGFwc2AsICdQT1NUJywgcGFyYW1zKTtcbn07XG5cbmhlbHBlcnMubW9iaWxlU2VsZWN0UGlja2VyV2hlZWxWYWx1ZSA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZVNlbGVjdFBpY2tlcldoZWVsVmFsdWUgKG9wdHMgPSB7fSkge1xuICBjb25zdCBlbGVtZW50SWQgPSB0b0VsZW1lbnRJZChvcHRzKTtcbiAgaWYgKCFlbGVtZW50SWQpIHtcbiAgICB0aHJvdyBuZXcgZXJyb3JzLkludmFsaWRBcmd1bWVudEVycm9yKCdFbGVtZW50IGlkIGlzIGV4cGVjdGVkIHRvIGJlIHNldCBmb3Igc2VsZWN0UGlja2VyV2hlZWxWYWx1ZSBtZXRob2QnKTtcbiAgfVxuICBpZiAoIV8uaXNTdHJpbmcob3B0cy5vcmRlcikgfHwgIVsnbmV4dCcsICdwcmV2aW91cyddLmluY2x1ZGVzKG9wdHMub3JkZXIudG9Mb3dlckNhc2UoKSkpIHtcbiAgICB0aHJvdyBuZXcgZXJyb3JzLkludmFsaWRBcmd1bWVudEVycm9yKGBUaGUgbWFuZGF0b3J5ICdvcmRlcicgcGFyYW1ldGVyIGlzIGV4cGVjdGVkIHRvIGJlIGVxdWFsIGVpdGhlciB0byAnbmV4dCcgb3IgJ3ByZXZpb3VzJy4gYCArXG4gICAgICBgJyR7b3B0cy5vcmRlcn0nIGlzIGdpdmVuIGluc3RlYWRgKTtcbiAgfVxuICBjb25zdCBwYXJhbXMgPSB7b3JkZXI6IG9wdHMub3JkZXJ9O1xuICBpZiAob3B0cy5vZmZzZXQpIHtcbiAgICBwYXJhbXMub2Zmc2V0ID0gcmVxdWlyZUZsb2F0UGFyYW1ldGVyKCdvZmZzZXQnLCBvcHRzLm9mZnNldCwgJ3NlbGVjdFBpY2tlcldoZWVsVmFsdWUnKTtcbiAgfVxuICByZXR1cm4gYXdhaXQgdGhpcy5wcm94eUNvbW1hbmQoYC93ZGEvcGlja2Vyd2hlZWwvJHtlbGVtZW50SWR9L3NlbGVjdGAsICdQT1NUJywgcGFyYW1zKTtcbn07XG5cbmhlbHBlcnMubW9iaWxlUm90YXRlRWxlbWVudCA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZVJvdGF0ZUVsZW1lbnQgKG9wdHMgPSB7fSkge1xuICBjb25zdCBlbGVtZW50SWQgPSB0b0VsZW1lbnRJZChvcHRzKTtcbiAgaWYgKCFlbGVtZW50SWQpIHtcbiAgICB0aHJvdyBuZXcgZXJyb3JzLkludmFsaWRBcmd1bWVudEVycm9yKCdFbGVtZW50IGlkIGlzIGV4cGVjdGVkIHRvIGJlIHNldCBmb3Igcm90YXRlRWxlbWVudCBtZXRob2QnKTtcbiAgfVxuICBjb25zdCBwYXJhbXMgPSB7XG4gICAgcm90YXRpb246IHJlcXVpcmVGbG9hdFBhcmFtZXRlcigncm90YXRpb24nLCBvcHRzLnJvdGF0aW9uLCAncm90YXRlRWxlbWVudCcpLFxuICAgIHZlbG9jaXR5OiByZXF1aXJlRmxvYXRQYXJhbWV0ZXIoJ3ZlbG9jaXR5Jywgb3B0cy52ZWxvY2l0eSwgJ3JvdGF0ZUVsZW1lbnQnKSxcbiAgfTtcbiAgcmV0dXJuIGF3YWl0IHRoaXMucHJveHlDb21tYW5kKGAvd2RhL2VsZW1lbnQvJHtlbGVtZW50SWR9L3JvdGF0ZWAsICdQT1NUJywgcGFyYW1zKTtcbn07XG5cbmhlbHBlcnMuZ2V0Q29vcmRpbmF0ZXMgPSBhc3luYyBmdW5jdGlvbiBnZXRDb29yZGluYXRlcyAoZ2VzdHVyZSkge1xuICAvLyBkZWZhdWx0c1xuICBsZXQgY29vcmRpbmF0ZXMgPSB7eDogMCwgeTogMCwgYXJlT2Zmc2V0czogZmFsc2V9O1xuXG4gIGxldCBvcHRpb25YID0gbnVsbDtcbiAgaWYgKGdlc3R1cmUub3B0aW9ucy54KSB7XG4gICAgb3B0aW9uWCA9IHJlcXVpcmVGbG9hdFBhcmFtZXRlcigneCcsIGdlc3R1cmUub3B0aW9ucy54LCAnZ2V0Q29vcmRpbmF0ZXMnKTtcbiAgfVxuICBsZXQgb3B0aW9uWSA9IG51bGw7XG4gIGlmIChnZXN0dXJlLm9wdGlvbnMueSkge1xuICAgIG9wdGlvblkgPSByZXF1aXJlRmxvYXRQYXJhbWV0ZXIoJ3knLCBnZXN0dXJlLm9wdGlvbnMueSwgJ2dldENvb3JkaW5hdGVzJyk7XG4gIH1cblxuICAvLyBmaWd1cmUgb3V0IHRoZSBlbGVtZW50IGNvb3JkaW5hdGVzLlxuICBjb25zdCBlbGVtZW50SWQgPSB0b0VsZW1lbnRJZChnZXN0dXJlLm9wdGlvbnMpO1xuICBpZiAoZWxlbWVudElkKSB7XG4gICAgbGV0IHJlY3QgPSBhd2FpdCB0aGlzLmdldEVsZW1lbnRSZWN0KGVsZW1lbnRJZCk7XG4gICAgbGV0IHBvcyA9IHt4OiByZWN0LngsIHk6IHJlY3QueX07XG4gICAgbGV0IHNpemUgPSB7dzogcmVjdC53aWR0aCwgaDogcmVjdC5oZWlnaHR9O1xuXG4gICAgLy8gZGVmYXVsdHNcbiAgICBsZXQgb2Zmc2V0WCA9IDA7XG4gICAgbGV0IG9mZnNldFkgPSAwO1xuXG4gICAgLy8gZ2V0IHRoZSByZWFsIG9mZnNldHNcbiAgICBpZiAob3B0aW9uWCB8fCBvcHRpb25ZKSB7XG4gICAgICBvZmZzZXRYID0gKG9wdGlvblggfHwgMCk7XG4gICAgICBvZmZzZXRZID0gKG9wdGlvblkgfHwgMCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG9mZnNldFggPSAoc2l6ZS53IC8gMik7XG4gICAgICBvZmZzZXRZID0gKHNpemUuaCAvIDIpO1xuICAgIH1cblxuICAgIC8vIGFwcGx5IHRoZSBvZmZzZXRzXG4gICAgY29vcmRpbmF0ZXMueCA9IHBvcy54ICsgb2Zmc2V0WDtcbiAgICBjb29yZGluYXRlcy55ID0gcG9zLnkgKyBvZmZzZXRZO1xuICB9IGVsc2Uge1xuICAgIC8vIG1vdmVUbyBjb29yZGluYXRlcyBhcmUgcGFzc2VkIGluIGFzIG9mZnNldHNcbiAgICBjb29yZGluYXRlcy5hcmVPZmZzZXRzID0gKGdlc3R1cmUuYWN0aW9uID09PSAnbW92ZVRvJyk7XG4gICAgY29vcmRpbmF0ZXMueCA9IChvcHRpb25YIHx8IDApO1xuICAgIGNvb3JkaW5hdGVzLnkgPSAob3B0aW9uWSB8fCAwKTtcbiAgfVxuICByZXR1cm4gY29vcmRpbmF0ZXM7XG59O1xuXG5oZWxwZXJzLmFwcGx5TW92ZVRvT2Zmc2V0ID0gZnVuY3Rpb24gYXBwbHlNb3ZlVG9PZmZzZXQgKGZpcnN0Q29vcmRpbmF0ZXMsIHNlY29uZENvb3JkaW5hdGVzKSB7XG4gIGlmIChzZWNvbmRDb29yZGluYXRlcy5hcmVPZmZzZXRzKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHg6IGZpcnN0Q29vcmRpbmF0ZXMueCArIHNlY29uZENvb3JkaW5hdGVzLngsXG4gICAgICB5OiBmaXJzdENvb3JkaW5hdGVzLnkgKyBzZWNvbmRDb29yZGluYXRlcy55LFxuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHNlY29uZENvb3JkaW5hdGVzO1xuICB9XG59O1xuXG5PYmplY3QuYXNzaWduKGV4dGVuc2lvbnMsIGhlbHBlcnMsIGNvbW1hbmRzKTtcbmV4cG9ydCB7IGV4dGVuc2lvbnMsIGhlbHBlcnMsIGNvbW1hbmRzLCBnZXN0dXJlc0NoYWluVG9TdHJpbmcgfTtcbmV4cG9ydCBkZWZhdWx0IGV4dGVuc2lvbnM7XG4iXSwiZmlsZSI6ImxpYi9jb21tYW5kcy9nZXN0dXJlLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uIn0=
430
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9nZXN0dXJlLmpzIl0sIm5hbWVzIjpbImhlbHBlcnMiLCJleHRlbnNpb25zIiwiY29tbWFuZHMiLCJ0b0VsZW1lbnRJZCIsIm9wdHMiLCJlbGVtZW50IiwibG9nIiwiaW5mbyIsImVsIiwiZWxlbWVudElkIiwidXRpbCIsInVud3JhcEVsZW1lbnQiLCJ0b0VsZW1lbnRPckFwcGxpY2F0aW9uSWQiLCJkcml2ZXIiLCJmaW5kTmF0aXZlRWxlbWVudE9yRWxlbWVudHMiLCJtb3ZlVG8iLCJ4b2Zmc2V0IiwieW9mZnNldCIsImlzV2ViQ29udGV4dCIsIngiLCJ5IiwiZ2V0TG9jYXRpb24iLCJjb29yZHMiLCJjdXJXZWJDb29yZHMiLCJhdG9tc0VsZW1lbnQiLCJ1c2VBdG9tc0VsZW1lbnQiLCJyZWxDb29yZHMiLCJleGVjdXRlQXRvbSIsIl8iLCJpc05pbCIsImN1ckNvb3JkcyIsImVycm9ycyIsIlVua25vd25FeGNlcHRpb24iLCJlbFBvcyIsInJlcXVpcmVGbG9hdFBhcmFtZXRlciIsInBhcmFtTmFtZSIsInBhcmFtVmFsdWUiLCJtZXRob2ROYW1lIiwiaXNVbmRlZmluZWQiLCJJbnZhbGlkQXJndW1lbnRFcnJvciIsInJlc3VsdCIsInBhcnNlRmxvYXQiLCJpc05hTiIsInJlcXVpcmVJbnRQYXJhbWV0ZXIiLCJwYXJzZUludCIsIm1vYmlsZVNoYWtlIiwiaXNTaW11bGF0b3IiLCJVbmtub3duRXJyb3IiLCJkZXZpY2UiLCJzaGFrZSIsImNsaWNrIiwibmF0aXZlQ2xpY2siLCJzZXR0aW5ncyIsImdldFNldHRpbmdzIiwibmF0aXZlV2ViVGFwIiwibmF0aXZlV2ViVGFwU3RyaWN0IiwiZGVidWciLCJnZXN0dXJlc0NoYWluVG9TdHJpbmciLCJnZXN0dXJlcyIsImtleXNUb0luY2x1ZGUiLCJtYXAiLCJpdGVtIiwib3RoZXJLZXlzIiwiZGlmZmVyZW5jZSIsImtleXMiLCJpc0FycmF5IiwiaW50ZXJzZWN0aW9uIiwibGVuZ3RoIiwiYWN0aW9uIiwiaXNQbGFpbk9iamVjdCIsIkpTT04iLCJzdHJpbmdpZnkiLCJqb2luIiwicGVyZm9ybUFjdGlvbnMiLCJhY3Rpb25zIiwicHJlcHJvY2Vzc2VkQWN0aW9ucyIsIk9iamVjdCIsImFzc2lnbiIsInR5cGUiLCJwYXJhbWV0ZXJzIiwicG9pbnRlclR5cGUiLCJtb2RpZmllZEFjdGlvbiIsImNsb25lIiwiZmlsdGVyIiwiaW5uZXJBY3Rpb24iLCJkdXJhdGlvbiIsInByb3h5Q29tbWFuZCIsInJlbGVhc2VBY3Rpb25zIiwid2FybiIsInBlcmZvcm1Ub3VjaCIsImUiLCJlcnJvckFuZFRocm93IiwibWVzc2FnZSIsInBlcmZvcm1NdWx0aUFjdGlvbiIsImkiLCJlbmRwb2ludCIsIm1vYmlsZVNjcm9sbCIsInN3aXBlIiwicGFyYW1zIiwibmFtZSIsImRpcmVjdGlvbiIsImluY2x1ZGVzIiwidG9Mb3dlckNhc2UiLCJtc2ciLCJwcmVkaWNhdGVTdHJpbmciLCJ0b1Zpc2libGUiLCJkaXN0YW5jZSIsIm1vYmlsZVN3aXBlIiwibW9iaWxlUGluY2giLCJzY2FsZSIsInZlbG9jaXR5IiwibW9iaWxlRG91YmxlVGFwIiwibW9iaWxlVHdvRmluZ2VyVGFwIiwibW9iaWxlVG91Y2hBbmRIb2xkIiwibW9iaWxlVGFwIiwibW9iaWxlRHJhZ0Zyb21Ub0ZvckR1cmF0aW9uIiwiZnJvbVgiLCJmcm9tWSIsInRvWCIsInRvWSIsIm1vYmlsZVRhcFdpdGhOdW1iZXJPZlRhcHMiLCJudW1iZXJPZlRhcHMiLCJudW1iZXJPZlRvdWNoZXMiLCJtb2JpbGVTZWxlY3RQaWNrZXJXaGVlbFZhbHVlIiwiaXNTdHJpbmciLCJvcmRlciIsIm9mZnNldCIsIm1vYmlsZVJvdGF0ZUVsZW1lbnQiLCJyb3RhdGlvbiIsImdldENvb3JkaW5hdGVzIiwiZ2VzdHVyZSIsImNvb3JkaW5hdGVzIiwiYXJlT2Zmc2V0cyIsIm9wdGlvblgiLCJvcHRpb25zIiwib3B0aW9uWSIsInJlY3QiLCJnZXRFbGVtZW50UmVjdCIsInBvcyIsInNpemUiLCJ3Iiwid2lkdGgiLCJoIiwiaGVpZ2h0Iiwib2Zmc2V0WCIsIm9mZnNldFkiLCJhcHBseU1vdmVUb09mZnNldCIsImZpcnN0Q29vcmRpbmF0ZXMiLCJzZWNvbmRDb29yZGluYXRlcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBR0EsTUFBTUEsT0FBTyxHQUFHLEVBQWhCO0FBQUEsTUFBb0JDLFVBQVUsR0FBRyxFQUFqQztBQUFBLE1BQXFDQyxRQUFRLEdBQUcsRUFBaEQ7Ozs7O0FBRUEsU0FBU0MsV0FBVCxDQUFzQkMsSUFBSSxHQUFHLEVBQTdCLEVBQWlDO0FBQy9CLE1BQUlBLElBQUksQ0FBQ0MsT0FBVCxFQUFrQjtBQUNoQkMsb0JBQUlDLElBQUosQ0FBVSwrRUFBVjtBQUNEOztBQUNELFFBQU1DLEVBQUUsR0FBR0osSUFBSSxDQUFDSyxTQUFMLElBQWtCTCxJQUFJLENBQUNDLE9BQWxDO0FBQ0EsU0FBT0csRUFBRSxHQUFHRSxvQkFBS0MsYUFBTCxDQUFtQkgsRUFBbkIsQ0FBSCxHQUE0QixJQUFyQztBQUNEOztBQUVELGVBQWVJLHdCQUFmLENBQXlDQyxNQUF6QyxFQUFpRFQsSUFBSSxHQUFHLEVBQXhELEVBQTREO0FBQzFELFNBQU9ELFdBQVcsQ0FBQ0MsSUFBRCxDQUFYLElBQ0ZNLG9CQUFLQyxhQUFMLENBQW1CLE1BQU1FLE1BQU0sQ0FBQ0MsMkJBQVAsQ0FBb0MsWUFBcEMsRUFBa0QsNEJBQWxELEVBQStFLEtBQS9FLENBQXpCLENBREw7QUFFRDs7QUFFRFosUUFBUSxDQUFDYSxNQUFULEdBQWtCLGVBQWVBLE1BQWYsQ0FBdUJQLEVBQXZCLEVBQTJCUSxPQUFPLEdBQUcsQ0FBckMsRUFBd0NDLE9BQU8sR0FBRyxDQUFsRCxFQUFxRDtBQUNyRVQsRUFBQUEsRUFBRSxHQUFHRSxvQkFBS0MsYUFBTCxDQUFtQkgsRUFBbkIsQ0FBTDs7QUFFQSxNQUFJLEtBQUtVLFlBQUwsRUFBSixFQUF5QjtBQUN2QixRQUFJO0FBQUNDLE1BQUFBLENBQUQ7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QUFKLEdBQVE2SCxPQUF4QjtBQUNELEdBckJELE1BcUJPO0FBRUxkLElBQUFBLFdBQVcsQ0FBQ0MsVUFBWixHQUEwQkYsT0FBTyxDQUFDOUQsTUFBUixLQUFtQixRQUE3QztBQUNBK0QsSUFBQUEsV0FBVyxDQUFDaEgsQ0FBWixHQUFpQmtILE9BQU8sSUFBSSxDQUE1QjtBQUNBRixJQUFBQSxXQUFXLENBQUMvRyxDQUFaLEdBQWlCbUgsT0FBTyxJQUFJLENBQTVCO0FBQ0Q7O0FBQ0QsU0FBT0osV0FBUDtBQUNELENBM0NEOztBQTZDQW5JLE9BQU8sQ0FBQ2tKLGlCQUFSLEdBQTRCLFNBQVNBLGlCQUFULENBQTRCQyxnQkFBNUIsRUFBOENDLGlCQUE5QyxFQUFpRTtBQUMzRixNQUFJQSxpQkFBaUIsQ0FBQ2hCLFVBQXRCLEVBQWtDO0FBQ2hDLFdBQU87QUFDTGpILE1BQUFBLENBQUMsRUFBRWdJLGdCQUFnQixDQUFDaEksQ0FBakIsR0FBcUJpSSxpQkFBaUIsQ0FBQ2pJLENBRHJDO0FBRUxDLE1BQUFBLENBQUMsRUFBRStILGdCQUFnQixDQUFDL0gsQ0FBakIsR0FBcUJnSSxpQkFBaUIsQ0FBQ2hJO0FBRnJDLEtBQVA7QUFJRCxHQUxELE1BS087QUFDTCxXQUFPZ0ksaUJBQVA7QUFDRDtBQUNGLENBVEQ7O0FBV0F4RSxNQUFNLENBQUNDLE1BQVAsQ0FBYzVFLFVBQWQsRUFBMEJELE9BQTFCLEVBQW1DRSxRQUFuQztlQUVlRCxVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZXJyb3JzIH0gZnJvbSAnYXBwaXVtLWJhc2UtZHJpdmVyJztcbmltcG9ydCB7IHV0aWwgfSBmcm9tICdhcHBpdW0tc3VwcG9ydCc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IGxvZyBmcm9tICcuLi9sb2dnZXInO1xuXG5cbmNvbnN0IGhlbHBlcnMgPSB7fSwgZXh0ZW5zaW9ucyA9IHt9LCBjb21tYW5kcyA9IHt9O1xuXG5mdW5jdGlvbiB0b0VsZW1lbnRJZCAob3B0cyA9IHt9KSB7XG4gIGlmIChvcHRzLmVsZW1lbnQpIHtcbiAgICBsb2cuaW5mbyhgVGhlICdlbGVtZW50JyBhcmd1bWVudCBuYW1lIGlzIGRlcHJlY2F0ZWQuIENvbnNpZGVyIHVzaW5nICdlbGVtZW50SWQnIGluc3RlYWRgKTtcbiAgfVxuICBjb25zdCBlbCA9IG9wdHMuZWxlbWVudElkIHx8IG9wdHMuZWxlbWVudDtcbiAgcmV0dXJuIGVsID8gdXRpbC51bndyYXBFbGVtZW50KGVsKSA6IG51bGw7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHRvRWxlbWVudE9yQXBwbGljYXRpb25JZCAoZHJpdmVyLCBvcHRzID0ge30pIHtcbiAgcmV0dXJuIHRvRWxlbWVudElkKG9wdHMpXG4gICAgfHwgdXRpbC51bndyYXBFbGVtZW50KGF3YWl0IGRyaXZlci5maW5kTmF0aXZlRWxlbWVudE9yRWxlbWVudHMoYGNsYXNzIG5hbWVgLCBgWENVSUVsZW1lbnRUeXBlQXBwbGljYXRpb25gLCBmYWxzZSkpO1xufVxuXG5jb21tYW5kcy5tb3ZlVG8gPSBhc3luYyBmdW5jdGlvbiBtb3ZlVG8gKGVsLCB4b2Zmc2V0ID0gMCwgeW9mZnNldCA9IDApIHtcbiAgZWwgPSB1dGlsLnVud3JhcEVsZW1lbnQoZWwpO1xuXG4gIGlmICh0aGlzLmlzV2ViQ29udGV4dCgpKSB7XG4gICAgbGV0IHt4LCB5fSA9IGF3YWl0IHRoaXMuZ2V0TG9jYXRpb24oZWwpO1xuICAgIGxldCBjb29yZHMgPSB7XG4gICAgICB4OiB4ICsgeG9mZnNldCxcbiAgICAgIHk6IHkgKyB5b2Zmc2V0XG4gICAgfTtcbiAgICB0aGlzLmN1cldlYkNvb3JkcyA9IGNvb3JkcztcbiAgICBsZXQgYXRvbXNFbGVtZW50ID0gdGhpcy51c2VBdG9tc0VsZW1lbnQoZWwpO1xuICAgIGxldCByZWxDb29yZHMgPSB7eDogeG9mZnNldCwgeTogeW9mZnNldH07XG4gICAgYXdhaXQgdGhpcy5leGVjdXRlQXRvbSgnbW92ZV9tb3VzZScsIFthdG9tc0VsZW1lbnQsIHJlbENvb3Jkc10pO1xuICB9IGVsc2Uge1xuICAgIGlmIChfLmlzTmlsKGVsKSkge1xuICAgICAgaWYgKCF0aGlzLmN1ckNvb3Jkcykge1xuICAgICAgICB0aHJvdyBuZXcgZXJyb3JzLlVua25vd25FeGNlcHRpb24oXG4gICAgICAgICAgJ0N1cnJlbnQgY3Vyc29yIHBvc2l0aW9uIHVua25vd24sIHBsZWFzZSB1c2UgbW92ZVRvIHdpdGggYW4gZWxlbWVudCB0aGUgZmlyc3QgdGltZS4nKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuY3VyQ29vcmRzID0ge1xuICAgICAgICB4OiB0aGlzLmN1ckNvb3Jkcy54ICsgeG9mZnNldCxcbiAgICAgICAgeTogdGhpcy5jdXJDb29yZHMueSArIHlvZmZzZXRcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBlbFBvcyA9IGF3YWl0IHRoaXMuZ2V0TG9jYXRpb24oZWwpO1xuICAgICAgdGhpcy5jdXJDb29yZHMgPSB7XG4gICAgICAgIHg6IGVsUG9zLnggKyB4b2Zmc2V0LFxuICAgICAgICB5OiBlbFBvcy55ICsgeW9mZnNldFxuICAgICAgfTtcbiAgICB9XG4gIH1cbn07XG5cbmZ1bmN0aW9uIHJlcXVpcmVGbG9hdFBhcmFtZXRlciAocGFyYW1OYW1lLCBwYXJhbVZhbHVlLCBtZXRob2ROYW1lKSB7XG4gIGlmIChfLmlzVW5kZWZpbmVkKHBhcmFtVmFsdWUpKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5JbnZhbGlkQXJndW1lbnRFcnJvcihgXCIke3BhcmFtTmFtZX1cIiBwYXJhbWV0ZXIgaXMgbWFuZGF0b3J5IGZvciBcIiR7bWV0aG9kTmFtZX1cIiBjYWxsYCk7XG4gIH1cbiAgY29uc3QgcmVzdWx0ID0gcGFyc2VGbG9hdChwYXJhbVZhbHVlKTtcbiAgaWYgKGlzTmFOKHJlc3VsdCkpIHtcbiAgICB0aHJvdyBuZXcgZXJyb3JzLkludmFsaWRBcmd1bWVudEVycm9yKGBcIiR7cGFyYW1OYW1lfVwiIHBhcmFtZXRlciBzaG91bGQgYmUgYSB2YWxpZCBudW1iZXIuIFwiJHtwYXJhbVZhbHVlfVwiIGlzIGdpdmVuIGluc3RlYWRgKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5mdW5jdGlvbiByZXF1aXJlSW50UGFyYW1ldGVyIChwYXJhbU5hbWUsIHBhcmFtVmFsdWUsIG1ldGhvZE5hbWUpIHtcbiAgaWYgKF8uaXNVbmRlZmluZWQocGFyYW1WYWx1ZSkpIHtcbiAgICB0aHJvdyBuZXcgZXJyb3JzLkludmFsaWRBcmd1bWVudEVycm9yKGBcIiR7cGFyYW1OYW1lfVwiIHBhcmFtZXRlciBpcyBtYW5kYXRvcnkgZm9yIFwiJHttZXRob2ROYW1lfVwiIGNhbGxgKTtcbiAgfVxuICBjb25zdCByZXN1bHQgPSBwYXJzZUludChwYXJhbVZhbHVlLCAxMCk7XG4gIGlmIChpc05hTihyZXN1bHQpKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5JbnZhbGlkQXJndW1lbnRFcnJvcihgXCIke3BhcmFtTmFtZX1cIiBwYXJhbWV0ZXIgc2hvdWxkIGJlIGEgdmFsaWQgaW50ZWdlci4gXCIke3BhcmFtVmFsdWV9XCIgaXMgZ2l2ZW4gaW5zdGVhZGApO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmNvbW1hbmRzLm1vYmlsZVNoYWtlID0gYXN5bmMgZnVuY3Rpb24gbW9iaWxlU2hha2UgKCkge1xuICBpZiAoIXRoaXMuaXNTaW11bGF0b3IoKSkge1xuICAgIHRocm93IG5ldyBlcnJvcnMuVW5rbm93bkVycm9yKCdTaGFrZSBpcyBub3Qgc3VwcG9ydGVkIG9uIHJlYWwgZGV2aWNlcycpO1xuICB9XG4gIGF3YWl0IHRoaXMub3B0cy5kZXZpY2Uuc2hha2UoKTtcbn07XG5cbmNvbW1hbmRzLmNsaWNrID0gYXN5bmMgZnVuY3Rpb24gY2xpY2sgKGVsKSB7XG4gIGlmICghdGhpcy5pc1dlYkNvbnRleHQoKSkge1xuICAgIC8vIHRoZXJlIGFyZSBtdWx0aXBsZSBjb21tYW5kcyB0aGF0IG1hcCBoZXJlLCBzbyBtYW51YWxseSBwcm94eVxuICAgIHJldHVybiBhd2FpdCB0aGlzLm5hdGl2ZUNsaWNrKGVsKTtcbiAgfVxuICBlbCA9IHV0aWwudW53cmFwRWxlbWVudChlbCk7XG4gIGlmICgoYXdhaXQgdGhpcy5zZXR0aW5ncy5nZXRTZXR0aW5ncygpKS5uYXRpdmVXZWJUYXAgfHwgKGF3YWl0IHRoaXMuc2V0dGluZ3MuZ2V0U2V0dGluZ3MoKSkubmF0aXZlV2ViVGFwU3RyaWN0KSB7XG4gICAgLy8gYXRvbXMtYmFzZWQgY2xpY2tzIGRvbid0IGFsd2F5cyB3b3JrIGluIHNhZmFyaSA3XG4gICAgbG9nLmRlYnVnKCdVc2luZyBuYXRpdmUgd2ViIHRhcCcpO1xuICAgIGF3YWl0IHRoaXMubmF0aXZlV2ViVGFwKGVsKTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBhdG9tc0VsZW1lbnQgPSB0aGlzLnVzZUF0b21zRWxlbWVudChlbCk7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuZXhlY3V0ZUF0b20oJ2NsaWNrJywgW2F0b21zRWxlbWVudF0pO1xuICB9XG59O1xuXG5mdW5jdGlvbiBnZXN0dXJlc0NoYWluVG9TdHJpbmcgKGdlc3R1cmVzLCBrZXlzVG9JbmNsdWRlID0gWydvcHRpb25zJ10pIHtcbiAgcmV0dXJuIGdlc3R1cmVzLm1hcCgoaXRlbSkgPT4ge1xuICAgIGxldCBvdGhlcktleXMgPSBfLmRpZmZlcmVuY2UoXy5rZXlzKGl0ZW0pLCBbJ2FjdGlvbiddKTtcbiAgICBvdGhlcktleXMgPSBfLmlzQXJyYXkoa2V5c1RvSW5jbHVkZSkgPyBfLmludGVyc2VjdGlvbihvdGhlcktleXMsIGtleXNUb0luY2x1ZGUpIDogb3RoZXJLZXlzO1xuICAgIGlmIChvdGhlcktleXMubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gYCR7aXRlbS5hY3Rpb259YCArXG4gICAgICAgIGAoJHtfLm1hcChvdGhlcktleXMsICh4KSA9PiB4ICsgJz0nICsgKF8uaXNQbGFpbk9iamVjdChpdGVtW3hdKSA/IEpTT04uc3RyaW5naWZ5KGl0ZW1beF0pIDogaXRlbVt4XSkpLmpvaW4oJywgJyl9KWA7XG4gICAgfVxuICAgIHJldHVybiBpdGVtLmFjdGlvbjtcbiAgfSkuam9pbignLScpO1xufVxuXG5jb21tYW5kcy5wZXJmb3JtQWN0aW9ucyA9IGFzeW5jIGZ1bmN0aW9uIHBlcmZvcm1BY3Rpb25zIChhY3Rpb25zKSB7XG4gIGxvZy5kZWJ1ZyhgUmVjZWl2ZWQgdGhlIGZvbGxvd2luZyBXM0MgYWN0aW9uczogJHtKU09OLnN0cmluZ2lmeShhY3Rpb25zLCBudWxsLCAnICAnKX1gKTtcbiAgLy8gVGhpcyBpcyBtYW5kYXRvcnksIHNpbmNlIFdEQSBvbmx5IHN1cHBvcnRzIFRPVUNIIHBvaW50ZXIgdHlwZVxuICAvLyBhbmQgU2VsZW5pdW0gQVBJIHVzZXMgTU9VU0UgYXMgdGhlIGRlZmF1bHQgb25lXG4gIGNvbnN0IHByZXByb2Nlc3NlZEFjdGlvbnMgPSBhY3Rpb25zXG4gICAgLm1hcCgoYWN0aW9uKSA9PiBPYmplY3QuYXNzaWduKHt9LCBhY3Rpb24sIGFjdGlvbi50eXBlID09PSAncG9pbnRlcicgPyB7XG4gICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgIHBvaW50ZXJUeXBlOiAndG91Y2gnXG4gICAgICB9XG4gICAgfSA6IHt9KSlcbiAgICAubWFwKChhY3Rpb24pID0+IHtcbiAgICAgIGNvbnN0IG1vZGlmaWVkQWN0aW9uID0gXy5jbG9uZShhY3Rpb24pIHx8IHt9O1xuICAgICAgLy8gU2VsZW5pdW0gQVBJIHVuZXhwZWN0ZWRseSBpbnNlcnRzIHplcm8gcGF1c2VzLCB3aGljaCBhcmUgbm90IHN1cHBvcnRlZCBieSBXREFcbiAgICAgIG1vZGlmaWVkQWN0aW9uLmFjdGlvbnMgPSAoYWN0aW9uLmFjdGlvbnMgfHwgW10pXG4gICAgICAgIC5maWx0ZXIoKGlubmVyQWN0aW9uKSA9PiAhKGlubmVyQWN0aW9uLnR5cGUgPT09ICdwYXVzZScgJiYgaW5uZXJBY3Rpb24uZHVyYXRpb24gPT09IDApKTtcbiAgICAgIHJldHVybiBtb2RpZmllZEFjdGlvbjtcbiAgICB9KTtcbiAgbG9nLmRlYnVnKGBQcmVwcm9jZXNzZWQgYWN0aW9uczogJHtKU09OLnN0cmluZ2lmeShwcmVwcm9jZXNzZWRBY3Rpb25zLCBudWxsLCAnICAnKX1gKTtcbiAgcmV0dXJuIGF3YWl0IHRoaXMucHJveHlDb21tYW5kKCcvYWN0aW9ucycsICdQT1NUJywge2FjdGlvbnM6IHByZXByb2Nlc3NlZEFjdGlvbnN9KTtcbn07XG5cbmNvbW1hbmRzLnJlbGVhc2VBY3Rpb25zID0gZnVuY3Rpb24gcmVsZWFzZUFjdGlvbnMgKCkge1xuICBsb2cud2FybignT24gdGhpcyBwbGF0Zm9ybSwgcmVsZWFzZUFjdGlvbnMgaXMgYSBuby1vcCcpO1xufTtcblxuY29tbWFuZHMucGVyZm9ybVRvdWNoID0gYXN5bmMgZnVuY3Rpb24gcGVyZm9ybVRvdWNoIChnZXN0dXJlcykge1xuICBsb2cuZGVidWcoYFJlY2VpdmVkIHRoZSBmb2xsb3dpbmcgdG91Y2ggYWN0aW9uOiAke2dlc3R1cmVzQ2hhaW5Ub1N0cmluZyhnZXN0dXJlcyl9YCk7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMucHJveHlDb21tYW5kKCcvd2RhL3RvdWNoL3BlcmZvcm0nLCAnUE9TVCcsIHthY3Rpb25zOiBnZXN0dXJlc30pO1xuICB9IGNhdGNoIChlKSB7XG4gICAgaWYgKCF0aGlzLmlzV2ViQ29udGV4dCgpKSB7XG4gICAgICB0aHJvdyBlO1xuICAgIH1cbiAgICBsb2cuZXJyb3JBbmRUaHJvdygnVGhlIFRvdWNoIEFQSSBpcyBhaW1lZCBmb3IgdXNhZ2UgaW4gTkFUSVZFIGNvbnRleHQuICcgK1xuICAgICAgJ0NvbnNpZGVyIHVzaW5nIFwiZXhlY3V0ZVwiIEFQSSB3aXRoIGN1c3RvbSBldmVudHMgdHJpZ2dlciBzY3JpcHQgJyArXG4gICAgICBgdG8gZW11bGF0ZSB0b3VjaCBldmVudHMgYmVpbmcgaW4gV0VCVklFVyBjb250ZXh0LiBPcmlnaW5hbCBlcnJvcjogJHtlLm1lc3NhZ2V9YCk7XG4gIH1cbn07XG5cbmNvbW1hbmRzLnBlcmZvcm1NdWx0aUFjdGlvbiA9IGFzeW5jIGZ1bmN0aW9uIHBlcmZvcm1NdWx0aUFjdGlvbiAoYWN0aW9ucykge1xuICBsb2cuZGVidWcoYFJlY2VpdmVkIHRoZSBmb2xsb3dpbmcgbXVsdGkgdG91Y2ggYWN0aW9uOmApO1xuICBmb3IgKGxldCBpIGluIGFjdGlvbnMpIHtcbiAgICBsb2cuZGVidWcoYCAgICAke3BhcnNlSW50KGksIDEwKSArIDF9OiAke18ubWFwKGFjdGlvbnNbaV0sICdhY3Rpb24nKS5qb2luKCctJyl9YCk7XG4gIH1cbiAgdHJ5IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5wcm94eUNvbW1hbmQoJy93ZGEvdG91Y2gvbXVsdGkvcGVyZm9ybScsICdQT1NUJywge2FjdGlvbnN9KTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGlmICghdGhpcy5pc1dlYkNvbnRleHQoKSkge1xuICAgICAgdGhyb3cgZTtcbiAgICB9XG4gICAgbG9nLmVycm9yQW5kVGhyb3coJ1RoZSBNdWx0aVRvdWNoIEFQSSBpcyBhaW1lZCBmb3IgdXNhZ2UgaW4gTkFUSVZFIGNvbnRleHQuICcgK1xuICAgICAgJ0NvbnNpZGVyIHVzaW5nIFwiZXhlY3V0ZVwiIEFQSSB3aXRoIGN1c3RvbSBldmVudHMgdHJpZ2dlciBzY3JpcHQgJyArXG4gICAgICBgdG8gZW11bGF0ZSBtdWx0aXRvdWNoIGV2ZW50cyBiZWluZyBpbiBXRUJWSUVXIGNvbnRleHQuIE9yaWdpbmFsIGVycm9yOiAke2UubWVzc2FnZX1gKTtcbiAgfVxufTtcblxuY29tbWFuZHMubmF0aXZlQ2xpY2sgPSBhc3luYyBmdW5jdGlvbiBuYXRpdmVDbGljayAoZWwpIHtcbiAgZWwgPSB1dGlsLnVud3JhcEVsZW1lbnQoZWwpO1xuICBsZXQgZW5kcG9pbnQgPSBgL2VsZW1lbnQvJHtlbH0vY2xpY2tgO1xuICByZXR1cm4gYXdhaXQgdGhpcy5wcm94eUNvbW1hbmQoZW5kcG9pbnQsICdQT1NUJywge30pO1xufTtcblxuLypcbiAqIFNlZSBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svV2ViRHJpdmVyQWdlbnQvYmxvYi9tYXN0ZXIvV2ViRHJpdmVyQWdlbnRMaWIvQ29tbWFuZHMvRkJFbGVtZW50Q29tbWFuZHMubVxuICogdG8gZ2V0IHRoZSBpbmZvIGFib3V0IGF2YWlsYWJsZSBXREEgZ2VzdHVyZXMgQVBJXG4gKlxuICogU2VlIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9yZWZlcmVuY2UveGN0ZXN0L3hjdWllbGVtZW50IGFuZFxuICogaHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL3JlZmVyZW5jZS94Y3Rlc3QveGN1aWNvb3JkaW5hdGUgdG8gZ2V0IHRoZSBkZXRhaWxlZCBkZXNjcmlwdGlvbiBvZlxuICogYWxsIFhDVGVzdCBnZXN0dXJlc1xuKi9cblxuaGVscGVycy5tb2JpbGVTY3JvbGwgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVTY3JvbGwgKG9wdHMgPSB7fSwgc3dpcGUgPSBmYWxzZSkge1xuICAvLyBXREEgc3VwcG9ydHMgZm91ciBzY3JvbGxpbmcgc3RyYXRlZ2llczogcHJlZGljYXRpb24gYmFzZWQgb24gbmFtZSwgZGlyZWN0aW9uLFxuICAvLyBwcmVkaWNhdGVTdHJpbmcsIGFuZCB0b1Zpc2libGUsIGluIHRoYXQgb3JkZXIuIFN3aXBpbmcgcmVxdWlyZXMgZGlyZWN0aW9uLlxuICBjb25zdCBwYXJhbXMgPSB7fTtcbiAgaWYgKG9wdHMubmFtZSAmJiAhc3dpcGUpIHtcbiAgICBwYXJhbXMubmFtZSA9IG9wdHMubmFtZTtcbiAgfSBlbHNlIGlmIChvcHRzLmRpcmVjdGlvbikge1xuICAgIGlmICghWyd1cCcsICdkb3duJywgJ2xlZnQnLCAncmlnaHQnXS5pbmNsdWRlcyhvcHRzLmRpcmVjdGlvbi50b0xvd2VyQ2FzZSgpKSkge1xuICAgICAgbGV0IG1zZyA9ICdEaXJlY3Rpb24gbXVzdCBiZSB1cCwgZG93biwgbGVmdCBvciByaWdodCc7XG4gICAgICBsb2cuZXJyb3JBbmRUaHJvdyhtc2cpO1xuICAgIH1cbiAgICBwYXJhbXMuZGlyZWN0aW9uID0gb3B0cy5kaXJlY3Rpb247XG4gIH0gZWxzZSBpZiAob3B0cy5wcmVkaWNhdGVTdHJpbmcgJiYgIXN3aXBlKSB7XG4gICAgcGFyYW1zLnByZWRpY2F0ZVN0cmluZyA9IG9wdHMucHJlZGljYXRlU3RyaW5nO1xuICB9IGVsc2UgaWYgKG9wdHMudG9WaXNpYmxlICYmICFzd2lwZSkge1xuICAgIHBhcmFtcy50b1Zpc2libGUgPSBvcHRzLnRvVmlzaWJsZTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBtc2cgPSBzd2lwZVxuICAgICAgPyAnTW9iaWxlIHN3aXBlIHJlcXVpcmVzIGRpcmVjdGlvbidcbiAgICAgIDogJ01vYmlsZSBzY3JvbGwgc3VwcG9ydHMgdGhlIGZvbGxvd2luZyBzdHJhdGVnaWVzOiBuYW1lLCBkaXJlY3Rpb24sIHByZWRpY2F0ZVN0cmluZywgYW5kIHRvVmlzaWJsZS4gU3BlY2lmeSBvbmUgb2YgdGhlc2UnO1xuICAgIHRocm93IG5ldyBlcnJvcnMuSW52YWxpZEFyZ3VtZW50RXJyb3IobXNnKTtcbiAgfVxuXG4gIC8vIHdlIGNhbiBhbHNvIG9wdGlvbmFsbHkgcGFzcyBhIGRpc3RhbmNlIHdoaWNoIGFwcGVhcnMgdG8gYmUgYSByYXRpbyBvZlxuICAvLyBzY3JlZW4gaGVpZ2h0LCBzbyAxLjAgbWVhbnMgYSBmdWxsIHNjcmVlbidzIHdvcnRoIG9mIHNjcm9sbGluZ1xuICBpZiAoIXN3aXBlICYmIG9wdHMuZGlzdGFuY2UpIHtcbiAgICBwYXJhbXMuZGlzdGFuY2UgPSBvcHRzLmRpc3RhbmNlO1xuICB9XG5cbiAgY29uc3QgZWxlbWVudElkID0gYXdhaXQgdG9FbGVtZW50T3JBcHBsaWNhdGlvbklkKHRoaXMsIG9wdHMpO1xuICBjb25zdCBlbmRwb2ludCA9IGAvd2RhL2VsZW1lbnQvJHtlbGVtZW50SWR9LyR7c3dpcGUgPyAnc3dpcGUnIDogJ3Njcm9sbCd9YDtcbiAgcmV0dXJuIGF3YWl0IHRoaXMucHJveHlDb21tYW5kKGVuZHBvaW50LCAnUE9TVCcsIHBhcmFtcyk7XG59O1xuXG5oZWxwZXJzLm1vYmlsZVN3aXBlID0gYXN5bmMgZnVuY3Rpb24gbW9iaWxlU3dpcGUgKG9wdHMgPSB7fSkge1xuICByZXR1cm4gYXdhaXQgdGhpcy5tb2JpbGVTY3JvbGwob3B0cywgdHJ1ZSk7XG59O1xuXG5oZWxwZXJzLm1vYmlsZVBpbmNoID0gYXN5bmMgZnVuY3Rpb24gbW9iaWxlUGluY2ggKG9wdHMgPSB7fSkge1xuICBjb25zdCBwYXJhbXMgPSB7XG4gICAgc2NhbGU6IHJlcXVpcmVGbG9hdFBhcmFtZXRlcignc2NhbGUnLCBvcHRzLnNjYWxlLCAncGluY2gnKSxcbiAgICB2ZWxvY2l0eTogcmVxdWlyZUZsb2F0UGFyYW1ldGVyKCd2ZWxvY2l0eScsIG9wdHMudmVsb2NpdHksICdwaW5jaCcpXG4gIH07XG4gIGNvbnN0IGVsZW1lbnRJZCA9IGF3YWl0IHRvRWxlbWVudE9yQXBwbGljYXRpb25JZCh0aGlzLCBvcHRzKTtcbiAgcmV0dXJuIGF3YWl0IHRoaXMucHJveHlDb21tYW5kKGAvd2RhL2VsZW1lbnQvJHtlbGVtZW50SWR9L3BpbmNoYCwgJ1BPU1QnLCBwYXJhbXMpO1xufTtcblxuaGVscGVycy5tb2JpbGVEb3VibGVUYXAgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVEb3VibGVUYXAgKG9wdHMgPSB7fSkge1xuICBjb25zdCBlbGVtZW50SWQgPSB0b0VsZW1lbnRJZChvcHRzKTtcbiAgaWYgKGVsZW1lbnRJZCkge1xuICAgIC8vIERvdWJsZSB0YXAgZWxlbWVudFxuICAgIHJldHVybiBhd2FpdCB0aGlzLnByb3h5Q29tbWFuZChgL3dkYS9lbGVtZW50LyR7ZWxlbWVudElkfS9kb3VibGVUYXBgLCAnUE9TVCcpO1xuICB9XG4gIC8vIERvdWJsZSB0YXAgY29vcmRpbmF0ZXNcbiAgY29uc3QgcGFyYW1zID0ge1xuICAgIHg6IHJlcXVpcmVGbG9hdFBhcmFtZXRlcigneCcsIG9wdHMueCwgJ2RvdWJsZVRhcCcpLFxuICAgIHk6IHJlcXVpcmVGbG9hdFBhcmFtZXRlcigneScsIG9wdHMueSwgJ2RvdWJsZVRhcCcpXG4gIH07XG4gIHJldHVybiBhd2FpdCB0aGlzLnByb3h5Q29tbWFuZCgnL3dkYS9kb3VibGVUYXAnLCAnUE9TVCcsIHBhcmFtcyk7XG59O1xuXG5oZWxwZXJzLm1vYmlsZVR3b0ZpbmdlclRhcCA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZVR3b0ZpbmdlclRhcCAob3B0cyA9IHt9KSB7XG4gIGNvbnN0IGVsZW1lbnRJZCA9IGF3YWl0IHRvRWxlbWVudE9yQXBwbGljYXRpb25JZCh0aGlzLCBvcHRzKTtcbiAgcmV0dXJuIGF3YWl0IHRoaXMucHJveHlDb21tYW5kKGAvd2RhL2VsZW1lbnQvJHtlbGVtZW50SWR9L3R3b0ZpbmdlclRhcGAsICdQT1NUJyk7XG59O1xuXG5oZWxwZXJzLm1vYmlsZVRvdWNoQW5kSG9sZCA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZVRvdWNoQW5kSG9sZCAob3B0cyA9IHt9KSB7XG4gIGNvbnN0IHBhcmFtcyA9IHtcbiAgICBkdXJhdGlvbjogcmVxdWlyZUZsb2F0UGFyYW1ldGVyKCdkdXJhdGlvbicsIG9wdHMuZHVyYXRpb24sICd0b3VjaEFuZEhvbGQnKVxuICB9O1xuICBjb25zdCBlbGVtZW50SWQgPSB0b0VsZW1lbnRJZChvcHRzKTtcbiAgaWYgKGVsZW1lbnRJZCkge1xuICAgIC8vIExvbmcgdGFwIGVsZW1lbnRcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5wcm94eUNvbW1hbmQoYC93ZGEvZWxlbWVudC8ke2VsZW1lbnRJZH0vdG91Y2hBbmRIb2xkYCwgJ1BPU1QnLCBwYXJhbXMpO1xuICB9XG4gIC8vIExvbmcgdGFwIGNvb3JkaW5hdGVzXG4gIHBhcmFtcy54ID0gcmVxdWlyZUZsb2F0UGFyYW1ldGVyKCd4Jywgb3B0cy54LCAndG91Y2hBbmRIb2xkJyk7XG4gIHBhcmFtcy55ID0gcmVxdWlyZUZsb2F0UGFyYW1ldGVyKCd5Jywgb3B0cy55LCAndG91Y2hBbmRIb2xkJyk7XG4gIHJldHVybiBhd2FpdCB0aGlzLnByb3h5Q29tbWFuZCgnL3dkYS90b3VjaEFuZEhvbGQnLCAnUE9TVCcsIHBhcmFtcyk7XG59O1xuXG5oZWxwZXJzLm1vYmlsZVRhcCA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZVRhcCAob3B0cyA9IHt9KSB7XG4gIGNvbnN0IHBhcmFtcyA9IHtcbiAgICB4OiByZXF1aXJlRmxvYXRQYXJhbWV0ZXIoJ3gnLCBvcHRzLngsICd0YXAnKSxcbiAgICB5OiByZXF1aXJlRmxvYXRQYXJhbWV0ZXIoJ3knLCBvcHRzLnksICd0YXAnKVxuICB9O1xuICBjb25zdCBlbGVtZW50SWQgPSB0b0VsZW1lbnRJZChvcHRzKSB8fCAnMCc7XG4gIHJldHVybiBhd2FpdCB0aGlzLnByb3h5Q29tbWFuZChgL3dkYS90YXAvJHtlbGVtZW50SWR9YCwgJ1BPU1QnLCBwYXJhbXMpO1xufTtcblxuaGVscGVycy5tb2JpbGVEcmFnRnJvbVRvRm9yRHVyYXRpb24gPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVEcmFnRnJvbVRvRm9yRHVyYXRpb24gKG9wdHMgPSB7fSkge1xuICBjb25zdCBwYXJhbXMgPSB7XG4gICAgZHVyYXRpb246IHJlcXVpcmVGbG9hdFBhcmFtZXRlcignZHVyYXRpb24nLCBvcHRzLmR1cmF0aW9uLCAnZHJhZ0Zyb21Ub0ZvckR1cmF0aW9uJyksXG4gICAgZnJvbVg6IHJlcXVpcmVGbG9hdFBhcmFtZXRlcignZnJvbVgnLCBvcHRzLmZyb21YLCAnZHJhZ0Zyb21Ub0ZvckR1cmF0aW9uJyksXG4gICAgZnJvbVk6IHJlcXVpcmVGbG9hdFBhcmFtZXRlcignZnJvbVknLCBvcHRzLmZyb21ZLCAnZHJhZ0Zyb21Ub0ZvckR1cmF0aW9uJyksXG4gICAgdG9YOiByZXF1aXJlRmxvYXRQYXJhbWV0ZXIoJ3RvWCcsIG9wdHMudG9YLCAnZHJhZ0Zyb21Ub0ZvckR1cmF0aW9uJyksXG4gICAgdG9ZOiByZXF1aXJlRmxvYXRQYXJhbWV0ZXIoJ3RvWScsIG9wdHMudG9ZLCAnZHJhZ0Zyb21Ub0ZvckR1cmF0aW9uJylcbiAgfTtcbiAgY29uc3QgZWxlbWVudElkID0gdG9FbGVtZW50SWQob3B0cyk7XG4gIHJldHVybiBlbGVtZW50SWRcbiAgICAvLyBEcmFnIGVsZW1lbnRcbiAgICA/IGF3YWl0IHRoaXMucHJveHlDb21tYW5kKGAvd2RhL2VsZW1lbnQvJHtlbGVtZW50SWR9L2RyYWdmcm9tdG9mb3JkdXJhdGlvbmAsICdQT1NUJywgcGFyYW1zKVxuICAgIC8vIERyYWcgY29vcmRpbmF0ZXNcbiAgICA6IGF3YWl0IHRoaXMucHJveHlDb21tYW5kKCcvd2RhL2RyYWdmcm9tdG9mb3JkdXJhdGlvbicsICdQT1NUJywgcGFyYW1zKTtcbn07XG5cbmhlbHBlcnMubW9iaWxlVGFwV2l0aE51bWJlck9mVGFwcyA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZVRhcFdpdGhOdW1iZXJPZlRhcHMgKG9wdHMgPSB7fSkge1xuICBjb25zdCBlbGVtZW50SWQgPSB0b0VsZW1lbnRJZChvcHRzKTtcbiAgaWYgKCFlbGVtZW50SWQpIHtcbiAgICB0aHJvdyBuZXcgZXJyb3JzLkludmFsaWRBcmd1bWVudEVycm9yKCdFbGVtZW50IGlkIGlzIGV4cGVjdGVkIHRvIGJlIHNldCBmb3IgdGFwV2l0aE51bWJlck9mVGFwcyBtZXRob2QnKTtcbiAgfVxuICBjb25zdCBwYXJhbXMgPSB7XG4gICAgbnVtYmVyT2ZUYXBzOiByZXF1aXJlSW50UGFyYW1ldGVyKCdudW1iZXJPZlRhcHMnLCBvcHRzLm51bWJlck9mVGFwcywgJ3RhcFdpdGhOdW1iZXJPZlRhcHMnKSxcbiAgICBudW1iZXJPZlRvdWNoZXM6IHJlcXVpcmVJbnRQYXJhbWV0ZXIoJ251bWJlck9mVG91Y2hlcycsIG9wdHMubnVtYmVyT2ZUb3VjaGVzLCAndGFwV2l0aE51bWJlck9mVGFwcycpLFxuICB9O1xuICByZXR1cm4gYXdhaXQgdGhpcy5wcm94eUNvbW1hbmQoYC93ZGEvZWxlbWVudC8ke2VsZW1lbnRJZH0vdGFwV2l0aE51bWJlck9mVGFwc2AsICdQT1NUJywgcGFyYW1zKTtcbn07XG5cbmhlbHBlcnMubW9iaWxlU2VsZWN0UGlja2VyV2hlZWxWYWx1ZSA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZVNlbGVjdFBpY2tlcldoZWVsVmFsdWUgKG9wdHMgPSB7fSkge1xuICBjb25zdCBlbGVtZW50SWQgPSB0b0VsZW1lbnRJZChvcHRzKTtcbiAgaWYgKCFlbGVtZW50SWQpIHtcbiAgICB0aHJvdyBuZXcgZXJyb3JzLkludmFsaWRBcmd1bWVudEVycm9yKCdFbGVtZW50IGlkIGlzIGV4cGVjdGVkIHRvIGJlIHNldCBmb3Igc2VsZWN0UGlja2VyV2hlZWxWYWx1ZSBtZXRob2QnKTtcbiAgfVxuICBpZiAoIV8uaXNTdHJpbmcob3B0cy5vcmRlcikgfHwgIVsnbmV4dCcsICdwcmV2aW91cyddLmluY2x1ZGVzKG9wdHMub3JkZXIudG9Mb3dlckNhc2UoKSkpIHtcbiAgICB0aHJvdyBuZXcgZXJyb3JzLkludmFsaWRBcmd1bWVudEVycm9yKGBUaGUgbWFuZGF0b3J5ICdvcmRlcicgcGFyYW1ldGVyIGlzIGV4cGVjdGVkIHRvIGJlIGVxdWFsIGVpdGhlciB0byAnbmV4dCcgb3IgJ3ByZXZpb3VzJy4gYCArXG4gICAgICBgJyR7b3B0cy5vcmRlcn0nIGlzIGdpdmVuIGluc3RlYWRgKTtcbiAgfVxuICBjb25zdCBwYXJhbXMgPSB7b3JkZXI6IG9wdHMub3JkZXJ9O1xuICBpZiAob3B0cy5vZmZzZXQpIHtcbiAgICBwYXJhbXMub2Zmc2V0ID0gcmVxdWlyZUZsb2F0UGFyYW1ldGVyKCdvZmZzZXQnLCBvcHRzLm9mZnNldCwgJ3NlbGVjdFBpY2tlcldoZWVsVmFsdWUnKTtcbiAgfVxuICByZXR1cm4gYXdhaXQgdGhpcy5wcm94eUNvbW1hbmQoYC93ZGEvcGlja2Vyd2hlZWwvJHtlbGVtZW50SWR9L3NlbGVjdGAsICdQT1NUJywgcGFyYW1zKTtcbn07XG5cbmhlbHBlcnMubW9iaWxlUm90YXRlRWxlbWVudCA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZVJvdGF0ZUVsZW1lbnQgKG9wdHMgPSB7fSkge1xuICBjb25zdCBlbGVtZW50SWQgPSB0b0VsZW1lbnRJZChvcHRzKTtcbiAgaWYgKCFlbGVtZW50SWQpIHtcbiAgICB0aHJvdyBuZXcgZXJyb3JzLkludmFsaWRBcmd1bWVudEVycm9yKCdFbGVtZW50IGlkIGlzIGV4cGVjdGVkIHRvIGJlIHNldCBmb3Igcm90YXRlRWxlbWVudCBtZXRob2QnKTtcbiAgfVxuICBjb25zdCBwYXJhbXMgPSB7XG4gICAgcm90YXRpb246IHJlcXVpcmVGbG9hdFBhcmFtZXRlcigncm90YXRpb24nLCBvcHRzLnJvdGF0aW9uLCAncm90YXRlRWxlbWVudCcpLFxuICAgIHZlbG9jaXR5OiByZXF1aXJlRmxvYXRQYXJhbWV0ZXIoJ3ZlbG9jaXR5Jywgb3B0cy52ZWxvY2l0eSwgJ3JvdGF0ZUVsZW1lbnQnKSxcbiAgfTtcbiAgcmV0dXJuIGF3YWl0IHRoaXMucHJveHlDb21tYW5kKGAvd2RhL2VsZW1lbnQvJHtlbGVtZW50SWR9L3JvdGF0ZWAsICdQT1NUJywgcGFyYW1zKTtcbn07XG5cbmhlbHBlcnMuZ2V0Q29vcmRpbmF0ZXMgPSBhc3luYyBmdW5jdGlvbiBnZXRDb29yZGluYXRlcyAoZ2VzdHVyZSkge1xuICAvLyBkZWZhdWx0c1xuICBsZXQgY29vcmRpbmF0ZXMgPSB7eDogMCwgeTogMCwgYXJlT2Zmc2V0czogZmFsc2V9O1xuXG4gIGxldCBvcHRpb25YID0gbnVsbDtcbiAgaWYgKGdlc3R1cmUub3B0aW9ucy54KSB7XG4gICAgb3B0aW9uWCA9IHJlcXVpcmVGbG9hdFBhcmFtZXRlcigneCcsIGdlc3R1cmUub3B0aW9ucy54LCAnZ2V0Q29vcmRpbmF0ZXMnKTtcbiAgfVxuICBsZXQgb3B0aW9uWSA9IG51bGw7XG4gIGlmIChnZXN0dXJlLm9wdGlvbnMueSkge1xuICAgIG9wdGlvblkgPSByZXF1aXJlRmxvYXRQYXJhbWV0ZXIoJ3knLCBnZXN0dXJlLm9wdGlvbnMueSwgJ2dldENvb3JkaW5hdGVzJyk7XG4gIH1cblxuICAvLyBmaWd1cmUgb3V0IHRoZSBlbGVtZW50IGNvb3JkaW5hdGVzLlxuICBjb25zdCBlbGVtZW50SWQgPSB0b0VsZW1lbnRJZChnZXN0dXJlLm9wdGlvbnMpO1xuICBpZiAoZWxlbWVudElkKSB7XG4gICAgbGV0IHJlY3QgPSBhd2FpdCB0aGlzLmdldEVsZW1lbnRSZWN0KGVsZW1lbnRJZCk7XG4gICAgbGV0IHBvcyA9IHt4OiByZWN0LngsIHk6IHJlY3QueX07XG4gICAgbGV0IHNpemUgPSB7dzogcmVjdC53aWR0aCwgaDogcmVjdC5oZWlnaHR9O1xuXG4gICAgLy8gZGVmYXVsdHNcbiAgICBsZXQgb2Zmc2V0WCA9IDA7XG4gICAgbGV0IG9mZnNldFkgPSAwO1xuXG4gICAgLy8gZ2V0IHRoZSByZWFsIG9mZnNldHNcbiAgICBpZiAob3B0aW9uWCB8fCBvcHRpb25ZKSB7XG4gICAgICBvZmZzZXRYID0gKG9wdGlvblggfHwgMCk7XG4gICAgICBvZmZzZXRZID0gKG9wdGlvblkgfHwgMCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG9mZnNldFggPSAoc2l6ZS53IC8gMik7XG4gICAgICBvZmZzZXRZID0gKHNpemUuaCAvIDIpO1xuICAgIH1cblxuICAgIC8vIGFwcGx5IHRoZSBvZmZzZXRzXG4gICAgY29vcmRpbmF0ZXMueCA9IHBvcy54ICsgb2Zmc2V0WDtcbiAgICBjb29yZGluYXRlcy55ID0gcG9zLnkgKyBvZmZzZXRZO1xuICB9IGVsc2Uge1xuICAgIC8vIG1vdmVUbyBjb29yZGluYXRlcyBhcmUgcGFzc2VkIGluIGFzIG9mZnNldHNcbiAgICBjb29yZGluYXRlcy5hcmVPZmZzZXRzID0gKGdlc3R1cmUuYWN0aW9uID09PSAnbW92ZVRvJyk7XG4gICAgY29vcmRpbmF0ZXMueCA9IChvcHRpb25YIHx8IDApO1xuICAgIGNvb3JkaW5hdGVzLnkgPSAob3B0aW9uWSB8fCAwKTtcbiAgfVxuICByZXR1cm4gY29vcmRpbmF0ZXM7XG59O1xuXG5oZWxwZXJzLmFwcGx5TW92ZVRvT2Zmc2V0ID0gZnVuY3Rpb24gYXBwbHlNb3ZlVG9PZmZzZXQgKGZpcnN0Q29vcmRpbmF0ZXMsIHNlY29uZENvb3JkaW5hdGVzKSB7XG4gIGlmIChzZWNvbmRDb29yZGluYXRlcy5hcmVPZmZzZXRzKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHg6IGZpcnN0Q29vcmRpbmF0ZXMueCArIHNlY29uZENvb3JkaW5hdGVzLngsXG4gICAgICB5OiBmaXJzdENvb3JkaW5hdGVzLnkgKyBzZWNvbmRDb29yZGluYXRlcy55LFxuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHNlY29uZENvb3JkaW5hdGVzO1xuICB9XG59O1xuXG5PYmplY3QuYXNzaWduKGV4dGVuc2lvbnMsIGhlbHBlcnMsIGNvbW1hbmRzKTtcbmV4cG9ydCB7IGV4dGVuc2lvbnMsIGhlbHBlcnMsIGNvbW1hbmRzLCBnZXN0dXJlc0NoYWluVG9TdHJpbmcgfTtcbmV4cG9ydCBkZWZhdWx0IGV4dGVuc2lvbnM7XG4iXSwiZmlsZSI6ImxpYi9jb21tYW5kcy9nZXN0dXJlLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uIn0=
@@ -130,6 +130,10 @@ commands.performActions = async function performActions (actions) {
130
130
  return await this.proxyCommand('/actions', 'POST', {actions: preprocessedActions});
131
131
  };
132
132
 
133
+ commands.releaseActions = function releaseActions () {
134
+ log.warn('On this platform, releaseActions is a no-op');
135
+ };
136
+
133
137
  commands.performTouch = async function performTouch (gestures) {
134
138
  log.debug(`Received the following touch action: ${gesturesChainToString(gestures)}`);
135
139
  try {
package/package.json CHANGED
@@ -8,7 +8,7 @@
8
8
  "xcuitest",
9
9
  "xctest"
10
10
  ],
11
- "version": "3.49.1",
11
+ "version": "3.50.0",
12
12
  "author": "appium",
13
13
  "license": "Apache-2.0",
14
14
  "repository": {