appium-android-driver 5.0.13 → 5.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/index.js +2 -28
- package/build/lib/android-helpers.js +2 -2
- package/build/lib/bootstrap.js +6 -6
- package/build/lib/commands/actions.js +2 -2
- package/build/lib/commands/alert.js +6 -6
- package/build/lib/commands/app-management.js +27 -14
- package/build/lib/commands/context.js +4 -4
- package/build/lib/commands/element.js +2 -2
- package/build/lib/commands/emu-console.js +3 -3
- package/build/lib/commands/execute.js +5 -5
- package/build/lib/commands/file-actions.js +7 -7
- package/build/lib/commands/find.js +5 -5
- package/build/lib/commands/general.js +7 -7
- package/build/lib/commands/ime.js +3 -3
- package/build/lib/commands/intent.js +7 -7
- package/build/lib/commands/log.js +5 -5
- package/build/lib/commands/network.js +3 -3
- package/build/lib/commands/performance.js +1 -1
- package/build/lib/commands/recordscreen.js +2 -2
- package/build/lib/commands/shell.js +4 -4
- package/build/lib/commands/streamscreen.js +2 -2
- package/build/lib/commands/system-bars.js +1 -1
- package/build/lib/commands/touch.js +4 -4
- package/build/lib/driver.js +5 -5
- package/build/lib/logger.js +2 -2
- package/build/lib/uiautomator.js +2 -2
- package/build/lib/unlock-helpers.js +2 -2
- package/build/lib/webview-helpers.js +2 -2
- package/index.js +1 -26
- package/lib/android-helpers.js +1 -1
- package/lib/bootstrap.js +2 -2
- package/lib/commands/actions.js +1 -1
- package/lib/commands/alert.js +1 -1
- package/lib/commands/app-management.js +37 -17
- package/lib/commands/context.js +2 -2
- package/lib/commands/element.js +1 -1
- package/lib/commands/emu-console.js +1 -1
- package/lib/commands/execute.js +1 -1
- package/lib/commands/file-actions.js +2 -2
- package/lib/commands/find.js +2 -2
- package/lib/commands/general.js +2 -2
- package/lib/commands/ime.js +1 -1
- package/lib/commands/intent.js +1 -1
- package/lib/commands/log.js +1 -1
- package/lib/commands/network.js +1 -1
- package/lib/commands/recordscreen.js +1 -1
- package/lib/commands/shell.js +2 -2
- package/lib/commands/streamscreen.js +1 -1
- package/lib/commands/touch.js +2 -2
- package/lib/driver.js +2 -2
- package/lib/logger.js +1 -1
- package/lib/uiautomator.js +1 -1
- package/lib/unlock-helpers.js +1 -1
- package/lib/webview-helpers.js +1 -1
- package/package.json +6 -4
- package/build/lib/server.js +0 -34
- package/lib/server.js +0 -14
|
@@ -11,7 +11,7 @@ require("source-map-support/register");
|
|
|
11
11
|
|
|
12
12
|
var _androidHelpers = _interopRequireDefault(require("../android-helpers"));
|
|
13
13
|
|
|
14
|
-
var _support = require("
|
|
14
|
+
var _support = require("appium/support");
|
|
15
15
|
|
|
16
16
|
var _path = _interopRequireDefault(require("path"));
|
|
17
17
|
|
|
@@ -377,4 +377,4 @@ var _default = extensions;
|
|
|
377
377
|
exports.default = _default;require('source-map-support').install();
|
|
378
378
|
|
|
379
379
|
|
|
380
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL2FjdGlvbnMuanMiLCJuYW1lcyI6WyJzd2lwZVN0ZXBzUGVyU2VjIiwiZHJhZ1N0ZXBzUGVyU2VjIiwiY29tbWFuZHMiLCJoZWxwZXJzIiwiZXh0ZW5zaW9ucyIsImtleWV2ZW50Iiwia2V5Y29kZSIsIm1ldGFzdGF0ZSIsImxvZyIsIndhcm4iLCJwcmVzc0tleUNvZGUiLCJib290c3RyYXAiLCJzZW5kQWN0aW9uIiwibG9uZ1ByZXNzS2V5Q29kZSIsImdldE9yaWVudGF0aW9uIiwicGFyYW1zIiwibmF0dXJhbE9yaWVudGF0aW9uIiwib3B0cyIsImFuZHJvaWROYXR1cmFsT3JpZW50YXRpb24iLCJvcmllbnRhdGlvbiIsInRvVXBwZXJDYXNlIiwic2V0T3JpZW50YXRpb24iLCJmYWtlRmxpY2siLCJ4U3BlZWQiLCJ5U3BlZWQiLCJmYWtlRmxpY2tFbGVtZW50IiwiZWxlbWVudElkIiwieG9mZnNldCIsInlvZmZzZXQiLCJzcGVlZCIsInN3aXBlIiwic3RhcnRYIiwic3RhcnRZIiwiZW5kWCIsImVuZFkiLCJkdXJhdGlvbiIsInRvdWNoQ291bnQiLCJlbElkIiwic3dpcGVPcHRzIiwic3RlcHMiLCJNYXRoIiwicm91bmQiLCJ1dGlsIiwiaGFzVmFsdWUiLCJkb1N3aXBlIiwicGluY2hDbG9zZSIsInBlcmNlbnQiLCJwaW5jaE9wdHMiLCJkaXJlY3Rpb24iLCJwaW5jaE9wZW4iLCJmbGljayIsImVsZW1lbnQiLCJ4T2Zmc2V0IiwieU9mZnNldCIsImRyYWciLCJkZXN0RWxJZCIsImRyYWdPcHRzIiwiZG9EcmFnIiwibG9jayIsInNlY29uZHMiLCJhZGIiLCJpc05hTiIsImZsb2F0U2Vjb25kcyIsInBhcnNlRmxvYXQiLCJCIiwiZGVsYXkiLCJ1bmxvY2siLCJpc0xvY2tlZCIsImlzU2NyZWVuTG9ja2VkIiwiYW5kcm9pZEhlbHBlcnMiLCJjYXBzIiwib3Blbk5vdGlmaWNhdGlvbnMiLCJzZXRMb2NhdGlvbiIsImxhdGl0dWRlIiwibG9uZ2l0dWRlIiwic2VuZFRlbG5ldENvbW1hbmQiLCJmaW5nZXJwcmludCIsImZpbmdlcnByaW50SWQiLCJpc0VtdWxhdG9yIiwiZXJyb3JBbmRUaHJvdyIsInNlbmRTTVMiLCJwaG9uZU51bWJlciIsIm1lc3NhZ2UiLCJnc21DYWxsIiwiYWN0aW9uIiwiZ3NtU2lnbmFsIiwic2lnbmFsU3RyZW5naCIsImdzbVZvaWNlIiwic3RhdGUiLCJwb3dlckFDIiwicG93ZXJDYXBhY2l0eSIsImJhdHRlcnlQZXJjZW50IiwibmV0d29ya1NwZWVkIiwic2Vuc29yU2V0Iiwic2Vuc29yIiwic2Vuc29yVHlwZSIsInZhbHVlIiwiZ2V0U2NyZWVuc2hvdERhdGFXaXRoQWRiU2hlbGwiLCJsb2NhbEZpbGUiLCJ0ZW1wRGlyIiwicGF0aCIsInByZWZpeCIsInN1ZmZpeCIsImZzIiwiZXhpc3RzIiwidW5saW5rIiwicG5nRGlyIiwiYW5kcm9pZFNjcmVlbnNob3RQYXRoIiwicG5nIiwicG9zaXgiLCJyZXNvbHZlIiwiY21kIiwic2hlbGwiLCJmaWxlU2l6ZSIsIkVycm9yIiwicHVsbCIsImppbXAiLCJyZWFkIiwiZ2V0U2NyZWVuc2hvdERhdGFXaXRoQWRiRXhlY091dCIsInN0ZG91dCIsInN0ZGVyciIsImNvZGUiLCJleGVjdXRhYmxlIiwiZGVmYXVsdEFyZ3MiLCJjb25jYXQiLCJlbmNvZGluZyIsImlzQnVmZmVyIiwibGVuZ3RoIiwidG9TdHJpbmciLCJnZXRTY3JlZW5zaG90IiwiYXBpTGV2ZWwiLCJnZXRBcGlMZXZlbCIsImltYWdlIiwiZSIsImluZm8iLCJlcnIiLCJzY3JlZW5PcmllbnRhdGlvbiIsImdldFNjcmVlbk9yaWVudGF0aW9uIiwicm90YXRlIiwiZ2V0QnVmZmVyIiwicHJvbWlzaWZ5IiwiY29udGV4dCIsImltZ0J1ZmZlciIsIk1JTUVfUE5HIiwiT2JqZWN0IiwiYXNzaWduIl0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLiIsInNvdXJjZXMiOlsibGliL2NvbW1hbmRzL2FjdGlvbnMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFuZHJvaWRIZWxwZXJzIGZyb20gJy4uL2FuZHJvaWQtaGVscGVycyc7XG5pbXBvcnQgeyBmcywgdXRpbCwgdGVtcERpcn0gZnJvbSAnQGFwcGl1bS9zdXBwb3J0JztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IEIgZnJvbSAnYmx1ZWJpcmQnO1xuaW1wb3J0IGppbXAgZnJvbSAnamltcCc7XG5pbXBvcnQgeyBleGVjIH0gZnJvbSAndGVlbl9wcm9jZXNzJztcblxuY29uc3Qgc3dpcGVTdGVwc1BlclNlYyA9IDI4O1xuY29uc3QgZHJhZ1N0ZXBzUGVyU2VjID0gNDA7XG5cbmxldCBjb21tYW5kcyA9IHt9LCBoZWxwZXJzID0ge30sIGV4dGVuc2lvbnMgPSB7fTtcblxuY29tbWFuZHMua2V5ZXZlbnQgPSBhc3luYyBmdW5jdGlvbiBrZXlldmVudCAoa2V5Y29kZSwgbWV0YXN0YXRlID0gbnVsbCkge1xuICAvLyBUT0RPIGRlcHJlY2F0ZSBrZXlldmVudDsgY3VycmVudGx5IHdkIG9ubHkgaW1wbGVtZW50cyBrZXlldmVudFxuICB0aGlzLmxvZy53YXJuKCdrZXlldmVudCB3aWxsIGJlIGRlcHJlY2F0ZWQgdXNlIHByZXNzS2V5Q29kZScpO1xuICByZXR1cm4gYXdhaXQgdGhpcy5wcmVzc0tleUNvZGUoa2V5Y29kZSwgbWV0YXN0YXRlKTtcbn07XG5cbmNvbW1hbmRzLnByZXNzS2V5Q29kZSA9IGFzeW5jIGZ1bmN0aW9uIHByZXNzS2V5Q29kZSAoa2V5Y29kZSwgbWV0YXN0YXRlID0gbnVsbCkge1xuICByZXR1cm4gYXdhaXQgdGhpcy5ib290c3RyYXAuc2VuZEFjdGlvbigncHJlc3NLZXlDb2RlJywge2tleWNvZGUsIG1ldGFzdGF0ZX0pO1xufTtcblxuY29tbWFuZHMubG9uZ1ByZXNzS2V5Q29kZSA9IGFzeW5jIGZ1bmN0aW9uIGxvbmdQcmVzc0tleUNvZGUgKGtleWNvZGUsIG1ldGFzdGF0ZSA9IG51bGwpIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuYm9vdHN0cmFwLnNlbmRBY3Rpb24oJ2xvbmdQcmVzc0tleUNvZGUnLCB7a2V5Y29kZSwgbWV0YXN0YXRlfSk7XG59O1xuXG5jb21tYW5kcy5nZXRPcmllbnRhdGlvbiA9IGFzeW5jIGZ1bmN0aW9uIGdldE9yaWVudGF0aW9uICgpIHtcbiAgbGV0IHBhcmFtcyA9IHtcbiAgICBuYXR1cmFsT3JpZW50YXRpb246ICEhdGhpcy5vcHRzLmFuZHJvaWROYXR1cmFsT3JpZW50YXRpb24sXG4gIH07XG4gIGxldCBvcmllbnRhdGlvbiA9IGF3YWl0IHRoaXMuYm9vdHN0cmFwLnNlbmRBY3Rpb24oJ29yaWVudGF0aW9uJywgcGFyYW1zKTtcbiAgcmV0dXJuIG9yaWVudGF0aW9uLnRvVXBwZXJDYXNlKCk7XG59O1xuXG5jb21tYW5kcy5zZXRPcmllbnRhdGlvbiA9IGFzeW5jIGZ1bmN0aW9uIHNldE9yaWVudGF0aW9uIChvcmllbnRhdGlvbikge1xuICBvcmllbnRhdGlvbiA9IG9yaWVudGF0aW9uLnRvVXBwZXJDYXNlKCk7XG4gIGxldCBwYXJhbXMgPSB7XG4gICAgb3JpZW50YXRpb24sXG4gICAgbmF0dXJhbE9yaWVudGF0aW9uOiAhIXRoaXMub3B0cy5hbmRyb2lkTmF0dXJhbE9yaWVudGF0aW9uLFxuICB9O1xuICByZXR1cm4gYXdhaXQgdGhpcy5ib290c3RyYXAuc2VuZEFjdGlvbignb3JpZW50YXRpb24nLCBwYXJhbXMpO1xufTtcblxuY29tbWFuZHMuZmFrZUZsaWNrID0gYXN5bmMgZnVuY3Rpb24gZmFrZUZsaWNrICh4U3BlZWQsIHlTcGVlZCkge1xuICByZXR1cm4gYXdhaXQgdGhpcy5ib290c3RyYXAuc2VuZEFjdGlvbignZmxpY2snLCB7eFNwZWVkLCB5U3BlZWR9KTtcbn07XG5cbmNvbW1hbmRzLmZha2VGbGlja0VsZW1lbnQgPSBhc3luYyBmdW5jdGlvbiBmYWtlRmxpY2tFbGVtZW50IChlbGVtZW50SWQsIHhvZmZzZXQsIHlvZmZzZXQsIHNwZWVkKSB7XG4gIGxldCBwYXJhbXMgPSB7eG9mZnNldCwgeW9mZnNldCwgc3BlZWQsIGVsZW1lbnRJZH07XG4gIHJldHVybiBhd2FpdCB0aGlzLmJvb3RzdHJhcC5zZW5kQWN0aW9uKCdlbGVtZW50OmZsaWNrJywgcGFyYW1zKTtcbn07XG5cbmNvbW1hbmRzLnN3aXBlID0gYXN5bmMgZnVuY3Rpb24gc3dpcGUgKHN0YXJ0WCwgc3RhcnRZLCBlbmRYLCBlbmRZLCBkdXJhdGlvbiwgdG91Y2hDb3VudCwgZWxJZCkge1xuICBpZiAoc3RhcnRYID09PSAnbnVsbCcpIHtcbiAgICBzdGFydFggPSAwLjU7XG4gIH1cbiAgaWYgKHN0YXJ0WSA9PT0gJ251bGwnKSB7XG4gICAgc3RhcnRZID0gMC41O1xuICB9XG4gIGxldCBzd2lwZU9wdHMgPSB7c3RhcnRYLCBzdGFydFksIGVuZFgsIGVuZFksXG4gICAgICAgICAgICAgICAgICAgc3RlcHM6IE1hdGgucm91bmQoZHVyYXRpb24gKiBzd2lwZVN0ZXBzUGVyU2VjKX07XG4gIC8vIGdvaW5nIHRoZSBsb25nIHdheSBhbmQgY2hlY2tpbmcgZm9yIHVuZGVmaW5lZCBhbmQgbnVsbCBzaW5jZVxuICAvLyB3ZSBjYW4ndCBiZSBhc3N1cmVkIGBlbElkYCBpcyBhIHN0cmluZyBhbmQgbm90IGFuIGludFxuICBpZiAodXRpbC5oYXNWYWx1ZShlbElkKSkge1xuICAgIHN3aXBlT3B0cy5lbGVtZW50SWQgPSBlbElkO1xuICB9XG4gIHJldHVybiBhd2FpdCB0aGlzLmRvU3dpcGUoc3dpcGVPcHRzKTtcbn07XG5cbmNvbW1hbmRzLmRvU3dpcGUgPSBhc3luYyBmdW5jdGlvbiBkb1N3aXBlIChzd2lwZU9wdHMpIHtcbiAgaWYgKHV0aWwuaGFzVmFsdWUoc3dpcGVPcHRzLmVsZW1lbnRJZCkpIHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5ib290c3RyYXAuc2VuZEFjdGlvbignZWxlbWVudDpzd2lwZScsIHN3aXBlT3B0cyk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuYm9vdHN0cmFwLnNlbmRBY3Rpb24oJ3N3aXBlJywgc3dpcGVPcHRzKTtcbiAgfVxufTtcblxuY29tbWFuZHMucGluY2hDbG9zZSA9IGFzeW5jIGZ1bmN0aW9uIHBpbmNoQ2xvc2UgKHN0YXJ0WCwgc3RhcnRZLCBlbmRYLCBlbmRZLCBkdXJhdGlvbiwgcGVyY2VudCwgc3RlcHMsIGVsSWQpIHtcbiAgbGV0IHBpbmNoT3B0cyA9IHtcbiAgICBkaXJlY3Rpb246ICdpbicsXG4gICAgZWxlbWVudElkOiBlbElkLFxuICAgIHBlcmNlbnQsXG4gICAgc3RlcHNcbiAgfTtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuYm9vdHN0cmFwLnNlbmRBY3Rpb24oJ2VsZW1lbnQ6cGluY2gnLCBwaW5jaE9wdHMpO1xufTtcblxuY29tbWFuZHMucGluY2hPcGVuID0gYXN5bmMgZnVuY3Rpb24gcGluY2hPcGVuIChzdGFydFgsIHN0YXJ0WSwgZW5kWCwgZW5kWSwgZHVyYXRpb24sIHBlcmNlbnQsIHN0ZXBzLCBlbElkKSB7XG4gIGxldCBwaW5jaE9wdHMgPSB7ZGlyZWN0aW9uOiAnb3V0JywgZWxlbWVudElkOiBlbElkLCBwZXJjZW50LCBzdGVwc307XG4gIHJldHVybiBhd2FpdCB0aGlzLmJvb3RzdHJhcC5zZW5kQWN0aW9uKCdlbGVtZW50OnBpbmNoJywgcGluY2hPcHRzKTtcbn07XG5cbmNvbW1hbmRzLmZsaWNrID0gYXN5bmMgZnVuY3Rpb24gZmxpY2sgKGVsZW1lbnQsIHhTcGVlZCwgeVNwZWVkLCB4T2Zmc2V0LCB5T2Zmc2V0LCBzcGVlZCkge1xuICBpZiAoZWxlbWVudCkge1xuICAgIGF3YWl0IHRoaXMuZmFrZUZsaWNrRWxlbWVudChlbGVtZW50LCB4T2Zmc2V0LCB5T2Zmc2V0LCBzcGVlZCk7XG4gIH0gZWxzZSB7XG4gICAgYXdhaXQgdGhpcy5mYWtlRmxpY2soeFNwZWVkLCB5U3BlZWQpO1xuICB9XG59O1xuXG5jb21tYW5kcy5kcmFnID0gYXN5bmMgZnVuY3Rpb24gZHJhZyAoc3RhcnRYLCBzdGFydFksIGVuZFgsIGVuZFksIGR1cmF0aW9uLCB0b3VjaENvdW50LCBlbGVtZW50SWQsIGRlc3RFbElkKSB7XG4gIGxldCBkcmFnT3B0cyA9IHtcbiAgICBlbGVtZW50SWQsIGRlc3RFbElkLCBzdGFydFgsIHN0YXJ0WSwgZW5kWCwgZW5kWSxcbiAgICBzdGVwczogTWF0aC5yb3VuZChkdXJhdGlvbiAqIGRyYWdTdGVwc1BlclNlYylcbiAgfTtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuZG9EcmFnKGRyYWdPcHRzKTtcblxufTtcblxuY29tbWFuZHMuZG9EcmFnID0gYXN5bmMgZnVuY3Rpb24gZG9EcmFnIChkcmFnT3B0cykge1xuICBpZiAodXRpbC5oYXNWYWx1ZShkcmFnT3B0cy5lbGVtZW50SWQpKSB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuYm9vdHN0cmFwLnNlbmRBY3Rpb24oJ2VsZW1lbnQ6ZHJhZycsIGRyYWdPcHRzKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5ib290c3RyYXAuc2VuZEFjdGlvbignZHJhZycsIGRyYWdPcHRzKTtcbiAgfVxufTtcblxuY29tbWFuZHMubG9jayA9IGFzeW5jIGZ1bmN0aW9uIGxvY2sgKHNlY29uZHMpIHtcbiAgYXdhaXQgdGhpcy5hZGIubG9jaygpO1xuICBpZiAoaXNOYU4oc2Vjb25kcykpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBmbG9hdFNlY29uZHMgPSBwYXJzZUZsb2F0KHNlY29uZHMpO1xuICBpZiAoZmxvYXRTZWNvbmRzIDw9IDApIHtcbiAgICByZXR1cm47XG4gIH1cbiAgYXdhaXQgQi5kZWxheSgxMDAwICogZmxvYXRTZWNvbmRzKTtcbiAgYXdhaXQgdGhpcy51bmxvY2soKTtcbn07XG5cbmNvbW1hbmRzLmlzTG9ja2VkID0gYXN5bmMgZnVuY3Rpb24gaXNMb2NrZWQgKCkge1xuICByZXR1cm4gYXdhaXQgdGhpcy5hZGIuaXNTY3JlZW5Mb2NrZWQoKTtcbn07XG5cbmNvbW1hbmRzLnVubG9jayA9IGFzeW5jIGZ1bmN0aW9uIHVubG9jayAoKSB7XG4gIHJldHVybiBhd2FpdCBhbmRyb2lkSGVscGVycy51bmxvY2sodGhpcywgdGhpcy5hZGIsIHRoaXMuY2Fwcyk7XG59O1xuXG5jb21tYW5kcy5vcGVuTm90aWZpY2F0aW9ucyA9IGFzeW5jIGZ1bmN0aW9uIG9wZW5Ob3RpZmljYXRpb25zICgpIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuYm9vdHN0cmFwLnNlbmRBY3Rpb24oJ29wZW5Ob3RpZmljYXRpb24nKTtcbn07XG5cbmNvbW1hbmRzLnNldExvY2F0aW9uID0gYXN5bmMgZnVuY3Rpb24gc2V0TG9jYXRpb24gKGxhdGl0dWRlLCBsb25naXR1ZGUpIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuYWRiLnNlbmRUZWxuZXRDb21tYW5kKGBnZW8gZml4ICR7bG9uZ2l0dWRlfSAke2xhdGl0dWRlfWApO1xufTtcblxuY29tbWFuZHMuZmluZ2VycHJpbnQgPSBhc3luYyBmdW5jdGlvbiBmaW5nZXJwcmludCAoZmluZ2VycHJpbnRJZCkge1xuICBpZiAoIXRoaXMuaXNFbXVsYXRvcigpKSB7XG4gICAgdGhpcy5sb2cuZXJyb3JBbmRUaHJvdygnZmluZ2VycHJpbnQgbWV0aG9kIGlzIG9ubHkgYXZhaWxhYmxlIGZvciBlbXVsYXRvcnMnKTtcbiAgfVxuICBhd2FpdCB0aGlzLmFkYi5maW5nZXJwcmludChmaW5nZXJwcmludElkKTtcbn07XG5cbmNvbW1hbmRzLnNlbmRTTVMgPSBhc3luYyBmdW5jdGlvbiBzZW5kU01TIChwaG9uZU51bWJlciwgbWVzc2FnZSkge1xuICBpZiAoIXRoaXMuaXNFbXVsYXRvcigpKSB7XG4gICAgdGhpcy5sb2cuZXJyb3JBbmRUaHJvdygnc2VuZFNNUyBtZXRob2QgaXMgb25seSBhdmFpbGFibGUgZm9yIGVtdWxhdG9ycycpO1xuICB9XG4gIGF3YWl0IHRoaXMuYWRiLnNlbmRTTVMocGhvbmVOdW1iZXIsIG1lc3NhZ2UpO1xufTtcblxuY29tbWFuZHMuZ3NtQ2FsbCA9IGFzeW5jIGZ1bmN0aW9uIGdzbUNhbGwgKHBob25lTnVtYmVyLCBhY3Rpb24pIHtcbiAgaWYgKCF0aGlzLmlzRW11bGF0b3IoKSkge1xuICAgIHRoaXMubG9nLmVycm9yQW5kVGhyb3coJ2dzbUNhbGwgbWV0aG9kIGlzIG9ubHkgYXZhaWxhYmxlIGZvciBlbXVsYXRvcnMnKTtcbiAgfVxuICBhd2FpdCB0aGlzLmFkYi5nc21DYWxsKHBob25lTnVtYmVyLCBhY3Rpb24pO1xufTtcblxuY29tbWFuZHMuZ3NtU2lnbmFsID0gYXN5bmMgZnVuY3Rpb24gZ3NtU2lnbmFsIChzaWduYWxTdHJlbmdoKSB7XG4gIGlmICghdGhpcy5pc0VtdWxhdG9yKCkpIHtcbiAgICB0aGlzLmxvZy5lcnJvckFuZFRocm93KCdnc21TaWduYWwgbWV0aG9kIGlzIG9ubHkgYXZhaWxhYmxlIGZvciBlbXVsYXRvcnMnKTtcbiAgfVxuICBhd2FpdCB0aGlzLmFkYi5nc21TaWduYWwoc2lnbmFsU3RyZW5naCk7XG59O1xuXG5jb21tYW5kcy5nc21Wb2ljZSA9IGFzeW5jIGZ1bmN0aW9uIGdzbVZvaWNlIChzdGF0ZSkge1xuICBpZiAoIXRoaXMuaXNFbXVsYXRvcigpKSB7XG4gICAgdGhpcy5sb2cuZXJyb3JBbmRUaHJvdygnZ3NtVm9pY2UgbWV0aG9kIGlzIG9ubHkgYXZhaWxhYmxlIGZvciBlbXVsYXRvcnMnKTtcbiAgfVxuICBhd2FpdCB0aGlzLmFkYi5nc21Wb2ljZShzdGF0ZSk7XG59O1xuXG5jb21tYW5kcy5wb3dlckFDID0gYXN5bmMgZnVuY3Rpb24gcG93ZXJBQyAoc3RhdGUpIHtcbiAgaWYgKCF0aGlzLmlzRW11bGF0b3IoKSkge1xuICAgIHRoaXMubG9nLmVycm9yQW5kVGhyb3coJ3Bvd2VyQUMgbWV0aG9kIGlzIG9ubHkgYXZhaWxhYmxlIGZvciBlbXVsYXRvcnMnKTtcbiAgfVxuICBhd2FpdCB0aGlzLmFkYi5wb3dlckFDKHN0YXRlKTtcbn07XG5cbmNvbW1hbmRzLnBvd2VyQ2FwYWNpdHkgPSBhc3luYyBmdW5jdGlvbiBwb3dlckNhcGFjaXR5IChiYXR0ZXJ5UGVyY2VudCkge1xuICBpZiAoIXRoaXMuaXNFbXVsYXRvcigpKSB7XG4gICAgdGhpcy5sb2cuZXJyb3JBbmRUaHJvdygncG93ZXJDYXBhY2l0eSBtZXRob2QgaXMgb25seSBhdmFpbGFibGUgZm9yIGVtdWxhdG9ycycpO1xuICB9XG4gIGF3YWl0IHRoaXMuYWRiLnBvd2VyQ2FwYWNpdHkoYmF0dGVyeVBlcmNlbnQpO1xufTtcblxuY29tbWFuZHMubmV0d29ya1NwZWVkID0gYXN5bmMgZnVuY3Rpb24gbmV0d29ya1NwZWVkIChuZXR3b3JrU3BlZWQpIHtcbiAgaWYgKCF0aGlzLmlzRW11bGF0b3IoKSkge1xuICAgIHRoaXMubG9nLmVycm9yQW5kVGhyb3coJ25ldHdvcmtTcGVlZCBtZXRob2QgaXMgb25seSBhdmFpbGFibGUgZm9yIGVtdWxhdG9ycycpO1xuICB9XG4gIGF3YWl0IHRoaXMuYWRiLm5ldHdvcmtTcGVlZChuZXR3b3JrU3BlZWQpO1xufTtcblxuLyoqXG4gKiBFbXVsYXRlIHNlbnNvcnMgdmFsdWVzIG9uIHRoZSBjb25uZWN0ZWQgZW11bGF0b3IuXG4gKlxuICogQHR5cGVkZWYge09iamVjdH0gU2Vuc29yXG4gKiBAcHJvcGVydHkge3N0cmluZ30gc2Vuc29yVHlwZSAtIHNlbnNvciB0eXBlIGRlY2xhcmVkIGluIGFkYi5TRU5TT1JTXG4gKiBAcHJvcGVydHkge3N0cmluZ30gdmFsdWUgLSB2YWx1ZSB0byBzZXQgdG8gdGhlIHNlbnNvclxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBTZW5zb3JcbiAqIEB0aHJvd3Mge0Vycm9yfSAtIElmIHNlbnNvclR5cGUgaXMgbm90IGRlZmluZWRcbiAqIEB0aHJvd3Mge0Vycm9yfSAtIElmIHZhbHVlIGZvciB0aGUgc2Ugc29yIGlzIG5vdCBkZWZpbmVkXG4gKiBAdGhyb3dzIHtFcnJvcn0gLSBJZiBkZXZpY2VUeXBlIGlzIG5vdCBhbiBlbXVsYXRvclxuICovXG5jb21tYW5kcy5zZW5zb3JTZXQgPSBhc3luYyBmdW5jdGlvbiBzZW5zb3JTZXQgKHNlbnNvciA9IHt9KSB7XG4gIGNvbnN0IHtzZW5zb3JUeXBlLCB2YWx1ZX0gPSBzZW5zb3I7XG4gIGlmICghdXRpbC5oYXNWYWx1ZShzZW5zb3JUeXBlKSkge1xuICAgIHRoaXMubG9nLmVycm9yQW5kVGhyb3coYCdzZW5zb3JUeXBlJyBhcmd1bWVudCBpcyByZXF1aXJlZGApO1xuICB9XG4gIGlmICghdXRpbC5oYXNWYWx1ZSh2YWx1ZSkpIHtcbiAgICB0aGlzLmxvZy5lcnJvckFuZFRocm93KGAndmFsdWUnIGFyZ3VtZW50IGlzIHJlcXVpcmVkYCk7XG4gIH1cbiAgaWYgKCF0aGlzLmlzRW11bGF0b3IoKSkge1xuICAgIHRoaXMubG9nLmVycm9yQW5kVGhyb3coJ3NlbnNvclNldCBtZXRob2QgaXMgb25seSBhdmFpbGFibGUgZm9yIGVtdWxhdG9ycycpO1xuICB9XG4gIGF3YWl0IHRoaXMuYWRiLnNlbnNvclNldChzZW5zb3JUeXBlLCB2YWx1ZSk7XG59O1xuXG5oZWxwZXJzLmdldFNjcmVlbnNob3REYXRhV2l0aEFkYlNoZWxsID0gYXN5bmMgZnVuY3Rpb24gZ2V0U2NyZWVuc2hvdERhdGFXaXRoQWRiU2hlbGwgKGFkYiwgb3B0cykge1xuICBjb25zdCBsb2NhbEZpbGUgPSBhd2FpdCB0ZW1wRGlyLnBhdGgoe3ByZWZpeDogJ2FwcGl1bScsIHN1ZmZpeDogJy5wbmcnfSk7XG4gIGlmIChhd2FpdCBmcy5leGlzdHMobG9jYWxGaWxlKSkge1xuICAgIGF3YWl0IGZzLnVubGluayhsb2NhbEZpbGUpO1xuICB9XG4gIHRyeSB7XG4gICAgY29uc3QgcG5nRGlyID0gb3B0cy5hbmRyb2lkU2NyZWVuc2hvdFBhdGggfHwgJy9kYXRhL2xvY2FsL3RtcC8nO1xuICAgIGNvbnN0IHBuZyA9IHBhdGgucG9zaXgucmVzb2x2ZShwbmdEaXIsICdzY3JlZW5zaG90LnBuZycpO1xuICAgIGNvbnN0IGNtZCA9IFsnL3N5c3RlbS9iaW4vcm0nLCBgJHtwbmd9O2AsICcvc3lzdGVtL2Jpbi9zY3JlZW5jYXAnLCAnLXAnLCBwbmddO1xuICAgIGF3YWl0IGFkYi5zaGVsbChjbWQpO1xuICAgIGlmICghYXdhaXQgYWRiLmZpbGVTaXplKHBuZykpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIHNpemUgb2YgdGhlIHRha2VuIHNjcmVlbnNob3QgZXF1YWxzIHRvIHplcm8uJyk7XG4gICAgfVxuICAgIGF3YWl0IGFkYi5wdWxsKHBuZywgbG9jYWxGaWxlKTtcbiAgICByZXR1cm4gYXdhaXQgamltcC5yZWFkKGxvY2FsRmlsZSk7XG4gIH0gZmluYWxseSB7XG4gICAgaWYgKGF3YWl0IGZzLmV4aXN0cyhsb2NhbEZpbGUpKSB7XG4gICAgICBhd2FpdCBmcy51bmxpbmsobG9jYWxGaWxlKTtcbiAgICB9XG4gIH1cbn07XG5cbmhlbHBlcnMuZ2V0U2NyZWVuc2hvdERhdGFXaXRoQWRiRXhlY091dCA9IGFzeW5jIGZ1bmN0aW9uIGdldFNjcmVlbnNob3REYXRhV2l0aEFkYkV4ZWNPdXQgKGFkYikge1xuICBsZXQge3N0ZG91dCwgc3RkZXJyLCBjb2RlfSA9IGF3YWl0IGV4ZWMoYWRiLmV4ZWN1dGFibGUucGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkYi5leGVjdXRhYmxlLmRlZmF1bHRBcmdzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5jb25jYXQoWydleGVjLW91dCcsICcvc3lzdGVtL2Jpbi9zY3JlZW5jYXAnLCAnLXAnXSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZW5jb2Rpbmc6ICdiaW5hcnknLCBpc0J1ZmZlcjogdHJ1ZX0pO1xuICAvLyBpZiB0aGVyZSBpcyBhbiBlcnJvciwgdGhyb3dcbiAgaWYgKGNvZGUgfHwgc3RkZXJyLmxlbmd0aCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgU2NyZWVuc2hvdCByZXR1cm5lZCBlcnJvciwgY29kZTogJyR7Y29kZX0nLCBzdGRlcnI6ICcke3N0ZGVyci50b1N0cmluZygpfSdgKTtcbiAgfVxuICAvLyBpZiB3ZSBkb24ndCBnZXQgYW55dGhpbmcgYXQgYWxsLCB0aHJvd1xuICBpZiAoIXN0ZG91dC5sZW5ndGgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1NjcmVlbnNob3QgcmV0dXJuZWQgbm8gZGF0YScpO1xuICB9XG5cbiAgcmV0dXJuIGF3YWl0IGppbXAucmVhZChzdGRvdXQpO1xufTtcblxuY29tbWFuZHMuZ2V0U2NyZWVuc2hvdCA9IGFzeW5jIGZ1bmN0aW9uIGdldFNjcmVlbnNob3QgKCkge1xuICBjb25zdCBhcGlMZXZlbCA9IGF3YWl0IHRoaXMuYWRiLmdldEFwaUxldmVsKCk7XG4gIGxldCBpbWFnZSA9IG51bGw7XG4gIGlmIChhcGlMZXZlbCA+IDIwKSB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIFRoaXMgc2NyZWVuc2hvdGluZyBhcHByb2FjaCBpcyB3YXkgZmFzdGVyLCBzaW5jZSBpdCByZXF1aXJlcyBsZXNzIGV4dGVybmFsIGNvbW1hbmRzXG4gICAgICAvLyB0byBiZSBleGVjdXRlZC4gVW5mb3J0dW5hdGVseSwgZXhlYy1vdXQgb3B0aW9uIGlzIG9ubHkgc3VwcG9ydGVkIGJ5IG5ld2VyIEFuZHJvaWQvU0RLIHZlcnNpb25zICg1LjAgYW5kIGxhdGVyKVxuICAgICAgaW1hZ2UgPSBhd2FpdCB0aGlzLmdldFNjcmVlbnNob3REYXRhV2l0aEFkYkV4ZWNPdXQodGhpcy5hZGIpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMubG9nLmluZm8oYENhbm5vdCBnZXQgc2NyZWVuc2hvdCBkYXRhIHdpdGggJ2FkYiBleGVjLW91dCcgYmVjYXVzZSBvZiAnJHtlLm1lc3NhZ2V9Jy4gYCArXG4gICAgICAgIGBEZWZhdWx0aW5nIHRvICdhZGIgc2hlbGwnIGNhbGxgKTtcbiAgICB9XG4gIH1cbiAgaWYgKCFpbWFnZSkge1xuICAgIHRyeSB7XG4gICAgICBpbWFnZSA9IGF3YWl0IHRoaXMuZ2V0U2NyZWVuc2hvdERhdGFXaXRoQWRiU2hlbGwodGhpcy5hZGIsIHRoaXMub3B0cyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc3QgZXJyID0gYENhbm5vdCBnZXQgc2NyZWVuc2hvdCBkYXRhIGJlY2F1c2Ugb2YgJyR7ZS5tZXNzYWdlfScuIGAgK1xuICAgICAgICBgTWFrZSBzdXJlIHRoZSAnTGF5b3V0UGFyYW1zLkZMQUdfU0VDVVJFJyBpcyBub3Qgc2V0IGZvciBgICtcbiAgICAgICAgYHRoZSBjdXJyZW50IHZpZXdgO1xuICAgICAgdGhpcy5sb2cuZXJyb3JBbmRUaHJvdyhlcnIpO1xuICAgIH1cbiAgfVxuICBpZiAoYXBpTGV2ZWwgPCAyMykge1xuICAgIC8vIEFuZHJvaWQgYnVnIDg0MzM3NDIgLSByb3RhdGUgc2NyZWVuc2hvdCBpZiBzY3JlZW4gaXMgcm90YXRlZFxuICAgIGxldCBzY3JlZW5PcmllbnRhdGlvbiA9IGF3YWl0IHRoaXMuYWRiLmdldFNjcmVlbk9yaWVudGF0aW9uKCk7XG4gICAgdHJ5IHtcbiAgICAgIGltYWdlID0gYXdhaXQgaW1hZ2Uucm90YXRlKC05MCAqIHNjcmVlbk9yaWVudGF0aW9uKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHRoaXMubG9nLndhcm4oYENvdWxkIG5vdCByb3RhdGUgc2NyZWVuc2hvdCBkdWUgdG8gZXJyb3I6ICR7ZXJyfWApO1xuICAgIH1cbiAgfVxuICBjb25zdCBnZXRCdWZmZXIgPSBCLnByb21pc2lmeShpbWFnZS5nZXRCdWZmZXIsIHtjb250ZXh0OiBpbWFnZX0pO1xuICBjb25zdCBpbWdCdWZmZXIgPSBhd2FpdCBnZXRCdWZmZXIoamltcC5NSU1FX1BORyk7XG4gIHJldHVybiBpbWdCdWZmZXIudG9TdHJpbmcoJ2Jhc2U2NCcpO1xufTtcblxuT2JqZWN0LmFzc2lnbihleHRlbnNpb25zLCBjb21tYW5kcywgaGVscGVycyk7XG5leHBvcnQgeyBjb21tYW5kcywgaGVscGVycyB9O1xuZXhwb3J0IGRlZmF1bHQgZXh0ZW5zaW9ucztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQSxN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
|
|
380
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL2FjdGlvbnMuanMiLCJuYW1lcyI6WyJzd2lwZVN0ZXBzUGVyU2VjIiwiZHJhZ1N0ZXBzUGVyU2VjIiwiY29tbWFuZHMiLCJoZWxwZXJzIiwiZXh0ZW5zaW9ucyIsImtleWV2ZW50Iiwia2V5Y29kZSIsIm1ldGFzdGF0ZSIsImxvZyIsIndhcm4iLCJwcmVzc0tleUNvZGUiLCJib290c3RyYXAiLCJzZW5kQWN0aW9uIiwibG9uZ1ByZXNzS2V5Q29kZSIsImdldE9yaWVudGF0aW9uIiwicGFyYW1zIiwibmF0dXJhbE9yaWVudGF0aW9uIiwib3B0cyIsImFuZHJvaWROYXR1cmFsT3JpZW50YXRpb24iLCJvcmllbnRhdGlvbiIsInRvVXBwZXJDYXNlIiwic2V0T3JpZW50YXRpb24iLCJmYWtlRmxpY2siLCJ4U3BlZWQiLCJ5U3BlZWQiLCJmYWtlRmxpY2tFbGVtZW50IiwiZWxlbWVudElkIiwieG9mZnNldCIsInlvZmZzZXQiLCJzcGVlZCIsInN3aXBlIiwic3RhcnRYIiwic3RhcnRZIiwiZW5kWCIsImVuZFkiLCJkdXJhdGlvbiIsInRvdWNoQ291bnQiLCJlbElkIiwic3dpcGVPcHRzIiwic3RlcHMiLCJNYXRoIiwicm91bmQiLCJ1dGlsIiwiaGFzVmFsdWUiLCJkb1N3aXBlIiwicGluY2hDbG9zZSIsInBlcmNlbnQiLCJwaW5jaE9wdHMiLCJkaXJlY3Rpb24iLCJwaW5jaE9wZW4iLCJmbGljayIsImVsZW1lbnQiLCJ4T2Zmc2V0IiwieU9mZnNldCIsImRyYWciLCJkZXN0RWxJZCIsImRyYWdPcHRzIiwiZG9EcmFnIiwibG9jayIsInNlY29uZHMiLCJhZGIiLCJpc05hTiIsImZsb2F0U2Vjb25kcyIsInBhcnNlRmxvYXQiLCJCIiwiZGVsYXkiLCJ1bmxvY2siLCJpc0xvY2tlZCIsImlzU2NyZWVuTG9ja2VkIiwiYW5kcm9pZEhlbHBlcnMiLCJjYXBzIiwib3Blbk5vdGlmaWNhdGlvbnMiLCJzZXRMb2NhdGlvbiIsImxhdGl0dWRlIiwibG9uZ2l0dWRlIiwic2VuZFRlbG5ldENvbW1hbmQiLCJmaW5nZXJwcmludCIsImZpbmdlcnByaW50SWQiLCJpc0VtdWxhdG9yIiwiZXJyb3JBbmRUaHJvdyIsInNlbmRTTVMiLCJwaG9uZU51bWJlciIsIm1lc3NhZ2UiLCJnc21DYWxsIiwiYWN0aW9uIiwiZ3NtU2lnbmFsIiwic2lnbmFsU3RyZW5naCIsImdzbVZvaWNlIiwic3RhdGUiLCJwb3dlckFDIiwicG93ZXJDYXBhY2l0eSIsImJhdHRlcnlQZXJjZW50IiwibmV0d29ya1NwZWVkIiwic2Vuc29yU2V0Iiwic2Vuc29yIiwic2Vuc29yVHlwZSIsInZhbHVlIiwiZ2V0U2NyZWVuc2hvdERhdGFXaXRoQWRiU2hlbGwiLCJsb2NhbEZpbGUiLCJ0ZW1wRGlyIiwicGF0aCIsInByZWZpeCIsInN1ZmZpeCIsImZzIiwiZXhpc3RzIiwidW5saW5rIiwicG5nRGlyIiwiYW5kcm9pZFNjcmVlbnNob3RQYXRoIiwicG5nIiwicG9zaXgiLCJyZXNvbHZlIiwiY21kIiwic2hlbGwiLCJmaWxlU2l6ZSIsIkVycm9yIiwicHVsbCIsImppbXAiLCJyZWFkIiwiZ2V0U2NyZWVuc2hvdERhdGFXaXRoQWRiRXhlY091dCIsInN0ZG91dCIsInN0ZGVyciIsImNvZGUiLCJleGVjIiwiZXhlY3V0YWJsZSIsImRlZmF1bHRBcmdzIiwiY29uY2F0IiwiZW5jb2RpbmciLCJpc0J1ZmZlciIsImxlbmd0aCIsInRvU3RyaW5nIiwiZ2V0U2NyZWVuc2hvdCIsImFwaUxldmVsIiwiZ2V0QXBpTGV2ZWwiLCJpbWFnZSIsImUiLCJpbmZvIiwiZXJyIiwic2NyZWVuT3JpZW50YXRpb24iLCJnZXRTY3JlZW5PcmllbnRhdGlvbiIsInJvdGF0ZSIsImdldEJ1ZmZlciIsInByb21pc2lmeSIsImNvbnRleHQiLCJpbWdCdWZmZXIiLCJNSU1FX1BORyIsIk9iamVjdCIsImFzc2lnbiJdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4iLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9hY3Rpb25zLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhbmRyb2lkSGVscGVycyBmcm9tICcuLi9hbmRyb2lkLWhlbHBlcnMnO1xuaW1wb3J0IHsgZnMsIHV0aWwsIHRlbXBEaXJ9IGZyb20gJ2FwcGl1bS9zdXBwb3J0JztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IEIgZnJvbSAnYmx1ZWJpcmQnO1xuaW1wb3J0IGppbXAgZnJvbSAnamltcCc7XG5pbXBvcnQgeyBleGVjIH0gZnJvbSAndGVlbl9wcm9jZXNzJztcblxuY29uc3Qgc3dpcGVTdGVwc1BlclNlYyA9IDI4O1xuY29uc3QgZHJhZ1N0ZXBzUGVyU2VjID0gNDA7XG5cbmxldCBjb21tYW5kcyA9IHt9LCBoZWxwZXJzID0ge30sIGV4dGVuc2lvbnMgPSB7fTtcblxuY29tbWFuZHMua2V5ZXZlbnQgPSBhc3luYyBmdW5jdGlvbiBrZXlldmVudCAoa2V5Y29kZSwgbWV0YXN0YXRlID0gbnVsbCkge1xuICAvLyBUT0RPIGRlcHJlY2F0ZSBrZXlldmVudDsgY3VycmVudGx5IHdkIG9ubHkgaW1wbGVtZW50cyBrZXlldmVudFxuICB0aGlzLmxvZy53YXJuKCdrZXlldmVudCB3aWxsIGJlIGRlcHJlY2F0ZWQgdXNlIHByZXNzS2V5Q29kZScpO1xuICByZXR1cm4gYXdhaXQgdGhpcy5wcmVzc0tleUNvZGUoa2V5Y29kZSwgbWV0YXN0YXRlKTtcbn07XG5cbmNvbW1hbmRzLnByZXNzS2V5Q29kZSA9IGFzeW5jIGZ1bmN0aW9uIHByZXNzS2V5Q29kZSAoa2V5Y29kZSwgbWV0YXN0YXRlID0gbnVsbCkge1xuICByZXR1cm4gYXdhaXQgdGhpcy5ib290c3RyYXAuc2VuZEFjdGlvbigncHJlc3NLZXlDb2RlJywge2tleWNvZGUsIG1ldGFzdGF0ZX0pO1xufTtcblxuY29tbWFuZHMubG9uZ1ByZXNzS2V5Q29kZSA9IGFzeW5jIGZ1bmN0aW9uIGxvbmdQcmVzc0tleUNvZGUgKGtleWNvZGUsIG1ldGFzdGF0ZSA9IG51bGwpIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuYm9vdHN0cmFwLnNlbmRBY3Rpb24oJ2xvbmdQcmVzc0tleUNvZGUnLCB7a2V5Y29kZSwgbWV0YXN0YXRlfSk7XG59O1xuXG5jb21tYW5kcy5nZXRPcmllbnRhdGlvbiA9IGFzeW5jIGZ1bmN0aW9uIGdldE9yaWVudGF0aW9uICgpIHtcbiAgbGV0IHBhcmFtcyA9IHtcbiAgICBuYXR1cmFsT3JpZW50YXRpb246ICEhdGhpcy5vcHRzLmFuZHJvaWROYXR1cmFsT3JpZW50YXRpb24sXG4gIH07XG4gIGxldCBvcmllbnRhdGlvbiA9IGF3YWl0IHRoaXMuYm9vdHN0cmFwLnNlbmRBY3Rpb24oJ29yaWVudGF0aW9uJywgcGFyYW1zKTtcbiAgcmV0dXJuIG9yaWVudGF0aW9uLnRvVXBwZXJDYXNlKCk7XG59O1xuXG5jb21tYW5kcy5zZXRPcmllbnRhdGlvbiA9IGFzeW5jIGZ1bmN0aW9uIHNldE9yaWVudGF0aW9uIChvcmllbnRhdGlvbikge1xuICBvcmllbnRhdGlvbiA9IG9yaWVudGF0aW9uLnRvVXBwZXJDYXNlKCk7XG4gIGxldCBwYXJhbXMgPSB7XG4gICAgb3JpZW50YXRpb24sXG4gICAgbmF0dXJhbE9yaWVudGF0aW9uOiAhIXRoaXMub3B0cy5hbmRyb2lkTmF0dXJhbE9yaWVudGF0aW9uLFxuICB9O1xuICByZXR1cm4gYXdhaXQgdGhpcy5ib290c3RyYXAuc2VuZEFjdGlvbignb3JpZW50YXRpb24nLCBwYXJhbXMpO1xufTtcblxuY29tbWFuZHMuZmFrZUZsaWNrID0gYXN5bmMgZnVuY3Rpb24gZmFrZUZsaWNrICh4U3BlZWQsIHlTcGVlZCkge1xuICByZXR1cm4gYXdhaXQgdGhpcy5ib290c3RyYXAuc2VuZEFjdGlvbignZmxpY2snLCB7eFNwZWVkLCB5U3BlZWR9KTtcbn07XG5cbmNvbW1hbmRzLmZha2VGbGlja0VsZW1lbnQgPSBhc3luYyBmdW5jdGlvbiBmYWtlRmxpY2tFbGVtZW50IChlbGVtZW50SWQsIHhvZmZzZXQsIHlvZmZzZXQsIHNwZWVkKSB7XG4gIGxldCBwYXJhbXMgPSB7eG9mZnNldCwgeW9mZnNldCwgc3BlZWQsIGVsZW1lbnRJZH07XG4gIHJldHVybiBhd2FpdCB0aGlzLmJvb3RzdHJhcC5zZW5kQWN0aW9uKCdlbGVtZW50OmZsaWNrJywgcGFyYW1zKTtcbn07XG5cbmNvbW1hbmRzLnN3aXBlID0gYXN5bmMgZnVuY3Rpb24gc3dpcGUgKHN0YXJ0WCwgc3RhcnRZLCBlbmRYLCBlbmRZLCBkdXJhdGlvbiwgdG91Y2hDb3VudCwgZWxJZCkge1xuICBpZiAoc3RhcnRYID09PSAnbnVsbCcpIHtcbiAgICBzdGFydFggPSAwLjU7XG4gIH1cbiAgaWYgKHN0YXJ0WSA9PT0gJ251bGwnKSB7XG4gICAgc3RhcnRZID0gMC41O1xuICB9XG4gIGxldCBzd2lwZU9wdHMgPSB7c3RhcnRYLCBzdGFydFksIGVuZFgsIGVuZFksXG4gICAgICAgICAgICAgICAgICAgc3RlcHM6IE1hdGgucm91bmQoZHVyYXRpb24gKiBzd2lwZVN0ZXBzUGVyU2VjKX07XG4gIC8vIGdvaW5nIHRoZSBsb25nIHdheSBhbmQgY2hlY2tpbmcgZm9yIHVuZGVmaW5lZCBhbmQgbnVsbCBzaW5jZVxuICAvLyB3ZSBjYW4ndCBiZSBhc3N1cmVkIGBlbElkYCBpcyBhIHN0cmluZyBhbmQgbm90IGFuIGludFxuICBpZiAodXRpbC5oYXNWYWx1ZShlbElkKSkge1xuICAgIHN3aXBlT3B0cy5lbGVtZW50SWQgPSBlbElkO1xuICB9XG4gIHJldHVybiBhd2FpdCB0aGlzLmRvU3dpcGUoc3dpcGVPcHRzKTtcbn07XG5cbmNvbW1hbmRzLmRvU3dpcGUgPSBhc3luYyBmdW5jdGlvbiBkb1N3aXBlIChzd2lwZU9wdHMpIHtcbiAgaWYgKHV0aWwuaGFzVmFsdWUoc3dpcGVPcHRzLmVsZW1lbnRJZCkpIHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5ib290c3RyYXAuc2VuZEFjdGlvbignZWxlbWVudDpzd2lwZScsIHN3aXBlT3B0cyk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuYm9vdHN0cmFwLnNlbmRBY3Rpb24oJ3N3aXBlJywgc3dpcGVPcHRzKTtcbiAgfVxufTtcblxuY29tbWFuZHMucGluY2hDbG9zZSA9IGFzeW5jIGZ1bmN0aW9uIHBpbmNoQ2xvc2UgKHN0YXJ0WCwgc3RhcnRZLCBlbmRYLCBlbmRZLCBkdXJhdGlvbiwgcGVyY2VudCwgc3RlcHMsIGVsSWQpIHtcbiAgbGV0IHBpbmNoT3B0cyA9IHtcbiAgICBkaXJlY3Rpb246ICdpbicsXG4gICAgZWxlbWVudElkOiBlbElkLFxuICAgIHBlcmNlbnQsXG4gICAgc3RlcHNcbiAgfTtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuYm9vdHN0cmFwLnNlbmRBY3Rpb24oJ2VsZW1lbnQ6cGluY2gnLCBwaW5jaE9wdHMpO1xufTtcblxuY29tbWFuZHMucGluY2hPcGVuID0gYXN5bmMgZnVuY3Rpb24gcGluY2hPcGVuIChzdGFydFgsIHN0YXJ0WSwgZW5kWCwgZW5kWSwgZHVyYXRpb24sIHBlcmNlbnQsIHN0ZXBzLCBlbElkKSB7XG4gIGxldCBwaW5jaE9wdHMgPSB7ZGlyZWN0aW9uOiAnb3V0JywgZWxlbWVudElkOiBlbElkLCBwZXJjZW50LCBzdGVwc307XG4gIHJldHVybiBhd2FpdCB0aGlzLmJvb3RzdHJhcC5zZW5kQWN0aW9uKCdlbGVtZW50OnBpbmNoJywgcGluY2hPcHRzKTtcbn07XG5cbmNvbW1hbmRzLmZsaWNrID0gYXN5bmMgZnVuY3Rpb24gZmxpY2sgKGVsZW1lbnQsIHhTcGVlZCwgeVNwZWVkLCB4T2Zmc2V0LCB5T2Zmc2V0LCBzcGVlZCkge1xuICBpZiAoZWxlbWVudCkge1xuICAgIGF3YWl0IHRoaXMuZmFrZUZsaWNrRWxlbWVudChlbGVtZW50LCB4T2Zmc2V0LCB5T2Zmc2V0LCBzcGVlZCk7XG4gIH0gZWxzZSB7XG4gICAgYXdhaXQgdGhpcy5mYWtlRmxpY2soeFNwZWVkLCB5U3BlZWQpO1xuICB9XG59O1xuXG5jb21tYW5kcy5kcmFnID0gYXN5bmMgZnVuY3Rpb24gZHJhZyAoc3RhcnRYLCBzdGFydFksIGVuZFgsIGVuZFksIGR1cmF0aW9uLCB0b3VjaENvdW50LCBlbGVtZW50SWQsIGRlc3RFbElkKSB7XG4gIGxldCBkcmFnT3B0cyA9IHtcbiAgICBlbGVtZW50SWQsIGRlc3RFbElkLCBzdGFydFgsIHN0YXJ0WSwgZW5kWCwgZW5kWSxcbiAgICBzdGVwczogTWF0aC5yb3VuZChkdXJhdGlvbiAqIGRyYWdTdGVwc1BlclNlYylcbiAgfTtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuZG9EcmFnKGRyYWdPcHRzKTtcblxufTtcblxuY29tbWFuZHMuZG9EcmFnID0gYXN5bmMgZnVuY3Rpb24gZG9EcmFnIChkcmFnT3B0cykge1xuICBpZiAodXRpbC5oYXNWYWx1ZShkcmFnT3B0cy5lbGVtZW50SWQpKSB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuYm9vdHN0cmFwLnNlbmRBY3Rpb24oJ2VsZW1lbnQ6ZHJhZycsIGRyYWdPcHRzKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5ib290c3RyYXAuc2VuZEFjdGlvbignZHJhZycsIGRyYWdPcHRzKTtcbiAgfVxufTtcblxuY29tbWFuZHMubG9jayA9IGFzeW5jIGZ1bmN0aW9uIGxvY2sgKHNlY29uZHMpIHtcbiAgYXdhaXQgdGhpcy5hZGIubG9jaygpO1xuICBpZiAoaXNOYU4oc2Vjb25kcykpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBmbG9hdFNlY29uZHMgPSBwYXJzZUZsb2F0KHNlY29uZHMpO1xuICBpZiAoZmxvYXRTZWNvbmRzIDw9IDApIHtcbiAgICByZXR1cm47XG4gIH1cbiAgYXdhaXQgQi5kZWxheSgxMDAwICogZmxvYXRTZWNvbmRzKTtcbiAgYXdhaXQgdGhpcy51bmxvY2soKTtcbn07XG5cbmNvbW1hbmRzLmlzTG9ja2VkID0gYXN5bmMgZnVuY3Rpb24gaXNMb2NrZWQgKCkge1xuICByZXR1cm4gYXdhaXQgdGhpcy5hZGIuaXNTY3JlZW5Mb2NrZWQoKTtcbn07XG5cbmNvbW1hbmRzLnVubG9jayA9IGFzeW5jIGZ1bmN0aW9uIHVubG9jayAoKSB7XG4gIHJldHVybiBhd2FpdCBhbmRyb2lkSGVscGVycy51bmxvY2sodGhpcywgdGhpcy5hZGIsIHRoaXMuY2Fwcyk7XG59O1xuXG5jb21tYW5kcy5vcGVuTm90aWZpY2F0aW9ucyA9IGFzeW5jIGZ1bmN0aW9uIG9wZW5Ob3RpZmljYXRpb25zICgpIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuYm9vdHN0cmFwLnNlbmRBY3Rpb24oJ29wZW5Ob3RpZmljYXRpb24nKTtcbn07XG5cbmNvbW1hbmRzLnNldExvY2F0aW9uID0gYXN5bmMgZnVuY3Rpb24gc2V0TG9jYXRpb24gKGxhdGl0dWRlLCBsb25naXR1ZGUpIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuYWRiLnNlbmRUZWxuZXRDb21tYW5kKGBnZW8gZml4ICR7bG9uZ2l0dWRlfSAke2xhdGl0dWRlfWApO1xufTtcblxuY29tbWFuZHMuZmluZ2VycHJpbnQgPSBhc3luYyBmdW5jdGlvbiBmaW5nZXJwcmludCAoZmluZ2VycHJpbnRJZCkge1xuICBpZiAoIXRoaXMuaXNFbXVsYXRvcigpKSB7XG4gICAgdGhpcy5sb2cuZXJyb3JBbmRUaHJvdygnZmluZ2VycHJpbnQgbWV0aG9kIGlzIG9ubHkgYXZhaWxhYmxlIGZvciBlbXVsYXRvcnMnKTtcbiAgfVxuICBhd2FpdCB0aGlzLmFkYi5maW5nZXJwcmludChmaW5nZXJwcmludElkKTtcbn07XG5cbmNvbW1hbmRzLnNlbmRTTVMgPSBhc3luYyBmdW5jdGlvbiBzZW5kU01TIChwaG9uZU51bWJlciwgbWVzc2FnZSkge1xuICBpZiAoIXRoaXMuaXNFbXVsYXRvcigpKSB7XG4gICAgdGhpcy5sb2cuZXJyb3JBbmRUaHJvdygnc2VuZFNNUyBtZXRob2QgaXMgb25seSBhdmFpbGFibGUgZm9yIGVtdWxhdG9ycycpO1xuICB9XG4gIGF3YWl0IHRoaXMuYWRiLnNlbmRTTVMocGhvbmVOdW1iZXIsIG1lc3NhZ2UpO1xufTtcblxuY29tbWFuZHMuZ3NtQ2FsbCA9IGFzeW5jIGZ1bmN0aW9uIGdzbUNhbGwgKHBob25lTnVtYmVyLCBhY3Rpb24pIHtcbiAgaWYgKCF0aGlzLmlzRW11bGF0b3IoKSkge1xuICAgIHRoaXMubG9nLmVycm9yQW5kVGhyb3coJ2dzbUNhbGwgbWV0aG9kIGlzIG9ubHkgYXZhaWxhYmxlIGZvciBlbXVsYXRvcnMnKTtcbiAgfVxuICBhd2FpdCB0aGlzLmFkYi5nc21DYWxsKHBob25lTnVtYmVyLCBhY3Rpb24pO1xufTtcblxuY29tbWFuZHMuZ3NtU2lnbmFsID0gYXN5bmMgZnVuY3Rpb24gZ3NtU2lnbmFsIChzaWduYWxTdHJlbmdoKSB7XG4gIGlmICghdGhpcy5pc0VtdWxhdG9yKCkpIHtcbiAgICB0aGlzLmxvZy5lcnJvckFuZFRocm93KCdnc21TaWduYWwgbWV0aG9kIGlzIG9ubHkgYXZhaWxhYmxlIGZvciBlbXVsYXRvcnMnKTtcbiAgfVxuICBhd2FpdCB0aGlzLmFkYi5nc21TaWduYWwoc2lnbmFsU3RyZW5naCk7XG59O1xuXG5jb21tYW5kcy5nc21Wb2ljZSA9IGFzeW5jIGZ1bmN0aW9uIGdzbVZvaWNlIChzdGF0ZSkge1xuICBpZiAoIXRoaXMuaXNFbXVsYXRvcigpKSB7XG4gICAgdGhpcy5sb2cuZXJyb3JBbmRUaHJvdygnZ3NtVm9pY2UgbWV0aG9kIGlzIG9ubHkgYXZhaWxhYmxlIGZvciBlbXVsYXRvcnMnKTtcbiAgfVxuICBhd2FpdCB0aGlzLmFkYi5nc21Wb2ljZShzdGF0ZSk7XG59O1xuXG5jb21tYW5kcy5wb3dlckFDID0gYXN5bmMgZnVuY3Rpb24gcG93ZXJBQyAoc3RhdGUpIHtcbiAgaWYgKCF0aGlzLmlzRW11bGF0b3IoKSkge1xuICAgIHRoaXMubG9nLmVycm9yQW5kVGhyb3coJ3Bvd2VyQUMgbWV0aG9kIGlzIG9ubHkgYXZhaWxhYmxlIGZvciBlbXVsYXRvcnMnKTtcbiAgfVxuICBhd2FpdCB0aGlzLmFkYi5wb3dlckFDKHN0YXRlKTtcbn07XG5cbmNvbW1hbmRzLnBvd2VyQ2FwYWNpdHkgPSBhc3luYyBmdW5jdGlvbiBwb3dlckNhcGFjaXR5IChiYXR0ZXJ5UGVyY2VudCkge1xuICBpZiAoIXRoaXMuaXNFbXVsYXRvcigpKSB7XG4gICAgdGhpcy5sb2cuZXJyb3JBbmRUaHJvdygncG93ZXJDYXBhY2l0eSBtZXRob2QgaXMgb25seSBhdmFpbGFibGUgZm9yIGVtdWxhdG9ycycpO1xuICB9XG4gIGF3YWl0IHRoaXMuYWRiLnBvd2VyQ2FwYWNpdHkoYmF0dGVyeVBlcmNlbnQpO1xufTtcblxuY29tbWFuZHMubmV0d29ya1NwZWVkID0gYXN5bmMgZnVuY3Rpb24gbmV0d29ya1NwZWVkIChuZXR3b3JrU3BlZWQpIHtcbiAgaWYgKCF0aGlzLmlzRW11bGF0b3IoKSkge1xuICAgIHRoaXMubG9nLmVycm9yQW5kVGhyb3coJ25ldHdvcmtTcGVlZCBtZXRob2QgaXMgb25seSBhdmFpbGFibGUgZm9yIGVtdWxhdG9ycycpO1xuICB9XG4gIGF3YWl0IHRoaXMuYWRiLm5ldHdvcmtTcGVlZChuZXR3b3JrU3BlZWQpO1xufTtcblxuLyoqXG4gKiBFbXVsYXRlIHNlbnNvcnMgdmFsdWVzIG9uIHRoZSBjb25uZWN0ZWQgZW11bGF0b3IuXG4gKlxuICogQHR5cGVkZWYge09iamVjdH0gU2Vuc29yXG4gKiBAcHJvcGVydHkge3N0cmluZ30gc2Vuc29yVHlwZSAtIHNlbnNvciB0eXBlIGRlY2xhcmVkIGluIGFkYi5TRU5TT1JTXG4gKiBAcHJvcGVydHkge3N0cmluZ30gdmFsdWUgLSB2YWx1ZSB0byBzZXQgdG8gdGhlIHNlbnNvclxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBTZW5zb3JcbiAqIEB0aHJvd3Mge0Vycm9yfSAtIElmIHNlbnNvclR5cGUgaXMgbm90IGRlZmluZWRcbiAqIEB0aHJvd3Mge0Vycm9yfSAtIElmIHZhbHVlIGZvciB0aGUgc2Ugc29yIGlzIG5vdCBkZWZpbmVkXG4gKiBAdGhyb3dzIHtFcnJvcn0gLSBJZiBkZXZpY2VUeXBlIGlzIG5vdCBhbiBlbXVsYXRvclxuICovXG5jb21tYW5kcy5zZW5zb3JTZXQgPSBhc3luYyBmdW5jdGlvbiBzZW5zb3JTZXQgKHNlbnNvciA9IHt9KSB7XG4gIGNvbnN0IHtzZW5zb3JUeXBlLCB2YWx1ZX0gPSBzZW5zb3I7XG4gIGlmICghdXRpbC5oYXNWYWx1ZShzZW5zb3JUeXBlKSkge1xuICAgIHRoaXMubG9nLmVycm9yQW5kVGhyb3coYCdzZW5zb3JUeXBlJyBhcmd1bWVudCBpcyByZXF1aXJlZGApO1xuICB9XG4gIGlmICghdXRpbC5oYXNWYWx1ZSh2YWx1ZSkpIHtcbiAgICB0aGlzLmxvZy5lcnJvckFuZFRocm93KGAndmFsdWUnIGFyZ3VtZW50IGlzIHJlcXVpcmVkYCk7XG4gIH1cbiAgaWYgKCF0aGlzLmlzRW11bGF0b3IoKSkge1xuICAgIHRoaXMubG9nLmVycm9yQW5kVGhyb3coJ3NlbnNvclNldCBtZXRob2QgaXMgb25seSBhdmFpbGFibGUgZm9yIGVtdWxhdG9ycycpO1xuICB9XG4gIGF3YWl0IHRoaXMuYWRiLnNlbnNvclNldChzZW5zb3JUeXBlLCB2YWx1ZSk7XG59O1xuXG5oZWxwZXJzLmdldFNjcmVlbnNob3REYXRhV2l0aEFkYlNoZWxsID0gYXN5bmMgZnVuY3Rpb24gZ2V0U2NyZWVuc2hvdERhdGFXaXRoQWRiU2hlbGwgKGFkYiwgb3B0cykge1xuICBjb25zdCBsb2NhbEZpbGUgPSBhd2FpdCB0ZW1wRGlyLnBhdGgoe3ByZWZpeDogJ2FwcGl1bScsIHN1ZmZpeDogJy5wbmcnfSk7XG4gIGlmIChhd2FpdCBmcy5leGlzdHMobG9jYWxGaWxlKSkge1xuICAgIGF3YWl0IGZzLnVubGluayhsb2NhbEZpbGUpO1xuICB9XG4gIHRyeSB7XG4gICAgY29uc3QgcG5nRGlyID0gb3B0cy5hbmRyb2lkU2NyZWVuc2hvdFBhdGggfHwgJy9kYXRhL2xvY2FsL3RtcC8nO1xuICAgIGNvbnN0IHBuZyA9IHBhdGgucG9zaXgucmVzb2x2ZShwbmdEaXIsICdzY3JlZW5zaG90LnBuZycpO1xuICAgIGNvbnN0IGNtZCA9IFsnL3N5c3RlbS9iaW4vcm0nLCBgJHtwbmd9O2AsICcvc3lzdGVtL2Jpbi9zY3JlZW5jYXAnLCAnLXAnLCBwbmddO1xuICAgIGF3YWl0IGFkYi5zaGVsbChjbWQpO1xuICAgIGlmICghYXdhaXQgYWRiLmZpbGVTaXplKHBuZykpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIHNpemUgb2YgdGhlIHRha2VuIHNjcmVlbnNob3QgZXF1YWxzIHRvIHplcm8uJyk7XG4gICAgfVxuICAgIGF3YWl0IGFkYi5wdWxsKHBuZywgbG9jYWxGaWxlKTtcbiAgICByZXR1cm4gYXdhaXQgamltcC5yZWFkKGxvY2FsRmlsZSk7XG4gIH0gZmluYWxseSB7XG4gICAgaWYgKGF3YWl0IGZzLmV4aXN0cyhsb2NhbEZpbGUpKSB7XG4gICAgICBhd2FpdCBmcy51bmxpbmsobG9jYWxGaWxlKTtcbiAgICB9XG4gIH1cbn07XG5cbmhlbHBlcnMuZ2V0U2NyZWVuc2hvdERhdGFXaXRoQWRiRXhlY091dCA9IGFzeW5jIGZ1bmN0aW9uIGdldFNjcmVlbnNob3REYXRhV2l0aEFkYkV4ZWNPdXQgKGFkYikge1xuICBsZXQge3N0ZG91dCwgc3RkZXJyLCBjb2RlfSA9IGF3YWl0IGV4ZWMoYWRiLmV4ZWN1dGFibGUucGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkYi5leGVjdXRhYmxlLmRlZmF1bHRBcmdzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5jb25jYXQoWydleGVjLW91dCcsICcvc3lzdGVtL2Jpbi9zY3JlZW5jYXAnLCAnLXAnXSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZW5jb2Rpbmc6ICdiaW5hcnknLCBpc0J1ZmZlcjogdHJ1ZX0pO1xuICAvLyBpZiB0aGVyZSBpcyBhbiBlcnJvciwgdGhyb3dcbiAgaWYgKGNvZGUgfHwgc3RkZXJyLmxlbmd0aCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgU2NyZWVuc2hvdCByZXR1cm5lZCBlcnJvciwgY29kZTogJyR7Y29kZX0nLCBzdGRlcnI6ICcke3N0ZGVyci50b1N0cmluZygpfSdgKTtcbiAgfVxuICAvLyBpZiB3ZSBkb24ndCBnZXQgYW55dGhpbmcgYXQgYWxsLCB0aHJvd1xuICBpZiAoIXN0ZG91dC5sZW5ndGgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1NjcmVlbnNob3QgcmV0dXJuZWQgbm8gZGF0YScpO1xuICB9XG5cbiAgcmV0dXJuIGF3YWl0IGppbXAucmVhZChzdGRvdXQpO1xufTtcblxuY29tbWFuZHMuZ2V0U2NyZWVuc2hvdCA9IGFzeW5jIGZ1bmN0aW9uIGdldFNjcmVlbnNob3QgKCkge1xuICBjb25zdCBhcGlMZXZlbCA9IGF3YWl0IHRoaXMuYWRiLmdldEFwaUxldmVsKCk7XG4gIGxldCBpbWFnZSA9IG51bGw7XG4gIGlmIChhcGlMZXZlbCA+IDIwKSB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIFRoaXMgc2NyZWVuc2hvdGluZyBhcHByb2FjaCBpcyB3YXkgZmFzdGVyLCBzaW5jZSBpdCByZXF1aXJlcyBsZXNzIGV4dGVybmFsIGNvbW1hbmRzXG4gICAgICAvLyB0byBiZSBleGVjdXRlZC4gVW5mb3J0dW5hdGVseSwgZXhlYy1vdXQgb3B0aW9uIGlzIG9ubHkgc3VwcG9ydGVkIGJ5IG5ld2VyIEFuZHJvaWQvU0RLIHZlcnNpb25zICg1LjAgYW5kIGxhdGVyKVxuICAgICAgaW1hZ2UgPSBhd2FpdCB0aGlzLmdldFNjcmVlbnNob3REYXRhV2l0aEFkYkV4ZWNPdXQodGhpcy5hZGIpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMubG9nLmluZm8oYENhbm5vdCBnZXQgc2NyZWVuc2hvdCBkYXRhIHdpdGggJ2FkYiBleGVjLW91dCcgYmVjYXVzZSBvZiAnJHtlLm1lc3NhZ2V9Jy4gYCArXG4gICAgICAgIGBEZWZhdWx0aW5nIHRvICdhZGIgc2hlbGwnIGNhbGxgKTtcbiAgICB9XG4gIH1cbiAgaWYgKCFpbWFnZSkge1xuICAgIHRyeSB7XG4gICAgICBpbWFnZSA9IGF3YWl0IHRoaXMuZ2V0U2NyZWVuc2hvdERhdGFXaXRoQWRiU2hlbGwodGhpcy5hZGIsIHRoaXMub3B0cyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc3QgZXJyID0gYENhbm5vdCBnZXQgc2NyZWVuc2hvdCBkYXRhIGJlY2F1c2Ugb2YgJyR7ZS5tZXNzYWdlfScuIGAgK1xuICAgICAgICBgTWFrZSBzdXJlIHRoZSAnTGF5b3V0UGFyYW1zLkZMQUdfU0VDVVJFJyBpcyBub3Qgc2V0IGZvciBgICtcbiAgICAgICAgYHRoZSBjdXJyZW50IHZpZXdgO1xuICAgICAgdGhpcy5sb2cuZXJyb3JBbmRUaHJvdyhlcnIpO1xuICAgIH1cbiAgfVxuICBpZiAoYXBpTGV2ZWwgPCAyMykge1xuICAgIC8vIEFuZHJvaWQgYnVnIDg0MzM3NDIgLSByb3RhdGUgc2NyZWVuc2hvdCBpZiBzY3JlZW4gaXMgcm90YXRlZFxuICAgIGxldCBzY3JlZW5PcmllbnRhdGlvbiA9IGF3YWl0IHRoaXMuYWRiLmdldFNjcmVlbk9yaWVudGF0aW9uKCk7XG4gICAgdHJ5IHtcbiAgICAgIGltYWdlID0gYXdhaXQgaW1hZ2Uucm90YXRlKC05MCAqIHNjcmVlbk9yaWVudGF0aW9uKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHRoaXMubG9nLndhcm4oYENvdWxkIG5vdCByb3RhdGUgc2NyZWVuc2hvdCBkdWUgdG8gZXJyb3I6ICR7ZXJyfWApO1xuICAgIH1cbiAgfVxuICBjb25zdCBnZXRCdWZmZXIgPSBCLnByb21pc2lmeShpbWFnZS5nZXRCdWZmZXIsIHtjb250ZXh0OiBpbWFnZX0pO1xuICBjb25zdCBpbWdCdWZmZXIgPSBhd2FpdCBnZXRCdWZmZXIoamltcC5NSU1FX1BORyk7XG4gIHJldHVybiBpbWdCdWZmZXIudG9TdHJpbmcoJ2Jhc2U2NCcpO1xufTtcblxuT2JqZWN0LmFzc2lnbihleHRlbnNpb25zLCBjb21tYW5kcywgaGVscGVycyk7XG5leHBvcnQgeyBjb21tYW5kcywgaGVscGVycyB9O1xuZXhwb3J0IGRlZmF1bHQgZXh0ZW5zaW9ucztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7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
|
|
@@ -7,7 +7,7 @@ exports.helpers = exports.default = exports.commands = void 0;
|
|
|
7
7
|
|
|
8
8
|
require("source-map-support/register");
|
|
9
9
|
|
|
10
|
-
var
|
|
10
|
+
var _driver = require("appium/driver");
|
|
11
11
|
|
|
12
12
|
let commands = {},
|
|
13
13
|
helpers = {},
|
|
@@ -16,19 +16,19 @@ exports.helpers = helpers;
|
|
|
16
16
|
exports.commands = commands;
|
|
17
17
|
|
|
18
18
|
commands.getAlertText = async function getAlertText() {
|
|
19
|
-
throw new
|
|
19
|
+
throw new _driver.errors.NotYetImplementedError();
|
|
20
20
|
};
|
|
21
21
|
|
|
22
22
|
commands.setAlertText = async function setAlertText() {
|
|
23
|
-
throw new
|
|
23
|
+
throw new _driver.errors.NotYetImplementedError();
|
|
24
24
|
};
|
|
25
25
|
|
|
26
26
|
commands.postAcceptAlert = async function postAcceptAlert() {
|
|
27
|
-
throw new
|
|
27
|
+
throw new _driver.errors.NotYetImplementedError();
|
|
28
28
|
};
|
|
29
29
|
|
|
30
30
|
commands.postDismissAlert = async function postDismissAlert() {
|
|
31
|
-
throw new
|
|
31
|
+
throw new _driver.errors.NotYetImplementedError();
|
|
32
32
|
};
|
|
33
33
|
|
|
34
34
|
Object.assign(extensions, commands, helpers);
|
|
@@ -36,4 +36,4 @@ var _default = extensions;
|
|
|
36
36
|
exports.default = _default;require('source-map-support').install();
|
|
37
37
|
|
|
38
38
|
|
|
39
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,
|
|
39
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL2FsZXJ0LmpzIiwibmFtZXMiOlsiY29tbWFuZHMiLCJoZWxwZXJzIiwiZXh0ZW5zaW9ucyIsImdldEFsZXJ0VGV4dCIsImVycm9ycyIsIk5vdFlldEltcGxlbWVudGVkRXJyb3IiLCJzZXRBbGVydFRleHQiLCJwb3N0QWNjZXB0QWxlcnQiLCJwb3N0RGlzbWlzc0FsZXJ0IiwiT2JqZWN0IiwiYXNzaWduIl0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLiIsInNvdXJjZXMiOlsibGliL2NvbW1hbmRzL2FsZXJ0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIHJlcXVpcmUtYXdhaXQgKi9cbmltcG9ydCB7IGVycm9ycyB9IGZyb20gJ2FwcGl1bS9kcml2ZXInO1xuXG5sZXQgY29tbWFuZHMgPSB7fSwgaGVscGVycyA9IHt9LCBleHRlbnNpb25zID0ge307XG5cbmNvbW1hbmRzLmdldEFsZXJ0VGV4dCA9IGFzeW5jIGZ1bmN0aW9uIGdldEFsZXJ0VGV4dCAoKSB7XG4gIHRocm93IG5ldyBlcnJvcnMuTm90WWV0SW1wbGVtZW50ZWRFcnJvcigpO1xufTtcblxuY29tbWFuZHMuc2V0QWxlcnRUZXh0ID0gYXN5bmMgZnVuY3Rpb24gc2V0QWxlcnRUZXh0ICgpIHtcbiAgdGhyb3cgbmV3IGVycm9ycy5Ob3RZZXRJbXBsZW1lbnRlZEVycm9yKCk7XG59O1xuXG5jb21tYW5kcy5wb3N0QWNjZXB0QWxlcnQgPSBhc3luYyBmdW5jdGlvbiBwb3N0QWNjZXB0QWxlcnQgKCkge1xuICB0aHJvdyBuZXcgZXJyb3JzLk5vdFlldEltcGxlbWVudGVkRXJyb3IoKTtcbn07XG5cbmNvbW1hbmRzLnBvc3REaXNtaXNzQWxlcnQgPSBhc3luYyBmdW5jdGlvbiBwb3N0RGlzbWlzc0FsZXJ0ICgpIHtcbiAgdGhyb3cgbmV3IGVycm9ycy5Ob3RZZXRJbXBsZW1lbnRlZEVycm9yKCk7XG59O1xuXG5PYmplY3QuYXNzaWduKGV4dGVuc2lvbnMsIGNvbW1hbmRzLCBoZWxwZXJzKTtcbmV4cG9ydCB7IGNvbW1hbmRzLCBoZWxwZXJzIH07XG5leHBvcnQgZGVmYXVsdCBleHRlbnNpb25zO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFDQTs7QUFFQSxJQUFJQSxRQUFRLEdBQUcsRUFBZjtBQUFBLElBQW1CQyxPQUFPLEdBQUcsRUFBN0I7QUFBQSxJQUFpQ0MsVUFBVSxHQUFHLEVBQTlDOzs7O0FBRUFGLFFBQVEsQ0FBQ0csWUFBVCxHQUF3QixlQUFlQSxZQUFmLEdBQStCO0VBQ3JELE1BQU0sSUFBSUMsY0FBQSxDQUFPQyxzQkFBWCxFQUFOO0FBQ0QsQ0FGRDs7QUFJQUwsUUFBUSxDQUFDTSxZQUFULEdBQXdCLGVBQWVBLFlBQWYsR0FBK0I7RUFDckQsTUFBTSxJQUFJRixjQUFBLENBQU9DLHNCQUFYLEVBQU47QUFDRCxDQUZEOztBQUlBTCxRQUFRLENBQUNPLGVBQVQsR0FBMkIsZUFBZUEsZUFBZixHQUFrQztFQUMzRCxNQUFNLElBQUlILGNBQUEsQ0FBT0Msc0JBQVgsRUFBTjtBQUNELENBRkQ7O0FBSUFMLFFBQVEsQ0FBQ1EsZ0JBQVQsR0FBNEIsZUFBZUEsZ0JBQWYsR0FBbUM7RUFDN0QsTUFBTSxJQUFJSixjQUFBLENBQU9DLHNCQUFYLEVBQU47QUFDRCxDQUZEOztBQUlBSSxNQUFNLENBQUNDLE1BQVAsQ0FBY1IsVUFBZCxFQUEwQkYsUUFBMUIsRUFBb0NDLE9BQXBDO2VBRWVDLFUifQ==
|
|
@@ -13,11 +13,11 @@ var _lodash = _interopRequireDefault(require("lodash"));
|
|
|
13
13
|
|
|
14
14
|
var _asyncbox = require("asyncbox");
|
|
15
15
|
|
|
16
|
-
var _support = require("
|
|
16
|
+
var _support = require("appium/support");
|
|
17
17
|
|
|
18
18
|
var _androidHelpers = require("../android-helpers");
|
|
19
19
|
|
|
20
|
-
var
|
|
20
|
+
var _driver = require("appium/driver");
|
|
21
21
|
|
|
22
22
|
const APP_EXTENSIONS = ['.apk', '.apks'];
|
|
23
23
|
let commands = {};
|
|
@@ -50,19 +50,32 @@ commands.queryAppState = async function queryAppState(appId) {
|
|
|
50
50
|
};
|
|
51
51
|
|
|
52
52
|
commands.activateApp = async function activateApp(appId) {
|
|
53
|
-
|
|
54
|
-
|
|
53
|
+
this.log.debug(`Activating '${appId}'`);
|
|
54
|
+
const apiLevel = await this.adb.getApiLevel();
|
|
55
|
+
|
|
56
|
+
if (apiLevel < 24) {
|
|
57
|
+
const cmd = ['monkey', '-p', appId, '-c', 'android.intent.category.LAUNCHER', '1'];
|
|
58
|
+
let output = '';
|
|
59
|
+
|
|
60
|
+
try {
|
|
61
|
+
output = await this.adb.shell(cmd);
|
|
62
|
+
this.log.debug(`Command stdout: ${output}`);
|
|
63
|
+
} catch (e) {
|
|
64
|
+
this.log.errorAndThrow(`Cannot activate '${appId}'. Original error: ${e.message}`);
|
|
65
|
+
}
|
|
55
66
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
this.log.errorAndThrow(`Cannot activate '${appId}'. Original error: ${e.message}`);
|
|
67
|
+
if (output.includes('monkey aborted')) {
|
|
68
|
+
this.log.errorAndThrow(`Cannot activate '${appId}'. Are you sure it is installed?`);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
return;
|
|
62
72
|
}
|
|
63
73
|
|
|
64
|
-
|
|
65
|
-
|
|
74
|
+
const stdout = await this.adb.shell(['am', apiLevel < 26 ? 'start' : 'start-activity', '-a', 'android.intent.action.MAIN', '-c', 'android.intent.category.LAUNCHER', '-f', '0x10200000', '-n', await this.adb.resolveLaunchableActivity(appId)]);
|
|
75
|
+
this.log.debug(stdout);
|
|
76
|
+
|
|
77
|
+
if (/^error:/mi.test(stdout)) {
|
|
78
|
+
throw new Error(`Cannot activate '${appId}'. Original error: ${stdout}`);
|
|
66
79
|
}
|
|
67
80
|
};
|
|
68
81
|
|
|
@@ -105,7 +118,7 @@ commands.mobileClearApp = async function mobileClearApp(opts = {}) {
|
|
|
105
118
|
} = opts;
|
|
106
119
|
|
|
107
120
|
if (!appId) {
|
|
108
|
-
throw new
|
|
121
|
+
throw new _driver.errors.InvalidArgumentError(`The 'appId' argument is required`);
|
|
109
122
|
}
|
|
110
123
|
|
|
111
124
|
await this.adb.clear(appId);
|
|
@@ -115,4 +128,4 @@ var _default = commands;
|
|
|
115
128
|
exports.default = _default;require('source-map-support').install();
|
|
116
129
|
|
|
117
130
|
|
|
118
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL2FwcC1tYW5hZ2VtZW50LmpzIiwibmFtZXMiOlsiQVBQX0VYVEVOU0lPTlMiLCJjb21tYW5kcyIsImlzQXBwSW5zdGFsbGVkIiwiYXBwSWQiLCJhZGIiLCJxdWVyeUFwcFN0YXRlIiwibG9nIiwiaW5mbyIsIkFQUF9TVEFURSIsIk5PVF9JTlNUQUxMRUQiLCJwcm9jZXNzRXhpc3RzIiwiTk9UX1JVTk5JTkciLCJhcHBJZFJlIiwiUmVnRXhwIiwiXyIsImVzY2FwZVJlZ0V4cCIsImxpbmUiLCJkdW1wV2luZG93cyIsInNwbGl0IiwidGVzdCIsInNvbWUiLCJ4IiwiaW5jbHVkZXMiLCJSVU5OSU5HX0lOX0ZPUkVHUk9VTkQiLCJSVU5OSU5HX0lOX0JBQ0tHUk9VTkQiLCJhY3RpdmF0ZUFwcCIsImNtZCIsIm91dHB1dCIsImRlYnVnIiwiam9pbiIsInNoZWxsIiwiZSIsImVycm9yQW5kVGhyb3ciLCJtZXNzYWdlIiwicmVtb3ZlQXBwIiwib3B0aW9ucyIsInVuaW5zdGFsbEFwayIsInRlcm1pbmF0ZUFwcCIsImZvcmNlU3RvcCIsInRpbWVvdXQiLCJ1dGlsIiwiaGFzVmFsdWUiLCJpc05hTiIsInBhcnNlSW50Iiwid2FpdE1zIiwiaW50ZXJ2YWxNcyIsImluc3RhbGxBcHAiLCJhcHBQYXRoIiwibG9jYWxQYXRoIiwiaGVscGVycyIsImNvbmZpZ3VyZUFwcCIsImluc3RhbGwiLCJtb2JpbGVDbGVhckFwcCIsIm9wdHMiLCJlcnJvcnMiLCJJbnZhbGlkQXJndW1lbnRFcnJvciIsImNsZWFyIl0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLiIsInNvdXJjZXMiOlsibGliL2NvbW1hbmRzL2FwcC1tYW5hZ2VtZW50LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyB3YWl0Rm9yQ29uZGl0aW9uIH0gZnJvbSAnYXN5bmNib3gnO1xuaW1wb3J0IHsgdXRpbCB9IGZyb20gJ0BhcHBpdW0vc3VwcG9ydCc7XG5pbXBvcnQgeyBBUFBfU1RBVEUgfSBmcm9tICcuLi9hbmRyb2lkLWhlbHBlcnMnO1xuaW1wb3J0IHsgZXJyb3JzIH0gZnJvbSAnQGFwcGl1bS9iYXNlLWRyaXZlcic7XG5cbmNvbnN0IEFQUF9FWFRFTlNJT05TID0gWycuYXBrJywgJy5hcGtzJ107XG5cbmxldCBjb21tYW5kcyA9IHt9O1xuXG4vKipcbiAqIFZlcmlmeSB3aGV0aGVyIGFuIGFwcGxpY2F0aW9uIGlzIGluc3RhbGxlZCBvciBub3RcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYXBwSWQgLSBBcHBsaWNhdGlvbiBwYWNrYWdlIGlkZW50aWZpZXJcbiAqIEByZXR1cm5zIHtib29sZWFufSB0cnVlIGlmIHRoZSBhcHAgaXMgaW5zdGFsbGVkXG4gKi9cbmNvbW1hbmRzLmlzQXBwSW5zdGFsbGVkID0gYXN5bmMgZnVuY3Rpb24gaXNBcHBJbnN0YWxsZWQgKGFwcElkKSB7XG4gIHJldHVybiBhd2FpdCB0aGlzLmFkYi5pc0FwcEluc3RhbGxlZChhcHBJZCk7XG59O1xuXG4vKipcbiAqIFF1ZXJpZXMgdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIGFwcC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYXBwSWQgLSBBcHBsaWNhdGlvbiBwYWNrYWdlIGlkZW50aWZpZXJcbiAqIEByZXR1cm5zIHtudW1iZXJ9IFRoZSBjb3JyZXNwb25kaW5nIGNvbnN0YW50LCB3aGljaCBkZXNjcmliZXNcbiAqICAgICAgICAgICAgICAgICAgIHRoZSBjdXJyZW50IGFwcGxpY2F0aW9uIHN0YXRlOlxuICogMCAtIGlzIHRoZSBhcHAgaXMgbm90IGluc3RhbGxlZFxuICogMSAtIGlmIHRoZSBhcHAgaXMgaW5zdGFsbGVkLCBidXQgaXMgbm90IHJ1bm5pbmdcbiAqIDMgLSBpZiB0aGUgYXBwIGlzIHJ1bm5pbmcgaW4gdGhlIGJhY2tncm91bmRcbiAqIDQgLSBpZiB0aGUgYXBwIGlzIHJ1bm5pbmcgaW4gdGhlIGZvcmVncm91bmRcbiAqL1xuY29tbWFuZHMucXVlcnlBcHBTdGF0ZSA9IGFzeW5jIGZ1bmN0aW9uIHF1ZXJ5QXBwU3RhdGUgKGFwcElkKSB7XG4gIHRoaXMubG9nLmluZm8oYFF1ZXJ5aW5nIHRoZSBzdGF0ZSBvZiAnJHthcHBJZH0nYCk7XG4gIGlmICghYXdhaXQgdGhpcy5hZGIuaXNBcHBJbnN0YWxsZWQoYXBwSWQpKSB7XG4gICAgcmV0dXJuIEFQUF9TVEFURS5OT1RfSU5TVEFMTEVEO1xuICB9XG4gIGlmICghYXdhaXQgdGhpcy5hZGIucHJvY2Vzc0V4aXN0cyhhcHBJZCkpIHtcbiAgICByZXR1cm4gQVBQX1NUQVRFLk5PVF9SVU5OSU5HO1xuICB9XG4gIGNvbnN0IGFwcElkUmUgPSBuZXcgUmVnRXhwKGBcXFxcYiR7Xy5lc2NhcGVSZWdFeHAoYXBwSWQpfS9gKTtcbiAgZm9yIChjb25zdCBsaW5lIG9mIChhd2FpdCB0aGlzLmFkYi5kdW1wV2luZG93cygpKS5zcGxpdCgnXFxuJykpIHtcbiAgICBpZiAoYXBwSWRSZS50ZXN0KGxpbmUpICYmIFsnbUN1cnJlbnRGb2N1cycsICdtRm9jdXNlZEFwcCddLnNvbWUoKHgpID0+IGxpbmUuaW5jbHVkZXMoeCkpKSB7XG4gICAgICByZXR1cm4gQVBQX1NUQVRFLlJVTk5JTkdfSU5fRk9SRUdST1VORDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIEFQUF9TVEFURS5SVU5OSU5HX0lOX0JBQ0tHUk9VTkQ7XG59O1xuXG4vKipcbiAqIEFjdGl2YXRlcyB0aGUgZ2l2ZW4gYXBwbGljYXRpb24gb3IgbGF1bmNoZXMgaXQgaWYgbmVjZXNzYXJ5LlxuICogVGhlIGFjdGlvbiBpcyBkb25lIHdpdGggbW9ua2V5IHRvb2wgYW5kIGxpdGVyYWxseSBzaW11bGF0ZXNcbiAqIGNsaWNraW5nIHRoZSBjb3JyZXNwb25kaW5nIGFwcGxpY2F0aW9uIGljb24gb24gdGhlIGRhc2hib2FyZC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYXBwSWQgLSBBcHBsaWNhdGlvbiBwYWNrYWdlIGlkZW50aWZpZXJcbiAqL1xuY29tbWFuZHMuYWN0aXZhdGVBcHAgPSBhc3luYyBmdW5jdGlvbiBhY3RpdmF0ZUFwcCAoYXBwSWQpIHtcbiAgY29uc3QgY21kID0gWydtb25rZXknLFxuICAgIC8vIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzQ0ODYwNDc1L2hvdy10by11c2UtdGhlLW1vbmtleS1jb21tYW5kLXdpdGgtYW4tYW5kcm9pZC1zeXN0ZW0tdGhhdC1kb2VzbnQtaGF2ZS1waHlzaWNhbFxuICAgICctLXBjdC1zeXNrZXlzJywgJzAnLFxuICAgICctcCcsIGFwcElkLFxuICAgICctYycsICdhbmRyb2lkLmludGVudC5jYXRlZ29yeS5MQVVOQ0hFUicsXG4gICAgJzEnXTtcbiAgbGV0IG91dHB1dCA9ICcnO1xuICB0cnkge1xuICAgIHRoaXMubG9nLmRlYnVnKGBBY3RpdmF0aW5nICcke2FwcElkfScgd2l0aCAnYWRiIHNoZWxsICR7Y21kLmpvaW4oJyAnKX0nIGNvbW1hbmRgKTtcbiAgICBvdXRwdXQgPSBhd2FpdCB0aGlzLmFkYi5zaGVsbChjbWQpO1xuICAgIHRoaXMubG9nLmRlYnVnKGBDb21tYW5kIHN0ZG91dDogJHtvdXRwdXR9YCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICB0aGlzLmxvZy5lcnJvckFuZFRocm93KGBDYW5ub3QgYWN0aXZhdGUgJyR7YXBwSWR9Jy4gT3JpZ2luYWwgZXJyb3I6ICR7ZS5tZXNzYWdlfWApO1xuICB9XG4gIGlmIChvdXRwdXQuaW5jbHVkZXMoJ21vbmtleSBhYm9ydGVkJykpIHtcbiAgICB0aGlzLmxvZy5lcnJvckFuZFRocm93KGBDYW5ub3QgYWN0aXZhdGUgJyR7YXBwSWR9Jy4gQXJlIHlvdSBzdXJlIGl0IGlzIGluc3RhbGxlZD9gKTtcbiAgfVxufTtcblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBVbmluc3RhbGxPcHRpb25zXG4gKiBAcHJvcGVydHkge251bWJlcn0gdGltZW91dCBbMjAwMDBdIC0gVGhlIGNvdW50IG9mIG1pbGxpc2Vjb25kcyB0byB3YWl0IHVudGlsIHRoZVxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcCBpcyB1bmluc3RhbGxlZC5cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0ga2VlcERhdGEgW2ZhbHNlXSAtIFNldCB0byB0cnVlIGluIG9yZGVyIHRvIGtlZXAgdGhlXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbiBkYXRhIGFuZCBjYWNoZSBmb2xkZXJzIGFmdGVyIHVuaW5zdGFsbC5cbiAqL1xuXG4vKipcbiAqIFJlbW92ZSB0aGUgY29ycmVzcG9uZGluZyBhcHBsaWNhdGlvbiBpZiBpcyBpbnN0YWxsZWQuXG4gKiBUaGUgY2FsbCBpcyBpZ25vcmVkIGlmIHRoZSBhcHAgaXMgbm90IGluc3RhbGxlZC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYXBwSWQgLSBBcHBsaWNhdGlvbiBwYWNrYWdlIGlkZW50aWZpZXJcbiAqIEBwYXJhbSB7P1VuaW5zdGFsbE9wdGlvbnN9IG9wdGlvbnMgLSBUaGUgc2V0IG9mIHJlbW92YWwgb3B0aW9uc1xuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdGhlIHBhY2thZ2Ugd2FzIGZvdW5kIG9uIHRoZSBkZXZpY2UgYW5kXG4gKiAgICAgICAgICAgICAgICAgICAgc3VjY2Vzc2Z1bGx5IHVuaW5zdGFsbGVkLlxuICovXG5jb21tYW5kcy5yZW1vdmVBcHAgPSBhc3luYyBmdW5jdGlvbiByZW1vdmVBcHAgKGFwcElkLCBvcHRpb25zID0ge30pIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuYWRiLnVuaW5zdGFsbEFwayhhcHBJZCwgb3B0aW9ucyk7XG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IFRlcm1pbmF0ZU9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfHN0cmluZ30gdGltZW91dCBbNTAwXSAtIFRoZSBjb3VudCBvZiBtaWxsaXNlY29uZHMgdG8gd2FpdCB1bnRpbCB0aGVcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcCBpcyB0ZXJtaW5hdGVkLlxuICovXG5cbi8qKlxuICogVGVybWluYXRlcyB0aGUgYXBwIGlmIGl0IGlzIHJ1bm5pbmcuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGFwcElkIC0gQXBwbGljYXRpb24gcGFja2FnZSBpZGVudGlmaWVyXG4gKiBAcGFyYW0gez9UZXJtaW5hdGVPcHRpb25zfSBvcHRpb25zIC0gVGhlIHNldCBvZiBhcHBsaWNhdGlvbiB0ZXJtaW5hdGlvbiBvcHRpb25zXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUgYXBwIGhhcyBiZWVuIHN1Y2Nlc3NmdWxseSB0ZXJtaW5hdGVkLlxuICogQHRocm93cyB7RXJyb3J9IGlmIHRoZSBhcHAgaGFzIG5vdCBiZWVuIHRlcm1pbmF0ZWQgd2l0aGluIHRoZSBnaXZlbiB0aW1lb3V0LlxuICovXG5jb21tYW5kcy50ZXJtaW5hdGVBcHAgPSBhc3luYyBmdW5jdGlvbiB0ZXJtaW5hdGVBcHAgKGFwcElkLCBvcHRpb25zID0ge30pIHtcbiAgdGhpcy5sb2cuaW5mbyhgVGVybWluYXRpbmcgJyR7YXBwSWR9J2ApO1xuICBpZiAoIShhd2FpdCB0aGlzLmFkYi5wcm9jZXNzRXhpc3RzKGFwcElkKSkpIHtcbiAgICB0aGlzLmxvZy5pbmZvKGBUaGUgYXBwICcke2FwcElkfScgaXMgbm90IHJ1bm5pbmdgKTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgYXdhaXQgdGhpcy5hZGIuZm9yY2VTdG9wKGFwcElkKTtcbiAgY29uc3QgdGltZW91dCA9IHV0aWwuaGFzVmFsdWUob3B0aW9ucy50aW1lb3V0KSAmJiAhaXNOYU4ob3B0aW9ucy50aW1lb3V0KSA/IHBhcnNlSW50KG9wdGlvbnMudGltZW91dCwgMTApIDogNTAwO1xuICB0cnkge1xuICAgIGF3YWl0IHdhaXRGb3JDb25kaXRpb24oYXN5bmMgKCkgPT4gYXdhaXQgdGhpcy5xdWVyeUFwcFN0YXRlKGFwcElkKSA8PSBBUFBfU1RBVEUuTk9UX1JVTk5JTkcsXG4gICAgICB7d2FpdE1zOiB0aW1lb3V0LCBpbnRlcnZhbE1zOiAxMDB9KTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHRoaXMubG9nLmVycm9yQW5kVGhyb3coYCcke2FwcElkfScgaXMgc3RpbGwgcnVubmluZyBhZnRlciAke3RpbWVvdXR9bXMgdGltZW91dGApO1xuICB9XG4gIHRoaXMubG9nLmluZm8oYCcke2FwcElkfScgaGFzIGJlZW4gc3VjY2Vzc2Z1bGx5IHRlcm1pbmF0ZWRgKTtcbiAgcmV0dXJuIHRydWU7XG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IEluc3RhbGxPcHRpb25zXG4gKiBAcHJvcGVydHkge251bWJlcn0gdGltZW91dCBbNjAwMDBdIC0gVGhlIGNvdW50IG9mIG1pbGxpc2Vjb25kcyB0byB3YWl0IHVudGlsIHRoZVxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcCBpcyBpbnN0YWxsZWQuXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IGFsbG93VGVzdFBhY2thZ2VzIFtmYWxzZV0gLSBTZXQgdG8gdHJ1ZSBpbiBvcmRlciB0byBhbGxvdyB0ZXN0XG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWNrYWdlcyBpbnN0YWxsYXRpb24uXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IHVzZVNkY2FyZCBbZmFsc2VdIC0gU2V0IHRvIHRydWUgdG8gaW5zdGFsbCB0aGUgYXBwIG9uIHNkY2FyZFxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RlYWQgb2YgdGhlIGRldmljZSBtZW1vcnkuXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IGdyYW50UGVybWlzc2lvbnMgW2ZhbHNlXSAtIFNldCB0byB0cnVlIGluIG9yZGVyIHRvIGdyYW50IGFsbCB0aGVcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVybWlzc2lvbnMgcmVxdWVzdGVkIGluIHRoZSBhcHBsaWNhdGlvbidzIG1hbmlmZXN0XG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9tYXRpY2FsbHkgYWZ0ZXIgdGhlIGluc3RhbGxhdGlvbiBpcyBjb21wbGV0ZWRcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZXIgQW5kcm9pZCA2Ky5cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gcmVwbGFjZSBbdHJ1ZV0gLSBTZXQgaXQgdG8gZmFsc2UgaWYgeW91IGRvbid0IHdhbnRcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgYXBwbGljYXRpb24gdG8gYmUgdXBncmFkZWQvcmVpbnN0YWxsZWRcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBpdCBpcyBhbHJlYWR5IHByZXNlbnQgb24gdGhlIGRldmljZS5cbiAqL1xuXG4vKipcbiAqIEluc3RhbGxzIHRoZSBnaXZlbiBhcHBsaWNhdGlvbiB0byB0aGUgZGV2aWNlIHVuZGVyIHRlc3RcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYXBwUGF0aCAtIFRoZSBsb2NhbCBhcGsgcGF0aCBvciBhIHJlbW90ZSB1cmxcbiAqIEBwYXJhbSB7P0luc3RhbGxPcHRpb25zfSBvcHRpb25zIC0gVGhlIHNldCBvZiBpbnN0YWxsYXRpb24gb3B0aW9uc1xuICogQHRocm93cyB7RXJyb3J9IGlmIHRoZSBnaXZlbiBhcGsgZG9lcyBub3QgZXhpc3Qgb3IgaXMgbm90IHJlYWNoYWJsZVxuICovXG5jb21tYW5kcy5pbnN0YWxsQXBwID0gYXN5bmMgZnVuY3Rpb24gaW5zdGFsbEFwcCAoYXBwUGF0aCwgb3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IGxvY2FsUGF0aCA9IGF3YWl0IHRoaXMuaGVscGVycy5jb25maWd1cmVBcHAoYXBwUGF0aCwgQVBQX0VYVEVOU0lPTlMpO1xuICBhd2FpdCB0aGlzLmFkYi5pbnN0YWxsKGxvY2FsUGF0aCwgb3B0aW9ucyk7XG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IENsZWFyQXBwT3B0aW9uc1xuICogQHByb3BlcnR5IHshc3RyaW5nfSBhcHBJZCBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXBwbGljYXRpb24gcGFja2FnZSB0byBiZSBjbGVhcmVkXG4gKi9cblxuLyoqXG4gKiBEZWxldGVzIGFsbCBkYXRhIGFzc29jaWF0ZWQgd2l0aCBhIHBhY2thZ2UuXG4gKlxuICogQHBhcmFtIHtDbGVhckFwcE9wdGlvbnN9IG9wdHNcbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiBjbGVhbmluZyBvZiB0aGUgYXBwIGRhdGEgZmFpbHNcbiAqL1xuY29tbWFuZHMubW9iaWxlQ2xlYXJBcHAgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVDbGVhckFwcCAob3B0cyA9IHt9KSB7XG4gIGNvbnN0IHthcHBJZH0gPSBvcHRzO1xuICBpZiAoIWFwcElkKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5JbnZhbGlkQXJndW1lbnRFcnJvcihgVGhlICdhcHBJZCcgYXJndW1lbnQgaXMgcmVxdWlyZWRgKTtcbiAgfVxuICBhd2FpdCB0aGlzLmFkYi5jbGVhcihhcHBJZCk7XG59O1xuXG5leHBvcnQgeyBjb21tYW5kcyB9O1xuZXhwb3J0IGRlZmF1bHQgY29tbWFuZHM7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUEsTUFBTUEsY0FBYyxHQUFHLENBQUMsTUFBRCxFQUFTLE9BQVQsQ0FBdkI7QUFFQSxJQUFJQyxRQUFRLEdBQUcsRUFBZjs7O0FBUUFBLFFBQVEsQ0FBQ0MsY0FBVCxHQUEwQixlQUFlQSxjQUFmLENBQStCQyxLQUEvQixFQUFzQztFQUM5RCxPQUFPLE1BQU0sS0FBS0MsR0FBTCxDQUFTRixjQUFULENBQXdCQyxLQUF4QixDQUFiO0FBQ0QsQ0FGRDs7QUFlQUYsUUFBUSxDQUFDSSxhQUFULEdBQXlCLGVBQWVBLGFBQWYsQ0FBOEJGLEtBQTlCLEVBQXFDO0VBQzVELEtBQUtHLEdBQUwsQ0FBU0MsSUFBVCxDQUFlLDBCQUF5QkosS0FBTSxHQUE5Qzs7RUFDQSxJQUFJLEVBQUMsTUFBTSxLQUFLQyxHQUFMLENBQVNGLGNBQVQsQ0FBd0JDLEtBQXhCLENBQVAsQ0FBSixFQUEyQztJQUN6QyxPQUFPSywwQkFBVUMsYUFBakI7RUFDRDs7RUFDRCxJQUFJLEVBQUMsTUFBTSxLQUFLTCxHQUFMLENBQVNNLGFBQVQsQ0FBdUJQLEtBQXZCLENBQVAsQ0FBSixFQUEwQztJQUN4QyxPQUFPSywwQkFBVUcsV0FBakI7RUFDRDs7RUFDRCxNQUFNQyxPQUFPLEdBQUcsSUFBSUMsTUFBSixDQUFZLE1BQUtDLGdCQUFFQyxZQUFGLENBQWVaLEtBQWYsQ0FBc0IsR0FBdkMsQ0FBaEI7O0VBQ0EsS0FBSyxNQUFNYSxJQUFYLElBQW1CLENBQUMsTUFBTSxLQUFLWixHQUFMLENBQVNhLFdBQVQsRUFBUCxFQUErQkMsS0FBL0IsQ0FBcUMsSUFBckMsQ0FBbkIsRUFBK0Q7SUFDN0QsSUFBSU4sT0FBTyxDQUFDTyxJQUFSLENBQWFILElBQWIsS0FBc0IsQ0FBQyxlQUFELEVBQWtCLGFBQWxCLEVBQWlDSSxJQUFqQyxDQUF1Q0MsQ0FBRCxJQUFPTCxJQUFJLENBQUNNLFFBQUwsQ0FBY0QsQ0FBZCxDQUE3QyxDQUExQixFQUEwRjtNQUN4RixPQUFPYiwwQkFBVWUscUJBQWpCO0lBQ0Q7RUFDRjs7RUFDRCxPQUFPZiwwQkFBVWdCLHFCQUFqQjtBQUNELENBZkQ7O0FBd0JBdkIsUUFBUSxDQUFDd0IsV0FBVCxHQUF1QixlQUFlQSxXQUFmLENBQTRCdEIsS0FBNUIsRUFBbUM7RUFDeEQsTUFBTXVCLEdBQUcsR0FBRyxDQUFDLFFBQUQsRUFFVixlQUZVLEVBRU8sR0FGUCxFQUdWLElBSFUsRUFHSnZCLEtBSEksRUFJVixJQUpVLEVBSUosa0NBSkksRUFLVixHQUxVLENBQVo7RUFNQSxJQUFJd0IsTUFBTSxHQUFHLEVBQWI7O0VBQ0EsSUFBSTtJQUNGLEtBQUtyQixHQUFMLENBQVNzQixLQUFULENBQWdCLGVBQWN6QixLQUFNLHFCQUFvQnVCLEdBQUcsQ0FBQ0csSUFBSixDQUFTLEdBQVQsQ0FBYyxXQUF0RTtJQUNBRixNQUFNLEdBQUcsTUFBTSxLQUFLdkIsR0FBTCxDQUFTMEIsS0FBVCxDQUFlSixHQUFmLENBQWY7SUFDQSxLQUFLcEIsR0FBTCxDQUFTc0IsS0FBVCxDQUFnQixtQkFBa0JELE1BQU8sRUFBekM7RUFDRCxDQUpELENBSUUsT0FBT0ksQ0FBUCxFQUFVO0lBQ1YsS0FBS3pCLEdBQUwsQ0FBUzBCLGFBQVQsQ0FBd0Isb0JBQW1CN0IsS0FBTSxzQkFBcUI0QixDQUFDLENBQUNFLE9BQVEsRUFBaEY7RUFDRDs7RUFDRCxJQUFJTixNQUFNLENBQUNMLFFBQVAsQ0FBZ0IsZ0JBQWhCLENBQUosRUFBdUM7SUFDckMsS0FBS2hCLEdBQUwsQ0FBUzBCLGFBQVQsQ0FBd0Isb0JBQW1CN0IsS0FBTSxrQ0FBakQ7RUFDRDtBQUNGLENBbEJEOztBQXFDQUYsUUFBUSxDQUFDaUMsU0FBVCxHQUFxQixlQUFlQSxTQUFmLENBQTBCL0IsS0FBMUIsRUFBaUNnQyxPQUFPLEdBQUcsRUFBM0MsRUFBK0M7RUFDbEUsT0FBTyxNQUFNLEtBQUsvQixHQUFMLENBQVNnQyxZQUFULENBQXNCakMsS0FBdEIsRUFBNkJnQyxPQUE3QixDQUFiO0FBQ0QsQ0FGRDs7QUFrQkFsQyxRQUFRLENBQUNvQyxZQUFULEdBQXdCLGVBQWVBLFlBQWYsQ0FBNkJsQyxLQUE3QixFQUFvQ2dDLE9BQU8sR0FBRyxFQUE5QyxFQUFrRDtFQUN4RSxLQUFLN0IsR0FBTCxDQUFTQyxJQUFULENBQWUsZ0JBQWVKLEtBQU0sR0FBcEM7O0VBQ0EsSUFBSSxFQUFFLE1BQU0sS0FBS0MsR0FBTCxDQUFTTSxhQUFULENBQXVCUCxLQUF2QixDQUFSLENBQUosRUFBNEM7SUFDMUMsS0FBS0csR0FBTCxDQUFTQyxJQUFULENBQWUsWUFBV0osS0FBTSxrQkFBaEM7SUFDQSxPQUFPLEtBQVA7RUFDRDs7RUFDRCxNQUFNLEtBQUtDLEdBQUwsQ0FBU2tDLFNBQVQsQ0FBbUJuQyxLQUFuQixDQUFOO0VBQ0EsTUFBTW9DLE9BQU8sR0FBR0MsY0FBS0MsUUFBTCxDQUFjTixPQUFPLENBQUNJLE9BQXRCLEtBQWtDLENBQUNHLEtBQUssQ0FBQ1AsT0FBTyxDQUFDSSxPQUFULENBQXhDLEdBQTRESSxRQUFRLENBQUNSLE9BQU8sQ0FBQ0ksT0FBVCxFQUFrQixFQUFsQixDQUFwRSxHQUE0RixHQUE1Rzs7RUFDQSxJQUFJO0lBQ0YsTUFBTSxnQ0FBaUIsWUFBWSxPQUFNLEtBQUtsQyxhQUFMLENBQW1CRixLQUFuQixDQUFOLEtBQW1DSywwQkFBVUcsV0FBMUUsRUFDSjtNQUFDaUMsTUFBTSxFQUFFTCxPQUFUO01BQWtCTSxVQUFVLEVBQUU7SUFBOUIsQ0FESSxDQUFOO0VBRUQsQ0FIRCxDQUdFLE9BQU9kLENBQVAsRUFBVTtJQUNWLEtBQUt6QixHQUFMLENBQVMwQixhQUFULENBQXdCLElBQUc3QixLQUFNLDRCQUEyQm9DLE9BQVEsWUFBcEU7RUFDRDs7RUFDRCxLQUFLakMsR0FBTCxDQUFTQyxJQUFULENBQWUsSUFBR0osS0FBTSxvQ0FBeEI7RUFDQSxPQUFPLElBQVA7QUFDRCxDQWhCRDs7QUEwQ0FGLFFBQVEsQ0FBQzZDLFVBQVQsR0FBc0IsZUFBZUEsVUFBZixDQUEyQkMsT0FBM0IsRUFBb0NaLE9BQU8sR0FBRyxFQUE5QyxFQUFrRDtFQUN0RSxNQUFNYSxTQUFTLEdBQUcsTUFBTSxLQUFLQyxPQUFMLENBQWFDLFlBQWIsQ0FBMEJILE9BQTFCLEVBQW1DL0MsY0FBbkMsQ0FBeEI7RUFDQSxNQUFNLEtBQUtJLEdBQUwsQ0FBUytDLE9BQVQsQ0FBaUJILFNBQWpCLEVBQTRCYixPQUE1QixDQUFOO0FBQ0QsQ0FIRDs7QUFnQkFsQyxRQUFRLENBQUNtRCxjQUFULEdBQTBCLGVBQWVBLGNBQWYsQ0FBK0JDLElBQUksR0FBRyxFQUF0QyxFQUEwQztFQUNsRSxNQUFNO0lBQUNsRDtFQUFELElBQVVrRCxJQUFoQjs7RUFDQSxJQUFJLENBQUNsRCxLQUFMLEVBQVk7SUFDVixNQUFNLElBQUltRCxtQkFBT0Msb0JBQVgsQ0FBaUMsa0NBQWpDLENBQU47RUFDRDs7RUFDRCxNQUFNLEtBQUtuRCxHQUFMLENBQVNvRCxLQUFULENBQWVyRCxLQUFmLENBQU47QUFDRCxDQU5EOztlQVNlRixRIn0=
|
|
131
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL2FwcC1tYW5hZ2VtZW50LmpzIiwibmFtZXMiOlsiQVBQX0VYVEVOU0lPTlMiLCJjb21tYW5kcyIsImlzQXBwSW5zdGFsbGVkIiwiYXBwSWQiLCJhZGIiLCJxdWVyeUFwcFN0YXRlIiwibG9nIiwiaW5mbyIsIkFQUF9TVEFURSIsIk5PVF9JTlNUQUxMRUQiLCJwcm9jZXNzRXhpc3RzIiwiTk9UX1JVTk5JTkciLCJhcHBJZFJlIiwiUmVnRXhwIiwiXyIsImVzY2FwZVJlZ0V4cCIsImxpbmUiLCJkdW1wV2luZG93cyIsInNwbGl0IiwidGVzdCIsInNvbWUiLCJ4IiwiaW5jbHVkZXMiLCJSVU5OSU5HX0lOX0ZPUkVHUk9VTkQiLCJSVU5OSU5HX0lOX0JBQ0tHUk9VTkQiLCJhY3RpdmF0ZUFwcCIsImRlYnVnIiwiYXBpTGV2ZWwiLCJnZXRBcGlMZXZlbCIsImNtZCIsIm91dHB1dCIsInNoZWxsIiwiZSIsImVycm9yQW5kVGhyb3ciLCJtZXNzYWdlIiwic3Rkb3V0IiwicmVzb2x2ZUxhdW5jaGFibGVBY3Rpdml0eSIsIkVycm9yIiwicmVtb3ZlQXBwIiwib3B0aW9ucyIsInVuaW5zdGFsbEFwayIsInRlcm1pbmF0ZUFwcCIsImZvcmNlU3RvcCIsInRpbWVvdXQiLCJ1dGlsIiwiaGFzVmFsdWUiLCJpc05hTiIsInBhcnNlSW50Iiwid2FpdEZvckNvbmRpdGlvbiIsIndhaXRNcyIsImludGVydmFsTXMiLCJpbnN0YWxsQXBwIiwiYXBwUGF0aCIsImxvY2FsUGF0aCIsImhlbHBlcnMiLCJjb25maWd1cmVBcHAiLCJpbnN0YWxsIiwibW9iaWxlQ2xlYXJBcHAiLCJvcHRzIiwiZXJyb3JzIiwiSW52YWxpZEFyZ3VtZW50RXJyb3IiLCJjbGVhciJdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4iLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9hcHAtbWFuYWdlbWVudC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgd2FpdEZvckNvbmRpdGlvbiB9IGZyb20gJ2FzeW5jYm94JztcbmltcG9ydCB7IHV0aWwgfSBmcm9tICdhcHBpdW0vc3VwcG9ydCc7XG5pbXBvcnQgeyBBUFBfU1RBVEUgfSBmcm9tICcuLi9hbmRyb2lkLWhlbHBlcnMnO1xuaW1wb3J0IHsgZXJyb3JzIH0gZnJvbSAnYXBwaXVtL2RyaXZlcic7XG5cbmNvbnN0IEFQUF9FWFRFTlNJT05TID0gWycuYXBrJywgJy5hcGtzJ107XG5cbmxldCBjb21tYW5kcyA9IHt9O1xuXG4vKipcbiAqIFZlcmlmeSB3aGV0aGVyIGFuIGFwcGxpY2F0aW9uIGlzIGluc3RhbGxlZCBvciBub3RcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYXBwSWQgLSBBcHBsaWNhdGlvbiBwYWNrYWdlIGlkZW50aWZpZXJcbiAqIEByZXR1cm5zIHtib29sZWFufSB0cnVlIGlmIHRoZSBhcHAgaXMgaW5zdGFsbGVkXG4gKi9cbmNvbW1hbmRzLmlzQXBwSW5zdGFsbGVkID0gYXN5bmMgZnVuY3Rpb24gaXNBcHBJbnN0YWxsZWQgKGFwcElkKSB7XG4gIHJldHVybiBhd2FpdCB0aGlzLmFkYi5pc0FwcEluc3RhbGxlZChhcHBJZCk7XG59O1xuXG4vKipcbiAqIFF1ZXJpZXMgdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIGFwcC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYXBwSWQgLSBBcHBsaWNhdGlvbiBwYWNrYWdlIGlkZW50aWZpZXJcbiAqIEByZXR1cm5zIHtudW1iZXJ9IFRoZSBjb3JyZXNwb25kaW5nIGNvbnN0YW50LCB3aGljaCBkZXNjcmliZXNcbiAqICAgICAgICAgICAgICAgICAgIHRoZSBjdXJyZW50IGFwcGxpY2F0aW9uIHN0YXRlOlxuICogMCAtIGlzIHRoZSBhcHAgaXMgbm90IGluc3RhbGxlZFxuICogMSAtIGlmIHRoZSBhcHAgaXMgaW5zdGFsbGVkLCBidXQgaXMgbm90IHJ1bm5pbmdcbiAqIDMgLSBpZiB0aGUgYXBwIGlzIHJ1bm5pbmcgaW4gdGhlIGJhY2tncm91bmRcbiAqIDQgLSBpZiB0aGUgYXBwIGlzIHJ1bm5pbmcgaW4gdGhlIGZvcmVncm91bmRcbiAqL1xuY29tbWFuZHMucXVlcnlBcHBTdGF0ZSA9IGFzeW5jIGZ1bmN0aW9uIHF1ZXJ5QXBwU3RhdGUgKGFwcElkKSB7XG4gIHRoaXMubG9nLmluZm8oYFF1ZXJ5aW5nIHRoZSBzdGF0ZSBvZiAnJHthcHBJZH0nYCk7XG4gIGlmICghYXdhaXQgdGhpcy5hZGIuaXNBcHBJbnN0YWxsZWQoYXBwSWQpKSB7XG4gICAgcmV0dXJuIEFQUF9TVEFURS5OT1RfSU5TVEFMTEVEO1xuICB9XG4gIGlmICghYXdhaXQgdGhpcy5hZGIucHJvY2Vzc0V4aXN0cyhhcHBJZCkpIHtcbiAgICByZXR1cm4gQVBQX1NUQVRFLk5PVF9SVU5OSU5HO1xuICB9XG4gIGNvbnN0IGFwcElkUmUgPSBuZXcgUmVnRXhwKGBcXFxcYiR7Xy5lc2NhcGVSZWdFeHAoYXBwSWQpfS9gKTtcbiAgZm9yIChjb25zdCBsaW5lIG9mIChhd2FpdCB0aGlzLmFkYi5kdW1wV2luZG93cygpKS5zcGxpdCgnXFxuJykpIHtcbiAgICBpZiAoYXBwSWRSZS50ZXN0KGxpbmUpICYmIFsnbUN1cnJlbnRGb2N1cycsICdtRm9jdXNlZEFwcCddLnNvbWUoKHgpID0+IGxpbmUuaW5jbHVkZXMoeCkpKSB7XG4gICAgICByZXR1cm4gQVBQX1NUQVRFLlJVTk5JTkdfSU5fRk9SRUdST1VORDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIEFQUF9TVEFURS5SVU5OSU5HX0lOX0JBQ0tHUk9VTkQ7XG59O1xuXG4vKipcbiAqIEFjdGl2YXRlcyB0aGUgZ2l2ZW4gYXBwbGljYXRpb24gb3IgbGF1bmNoZXMgaXQgaWYgbmVjZXNzYXJ5LlxuICogVGhlIGFjdGlvbiBpcyBkb25lIHdpdGggbW9ua2V5IHRvb2wgYW5kIGxpdGVyYWxseSBzaW11bGF0ZXNcbiAqIGNsaWNraW5nIHRoZSBjb3JyZXNwb25kaW5nIGFwcGxpY2F0aW9uIGljb24gb24gdGhlIGRhc2hib2FyZC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYXBwSWQgLSBBcHBsaWNhdGlvbiBwYWNrYWdlIGlkZW50aWZpZXJcbiAqL1xuY29tbWFuZHMuYWN0aXZhdGVBcHAgPSBhc3luYyBmdW5jdGlvbiBhY3RpdmF0ZUFwcCAoYXBwSWQpIHtcbiAgdGhpcy5sb2cuZGVidWcoYEFjdGl2YXRpbmcgJyR7YXBwSWR9J2ApO1xuICBjb25zdCBhcGlMZXZlbCA9IGF3YWl0IHRoaXMuYWRiLmdldEFwaUxldmVsKCk7XG4gIC8vIEZhbGxiYWNrIHRvIE1vbmtleSBpbiBvbGRlciBBUElzXG4gIGlmIChhcGlMZXZlbCA8IDI0KSB7XG4gICAgLy8gVGhlIG1vbmtleSBjb21tYW5kIGNvdWxkIHJhaXNlIGFuIGlzc3VlIGFzIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzQ0ODYwNDc1L2hvdy10by11c2UtdGhlLW1vbmtleS1jb21tYW5kLXdpdGgtYW4tYW5kcm9pZC1zeXN0ZW0tdGhhdC1kb2VzbnQtaGF2ZS1waHlzaWNhbFxuICAgIC8vIGJ1dCAnLS1wY3Qtc3lza2V5cyAwJyBjb3VsZCBjYXVzZSBhbm90aGVyIGJhY2tncm91bmQgcHJvY2VzcyBpc3N1ZS4gaHR0cHM6Ly9naXRodWIuY29tL2FwcGl1bS9hcHBpdW0vaXNzdWVzLzE2OTQxI2lzc3VlY29tbWVudC0xMTI5ODM3Mjg1XG4gICAgY29uc3QgY21kID0gWydtb25rZXknLFxuICAgICAgJy1wJywgYXBwSWQsXG4gICAgICAnLWMnLCAnYW5kcm9pZC5pbnRlbnQuY2F0ZWdvcnkuTEFVTkNIRVInLFxuICAgICAgJzEnXTtcbiAgICBsZXQgb3V0cHV0ID0gJyc7XG4gICAgdHJ5IHtcbiAgICAgIG91dHB1dCA9IGF3YWl0IHRoaXMuYWRiLnNoZWxsKGNtZCk7XG4gICAgICB0aGlzLmxvZy5kZWJ1ZyhgQ29tbWFuZCBzdGRvdXQ6ICR7b3V0cHV0fWApO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMubG9nLmVycm9yQW5kVGhyb3coYENhbm5vdCBhY3RpdmF0ZSAnJHthcHBJZH0nLiBPcmlnaW5hbCBlcnJvcjogJHtlLm1lc3NhZ2V9YCk7XG4gICAgfVxuICAgIGlmIChvdXRwdXQuaW5jbHVkZXMoJ21vbmtleSBhYm9ydGVkJykpIHtcbiAgICAgIHRoaXMubG9nLmVycm9yQW5kVGhyb3coYENhbm5vdCBhY3RpdmF0ZSAnJHthcHBJZH0nLiBBcmUgeW91IHN1cmUgaXQgaXMgaW5zdGFsbGVkP2ApO1xuICAgIH1cbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBzdGRvdXQgPSBhd2FpdCB0aGlzLmFkYi5zaGVsbChbXG4gICAgJ2FtJywgKGFwaUxldmVsIDwgMjYpID8gJ3N0YXJ0JyA6ICdzdGFydC1hY3Rpdml0eScsXG4gICAgJy1hJywgJ2FuZHJvaWQuaW50ZW50LmFjdGlvbi5NQUlOJyxcbiAgICAnLWMnLCAnYW5kcm9pZC5pbnRlbnQuY2F0ZWdvcnkuTEFVTkNIRVInLFxuICAgIC8vIEZMQUdfQUNUSVZJVFlfTkVXX1RBU0sgfCBGTEFHX0FDVElWSVRZX1JFU0VUX1RBU0tfSUZfTkVFREVEXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuYW5kcm9pZC5jb20vcmVmZXJlbmNlL2FuZHJvaWQvY29udGVudC9JbnRlbnQjRkxBR19BQ1RJVklUWV9ORVdfVEFTS1xuICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLmFuZHJvaWQuY29tL3JlZmVyZW5jZS9hbmRyb2lkL2NvbnRlbnQvSW50ZW50I0ZMQUdfQUNUSVZJVFlfUkVTRVRfVEFTS19JRl9ORUVERURcbiAgICAnLWYnLCAnMHgxMDIwMDAwMCcsXG4gICAgJy1uJywgYXdhaXQgdGhpcy5hZGIucmVzb2x2ZUxhdW5jaGFibGVBY3Rpdml0eShhcHBJZCksXG4gIF0pO1xuICB0aGlzLmxvZy5kZWJ1ZyhzdGRvdXQpO1xuICBpZiAoL15lcnJvcjovbWkudGVzdChzdGRvdXQpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgYWN0aXZhdGUgJyR7YXBwSWR9Jy4gT3JpZ2luYWwgZXJyb3I6ICR7c3Rkb3V0fWApO1xuICB9XG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IFVuaW5zdGFsbE9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSB0aW1lb3V0IFsyMDAwMF0gLSBUaGUgY291bnQgb2YgbWlsbGlzZWNvbmRzIHRvIHdhaXQgdW50aWwgdGhlXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwIGlzIHVuaW5zdGFsbGVkLlxuICogQHByb3BlcnR5IHtib29sZWFufSBrZWVwRGF0YSBbZmFsc2VdIC0gU2V0IHRvIHRydWUgaW4gb3JkZXIgdG8ga2VlcCB0aGVcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uIGRhdGEgYW5kIGNhY2hlIGZvbGRlcnMgYWZ0ZXIgdW5pbnN0YWxsLlxuICovXG5cbi8qKlxuICogUmVtb3ZlIHRoZSBjb3JyZXNwb25kaW5nIGFwcGxpY2F0aW9uIGlmIGlzIGluc3RhbGxlZC5cbiAqIFRoZSBjYWxsIGlzIGlnbm9yZWQgaWYgdGhlIGFwcCBpcyBub3QgaW5zdGFsbGVkLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBhcHBJZCAtIEFwcGxpY2F0aW9uIHBhY2thZ2UgaWRlbnRpZmllclxuICogQHBhcmFtIHs/VW5pbnN0YWxsT3B0aW9uc30gb3B0aW9ucyAtIFRoZSBzZXQgb2YgcmVtb3ZhbCBvcHRpb25zXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUgcGFja2FnZSB3YXMgZm91bmQgb24gdGhlIGRldmljZSBhbmRcbiAqICAgICAgICAgICAgICAgICAgICBzdWNjZXNzZnVsbHkgdW5pbnN0YWxsZWQuXG4gKi9cbmNvbW1hbmRzLnJlbW92ZUFwcCA9IGFzeW5jIGZ1bmN0aW9uIHJlbW92ZUFwcCAoYXBwSWQsIG9wdGlvbnMgPSB7fSkge1xuICByZXR1cm4gYXdhaXQgdGhpcy5hZGIudW5pbnN0YWxsQXBrKGFwcElkLCBvcHRpb25zKTtcbn07XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gVGVybWluYXRlT3B0aW9uc1xuICogQHByb3BlcnR5IHtudW1iZXJ8c3RyaW5nfSB0aW1lb3V0IFs1MDBdIC0gVGhlIGNvdW50IG9mIG1pbGxpc2Vjb25kcyB0byB3YWl0IHVudGlsIHRoZVxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwIGlzIHRlcm1pbmF0ZWQuXG4gKi9cblxuLyoqXG4gKiBUZXJtaW5hdGVzIHRoZSBhcHAgaWYgaXQgaXMgcnVubmluZy5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYXBwSWQgLSBBcHBsaWNhdGlvbiBwYWNrYWdlIGlkZW50aWZpZXJcbiAqIEBwYXJhbSB7P1Rlcm1pbmF0ZU9wdGlvbnN9IG9wdGlvbnMgLSBUaGUgc2V0IG9mIGFwcGxpY2F0aW9uIHRlcm1pbmF0aW9uIG9wdGlvbnNcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHRoZSBhcHAgaGFzIGJlZW4gc3VjY2Vzc2Z1bGx5IHRlcm1pbmF0ZWQuXG4gKiBAdGhyb3dzIHtFcnJvcn0gaWYgdGhlIGFwcCBoYXMgbm90IGJlZW4gdGVybWluYXRlZCB3aXRoaW4gdGhlIGdpdmVuIHRpbWVvdXQuXG4gKi9cbmNvbW1hbmRzLnRlcm1pbmF0ZUFwcCA9IGFzeW5jIGZ1bmN0aW9uIHRlcm1pbmF0ZUFwcCAoYXBwSWQsIG9wdGlvbnMgPSB7fSkge1xuICB0aGlzLmxvZy5pbmZvKGBUZXJtaW5hdGluZyAnJHthcHBJZH0nYCk7XG4gIGlmICghKGF3YWl0IHRoaXMuYWRiLnByb2Nlc3NFeGlzdHMoYXBwSWQpKSkge1xuICAgIHRoaXMubG9nLmluZm8oYFRoZSBhcHAgJyR7YXBwSWR9JyBpcyBub3QgcnVubmluZ2ApO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBhd2FpdCB0aGlzLmFkYi5mb3JjZVN0b3AoYXBwSWQpO1xuICBjb25zdCB0aW1lb3V0ID0gdXRpbC5oYXNWYWx1ZShvcHRpb25zLnRpbWVvdXQpICYmICFpc05hTihvcHRpb25zLnRpbWVvdXQpID8gcGFyc2VJbnQob3B0aW9ucy50aW1lb3V0LCAxMCkgOiA1MDA7XG4gIHRyeSB7XG4gICAgYXdhaXQgd2FpdEZvckNvbmRpdGlvbihhc3luYyAoKSA9PiBhd2FpdCB0aGlzLnF1ZXJ5QXBwU3RhdGUoYXBwSWQpIDw9IEFQUF9TVEFURS5OT1RfUlVOTklORyxcbiAgICAgIHt3YWl0TXM6IHRpbWVvdXQsIGludGVydmFsTXM6IDEwMH0pO1xuICB9IGNhdGNoIChlKSB7XG4gICAgdGhpcy5sb2cuZXJyb3JBbmRUaHJvdyhgJyR7YXBwSWR9JyBpcyBzdGlsbCBydW5uaW5nIGFmdGVyICR7dGltZW91dH1tcyB0aW1lb3V0YCk7XG4gIH1cbiAgdGhpcy5sb2cuaW5mbyhgJyR7YXBwSWR9JyBoYXMgYmVlbiBzdWNjZXNzZnVsbHkgdGVybWluYXRlZGApO1xuICByZXR1cm4gdHJ1ZTtcbn07XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gSW5zdGFsbE9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSB0aW1lb3V0IFs2MDAwMF0gLSBUaGUgY291bnQgb2YgbWlsbGlzZWNvbmRzIHRvIHdhaXQgdW50aWwgdGhlXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwIGlzIGluc3RhbGxlZC5cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gYWxsb3dUZXN0UGFja2FnZXMgW2ZhbHNlXSAtIFNldCB0byB0cnVlIGluIG9yZGVyIHRvIGFsbG93IHRlc3RcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhY2thZ2VzIGluc3RhbGxhdGlvbi5cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gdXNlU2RjYXJkIFtmYWxzZV0gLSBTZXQgdG8gdHJ1ZSB0byBpbnN0YWxsIHRoZSBhcHAgb24gc2RjYXJkXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGVhZCBvZiB0aGUgZGV2aWNlIG1lbW9yeS5cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gZ3JhbnRQZXJtaXNzaW9ucyBbZmFsc2VdIC0gU2V0IHRvIHRydWUgaW4gb3JkZXIgdG8gZ3JhbnQgYWxsIHRoZVxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZXJtaXNzaW9ucyByZXF1ZXN0ZWQgaW4gdGhlIGFwcGxpY2F0aW9uJ3MgbWFuaWZlc3RcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0b21hdGljYWxseSBhZnRlciB0aGUgaW5zdGFsbGF0aW9uIGlzIGNvbXBsZXRlZFxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlciBBbmRyb2lkIDYrLlxuICogQHByb3BlcnR5IHtib29sZWFufSByZXBsYWNlIFt0cnVlXSAtIFNldCBpdCB0byBmYWxzZSBpZiB5b3UgZG9uJ3Qgd2FudFxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBhcHBsaWNhdGlvbiB0byBiZSB1cGdyYWRlZC9yZWluc3RhbGxlZFxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGl0IGlzIGFscmVhZHkgcHJlc2VudCBvbiB0aGUgZGV2aWNlLlxuICovXG5cbi8qKlxuICogSW5zdGFsbHMgdGhlIGdpdmVuIGFwcGxpY2F0aW9uIHRvIHRoZSBkZXZpY2UgdW5kZXIgdGVzdFxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBhcHBQYXRoIC0gVGhlIGxvY2FsIGFwayBwYXRoIG9yIGEgcmVtb3RlIHVybFxuICogQHBhcmFtIHs/SW5zdGFsbE9wdGlvbnN9IG9wdGlvbnMgLSBUaGUgc2V0IG9mIGluc3RhbGxhdGlvbiBvcHRpb25zXG4gKiBAdGhyb3dzIHtFcnJvcn0gaWYgdGhlIGdpdmVuIGFwayBkb2VzIG5vdCBleGlzdCBvciBpcyBub3QgcmVhY2hhYmxlXG4gKi9cbmNvbW1hbmRzLmluc3RhbGxBcHAgPSBhc3luYyBmdW5jdGlvbiBpbnN0YWxsQXBwIChhcHBQYXRoLCBvcHRpb25zID0ge30pIHtcbiAgY29uc3QgbG9jYWxQYXRoID0gYXdhaXQgdGhpcy5oZWxwZXJzLmNvbmZpZ3VyZUFwcChhcHBQYXRoLCBBUFBfRVhURU5TSU9OUyk7XG4gIGF3YWl0IHRoaXMuYWRiLmluc3RhbGwobG9jYWxQYXRoLCBvcHRpb25zKTtcbn07XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gQ2xlYXJBcHBPcHRpb25zXG4gKiBAcHJvcGVydHkgeyFzdHJpbmd9IGFwcElkIFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhcHBsaWNhdGlvbiBwYWNrYWdlIHRvIGJlIGNsZWFyZWRcbiAqL1xuXG4vKipcbiAqIERlbGV0ZXMgYWxsIGRhdGEgYXNzb2NpYXRlZCB3aXRoIGEgcGFja2FnZS5cbiAqXG4gKiBAcGFyYW0ge0NsZWFyQXBwT3B0aW9uc30gb3B0c1xuICogQHRocm93cyB7RXJyb3J9IElmIGNsZWFuaW5nIG9mIHRoZSBhcHAgZGF0YSBmYWlsc1xuICovXG5jb21tYW5kcy5tb2JpbGVDbGVhckFwcCA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZUNsZWFyQXBwIChvcHRzID0ge30pIHtcbiAgY29uc3Qge2FwcElkfSA9IG9wdHM7XG4gIGlmICghYXBwSWQpIHtcbiAgICB0aHJvdyBuZXcgZXJyb3JzLkludmFsaWRBcmd1bWVudEVycm9yKGBUaGUgJ2FwcElkJyBhcmd1bWVudCBpcyByZXF1aXJlZGApO1xuICB9XG4gIGF3YWl0IHRoaXMuYWRiLmNsZWFyKGFwcElkKTtcbn07XG5cbmV4cG9ydCB7IGNvbW1hbmRzIH07XG5leHBvcnQgZGVmYXVsdCBjb21tYW5kcztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQSxNQUFNQSxjQUFjLEdBQUcsQ0FBQyxNQUFELEVBQVMsT0FBVCxDQUF2QjtBQUVBLElBQUlDLFFBQVEsR0FBRyxF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
|
|
@@ -17,9 +17,9 @@ var _portfinder = _interopRequireDefault(require("portfinder"));
|
|
|
17
17
|
|
|
18
18
|
var _bluebird = _interopRequireDefault(require("bluebird"));
|
|
19
19
|
|
|
20
|
-
var _support = require("
|
|
20
|
+
var _support = require("appium/support");
|
|
21
21
|
|
|
22
|
-
var
|
|
22
|
+
var _driver = require("appium/driver");
|
|
23
23
|
|
|
24
24
|
var _webviewHelpers = _interopRequireWildcard(require("../webview-helpers"));
|
|
25
25
|
|
|
@@ -60,7 +60,7 @@ commands.setContext = async function setContext(name) {
|
|
|
60
60
|
const contexts = this.assignContexts(webviewsMapping);
|
|
61
61
|
|
|
62
62
|
if (!_lodash.default.includes(contexts, name)) {
|
|
63
|
-
throw new
|
|
63
|
+
throw new _driver.errors.NoSuchContextError();
|
|
64
64
|
}
|
|
65
65
|
|
|
66
66
|
await this.switchContext(name, webviewsMapping);
|
|
@@ -405,4 +405,4 @@ var _default = extensions;
|
|
|
405
405
|
exports.default = _default;require('source-map-support').install();
|
|
406
406
|
|
|
407
407
|
|
|
408
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL2NvbnRleHQuanMiLCJuYW1lcyI6WyJDSFJPTUVEUklWRVJfQVVUT0RPV05MT0FEX0ZFQVRVUkUiLCJjb21tYW5kcyIsImhlbHBlcnMiLCJleHRlbnNpb25zIiwiZ2V0Q3VycmVudENvbnRleHQiLCJjdXJDb250ZXh0IiwiZGVmYXVsdENvbnRleHROYW1lIiwiZ2V0Q29udGV4dHMiLCJ3ZWJ2aWV3c01hcHBpbmciLCJ3ZWJ2aWV3SGVscGVycyIsImdldFdlYlZpZXdzTWFwcGluZyIsImFkYiIsIm9wdHMiLCJhc3NpZ25Db250ZXh0cyIsInNldENvbnRleHQiLCJuYW1lIiwidXRpbCIsImhhc1ZhbHVlIiwiV0VCVklFV19XSU4iLCJkZWZhdWx0V2Vidmlld05hbWUiLCJjb250ZXh0cyIsIl8iLCJpbmNsdWRlcyIsImVycm9ycyIsIk5vU3VjaENvbnRleHRFcnJvciIsInN3aXRjaENvbnRleHQiLCJtb2JpbGVHZXRDb250ZXh0cyIsImFuZHJvaWREZXZpY2VTb2NrZXQiLCJlbnN1cmVXZWJ2aWV3c0hhdmVQYWdlcyIsIndlYnZpZXdEZXZ0b29sc1BvcnQiLCJlbmFibGVXZWJ2aWV3RGV0YWlsc0NvbGxlY3Rpb24iLCJPYmplY3QiLCJhc3NpZ24iLCJpc0Nocm9tZVNlc3Npb24iLCJ3ZWJ2aWV3cyIsInBhcnNlV2Vidmlld05hbWVzIiwiTkFUSVZFX1dJTiIsImxvZyIsImRlYnVnIiwiSlNPTiIsInN0cmluZ2lmeSIsImlzQ2hyb21lZHJpdmVyQ29udGV4dCIsInN0YXJ0Q2hyb21lZHJpdmVyUHJveHkiLCJyZWNyZWF0ZUNocm9tZURyaXZlclNlc3Npb25zIiwic3RvcENocm9tZWRyaXZlclByb3hpZXMiLCJzdXNwZW5kQ2hyb21lZHJpdmVyUHJveHkiLCJFcnJvciIsIldFQlZJRVdfQkFTRSIsImFwcFBhY2thZ2UiLCJpc1dlYkNvbnRleHQiLCJjb250ZXh0IiwiY2QiLCJzZXNzaW9uQ2hyb21lZHJpdmVycyIsInNldHVwRXhpc3RpbmdDaHJvbWVkcml2ZXIiLCJjbG9uZURlZXAiLCJjaHJvbWVVc2VSdW5uaW5nQXBwIiwiZXh0cmFjdENocm9tZUFuZHJvaWRQYWNrYWdlRnJvbUNvbnRleHROYW1lIiwiYW5kcm9pZFBhY2thZ2UiLCJtYXRjaCIsImxlbmd0aCIsImNocm9tZUFuZHJvaWRQYWNrYWdlIiwiaGFzIiwibWFwIiwid20iLCJ3ZWJ2aWV3TmFtZSIsImtub3duUGFja2FnZSIsIktOT1dOX0NIUk9NRV9QQUNLQUdFX05BTUVTIiwiYXBwU3RhdGUiLCJxdWVyeUFwcFN0YXRlIiwiQVBQX1NUQVRFIiwiUlVOTklOR19JTl9CQUNLR1JPVU5EIiwiUlVOTklOR19JTl9GT1JFR1JPVU5EIiwiaW5mbyIsInNldHVwTmV3Q2hyb21lZHJpdmVyIiwiY3VyRGV2aWNlSWQiLCJvbiIsIkNocm9tZWRyaXZlciIsIkVWRU5UX0NIQU5HRUQiLCJtc2ciLCJzdGF0ZSIsIlNUQVRFX1NUT1BQRUQiLCJvbkNocm9tZWRyaXZlclN0b3AiLCJjaHJvbWVkcml2ZXIiLCJwcm94eVJlcVJlcyIsInByb3h5UmVxIiwiYmluZCIsInByb3h5Q29tbWFuZCIsImp3cHJveHkiLCJjb21tYW5kIiwiandwUHJveHlBY3RpdmUiLCJ3YXJuIiwiZXJyIiwic3RhcnRVbmV4cGVjdGVkU2h1dGRvd24iLCJrZXlzIiwicmVtb3ZlQWxsTGlzdGVuZXJzIiwic3RvcCIsIm1lc3NhZ2UiLCJ2aWV3TmFtZSIsIkNIUk9NSVVNX1dJTiIsInNob3VsZERpc21pc3NDaHJvbWVXZWxjb21lIiwiY2hyb21lT3B0aW9ucyIsImlzQXJyYXkiLCJhcmdzIiwiZGlzbWlzc0Nocm9tZVdlbGNvbWUiLCJhY3Rpdml0eSIsImdldEN1cnJlbnRBY3Rpdml0eSIsImVsIiwiZmluZEVsT3JFbHMiLCJjbGljayIsIkVMRU1FTlQiLCJlIiwic3RhcnRDaHJvbWVTZXNzaW9uIiwia25vd25QYWNrYWdlcyIsImNocm9tZUJ1bmRsZUlkIiwiY2hyb21lQW5kcm9pZEFjdGl2aXR5IiwiYXBwQWN0aXZpdHkiLCJoYXNXb3JraW5nV2VidmlldyIsInJlc3RhcnQiLCJnZXRDaHJvbWVkcml2ZXJQb3J0IiwicG9ydFNwZWMiLCJnZXRQb3J0IiwiQiIsInByb21pc2lmeSIsIlBvcnRGaW5kZXIiLCJwb3J0IiwiZm91bmRQb3J0IiwicG90ZW50aWFsUG9ydCIsInN0b3BQb3J0IiwicGFyc2VJbnQiLCJpc0Nocm9tZWRyaXZlckF1dG9kb3dubG9hZEVuYWJsZWQiLCJpc0ZlYXR1cmVFbmFibGVkIiwiY2hyb21lRHJpdmVyUG9ydCIsImNocm9tZWRyaXZlclBvcnQiLCJjaHJvbWVkcml2ZXJQb3J0cyIsImRldGFpbHMiLCJnZXRXZWJ2aWV3RGV0YWlscyIsInVuZGVmaW5lZCIsImlzRW1wdHkiLCJleGVjdXRhYmxlIiwiY2hyb21lZHJpdmVyRXhlY3V0YWJsZSIsImNtZEFyZ3MiLCJjaHJvbWVkcml2ZXJBcmdzIiwidmVyYm9zZSIsInNob3dDaHJvbWVkcml2ZXJMb2ciLCJleGVjdXRhYmxlRGlyIiwiY2hyb21lZHJpdmVyRXhlY3V0YWJsZURpciIsIm1hcHBpbmdQYXRoIiwiY2hyb21lZHJpdmVyQ2hyb21lTWFwcGluZ0ZpbGUiLCJidW5kbGVJZCIsInVzZVN5c3RlbUV4ZWN1dGFibGUiLCJjaHJvbWVkcml2ZXJVc2VTeXN0ZW1FeGVjdXRhYmxlIiwiZGlzYWJsZUJ1aWxkQ2hlY2siLCJjaHJvbWVkcml2ZXJEaXNhYmxlQnVpbGRDaGVjayIsImlzQXV0b2Rvd25sb2FkRW5hYmxlZCIsIm9wdCIsImVuZHNXaXRoIiwibWVyZ2UiLCJjYXBzIiwiY3JlYXRlQ2hyb21lZHJpdmVyQ2FwcyIsInN0YXJ0Il0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLiIsInNvdXJjZXMiOlsibGliL2NvbW1hbmRzL2NvbnRleHQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBDaHJvbWVkcml2ZXIgZnJvbSAnYXBwaXVtLWNocm9tZWRyaXZlcic7XG5pbXBvcnQgUG9ydEZpbmRlciBmcm9tICdwb3J0ZmluZGVyJztcbmltcG9ydCBCIGZyb20gJ2JsdWViaXJkJztcbmltcG9ydCB7IHV0aWwgfSBmcm9tICdAYXBwaXVtL3N1cHBvcnQnO1xuaW1wb3J0IHsgZXJyb3JzIH0gZnJvbSAnQGFwcGl1bS9iYXNlLWRyaXZlcic7XG5pbXBvcnQge1xuICBkZWZhdWx0IGFzIHdlYnZpZXdIZWxwZXJzLFxuICBOQVRJVkVfV0lOLCBXRUJWSUVXX0JBU0UsIFdFQlZJRVdfV0lOLCBDSFJPTUlVTV9XSU4sIEtOT1dOX0NIUk9NRV9QQUNLQUdFX05BTUVTXG59IGZyb20gJy4uL3dlYnZpZXctaGVscGVycyc7XG5pbXBvcnQgeyBBUFBfU1RBVEUgfSBmcm9tICcuLi9hbmRyb2lkLWhlbHBlcnMnO1xuXG5jb25zdCBDSFJPTUVEUklWRVJfQVVUT0RPV05MT0FEX0ZFQVRVUkUgPSAnY2hyb21lZHJpdmVyX2F1dG9kb3dubG9hZCc7XG5cbmxldCBjb21tYW5kcyA9IHt9LCBoZWxwZXJzID0ge30sIGV4dGVuc2lvbnMgPSB7fTtcblxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBBY3R1YWwgTUpTT05XUCBjb21tYW5kIGhhbmRsZXJzXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5jb21tYW5kcy5nZXRDdXJyZW50Q29udGV4dCA9IGFzeW5jIGZ1bmN0aW9uIGdldEN1cnJlbnRDb250ZXh0ICgpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSByZXF1aXJlLWF3YWl0XG4gIC8vIGlmIHRoZSBjdXJyZW50IGNvbnRleHQgaXMgYG51bGxgLCBpbmRpY2F0aW5nIG5vIGNvbnRleHRcbiAgLy8gZXhwbGljaXRseSBzZXQsIGl0IGlzIHRoZSBkZWZhdWx0IGNvbnRleHRcbiAgcmV0dXJuIHRoaXMuY3VyQ29udGV4dCB8fCB0aGlzLmRlZmF1bHRDb250ZXh0TmFtZSgpO1xufTtcblxuY29tbWFuZHMuZ2V0Q29udGV4dHMgPSBhc3luYyBmdW5jdGlvbiBnZXRDb250ZXh0cyAoKSB7XG4gIGNvbnN0IHdlYnZpZXdzTWFwcGluZyA9IGF3YWl0IHdlYnZpZXdIZWxwZXJzLmdldFdlYlZpZXdzTWFwcGluZyh0aGlzLmFkYiwgdGhpcy5vcHRzKTtcbiAgcmV0dXJuIHRoaXMuYXNzaWduQ29udGV4dHMod2Vidmlld3NNYXBwaW5nKTtcbn07XG5cbmNvbW1hbmRzLnNldENvbnRleHQgPSBhc3luYyBmdW5jdGlvbiBzZXRDb250ZXh0IChuYW1lKSB7XG4gIGlmICghdXRpbC5oYXNWYWx1ZShuYW1lKSkge1xuICAgIG5hbWUgPSB0aGlzLmRlZmF1bHRDb250ZXh0TmFtZSgpO1xuICB9IGVsc2UgaWYgKG5hbWUgPT09IFdFQlZJRVdfV0lOKSB7XG4gICAgLy8gaGFuZGxlIHNldENvbnRleHQgXCJXRUJWSUVXXCJcbiAgICBuYW1lID0gdGhpcy5kZWZhdWx0V2Vidmlld05hbWUoKTtcbiAgfVxuICAvLyBpZiB3ZSdyZSBhbHJlYWR5IGluIHRoZSBjb250ZXh0IHdlIHdhbnQsIGRvIG5vdGhpbmdcbiAgaWYgKG5hbWUgPT09IHRoaXMuY3VyQ29udGV4dCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHdlYnZpZXdzTWFwcGluZyA9IGF3YWl0IHdlYnZpZXdIZWxwZXJzLmdldFdlYlZpZXdzTWFwcGluZyh0aGlzLmFkYiwgdGhpcy5vcHRzKTtcbiAgY29uc3QgY29udGV4dHMgPSB0aGlzLmFzc2lnbkNvbnRleHRzKHdlYnZpZXdzTWFwcGluZyk7XG4gIC8vIGlmIHRoZSBjb250ZXh0IHdlIHdhbnQgZG9lc24ndCBleGlzdCwgZmFpbFxuICBpZiAoIV8uaW5jbHVkZXMoY29udGV4dHMsIG5hbWUpKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5Ob1N1Y2hDb250ZXh0RXJyb3IoKTtcbiAgfVxuXG4gIGF3YWl0IHRoaXMuc3dpdGNoQ29udGV4dChuYW1lLCB3ZWJ2aWV3c01hcHBpbmcpO1xuICB0aGlzLmN1ckNvbnRleHQgPSBuYW1lO1xufTtcblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBXZWJ2aWV3c01hcHBpbmdcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBwcm9jIFRoZSBuYW1lIG9mIHRoZSBEZXZ0b29scyBVbml4IHNvY2tldFxuICogQHByb3BlcnR5IHtzdHJpbmd9IHdlYnZpZXcgVGhlIHdlYiB2aWV3IGFsaWFzLiBMb29rcyBsaWtlIGBXRUJWSUVXX2BcbiAqIHByZWZpeCBwbHVzIFBJRCBvciBwYWNrYWdlIG5hbWVcbiAqIEBwcm9wZXJ0eSB7P09iamVjdH0gaW5mbyBXZWJ2aWV3IGluZm9ybWF0aW9uIGFzIGl0IGlzIHJldHJpZXZlZCBieVxuICogL2pzb24vdmVyc2lvbiBDRFAgZW5kcG9pbnRcbiAqIEBwcm9wZXJ0eSB7P0FycmF5PE9iamVjdD59IHBhZ2VzIFdlYnZpZXcgcGFnZXMgbGlzdCBhcyBpdCBpcyByZXRyaWV2ZWQgYnlcbiAqIC9qc29uL2xpc3QgQ0RQIGVuZHBvaW50XG4gKiBAcHJvcGVyeSB7P3N0cmluZ30gd2Vidmlld05hbWUgQW4gYWN0dWFsIHdlYnZpZXcgbmFtZSBmb3Igc3dpdGNoaW5nIGNvbnRleHQuXG4gKiBUaGlzIHZhbHVlIGJlY29tZXMgbnVsbCB3aGVuIGZhaWxpbmcgdG8gZmluZCBhIFBJRCBmb3IgYSB3ZWJ2aWV3LlxuICpcbiAqIFRoZSBmb2xsb3dpbmcganNvbiBkZW1vbnN0cmF0ZXMgdGhlIGV4YW1wbGUgb2YgV2Vidmlld3NNYXBwaW5nIG9iamVjdC5cbiAqIE5vdGUgdGhhdCBgZGVzY3JpcHRpb25gIGluIGBwYWdlYCBjYW4gYmUgYW4gZW1wdHkgc3RyaW5nIG1vc3QgbGlrZWx5IHdoZW4gaXQgY29tZXMgdG8gTW9iaWxlIENocm9tZSlcbiAqIHtcbiAqICAgXCJwcm9jXCI6IFwiQHdlYnZpZXdfZGV2dG9vbHNfcmVtb3RlXzIyMTM4XCIsXG4gKiAgIFwid2Vidmlld1wiOiBcIldFQlZJRVdfMjIxMzhcIixcbiAqICAgXCJpbmZvXCI6IHtcbiAqICAgICBcIkFuZHJvaWQtUGFja2FnZVwiOiBcImlvLmFwcGl1bS5zZXR0aW5nc1wiLFxuICogICAgIFwiQnJvd3NlclwiOiBcIkNocm9tZS83NC4wLjM3MjkuMTg1XCIsXG4gKiAgICAgXCJQcm90b2NvbC1WZXJzaW9uXCI6IFwiMS4zXCIsXG4gKiAgICAgXCJVc2VyLUFnZW50XCI6IFwiTW96aWxsYS81LjAgKExpbnV4OyBBbmRyb2lkIDEwOyBBbmRyb2lkIFNESyBidWlsdCBmb3IgeDg2IEJ1aWxkL1FTUjEuMTkwOTIwLjAwMTsgd3YpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIFZlcnNpb24vNC4wIENocm9tZS83NC4wLjM3MjkuMTg1IE1vYmlsZSBTYWZhcmkvNTM3LjM2XCIsXG4gKiAgICAgXCJWOC1WZXJzaW9uXCI6IFwiNy40LjI4OC4yOFwiLFxuICogICAgIFwiV2ViS2l0LVZlcnNpb25cIjogXCI1MzcuMzYgKEAyMjk1NTY4MmY5NGNlMDkzMzYxOTdiZmI4ZGZmZWE5OTFmYTMyZjBkKVwiLFxuICogICAgIFwid2ViU29ja2V0RGVidWdnZXJVcmxcIjogXCJ3czovLzEyNy4wLjAuMToxMDkwMC9kZXZ0b29scy9icm93c2VyXCJcbiAqICAgfSxcbiAqICAgXCJwYWdlc1wiOiBbXG4gKiAgICAge1xuICogICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIntcXFwiYXR0YWNoZWRcXFwiOnRydWUsXFxcImVtcHR5XFxcIjpmYWxzZSxcXFwiaGVpZ2h0XFxcIjoxNDU4LFxcXCJzY3JlZW5YXFxcIjowLFxcXCJzY3JlZW5ZXFxcIjozMzYsXFxcInZpc2libGVcXFwiOnRydWUsXFxcIndpZHRoXFxcIjoxMDgwfVwiLFxuICogICAgICAgXCJkZXZ0b29sc0Zyb250ZW5kVXJsXCI6IFwiaHR0cDovL2Nocm9tZS1kZXZ0b29scy1mcm9udGVuZC5hcHBzcG90LmNvbS9zZXJ2ZV9yZXYvQDIyOTU1NjgyZjk0Y2UwOTMzNjE5N2JmYjhkZmZlYTk5MWZhMzJmMGQvaW5zcGVjdG9yLmh0bWw/d3M9MTI3LjAuMC4xOjEwOTAwL2RldnRvb2xzL3BhZ2UvMjczMjVDQzUwQjYwMEQzMUIyMzNGNDVFMDk0ODdCMUZcIixcbiAqICAgICAgIFwiaWRcIjogXCIyNzMyNUNDNTBCNjAwRDMxQjIzM0Y0NUUwOTQ4N0IxRlwiLFxuICogICAgICAgXCJ0aXRsZVwiOiBcIlJlbGVhc2VzIMK3IGFwcGl1bS9hcHBpdW0gwrcgR2l0SHViXCIsXG4gKiAgICAgICBcInR5cGVcIjogXCJwYWdlXCIsXG4gKiAgICAgICBcInVybFwiOiBcImh0dHBzOi8vZ2l0aHViLmNvbS9hcHBpdW0vYXBwaXVtL3JlbGVhc2VzXCIsXG4gKiAgICAgICBcIndlYlNvY2tldERlYnVnZ2VyVXJsXCI6IFwid3M6Ly8xMjcuMC4wLjE6MTA5MDAvZGV2dG9vbHMvcGFnZS8yNzMyNUNDNTBCNjAwRDMxQjIzM0Y0NUUwOTQ4N0IxRlwiXG4gKiAgICAgfVxuICogICBdLFxuICogICBcIndlYnZpZXdOYW1lXCI6IFwiV0VCVklFV19jb20uaW8uYXBwaXVtLnNldHRpbmdcIlxuICogfVxuICovXG5cbi8qKlxuICogUmV0dXJucyBhIHdlYnZpZXdzTWFwcGluZyBiYXNlZCBvbiBDRFAgZW5kcG9pbnRzXG4gKlxuICogQHJldHVybiB7QXJyYXk8V2Vidmlld3NNYXBwaW5nPn0gd2Vidmlld3NNYXBwaW5nXG4gKi9cbmNvbW1hbmRzLm1vYmlsZUdldENvbnRleHRzID0gYXN5bmMgZnVuY3Rpb24gbW9iaWxlR2V0Q29udGV4dHMgKCkge1xuICBjb25zdCBvcHRzID0ge1xuICAgIGFuZHJvaWREZXZpY2VTb2NrZXQ6IHRoaXMub3B0cy5hbmRyb2lkRGV2aWNlU29ja2V0LFxuICAgIGVuc3VyZVdlYnZpZXdzSGF2ZVBhZ2VzOiB0cnVlLFxuICAgIHdlYnZpZXdEZXZ0b29sc1BvcnQ6IHRoaXMub3B0cy53ZWJ2aWV3RGV2dG9vbHNQb3J0LFxuICAgIGVuYWJsZVdlYnZpZXdEZXRhaWxzQ29sbGVjdGlvbjogdHJ1ZVxuICB9O1xuICByZXR1cm4gYXdhaXQgd2Vidmlld0hlbHBlcnMuZ2V0V2ViVmlld3NNYXBwaW5nKHRoaXMuYWRiLCBvcHRzKTtcbn07XG5cbmhlbHBlcnMuYXNzaWduQ29udGV4dHMgPSBmdW5jdGlvbiBhc3NpZ25Db250ZXh0cyAod2Vidmlld3NNYXBwaW5nKSB7XG4gIGNvbnN0IG9wdHMgPSBPYmplY3QuYXNzaWduKHtpc0Nocm9tZVNlc3Npb246IHRoaXMuaXNDaHJvbWVTZXNzaW9ufSwgdGhpcy5vcHRzKTtcbiAgY29uc3Qgd2Vidmlld3MgPSB3ZWJ2aWV3SGVscGVycy5wYXJzZVdlYnZpZXdOYW1lcyh3ZWJ2aWV3c01hcHBpbmcsIG9wdHMpO1xuICB0aGlzLmNvbnRleHRzID0gW05BVElWRV9XSU4sIC4uLndlYnZpZXdzXTtcbiAgdGhpcy5sb2cuZGVidWcoYEF2YWlsYWJsZSBjb250ZXh0czogJHtKU09OLnN0cmluZ2lmeSh0aGlzLmNvbnRleHRzKX1gKTtcbiAgcmV0dXJuIHRoaXMuY29udGV4dHM7XG59O1xuXG5oZWxwZXJzLnN3aXRjaENvbnRleHQgPSBhc3luYyBmdW5jdGlvbiBzd2l0Y2hDb250ZXh0IChuYW1lLCB3ZWJ2aWV3c01hcHBpbmcpIHtcbiAgLy8gV2UgaGF2ZSBzb21lIG9wdGlvbnMgd2hlbiBpdCBjb21lcyB0byB3ZWJ2aWV3cy4gSWYgd2Ugd2FudCBhXG4gIC8vIENocm9tZWRyaXZlciB3ZWJ2aWV3LCB3ZSBjYW4gb25seSBjb250cm9sIG9uZSBhdCBhIHRpbWUuXG4gIGlmICh0aGlzLmlzQ2hyb21lZHJpdmVyQ29udGV4dChuYW1lKSkge1xuICAgIC8vIHN0YXJ0IHByb3h5aW5nIGNvbW1hbmRzIGRpcmVjdGx5IHRvIGNocm9tZWRyaXZlclxuICAgIGF3YWl0IHRoaXMuc3RhcnRDaHJvbWVkcml2ZXJQcm94eShuYW1lLCB3ZWJ2aWV3c01hcHBpbmcpO1xuICB9IGVsc2UgaWYgKHRoaXMuaXNDaHJvbWVkcml2ZXJDb250ZXh0KHRoaXMuY3VyQ29udGV4dCkpIHtcbiAgICAvLyBpZiB3ZSdyZSBtb3ZpbmcgdG8gYSBub24tY2hyb21lZHJpdmVyIHdlYnZpZXcsIGFuZCBvdXIgY3VycmVudCBjb250ZXh0XG4gICAgLy8gX2lzXyBhIGNocm9tZWRyaXZlciB3ZWJ2aWV3LCBpZiBjYXBzIHJlY3JlYXRlQ2hyb21lRHJpdmVyU2Vzc2lvbnMgaXMgc2V0XG4gICAgLy8gdG8gdHJ1ZSB0aGVuIGtpbGwgY2hyb21lZHJpdmVyIHNlc3Npb24gdXNpbmcgc3RvcENocm9tZWRyaXZlclByb3hpZXMgb3JcbiAgICAvLyBlbHNlIHNpbXBseSBzdXNwZW5kIHByb3h5aW5nIHRvIHRoZSBsYXR0ZXJcbiAgICBpZiAodGhpcy5vcHRzLnJlY3JlYXRlQ2hyb21lRHJpdmVyU2Vzc2lvbnMpIHtcbiAgICAgIHRoaXMubG9nLmRlYnVnKCdyZWNyZWF0ZUNocm9tZURyaXZlclNlc3Npb25zIHNldCB0byB0cnVlOyBraWxsaW5nIGV4aXN0aW5nIGNocm9tZWRyaXZlcnMnKTtcbiAgICAgIGF3YWl0IHRoaXMuc3RvcENocm9tZWRyaXZlclByb3hpZXMoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXdhaXQgdGhpcy5zdXNwZW5kQ2hyb21lZHJpdmVyUHJveHkoKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBEaWRuJ3Qga25vdyBob3cgdG8gaGFuZGxlIHN3aXRjaGluZyB0byBjb250ZXh0ICcke25hbWV9J2ApO1xuICB9XG59O1xuXG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogT24tb2JqZWN0IGNvbnRleHQtcmVsYXRlZCBoZWxwZXJzXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuLy8gVGhlIHJlYXNvbiB0aGlzIGlzIGEgZnVuY3Rpb24gYW5kIG5vdCBqdXN0IGEgY29uc3RhbnQgaXMgdGhhdCBib3RoIGFuZHJvaWQtXG4vLyBkcml2ZXIgYW5kIHNlbGVuZHJvaWQtZHJpdmVyIHVzZSB0aGlzIGxvZ2ljLCBhbmQgZWFjaCBvbmUgcmV0dXJuc1xuLy8gYSBkaWZmZXJlbnQgZGVmYXVsdCBjb250ZXh0IG5hbWVcbmhlbHBlcnMuZGVmYXVsdENvbnRleHROYW1lID0gZnVuY3Rpb24gZGVmYXVsdENvbnRleHROYW1lICgpIHtcbiAgcmV0dXJuIE5BVElWRV9XSU47XG59O1xuXG5oZWxwZXJzLmRlZmF1bHRXZWJ2aWV3TmFtZSA9IGZ1bmN0aW9uIGRlZmF1bHRXZWJ2aWV3TmFtZSAoKSB7XG4gIHJldHVybiBXRUJWSUVXX0JBU0UgKyB0aGlzLm9wdHMuYXBwUGFja2FnZTtcbn07XG5cbmhlbHBlcnMuaXNXZWJDb250ZXh0ID0gZnVuY3Rpb24gaXNXZWJDb250ZXh0ICgpIHtcbiAgcmV0dXJuIHRoaXMuY3VyQ29udGV4dCAhPT0gbnVsbCAmJiB0aGlzLmN1ckNvbnRleHQgIT09IE5BVElWRV9XSU47XG59O1xuXG4vLyBUdXJuIG9uIHByb3h5aW5nIHRvIGFuIGV4aXN0aW5nIENocm9tZWRyaXZlciBzZXNzaW9uIG9yIGEgbmV3IG9uZVxuaGVscGVycy5zdGFydENocm9tZWRyaXZlclByb3h5ID0gYXN5bmMgZnVuY3Rpb24gc3RhcnRDaHJvbWVkcml2ZXJQcm94eSAoY29udGV4dCwgd2Vidmlld3NNYXBwaW5nKSB7XG4gIHRoaXMubG9nLmRlYnVnKGBDb25uZWN0aW5nIHRvIGNocm9tZS1iYWNrZWQgd2VidmlldyBjb250ZXh0ICcke2NvbnRleHR9J2ApO1xuXG4gIGxldCBjZDtcbiAgaWYgKHRoaXMuc2Vzc2lvbkNocm9tZWRyaXZlcnNbY29udGV4dF0pIHtcbiAgICAvLyBpbiB0aGUgY2FzZSB3aGVyZSB3ZSd2ZSBhbHJlYWR5IHNldCB1cCBhIGNocm9tZWRyaXZlciBmb3IgYSBjb250ZXh0LFxuICAgIC8vIHdlIHdhbnQgdG8gcmVjb25uZWN0IHRvIGl0LCBub3QgY3JlYXRlIGEgd2hvbGUgbmV3IG9uZVxuICAgIHRoaXMubG9nLmRlYnVnKGBGb3VuZCBleGlzdGluZyBDaHJvbWVkcml2ZXIgZm9yIGNvbnRleHQgJyR7Y29udGV4dH0nLiBVc2luZyBpdC5gKTtcbiAgICBjZCA9IHRoaXMuc2Vzc2lvbkNocm9tZWRyaXZlcnNbY29udGV4dF07XG4gICAgYXdhaXQgc2V0dXBFeGlzdGluZ0Nocm9tZWRyaXZlcih0aGlzLmxvZywgY2QpO1xuICB9IGVsc2Uge1xuICAgIGxldCBvcHRzID0gXy5jbG9uZURlZXAodGhpcy5vcHRzKTtcbiAgICBvcHRzLmNocm9tZVVzZVJ1bm5pbmdBcHAgPSB0cnVlO1xuXG4gICAgLy8gaWYgcmVxdWVzdGVkLCB0ZWxsIGNocm9tZWRyaXZlciB0byBhdHRhY2ggdG8gdGhlIGFuZHJvaWQgcGFja2FnZSB3ZSBoYXZlXG4gICAgLy8gYXNzb2NpYXRlZCB3aXRoIHRoZSBjb250ZXh0IG5hbWUsIHJhdGhlciB0aGFuIHRoZSBwYWNrYWdlIG9mIHRoZSBBVVQuXG4gICAgLy8gQW5kIHR1cm4gdGhpcyBvbiBieSBkZWZhdWx0IGZvciBjaHJvbWUtLWlmIGNocm9tZSBwb3BzIHVwIHdpdGggYSB3ZWJ2aWV3XG4gICAgLy8gYW5kIHNvbWVvbmUgd2FudHMgdG8gc3dpdGNoIHRvIGl0LCB3ZSBzaG91bGQgbGV0IGNocm9tZWRyaXZlciBjb25uZWN0IHRvXG4gICAgLy8gY2hyb21lIHJhdGhlciB0aGFuIHN0YXlpbmcgc3R1Y2sgb24gdGhlIEFVVFxuICAgIGlmIChvcHRzLmV4dHJhY3RDaHJvbWVBbmRyb2lkUGFja2FnZUZyb21Db250ZXh0TmFtZSB8fCBjb250ZXh0ID09PSBgJHtXRUJWSUVXX0JBU0V9Y2hyb21lYCkge1xuICAgICAgbGV0IGFuZHJvaWRQYWNrYWdlID0gY29udGV4dC5tYXRjaChgJHtXRUJWSUVXX0JBU0V9KC4rKWApO1xuICAgICAgaWYgKGFuZHJvaWRQYWNrYWdlICYmIGFuZHJvaWRQYWNrYWdlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgb3B0cy5jaHJvbWVBbmRyb2lkUGFja2FnZSA9IGFuZHJvaWRQYWNrYWdlWzFdO1xuICAgICAgfVxuICAgICAgaWYgKCFvcHRzLmV4dHJhY3RDaHJvbWVBbmRyb2lkUGFja2FnZUZyb21Db250ZXh0TmFtZSkge1xuICAgICAgICBpZiAoXy5oYXModGhpcy5vcHRzLCAnZW5hYmxlV2Vidmlld0RldGFpbHNDb2xsZWN0aW9uJykgJiYgIXRoaXMub3B0cy5lbmFibGVXZWJ2aWV3RGV0YWlsc0NvbGxlY3Rpb24pIHtcbiAgICAgICAgICAvLyBXaGVuIGVuYWJsZVdlYnZpZXdEZXRhaWxzQ29sbGVjdGlvbiBjYXBhYmlsaXR5IGlzIGV4cGxpY2l0bHkgZGlzYWJsZWQsIHRyeSB0byBpZGVudGlmeVxuICAgICAgICAgIC8vIGNocm9tZUFuZHJvaWRQYWNrYWdlIGJhc2VkIG9uIGNvbnRleHRzLCBrbm93biBjaHJvbWUgdmFyaWFudCBwYWNrYWdlcyBhbmQgcXVlcnlBcHBTdGF0ZSByZXN1bHRcbiAgICAgICAgICAvLyBzaW5jZSB3ZWJ2aWV3c01hcHBpbmcgZG9lcyBub3QgaGF2ZSBpbmZvIG9iamVjdFxuICAgICAgICAgIGNvbnN0IGNvbnRleHRzID0gd2Vidmlld3NNYXBwaW5nLm1hcCgod20pID0+IHdtLndlYnZpZXdOYW1lKTtcbiAgICAgICAgICBmb3IgKGNvbnN0IGtub3duUGFja2FnZSBvZiBLTk9XTl9DSFJPTUVfUEFDS0FHRV9OQU1FUykge1xuICAgICAgICAgICAgaWYgKF8uaW5jbHVkZXMoY29udGV4dHMsIGAke1dFQlZJRVdfQkFTRX0ke2tub3duUGFja2FnZX1gKSkge1xuICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGFwcFN0YXRlID0gYXdhaXQgdGhpcy5xdWVyeUFwcFN0YXRlKGtub3duUGFja2FnZSk7XG4gICAgICAgICAgICBpZiAoXy5pbmNsdWRlcyhbQVBQX1NUQVRFLlJVTk5JTkdfSU5fQkFDS0dST1VORCwgQVBQX1NUQVRFLlJVTk5JTkdfSU5fRk9SRUdST1VORF0sIGFwcFN0YXRlKSkge1xuICAgICAgICAgICAgICBvcHRzLmNocm9tZUFuZHJvaWRQYWNrYWdlID0ga25vd25QYWNrYWdlO1xuICAgICAgICAgICAgICB0aGlzLmxvZy5kZWJ1ZyhgSWRlbnRpZmllZCBjaHJvbWVBbmRyb2lkUGFja2FnZSBhcyAnJHtvcHRzLmNocm9tZUFuZHJvaWRQYWNrYWdlfScgYCArXG4gICAgICAgICAgICAgICAgYGZvciBjb250ZXh0ICcke2NvbnRleHR9JyBieSBxdWVyeWluZyBzdGF0ZXMgb2YgQ2hyb21lIGFwcCBwYWNrYWdlc2ApO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZm9yIChjb25zdCB3bSBvZiB3ZWJ2aWV3c01hcHBpbmcpIHtcbiAgICAgICAgICAgIGlmICh3bS53ZWJ2aWV3TmFtZSA9PT0gY29udGV4dCAmJiBfLmhhcyh3bT8uaW5mbywgJ0FuZHJvaWQtUGFja2FnZScpKSB7XG4gICAgICAgICAgICAgIG9wdHMuY2hyb21lQW5kcm9pZFBhY2thZ2UgPSB3bS5pbmZvWydBbmRyb2lkLVBhY2thZ2UnXTtcbiAgICAgICAgICAgICAgdGhpcy5sb2cuZGVidWcoYElkZW50aWZpZWQgY2hyb21lQW5kcm9pZFBhY2thZ2UgYXMgJyR7b3B0cy5jaHJvbWVBbmRyb2lkUGFja2FnZX0nIGAgK1xuICAgICAgICAgICAgICAgIGBmb3IgY29udGV4dCAnJHtjb250ZXh0fScgYnkgQ0RQYCk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGNkID0gYXdhaXQgdGhpcy5zZXR1cE5ld0Nocm9tZWRyaXZlcihvcHRzLCB0aGlzLmFkYi5jdXJEZXZpY2VJZCwgdGhpcy5hZGIsIGNvbnRleHQpO1xuICAgIC8vIGJpbmQgb3VyIHN0b3AvZXhpdCBoYW5kbGVyLCBwYXNzaW5nIGluIGNvbnRleHQgc28gd2Uga25vdyB3aGljaFxuICAgIC8vIG9uZSBzdG9wcGVkIHVuZXhwZWN0ZWRseVxuICAgIGNkLm9uKENocm9tZWRyaXZlci5FVkVOVF9DSEFOR0VELCAobXNnKSA9PiB7XG4gICAgICBpZiAobXNnLnN0YXRlID09PSBDaHJvbWVkcml2ZXIuU1RBVEVfU1RPUFBFRCkge1xuICAgICAgICB0aGlzLm9uQ2hyb21lZHJpdmVyU3RvcChjb250ZXh0KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICAvLyBzYXZlIHRoZSBjaHJvbWVkcml2ZXIgb2JqZWN0IHVuZGVyIHRoZSBjb250ZXh0XG4gICAgdGhpcy5zZXNzaW9uQ2hyb21lZHJpdmVyc1tjb250ZXh0XSA9IGNkO1xuICB9XG4gIC8vIGhvb2sgdXAgdGhlIGxvY2FsIHZhcmlhYmxlcyBzbyB3ZSBjYW4gcHJveHkgdGhpcyBiaXpcbiAgdGhpcy5jaHJvbWVkcml2ZXIgPSBjZDtcbiAgdGhpcy5wcm94eVJlcVJlcyA9IHRoaXMuY2hyb21lZHJpdmVyLnByb3h5UmVxLmJpbmQodGhpcy5jaHJvbWVkcml2ZXIpO1xuICB0aGlzLnByb3h5Q29tbWFuZCA9IHRoaXMuY2hyb21lZHJpdmVyLmp3cHJveHkuY29tbWFuZC5iaW5kKHRoaXMuY2hyb21lZHJpdmVyLmp3cHJveHkpO1xuICB0aGlzLmp3cFByb3h5QWN0aXZlID0gdHJ1ZTtcbn07XG5cbi8vIFN0b3AgcHJveHlpbmcgdG8gYW55IENocm9tZWRyaXZlclxuaGVscGVycy5zdXNwZW5kQ2hyb21lZHJpdmVyUHJveHkgPSBmdW5jdGlvbiBzdXNwZW5kQ2hyb21lZHJpdmVyUHJveHkgKCkge1xuICB0aGlzLmNocm9tZWRyaXZlciA9IG51bGw7XG4gIHRoaXMucHJveHlSZXFSZXMgPSBudWxsO1xuICB0aGlzLnByb3h5Q29tbWFuZCA9IG51bGw7XG4gIHRoaXMuandwUHJveHlBY3RpdmUgPSBmYWxzZTtcbn07XG5cbi8vIEhhbmRsZSBhbiBvdXQtb2YtYmFuZCBDaHJvbWVkcml2ZXIgc3RvcCBldmVudFxuaGVscGVycy5vbkNocm9tZWRyaXZlclN0b3AgPSBhc3luYyBmdW5jdGlvbiBvbkNocm9tZWRyaXZlclN0b3AgKGNvbnRleHQpIHtcbiAgdGhpcy5sb2cud2FybihgQ2hyb21lZHJpdmVyIGZvciBjb250ZXh0ICR7Y29udGV4dH0gc3RvcHBlZCB1bmV4cGVjdGVkbHlgKTtcbiAgaWYgKGNvbnRleHQgPT09IHRoaXMuY3VyQ29udGV4dCkge1xuICAgIC8vIHdlIGV4aXRlZCB1bmV4cGVjdGVkbHkgd2hpbGUgYXV0b21hdGluZyB0aGUgY3VycmVudCBjb250ZXh0IGFuZCBzbyB3YW50XG4gICAgLy8gdG8gc2h1dCBkb3duIHRoZSBzZXNzaW9uIGFuZCByZXNwb25kIHdpdGggYW4gZXJyb3JcbiAgICBsZXQgZXJyID0gbmV3IEVycm9yKCdDaHJvbWVkcml2ZXIgcXVpdCB1bmV4cGVjdGVkbHkgZHVyaW5nIHNlc3Npb24nKTtcbiAgICBhd2FpdCB0aGlzLnN0YXJ0VW5leHBlY3RlZFNodXRkb3duKGVycik7XG4gIH0gZWxzZSB7XG4gICAgLy8gaWYgYSBDaHJvbWVkcml2ZXIgaW4gdGhlIG5vbi1hY3RpdmUgY29udGV4dCBiYXJmcywgd2UgZG9uJ3QgcmVhbGx5XG4gICAgLy8gY2FyZSwgd2UnbGwganVzdCBtYWtlIGEgbmV3IG9uZSBuZXh0IHRpbWUgd2UgbmVlZCB0aGUgY29udGV4dC5cbiAgICB0aGlzLmxvZy53YXJuKFwiQ2hyb21lZHJpdmVyIHF1aXQgdW5leHBlY3RlZGx5LCBidXQgaXQgd2Fzbid0IHRoZSBhY3RpdmUgXCIgK1xuICAgICAgJ2NvbnRleHQsIGlnbm9yaW5nJyk7XG4gICAgZGVsZXRlIHRoaXMuc2Vzc2lvbkNocm9tZWRyaXZlcnNbY29udGV4dF07XG4gIH1cbn07XG5cbi8vIEludGVudGlvbmFsbHkgc3RvcCBhbGwgdGhlIGNocm9tZWRyaXZlcnMgY3VycmVudGx5IGFjdGl2ZSwgYW5kIGlnbm9yZVxuLy8gdGhlaXIgZXhpdCBldmVudHNcbmhlbHBlcnMuc3RvcENocm9tZWRyaXZlclByb3hpZXMgPSBhc3luYyBmdW5jdGlvbiBzdG9wQ2hyb21lZHJpdmVyUHJveGllcyAoKSB7XG4gIHRoaXMuc3VzcGVuZENocm9tZWRyaXZlclByb3h5KCk7IC8vIG1ha2Ugc3VyZSB3ZSB0dXJuIG9mZiB0aGUgcHJveHkgZmxhZ1xuICBmb3IgKGxldCBjb250ZXh0IG9mIF8ua2V5cyh0aGlzLnNlc3Npb25DaHJvbWVkcml2ZXJzKSkge1xuICAgIGxldCBjZCA9IHRoaXMuc2Vzc2lvbkNocm9tZWRyaXZlcnNbY29udGV4dF07XG4gICAgdGhpcy5sb2cuZGVidWcoYFN0b3BwaW5nIGNocm9tZWRyaXZlciBmb3IgY29udGV4dCAke2NvbnRleHR9YCk7XG4gICAgLy8gc3RvcCBsaXN0ZW5pbmcgZm9yIHRoZSBzdG9wcGVkIHN0YXRlIGV2ZW50XG4gICAgY2QucmVtb3ZlQWxsTGlzdGVuZXJzKENocm9tZWRyaXZlci5FVkVOVF9DSEFOR0VEKTtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgY2Quc3RvcCgpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgdGhpcy5sb2cud2FybihgRXJyb3Igc3RvcHBpbmcgQ2hyb21lZHJpdmVyOiAke2Vyci5tZXNzYWdlfWApO1xuICAgIH1cbiAgICBkZWxldGUgdGhpcy5zZXNzaW9uQ2hyb21lZHJpdmVyc1tjb250ZXh0XTtcbiAgfVxufTtcblxuaGVscGVycy5pc0Nocm9tZWRyaXZlckNvbnRleHQgPSBmdW5jdGlvbiBpc0Nocm9tZWRyaXZlckNvbnRleHQgKHZpZXdOYW1lKSB7XG4gIHJldHVybiBfLmluY2x1ZGVzKHZpZXdOYW1lLCBXRUJWSUVXX1dJTikgfHwgdmlld05hbWUgPT09IENIUk9NSVVNX1dJTjtcbn07XG5cbmhlbHBlcnMuc2hvdWxkRGlzbWlzc0Nocm9tZVdlbGNvbWUgPSBmdW5jdGlvbiBzaG91bGREaXNtaXNzQ2hyb21lV2VsY29tZSAoKSB7XG4gIHJldHVybiAhIXRoaXMub3B0cy5jaHJvbWVPcHRpb25zICYmXG4gICAgICAgICBfLmlzQXJyYXkodGhpcy5vcHRzLmNocm9tZU9wdGlvbnMuYXJncykgJiZcbiAgICAgICAgIHRoaXMub3B0cy5jaHJvbWVPcHRpb25zLmFyZ3MuaW5jbHVkZXMoJy0tbm8tZmlyc3QtcnVuJyk7XG59O1xuXG5oZWxwZXJzLmRpc21pc3NDaHJvbWVXZWxjb21lID0gYXN5bmMgZnVuY3Rpb24gZGlzbWlzc0Nocm9tZVdlbGNvbWUgKCkge1xuICB0aGlzLmxvZy5pbmZvKCdUcnlpbmcgdG8gZGlzbWlzcyBDaHJvbWUgd2VsY29tZScpO1xuICBsZXQgYWN0aXZpdHkgPSBhd2FpdCB0aGlzLmdldEN1cnJlbnRBY3Rpdml0eSgpO1xuICBpZiAoYWN0aXZpdHkgIT09ICdvcmcuY2hyb21pdW0uY2hyb21lLmJyb3dzZXIuZmlyc3RydW4uRmlyc3RSdW5BY3Rpdml0eScpIHtcbiAgICB0aGlzLmxvZy5pbmZvKCdDaHJvbWUgd2VsY29tZSBkaWFsb2cgbmV2ZXIgc2hvd2VkIHVwISBDb250aW51aW5nJyk7XG4gICAgcmV0dXJuO1xuICB9XG4gIGxldCBlbCA9IGF3YWl0IHRoaXMuZmluZEVsT3JFbHMoJ2lkJywgJ2NvbS5hbmRyb2lkLmNocm9tZTppZC90ZXJtc19hY2NlcHQnLCBmYWxzZSk7XG4gIGF3YWl0IHRoaXMuY2xpY2soZWwuRUxFTUVOVCk7XG4gIHRyeSB7XG4gICAgbGV0IGVsID0gYXdhaXQgdGhpcy5maW5kRWxPckVscygnaWQnLCAnY29tLmFuZHJvaWQuY2hyb21lOmlkL25lZ2F0aXZlX2J1dHRvbicsIGZhbHNlKTtcbiAgICBhd2FpdCB0aGlzLmNsaWNrKGVsLkVMRU1FTlQpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgLy8gRE8gTk9USElORywgVEhJUyBERVZJQ0UgRElETlQgTEFVTkNIIFRIRSBTSUdOSU4gRElBTE9HXG4gICAgLy8gSVQgTVVTVCBCRSBBIE5PTiBHTVMgREVWSUNFXG4gICAgdGhpcy5sb2cud2FybihgVGhpcyBkZXZpY2UgZGlkIG5vdCBzaG93IENocm9tZSBTaWduSW4gZGlhbG9nLCAke2UubWVzc2FnZX1gKTtcbiAgfVxufTtcblxuaGVscGVycy5zdGFydENocm9tZVNlc3Npb24gPSBhc3luYyBmdW5jdGlvbiBzdGFydENocm9tZVNlc3Npb24gKCkge1xuICB0aGlzLmxvZy5pbmZvKCdTdGFydGluZyBhIGNocm9tZS1iYXNlZCBicm93c2VyIHNlc3Npb24nKTtcbiAgbGV0IG9wdHMgPSBfLmNsb25lRGVlcCh0aGlzLm9wdHMpO1xuXG4gIGNvbnN0IGtub3duUGFja2FnZXMgPSBbXG4gICAgJ29yZy5jaHJvbWl1bS5jaHJvbWUuc2hlbGwnLFxuICAgICdjb20uYW5kcm9pZC5jaHJvbWUnLFxuICAgICdjb20uY2hyb21lLmJldGEnLFxuICAgICdvcmcuY2hyb21pdW0uY2hyb21lJyxcbiAgICAnb3JnLmNocm9taXVtLndlYnZpZXdfc2hlbGwnLFxuICBdO1xuXG4gIGlmIChfLmluY2x1ZGVzKGtub3duUGFja2FnZXMsIHRoaXMub3B0cy5hcHBQYWNrYWdlKSkge1xuICAgIG9wdHMuY2hyb21lQnVuZGxlSWQgPSB0aGlzLm9wdHMuYXBwUGFja2FnZTtcbiAgfSBlbHNlIHtcbiAgICBvcHRzLmNocm9tZUFuZHJvaWRBY3Rpdml0eSA9IHRoaXMub3B0cy5hcHBBY3Rpdml0eTtcbiAgfVxuICB0aGlzLmNocm9tZWRyaXZlciA9IGF3YWl0IHRoaXMuc2V0dXBOZXdDaHJvbWVkcml2ZXIob3B0cywgdGhpcy5hZGIuY3VyRGV2aWNlSWQsIHRoaXMuYWRiKTtcbiAgdGhpcy5jaHJvbWVkcml2ZXIub24oQ2hyb21lZHJpdmVyLkVWRU5UX0NIQU5HRUQsIChtc2cpID0+IHtcbiAgICBpZiAobXNnLnN0YXRlID09PSBDaHJvbWVkcml2ZXIuU1RBVEVfU1RPUFBFRCkge1xuICAgICAgdGhpcy5vbkNocm9tZWRyaXZlclN0b3AoQ0hST01JVU1fV0lOKTtcbiAgICB9XG4gIH0pO1xuXG4gIC8vIE5vdyB0aGF0IHdlIGhhdmUgYSBDaHJvbWUgc2Vzc2lvbiwgd2UgZW5zdXJlIHRoYXQgdGhlIGNvbnRleHQgaXNcbiAgLy8gYXBwcm9wcmlhdGVseSBzZXQgYW5kIHRoYXQgdGhpcyBjaHJvbWVkcml2ZXIgaXMgYWRkZWQgdG8gdGhlIGxpc3RcbiAgLy8gb2Ygc2Vzc2lvbiBjaHJvbWVkcml2ZXJzIHNvIHdlIGNhbiBzd2l0Y2ggYmFjayBhbmQgZm9ydGhcbiAgdGhpcy5jdXJDb250ZXh0ID0gQ0hST01JVU1fV0lOO1xuICB0aGlzLnNlc3Npb25DaHJvbWVkcml2ZXJzW0NIUk9NSVVNX1dJTl0gPSB0aGlzLmNocm9tZWRyaXZlcjtcbiAgdGhpcy5wcm94eVJlcVJlcyA9IHRoaXMuY2hyb21lZHJpdmVyLnByb3h5UmVxLmJpbmQodGhpcy5jaHJvbWVkcml2ZXIpO1xuICB0aGlzLnByb3h5Q29tbWFuZCA9IHRoaXMuY2hyb21lZHJpdmVyLmp3cHJveHkuY29tbWFuZC5iaW5kKHRoaXMuY2hyb21lZHJpdmVyLmp3cHJveHkpO1xuICB0aGlzLmp3cFByb3h5QWN0aXZlID0gdHJ1ZTtcblxuICBpZiAodGhpcy5zaG91bGREaXNtaXNzQ2hyb21lV2VsY29tZSgpKSB7XG4gICAgLy8gZGlzbWlzcyBDaHJvbWUgd2VsY29tZSBkaWFsb2dcbiAgICBhd2FpdCB0aGlzLmRpc21pc3NDaHJvbWVXZWxjb21lKCk7XG4gIH1cbn07XG5cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIEludGVybmFsIGxpYnJhcnkgZnVuY3Rpb25zXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG5hc3luYyBmdW5jdGlvbiBzZXR1cEV4aXN0aW5nQ2hyb21lZHJpdmVyIChsb2csIGNocm9tZWRyaXZlcikge1xuICAvLyBjaGVjayB0aGUgc3RhdHVzIGJ5IHNlbmRpbmcgYSBzaW1wbGUgd2luZG93LWJhc2VkIGNvbW1hbmQgdG8gQ2hyb21lRHJpdmVyXG4gIC8vIGlmIHRoZXJlIGlzIGFuIGVycm9yLCB3ZSB3YW50IHRvIHJlY3JlYXRlIHRoZSBDaHJvbWVEcml2ZXIgc2Vzc2lvblxuICBpZiAoIWF3YWl0IGNocm9tZWRyaXZlci5oYXNXb3JraW5nV2VidmlldygpKSB7XG4gICAgbG9nLmRlYnVnKCdDaHJvbWVEcml2ZXIgaXMgbm90IGFzc29jaWF0ZWQgd2l0aCBhIHdpbmRvdy4gJyArXG4gICAgICAgICAgICAgICAgICdSZS1pbml0aWFsaXppbmcgdGhlIHNlc3Npb24uJyk7XG4gICAgYXdhaXQgY2hyb21lZHJpdmVyLnJlc3RhcnQoKTtcbiAgfVxuICByZXR1cm4gY2hyb21lZHJpdmVyO1xufVxuXG4vKipcbiAqIEZpbmQgYSBmcmVlIHBvcnQgdG8gaGF2ZSBDaHJvbWVkcml2ZXIgbGlzdGVuIG9uLlxuICpcbiAqIEBwYXJhbSB7YXJyYXl9IHBvcnRTcGVjIC0gQXJyYXkgd2hpY2ggaXMgYSBsaXN0IG9mIHBvcnRzLiBBIGxpc3QgaXRlbSBtYXlcbiAqIGFsc28gaXRzZWxmIGJlIGFuIGFycmF5IG9mIGxlbmd0aCAyIHNwZWNpZnlpbmcgYSBzdGFydCBhbmQgZW5kIHBvcnQgb2ZcbiAqIGEgcmFuZ2UuIFNvbWUgdmFsaWQgcG9ydCBzcGVjczpcbiAqICAgIC0gWzgwMDAsIDgwMDEsIDgwMDJdXG4gKiAgICAtIFtbODAwMCwgODAwNV1dXG4gKiAgICAtIFs4MDAwLCBbOTAwMCwgOTEwMF1dXG4gKiBAcGFyYW0ge09iamVjdD99IGxvZyBMb2dnZXIgaW5zdGFuY2VcbiAqXG4gKiBAcmV0dXJuIHtudW1iZXJ9IEEgZnJlZSBwb3J0XG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGdldENocm9tZWRyaXZlclBvcnQgKHBvcnRTcGVjLCBsb2cgPSBudWxsKSB7XG4gIGNvbnN0IGdldFBvcnQgPSBCLnByb21pc2lmeShQb3J0RmluZGVyLmdldFBvcnQsIHtjb250ZXh0OiBQb3J0RmluZGVyfSk7XG5cbiAgLy8gaWYgdGhlIHVzZXIgZGlkbid0IGdpdmUgdXMgYW55IHNwZWNpZmljIGluZm9ybWF0aW9uIGFib3V0IGNocm9tZWRyaXZlclxuICAvLyBwb3J0IHJhbmdlcywganVzdCBmaW5kIGFueSBmcmVlIHBvcnRcbiAgaWYgKCFwb3J0U3BlYykge1xuICAgIGNvbnN0IHBvcnQgPSBhd2FpdCBnZXRQb3J0KCk7XG4gICAgbG9nPy5kZWJ1ZyhgQSBwb3J0IHdhcyBub3QgZ2l2ZW4sIHVzaW5nIHJhbmRvbSBmcmVlIHBvcnQ6ICR7cG9ydH1gKTtcbiAgICByZXR1cm4gcG9ydDtcbiAgfVxuXG4gIC8vIG90aGVyd2lzZSBmaW5kIHRoZSBmcmVlIHBvcnQgYmFzZWQgb24gYSBsaXN0IG9yIHJhbmdlIHByb3ZpZGVkIGJ5IHRoZSB1c2VyXG4gIGxvZz8uZGVidWcoYEZpbmRpbmcgYSBmcmVlIHBvcnQgZm9yIGNocm9tZWRyaXZlciB1c2luZyBzcGVjICR7SlNPTi5zdHJpbmdpZnkocG9ydFNwZWMpfWApO1xuICBsZXQgZm91bmRQb3J0ID0gbnVsbDtcbiAgZm9yIChjb25zdCBwb3RlbnRpYWxQb3J0IG9mIHBvcnRTcGVjKSB7XG4gICAgbGV0IHBvcnQsIHN0b3BQb3J0O1xuICAgIGlmIChfLmlzQXJyYXkocG90ZW50aWFsUG9ydCkpIHtcbiAgICAgIChbcG9ydCwgc3RvcFBvcnRdID0gcG90ZW50aWFsUG9ydCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHBvcnQgPSBwYXJzZUludChwb3RlbnRpYWxQb3J0LCAxMCk7IC8vIGVuc3VyZSB3ZSBoYXZlIGEgbnVtYmVyIGFuZCBub3QgYSBzdHJpbmdcbiAgICAgIHN0b3BQb3J0ID0gcG9ydDtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIGxvZz8uZGVidWcoYENoZWNraW5nIHBvcnQgcmFuZ2UgJHtwb3J0fToke3N0b3BQb3J0fWApO1xuICAgICAgZm91bmRQb3J0ID0gYXdhaXQgZ2V0UG9ydCh7cG9ydCwgc3RvcFBvcnR9KTtcbiAgICAgIGJyZWFrO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGxvZz8uZGVidWcoYE5vdGhpbmcgaW4gcG9ydCByYW5nZSAke3BvcnR9OiR7c3RvcFBvcnR9IHdhcyBhdmFpbGFibGVgKTtcbiAgICB9XG4gIH1cblxuICBpZiAoZm91bmRQb3J0ID09PSBudWxsKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBDb3VsZCBub3QgZmluZCBhIGZyZWUgcG9ydCBmb3IgY2hyb21lZHJpdmVyIHVzaW5nIGAgK1xuICAgICAgICAgICAgICAgICAgICBgY2hyb21lZHJpdmVyUG9ydHMgc3BlYyAke0pTT04uc3RyaW5naWZ5KHBvcnRTcGVjKX1gKTtcbiAgfVxuXG4gIGxvZz8uZGVidWcoYFVzaW5nIGZyZWUgcG9ydCAke2ZvdW5kUG9ydH0gZm9yIGNocm9tZWRyaXZlcmApO1xuICByZXR1cm4gZm91bmRQb3J0O1xufVxuXG5oZWxwZXJzLmlzQ2hyb21lZHJpdmVyQXV0b2Rvd25sb2FkRW5hYmxlZCA9IGZ1bmN0aW9uIGlzQ2hyb21lZHJpdmVyQXV0b2Rvd25sb2FkRW5hYmxlZCAoKSB7XG4gIGlmICh0aGlzLmlzRmVhdHVyZUVuYWJsZWQoQ0hST01FRFJJVkVSX0FVVE9ET1dOTE9BRF9GRUFUVVJFKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHRoaXM/LmxvZz8uZGVidWcoYEF1dG9tYXRlZCBDaHJvbWVkcml2ZXIgZG93bmxvYWQgaXMgZGlzYWJsZWQuIGAgK1xuICAgIGBVc2UgJyR7Q0hST01FRFJJVkVSX0FVVE9ET1dOTE9BRF9GRUFUVVJFfScgc2VydmVyIGZlYXR1cmUgdG8gZW5hYmxlIGl0YCk7XG4gIHJldHVybiBmYWxzZTtcbn07XG5cbmhlbHBlcnMuc2V0dXBOZXdDaHJvbWVkcml2ZXIgPSBhc3luYyBmdW5jdGlvbiBzZXR1cE5ld0Nocm9tZWRyaXZlciAob3B0cywgY3VyRGV2aWNlSWQsIGFkYiwgY29udGV4dCA9IG51bGwpIHtcbiAgaWYgKG9wdHMuY2hyb21lRHJpdmVyUG9ydCkge1xuICAgIHRoaXM/LmxvZz8ud2FybihgVGhlICdjaHJvbWVEcml2ZXJQb3J0JyBjYXBhYmlsaXR5IGlzIGRlcHJlY2F0ZWQuIFBsZWFzZSB1c2UgJ2Nocm9tZWRyaXZlclBvcnQnIGluc3RlYWRgKTtcbiAgICBvcHRzLmNocm9tZWRyaXZlclBvcnQgPSBvcHRzLmNocm9tZURyaXZlclBvcnQ7XG4gIH1cblxuICBpZiAob3B0cy5jaHJvbWVkcml2ZXJQb3J0KSB7XG4gICAgdGhpcz8ubG9nPy5kZWJ1ZyhgVXNpbmcgdXNlci1zcGVjaWZpZWQgcG9ydCAke29wdHMuY2hyb21lZHJpdmVyUG9ydH0gZm9yIGNocm9tZWRyaXZlcmApO1xuICB9IGVsc2Uge1xuICAgIC8vIGlmIGEgc2luZ2xlIHBvcnQgd2Fzbid0IGdpdmVuLCB3ZSdsbCBsb29rIGZvciBhIGZyZWUgb25lXG4gICAgb3B0cy5jaHJvbWVkcml2ZXJQb3J0ID0gYXdhaXQgZ2V0Q2hyb21lZHJpdmVyUG9ydChvcHRzLmNocm9tZWRyaXZlclBvcnRzLCB0aGlzPy5sb2cpO1xuICB9XG5cbiAgY29uc3QgZGV0YWlscyA9IGNvbnRleHQgPyB3ZWJ2aWV3SGVscGVycy5nZXRXZWJ2aWV3RGV0YWlscyhhZGIsIGNvbnRleHQpIDogdW5kZWZpbmVkO1xuICBpZiAoIV8uaXNFbXB0eShkZXRhaWxzKSkge1xuICAgIHRoaXM/LmxvZz8uZGVidWcoJ1Bhc3Npbmcgd2ViIHZpZXcgZGV0YWlscyB0byB0aGUgQ2hyb21lZHJpdmVyIGNvbnN0cnVjdG9yOiAnICtcbiAgICAgIEpTT04uc3RyaW5naWZ5KGRldGFpbHMsIG51bGwsIDIpKTtcbiAgfVxuXG4gIGNvbnN0IGNocm9tZWRyaXZlciA9IG5ldyBDaHJvbWVkcml2ZXIoe1xuICAgIHBvcnQ6IG9wdHMuY2hyb21lZHJpdmVyUG9ydCxcbiAgICBleGVjdXRhYmxlOiBvcHRzLmNocm9tZWRyaXZlckV4ZWN1dGFibGUsXG4gICAgYWRiLFxuICAgIGNtZEFyZ3M6IG9wdHMuY2hyb21lZHJpdmVyQXJncyxcbiAgICB2ZXJib3NlOiAhIW9wdHMuc2hvd0Nocm9tZWRyaXZlckxvZyxcbiAgICBleGVjdXRhYmxlRGlyOiBvcHRzLmNocm9tZWRyaXZlckV4ZWN1dGFibGVEaXIsXG4gICAgbWFwcGluZ1BhdGg6IG9wdHMuY2hyb21lZHJpdmVyQ2hyb21lTWFwcGluZ0ZpbGUsXG4gICAgYnVuZGxlSWQ6IG9wdHMuY2hyb21lQnVuZGxlSWQsXG4gICAgdXNlU3lzdGVtRXhlY3V0YWJsZTogb3B0cy5jaHJvbWVkcml2ZXJVc2VTeXN0ZW1FeGVjdXRhYmxlLFxuICAgIGRpc2FibGVCdWlsZENoZWNrOiBvcHRzLmNocm9tZWRyaXZlckRpc2FibGVCdWlsZENoZWNrLFxuICAgIGRldGFpbHMsXG4gICAgaXNBdXRvZG93bmxvYWRFbmFibGVkOiB0aGlzPy5pc0Nocm9tZWRyaXZlckF1dG9kb3dubG9hZEVuYWJsZWQ/LigpXG4gIH0pO1xuXG4gIC8vIG1ha2Ugc3VyZSB0aGVyZSBhcmUgY2hyb21lT3B0aW9uc1xuICBvcHRzLmNocm9tZU9wdGlvbnMgPSBvcHRzLmNocm9tZU9wdGlvbnMgfHwge307XG4gIC8vIHRyeSBvdXQgYW55IHByZWZpeGVkIGNocm9tZU9wdGlvbnMsXG4gIC8vIGFuZCBzdHJpcCB0aGUgcHJlZml4XG4gIGZvciAoY29uc3Qgb3B0IG9mIF8ua2V5cyhvcHRzKSkge1xuICAgIGlmIChvcHQuZW5kc1dpdGgoJzpjaHJvbWVPcHRpb25zJykpIHtcbiAgICAgIHRoaXM/LmxvZz8ud2FybihgTWVyZ2luZyAnJHtvcHR9JyBpbnRvICdjaHJvbWVPcHRpb25zJy4gVGhpcyBtYXkgY2F1c2UgdW5leHBlY3RlZCBiZWhhdmlvcmApO1xuICAgICAgXy5tZXJnZShvcHRzLmNocm9tZU9wdGlvbnMsIG9wdHNbb3B0XSk7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgY2FwcyA9IHdlYnZpZXdIZWxwZXJzLmNyZWF0ZUNocm9tZWRyaXZlckNhcHMob3B0cywgY3VyRGV2aWNlSWQsIGRldGFpbHMpO1xuICB0aGlzPy5sb2c/LmRlYnVnKGBCZWZvcmUgc3RhcnRpbmcgY2hyb21lZHJpdmVyLCBhbmRyb2lkUGFja2FnZSBpcyAnJHtjYXBzLmNocm9tZU9wdGlvbnMuYW5kcm9pZFBhY2thZ2V9J2ApO1xuICBhd2FpdCBjaHJvbWVkcml2ZXIuc3RhcnQoY2Fwcyk7XG4gIHJldHVybiBjaHJvbWVkcml2ZXI7XG59O1xuY29uc3Qgc2V0dXBOZXdDaHJvbWVkcml2ZXIgPSBoZWxwZXJzLnNldHVwTmV3Q2hyb21lZHJpdmVyO1xuXG5cbk9iamVjdC5hc3NpZ24oZXh0ZW5zaW9ucywgY29tbWFuZHMsIGhlbHBlcnMpO1xuZXhwb3J0IHsgY29tbWFuZHMsIGhlbHBlcnMsIHNldHVwTmV3Q2hyb21lZHJpdmVyIH07XG5leHBvcnQgZGVmYXVsdCBleHRlbnNpb25zO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUlBOzs7Ozs7QUFFQSxNQUFNQSxpQ0FBaUMsR0FBRywyQkFBMUM7QUFFQSxJQUFJQyxRQUFRLEdBQUcsRUFBZjtBQUFBLElBQW1CQyxPQUFPLEdBQUcsRUFBN0I7QUFBQSxJQUFpQ0MsVUFBVSxHQUFHLEVBQTlDOzs7O0FBTUFGLFFBQVEsQ0FBQ0csaUJBQVQsR0FBNkIsZUFBZUEsaUJBQWYsR0FBb0M7RUFHL0QsT0FBTyxLQUFLQyxVQUFMLElBQW1CLEtBQUtDLGtCQUFMLEVBQTFCO0FBQ0QsQ0FKRDs7QUFNQUwsUUFBUSxDQUFDTSxXQUFULEdBQXVCLGVBQWVBLFdBQWYsR0FBOEI7RUFDbkQsTUFBTUMsZUFBZSxHQUFHLE1BQU1DLHdCQUFlQyxrQkFBZixDQUFrQyxLQUFLQyxHQUF2QyxFQUE0QyxLQUFLQyxJQUFqRCxDQUE5QjtFQUNBLE9BQU8sS0FBS0MsY0FBTCxDQUFvQkwsZUFBcEIsQ0FBUDtBQUNELENBSEQ7O0FBS0FQLFFBQVEsQ0FBQ2EsVUFBVCxHQUFzQixlQUFlQSxVQUFmLENBQTJCQyxJQUEzQixFQUFpQztFQUNyRCxJQUFJLENBQUNDLGNBQUtDLFFBQUwsQ0FBY0YsSUFBZCxDQUFMLEVBQTBCO0lBQ3hCQSxJQUFJLEdBQUcsS0FBS1Qsa0JBQUwsRUFBUDtFQUNELENBRkQsTUFFTyxJQUFJUyxJQUFJLEtBQUtHLDJCQUFiLEVBQTBCO0lBRS9CSCxJQUFJLEdBQUcsS0FBS0ksa0JBQUwsRUFBUDtFQUNEOztFQUVELElBQUlKLElBQUksS0FBSyxLQUFLVixVQUFsQixFQUE4QjtJQUM1QjtFQUNEOztFQUVELE1BQU1HLGVBQWUsR0FBRyxNQUFNQyx3QkFBZUMsa0JBQWYsQ0FBa0MsS0FBS0MsR0FB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
|
|
408
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL2NvbnRleHQuanMiLCJuYW1lcyI6WyJDSFJPTUVEUklWRVJfQVVUT0RPV05MT0FEX0ZFQVRVUkUiLCJjb21tYW5kcyIsImhlbHBlcnMiLCJleHRlbnNpb25zIiwiZ2V0Q3VycmVudENvbnRleHQiLCJjdXJDb250ZXh0IiwiZGVmYXVsdENvbnRleHROYW1lIiwiZ2V0Q29udGV4dHMiLCJ3ZWJ2aWV3c01hcHBpbmciLCJ3ZWJ2aWV3SGVscGVycyIsImdldFdlYlZpZXdzTWFwcGluZyIsImFkYiIsIm9wdHMiLCJhc3NpZ25Db250ZXh0cyIsInNldENvbnRleHQiLCJuYW1lIiwidXRpbCIsImhhc1ZhbHVlIiwiV0VCVklFV19XSU4iLCJkZWZhdWx0V2Vidmlld05hbWUiLCJjb250ZXh0cyIsIl8iLCJpbmNsdWRlcyIsImVycm9ycyIsIk5vU3VjaENvbnRleHRFcnJvciIsInN3aXRjaENvbnRleHQiLCJtb2JpbGVHZXRDb250ZXh0cyIsImFuZHJvaWREZXZpY2VTb2NrZXQiLCJlbnN1cmVXZWJ2aWV3c0hhdmVQYWdlcyIsIndlYnZpZXdEZXZ0b29sc1BvcnQiLCJlbmFibGVXZWJ2aWV3RGV0YWlsc0NvbGxlY3Rpb24iLCJPYmplY3QiLCJhc3NpZ24iLCJpc0Nocm9tZVNlc3Npb24iLCJ3ZWJ2aWV3cyIsInBhcnNlV2Vidmlld05hbWVzIiwiTkFUSVZFX1dJTiIsImxvZyIsImRlYnVnIiwiSlNPTiIsInN0cmluZ2lmeSIsImlzQ2hyb21lZHJpdmVyQ29udGV4dCIsInN0YXJ0Q2hyb21lZHJpdmVyUHJveHkiLCJyZWNyZWF0ZUNocm9tZURyaXZlclNlc3Npb25zIiwic3RvcENocm9tZWRyaXZlclByb3hpZXMiLCJzdXNwZW5kQ2hyb21lZHJpdmVyUHJveHkiLCJFcnJvciIsIldFQlZJRVdfQkFTRSIsImFwcFBhY2thZ2UiLCJpc1dlYkNvbnRleHQiLCJjb250ZXh0IiwiY2QiLCJzZXNzaW9uQ2hyb21lZHJpdmVycyIsInNldHVwRXhpc3RpbmdDaHJvbWVkcml2ZXIiLCJjbG9uZURlZXAiLCJjaHJvbWVVc2VSdW5uaW5nQXBwIiwiZXh0cmFjdENocm9tZUFuZHJvaWRQYWNrYWdlRnJvbUNvbnRleHROYW1lIiwiYW5kcm9pZFBhY2thZ2UiLCJtYXRjaCIsImxlbmd0aCIsImNocm9tZUFuZHJvaWRQYWNrYWdlIiwiaGFzIiwibWFwIiwid20iLCJ3ZWJ2aWV3TmFtZSIsImtub3duUGFja2FnZSIsIktOT1dOX0NIUk9NRV9QQUNLQUdFX05BTUVTIiwiYXBwU3RhdGUiLCJxdWVyeUFwcFN0YXRlIiwiQVBQX1NUQVRFIiwiUlVOTklOR19JTl9CQUNLR1JPVU5EIiwiUlVOTklOR19JTl9GT1JFR1JPVU5EIiwiaW5mbyIsInNldHVwTmV3Q2hyb21lZHJpdmVyIiwiY3VyRGV2aWNlSWQiLCJvbiIsIkNocm9tZWRyaXZlciIsIkVWRU5UX0NIQU5HRUQiLCJtc2ciLCJzdGF0ZSIsIlNUQVRFX1NUT1BQRUQiLCJvbkNocm9tZWRyaXZlclN0b3AiLCJjaHJvbWVkcml2ZXIiLCJwcm94eVJlcVJlcyIsInByb3h5UmVxIiwiYmluZCIsInByb3h5Q29tbWFuZCIsImp3cHJveHkiLCJjb21tYW5kIiwiandwUHJveHlBY3RpdmUiLCJ3YXJuIiwiZXJyIiwic3RhcnRVbmV4cGVjdGVkU2h1dGRvd24iLCJrZXlzIiwicmVtb3ZlQWxsTGlzdGVuZXJzIiwic3RvcCIsIm1lc3NhZ2UiLCJ2aWV3TmFtZSIsIkNIUk9NSVVNX1dJTiIsInNob3VsZERpc21pc3NDaHJvbWVXZWxjb21lIiwiY2hyb21lT3B0aW9ucyIsImlzQXJyYXkiLCJhcmdzIiwiZGlzbWlzc0Nocm9tZVdlbGNvbWUiLCJhY3Rpdml0eSIsImdldEN1cnJlbnRBY3Rpdml0eSIsImVsIiwiZmluZEVsT3JFbHMiLCJjbGljayIsIkVMRU1FTlQiLCJlIiwic3RhcnRDaHJvbWVTZXNzaW9uIiwia25vd25QYWNrYWdlcyIsImNocm9tZUJ1bmRsZUlkIiwiY2hyb21lQW5kcm9pZEFjdGl2aXR5IiwiYXBwQWN0aXZpdHkiLCJoYXNXb3JraW5nV2VidmlldyIsInJlc3RhcnQiLCJnZXRDaHJvbWVkcml2ZXJQb3J0IiwicG9ydFNwZWMiLCJnZXRQb3J0IiwiQiIsInByb21pc2lmeSIsIlBvcnRGaW5kZXIiLCJwb3J0IiwiZm91bmRQb3J0IiwicG90ZW50aWFsUG9ydCIsInN0b3BQb3J0IiwicGFyc2VJbnQiLCJpc0Nocm9tZWRyaXZlckF1dG9kb3dubG9hZEVuYWJsZWQiLCJpc0ZlYXR1cmVFbmFibGVkIiwiY2hyb21lRHJpdmVyUG9ydCIsImNocm9tZWRyaXZlclBvcnQiLCJjaHJvbWVkcml2ZXJQb3J0cyIsImRldGFpbHMiLCJnZXRXZWJ2aWV3RGV0YWlscyIsInVuZGVmaW5lZCIsImlzRW1wdHkiLCJleGVjdXRhYmxlIiwiY2hyb21lZHJpdmVyRXhlY3V0YWJsZSIsImNtZEFyZ3MiLCJjaHJvbWVkcml2ZXJBcmdzIiwidmVyYm9zZSIsInNob3dDaHJvbWVkcml2ZXJMb2ciLCJleGVjdXRhYmxlRGlyIiwiY2hyb21lZHJpdmVyRXhlY3V0YWJsZURpciIsIm1hcHBpbmdQYXRoIiwiY2hyb21lZHJpdmVyQ2hyb21lTWFwcGluZ0ZpbGUiLCJidW5kbGVJZCIsInVzZVN5c3RlbUV4ZWN1dGFibGUiLCJjaHJvbWVkcml2ZXJVc2VTeXN0ZW1FeGVjdXRhYmxlIiwiZGlzYWJsZUJ1aWxkQ2hlY2siLCJjaHJvbWVkcml2ZXJEaXNhYmxlQnVpbGRDaGVjayIsImlzQXV0b2Rvd25sb2FkRW5hYmxlZCIsIm9wdCIsImVuZHNXaXRoIiwibWVyZ2UiLCJjYXBzIiwiY3JlYXRlQ2hyb21lZHJpdmVyQ2FwcyIsInN0YXJ0Il0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLiIsInNvdXJjZXMiOlsibGliL2NvbW1hbmRzL2NvbnRleHQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBDaHJvbWVkcml2ZXIgZnJvbSAnYXBwaXVtLWNocm9tZWRyaXZlcic7XG5pbXBvcnQgUG9ydEZpbmRlciBmcm9tICdwb3J0ZmluZGVyJztcbmltcG9ydCBCIGZyb20gJ2JsdWViaXJkJztcbmltcG9ydCB7IHV0aWwgfSBmcm9tICdhcHBpdW0vc3VwcG9ydCc7XG5pbXBvcnQgeyBlcnJvcnMgfSBmcm9tICdhcHBpdW0vZHJpdmVyJztcbmltcG9ydCB7XG4gIGRlZmF1bHQgYXMgd2Vidmlld0hlbHBlcnMsXG4gIE5BVElWRV9XSU4sIFdFQlZJRVdfQkFTRSwgV0VCVklFV19XSU4sIENIUk9NSVVNX1dJTiwgS05PV05fQ0hST01FX1BBQ0tBR0VfTkFNRVNcbn0gZnJvbSAnLi4vd2Vidmlldy1oZWxwZXJzJztcbmltcG9ydCB7IEFQUF9TVEFURSB9IGZyb20gJy4uL2FuZHJvaWQtaGVscGVycyc7XG5cbmNvbnN0IENIUk9NRURSSVZFUl9BVVRPRE9XTkxPQURfRkVBVFVSRSA9ICdjaHJvbWVkcml2ZXJfYXV0b2Rvd25sb2FkJztcblxubGV0IGNvbW1hbmRzID0ge30sIGhlbHBlcnMgPSB7fSwgZXh0ZW5zaW9ucyA9IHt9O1xuXG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIEFjdHVhbCBNSlNPTldQIGNvbW1hbmQgaGFuZGxlcnNcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbmNvbW1hbmRzLmdldEN1cnJlbnRDb250ZXh0ID0gYXN5bmMgZnVuY3Rpb24gZ2V0Q3VycmVudENvbnRleHQgKCkgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIHJlcXVpcmUtYXdhaXRcbiAgLy8gaWYgdGhlIGN1cnJlbnQgY29udGV4dCBpcyBgbnVsbGAsIGluZGljYXRpbmcgbm8gY29udGV4dFxuICAvLyBleHBsaWNpdGx5IHNldCwgaXQgaXMgdGhlIGRlZmF1bHQgY29udGV4dFxuICByZXR1cm4gdGhpcy5jdXJDb250ZXh0IHx8IHRoaXMuZGVmYXVsdENvbnRleHROYW1lKCk7XG59O1xuXG5jb21tYW5kcy5nZXRDb250ZXh0cyA9IGFzeW5jIGZ1bmN0aW9uIGdldENvbnRleHRzICgpIHtcbiAgY29uc3Qgd2Vidmlld3NNYXBwaW5nID0gYXdhaXQgd2Vidmlld0hlbHBlcnMuZ2V0V2ViVmlld3NNYXBwaW5nKHRoaXMuYWRiLCB0aGlzLm9wdHMpO1xuICByZXR1cm4gdGhpcy5hc3NpZ25Db250ZXh0cyh3ZWJ2aWV3c01hcHBpbmcpO1xufTtcblxuY29tbWFuZHMuc2V0Q29udGV4dCA9IGFzeW5jIGZ1bmN0aW9uIHNldENvbnRleHQgKG5hbWUpIHtcbiAgaWYgKCF1dGlsLmhhc1ZhbHVlKG5hbWUpKSB7XG4gICAgbmFtZSA9IHRoaXMuZGVmYXVsdENvbnRleHROYW1lKCk7XG4gIH0gZWxzZSBpZiAobmFtZSA9PT0gV0VCVklFV19XSU4pIHtcbiAgICAvLyBoYW5kbGUgc2V0Q29udGV4dCBcIldFQlZJRVdcIlxuICAgIG5hbWUgPSB0aGlzLmRlZmF1bHRXZWJ2aWV3TmFtZSgpO1xuICB9XG4gIC8vIGlmIHdlJ3JlIGFscmVhZHkgaW4gdGhlIGNvbnRleHQgd2Ugd2FudCwgZG8gbm90aGluZ1xuICBpZiAobmFtZSA9PT0gdGhpcy5jdXJDb250ZXh0KSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3Qgd2Vidmlld3NNYXBwaW5nID0gYXdhaXQgd2Vidmlld0hlbHBlcnMuZ2V0V2ViVmlld3NNYXBwaW5nKHRoaXMuYWRiLCB0aGlzLm9wdHMpO1xuICBjb25zdCBjb250ZXh0cyA9IHRoaXMuYXNzaWduQ29udGV4dHMod2Vidmlld3NNYXBwaW5nKTtcbiAgLy8gaWYgdGhlIGNvbnRleHQgd2Ugd2FudCBkb2Vzbid0IGV4aXN0LCBmYWlsXG4gIGlmICghXy5pbmNsdWRlcyhjb250ZXh0cywgbmFtZSkpIHtcbiAgICB0aHJvdyBuZXcgZXJyb3JzLk5vU3VjaENvbnRleHRFcnJvcigpO1xuICB9XG5cbiAgYXdhaXQgdGhpcy5zd2l0Y2hDb250ZXh0KG5hbWUsIHdlYnZpZXdzTWFwcGluZyk7XG4gIHRoaXMuY3VyQ29udGV4dCA9IG5hbWU7XG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IFdlYnZpZXdzTWFwcGluZ1xuICogQHByb3BlcnR5IHtzdHJpbmd9IHByb2MgVGhlIG5hbWUgb2YgdGhlIERldnRvb2xzIFVuaXggc29ja2V0XG4gKiBAcHJvcGVydHkge3N0cmluZ30gd2VidmlldyBUaGUgd2ViIHZpZXcgYWxpYXMuIExvb2tzIGxpa2UgYFdFQlZJRVdfYFxuICogcHJlZml4IHBsdXMgUElEIG9yIHBhY2thZ2UgbmFtZVxuICogQHByb3BlcnR5IHs/T2JqZWN0fSBpbmZvIFdlYnZpZXcgaW5mb3JtYXRpb24gYXMgaXQgaXMgcmV0cmlldmVkIGJ5XG4gKiAvanNvbi92ZXJzaW9uIENEUCBlbmRwb2ludFxuICogQHByb3BlcnR5IHs/QXJyYXk8T2JqZWN0Pn0gcGFnZXMgV2VidmlldyBwYWdlcyBsaXN0IGFzIGl0IGlzIHJldHJpZXZlZCBieVxuICogL2pzb24vbGlzdCBDRFAgZW5kcG9pbnRcbiAqIEBwcm9wZXJ5IHs/c3RyaW5nfSB3ZWJ2aWV3TmFtZSBBbiBhY3R1YWwgd2VidmlldyBuYW1lIGZvciBzd2l0Y2hpbmcgY29udGV4dC5cbiAqIFRoaXMgdmFsdWUgYmVjb21lcyBudWxsIHdoZW4gZmFpbGluZyB0byBmaW5kIGEgUElEIGZvciBhIHdlYnZpZXcuXG4gKlxuICogVGhlIGZvbGxvd2luZyBqc29uIGRlbW9uc3RyYXRlcyB0aGUgZXhhbXBsZSBvZiBXZWJ2aWV3c01hcHBpbmcgb2JqZWN0LlxuICogTm90ZSB0aGF0IGBkZXNjcmlwdGlvbmAgaW4gYHBhZ2VgIGNhbiBiZSBhbiBlbXB0eSBzdHJpbmcgbW9zdCBsaWtlbHkgd2hlbiBpdCBjb21lcyB0byBNb2JpbGUgQ2hyb21lKVxuICoge1xuICogICBcInByb2NcIjogXCJAd2Vidmlld19kZXZ0b29sc19yZW1vdGVfMjIxMzhcIixcbiAqICAgXCJ3ZWJ2aWV3XCI6IFwiV0VCVklFV18yMjEzOFwiLFxuICogICBcImluZm9cIjoge1xuICogICAgIFwiQW5kcm9pZC1QYWNrYWdlXCI6IFwiaW8uYXBwaXVtLnNldHRpbmdzXCIsXG4gKiAgICAgXCJCcm93c2VyXCI6IFwiQ2hyb21lLzc0LjAuMzcyOS4xODVcIixcbiAqICAgICBcIlByb3RvY29sLVZlcnNpb25cIjogXCIxLjNcIixcbiAqICAgICBcIlVzZXItQWdlbnRcIjogXCJNb3ppbGxhLzUuMCAoTGludXg7IEFuZHJvaWQgMTA7IEFuZHJvaWQgU0RLIGJ1aWx0IGZvciB4ODYgQnVpbGQvUVNSMS4xOTA5MjAuMDAxOyB3dikgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgVmVyc2lvbi80LjAgQ2hyb21lLzc0LjAuMzcyOS4xODUgTW9iaWxlIFNhZmFyaS81MzcuMzZcIixcbiAqICAgICBcIlY4LVZlcnNpb25cIjogXCI3LjQuMjg4LjI4XCIsXG4gKiAgICAgXCJXZWJLaXQtVmVyc2lvblwiOiBcIjUzNy4zNiAoQDIyOTU1NjgyZjk0Y2UwOTMzNjE5N2JmYjhkZmZlYTk5MWZhMzJmMGQpXCIsXG4gKiAgICAgXCJ3ZWJTb2NrZXREZWJ1Z2dlclVybFwiOiBcIndzOi8vMTI3LjAuMC4xOjEwOTAwL2RldnRvb2xzL2Jyb3dzZXJcIlxuICogICB9LFxuICogICBcInBhZ2VzXCI6IFtcbiAqICAgICB7XG4gKiAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwie1xcXCJhdHRhY2hlZFxcXCI6dHJ1ZSxcXFwiZW1wdHlcXFwiOmZhbHNlLFxcXCJoZWlnaHRcXFwiOjE0NTgsXFxcInNjcmVlblhcXFwiOjAsXFxcInNjcmVlbllcXFwiOjMzNixcXFwidmlzaWJsZVxcXCI6dHJ1ZSxcXFwid2lkdGhcXFwiOjEwODB9XCIsXG4gKiAgICAgICBcImRldnRvb2xzRnJvbnRlbmRVcmxcIjogXCJodHRwOi8vY2hyb21lLWRldnRvb2xzLWZyb250ZW5kLmFwcHNwb3QuY29tL3NlcnZlX3Jldi9AMjI5NTU2ODJmOTRjZTA5MzM2MTk3YmZiOGRmZmVhOTkxZmEzMmYwZC9pbnNwZWN0b3IuaHRtbD93cz0xMjcuMC4wLjE6MTA5MDAvZGV2dG9vbHMvcGFnZS8yNzMyNUNDNTBCNjAwRDMxQjIzM0Y0NUUwOTQ4N0IxRlwiLFxuICogICAgICAgXCJpZFwiOiBcIjI3MzI1Q0M1MEI2MDBEMzFCMjMzRjQ1RTA5NDg3QjFGXCIsXG4gKiAgICAgICBcInRpdGxlXCI6IFwiUmVsZWFzZXMgwrcgYXBwaXVtL2FwcGl1bSDCtyBHaXRIdWJcIixcbiAqICAgICAgIFwidHlwZVwiOiBcInBhZ2VcIixcbiAqICAgICAgIFwidXJsXCI6IFwiaHR0cHM6Ly9naXRodWIuY29tL2FwcGl1bS9hcHBpdW0vcmVsZWFzZXNcIixcbiAqICAgICAgIFwid2ViU29ja2V0RGVidWdnZXJVcmxcIjogXCJ3czovLzEyNy4wLjAuMToxMDkwMC9kZXZ0b29scy9wYWdlLzI3MzI1Q0M1MEI2MDBEMzFCMjMzRjQ1RTA5NDg3QjFGXCJcbiAqICAgICB9XG4gKiAgIF0sXG4gKiAgIFwid2Vidmlld05hbWVcIjogXCJXRUJWSUVXX2NvbS5pby5hcHBpdW0uc2V0dGluZ1wiXG4gKiB9XG4gKi9cblxuLyoqXG4gKiBSZXR1cm5zIGEgd2Vidmlld3NNYXBwaW5nIGJhc2VkIG9uIENEUCBlbmRwb2ludHNcbiAqXG4gKiBAcmV0dXJuIHtBcnJheTxXZWJ2aWV3c01hcHBpbmc+fSB3ZWJ2aWV3c01hcHBpbmdcbiAqL1xuY29tbWFuZHMubW9iaWxlR2V0Q29udGV4dHMgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVHZXRDb250ZXh0cyAoKSB7XG4gIGNvbnN0IG9wdHMgPSB7XG4gICAgYW5kcm9pZERldmljZVNvY2tldDogdGhpcy5vcHRzLmFuZHJvaWREZXZpY2VTb2NrZXQsXG4gICAgZW5zdXJlV2Vidmlld3NIYXZlUGFnZXM6IHRydWUsXG4gICAgd2Vidmlld0RldnRvb2xzUG9ydDogdGhpcy5vcHRzLndlYnZpZXdEZXZ0b29sc1BvcnQsXG4gICAgZW5hYmxlV2Vidmlld0RldGFpbHNDb2xsZWN0aW9uOiB0cnVlXG4gIH07XG4gIHJldHVybiBhd2FpdCB3ZWJ2aWV3SGVscGVycy5nZXRXZWJWaWV3c01hcHBpbmcodGhpcy5hZGIsIG9wdHMpO1xufTtcblxuaGVscGVycy5hc3NpZ25Db250ZXh0cyA9IGZ1bmN0aW9uIGFzc2lnbkNvbnRleHRzICh3ZWJ2aWV3c01hcHBpbmcpIHtcbiAgY29uc3Qgb3B0cyA9IE9iamVjdC5hc3NpZ24oe2lzQ2hyb21lU2Vzc2lvbjogdGhpcy5pc0Nocm9tZVNlc3Npb259LCB0aGlzLm9wdHMpO1xuICBjb25zdCB3ZWJ2aWV3cyA9IHdlYnZpZXdIZWxwZXJzLnBhcnNlV2Vidmlld05hbWVzKHdlYnZpZXdzTWFwcGluZywgb3B0cyk7XG4gIHRoaXMuY29udGV4dHMgPSBbTkFUSVZFX1dJTiwgLi4ud2Vidmlld3NdO1xuICB0aGlzLmxvZy5kZWJ1ZyhgQXZhaWxhYmxlIGNvbnRleHRzOiAke0pTT04uc3RyaW5naWZ5KHRoaXMuY29udGV4dHMpfWApO1xuICByZXR1cm4gdGhpcy5jb250ZXh0cztcbn07XG5cbmhlbHBlcnMuc3dpdGNoQ29udGV4dCA9IGFzeW5jIGZ1bmN0aW9uIHN3aXRjaENvbnRleHQgKG5hbWUsIHdlYnZpZXdzTWFwcGluZykge1xuICAvLyBXZSBoYXZlIHNvbWUgb3B0aW9ucyB3aGVuIGl0IGNvbWVzIHRvIHdlYnZpZXdzLiBJZiB3ZSB3YW50IGFcbiAgLy8gQ2hyb21lZHJpdmVyIHdlYnZpZXcsIHdlIGNhbiBvbmx5IGNvbnRyb2wgb25lIGF0IGEgdGltZS5cbiAgaWYgKHRoaXMuaXNDaHJvbWVkcml2ZXJDb250ZXh0KG5hbWUpKSB7XG4gICAgLy8gc3RhcnQgcHJveHlpbmcgY29tbWFuZHMgZGlyZWN0bHkgdG8gY2hyb21lZHJpdmVyXG4gICAgYXdhaXQgdGhpcy5zdGFydENocm9tZWRyaXZlclByb3h5KG5hbWUsIHdlYnZpZXdzTWFwcGluZyk7XG4gIH0gZWxzZSBpZiAodGhpcy5pc0Nocm9tZWRyaXZlckNvbnRleHQodGhpcy5jdXJDb250ZXh0KSkge1xuICAgIC8vIGlmIHdlJ3JlIG1vdmluZyB0byBhIG5vbi1jaHJvbWVkcml2ZXIgd2VidmlldywgYW5kIG91ciBjdXJyZW50IGNvbnRleHRcbiAgICAvLyBfaXNfIGEgY2hyb21lZHJpdmVyIHdlYnZpZXcsIGlmIGNhcHMgcmVjcmVhdGVDaHJvbWVEcml2ZXJTZXNzaW9ucyBpcyBzZXRcbiAgICAvLyB0byB0cnVlIHRoZW4ga2lsbCBjaHJvbWVkcml2ZXIgc2Vzc2lvbiB1c2luZyBzdG9wQ2hyb21lZHJpdmVyUHJveGllcyBvclxuICAgIC8vIGVsc2Ugc2ltcGx5IHN1c3BlbmQgcHJveHlpbmcgdG8gdGhlIGxhdHRlclxuICAgIGlmICh0aGlzLm9wdHMucmVjcmVhdGVDaHJvbWVEcml2ZXJTZXNzaW9ucykge1xuICAgICAgdGhpcy5sb2cuZGVidWcoJ3JlY3JlYXRlQ2hyb21lRHJpdmVyU2Vzc2lvbnMgc2V0IHRvIHRydWU7IGtpbGxpbmcgZXhpc3RpbmcgY2hyb21lZHJpdmVycycpO1xuICAgICAgYXdhaXQgdGhpcy5zdG9wQ2hyb21lZHJpdmVyUHJveGllcygpO1xuICAgIH0gZWxzZSB7XG4gICAgICBhd2FpdCB0aGlzLnN1c3BlbmRDaHJvbWVkcml2ZXJQcm94eSgpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYERpZG4ndCBrbm93IGhvdyB0byBoYW5kbGUgc3dpdGNoaW5nIHRvIGNvbnRleHQgJyR7bmFtZX0nYCk7XG4gIH1cbn07XG5cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBPbi1vYmplY3QgY29udGV4dC1yZWxhdGVkIGhlbHBlcnNcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG4vLyBUaGUgcmVhc29uIHRoaXMgaXMgYSBmdW5jdGlvbiBhbmQgbm90IGp1c3QgYSBjb25zdGFudCBpcyB0aGF0IGJvdGggYW5kcm9pZC1cbi8vIGRyaXZlciBhbmQgc2VsZW5kcm9pZC1kcml2ZXIgdXNlIHRoaXMgbG9naWMsIGFuZCBlYWNoIG9uZSByZXR1cm5zXG4vLyBhIGRpZmZlcmVudCBkZWZhdWx0IGNvbnRleHQgbmFtZVxuaGVscGVycy5kZWZhdWx0Q29udGV4dE5hbWUgPSBmdW5jdGlvbiBkZWZhdWx0Q29udGV4dE5hbWUgKCkge1xuICByZXR1cm4gTkFUSVZFX1dJTjtcbn07XG5cbmhlbHBlcnMuZGVmYXVsdFdlYnZpZXdOYW1lID0gZnVuY3Rpb24gZGVmYXVsdFdlYnZpZXdOYW1lICgpIHtcbiAgcmV0dXJuIFdFQlZJRVdfQkFTRSArIHRoaXMub3B0cy5hcHBQYWNrYWdlO1xufTtcblxuaGVscGVycy5pc1dlYkNvbnRleHQgPSBmdW5jdGlvbiBpc1dlYkNvbnRleHQgKCkge1xuICByZXR1cm4gdGhpcy5jdXJDb250ZXh0ICE9PSBudWxsICYmIHRoaXMuY3VyQ29udGV4dCAhPT0gTkFUSVZFX1dJTjtcbn07XG5cbi8vIFR1cm4gb24gcHJveHlpbmcgdG8gYW4gZXhpc3RpbmcgQ2hyb21lZHJpdmVyIHNlc3Npb24gb3IgYSBuZXcgb25lXG5oZWxwZXJzLnN0YXJ0Q2hyb21lZHJpdmVyUHJveHkgPSBhc3luYyBmdW5jdGlvbiBzdGFydENocm9tZWRyaXZlclByb3h5IChjb250ZXh0LCB3ZWJ2aWV3c01hcHBpbmcpIHtcbiAgdGhpcy5sb2cuZGVidWcoYENvbm5lY3RpbmcgdG8gY2hyb21lLWJhY2tlZCB3ZWJ2aWV3IGNvbnRleHQgJyR7Y29udGV4dH0nYCk7XG5cbiAgbGV0IGNkO1xuICBpZiAodGhpcy5zZXNzaW9uQ2hyb21lZHJpdmVyc1tjb250ZXh0XSkge1xuICAgIC8vIGluIHRoZSBjYXNlIHdoZXJlIHdlJ3ZlIGFscmVhZHkgc2V0IHVwIGEgY2hyb21lZHJpdmVyIGZvciBhIGNvbnRleHQsXG4gICAgLy8gd2Ugd2FudCB0byByZWNvbm5lY3QgdG8gaXQsIG5vdCBjcmVhdGUgYSB3aG9sZSBuZXcgb25lXG4gICAgdGhpcy5sb2cuZGVidWcoYEZvdW5kIGV4aXN0aW5nIENocm9tZWRyaXZlciBmb3IgY29udGV4dCAnJHtjb250ZXh0fScuIFVzaW5nIGl0LmApO1xuICAgIGNkID0gdGhpcy5zZXNzaW9uQ2hyb21lZHJpdmVyc1tjb250ZXh0XTtcbiAgICBhd2FpdCBzZXR1cEV4aXN0aW5nQ2hyb21lZHJpdmVyKHRoaXMubG9nLCBjZCk7XG4gIH0gZWxzZSB7XG4gICAgbGV0IG9wdHMgPSBfLmNsb25lRGVlcCh0aGlzLm9wdHMpO1xuICAgIG9wdHMuY2hyb21lVXNlUnVubmluZ0FwcCA9IHRydWU7XG5cbiAgICAvLyBpZiByZXF1ZXN0ZWQsIHRlbGwgY2hyb21lZHJpdmVyIHRvIGF0dGFjaCB0byB0aGUgYW5kcm9pZCBwYWNrYWdlIHdlIGhhdmVcbiAgICAvLyBhc3NvY2lhdGVkIHdpdGggdGhlIGNvbnRleHQgbmFtZSwgcmF0aGVyIHRoYW4gdGhlIHBhY2thZ2Ugb2YgdGhlIEFVVC5cbiAgICAvLyBBbmQgdHVybiB0aGlzIG9uIGJ5IGRlZmF1bHQgZm9yIGNocm9tZS0taWYgY2hyb21lIHBvcHMgdXAgd2l0aCBhIHdlYnZpZXdcbiAgICAvLyBhbmQgc29tZW9uZSB3YW50cyB0byBzd2l0Y2ggdG8gaXQsIHdlIHNob3VsZCBsZXQgY2hyb21lZHJpdmVyIGNvbm5lY3QgdG9cbiAgICAvLyBjaHJvbWUgcmF0aGVyIHRoYW4gc3RheWluZyBzdHVjayBvbiB0aGUgQVVUXG4gICAgaWYgKG9wdHMuZXh0cmFjdENocm9tZUFuZHJvaWRQYWNrYWdlRnJvbUNvbnRleHROYW1lIHx8IGNvbnRleHQgPT09IGAke1dFQlZJRVdfQkFTRX1jaHJvbWVgKSB7XG4gICAgICBsZXQgYW5kcm9pZFBhY2thZ2UgPSBjb250ZXh0Lm1hdGNoKGAke1dFQlZJRVdfQkFTRX0oLispYCk7XG4gICAgICBpZiAoYW5kcm9pZFBhY2thZ2UgJiYgYW5kcm9pZFBhY2thZ2UubGVuZ3RoID4gMCkge1xuICAgICAgICBvcHRzLmNocm9tZUFuZHJvaWRQYWNrYWdlID0gYW5kcm9pZFBhY2thZ2VbMV07XG4gICAgICB9XG4gICAgICBpZiAoIW9wdHMuZXh0cmFjdENocm9tZUFuZHJvaWRQYWNrYWdlRnJvbUNvbnRleHROYW1lKSB7XG4gICAgICAgIGlmIChfLmhhcyh0aGlzLm9wdHMsICdlbmFibGVXZWJ2aWV3RGV0YWlsc0NvbGxlY3Rpb24nKSAmJiAhdGhpcy5vcHRzLmVuYWJsZVdlYnZpZXdEZXRhaWxzQ29sbGVjdGlvbikge1xuICAgICAgICAgIC8vIFdoZW4gZW5hYmxlV2Vidmlld0RldGFpbHNDb2xsZWN0aW9uIGNhcGFiaWxpdHkgaXMgZXhwbGljaXRseSBkaXNhYmxlZCwgdHJ5IHRvIGlkZW50aWZ5XG4gICAgICAgICAgLy8gY2hyb21lQW5kcm9pZFBhY2thZ2UgYmFzZWQgb24gY29udGV4dHMsIGtub3duIGNocm9tZSB2YXJpYW50IHBhY2thZ2VzIGFuZCBxdWVyeUFwcFN0YXRlIHJlc3VsdFxuICAgICAgICAgIC8vIHNpbmNlIHdlYnZpZXdzTWFwcGluZyBkb2VzIG5vdCBoYXZlIGluZm8gb2JqZWN0XG4gICAgICAgICAgY29uc3QgY29udGV4dHMgPSB3ZWJ2aWV3c01hcHBpbmcubWFwKCh3bSkgPT4gd20ud2Vidmlld05hbWUpO1xuICAgICAgICAgIGZvciAoY29uc3Qga25vd25QYWNrYWdlIG9mIEtOT1dOX0NIUk9NRV9QQUNLQUdFX05BTUVTKSB7XG4gICAgICAgICAgICBpZiAoXy5pbmNsdWRlcyhjb250ZXh0cywgYCR7V0VCVklFV19CQVNFfSR7a25vd25QYWNrYWdlfWApKSB7XG4gICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgYXBwU3RhdGUgPSBhd2FpdCB0aGlzLnF1ZXJ5QXBwU3RhdGUoa25vd25QYWNrYWdlKTtcbiAgICAgICAgICAgIGlmIChfLmluY2x1ZGVzKFtBUFBfU1RBVEUuUlVOTklOR19JTl9CQUNLR1JPVU5ELCBBUFBfU1RBVEUuUlVOTklOR19JTl9GT1JFR1JPVU5EXSwgYXBwU3RhdGUpKSB7XG4gICAgICAgICAgICAgIG9wdHMuY2hyb21lQW5kcm9pZFBhY2thZ2UgPSBrbm93blBhY2thZ2U7XG4gICAgICAgICAgICAgIHRoaXMubG9nLmRlYnVnKGBJZGVudGlmaWVkIGNocm9tZUFuZHJvaWRQYWNrYWdlIGFzICcke29wdHMuY2hyb21lQW5kcm9pZFBhY2thZ2V9JyBgICtcbiAgICAgICAgICAgICAgICBgZm9yIGNvbnRleHQgJyR7Y29udGV4dH0nIGJ5IHF1ZXJ5aW5nIHN0YXRlcyBvZiBDaHJvbWUgYXBwIHBhY2thZ2VzYCk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IHdtIG9mIHdlYnZpZXdzTWFwcGluZykge1xuICAgICAgICAgICAgaWYgKHdtLndlYnZpZXdOYW1lID09PSBjb250ZXh0ICYmIF8uaGFzKHdtPy5pbmZvLCAnQW5kcm9pZC1QYWNrYWdlJykpIHtcbiAgICAgICAgICAgICAgb3B0cy5jaHJvbWVBbmRyb2lkUGFja2FnZSA9IHdtLmluZm9bJ0FuZHJvaWQtUGFja2FnZSddO1xuICAgICAgICAgICAgICB0aGlzLmxvZy5kZWJ1ZyhgSWRlbnRpZmllZCBjaHJvbWVBbmRyb2lkUGFja2FnZSBhcyAnJHtvcHRzLmNocm9tZUFuZHJvaWRQYWNrYWdlfScgYCArXG4gICAgICAgICAgICAgICAgYGZvciBjb250ZXh0ICcke2NvbnRleHR9JyBieSBDRFBgKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgY2QgPSBhd2FpdCB0aGlzLnNldHVwTmV3Q2hyb21lZHJpdmVyKG9wdHMsIHRoaXMuYWRiLmN1ckRldmljZUlkLCB0aGlzLmFkYiwgY29udGV4dCk7XG4gICAgLy8gYmluZCBvdXIgc3RvcC9leGl0IGhhbmRsZXIsIHBhc3NpbmcgaW4gY29udGV4dCBzbyB3ZSBrbm93IHdoaWNoXG4gICAgLy8gb25lIHN0b3BwZWQgdW5leHBlY3RlZGx5XG4gICAgY2Qub24oQ2hyb21lZHJpdmVyLkVWRU5UX0NIQU5HRUQsIChtc2cpID0+IHtcbiAgICAgIGlmIChtc2cuc3RhdGUgPT09IENocm9tZWRyaXZlci5TVEFURV9TVE9QUEVEKSB7XG4gICAgICAgIHRoaXMub25DaHJvbWVkcml2ZXJTdG9wKGNvbnRleHQpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIC8vIHNhdmUgdGhlIGNocm9tZWRyaXZlciBvYmplY3QgdW5kZXIgdGhlIGNvbnRleHRcbiAgICB0aGlzLnNlc3Npb25DaHJvbWVkcml2ZXJzW2NvbnRleHRdID0gY2Q7XG4gIH1cbiAgLy8gaG9vayB1cCB0aGUgbG9jYWwgdmFyaWFibGVzIHNvIHdlIGNhbiBwcm94eSB0aGlzIGJpelxuICB0aGlzLmNocm9tZWRyaXZlciA9IGNkO1xuICB0aGlzLnByb3h5UmVxUmVzID0gdGhpcy5jaHJvbWVkcml2ZXIucHJveHlSZXEuYmluZCh0aGlzLmNocm9tZWRyaXZlcik7XG4gIHRoaXMucHJveHlDb21tYW5kID0gdGhpcy5jaHJvbWVkcml2ZXIuandwcm94eS5jb21tYW5kLmJpbmQodGhpcy5jaHJvbWVkcml2ZXIuandwcm94eSk7XG4gIHRoaXMuandwUHJveHlBY3RpdmUgPSB0cnVlO1xufTtcblxuLy8gU3RvcCBwcm94eWluZyB0byBhbnkgQ2hyb21lZHJpdmVyXG5oZWxwZXJzLnN1c3BlbmRDaHJvbWVkcml2ZXJQcm94eSA9IGZ1bmN0aW9uIHN1c3BlbmRDaHJvbWVkcml2ZXJQcm94eSAoKSB7XG4gIHRoaXMuY2hyb21lZHJpdmVyID0gbnVsbDtcbiAgdGhpcy5wcm94eVJlcVJlcyA9IG51bGw7XG4gIHRoaXMucHJveHlDb21tYW5kID0gbnVsbDtcbiAgdGhpcy5qd3BQcm94eUFjdGl2ZSA9IGZhbHNlO1xufTtcblxuLy8gSGFuZGxlIGFuIG91dC1vZi1iYW5kIENocm9tZWRyaXZlciBzdG9wIGV2ZW50XG5oZWxwZXJzLm9uQ2hyb21lZHJpdmVyU3RvcCA9IGFzeW5jIGZ1bmN0aW9uIG9uQ2hyb21lZHJpdmVyU3RvcCAoY29udGV4dCkge1xuICB0aGlzLmxvZy53YXJuKGBDaHJvbWVkcml2ZXIgZm9yIGNvbnRleHQgJHtjb250ZXh0fSBzdG9wcGVkIHVuZXhwZWN0ZWRseWApO1xuICBpZiAoY29udGV4dCA9PT0gdGhpcy5jdXJDb250ZXh0KSB7XG4gICAgLy8gd2UgZXhpdGVkIHVuZXhwZWN0ZWRseSB3aGlsZSBhdXRvbWF0aW5nIHRoZSBjdXJyZW50IGNvbnRleHQgYW5kIHNvIHdhbnRcbiAgICAvLyB0byBzaHV0IGRvd24gdGhlIHNlc3Npb24gYW5kIHJlc3BvbmQgd2l0aCBhbiBlcnJvclxuICAgIGxldCBlcnIgPSBuZXcgRXJyb3IoJ0Nocm9tZWRyaXZlciBxdWl0IHVuZXhwZWN0ZWRseSBkdXJpbmcgc2Vzc2lvbicpO1xuICAgIGF3YWl0IHRoaXMuc3RhcnRVbmV4cGVjdGVkU2h1dGRvd24oZXJyKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBpZiBhIENocm9tZWRyaXZlciBpbiB0aGUgbm9uLWFjdGl2ZSBjb250ZXh0IGJhcmZzLCB3ZSBkb24ndCByZWFsbHlcbiAgICAvLyBjYXJlLCB3ZSdsbCBqdXN0IG1ha2UgYSBuZXcgb25lIG5leHQgdGltZSB3ZSBuZWVkIHRoZSBjb250ZXh0LlxuICAgIHRoaXMubG9nLndhcm4oXCJDaHJvbWVkcml2ZXIgcXVpdCB1bmV4cGVjdGVkbHksIGJ1dCBpdCB3YXNuJ3QgdGhlIGFjdGl2ZSBcIiArXG4gICAgICAnY29udGV4dCwgaWdub3JpbmcnKTtcbiAgICBkZWxldGUgdGhpcy5zZXNzaW9uQ2hyb21lZHJpdmVyc1tjb250ZXh0XTtcbiAgfVxufTtcblxuLy8gSW50ZW50aW9uYWxseSBzdG9wIGFsbCB0aGUgY2hyb21lZHJpdmVycyBjdXJyZW50bHkgYWN0aXZlLCBhbmQgaWdub3JlXG4vLyB0aGVpciBleGl0IGV2ZW50c1xuaGVscGVycy5zdG9wQ2hyb21lZHJpdmVyUHJveGllcyA9IGFzeW5jIGZ1bmN0aW9uIHN0b3BDaHJvbWVkcml2ZXJQcm94aWVzICgpIHtcbiAgdGhpcy5zdXNwZW5kQ2hyb21lZHJpdmVyUHJveHkoKTsgLy8gbWFrZSBzdXJlIHdlIHR1cm4gb2ZmIHRoZSBwcm94eSBmbGFnXG4gIGZvciAobGV0IGNvbnRleHQgb2YgXy5rZXlzKHRoaXMuc2Vzc2lvbkNocm9tZWRyaXZlcnMpKSB7XG4gICAgbGV0IGNkID0gdGhpcy5zZXNzaW9uQ2hyb21lZHJpdmVyc1tjb250ZXh0XTtcbiAgICB0aGlzLmxvZy5kZWJ1ZyhgU3RvcHBpbmcgY2hyb21lZHJpdmVyIGZvciBjb250ZXh0ICR7Y29udGV4dH1gKTtcbiAgICAvLyBzdG9wIGxpc3RlbmluZyBmb3IgdGhlIHN0b3BwZWQgc3RhdGUgZXZlbnRcbiAgICBjZC5yZW1vdmVBbGxMaXN0ZW5lcnMoQ2hyb21lZHJpdmVyLkVWRU5UX0NIQU5HRUQpO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBjZC5zdG9wKCk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICB0aGlzLmxvZy53YXJuKGBFcnJvciBzdG9wcGluZyBDaHJvbWVkcml2ZXI6ICR7ZXJyLm1lc3NhZ2V9YCk7XG4gICAgfVxuICAgIGRlbGV0ZSB0aGlzLnNlc3Npb25DaHJvbWVkcml2ZXJzW2NvbnRleHRdO1xuICB9XG59O1xuXG5oZWxwZXJzLmlzQ2hyb21lZHJpdmVyQ29udGV4dCA9IGZ1bmN0aW9uIGlzQ2hyb21lZHJpdmVyQ29udGV4dCAodmlld05hbWUpIHtcbiAgcmV0dXJuIF8uaW5jbHVkZXModmlld05hbWUsIFdFQlZJRVdfV0lOKSB8fCB2aWV3TmFtZSA9PT0gQ0hST01JVU1fV0lOO1xufTtcblxuaGVscGVycy5zaG91bGREaXNtaXNzQ2hyb21lV2VsY29tZSA9IGZ1bmN0aW9uIHNob3VsZERpc21pc3NDaHJvbWVXZWxjb21lICgpIHtcbiAgcmV0dXJuICEhdGhpcy5vcHRzLmNocm9tZU9wdGlvbnMgJiZcbiAgICAgICAgIF8uaXNBcnJheSh0aGlzLm9wdHMuY2hyb21lT3B0aW9ucy5hcmdzKSAmJlxuICAgICAgICAgdGhpcy5vcHRzLmNocm9tZU9wdGlvbnMuYXJncy5pbmNsdWRlcygnLS1uby1maXJzdC1ydW4nKTtcbn07XG5cbmhlbHBlcnMuZGlzbWlzc0Nocm9tZVdlbGNvbWUgPSBhc3luYyBmdW5jdGlvbiBkaXNtaXNzQ2hyb21lV2VsY29tZSAoKSB7XG4gIHRoaXMubG9nLmluZm8oJ1RyeWluZyB0byBkaXNtaXNzIENocm9tZSB3ZWxjb21lJyk7XG4gIGxldCBhY3Rpdml0eSA9IGF3YWl0IHRoaXMuZ2V0Q3VycmVudEFjdGl2aXR5KCk7XG4gIGlmIChhY3Rpdml0eSAhPT0gJ29yZy5jaHJvbWl1bS5jaHJvbWUuYnJvd3Nlci5maXJzdHJ1bi5GaXJzdFJ1bkFjdGl2aXR5Jykge1xuICAgIHRoaXMubG9nLmluZm8oJ0Nocm9tZSB3ZWxjb21lIGRpYWxvZyBuZXZlciBzaG93ZWQgdXAhIENvbnRpbnVpbmcnKTtcbiAgICByZXR1cm47XG4gIH1cbiAgbGV0IGVsID0gYXdhaXQgdGhpcy5maW5kRWxPckVscygnaWQnLCAnY29tLmFuZHJvaWQuY2hyb21lOmlkL3Rlcm1zX2FjY2VwdCcsIGZhbHNlKTtcbiAgYXdhaXQgdGhpcy5jbGljayhlbC5FTEVNRU5UKTtcbiAgdHJ5IHtcbiAgICBsZXQgZWwgPSBhd2FpdCB0aGlzLmZpbmRFbE9yRWxzKCdpZCcsICdjb20uYW5kcm9pZC5jaHJvbWU6aWQvbmVnYXRpdmVfYnV0dG9uJywgZmFsc2UpO1xuICAgIGF3YWl0IHRoaXMuY2xpY2soZWwuRUxFTUVOVCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICAvLyBETyBOT1RISU5HLCBUSElTIERFVklDRSBESUROVCBMQVVOQ0ggVEhFIFNJR05JTiBESUFMT0dcbiAgICAvLyBJVCBNVVNUIEJFIEEgTk9OIEdNUyBERVZJQ0VcbiAgICB0aGlzLmxvZy53YXJuKGBUaGlzIGRldmljZSBkaWQgbm90IHNob3cgQ2hyb21lIFNpZ25JbiBkaWFsb2csICR7ZS5tZXNzYWdlfWApO1xuICB9XG59O1xuXG5oZWxwZXJzLnN0YXJ0Q2hyb21lU2Vzc2lvbiA9IGFzeW5jIGZ1bmN0aW9uIHN0YXJ0Q2hyb21lU2Vzc2lvbiAoKSB7XG4gIHRoaXMubG9nLmluZm8oJ1N0YXJ0aW5nIGEgY2hyb21lLWJhc2VkIGJyb3dzZXIgc2Vzc2lvbicpO1xuICBsZXQgb3B0cyA9IF8uY2xvbmVEZWVwKHRoaXMub3B0cyk7XG5cbiAgY29uc3Qga25vd25QYWNrYWdlcyA9IFtcbiAgICAnb3JnLmNocm9taXVtLmNocm9tZS5zaGVsbCcsXG4gICAgJ2NvbS5hbmRyb2lkLmNocm9tZScsXG4gICAgJ2NvbS5jaHJvbWUuYmV0YScsXG4gICAgJ29yZy5jaHJvbWl1bS5jaHJvbWUnLFxuICAgICdvcmcuY2hyb21pdW0ud2Vidmlld19zaGVsbCcsXG4gIF07XG5cbiAgaWYgKF8uaW5jbHVkZXMoa25vd25QYWNrYWdlcywgdGhpcy5vcHRzLmFwcFBhY2thZ2UpKSB7XG4gICAgb3B0cy5jaHJvbWVCdW5kbGVJZCA9IHRoaXMub3B0cy5hcHBQYWNrYWdlO1xuICB9IGVsc2Uge1xuICAgIG9wdHMuY2hyb21lQW5kcm9pZEFjdGl2aXR5ID0gdGhpcy5vcHRzLmFwcEFjdGl2aXR5O1xuICB9XG4gIHRoaXMuY2hyb21lZHJpdmVyID0gYXdhaXQgdGhpcy5zZXR1cE5ld0Nocm9tZWRyaXZlcihvcHRzLCB0aGlzLmFkYi5jdXJEZXZpY2VJZCwgdGhpcy5hZGIpO1xuICB0aGlzLmNocm9tZWRyaXZlci5vbihDaHJvbWVkcml2ZXIuRVZFTlRfQ0hBTkdFRCwgKG1zZykgPT4ge1xuICAgIGlmIChtc2cuc3RhdGUgPT09IENocm9tZWRyaXZlci5TVEFURV9TVE9QUEVEKSB7XG4gICAgICB0aGlzLm9uQ2hyb21lZHJpdmVyU3RvcChDSFJPTUlVTV9XSU4pO1xuICAgIH1cbiAgfSk7XG5cbiAgLy8gTm93IHRoYXQgd2UgaGF2ZSBhIENocm9tZSBzZXNzaW9uLCB3ZSBlbnN1cmUgdGhhdCB0aGUgY29udGV4dCBpc1xuICAvLyBhcHByb3ByaWF0ZWx5IHNldCBhbmQgdGhhdCB0aGlzIGNocm9tZWRyaXZlciBpcyBhZGRlZCB0byB0aGUgbGlzdFxuICAvLyBvZiBzZXNzaW9uIGNocm9tZWRyaXZlcnMgc28gd2UgY2FuIHN3aXRjaCBiYWNrIGFuZCBmb3J0aFxuICB0aGlzLmN1ckNvbnRleHQgPSBDSFJPTUlVTV9XSU47XG4gIHRoaXMuc2Vzc2lvbkNocm9tZWRyaXZlcnNbQ0hST01JVU1fV0lOXSA9IHRoaXMuY2hyb21lZHJpdmVyO1xuICB0aGlzLnByb3h5UmVxUmVzID0gdGhpcy5jaHJvbWVkcml2ZXIucHJveHlSZXEuYmluZCh0aGlzLmNocm9tZWRyaXZlcik7XG4gIHRoaXMucHJveHlDb21tYW5kID0gdGhpcy5jaHJvbWVkcml2ZXIuandwcm94eS5jb21tYW5kLmJpbmQodGhpcy5jaHJvbWVkcml2ZXIuandwcm94eSk7XG4gIHRoaXMuandwUHJveHlBY3RpdmUgPSB0cnVlO1xuXG4gIGlmICh0aGlzLnNob3VsZERpc21pc3NDaHJvbWVXZWxjb21lKCkpIHtcbiAgICAvLyBkaXNtaXNzIENocm9tZSB3ZWxjb21lIGRpYWxvZ1xuICAgIGF3YWl0IHRoaXMuZGlzbWlzc0Nocm9tZVdlbGNvbWUoKTtcbiAgfVxufTtcblxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogSW50ZXJuYWwgbGlicmFyeSBmdW5jdGlvbnNcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbmFzeW5jIGZ1bmN0aW9uIHNldHVwRXhpc3RpbmdDaHJvbWVkcml2ZXIgKGxvZywgY2hyb21lZHJpdmVyKSB7XG4gIC8vIGNoZWNrIHRoZSBzdGF0dXMgYnkgc2VuZGluZyBhIHNpbXBsZSB3aW5kb3ctYmFzZWQgY29tbWFuZCB0byBDaHJvbWVEcml2ZXJcbiAgLy8gaWYgdGhlcmUgaXMgYW4gZXJyb3IsIHdlIHdhbnQgdG8gcmVjcmVhdGUgdGhlIENocm9tZURyaXZlciBzZXNzaW9uXG4gIGlmICghYXdhaXQgY2hyb21lZHJpdmVyLmhhc1dvcmtpbmdXZWJ2aWV3KCkpIHtcbiAgICBsb2cuZGVidWcoJ0Nocm9tZURyaXZlciBpcyBub3QgYXNzb2NpYXRlZCB3aXRoIGEgd2luZG93LiAnICtcbiAgICAgICAgICAgICAgICAgJ1JlLWluaXRpYWxpemluZyB0aGUgc2Vzc2lvbi4nKTtcbiAgICBhd2FpdCBjaHJvbWVkcml2ZXIucmVzdGFydCgpO1xuICB9XG4gIHJldHVybiBjaHJvbWVkcml2ZXI7XG59XG5cbi8qKlxuICogRmluZCBhIGZyZWUgcG9ydCB0byBoYXZlIENocm9tZWRyaXZlciBsaXN0ZW4gb24uXG4gKlxuICogQHBhcmFtIHthcnJheX0gcG9ydFNwZWMgLSBBcnJheSB3aGljaCBpcyBhIGxpc3Qgb2YgcG9ydHMuIEEgbGlzdCBpdGVtIG1heVxuICogYWxzbyBpdHNlbGYgYmUgYW4gYXJyYXkgb2YgbGVuZ3RoIDIgc3BlY2lmeWluZyBhIHN0YXJ0IGFuZCBlbmQgcG9ydCBvZlxuICogYSByYW5nZS4gU29tZSB2YWxpZCBwb3J0IHNwZWNzOlxuICogICAgLSBbODAwMCwgODAwMSwgODAwMl1cbiAqICAgIC0gW1s4MDAwLCA4MDA1XV1cbiAqICAgIC0gWzgwMDAsIFs5MDAwLCA5MTAwXV1cbiAqIEBwYXJhbSB7T2JqZWN0P30gbG9nIExvZ2dlciBpbnN0YW5jZVxuICpcbiAqIEByZXR1cm4ge251bWJlcn0gQSBmcmVlIHBvcnRcbiAqL1xuYXN5bmMgZnVuY3Rpb24gZ2V0Q2hyb21lZHJpdmVyUG9ydCAocG9ydFNwZWMsIGxvZyA9IG51bGwpIHtcbiAgY29uc3QgZ2V0UG9ydCA9IEIucHJvbWlzaWZ5KFBvcnRGaW5kZXIuZ2V0UG9ydCwge2NvbnRleHQ6IFBvcnRGaW5kZXJ9KTtcblxuICAvLyBpZiB0aGUgdXNlciBkaWRuJ3QgZ2l2ZSB1cyBhbnkgc3BlY2lmaWMgaW5mb3JtYXRpb24gYWJvdXQgY2hyb21lZHJpdmVyXG4gIC8vIHBvcnQgcmFuZ2VzLCBqdXN0IGZpbmQgYW55IGZyZWUgcG9ydFxuICBpZiAoIXBvcnRTcGVjKSB7XG4gICAgY29uc3QgcG9ydCA9IGF3YWl0IGdldFBvcnQoKTtcbiAgICBsb2c/LmRlYnVnKGBBIHBvcnQgd2FzIG5vdCBnaXZlbiwgdXNpbmcgcmFuZG9tIGZyZWUgcG9ydDogJHtwb3J0fWApO1xuICAgIHJldHVybiBwb3J0O1xuICB9XG5cbiAgLy8gb3RoZXJ3aXNlIGZpbmQgdGhlIGZyZWUgcG9ydCBiYXNlZCBvbiBhIGxpc3Qgb3IgcmFuZ2UgcHJvdmlkZWQgYnkgdGhlIHVzZXJcbiAgbG9nPy5kZWJ1ZyhgRmluZGluZyBhIGZyZWUgcG9ydCBmb3IgY2hyb21lZHJpdmVyIHVzaW5nIHNwZWMgJHtKU09OLnN0cmluZ2lmeShwb3J0U3BlYyl9YCk7XG4gIGxldCBmb3VuZFBvcnQgPSBudWxsO1xuICBmb3IgKGNvbnN0IHBvdGVudGlhbFBvcnQgb2YgcG9ydFNwZWMpIHtcbiAgICBsZXQgcG9ydCwgc3RvcFBvcnQ7XG4gICAgaWYgKF8uaXNBcnJheShwb3RlbnRpYWxQb3J0KSkge1xuICAgICAgKFtwb3J0LCBzdG9wUG9ydF0gPSBwb3RlbnRpYWxQb3J0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcG9ydCA9IHBhcnNlSW50KHBvdGVudGlhbFBvcnQsIDEwKTsgLy8gZW5zdXJlIHdlIGhhdmUgYSBudW1iZXIgYW5kIG5vdCBhIHN0cmluZ1xuICAgICAgc3RvcFBvcnQgPSBwb3J0O1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgbG9nPy5kZWJ1ZyhgQ2hlY2tpbmcgcG9ydCByYW5nZSAke3BvcnR9OiR7c3RvcFBvcnR9YCk7XG4gICAgICBmb3VuZFBvcnQgPSBhd2FpdCBnZXRQb3J0KHtwb3J0LCBzdG9wUG9ydH0pO1xuICAgICAgYnJlYWs7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgbG9nPy5kZWJ1ZyhgTm90aGluZyBpbiBwb3J0IHJhbmdlICR7cG9ydH06JHtzdG9wUG9ydH0gd2FzIGF2YWlsYWJsZWApO1xuICAgIH1cbiAgfVxuXG4gIGlmIChmb3VuZFBvcnQgPT09IG51bGwpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYENvdWxkIG5vdCBmaW5kIGEgZnJlZSBwb3J0IGZvciBjaHJvbWVkcml2ZXIgdXNpbmcgYCArXG4gICAgICAgICAgICAgICAgICAgIGBjaHJvbWVkcml2ZXJQb3J0cyBzcGVjICR7SlNPTi5zdHJpbmdpZnkocG9ydFNwZWMpfWApO1xuICB9XG5cbiAgbG9nPy5kZWJ1ZyhgVXNpbmcgZnJlZSBwb3J0ICR7Zm91bmRQb3J0fSBmb3IgY2hyb21lZHJpdmVyYCk7XG4gIHJldHVybiBmb3VuZFBvcnQ7XG59XG5cbmhlbHBlcnMuaXNDaHJvbWVkcml2ZXJBdXRvZG93bmxvYWRFbmFibGVkID0gZnVuY3Rpb24gaXNDaHJvbWVkcml2ZXJBdXRvZG93bmxvYWRFbmFibGVkICgpIHtcbiAgaWYgKHRoaXMuaXNGZWF0dXJlRW5hYmxlZChDSFJPTUVEUklWRVJfQVVUT0RPV05MT0FEX0ZFQVRVUkUpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgdGhpcz8ubG9nPy5kZWJ1ZyhgQXV0b21hdGVkIENocm9tZWRyaXZlciBkb3dubG9hZCBpcyBkaXNhYmxlZC4gYCArXG4gICAgYFVzZSAnJHtDSFJPTUVEUklWRVJfQVVUT0RPV05MT0FEX0ZFQVRVUkV9JyBzZXJ2ZXIgZmVhdHVyZSB0byBlbmFibGUgaXRgKTtcbiAgcmV0dXJuIGZhbHNlO1xufTtcblxuaGVscGVycy5zZXR1cE5ld0Nocm9tZWRyaXZlciA9IGFzeW5jIGZ1bmN0aW9uIHNldHVwTmV3Q2hyb21lZHJpdmVyIChvcHRzLCBjdXJEZXZpY2VJZCwgYWRiLCBjb250ZXh0ID0gbnVsbCkge1xuICBpZiAob3B0cy5jaHJvbWVEcml2ZXJQb3J0KSB7XG4gICAgdGhpcz8ubG9nPy53YXJuKGBUaGUgJ2Nocm9tZURyaXZlclBvcnQnIGNhcGFiaWxpdHkgaXMgZGVwcmVjYXRlZC4gUGxlYXNlIHVzZSAnY2hyb21lZHJpdmVyUG9ydCcgaW5zdGVhZGApO1xuICAgIG9wdHMuY2hyb21lZHJpdmVyUG9ydCA9IG9wdHMuY2hyb21lRHJpdmVyUG9ydDtcbiAgfVxuXG4gIGlmIChvcHRzLmNocm9tZWRyaXZlclBvcnQpIHtcbiAgICB0aGlzPy5sb2c/LmRlYnVnKGBVc2luZyB1c2VyLXNwZWNpZmllZCBwb3J0ICR7b3B0cy5jaHJvbWVkcml2ZXJQb3J0fSBmb3IgY2hyb21lZHJpdmVyYCk7XG4gIH0gZWxzZSB7XG4gICAgLy8gaWYgYSBzaW5nbGUgcG9ydCB3YXNuJ3QgZ2l2ZW4sIHdlJ2xsIGxvb2sgZm9yIGEgZnJlZSBvbmVcbiAgICBvcHRzLmNocm9tZWRyaXZlclBvcnQgPSBhd2FpdCBnZXRDaHJvbWVkcml2ZXJQb3J0KG9wdHMuY2hyb21lZHJpdmVyUG9ydHMsIHRoaXM/LmxvZyk7XG4gIH1cblxuICBjb25zdCBkZXRhaWxzID0gY29udGV4dCA/IHdlYnZpZXdIZWxwZXJzLmdldFdlYnZpZXdEZXRhaWxzKGFkYiwgY29udGV4dCkgOiB1bmRlZmluZWQ7XG4gIGlmICghXy5pc0VtcHR5KGRldGFpbHMpKSB7XG4gICAgdGhpcz8ubG9nPy5kZWJ1ZygnUGFzc2luZyB3ZWIgdmlldyBkZXRhaWxzIHRvIHRoZSBDaHJvbWVkcml2ZXIgY29uc3RydWN0b3I6ICcgK1xuICAgICAgSlNPTi5zdHJpbmdpZnkoZGV0YWlscywgbnVsbCwgMikpO1xuICB9XG5cbiAgY29uc3QgY2hyb21lZHJpdmVyID0gbmV3IENocm9tZWRyaXZlcih7XG4gICAgcG9ydDogb3B0cy5jaHJvbWVkcml2ZXJQb3J0LFxuICAgIGV4ZWN1dGFibGU6IG9wdHMuY2hyb21lZHJpdmVyRXhlY3V0YWJsZSxcbiAgICBhZGIsXG4gICAgY21kQXJnczogb3B0cy5jaHJvbWVkcml2ZXJBcmdzLFxuICAgIHZlcmJvc2U6ICEhb3B0cy5zaG93Q2hyb21lZHJpdmVyTG9nLFxuICAgIGV4ZWN1dGFibGVEaXI6IG9wdHMuY2hyb21lZHJpdmVyRXhlY3V0YWJsZURpcixcbiAgICBtYXBwaW5nUGF0aDogb3B0cy5jaHJvbWVkcml2ZXJDaHJvbWVNYXBwaW5nRmlsZSxcbiAgICBidW5kbGVJZDogb3B0cy5jaHJvbWVCdW5kbGVJZCxcbiAgICB1c2VTeXN0ZW1FeGVjdXRhYmxlOiBvcHRzLmNocm9tZWRyaXZlclVzZVN5c3RlbUV4ZWN1dGFibGUsXG4gICAgZGlzYWJsZUJ1aWxkQ2hlY2s6IG9wdHMuY2hyb21lZHJpdmVyRGlzYWJsZUJ1aWxkQ2hlY2ssXG4gICAgZGV0YWlscyxcbiAgICBpc0F1dG9kb3dubG9hZEVuYWJsZWQ6IHRoaXM/LmlzQ2hyb21lZHJpdmVyQXV0b2Rvd25sb2FkRW5hYmxlZD8uKClcbiAgfSk7XG5cbiAgLy8gbWFrZSBzdXJlIHRoZXJlIGFyZSBjaHJvbWVPcHRpb25zXG4gIG9wdHMuY2hyb21lT3B0aW9ucyA9IG9wdHMuY2hyb21lT3B0aW9ucyB8fCB7fTtcbiAgLy8gdHJ5IG91dCBhbnkgcHJlZml4ZWQgY2hyb21lT3B0aW9ucyxcbiAgLy8gYW5kIHN0cmlwIHRoZSBwcmVmaXhcbiAgZm9yIChjb25zdCBvcHQgb2YgXy5rZXlzKG9wdHMpKSB7XG4gICAgaWYgKG9wdC5lbmRzV2l0aCgnOmNocm9tZU9wdGlvbnMnKSkge1xuICAgICAgdGhpcz8ubG9nPy53YXJuKGBNZXJnaW5nICcke29wdH0nIGludG8gJ2Nocm9tZU9wdGlvbnMnLiBUaGlzIG1heSBjYXVzZSB1bmV4cGVjdGVkIGJlaGF2aW9yYCk7XG4gICAgICBfLm1lcmdlKG9wdHMuY2hyb21lT3B0aW9ucywgb3B0c1tvcHRdKTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBjYXBzID0gd2Vidmlld0hlbHBlcnMuY3JlYXRlQ2hyb21lZHJpdmVyQ2FwcyhvcHRzLCBjdXJEZXZpY2VJZCwgZGV0YWlscyk7XG4gIHRoaXM/LmxvZz8uZGVidWcoYEJlZm9yZSBzdGFydGluZyBjaHJvbWVkcml2ZXIsIGFuZHJvaWRQYWNrYWdlIGlzICcke2NhcHMuY2hyb21lT3B0aW9ucy5hbmRyb2lkUGFja2FnZX0nYCk7XG4gIGF3YWl0IGNocm9tZWRyaXZlci5zdGFydChjYXBzKTtcbiAgcmV0dXJuIGNocm9tZWRyaXZlcjtcbn07XG5jb25zdCBzZXR1cE5ld0Nocm9tZWRyaXZlciA9IGhlbHBlcnMuc2V0dXBOZXdDaHJvbWVkcml2ZXI7XG5cblxuT2JqZWN0LmFzc2lnbihleHRlbnNpb25zLCBjb21tYW5kcywgaGVscGVycyk7XG5leHBvcnQgeyBjb21tYW5kcywgaGVscGVycywgc2V0dXBOZXdDaHJvbWVkcml2ZXIgfTtcbmV4cG9ydCBkZWZhdWx0IGV4dGVuc2lvbnM7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBSUE7Ozs7OztBQUVBLE1BQU1BLGlDQUFpQyxHQUFHLDJCQUExQztBQUVBLElBQUlDLFFBQVEsR0FBRyxFQUFmO0FBQUEsSUFBbUJDLE9BQU8sR0FBRyxFQUE3QjtBQUFBLElBQWlDQyxVQUFVLEdBQUcsRUFBOUM7Ozs7QUFNQUYsUUFBUSxDQUFDRyxpQkFBVCxHQUE2QixlQUFlQSxpQkFBZixHQUFvQztFQUcvRCxPQUFPLEtBQUtDLFVBQUwsSUFBbUIsS0FBS0Msa0JBQUwsRUFBMUI7QUFDRCxDQUpEOztBQU1BTCxRQUFRLENBQUNNLFdBQVQsR0FBdUIsZUFBZUEsV0FBZixHQUE4QjtFQUNuRCxNQUFNQyxlQUFlLEdBQUcsTUFBTUMsdUJBQUEsQ0FBZUMsa0JBQWYsQ0FBa0MsS0FBS0MsR0FBdkMsRUFBNEMsS0FBS0MsSUFBakQsQ0FBOUI7RUFDQSxPQUFPLEtBQUtDLGNBQUwsQ0FBb0JMLGVBQXBCLENBQVA7QUFDRCxDQUhEOztBQUtBUCxRQUFRLENBQUNhLFVBQVQsR0FBc0IsZUFBZUEsVUFBZixDQUEyQkMsSUFBM0IsRUFBaUM7RUFDckQsSUFBSSxDQUFDQyxhQUFBLENBQUtDLFFBQUwsQ0FBY0YsSUFBZCxDQUFMLEVBQTBCO0lBQ3hCQSxJQUFJLEdBQUcsS0FBS1Qsa0JBQUwsRUFBUDtFQUNELENBRkQsTUFFTyxJQUFJUyxJQUFJLEtBQUtHLDJCQUFiLEVBQTBCO0lBRS9CSCxJQUFJLEdBQUcsS0FBS0ksa0JBQUwsRUFBUDtFQUNEOztFQUVELElBQUlKLElBQUksS0FBSyxLQUFLVixVQUFsQixFQUE4QjtJQUM1QjtFQUNEOztFQUVELE1BQU1HLGVBQWUsR0FBRyxNQUFNQyx1QkFBQSxDQUFlQyxrQkFBZixDQUFrQyxL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
|