1 | /* eslint-disable */
|
2 | ;
|
3 |
|
4 | Object.defineProperty(exports, "__esModule", {
|
5 | value: true
|
6 | });
|
7 | exports.default = void 0;
|
8 |
|
9 | var _libCli = _interopRequireDefault(require("@pagedip/lib-cli"));
|
10 |
|
11 | var _package = require("../package.json");
|
12 |
|
13 | var _inquirer = _interopRequireDefault(require("inquirer"));
|
14 |
|
15 | var _updateNotifier = _interopRequireDefault(require("update-notifier"));
|
16 |
|
17 | var _fs = _interopRequireDefault(require("mz/fs"));
|
18 |
|
19 | var _libLicenseTools = require("@pagedip/lib-license-tools");
|
20 |
|
21 | var _index = require("./index");
|
22 |
|
23 | var _utilLogger = _interopRequireDefault(require("@pagedip/util-logger"));
|
24 |
|
25 | var _util = require("util");
|
26 |
|
27 | var _getStdin = _interopRequireDefault(require("get-stdin"));
|
28 |
|
29 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
30 |
|
31 | function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
|
32 |
|
33 | function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
|
34 |
|
35 | var apps = ["api", "auth", "auth-proxy", "couchdb-setup", "editor", "enterprise-edition", "files-proxy", "live", "theme"]; // check for updates daily
|
36 |
|
37 | (0, _updateNotifier.default)({
|
38 | pkg: {
|
39 | name: _package.name,
|
40 | version: _package.version
|
41 | }
|
42 | }).notify();
|
43 | var cli = (0, _libCli.default)();
|
44 | var _default = cli;
|
45 | exports.default = _default;
|
46 | cli.version("".concat(_package.name, " ").concat(_package.version));
|
47 | cli.command({
|
48 | command: "$0 [command] --",
|
49 | passthrough: true,
|
50 | describe: "The Pagedip CLI tool",
|
51 | notes: "This is the main Pagedip CLI tool. With this tool you can install Pagedip packages, run servers, and more.\n\nThe following app names can be used as commands directly: ".concat(apps.join(", ")),
|
52 | handler: function () {
|
53 | var _handler = _asyncToGenerator(function* (_ref) {
|
54 | var app = _ref.app,
|
55 | _ref$argv = _ref.argv,
|
56 | params = _ref$argv.params,
|
57 | args = _ref$argv.args,
|
58 | flags = _ref$argv.flags;
|
59 |
|
60 | if (params.command) {
|
61 | var cmdname = params.command; // resolveCommandName(params.command);
|
62 |
|
63 | if (this.getCommand(cmdname)) {
|
64 | yield this.run(cmdname, args);
|
65 | return;
|
66 | }
|
67 |
|
68 | if (apps.includes(cmdname)) {
|
69 | yield this.run("run", [cmdname].concat(args));
|
70 | return;
|
71 | }
|
72 | } else if (flags.version) {
|
73 | console.log(app.version());
|
74 | return;
|
75 | }
|
76 |
|
77 | console.log(app.help());
|
78 | });
|
79 |
|
80 | function handler(_x) {
|
81 | return _handler.apply(this, arguments);
|
82 | }
|
83 |
|
84 | return handler;
|
85 | }()
|
86 | });
|
87 | cli.command({
|
88 | command: "install <packages...>",
|
89 | alias: ["i"],
|
90 | describe: "Install Pagedip packages.",
|
91 | notes: "This will install Pagedip packages and apps from the Pagedip registry. This host should already be registered with a valid license key before installing packages.\n\nOne or more packages can be installed at once. Postfix the package name with '@version' to install a specific version.",
|
92 | flags: {
|
93 | tag: {
|
94 | type: "string",
|
95 | describe: "Install packages from a specific dist-tag.",
|
96 | alias: ["t"]
|
97 | }
|
98 | },
|
99 | handler: function () {
|
100 | var _handler2 = _asyncToGenerator(function* (_ref2) {
|
101 | var _ref2$argv = _ref2.argv,
|
102 | params = _ref2$argv.params,
|
103 | flags = _ref2$argv.flags;
|
104 | yield (0, _index.install)(params.packages, {
|
105 | tag: flags.tag
|
106 | });
|
107 | });
|
108 |
|
109 | function handler(_x2) {
|
110 | return _handler2.apply(this, arguments);
|
111 | }
|
112 |
|
113 | return handler;
|
114 | }()
|
115 | });
|
116 | cli.command({
|
117 | command: "run <app> --",
|
118 | alias: ["app"],
|
119 | passthrough: true,
|
120 | describe: "Run a Pagedip app by name.",
|
121 | notes: "CLI options are passed through to the app directly. This host should already be registered with a valid license key before running apps.\n\nIf the app is not installed on the host, you will be asked to install the app before it runs.",
|
122 | handler: function () {
|
123 | var _handler3 = _asyncToGenerator(function* (_ref3) {
|
124 | var _ref3$argv = _ref3.argv,
|
125 | params = _ref3$argv.params,
|
126 | args = _ref3$argv.args;
|
127 | var cmd;
|
128 | var cmdname = params.app;
|
129 |
|
130 | try {
|
131 | cmd = yield (0, _index.load)(cmdname);
|
132 | } catch (e) {
|
133 | if (e.code !== "PACKAGE_NOT_FOUND") throw e;
|
134 |
|
135 | var _ref4 = yield _inquirer.default.prompt([{
|
136 | type: "confirm",
|
137 | name: "confirm",
|
138 | message: "Could not locate a package named '".concat(args[0], "'. Do you want to attempt to install it?"),
|
139 | default: true
|
140 | }]),
|
141 | confirm = _ref4.confirm;
|
142 |
|
143 | if (!confirm) throw e;
|
144 | yield (0, _index.install)(cmdname);
|
145 | cmd = yield (0, _index.load)(cmdname);
|
146 | }
|
147 |
|
148 | if (cmd) {
|
149 | return yield cmd.run(args);
|
150 | }
|
151 | });
|
152 |
|
153 | function handler(_x3) {
|
154 | return _handler3.apply(this, arguments);
|
155 | }
|
156 |
|
157 | return handler;
|
158 | }()
|
159 | });
|
160 | cli.command({
|
161 | command: "start --",
|
162 | alias: ["server", "ee", "enterprise-edition"],
|
163 | passthrough: true,
|
164 | describe: "Start a Pagedip Enterprise server.",
|
165 | handler: function () {
|
166 | var _handler4 = _asyncToGenerator(function* (_ref5) {
|
167 | var args = _ref5.argv.args;
|
168 | return yield this.run("run", ["enterprise-edition"].concat(args));
|
169 | });
|
170 |
|
171 | function handler(_x4) {
|
172 | return _handler4.apply(this, arguments);
|
173 | }
|
174 |
|
175 | return handler;
|
176 | }()
|
177 | });
|
178 |
|
179 | function printLicense(data) {
|
180 | console.log("%s\nID: %s\nRegistered To: %s\nIssued: %s\nExpires: %s", _utilLogger.default.color.white.bgGreen("Valid Pagedip license key."), data.id, data.user, new Date(data.issued).toString(), new Date(data.ttl).toString());
|
181 | console.log("\n%s\n", (0, _util.inspect)(data.payload, {
|
182 | colors: true,
|
183 | depth: Infinity
|
184 | }));
|
185 | }
|
186 |
|
187 | cli.command({
|
188 | command: "license [key]",
|
189 | describe: "Verify and print information about a Pagedip license key.",
|
190 | notes: "This will verify a license key and print some basic information about it. If you do not pass a license key, this will display info on the installed key.",
|
191 | handler: function () {
|
192 | var _handler5 = _asyncToGenerator(function* (_ref6) {
|
193 | var params = _ref6.argv.params;
|
194 | var data = yield (0, _libLicenseTools.verify)((0, _libLicenseTools.getLicense)(params.key));
|
195 | printLicense(data);
|
196 | });
|
197 |
|
198 | function handler(_x5) {
|
199 | return _handler5.apply(this, arguments);
|
200 | }
|
201 |
|
202 | return handler;
|
203 | }()
|
204 | });
|
205 | cli.command({
|
206 | command: "register [key]",
|
207 | describe: "Register this host with a Pagedip License key to interact with various restricted Pagedip services.",
|
208 | params: {
|
209 | key: {
|
210 | describe: "A license key to register this machine with. Pass '-' to read the key from stdin."
|
211 | }
|
212 | },
|
213 | flags: {
|
214 | keyFile: {
|
215 | type: "string",
|
216 | describe: "Register via a Pagedip license file.",
|
217 | alias: ["f", "key-file", "file"],
|
218 | usageFlag: "key-file"
|
219 | }
|
220 | },
|
221 | handler: function () {
|
222 | var _handler6 = _asyncToGenerator(function* (_ref7) {
|
223 | var app = _ref7.app,
|
224 | _ref7$argv = _ref7.argv,
|
225 | params = _ref7$argv.params,
|
226 | flags = _ref7$argv.flags;
|
227 | var key;
|
228 |
|
229 | if (params.key === "-") {
|
230 | key = yield (0, _getStdin.default)();
|
231 | } else if (params.key) {
|
232 | key = params.key;
|
233 | } else if (flags.keyFile) {
|
234 | key = yield _fs.default.readFile(flags.keyFile, "utf-8");
|
235 | } else {
|
236 | var result = yield _inquirer.default.prompt([{
|
237 | type: "input",
|
238 | name: "key",
|
239 | message: "License Key (paste the raw license contents here)",
|
240 | validate: function validate(v) {
|
241 | return Boolean(v.length);
|
242 | }
|
243 | }]);
|
244 | key = result.key;
|
245 | }
|
246 |
|
247 | if (!key) {
|
248 | console.log(app.help());
|
249 | return;
|
250 | }
|
251 |
|
252 | var data = yield (0, _libLicenseTools.verifyInstall)(key);
|
253 | console.log("");
|
254 | printLicense(data);
|
255 | console.log(_utilLogger.default.color.green("Thank you for registering! You can now download and use Pagedip packages. \uD83C\uDF89\n"));
|
256 | });
|
257 |
|
258 | function handler(_x6) {
|
259 | return _handler6.apply(this, arguments);
|
260 | }
|
261 |
|
262 | return handler;
|
263 | }()
|
264 | });
|
265 | cli.command({
|
266 | command: "unregister",
|
267 | describe: "Removes the Pagedip license key from this machine.",
|
268 | handler: function () {
|
269 | var _handler7 = _asyncToGenerator(function* () {
|
270 | yield (0, _libLicenseTools.uninstall)();
|
271 | console.log("Successfully unregistered this machine.");
|
272 | });
|
273 |
|
274 | function handler() {
|
275 | return _handler7.apply(this, arguments);
|
276 | }
|
277 |
|
278 | return handler;
|
279 | }()
|
280 | });
|
281 | module.exports = exports.default;
|
282 | //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jbGkuanMiXSwibmFtZXMiOlsiYXBwcyIsInBrZyIsIm5hbWUiLCJ2ZXJzaW9uIiwibm90aWZ5IiwiY2xpIiwiY29tbWFuZCIsInBhc3N0aHJvdWdoIiwiZGVzY3JpYmUiLCJub3RlcyIsImpvaW4iLCJoYW5kbGVyIiwiYXBwIiwiYXJndiIsInBhcmFtcyIsImFyZ3MiLCJmbGFncyIsImNtZG5hbWUiLCJnZXRDb21tYW5kIiwicnVuIiwiaW5jbHVkZXMiLCJjb25jYXQiLCJjb25zb2xlIiwibG9nIiwiaGVscCIsImFsaWFzIiwidGFnIiwidHlwZSIsInBhY2thZ2VzIiwiY21kIiwiZSIsImNvZGUiLCJpbnF1aXJlciIsInByb21wdCIsIm1lc3NhZ2UiLCJkZWZhdWx0IiwiY29uZmlybSIsInByaW50TGljZW5zZSIsImRhdGEiLCJjb2xvciIsIndoaXRlIiwiYmdHcmVlbiIsImlkIiwidXNlciIsIkRhdGUiLCJpc3N1ZWQiLCJ0b1N0cmluZyIsInR0bCIsInBheWxvYWQiLCJjb2xvcnMiLCJkZXB0aCIsIkluZmluaXR5Iiwia2V5Iiwia2V5RmlsZSIsInVzYWdlRmxhZyIsImZzIiwicmVhZEZpbGUiLCJyZXN1bHQiLCJ2YWxpZGF0ZSIsInYiLCJCb29sZWFuIiwibGVuZ3RoIiwiZ3JlZW4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBSUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7Ozs7O0FBRUEsSUFBTUEsSUFBSSxHQUFHLENBQ1gsS0FEVyxFQUVYLE1BRlcsRUFHWCxZQUhXLEVBSVgsZUFKVyxFQUtYLFFBTFcsRUFNWCxvQkFOVyxFQU9YLGFBUFcsRUFRWCxNQVJXLEVBU1gsT0FUVyxDQUFiLEMsQ0FZQTs7QUFDQSw2QkFBZTtBQUNiQyxFQUFBQSxHQUFHLEVBQUU7QUFBRUMsSUFBQUEsSUFBSSxFQUFKQSxhQUFGO0FBQVFDLElBQUFBLE9BQU8sRUFBUEE7QUFBUjtBQURRLENBQWYs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cENnQyxVQUFBQSxPQUFPLEVBQUUsbURBSDJCO0FBSXBDd0IsVUFBQUEsUUFBUSxFQUFFLGtCQUFDQyxDQUFEO0FBQUEsbUJBQU9DLE9BQU8sQ0FBQ0QsQ0FBQyxDQUFDRSxNQUFILENBQWQ7QUFBQTtBQUowQixTQUFELENBQWhCLENBQXJCO0FBT0FULFFBQUFBLEdBQUcsR0FBR0ssTUFBTSxDQUFDTCxHQUFiO0FBQ0Q7O0FBRUQsVUFBSSxDQUFDQSxHQUFMLEVBQVU7QUFDUjlCLFFBQUFBLE9BQU8sQ0FBQ0MsR0FBUixDQUFZWCxHQUFHLENBQUNZLElBQUosRUFBWjtBQUNBO0FBQ0Q7O0FBRUQsVUFBTWMsSUFBSSxTQUFTLG9DQUFjYyxHQUFkLENBQW5CO0FBQ0E5QixNQUFBQSxPQUFPLENBQUNDLEdBQVIsQ0FBWSxFQUFaO0FBQ0FjLE1BQUFBLFlBQVksQ0FBQ0MsSUFBRCxDQUFaO0FBQ0FoQixNQUFBQSxPQUFPLENBQUNDLEdBQVIsQ0FBWUEsb0JBQUlnQixLQUFKLENBQVV1QixLQUFWLDRGQUFaO0FBQ0QsS0E3Q1M7O0FBQUE7QUFBQTtBQUFBOztBQUFBO0FBQUE7QUFBQSxDQUFaO0FBZ0RBekQsR0FBRyxDQUFDQyxPQUFKLENBQVk7QUFDVkEsRUFBQUEsT0FBTyxFQUFFLFlBREM7QUFFVkUsRUFBQUEsUUFBUSxFQUFFLG9EQUZBO0FBR0pHLEVBQUFBLE9BSEk7QUFBQSxtREFHTTtBQUNkLFlBQU0saUNBQU47QUFDQVcsTUFBQUEsT0FBTyxDQUFDQyxHQUFSLENBQVkseUNBQVo7QUFDRCxLQU5TOztBQUFBO0FBQUE7QUFBQTs7QUFBQTtBQUFBO0FBQUEsQ0FBWiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjcmVhdGVDbGkgZnJvbSBcIkBwYWdlZGlwL2xpYi1jbGlcIjtcbmltcG9ydCB7bmFtZSx2ZXJzaW9ufSBmcm9tIFwiLi4vcGFja2FnZS5qc29uXCI7XG5pbXBvcnQgaW5xdWlyZXIgZnJvbSBcImlucXVpcmVyXCI7XG5pbXBvcnQgdXBkYXRlTm90aWZpZXIgZnJvbSBcInVwZGF0ZS1ub3RpZmllclwiO1xuaW1wb3J0IGZzIGZyb20gXCJtei9mc1wiO1xuaW1wb3J0IHtcbiAgdmVyaWZ5SW5zdGFsbCwgZ2V0TGljZW5zZSxcbiAgdmVyaWZ5LCB1bmluc3RhbGxcbn0gZnJvbSBcIkBwYWdlZGlwL2xpYi1saWNlbnNlLXRvb2xzXCI7XG5pbXBvcnQgeyBpbnN0YWxsLCBsb2FkIH0gZnJvbSBcIi4vaW5kZXhcIjtcbmltcG9ydCBsb2cgZnJvbSBcIkBwYWdlZGlwL3V0aWwtbG9nZ2VyXCI7XG5pbXBvcnQge2luc3BlY3R9IGZyb20gXCJ1dGlsXCI7XG5pbXBvcnQgZ2V0U3RkaW4gZnJvbSBcImdldC1zdGRpblwiO1xuXG5jb25zdCBhcHBzID0gW1xuICBcImFwaVwiLFxuICBcImF1dGhcIixcbiAgXCJhdXRoLXByb3h5XCIsXG4gIFwiY291Y2hkYi1zZXR1cFwiLFxuICBcImVkaXRvclwiLFxuICBcImVudGVycHJpc2UtZWRpdGlvblwiLFxuICBcImZpbGVzLXByb3h5XCIsXG4gIFwibGl2ZVwiLFxuICBcInRoZW1lXCJcbl07XG5cbi8vIGNoZWNrIGZvciB1cGRhdGVzIGRhaWx5XG51cGRhdGVOb3RpZmllcih7XG4gIHBrZzogeyBuYW1lLCB2ZXJzaW9uIH1cbn0pLm5vdGlmeSgpO1xuXG5jb25zdCBjbGkgPSBjcmVhdGVDbGkoKTtcbmV4cG9ydCBkZWZhdWx0IGNsaTtcblxuY2xpLnZlcnNpb24oYCR7bmFtZX0gJHt2ZXJzaW9ufWApO1xuXG5jbGkuY29tbWFuZCh7XG4gIGNvbW1hbmQ6IFwiJDAgW2NvbW1hbmRdIC0tXCIsXG4gIHBhc3N0aHJvdWdoOiB0cnVlLFxuICBkZXNjcmliZTogXCJUaGUgUGFnZWRpcCBDTEkgdG9vbFwiLFxuICBub3RlczogYFRoaXMgaXMgdGhlIG1haW4gUGFnZWRpcCBDTEkgdG9vbC4gV2l0aCB0aGlzIHRvb2wgeW91IGNhbiBpbnN0YWxsIFBhZ2VkaXAgcGFja2FnZXMsIHJ1biBzZXJ2ZXJzLCBhbmQgbW9yZS5cblxuVGhlIGZvbGxvd2luZyBhcHAgbmFtZXMgY2FuIGJlIHVzZWQgYXMgY29tbWFuZHMgZGlyZWN0bHk6ICR7YXBwcy5qb2luKFwiLCBcIil9YCxcbiAgYXN5bmMgaGFuZGxlcih7IGFwcCwgYXJndjogeyBwYXJhbXMsIGFyZ3MsIGZsYWdzIH0gfSkge1xuICAgIGlmIChwYXJhbXMuY29tbWFuZCkge1xuICAgICAgY29uc3QgY21kbmFtZSA9IHBhcmFtcy5jb21tYW5kOyAvLyByZXNvbHZlQ29tbWFuZE5hbWUocGFyYW1zLmNvbW1hbmQpO1xuXG4gICAgICBpZiAodGhpcy5nZXRDb21tYW5kKGNtZG5hbWUpKSB7XG4gICAgICAgIGF3YWl0IHRoaXMucnVuKGNtZG5hbWUsIGFyZ3MpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmIChhcHBzLmluY2x1ZGVzKGNtZG5hbWUpKSB7XG4gICAgICAgIGF3YWl0IHRoaXMucnVuKFwicnVuXCIsIFtjbWRuYW1lXS5jb25jYXQoYXJncykpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChmbGFncy52ZXJzaW9uKSB7XG4gICAgICBjb25zb2xlLmxvZyhhcHAudmVyc2lvbigpKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zb2xlLmxvZyhhcHAuaGVscCgpKTtcbiAgfVxufSk7XG5cbmNsaS5jb21tYW5kKHtcbiAgY29tbWFuZDogXCJpbnN0YWxsIDxwYWNrYWdlcy4uLj5cIixcbiAgYWxpYXM6IFsgXCJpXCIgXSxcbiAgZGVzY3JpYmU6IFwiSW5zdGFsbCBQYWdlZGlwIHBhY2thZ2VzLlwiLFxuICBub3RlczogYFRoaXMgd2lsbCBpbnN0YWxsIFBhZ2VkaXAgcGFja2FnZXMgYW5kIGFwcHMgZnJvbSB0aGUgUGFnZWRpcCByZWdpc3RyeS4gVGhpcyBob3N0IHNob3VsZCBhbHJlYWR5IGJlIHJlZ2lzdGVyZWQgd2l0aCBhIHZhbGlkIGxpY2Vuc2Uga2V5IGJlZm9yZSBpbnN0YWxsaW5nIHBhY2thZ2VzLlxuXG5PbmUgb3IgbW9yZSBwYWNrYWdlcyBjYW4gYmUgaW5zdGFsbGVkIGF0IG9uY2UuIFBvc3RmaXggdGhlIHBhY2thZ2UgbmFtZSB3aXRoICdAdmVyc2lvbicgdG8gaW5zdGFsbCBhIHNwZWNpZmljIHZlcnNpb24uYCxcbiAgZmxhZ3M6IHtcbiAgICB0YWc6IHtcbiAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICBkZXNjcmliZTogXCJJbnN0YWxsIHBhY2thZ2VzIGZyb20gYSBzcGVjaWZpYyBkaXN0LXRhZy5cIixcbiAgICAgIGFsaWFzOiBbIFwidFwiIF1cbiAgICB9XG4gIH0sXG4gIGFzeW5jIGhhbmRsZXIoeyBhcmd2OiB7IHBhcmFtcywgZmxhZ3MgfSB9KSB7XG4gICAgYXdhaXQgaW5zdGFsbChwYXJhbXMucGFja2FnZXMsIHtcbiAgICAgIHRhZzogZmxhZ3MudGFnXG4gICAgfSk7XG4gIH1cbn0pO1xuXG5jbGkuY29tbWFuZCh7XG4gIGNvbW1hbmQ6IFwicnVuIDxhcHA+IC0tXCIsXG4gIGFsaWFzOiBbIFwiYXBwXCIgXSxcbiAgcGFzc3Rocm91Z2g6IHRydWUsXG4gIGRlc2NyaWJlOiBcIlJ1biBhIFBhZ2VkaXAgYXBwIGJ5IG5hbWUuXCIsXG4gIG5vdGVzOiBgQ0xJIG9wdGlvbnMgYXJlIHBhc3NlZCB0aHJvdWdoIHRvIHRoZSBhcHAgZGlyZWN0bHkuIFRoaXMgaG9zdCBzaG91bGQgYWxyZWFkeSBiZSByZWdpc3RlcmVkIHdpdGggYSB2YWxpZCBsaWNlbnNlIGtleSBiZWZvcmUgcnVubmluZyBhcHBzLlxuXG5JZiB0aGUgYXBwIGlzIG5vdCBpbnN0YWxsZWQgb24gdGhlIGhvc3QsIHlvdSB3aWxsIGJlIGFza2VkIHRvIGluc3RhbGwgdGhlIGFwcCBiZWZvcmUgaXQgcnVucy5gLFxuICBhc3luYyBoYW5kbGVyKHsgYXJndjogeyBwYXJhbXMsIGFyZ3MgfSB9KSB7XG4gICAgbGV0IGNtZDtcbiAgICBjb25zdCBjbWRuYW1lID0gcGFyYW1zLmFwcDtcblxuICAgIHRyeSB7XG4gICAgICBjbWQgPSBhd2FpdCBsb2FkKGNtZG5hbWUpO1xuICAgIH0gY2F0Y2goZSkge1xuICAgICAgaWYgKGUuY29kZSAhPT0gXCJQQUNLQUdFX05PVF9GT1VORFwiKSB0aHJvdyBlO1xuXG4gICAgICBjb25zdCB7Y29uZmlybX0gPSBhd2FpdCBpbnF1aXJlci5wcm9tcHQoW3tcbiAgICAgICAgdHlwZTogXCJjb25maXJtXCIsXG4gICAgICAgIG5hbWU6IFwiY29uZmlybVwiLFxuICAgICAgICBtZXNzYWdlOiBgQ291bGQgbm90IGxvY2F0ZSBhIHBhY2thZ2UgbmFtZWQgJyR7YXJnc1swXX0nLiBEbyB5b3Ugd2FudCB0byBhdHRlbXB0IHRvIGluc3RhbGwgaXQ/YCxcbiAgICAgICAgZGVmYXVsdDogdHJ1ZVxuICAgICAgfV0pO1xuXG4gICAgICBpZiAoIWNvbmZpcm0pIHRocm93IGU7XG5cbiAgICAgIGF3YWl0IGluc3RhbGwoY21kbmFtZSk7XG4gICAgICBjbWQgPSBhd2FpdCBsb2FkKGNtZG5hbWUpO1xuICAgIH1cblxuICAgIGlmIChjbWQpIHtcbiAgICAgIHJldHVybiBhd2FpdCBjbWQucnVuKGFyZ3MpO1xuICAgIH1cbiAgfVxufSk7XG5cbmNsaS5jb21tYW5kKHtcbiAgY29tbWFuZDogXCJzdGFydCAtLVwiLFxuICBhbGlhczogWyBcInNlcnZlclwiLCBcImVlXCIsIFwiZW50ZXJwcmlzZS1lZGl0aW9uXCIgXSxcbiAgcGFzc3Rocm91Z2g6IHRydWUsXG4gIGRlc2NyaWJlOiBcIlN0YXJ0IGEgUGFnZWRpcCBFbnRlcnByaXNlIHNlcnZlci5cIixcbiAgYXN5bmMgaGFuZGxlcih7IGFyZ3Y6IHsgYXJncyB9IH0pIHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5ydW4oXCJydW5cIiwgWyBcImVudGVycHJpc2UtZWRpdGlvblwiIF0uY29uY2F0KGFyZ3MpKTtcbiAgfVxufSk7XG5cbmZ1bmN0aW9uIHByaW50TGljZW5zZShkYXRhKSB7XG4gIGNvbnNvbGUubG9nKGAlc1xcbklEOiAlc1xcblJlZ2lzdGVyZWQgVG86ICVzXFxuSXNzdWVkOiAlc1xcbkV4cGlyZXM6ICVzYCxcbiAgICBsb2cuY29sb3Iud2hpdGUuYmdHcmVlbihgVmFsaWQgUGFnZWRpcCBsaWNlbnNlIGtleS5gKSxcbiAgICBkYXRhLmlkLFxuICAgIGRhdGEudXNlcixcbiAgICBuZXcgRGF0ZShkYXRhLmlzc3VlZCkudG9TdHJpbmcoKSxcbiAgICBuZXcgRGF0ZShkYXRhLnR0bCkudG9TdHJpbmcoKVxuICApO1xuICBjb25zb2xlLmxvZyhcIlxcbiVzXFxuXCIsIGluc3BlY3QoZGF0YS5wYXlsb2FkLCB7XG4gICAgY29sb3JzOiB0cnVlLFxuICAgIGRlcHRoOiBJbmZpbml0eVxuICB9KSk7XG59XG5cbmNsaS5jb21tYW5kKHtcbiAgY29tbWFuZDogXCJsaWNlbnNlIFtrZXldXCIsXG4gIGRlc2NyaWJlOiBcIlZlcmlmeSBhbmQgcHJpbnQgaW5mb3JtYXRpb24gYWJvdXQgYSBQYWdlZGlwIGxpY2Vuc2Uga2V5LlwiLFxuICBub3RlczogYFRoaXMgd2lsbCB2ZXJpZnkgYSBsaWNlbnNlIGtleSBhbmQgcHJpbnQgc29tZSBiYXNpYyBpbmZvcm1hdGlvbiBhYm91dCBpdC4gSWYgeW91IGRvIG5vdCBwYXNzIGEgbGljZW5zZSBrZXksIHRoaXMgd2lsbCBkaXNwbGF5IGluZm8gb24gdGhlIGluc3RhbGxlZCBrZXkuYCxcbiAgYXN5bmMgaGFuZGxlcih7IGFyZ3Y6IHsgcGFyYW1zIH0gfSkge1xuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB2ZXJpZnkoZ2V0TGljZW5zZShwYXJhbXMua2V5KSk7XG4gICAgcHJpbnRMaWNlbnNlKGRhdGEpO1xuICB9XG59KTtcblxuY2xpLmNvbW1hbmQoe1xuICBjb21tYW5kOiBcInJlZ2lzdGVyIFtrZXldXCIsXG4gIGRlc2NyaWJlOiBgUmVnaXN0ZXIgdGhpcyBob3N0IHdpdGggYSBQYWdlZGlwIExpY2Vuc2Uga2V5IHRvIGludGVyYWN0IHdpdGggdmFyaW91cyByZXN0cmljdGVkIFBhZ2VkaXAgc2VydmljZXMuYCxcbiAgcGFyYW1zOiB7XG4gICAga2V5OiB7XG4gICAgICBkZXNjcmliZTogYEEgbGljZW5zZSBrZXkgdG8gcmVnaXN0ZXIgdGhpcyBtYWNoaW5lIHdpdGguIFBhc3MgJy0nIHRvIHJlYWQgdGhlIGtleSBmcm9tIHN0ZGluLmBcbiAgICB9XG4gIH0sXG4gIGZsYWdzOiB7XG4gICAga2V5RmlsZToge1xuICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgIGRlc2NyaWJlOiBcIlJlZ2lzdGVyIHZpYSBhIFBhZ2VkaXAgbGljZW5zZSBmaWxlLlwiLFxuICAgICAgYWxpYXM6IFsgXCJmXCIsIFwia2V5LWZpbGVcIiwgXCJmaWxlXCIgXSxcbiAgICAgIHVzYWdlRmxhZzogXCJrZXktZmlsZVwiXG4gICAgfVxuICB9LFxuICBhc3luYyBoYW5kbGVyKHsgYXBwLCBhcmd2OiB7IHBhcmFtcywgZmxhZ3MgfSB9KSB7XG4gICAgbGV0IGtleTtcblxuICAgIGlmIChwYXJhbXMua2V5ID09PSBcIi1cIikge1xuICAgICAga2V5ID0gYXdhaXQgZ2V0U3RkaW4oKTtcbiAgICB9IGVsc2UgaWYgKHBhcmFtcy5rZXkpIHtcbiAgICAgIGtleSA9IHBhcmFtcy5rZXk7XG4gICAgfSBlbHNlIGlmIChmbGFncy5rZXlGaWxlKSB7XG4gICAgICBrZXkgPSBhd2FpdCBmcy5yZWFkRmlsZShmbGFncy5rZXlGaWxlLCBcInV0Zi04XCIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBpbnF1aXJlci5wcm9tcHQoW3tcbiAgICAgICAgdHlwZTogXCJpbnB1dFwiLFxuICAgICAgICBuYW1lOiBcImtleVwiLFxuICAgICAgICBtZXNzYWdlOiBcIkxpY2Vuc2UgS2V5IChwYXN0ZSB0aGUgcmF3IGxpY2Vuc2UgY29udGVudHMgaGVyZSlcIixcbiAgICAgICAgdmFsaWRhdGU6ICh2KSA9PiBCb29sZWFuKHYubGVuZ3RoKVxuICAgICAgfV0pO1xuXG4gICAgICBrZXkgPSByZXN1bHQua2V5O1xuICAgIH1cblxuICAgIGlmICgha2V5KSB7XG4gICAgICBjb25zb2xlLmxvZyhhcHAuaGVscCgpKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBkYXRhID0gYXdhaXQgdmVyaWZ5SW5zdGFsbChrZXkpO1xuICAgIGNvbnNvbGUubG9nKFwiXCIpO1xuICAgIHByaW50TGljZW5zZShkYXRhKTtcbiAgICBjb25zb2xlLmxvZyhsb2cuY29sb3IuZ3JlZW4oYFRoYW5rIHlvdSBmb3IgcmVnaXN0ZXJpbmchIFlvdSBjYW4gbm93IGRvd25sb2FkIGFuZCB1c2UgUGFnZWRpcCBwYWNrYWdlcy4g8J+OiVxcbmApKTtcbiAgfVxufSk7XG5cbmNsaS5jb21tYW5kKHtcbiAgY29tbWFuZDogXCJ1bnJlZ2lzdGVyXCIsXG4gIGRlc2NyaWJlOiBcIlJlbW92ZXMgdGhlIFBhZ2VkaXAgbGljZW5zZSBrZXkgZnJvbSB0aGlzIG1hY2hpbmUuXCIsXG4gIGFzeW5jIGhhbmRsZXIoKSB7XG4gICAgYXdhaXQgdW5pbnN0YWxsKCk7XG4gICAgY29uc29sZS5sb2coXCJTdWNjZXNzZnVsbHkgdW5yZWdpc3RlcmVkIHRoaXMgbWFjaGluZS5cIik7XG4gIH1cbn0pO1xuIl19 |
\ | No newline at end of file |