aws-delivlib 14.1.91 → 14.1.92

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.
@@ -29,6 +29,7 @@ export declare class BuildSpec {
29
29
  private renderArtifacts;
30
30
  }
31
31
  export interface SimpleBuildSpecProps {
32
+ install?: string[];
32
33
  preBuild?: string[];
33
34
  build?: string[];
34
35
  reports?: {
package/lib/build-spec.js CHANGED
@@ -42,6 +42,7 @@ class BuildSpec {
42
42
  return new BuildSpec({
43
43
  version: '0.2',
44
44
  phases: (0, util_1.noUndefined)({
45
+ install: props.install !== undefined ? { commands: props.install } : undefined,
45
46
  pre_build: props.preBuild !== undefined ? { commands: props.preBuild } : undefined,
46
47
  build: props.build !== undefined ? { commands: props.build } : undefined,
47
48
  }),
@@ -166,4 +167,4 @@ function renameKey(xs, orig, rename) {
166
167
  }
167
168
  return ret;
168
169
  }
169
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQtc3BlYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImJ1aWxkLXNwZWMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsaUNBQWdEO0FBR2hELE1BQU0sbUJBQW1CLEdBQUcsU0FBUyxDQUFDO0FBRXRDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrQkc7QUFDSCxNQUFhLFNBQVM7SUFDYixNQUFNLENBQUMsT0FBTyxDQUFDLE1BQXVCO1FBQzNDLE9BQU8sSUFBSSxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVNLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBMkI7UUFDOUMsaUZBQWlGO1FBQ2pGLHlEQUF5RDtRQUN6RCxNQUFNLG1CQUFtQixHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUMxQyxLQUFLLENBQUMsNkJBQTZCLElBQUksRUFBRSxFQUN6QyxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQ2xGLENBQUM7UUFFRixJQUFJLFNBQTRDLENBQUM7UUFDakQsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLG1CQUFtQixJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDckQsU0FBUyxHQUFHO2dCQUNWLHFCQUFxQixFQUFFLElBQUEsZ0JBQVMsRUFBQyxtQkFBb0IsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7b0JBQzNELGdCQUFnQixFQUFFLENBQUM7b0JBQ25CLE9BQU8sRUFBRSxDQUFDLE1BQU0sQ0FBQztpQkFDbEIsQ0FBQyxDQUFDO2FBQ0osQ0FBQztTQUNIO1FBRUQsT0FBTyxJQUFJLFNBQVMsQ0FBQztZQUNuQixPQUFPLEVBQUUsS0FBSztZQUNkLE1BQU0sRUFBRSxJQUFBLGtCQUFXLEVBQUM7Z0JBQ2xCLFNBQVMsRUFB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T0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUM3QixDQUFDO0NBQ0Y7QUF6SUQsOEJBeUlDO0FBdUVEOztHQUVHO0FBQ0gsU0FBUyxrQkFBa0IsQ0FBSSxFQUFzQjtJQUNuRCxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzdCLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7UUFDckIsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDcEI7SUFDRCxPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDO0FBRUQsU0FBUyxTQUFTLENBQUksRUFBc0IsRUFBRSxJQUFZLEVBQUUsTUFBYztJQUN4RSxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNsQyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUU7UUFDZixHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hCLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ2xCO0lBQ0QsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbWFwVmFsdWVzLCBub1VuZGVmaW5lZCB9IGZyb20gJy4vdXRpbCc7XG5cblxuY29uc3QgTUFHSUNfQVJUSUZBQ1RfTkFNRSA9ICdQUklNQVJZJztcblxuLyoqXG4gKiBDbGFzcyB0byBtb2RlbCBhIGJ1aWxkc3BlYyB2ZXJzaW9uIDAuMlxuICpcbiAqIEFydGlmYWN0IGhhbmRsaW5nIGlzIGEgbGl0dGxlIHNwZWNpYWw6IENvZGVCdWlsZCB3aWxsIGludGVycHJldCB0aGVcbiAqICdhcnRpZmFjdHMnIHNlY3Rpb24gZGlmZmVyZW50bHkgZGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhlcmUgYXJlIHNlY29uZGFyeVxuICogYXJ0aWZhY3RzIG9yIG5vdC5cbiAqXG4gKiBJZiB0aGVyZSBpcyBvbmx5IG9uZSBhcnRpZmFjdCwgdGhlIHNpbmdsZSBhcnRpZmFjdCBtdXN0IGdvIGludG8gdGhlIHRvcC1sZXZlbFxuICogJ2FydGlmYWN0cycgc2VjdGlvbi4gSWYgdGhlcmUgYXJlIG11bHRpcGxlIGFydGlmYWN0cywgYWxsIG9mIHRoZW0gbXVzdCBnb1xuICogaW50byB0aGUgJ3NlY29uZGFyeS1hcnRpZmFjdHMnIHNlY3Rpb24uIFVwb24gcmVuZGVyaW5nIHRvIEpTT04sIHRoZSBjYWxsZXJcbiAqIG11c3Qgc3VwcGx5IHRoZSBuYW1lIG9mIHRoZSBwcmltYXJ5IGFydGlmYWN0IChpdCdzIGRldGVybWluZWQgYnlcbiAqIHRoZSBDb2RlUGlwZWxpbmUgQWN0aW9uIHRoYXQgaW52b2tlcyB0aGUgQ29kZUJ1aWxkIFByb2plY3QgdGhhdCB1c2VzIHRoaXNcbiAqIGJ1aWxkc3BlYykuXG4gKlxuICogSU5WQVJJQU5UOiBpbi1tZW1vcnksIHRoZSBCdWlsZFNwZWMgd2lsbCB0cmVhdCBhbGwgYXJ0aWZhY3RzIHRoZSBzYW1lIChhc1xuICogYSBiYWcgb2Ygc2Vjb25kYXJ5IGFydGlmYWN0cykuIEF0IHRoZSBlZGdlcyAoY29uc3RydWN0aW9uIG9yIHJlbmRlcmluZyksXG4gKiBpZiB0aGVyZSdzIG9ubHkgYSBzaW5nbGUgYXJ0aWZhY3QgaXQgd2lsbCBiZSByZW5kZXJlZCB0byB0aGUgcHJpbWFyeVxuICogYXJ0aWZhY3QuXG4gKi9cbmV4cG9ydCBjbGFzcyBCdWlsZFNwZWMge1xuICBwdWJsaWMgc3RhdGljIGxpdGVyYWwoc3RydWN0OiBCdWlsZFNwZWNTdHJ1Y3QpIHtcbiAgICByZXR1cm4gbmV3IEJ1aWxkU3BlYyhzdHJ1Y3QpO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBzaW1wbGUocHJvcHM6IFNpbXBsZUJ1aWxkU3BlY1Byb3BzKSB7XG4gICAgLy8gV2UgbWVyZ2UgdGhlIHByaW1hcnkgYXJ0aWZhY3QgaW50byB0aGUgc2Vjb25kYXJ5IGFydGlmYWN0cyB1bmRlciBhIHNwZWNpYWwga2V5XG4gICAgLy8gVGhleSB3aWxsIGJlIGNvbXBhY3RlZCBiYWNrIHRvZ2V0aGVyIGR1cmluZyByZW5kZXJpbmcuXG4gICAgY29uc3QgYXJ0aWZhY3REaXJlY3RvcmllcyA9IE9iamVjdC5hc3NpZ24oe30sXG4gICAgICBwcm9wcy5hZGRpdGlvbmFsQXJ0aWZhY3REaXJlY3RvcmllcyB8fCB7fSxcbiAgICAgIHByb3BzLmFydGlmYWN0RGlyZWN0b3J5ID8geyBbTUFHSUNfQVJUSUZBQ1RfTkFNRV06IHByb3BzLmFydGlmYWN0RGlyZWN0b3J5IH0gOiB7fSxcbiAgICApO1xuXG4gICAgbGV0IGFydGlmYWN0czogUHJpbWFyeUFydGlmYWN0U3RydWN0IHwgdW5kZWZpbmVkO1xuICAgIGlmIChPYmplY3Qua2V5cyhhcnRpZmFjdERpcmVjdG9yaWVzIHx8IHt9KS5sZW5ndGggPiAwKSB7XG4gICAgICBhcnRpZmFjdHMgPSB7XG4gICAgICAgICdzZWNvbmRhcnktYXJ0aWZhY3RzJzogbWFwVmFsdWVzKGFydGlmYWN0RGlyZWN0b3JpZXMhLCBkID0+ICh7XG4gICAgICAgICAgJ2Jhc2UtZGlyZWN0b3J5JzogZCxcbiAgICAgICAgICAnZmlsZXMnOiBbJyoqLyonXSxcbiAgICAgICAgfSkpLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IEJ1aWxkU3BlYyh7XG4gICAgICB2ZXJzaW9uOiAnMC4yJyxcbiAgICAgIHBoYXNlczogbm9VbmRlZmluZWQoe1xuICAgICAgICBwcmVfYnVpbGQ6IHByb3BzLnByZUJ1aWxkICE9PSB1bmRlZmluZWQgPyB7IGNvbW1hbmRzOiBwcm9wcy5wcmVCdWlsZCB9IDogdW5kZWZpbmVkLFxuICAgICAgICBidWlsZDogcHJvcHMuYnVpbGQgIT09IHVuZGVmaW5lZCA/IHsgY29tbWFuZHM6IHByb3BzLmJ1aWxkIH0gOiB1bmRlZmluZWQsXG4gICAgICB9KSxcbiAgICAgIGFydGlmYWN0cyxcbiAgICAgIHJlcG9ydHM6IHByb3BzLnJlcG9ydHMsXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGVtcHR5KCkge1xuICAgIHJldHVybiBuZXcgQnVpbGRTcGVjKHsgdmVyc2lvbjogJzAuMicgfSk7XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgc3BlYzogQnVpbGRTcGVjU3RydWN0KSB7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGFkZGl0aW9uYWxBcnRpZmFjdE5hbWVzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXModGhpcy5zcGVjLmFydGlmYWN0cyAmJiB0aGlzLnNwZWMuYXJ0aWZhY3RzWydzZWNvbmRhcnktYXJ0aWZhY3RzJ10gfHwge30pLmZpbHRlcihuID0+IG4gIT09IE1BR0lDX0FSVElGQUNUX05BTUUpO1xuICB9XG5cbiAgcHVibGljIG1lcmdlKG90aGVyOiBCdWlsZFNwZWMpOiBCdWlsZFNwZWMge1xuICAgIHJldHVybiBuZXcgQnVpbGRTcGVjKHtcbiAgICAgICd2ZXJzaW9uJzogJzAuMicsXG4gICAgICAncnVuLWFzJzogbWVyZ2VPYmoodGhpcy5zcGVjWydydW4tYXMnXSwgb3RoZXIuc3BlY1sncnVuLWFzJ10sIGVxdWFsT2JqZWN0cyksXG4gICAgICAnZW52JzogbWVyZ2VPYmoodGhpcy5zcGVjLmVudiwgb3RoZXIuc3BlYy5lbnYsIChhLCBiKSA9PiAoe1xuICAgICAgICAncGFyYW1ldGVyLXN0b3JlJzogbWVyZ2VEaWN0KGFbJ3BhcmFtZXRlci1zdG9yZSddLCBiWydwYXJhbWV0ZXItc3RvcmUnXSwgZXF1YWxPYmplY3RzKSxcbiAgICAgICAgJ3ZhcmlhYmxlcyc6IG1lcmdlRGljdChhLnZhcmlhYmxlcywgYi52YXJpYWJsZXMsIGVxdWFsT2JqZWN0cyksXG4gICAgICB9KSksXG4gICAgICAncGhhc2VzJzogbWVyZ2VEaWN0KHRoaXMuc3BlYy5waGFzZXMsIG90aGVyLnNwZWMucGhhc2VzLCAoYSwgYikgPT4gKHtcbiAgICAgICAgJ3J1bi1hcyc6IG1lcmdlT2JqKHRoaXMuc3BlY1sncnVuLWFzJ10sIG90aGVyLnNwZWNbJ3J1bi1hcyddLCBlcXVhbE9iamVjdHMpLFxuICAgICAgICAnY29tbWFuZHMnOiBtZXJnZUxpc3QoYS5jb21tYW5kcywgYi5jb21tYW5kcykhLFxuICAgICAgICAnZmluYWxseSc6IG1lcmdlTGlzdChhLmZpbmFsbHksIGIuZmluYWxseSksXG4gICAgICB9KSksXG4gICAgICAnYXJ0aWZhY3RzJzogbWVyZ2VPYmoodGhpcy5zcGVjLmFydGlmYWN0cywgb3RoZXIuc3BlYy5hcnRpZmFjdHMsIG1lcmdlQXJ0aWZhY3RzKSxcbiAgICAgICdjYWNoZSc6IG1lcmdlT2JqKHRoaXMuc3BlYy5jYWNoZSwgb3RoZXIuc3BlYy5jYWNoZSwgKGEsIGIpID0+ICh7XG4gICAgICAgIHBhdGhzOiBtZXJnZUxpc3QoYS5wYXRocywgYi5wYXRocykhLFxuICAgICAgfSkpLFxuICAgICAgJ3JlcG9ydHMnOiBtZXJnZURpY3QodGhpcy5zcGVjLnJlcG9ydHMsIG90aGVyLnNwZWMucmVwb3J0cywgKGEsIGIpID0+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBSZXBvcnRzIG11c3QgaGF2ZSB1bmlxdWUgbmFtZXMsIGdvdCAke2F9IGFuZCAke2J9YCk7XG4gICAgICB9KSxcbiAgICB9KTtcblxuICAgIGZ1bmN0aW9uIG1lcmdlQXJ0aWZhY3RzKGE6IFByaW1hcnlBcnRpZmFjdFN0cnVjdCwgYjogUHJpbWFyeUFydGlmYWN0U3RydWN0KTogUHJpbWFyeUFydGlmYWN0U3RydWN0IHtcbiAgICAgIGlmIChhLmZpbGVzIHx8IGIuZmlsZXMpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdOb25lIG9mIHRoZSBCdWlsZFNwZWNzIG1heSBoYXZlIGEgcHJpbWFyeSBhcnRpZmFjdC4nKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgYXJ0aWZhY3RzID0gT2JqZWN0LmFzc2lnbih7fSwgYVsnc2Vjb25kYXJ5LWFydGlmYWN0cyddIHx8IHt9KTtcbiAgICAgIGZvciAoY29uc3QgW2ssIHZdIG9mIE9iamVjdC5lbnRyaWVzKGJbJ3NlY29uZGFyeS1hcnRpZmFjdHMnXSB8fCB7fSkpIHtcbiAgICAgICAgaWYgKGsgaW4gYXJ0aWZhY3RzKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGVyZSBpcyBhbHJlYWR5IGFuIGFydGlmYWN0IHdpdGggbmFtZSAke2t9YCk7XG4gICAgICAgIH1cbiAgICAgICAgYXJ0aWZhY3RzW2tdID0gdjtcbiAgICAgIH1cbiAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCBhLCB7ICdzZWNvbmRhcnktYXJ0aWZhY3RzJzogYXJ0aWZhY3RzIH0pO1xuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gZXF1YWxPYmplY3RzKGE6IHN0cmluZywgYjogc3RyaW5nKSB7XG4gICAgICBpZiAoYSAhPT0gYikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbid0IG1lcmdlIHR3byBkaWZmZXJlbnQgdmFsdWVzIGZvciB0aGUgc2FtZSBrZXk6ICR7SlNPTi5zdHJpbmdpZnkoYSl9LCAke0pTT04uc3RyaW5naWZ5KGIpfWApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGI7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbWVyZ2VPYmo8VD4oYTogVCB8IHVuZGVmaW5lZCwgYjogVCB8IHVuZGVmaW5lZCwgZm46IChhOiBULCBiOiBUKSA9PiBUKTogVCB8IHVuZGVmaW5lZCB7XG4gICAgICBpZiAoYSA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiBiOyB9XG4gICAgICBpZiAoYiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiBhOyB9XG4gICAgICByZXR1cm4gZm4oYSwgYik7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbWVyZ2VEaWN0PFQ+KGFzOiB7W2s6IHN0cmluZ106IFR9IHwgdW5kZWZpbmVkLCBiczoge1trOiBzdHJpbmddOiBUfSB8IHVuZGVmaW5lZCwgZm46IChhOiBULCBiOiBUKSA9PiBUKSB7XG4gICAgICByZXR1cm4gbWVyZ2VPYmooYXMsIGJzLCAoYSwgYikgPT4ge1xuICAgICAgICBjb25zdCByZXQgPSBPYmplY3QuYXNzaWduKHt9LCBhKTtcbiAgICAgICAgZm9yIChjb25zdCBbaywgdl0gb2YgT2JqZWN0LmVudHJpZXMoYikpIHtcbiAgICAgICAgICBpZiAocmV0W2tdKSB7XG4gICAgICAgICAgICByZXRba10gPSBmbihyZXRba10sIHYpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXRba10gPSB2O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmV0O1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbWVyZ2VMaXN0PFQ+KGFzOiBUW10gfCB1bmRlZmluZWQsIGJzOiBUW10gfCB1bmRlZmluZWQpOiBUW10gfCB1bmRlZmluZWQge1xuICAgICAgcmV0dXJuIG1lcmdlT2JqKGFzLCBicywgKGEsIGIpID0+IGEuY29uY2F0KGIpKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcmVuZGVyKG9wdGlvbnM6IEJ1aWxkU3BlY1JlbmRlck9wdGlvbnMgPSB7fSk6IEJ1aWxkU3BlY1N0cnVjdCB7XG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIHRoaXMuc3BlYywgeyBhcnRpZmFjdHM6IHRoaXMucmVuZGVyQXJ0aWZhY3RzKG9wdGlvbnMpIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSByZW5kZXJBcnRpZmFjdHMob3B0aW9uczogQnVpbGRTcGVjUmVuZGVyT3B0aW9ucyk6IFByaW1hcnlBcnRpZmFjdFN0cnVjdCB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKCF0aGlzLnNwZWMuYXJ0aWZhY3RzIHx8ICF0aGlzLnNwZWMuYXJ0aWZhY3RzWydzZWNvbmRhcnktYXJ0aWZhY3RzJ10pIHsgcmV0dXJuIHRoaXMuc3BlYy5hcnRpZmFjdHM7IH1cblxuICAgIC8vIFNpbXBsaWZ5IGEgc2luZ2xlIFwic2Vjb25kYXJ5LWFydGlmYWN0c1wiIHRvIGEgc2luZ2xlIHByaW1hcnkgYXJ0aWZhY3QgKHJlZ2FyZGxlc3Mgb2YgdGhlIG5hbWUpXG4gICAgY29uc3Qgc2luZ2xlQXJ0ID0gZGljdFNpbmdsZXRvblZhbHVlKHRoaXMuc3BlYy5hcnRpZmFjdHNbJ3NlY29uZGFyeS1hcnRpZmFjdHMnXSk7XG4gICAgaWYgKHNpbmdsZUFydCkgeyByZXR1cm4gc2luZ2xlQXJ0OyB9XG5cbiAgICAvLyBPdGhlcndpc2UgcmVuYW1lIGEgJ1BSSU1BUlknIGtleSBpZiBpdCBleGlzdHNcbiAgICBpZiAoTUFHSUNfQVJUSUZBQ1RfTkFNRSBpbiB0aGlzLnNwZWMuYXJ0aWZhY3RzWydzZWNvbmRhcnktYXJ0aWZhY3RzJ10pIHtcbiAgICAgIGlmICghb3B0aW9ucy5wcmltYXJ5QXJ0aWZhY3ROYW1lKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgUmVwbGFjZW1lbnQgbmFtZSBmb3IgJHtNQUdJQ19BUlRJRkFDVF9OQU1FfSBhcnRpZmFjdCBub3Qgc3VwcGxpZWRgKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHsgJ3NlY29uZGFyeS1hcnRpZmFjdHMnOiByZW5hbWVLZXkodGhpcy5zcGVjLmFydGlmYWN0c1snc2Vjb25kYXJ5LWFydGlmYWN0cyddLCBNQUdJQ19BUlRJRkFDVF9OQU1FLCBvcHRpb25zLnByaW1hcnlBcnRpZmFjdE5hbWUpIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3BlYy5hcnRpZmFjdHM7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBTaW1wbGVCdWlsZFNwZWNQcm9wcyB7XG4gIHByZUJ1aWxkPzogc3RyaW5nW107XG4gIGJ1aWxkPzogc3RyaW5nW107XG4gIHJlcG9ydHM/OiB7W2tleTogc3RyaW5nXTogUmVwb3J0U3RydWN0fTtcbiAgYXJ0aWZhY3REaXJlY3Rvcnk/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZXJlIHRoZSBkaXJlY3RvcmllcyBmb3IgZWFjaCBhcnRpZmFjdCBhcmVcbiAgICpcbiAgICogVXNlIHNwZWNpYWwgbmFtZSBQUklNQVJZIHRvIHJlZmVyIHRvIHRoZSBwcmltYXJ5IGFydGlmYWN0LiBXaWxsIGJlXG4gICAqIHJlcGxhY2VkIHdpdGggdGhlIGFjdHVhbCBhcnRpZmFjdCBuYW1lIHdoZW4gdGhlIGJ1aWxkIHNwZWMgaXMgc3ludGhlc2l6ZWQuXG4gICAqL1xuICBhZGRpdGlvbmFsQXJ0aWZhY3REaXJlY3Rvcmllcz86IHtbaWQ6IHN0cmluZ106IHN0cmluZ307XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQnVpbGRTcGVjU3RydWN0IHtcbiAgdmVyc2lvbjogJzAuMic7XG4gICdydW4tYXMnPzogc3RyaW5nO1xuICBlbnY/OiBFbnZTdHJ1Y3Q7XG4gIHBoYXNlcz86IHtba2V5OiBzdHJpbmddOiBQaGFzZVN0cnVjdH07XG4gIGFydGlmYWN0cz86IFByaW1hcnlBcnRpZmFjdFN0cnVjdDtcbiAgY2FjaGU/OiBDYWNoZVN0cnVjdDtcbiAgcmVwb3J0cz86IHtba2V5OiBzdHJpbmddOiBSZXBvcnRTdHJ1Y3R9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEVudlN0cnVjdCB7XG4gIHZhcmlhYmxlcz86IHtba2V5OiBzdHJpbmddOiBzdHJpbmd9O1xuICAncGFyYW1ldGVyLXN0b3JlJz86IHtba2V5OiBzdHJpbmddOiBzdHJpbmd9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBoYXNlU3RydWN0IHtcbiAgJ3J1bi1hcyc/OiBzdHJpbmc7XG4gIGNvbW1hbmRzOiBzdHJpbmdbXTtcbiAgZmluYWxseT86IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydFN0cnVjdCB7XG4gIGZpbGVzPzogc3RyaW5nW107XG4gICdiYXNlLWRpcmVjdG9yeSc/OiBzdHJpbmc7XG4gICdkaXNjYXJkLXBhdGhzJz86ICd5ZXMnIHwgJ25vJztcbiAgJ2ZpbGUtZm9ybWF0Jz86ICdDdWN1bWJlckpzb24nIHwgJ0p1bml0WG1sJyB8ICdOdW5pdFhtbCcgfCAnVGVzdE5HWG1sJyB8ICdWaXN1YWxTdHVkaW9UcngnO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFydGlmYWN0U3RydWN0IHtcbiAgZmlsZXM/OiBzdHJpbmdbXTtcbiAgbmFtZT86IHN0cmluZztcbiAgJ2Jhc2UtZGlyZWN0b3J5Jz86IHN0cmluZztcbiAgJ2Rpc2NhcmQtcGF0aHMnPzogJ3llcycgfCAnbm8nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFByaW1hcnlBcnRpZmFjdFN0cnVjdCBleHRlbmRzIEFydGlmYWN0U3RydWN0IHtcbiAgJ3NlY29uZGFyeS1hcnRpZmFjdHMnPzoge1trZXk6IHN0cmluZ106IEFydGlmYWN0U3RydWN0fTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDYWNoZVN0cnVjdCB7XG4gIHBhdGhzOiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCdWlsZFNwZWNSZW5kZXJPcHRpb25zIHtcbiAgLyoqXG4gICAqIFJlcGxhY2UgUFJJTUFSWSBhcnRpZmFjdCBuYW1lIHdpdGggdGhpc1xuICAgKlxuICAgKiBDYW5ub3QgdXNlIHRoZSBzcGVjaWFsIHRlcm0gUFJJTUFSWSBpZiB0aGlzIGlzIG5vdCBzdXBwbGllZC5cbiAgICpcbiAgICogQGRlZmF1bHQgIENhbm5vdCB1c2UgUFJJTUFSWVxuICAgKi9cbiAgcHJpbWFyeUFydGlmYWN0TmFtZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBJZiB0aGUgZGljdCBpcyBhIHNpbmdsZXRvbiBkaWN0LCByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSBmaXJzdCBrZXksIG90aGVyd2lzZSByZXR1cm4gdW5kZWZpbmVkXG4gKi9cbmZ1bmN0aW9uIGRpY3RTaW5nbGV0b25WYWx1ZTxUPih4czoge1trZXk6IHN0cmluZ106IFR9KTogVCB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyh4cyk7XG4gIGlmIChrZXlzLmxlbmd0aCA9PT0gMSkge1xuICAgIHJldHVybiB4c1trZXlzWzBdXTtcbiAgfVxuICByZXR1cm4gdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiByZW5hbWVLZXk8VD4oeHM6IHtba2V5OiBzdHJpbmddOiBUfSwgb3JpZzogc3RyaW5nLCByZW5hbWU6IHN0cmluZyk6IHtba2V5OiBzdHJpbmddOiBUfSB7XG4gIGNvbnN0IHJldCA9IE9iamVjdC5hc3NpZ24oe30sIHhzKTtcbiAgaWYgKG9yaWcgaW4gcmV0KSB7XG4gICAgcmV0W3JlbmFtZV0gPSByZXRbb3JpZ107XG4gICAgZGVsZXRlIHJldFtvcmlnXTtcbiAgfVxuICByZXR1cm4gcmV0O1xufVxuIl19
170
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQtc3BlYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImJ1aWxkLXNwZWMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsaUNBQWdEO0FBR2hELE1BQU0sbUJBQW1CLEdBQUcsU0FBUyxDQUFDO0FBRXRDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrQkc7QUFDSCxNQUFhLFNBQVM7SUFDYixNQUFNLENBQUMsT0FBTyxDQUFDLE1BQXVCO1FBQzNDLE9BQU8sSUFBSSxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVNLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBMkI7UUFDOUMsaUZBQWlGO1FBQ2pGLHlEQUF5RDtRQUN6RCxNQUFNLG1CQUFtQixHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUMxQyxLQUFLLENBQUMsNkJBQTZCLElBQUksRUFBRSxFQUN6QyxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQ2xGLENBQUM7UUFFRixJQUFJLFNBQTRDLENBQUM7UUFDakQsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLG1CQUFtQixJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDckQsU0FBUyxHQUFHO2dCQUNWLHFCQUFxQixFQUFFLElBQUEsZ0JBQVMsRUFBQyxtQkFBb0IsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7b0JBQzNELGdCQUFnQixFQUFFLENBQUM7b0JBQ25CLE9BQU8sRUFBRSxDQUFDLE1BQU0sQ0FBQztpQkFDbEIsQ0FBQyxDQUFDO2FBQ0osQ0FBQztTQUNIO1FBRUQsT0FBTyxJQUFJLFNBQVMsQ0FBQztZQUNuQixPQUFPLEVBQUUsS0FBSztZQUNkLE1BQU0sRUFBRSxJQUFBLGtCQUFXLEVBQUM7Z0JBQ2xCLE9BQU8sRUFB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U0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLHFCQUFxQixDQUFDLEVBQUUsbUJBQW1CLEVBQUUsT0FBTyxDQUFDLG1CQUFtQixDQUFDLEVBQUUsQ0FBQztTQUMzSTtRQUVELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDN0IsQ0FBQztDQUNGO0FBMUlELDhCQTBJQztBQXdFRDs7R0FFRztBQUNILFNBQVMsa0JBQWtCLENBQUksRUFBc0I7SUFDbkQsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM3QixJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1FBQ3JCLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQ3BCO0lBQ0QsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQztBQUVELFNBQVMsU0FBUyxDQUFJLEVBQXNCLEVBQUUsSUFBWSxFQUFFLE1BQWM7SUFDeEUsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDbEMsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFO1FBQ2YsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN4QixPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUNsQjtJQUNELE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IG1hcFZhbHVlcywgbm9VbmRlZmluZWQgfSBmcm9tICcuL3V0aWwnO1xuXG5cbmNvbnN0IE1BR0lDX0FSVElGQUNUX05BTUUgPSAnUFJJTUFSWSc7XG5cbi8qKlxuICogQ2xhc3MgdG8gbW9kZWwgYSBidWlsZHNwZWMgdmVyc2lvbiAwLjJcbiAqXG4gKiBBcnRpZmFjdCBoYW5kbGluZyBpcyBhIGxpdHRsZSBzcGVjaWFsOiBDb2RlQnVpbGQgd2lsbCBpbnRlcnByZXQgdGhlXG4gKiAnYXJ0aWZhY3RzJyBzZWN0aW9uIGRpZmZlcmVudGx5IGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoZXJlIGFyZSBzZWNvbmRhcnlcbiAqIGFydGlmYWN0cyBvciBub3QuXG4gKlxuICogSWYgdGhlcmUgaXMgb25seSBvbmUgYXJ0aWZhY3QsIHRoZSBzaW5nbGUgYXJ0aWZhY3QgbXVzdCBnbyBpbnRvIHRoZSB0b3AtbGV2ZWxcbiAqICdhcnRpZmFjdHMnIHNlY3Rpb24uIElmIHRoZXJlIGFyZSBtdWx0aXBsZSBhcnRpZmFjdHMsIGFsbCBvZiB0aGVtIG11c3QgZ29cbiAqIGludG8gdGhlICdzZWNvbmRhcnktYXJ0aWZhY3RzJyBzZWN0aW9uLiBVcG9uIHJlbmRlcmluZyB0byBKU09OLCB0aGUgY2FsbGVyXG4gKiBtdXN0IHN1cHBseSB0aGUgbmFtZSBvZiB0aGUgcHJpbWFyeSBhcnRpZmFjdCAoaXQncyBkZXRlcm1pbmVkIGJ5XG4gKiB0aGUgQ29kZVBpcGVsaW5lIEFjdGlvbiB0aGF0IGludm9rZXMgdGhlIENvZGVCdWlsZCBQcm9qZWN0IHRoYXQgdXNlcyB0aGlzXG4gKiBidWlsZHNwZWMpLlxuICpcbiAqIElOVkFSSUFOVDogaW4tbWVtb3J5LCB0aGUgQnVpbGRTcGVjIHdpbGwgdHJlYXQgYWxsIGFydGlmYWN0cyB0aGUgc2FtZSAoYXNcbiAqIGEgYmFnIG9mIHNlY29uZGFyeSBhcnRpZmFjdHMpLiBBdCB0aGUgZWRnZXMgKGNvbnN0cnVjdGlvbiBvciByZW5kZXJpbmcpLFxuICogaWYgdGhlcmUncyBvbmx5IGEgc2luZ2xlIGFydGlmYWN0IGl0IHdpbGwgYmUgcmVuZGVyZWQgdG8gdGhlIHByaW1hcnlcbiAqIGFydGlmYWN0LlxuICovXG5leHBvcnQgY2xhc3MgQnVpbGRTcGVjIHtcbiAgcHVibGljIHN0YXRpYyBsaXRlcmFsKHN0cnVjdDogQnVpbGRTcGVjU3RydWN0KSB7XG4gICAgcmV0dXJuIG5ldyBCdWlsZFNwZWMoc3RydWN0KTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgc2ltcGxlKHByb3BzOiBTaW1wbGVCdWlsZFNwZWNQcm9wcykge1xuICAgIC8vIFdlIG1lcmdlIHRoZSBwcmltYXJ5IGFydGlmYWN0IGludG8gdGhlIHNlY29uZGFyeSBhcnRpZmFjdHMgdW5kZXIgYSBzcGVjaWFsIGtleVxuICAgIC8vIFRoZXkgd2lsbCBiZSBjb21wYWN0ZWQgYmFjayB0b2dldGhlciBkdXJpbmcgcmVuZGVyaW5nLlxuICAgIGNvbnN0IGFydGlmYWN0RGlyZWN0b3JpZXMgPSBPYmplY3QuYXNzaWduKHt9LFxuICAgICAgcHJvcHMuYWRkaXRpb25hbEFydGlmYWN0RGlyZWN0b3JpZXMgfHwge30sXG4gICAgICBwcm9wcy5hcnRpZmFjdERpcmVjdG9yeSA/IHsgW01BR0lDX0FSVElGQUNUX05BTUVdOiBwcm9wcy5hcnRpZmFjdERpcmVjdG9yeSB9IDoge30sXG4gICAgKTtcblxuICAgIGxldCBhcnRpZmFjdHM6IFByaW1hcnlBcnRpZmFjdFN0cnVjdCB8IHVuZGVmaW5lZDtcbiAgICBpZiAoT2JqZWN0LmtleXMoYXJ0aWZhY3REaXJlY3RvcmllcyB8fCB7fSkubGVuZ3RoID4gMCkge1xuICAgICAgYXJ0aWZhY3RzID0ge1xuICAgICAgICAnc2Vjb25kYXJ5LWFydGlmYWN0cyc6IG1hcFZhbHVlcyhhcnRpZmFjdERpcmVjdG9yaWVzISwgZCA9PiAoe1xuICAgICAgICAgICdiYXNlLWRpcmVjdG9yeSc6IGQsXG4gICAgICAgICAgJ2ZpbGVzJzogWycqKi8qJ10sXG4gICAgICAgIH0pKSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBCdWlsZFNwZWMoe1xuICAgICAgdmVyc2lvbjogJzAuMicsXG4gICAgICBwaGFzZXM6IG5vVW5kZWZpbmVkKHtcbiAgICAgICAgaW5zdGFsbDogcHJvcHMuaW5zdGFsbCAhPT0gdW5kZWZpbmVkID8geyBjb21tYW5kczogcHJvcHMuaW5zdGFsbCB9IDogdW5kZWZpbmVkLFxuICAgICAgICBwcmVfYnVpbGQ6IHByb3BzLnByZUJ1aWxkICE9PSB1bmRlZmluZWQgPyB7IGNvbW1hbmRzOiBwcm9wcy5wcmVCdWlsZCB9IDogdW5kZWZpbmVkLFxuICAgICAgICBidWlsZDogcHJvcHMuYnVpbGQgIT09IHVuZGVmaW5lZCA/IHsgY29tbWFuZHM6IHByb3BzLmJ1aWxkIH0gOiB1bmRlZmluZWQsXG4gICAgICB9KSxcbiAgICAgIGFydGlmYWN0cyxcbiAgICAgIHJlcG9ydHM6IHByb3BzLnJlcG9ydHMsXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGVtcHR5KCkge1xuICAgIHJldHVybiBuZXcgQnVpbGRTcGVjKHsgdmVyc2lvbjogJzAuMicgfSk7XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgc3BlYzogQnVpbGRTcGVjU3RydWN0KSB7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGFkZGl0aW9uYWxBcnRpZmFjdE5hbWVzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXModGhpcy5zcGVjLmFydGlmYWN0cyAmJiB0aGlzLnNwZWMuYXJ0aWZhY3RzWydzZWNvbmRhcnktYXJ0aWZhY3RzJ10gfHwge30pLmZpbHRlcihuID0+IG4gIT09IE1BR0lDX0FSVElGQUNUX05BTUUpO1xuICB9XG5cbiAgcHVibGljIG1lcmdlKG90aGVyOiBCdWlsZFNwZWMpOiBCdWlsZFNwZWMge1xuICAgIHJldHVybiBuZXcgQnVpbGRTcGVjKHtcbiAgICAgICd2ZXJzaW9uJzogJzAuMicsXG4gICAgICAncnVuLWFzJzogbWVyZ2VPYmoodGhpcy5zcGVjWydydW4tYXMnXSwgb3RoZXIuc3BlY1sncnVuLWFzJ10sIGVxdWFsT2JqZWN0cyksXG4gICAgICAnZW52JzogbWVyZ2VPYmoodGhpcy5zcGVjLmVudiwgb3RoZXIuc3BlYy5lbnYsIChhLCBiKSA9PiAoe1xuICAgICAgICAncGFyYW1ldGVyLXN0b3JlJzogbWVyZ2VEaWN0KGFbJ3BhcmFtZXRlci1zdG9yZSddLCBiWydwYXJhbWV0ZXItc3RvcmUnXSwgZXF1YWxPYmplY3RzKSxcbiAgICAgICAgJ3ZhcmlhYmxlcyc6IG1lcmdlRGljdChhLnZhcmlhYmxlcywgYi52YXJpYWJsZXMsIGVxdWFsT2JqZWN0cyksXG4gICAgICB9KSksXG4gICAgICAncGhhc2VzJzogbWVyZ2VEaWN0KHRoaXMuc3BlYy5waGFzZXMsIG90aGVyLnNwZWMucGhhc2VzLCAoYSwgYikgPT4gKHtcbiAgICAgICAgJ3J1bi1hcyc6IG1lcmdlT2JqKHRoaXMuc3BlY1sncnVuLWFzJ10sIG90aGVyLnNwZWNbJ3J1bi1hcyddLCBlcXVhbE9iamVjdHMpLFxuICAgICAgICAnY29tbWFuZHMnOiBtZXJnZUxpc3QoYS5jb21tYW5kcywgYi5jb21tYW5kcykhLFxuICAgICAgICAnZmluYWxseSc6IG1lcmdlTGlzdChhLmZpbmFsbHksIGIuZmluYWxseSksXG4gICAgICB9KSksXG4gICAgICAnYXJ0aWZhY3RzJzogbWVyZ2VPYmoodGhpcy5zcGVjLmFydGlmYWN0cywgb3RoZXIuc3BlYy5hcnRpZmFjdHMsIG1lcmdlQXJ0aWZhY3RzKSxcbiAgICAgICdjYWNoZSc6IG1lcmdlT2JqKHRoaXMuc3BlYy5jYWNoZSwgb3RoZXIuc3BlYy5jYWNoZSwgKGEsIGIpID0+ICh7XG4gICAgICAgIHBhdGhzOiBtZXJnZUxpc3QoYS5wYXRocywgYi5wYXRocykhLFxuICAgICAgfSkpLFxuICAgICAgJ3JlcG9ydHMnOiBtZXJnZURpY3QodGhpcy5zcGVjLnJlcG9ydHMsIG90aGVyLnNwZWMucmVwb3J0cywgKGEsIGIpID0+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBSZXBvcnRzIG11c3QgaGF2ZSB1bmlxdWUgbmFtZXMsIGdvdCAke2F9IGFuZCAke2J9YCk7XG4gICAgICB9KSxcbiAgICB9KTtcblxuICAgIGZ1bmN0aW9uIG1lcmdlQXJ0aWZhY3RzKGE6IFByaW1hcnlBcnRpZmFjdFN0cnVjdCwgYjogUHJpbWFyeUFydGlmYWN0U3RydWN0KTogUHJpbWFyeUFydGlmYWN0U3RydWN0IHtcbiAgICAgIGlmIChhLmZpbGVzIHx8IGIuZmlsZXMpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdOb25lIG9mIHRoZSBCdWlsZFNwZWNzIG1heSBoYXZlIGEgcHJpbWFyeSBhcnRpZmFjdC4nKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgYXJ0aWZhY3RzID0gT2JqZWN0LmFzc2lnbih7fSwgYVsnc2Vjb25kYXJ5LWFydGlmYWN0cyddIHx8IHt9KTtcbiAgICAgIGZvciAoY29uc3QgW2ssIHZdIG9mIE9iamVjdC5lbnRyaWVzKGJbJ3NlY29uZGFyeS1hcnRpZmFjdHMnXSB8fCB7fSkpIHtcbiAgICAgICAgaWYgKGsgaW4gYXJ0aWZhY3RzKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGVyZSBpcyBhbHJlYWR5IGFuIGFydGlmYWN0IHdpdGggbmFtZSAke2t9YCk7XG4gICAgICAgIH1cbiAgICAgICAgYXJ0aWZhY3RzW2tdID0gdjtcbiAgICAgIH1cbiAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCBhLCB7ICdzZWNvbmRhcnktYXJ0aWZhY3RzJzogYXJ0aWZhY3RzIH0pO1xuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gZXF1YWxPYmplY3RzKGE6IHN0cmluZywgYjogc3RyaW5nKSB7XG4gICAgICBpZiAoYSAhPT0gYikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbid0IG1lcmdlIHR3byBkaWZmZXJlbnQgdmFsdWVzIGZvciB0aGUgc2FtZSBrZXk6ICR7SlNPTi5zdHJpbmdpZnkoYSl9LCAke0pTT04uc3RyaW5naWZ5KGIpfWApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGI7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbWVyZ2VPYmo8VD4oYTogVCB8IHVuZGVmaW5lZCwgYjogVCB8IHVuZGVmaW5lZCwgZm46IChhOiBULCBiOiBUKSA9PiBUKTogVCB8IHVuZGVmaW5lZCB7XG4gICAgICBpZiAoYSA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiBiOyB9XG4gICAgICBpZiAoYiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiBhOyB9XG4gICAgICByZXR1cm4gZm4oYSwgYik7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbWVyZ2VEaWN0PFQ+KGFzOiB7W2s6IHN0cmluZ106IFR9IHwgdW5kZWZpbmVkLCBiczoge1trOiBzdHJpbmddOiBUfSB8IHVuZGVmaW5lZCwgZm46IChhOiBULCBiOiBUKSA9PiBUKSB7XG4gICAgICByZXR1cm4gbWVyZ2VPYmooYXMsIGJzLCAoYSwgYikgPT4ge1xuICAgICAgICBjb25zdCByZXQgPSBPYmplY3QuYXNzaWduKHt9LCBhKTtcbiAgICAgICAgZm9yIChjb25zdCBbaywgdl0gb2YgT2JqZWN0LmVudHJpZXMoYikpIHtcbiAgICAgICAgICBpZiAocmV0W2tdKSB7XG4gICAgICAgICAgICByZXRba10gPSBmbihyZXRba10sIHYpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXRba10gPSB2O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmV0O1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbWVyZ2VMaXN0PFQ+KGFzOiBUW10gfCB1bmRlZmluZWQsIGJzOiBUW10gfCB1bmRlZmluZWQpOiBUW10gfCB1bmRlZmluZWQge1xuICAgICAgcmV0dXJuIG1lcmdlT2JqKGFzLCBicywgKGEsIGIpID0+IGEuY29uY2F0KGIpKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcmVuZGVyKG9wdGlvbnM6IEJ1aWxkU3BlY1JlbmRlck9wdGlvbnMgPSB7fSk6IEJ1aWxkU3BlY1N0cnVjdCB7XG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIHRoaXMuc3BlYywgeyBhcnRpZmFjdHM6IHRoaXMucmVuZGVyQXJ0aWZhY3RzKG9wdGlvbnMpIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSByZW5kZXJBcnRpZmFjdHMob3B0aW9uczogQnVpbGRTcGVjUmVuZGVyT3B0aW9ucyk6IFByaW1hcnlBcnRpZmFjdFN0cnVjdCB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKCF0aGlzLnNwZWMuYXJ0aWZhY3RzIHx8ICF0aGlzLnNwZWMuYXJ0aWZhY3RzWydzZWNvbmRhcnktYXJ0aWZhY3RzJ10pIHsgcmV0dXJuIHRoaXMuc3BlYy5hcnRpZmFjdHM7IH1cblxuICAgIC8vIFNpbXBsaWZ5IGEgc2luZ2xlIFwic2Vjb25kYXJ5LWFydGlmYWN0c1wiIHRvIGEgc2luZ2xlIHByaW1hcnkgYXJ0aWZhY3QgKHJlZ2FyZGxlc3Mgb2YgdGhlIG5hbWUpXG4gICAgY29uc3Qgc2luZ2xlQXJ0ID0gZGljdFNpbmdsZXRvblZhbHVlKHRoaXMuc3BlYy5hcnRpZmFjdHNbJ3NlY29uZGFyeS1hcnRpZmFjdHMnXSk7XG4gICAgaWYgKHNpbmdsZUFydCkgeyByZXR1cm4gc2luZ2xlQXJ0OyB9XG5cbiAgICAvLyBPdGhlcndpc2UgcmVuYW1lIGEgJ1BSSU1BUlknIGtleSBpZiBpdCBleGlzdHNcbiAgICBpZiAoTUFHSUNfQVJUSUZBQ1RfTkFNRSBpbiB0aGlzLnNwZWMuYXJ0aWZhY3RzWydzZWNvbmRhcnktYXJ0aWZhY3RzJ10pIHtcbiAgICAgIGlmICghb3B0aW9ucy5wcmltYXJ5QXJ0aWZhY3ROYW1lKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgUmVwbGFjZW1lbnQgbmFtZSBmb3IgJHtNQUdJQ19BUlRJRkFDVF9OQU1FfSBhcnRpZmFjdCBub3Qgc3VwcGxpZWRgKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHsgJ3NlY29uZGFyeS1hcnRpZmFjdHMnOiByZW5hbWVLZXkodGhpcy5zcGVjLmFydGlmYWN0c1snc2Vjb25kYXJ5LWFydGlmYWN0cyddLCBNQUdJQ19BUlRJRkFDVF9OQU1FLCBvcHRpb25zLnByaW1hcnlBcnRpZmFjdE5hbWUpIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3BlYy5hcnRpZmFjdHM7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBTaW1wbGVCdWlsZFNwZWNQcm9wcyB7XG4gIGluc3RhbGw/OiBzdHJpbmdbXTtcbiAgcHJlQnVpbGQ/OiBzdHJpbmdbXTtcbiAgYnVpbGQ/OiBzdHJpbmdbXTtcbiAgcmVwb3J0cz86IHtba2V5OiBzdHJpbmddOiBSZXBvcnRTdHJ1Y3R9O1xuICBhcnRpZmFjdERpcmVjdG9yeT86IHN0cmluZztcblxuICAvKipcbiAgICogV2hlcmUgdGhlIGRpcmVjdG9yaWVzIGZvciBlYWNoIGFydGlmYWN0IGFyZVxuICAgKlxuICAgKiBVc2Ugc3BlY2lhbCBuYW1lIFBSSU1BUlkgdG8gcmVmZXIgdG8gdGhlIHByaW1hcnkgYXJ0aWZhY3QuIFdpbGwgYmVcbiAgICogcmVwbGFjZWQgd2l0aCB0aGUgYWN0dWFsIGFydGlmYWN0IG5hbWUgd2hlbiB0aGUgYnVpbGQgc3BlYyBpcyBzeW50aGVzaXplZC5cbiAgICovXG4gIGFkZGl0aW9uYWxBcnRpZmFjdERpcmVjdG9yaWVzPzoge1tpZDogc3RyaW5nXTogc3RyaW5nfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCdWlsZFNwZWNTdHJ1Y3Qge1xuICB2ZXJzaW9uOiAnMC4yJztcbiAgJ3J1bi1hcyc/OiBzdHJpbmc7XG4gIGVudj86IEVudlN0cnVjdDtcbiAgcGhhc2VzPzoge1trZXk6IHN0cmluZ106IFBoYXNlU3RydWN0fTtcbiAgYXJ0aWZhY3RzPzogUHJpbWFyeUFydGlmYWN0U3RydWN0O1xuICBjYWNoZT86IENhY2hlU3RydWN0O1xuICByZXBvcnRzPzoge1trZXk6IHN0cmluZ106IFJlcG9ydFN0cnVjdH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRW52U3RydWN0IHtcbiAgdmFyaWFibGVzPzoge1trZXk6IHN0cmluZ106IHN0cmluZ307XG4gICdwYXJhbWV0ZXItc3RvcmUnPzoge1trZXk6IHN0cmluZ106IHN0cmluZ307XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGhhc2VTdHJ1Y3Qge1xuICAncnVuLWFzJz86IHN0cmluZztcbiAgY29tbWFuZHM6IHN0cmluZ1tdO1xuICBmaW5hbGx5Pzogc3RyaW5nW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0U3RydWN0IHtcbiAgZmlsZXM/OiBzdHJpbmdbXTtcbiAgJ2Jhc2UtZGlyZWN0b3J5Jz86IHN0cmluZztcbiAgJ2Rpc2NhcmQtcGF0aHMnPzogJ3llcycgfCAnbm8nO1xuICAnZmlsZS1mb3JtYXQnPzogJ0N1Y3VtYmVySnNvbicgfCAnSnVuaXRYbWwnIHwgJ051bml0WG1sJyB8ICdUZXN0TkdYbWwnIHwgJ1Zpc3VhbFN0dWRpb1RyeCc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXJ0aWZhY3RTdHJ1Y3Qge1xuICBmaWxlcz86IHN0cmluZ1tdO1xuICBuYW1lPzogc3RyaW5nO1xuICAnYmFzZS1kaXJlY3RvcnknPzogc3RyaW5nO1xuICAnZGlzY2FyZC1wYXRocyc/OiAneWVzJyB8ICdubyc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJpbWFyeUFydGlmYWN0U3RydWN0IGV4dGVuZHMgQXJ0aWZhY3RTdHJ1Y3Qge1xuICAnc2Vjb25kYXJ5LWFydGlmYWN0cyc/OiB7W2tleTogc3RyaW5nXTogQXJ0aWZhY3RTdHJ1Y3R9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENhY2hlU3RydWN0IHtcbiAgcGF0aHM6IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJ1aWxkU3BlY1JlbmRlck9wdGlvbnMge1xuICAvKipcbiAgICogUmVwbGFjZSBQUklNQVJZIGFydGlmYWN0IG5hbWUgd2l0aCB0aGlzXG4gICAqXG4gICAqIENhbm5vdCB1c2UgdGhlIHNwZWNpYWwgdGVybSBQUklNQVJZIGlmIHRoaXMgaXMgbm90IHN1cHBsaWVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCAgQ2Fubm90IHVzZSBQUklNQVJZXG4gICAqL1xuICBwcmltYXJ5QXJ0aWZhY3ROYW1lPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIElmIHRoZSBkaWN0IGlzIGEgc2luZ2xldG9uIGRpY3QsIHJldHVybiB0aGUgdmFsdWUgb2YgdGhlIGZpcnN0IGtleSwgb3RoZXJ3aXNlIHJldHVybiB1bmRlZmluZWRcbiAqL1xuZnVuY3Rpb24gZGljdFNpbmdsZXRvblZhbHVlPFQ+KHhzOiB7W2tleTogc3RyaW5nXTogVH0pOiBUIHwgdW5kZWZpbmVkIHtcbiAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKHhzKTtcbiAgaWYgKGtleXMubGVuZ3RoID09PSAxKSB7XG4gICAgcmV0dXJuIHhzW2tleXNbMF1dO1xuICB9XG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIHJlbmFtZUtleTxUPih4czoge1trZXk6IHN0cmluZ106IFR9LCBvcmlnOiBzdHJpbmcsIHJlbmFtZTogc3RyaW5nKToge1trZXk6IHN0cmluZ106IFR9IHtcbiAgY29uc3QgcmV0ID0gT2JqZWN0LmFzc2lnbih7fSwgeHMpO1xuICBpZiAob3JpZyBpbiByZXQpIHtcbiAgICByZXRbcmVuYW1lXSA9IHJldFtvcmlnXTtcbiAgICBkZWxldGUgcmV0W29yaWddO1xuICB9XG4gIHJldHVybiByZXQ7XG59XG4iXX0=
@@ -240,6 +240,10 @@ export declare abstract class ShellPlatform {
240
240
  */
241
241
  static get Windows(): ShellPlatform;
242
242
  constructor(buildImage: cbuild.IBuildImage);
243
+ /**
244
+ * Retrn commands to prepare the host for the shellable.
245
+ */
246
+ abstract installCommands(): string[] | undefined;
243
247
  /**
244
248
  * Return commands to download the script bundle
245
249
  */
@@ -258,6 +262,7 @@ export declare abstract class ShellPlatform {
258
262
  */
259
263
  export declare class LinuxPlatform extends ShellPlatform {
260
264
  readonly platformType = PlatformType.Linux;
265
+ installCommands(): string[] | undefined;
261
266
  prebuildCommands(assumeRole?: AssumeRole, useRegionalStsEndpoints?: boolean): string[];
262
267
  buildCommands(entrypoint: string): string[];
263
268
  }
@@ -266,6 +271,7 @@ export declare class LinuxPlatform extends ShellPlatform {
266
271
  */
267
272
  export declare class WindowsPlatform extends ShellPlatform {
268
273
  readonly platformType = PlatformType.Windows;
274
+ installCommands(): string[] | undefined;
269
275
  prebuildCommands(assumeRole?: AssumeRole, _useRegionalStsEndpoints?: boolean): string[];
270
276
  buildCommands(entrypoint: string): string[];
271
277
  }
package/lib/shellable.js CHANGED
@@ -62,6 +62,7 @@ class Shellable extends constructs_1.Construct {
62
62
  throw new Error(`Whoops, too long: ${this.outputArtifactName}`);
63
63
  }
64
64
  this.buildSpec = build_spec_1.BuildSpec.simple({
65
+ install: this.platform.installCommands(),
65
66
  preBuild: this.platform.prebuildCommands(props.assumeRole, props.useRegionalStsEndpoints),
66
67
  build: this.platform.buildCommands(props.entrypoint),
67
68
  }).merge(props.buildSpec || build_spec_1.BuildSpec.empty());
@@ -179,6 +180,9 @@ class LinuxPlatform extends ShellPlatform {
179
180
  super(...arguments);
180
181
  this.platformType = PlatformType.Linux;
181
182
  }
183
+ installCommands() {
184
+ return undefined;
185
+ }
182
186
  prebuildCommands(assumeRole, useRegionalStsEndpoints) {
183
187
  var _a;
184
188
  const lines = new Array();
@@ -238,6 +242,13 @@ class WindowsPlatform extends ShellPlatform {
238
242
  super(...arguments);
239
243
  this.platformType = PlatformType.Windows;
240
244
  }
245
+ installCommands() {
246
+ return [
247
+ // Update the image's nodejs to the latest LTS release.
248
+ 'Import-Module "C:\\ProgramData\\chocolatey\\helpers\\chocolateyProfile.psm1"',
249
+ 'C:\\ProgramData\\chocolatey\\bin\\choco.exe upgrade nodejs-lts -y',
250
+ ];
251
+ }
241
252
  prebuildCommands(assumeRole, _useRegionalStsEndpoints) {
242
253
  if (assumeRole) {
243
254
  throw new Error('assumeRole is not supported on Windows: https://github.com/cdklabs/aws-delivlib/issues/57');
@@ -261,4 +272,4 @@ class WindowsPlatform extends ShellPlatform {
261
272
  }
262
273
  }
263
274
  exports.WindowsPlatform = WindowsPlatform;
264
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hlbGxhYmxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic2hlbGxhYmxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsdUNBQXlCO0FBQ3pCLDJDQUE2QjtBQUM3Qiw2Q0FLcUI7QUFDckIsMkNBQXVDO0FBQ3ZDLDZDQUF5QztBQUN6QyxpQ0FBb0Q7QUFFcEQsTUFBTSxhQUFhLEdBQUcsa0JBQWtCLENBQUM7QUFDekMsTUFBTSxVQUFVLEdBQUcsZUFBZSxDQUFDO0FBK01uQzs7Ozs7Ozs7Ozs7O0dBWUc7QUFDSCxNQUFhLFNBQVUsU0FBUSxzQkFBUztJQWN0QyxZQUFZLE1BQWlCLEVBQUUsRUFBVSxFQUFFLEtBQXFCOztRQUM5RCxLQUFLLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWxCLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDLFFBQVEsSUFBSSxhQUFhLENBQUMsV0FBVyxDQUFDO1FBRTVELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWUsRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDdEUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDOUIsTUFBTSxJQUFJLEtBQUssQ0FBQyxnQ0FBZ0MsVUFBVSxFQUFFLENBQUMsQ0FBQztTQUMvRDtRQUVELE1BQU0sS0FBSyxHQUFHLElBQUksMkJBQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLGlCQUFpQixFQUFFO1lBQ3RELElBQUksRUFBRSxLQUFLLENBQUMsZUFBZTtTQUM1QixDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsWUFBWSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3ZELElBQUksSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sR0FBRyxHQUFHLEVBQUU7WUFDeEMs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InNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQge1xuICBEdXJhdGlvbixcbiAgYXdzX2Nsb3Vkd2F0Y2ggYXMgY2xvdWR3YXRjaCwgYXdzX2NvZGVidWlsZCBhcyBjYnVpbGQsXG4gIGF3c19jb2RlcGlwZWxpbmUgYXMgY3BpcGVsaW5lLCBhd3NfY29kZXBpcGVsaW5lX2FjdGlvbnMgYXMgY3BpcGVsaW5lX2FjdGlvbnMsXG4gIGF3c19pYW0gYXMgaWFtLCBhd3NfczNfYXNzZXRzIGFzIGFzc2V0cywgYXdzX3NlY3JldHNtYW5hZ2VyLCBhd3Nfc3NtLFxufSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IEJ1aWxkU3BlYyB9IGZyb20gJy4vYnVpbGQtc3BlYyc7XG5pbXBvcnQgeyByZW5kZXJFbnZpcm9ubWVudFZhcmlhYmxlcyB9IGZyb20gJy4vdXRpbCc7XG5cbmNvbnN0IFMzX0JVQ0tFVF9FTlYgPSAnU0NSSVBUX1MzX0JVQ0tFVCc7XG5jb25zdCBTM19LRVlfRU5WID0gJ1NDUklQVF9TM19LRVknO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNoZWxsYWJsZU9wdGlvbnMge1xuXG4gIC8qKlxuICAgKiBTb3VyY2UgZm9yIHRoZSBDb2RlQnVpbGQgcHJvamVjdFxuICAgKlxuICAgKiBAZGVmYXVsdCBubyBzb3VyY2VcbiAgICovXG4gIHNvdXJjZT86IGNidWlsZC5JU291cmNlO1xuXG4gIC8qKlxuICAgKiBXaGF0IHBsYXRmb3JtIHRvIHVzIHRvIHJ1biB0aGUgc2NyaXB0cyBvblxuICAgKlxuICAgKiBAZGVmYXVsdCBTaGVsbFBsYXRmb3JtLkxpbnV4VWJ1bnR1XG4gICAqL1xuICBwbGF0Zm9ybT86IFNoZWxsUGxhdGZvcm07XG5cbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgZW52aXJvbm1lbnQgdmFyaWFibGVzIHRvIHNldC5cbiAgICpcbiAgICogQGRlZmF1bHQgTm8gYWRkaXRpb25hbCBlbnZpcm9ubWVudCB2YXJpYWJsZXNcbiAgICovXG4gIGVudmlyb25tZW50PzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfCB1bmRlZmluZWQgfTtcblxuICAvKipcbiAgICogRW52aXJvbm1lbnQgdmFyaWFibGVzIHdpdGggc2VjcmV0cyBtYW5hZ2VyIHZhbHVlcy4gVGhlIHZhbHVlcyBtdXN0IGJlIGNvbXBsZXRlIFNlY3JldCBNYW5hZ2VyIEFSTnMuXG4gICAqXG4gICAqIEBkZWZhdWx0IG5vIGFkZGl0aW9uYWwgZW52aXJvbm1lbnQgdmFyaWFibGVzXG4gICAqL1xuICBlbnZpcm9ubWVudFNlY3JldHM/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuXG4gIC8qKlxuICAgKiBFbnZpcm9ubWVudCB2YXJpYWJsZXMgd2l0aCBTU00gcGFyYW1ldGVyIHZhbHVlcy5cbiAgICpcbiAgICogQGRlZmF1bHQgbm8gYWRkaXRpb25hbCBlbnZpcm9ubWVudCB2YXJpYWJsZXNcbiAgICovXG4gIGVudmlyb25tZW50UGFyYW1ldGVycz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgLyoqXG4gICAqIFRoZSBjb21wdXRlIHR5cGUgdG8gdXNlIGZvciB0aGUgYnVpbGQgY29udGFpbmVyLlxuICAgKlxuICAgKiBOb3RlIHRoYXQgbm90IGFsbCBjb21iaW5hdGlvbnMgYXJlIGF2YWlsYWJsZS4gRm9yIGV4YW1wbGUsXG4gICAqIFdpbmRvd3MgaW1hZ2VzIGNhbm5vdCBiZSBydW4gb24gQ29tcHV0ZVR5cGUuU21hbGwuXG4gICAqXG4gICAqIEBkZWZhdWx0IENvbXB1dGVUeXBlLk1lZGl1bVxuICAgKi9cbiAgY29tcHV0ZVR5cGU/OiBjYnVpbGQuQ29tcHV0ZVR5cGU7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyBob3cgdGhlIHByb2plY3QgYnVpbGRzIERvY2tlciBpbWFnZXMuIFNwZWNpZnkgdHJ1ZSB0byBlbmFibGVcbiAgICogcnVubmluZyB0aGUgRG9ja2VyIGRhZW1vbiBpbnNpZGUgYSBEb2NrZXIgY29udGFpbmVyLiBUaGlzIHZhbHVlIG11c3QgYmVcbiAgICogc2V0IHRvIHRydWUgb25seSBpZiB0aGlzIGJ1aWxkIHByb2plY3Qgd2lsbCBiZSB1c2VkIHRvIGJ1aWxkIERvY2tlclxuICAgKiBpbWFnZXMsIGFuZCB0aGUgc3BlY2lmaWVkIGJ1aWxkIGVudmlyb25tZW50IGltYWdlIGlzIG5vdCBvbmUgcHJvdmlkZWQgYnlcbiAgICogQVdTIENvZGVCdWlsZCB3aXRoIERvY2tlciBzdXBwb3J0LiBPdGhlcndpc2UsIGFsbCBhc3NvY2lhdGVkIGJ1aWxkcyB0aGF0XG4gICAqIGF0dGVtcHQgdG8gaW50ZXJhY3Qgd2l0aCB0aGUgRG9ja2VyIGRhZW1vbiB3aWxsIGZhaWwuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBwcml2aWxlZ2VkPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIG5hbWUgZm9yIHRoZSBidWlsZCBwcm9qZWN0LlxuICAgKlxuICAgKiBAZGVmYXVsdCBhIG5hbWUgaXMgZ2VuZXJhdGVkIGJ5IENsb3VkRm9ybWF0aW9uLlxuICAgKi9cbiAgYnVpbGRQcm9qZWN0TmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogSW5kaWNhdGVzIGlmIFJlZ2lvbmFsIEFXUyBTVFMgZW5kcG9pbnRzIHNob3VsZCBiZSB1c2VkIGluc3RlYWRcbiAgICogb2YgdGhlIGdsb2JhbCBlbmRwb2ludC4gU3BlY2lmeSB0cnVlIHRvIHVzZSBSZWdpb25hbCBBV1MgU1RTIGVuZHBvaW50cy5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHVzZVJlZ2lvbmFsU3RzRW5kcG9pbnRzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQ2FuIGJlIHVzZWQgdG8gcnVuIHRoaXMgYnVpbGQgdXNpbmcgYSBzcGVjaWZpYyBJQU0gcm9sZS4gVGhpcyBjYW4gYmUgdXNlZCxcbiAgICogZm9yIGV4YW1wbGUsIHRvIGV4ZWN1dGUgaW4gdGhlIGNvbnRleHQgb2YgYW5vdGhlciBhY2NvdW50IChlLmcuIHRvIHJ1blxuICAgKiB0ZXN0cyBpbiBpc29sYXRpb24pLlxuICAgKi9cbiAgYXNzdW1lUm9sZT86IEFzc3VtZVJvbGU7XG5cbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgYnVpbGRzcGVjIChmb3IgYXJ0aWZhY3RzIGV0Yy4pXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vIGFkZGl0aW9uYWwgYnVpbGRzcGVjXG4gICAqL1xuICBidWlsZFNwZWM/OiBCdWlsZFNwZWM7XG5cbiAgLyoqXG4gICAqIFRoZSB0aW1lb3V0IG9mIHRoZSBidWlsZC5cbiAgICpcbiAgICogQGRlZmF1bHQgdGhlIENvZGVCdWlsZCBkZWZhdWx0ICgxIGhvdXIpXG4gICAqL1xuICB0aW1lb3V0PzogRHVyYXRpb247XG5cbiAgLyoqXG4gICAqIEFsYXJtIHBlcmlvZC5cbiAgICpcbiAgICogQGRlZmF1bHQgMzAwIHNlY29uZHMgKDUgbWludXRlcylcbiAgICovXG4gIGFsYXJtUGVyaW9kPzogRHVyYXRpb247XG5cbiAgLyoqXG4gICAqIEFsYXJtIHRocmVzaG9sZC5cbiAgICogQGRlZmF1bHQgMVxuICAgKi9cbiAgYWxhcm1UaHJlc2hvbGQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEFsYXJtIGV2YWx1YXRpb24gcGVyaW9kcy5cbiAgICogQGRlZmF1bHQgMVxuICAgKi9cbiAgYWxhcm1FdmFsdWF0aW9uUGVyaW9kcz86IG51bWJlcjtcblxuICBzZWNvbmRhcnlBcnRpZmFjdE5hbWVzPzogc3RyaW5nW107XG59XG5cbi8qKlxuICogUHJvcGVydGllcyB1c2VkIHRvIGNyZWF0ZSBhIFNoZWxsYWJsZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNoZWxsYWJsZVByb3BzIGV4dGVuZHMgU2hlbGxhYmxlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBEaXJlY3Rvcnkgd2l0aCB0aGUgc2NyaXB0cy5cbiAgICpcbiAgICogVGhlIHdob2xlIGRpcmVjdG9yeSB3aWxsIGJlIHVwbG9hZGVkLlxuICAgKi9cbiAgc2NyaXB0RGlyZWN0b3J5OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEZpbGVuYW1lIG9mIHRoZSBpbml0aWFsIHNjcmlwdCB0byBzdGFydCwgcmVsYXRpdmUgdG8gc2NyaXB0RGlyZWN0b3J5LlxuICAgKi9cbiAgZW50cnlwb2ludDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFzc3VtZVJvbGUge1xuICAvKipcbiAgICogVGhlIEFtYXpvbiBSZXNvdXJjZSBOYW1lIChBUk4pIG9mIHRoZSByb2xlIHRvIGFzc3VtZS5cbiAgICovXG4gIHJvbGVBcm46IHN0cmluZztcblxuICAvKipcbiAgICogQW4gaWRlbnRpZmllciBmb3IgdGhlIGFzc3VtZWQgcm9sZSBzZXNzaW9uLlxuICAgKlxuICAgKiBVc2UgIHRoZSAgcm9sZSAgc2Vzc2lvbiBuYW1lIHRvIHVuaXF1ZWx5IGlkZW50aWZ5IGEgc2Vzc2lvbiB3aGVuIHRoZSBzYW1lXG4gICAqIHJvbGUgaXMgYXNzdW1lZCBieSBkaWZmZXJlbnQgcHJpbmNpcGFscyBvciBmb3IgZGlmZmVyZW50IHJlYXNvbnMuIEluXG4gICAqIGNyb3NzLWFjY291bnQgc2NlbmFyaW9zLCB0aGUgcm9sZSBzZXNzaW9uIG5hbWUgaXMgdmlzaWJsZSB0bywgYW5kIGNhbiBiZVxuICAgKiBsb2dnZWQgYnkgdGhlIGFjY291bnQgdGhhdCBvd25zIHRoZSByb2xlLiAgVGhlIHJvbGUgc2Vzc2lvbiBuYW1lIGlzIGFsc29cbiAgICogdXNlZCBpbiB0aGUgQVJOIG9mIHRoZSBhc3N1bWVkIHJvbGUgcHJpbmNpcGFsLiBUaGlzIG1lYW5zIHRoYXQgc3Vic2VxdWVudFxuICAgKiBjcm9zcy1hY2NvdW50IEFQSSByZXF1ZXN0cyB1c2luZyB0aGUgdGVtLSBwb3Jhcnkgc2VjdXJpdHkgY3JlZGVudGlhbHMgd2lsbFxuICAgKiBleHBvc2UgdGhlIHJvbGUgc2Vzc2lvbiBuYW1lIHRvIHRoZSBleHRlcm5hbCBhY2NvdW50IGluIHRoZWlyIENsb3VkVHJhaWxcbiAgICogbG9ncy5cbiAgICpcbiAgICogVGhlIHJlZ2V4IHVzZWQgdG8gdmFsaWRhdGUgdGhpcyBwYXJhbWV0ZXIgaXMgYSBzdHJpbmcgb2YgY2hhcmFjdGVyc1xuICAgKiBjb25zaXN0aW5nICBvZiB1cHBlci0gYW5kIGxvd2VyLWNhc2UgYWxwaGFudW1lcmljIGNoYXJhY3RlcnMgd2l0aCBub1xuICAgKiBzcGFjZXMuIFlvdSBjYW4gYWxzbyBpbmNsdWRlIHVuZGVyc2NvcmVzIG9yIGFueSBvZiB0aGUgZm9sbG93aW5nXG4gICAqIGNoYXJhY3RlcnM6ID0sLkAtXG4gICAqL1xuICBzZXNzaW9uTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBICB1bmlxdWUgIGlkZW50aWZpZXIgIHRoYXQgIGlzICB1c2VkIGJ5IHRoaXJkIHBhcnRpZXMgd2hlbiBhc3N1bWluZyByb2xlc1xuICAgKiBpbiB0aGVpciBjdXN0b21lcnMnIGFjY291bnRzLiBGb3IgZWFjaCAgcm9sZSAgdGhhdCAgdGhlICB0aGlyZCBwYXJ0eSBjYW5cbiAgICogYXNzdW1lLCB0aGV5IHNob3VsZCBpbnN0cnVjdCB0aGVpciBjdXN0b21lcnMgdG8gZW5zdXJlIHRoZSByb2xlJ3MgdHJ1c3RcbiAgICogcG9saWN5IGNoZWNrcyBmb3IgdGhlIGV4dGVybmFsIElEIHRoYXQgdGhlIHRoaXJkICBwYXJ0eSBnZW5lcmF0ZWQuICBFYWNoXG4gICAqIHRpbWUgdGhlIHRoaXJkIHBhcnR5IGFzc3VtZXMgdGhlIHJvbGUsIHRoZXkgc2hvdWxkIHBhc3MgdGhlIGN1c3RvbWVyJ3NcbiAgICogZXh0ZXJuYWwgSUQuIFRoZSBleHRlcm5hbCBJRCBpcyB1c2VmdWwgaW4gIG9yZGVyIHRvICBoZWxwICB0aGlyZCAgcGFydGllc1xuICAgKiBiaW5kIGEgcm9sZSB0byB0aGUgY3VzdG9tZXIgd2hvIGNyZWF0ZWQgaXQuIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZVxuICAgKiBleHRlcm5hbCBJRCwgc2VlIEhvdyB0byBVc2UgYW4gRXh0ZXItIG5hbCAgSUQgIFdoZW4gR3JhbnRpbmcgQWNjZXNzIHRvIFlvdXJcbiAgICogQVdTIFJlc291cmNlcyB0byBhIFRoaXJkIFBhcnR5IGluIHRoZSBJQU0gVXNlciBHdWlkZSAuXG4gICAqXG4gICAqIFRoaXMgcGFyYW1ldGVyIG11c3QgYmUgYSBzdHJpbmcgb2YgY2hhcmFjdGVycyBjb25zaXN0aW5nICBvZiB1cHBlci0gYW5kXG4gICAqIGxvd2VyLWNhc2UgYWxwaGFudW1lcmljIGNoYXJhY3RlcnMgd2l0aCBubyBzcGFjZXMuIFlvdSBjYW4gYWxzbyBpbmNsdWRlXG4gICAqIHVuZGVyc2NvcmVzIG9yICBhbnkgIG9mICB0aGUgIGZvbGxvd2luZyBjaGFyYWN0ZXJzOiA9LC5AOi8tXG4gICAqL1xuICBleHRlcm5hbElkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGVuIGEgcHJvZmllIG5hbWUgaXMgY29uZmlndXJlZCwgYW4gYXNzdW1lZCByb2xlIGNvbmZpZ3VyYXRpb24gd2lsbCBiZSBjcmVhdGVkXG4gICAqIGluIHRoZSBzaGFyZWQgYXdzIGNvbmZpZ3VyYXRpb24gZmlsZSAofi8uYXdzL2NvbmZpZykuIFRoaXMgaXMgaW4gY29udHJhcnkgb2Ygc2ltcGx5IGludm9raW5nXG4gICAqIGFuIGBzdHMgYXNzdW1lLXJvbGVgIGNvbW1hbmQgdGhhdCBjcmVhdGVzIGEgc2Vzc2lvbiB3aXRoIGEgZml4ZWQgZXhwaXJ5IGRhdGUuXG4gICAqXG4gICAqIFVzaW5nIGEgcHJvZmlsZSB3aWxsIGRlbGVnYXRlIGNyZWRlbnRpYWwgcmVmcmVzaGluZyB0byB0aGUgU0RLL0NMSS5cbiAgICogVGhpcyBpcyBuZWVkZWQgdG8gc3VwcG9ydCBsb25nIHJ1bm5pbmcgc2Vzc2lvbnMgdGhhdCBuZWVkcyBzZXNzaW9ucyB0aGF0IGFyZSBsb25nZXIgdGhhblxuICAgKiB0aGUgc2Vzc2lvbiBkdXJhdGlvbiB0aGF0IGNhbiBiZSBjb25maWd1cmVkIHdpdGggYSBgc3RzIGFzc3VtZS1yb2xlYC5cbiAgICpcbiAgICogVGhlIGFwcGxpY2F0aW9uIGNvZGUgd2lsbCBhY2Nlc3MgdG8gdGhpcyBwcm9maWxlIGluIHRoZSBgQVdTX1BST0ZJTEVgIGVudiB2YXJpYWJsZS5cbiAgICpcbiAgICogT25seSByZWxldmFudCBpZiBgcmVmcmVzaGAgaXMgc3BlY2lmaWVkLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9jbGkvbGF0ZXN0L3VzZXJndWlkZS9jbGktY29uZmlndXJlLWZpbGVzLmh0bWxcbiAgICpcbiAgICogQGRlZmF1bHQgJ2xvbmctcnVubmluZy1wcm9maWxlJ1xuICAgKi9cbiAgcHJvZmlsZU5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFNwZWNpZnkgdGhpcyBpZiB5b3UgaGF2ZSBhIGxvbmcgcnVubmluZyBleGVjdXRpb24gdGhhdCBuZWVkcyBsb25nIHJ1bm5pbmcgc2Vzc2lvbnMuXG4gICAqIFRoaXMgd2lsbCBjcmVhdGUgYSBwcm9maWxlIGFuZCB1c2UgaXQgdG8gZGVsZWdhdGUgY3JlZGVudGlhbCByZWZyZXNoaW5nIHRvIHRoZSBTREsvQ0xJXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWZyZXNoPzogYm9vbGVhbjtcblxufVxuXG4vKipcbiAqIEEgQ29kZUJ1aWxkIHByb2plY3QgdGhhdCBydW5zIGFyYml0cmFyeSBzY3JpcHRzLlxuICpcbiAqIFRoZSBzY3JpcHRzIHRvIGJlIHJ1biBhcmUgc3BlY2lmaWVkIGJ5IHN1cHBseWluZyBhIGRpcmVjdG9yeS5cbiAqIEFsbCBmaWxlcyBpbiB0aGUgZGlyZWN0b3J5IGFyZSB1cGxvYWRlZCwgdGhlbiB0aGUgc2NyaXB0IGRlc2lnbmF0ZWRcbiAqIGFzIHRoZSBlbnRyeSBwb2ludCBpcyBzdGFydGVkLlxuICpcbiAqIFRoZSBzY3JpcHQgaXMgZXhlY3V0ZWQgaW4gdGhlIGRpcmVjdG9yeSB3aGVyZSB0aGUgYnVpbGQgcHJvamVjdCdzXG4gKiBpbnB1dCBpcyBzdG9yZWQuIFRoZSBkaXJlY3Rvcnkgd2hlcmUgdGhlIHNjcmlwdCBmaWxlcyBhcmUgc3RvcmVkXG4gKiBpcyBpbiB0aGUgJFNDUklQVF9ESVIgZW52aXJvbm1lbnQgdmFyaWFibGUuXG4gKlxuICogU3VwcG9ydHMgYm90aCBXaW5kb3dzIGFuZCBMaW51eCBjb21wdXRlcy5cbiAqL1xuZXhwb3J0IGNsYXNzIFNoZWxsYWJsZSBleHRlbmRzIENvbnN0cnVjdCB7XG4gIHB1YmxpYyByZWFkb25seSBwcm9qZWN0OiBjYnVpbGQuUHJvamVjdDtcbiAgcHVibGljIHJlYWRvbmx5IHJvbGU6IGlhbS5JUm9sZTtcblxuICAvKipcbiAgICogQ2xvdWRXYXRjaCBhbGFybSB0aGF0IHdpbGwgYmUgdHJpZ2dlcmVkIGlmIHRoaXMgYWN0aW9uIGZhaWxzLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGFsYXJtOiBjbG91ZHdhdGNoLkFsYXJtO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgcGxhdGZvcm06IFNoZWxsUGxhdGZvcm07XG4gIHByaXZhdGUgcmVhZG9ubHkgYnVpbGRTcGVjOiBCdWlsZFNwZWM7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBvdXRwdXRBcnRpZmFjdE5hbWU6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihwYXJlbnQ6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFNoZWxsYWJsZVByb3BzKSB7XG4gICAgc3VwZXIocGFyZW50LCBpZCk7XG5cbiAgICB0aGlzLnBsYXRmb3JtID0gcHJvcHMucGxhdGZvcm0gfHwgU2hlbGxQbGF0Zm9ybS5MaW51eFVidW50dTtcblxuICAgIGNvbnN0IGVudHJ5cG9pbnQgPSBwYXRoLmpvaW4ocHJvcHMuc2NyaXB0RGlyZWN0b3J5LCBwcm9wcy5lbnRyeXBvaW50KTtcbiAgICBpZiAoIWZzLmV4aXN0c1N5bmMoZW50cnlwb2ludCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IGZpbmQgdGVzdCBlbnRyeXBvaW50OiAke2VudHJ5cG9pbnR9YCk7XG4gICAgfVxuXG4gICAgY29uc3QgYXNzZXQgPSBuZXcgYXNzZXRzLkFzc2V0KHRoaXMsICdTY3JpcHREaXJlY3RvcnknLCB7XG4gICAgICBwYXRoOiBwcm9wcy5zY3JpcHREaXJlY3RvcnksXG4gICAgfSk7XG5cbiAgICB0aGlzLm91dHB1dEFydGlmYWN0TmFtZSA9IGBBcnRpZmFjdF8ke3RoaXMubm9kZS5hZGRyfWA7XG4gICAgaWYgKHRoaXMub3V0cHV0QXJ0aWZhY3ROYW1lLmxlbmd0aCA+IDEwMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBXaG9vcHMsIHRvbyBsb25nOiAke3RoaXMub3V0cHV0QXJ0aWZhY3ROYW1lfWApO1xuICAgIH1cblxuICAgIHRoaXMuYnVpbGRTcGVjID0gQnVpbGRTcGVjLnNpbXBsZSh7XG4gICAgICBwcmVCdWlsZDogdGhpcy5wbGF0Zm9ybS5wcmVidWlsZENvbW1hbmRzKHByb3BzLmFzc3VtZVJvbGUsIHByb3BzLnVzZVJlZ2lvbmFsU3RzRW5kcG9pbnRzKSxcbiAgICAgIGJ1aWxkOiB0aGlzLnBsYXRmb3JtLmJ1aWxkQ29tbWFuZHMocHJvcHMuZW50cnlwb2ludCksXG4gICAgfSkubWVyZ2UocHJvcHMuYnVpbGRTcGVjIHx8IEJ1aWxkU3BlYy5lbXB0eSgpKTtcblxuICAgIGNvbnN0IGVudmlyb25tZW50U2VjcmV0c0FzU2VjcmV0TmFtZXMgPSB0aGlzLmNvbnZlcnRFbnZpcm9ubWVudFNlY3JldEFybnNUb1NlY3JldE5hbWVzKHByb3BzLmVudmlyb25tZW50U2VjcmV0cyk7XG5cbiAgICB0aGlzLnByb2plY3QgPSBuZXcgY2J1aWxkLlByb2plY3QodGhpcywgJ1Jlc291cmNlJywge1xuICAgICAgcHJvamVjdE5hbWU6IHByb3BzLmJ1aWxkUHJvamVjdE5hbWUsXG4gICAgICBzb3VyY2U6IHByb3BzLnNvdXJjZSxcbiAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgIGJ1aWxkSW1hZ2U6IHRoaXMucGxhdGZvcm0uYnVpbGRJbWFnZSxcbiAgICAgICAgY29tcHV0ZVR5cGU6IHByb3BzLmNvbXB1dGVUeXBlIHx8IGNidWlsZC5Db21wdXRlVHlwZS5NRURJVU0sXG4gICAgICAgIHByaXZpbGVnZWQ6IHByb3BzLnByaXZpbGVnZWQsXG4gICAgICB9LFxuICAgICAgZW52aXJvbm1lbnRWYXJpYWJsZXM6IHtcbiAgICAgICAgW1MzX0JVQ0tFVF9FTlZdOiB7IHZhbHVlOiBhc3NldC5zM0J1Y2tldE5hbWUgfSxcbiAgICAgICAgW1MzX0tFWV9FTlZdOiB7IHZhbHVlOiBhc3NldC5zM09iamVjdEtleSB9LFxuICAgICAgICAuLi5yZW5kZXJFbnZpcm9ubWVudFZhcmlhYmxlcyhwcm9wcy5lbnZpcm9ubWVudCksXG4gICAgICAgIC4uLnJlbmRlckVudmlyb25tZW50VmFyaWFibGVzKGVudmlyb25tZW50U2VjcmV0c0FzU2VjcmV0TmFtZXMsIGNidWlsZC5CdWlsZEVudmlyb25tZW50VmFyaWFibGVUeXBlLlNFQ1JFVFNfTUFOQUdFUiksXG4gICAgICAgIC4uLnJlbmRlckVudmlyb25tZW50VmFyaWFibGVzKHByb3BzLmVudmlyb25tZW50UGFyYW1ldGVycywgY2J1aWxkLkJ1aWxkRW52aXJvbm1lbnRWYXJpYWJsZVR5cGUuUEFSQU1FVEVSX1NUT1JFKSxcbiAgICAgIH0sXG4gICAgICB0aW1lb3V0OiBwcm9wcy50aW1lb3V0LFxuICAgICAgYnVpbGRTcGVjOiBjYnVpbGQuQnVpbGRTcGVjLmZyb21PYmplY3QodGhpcy5idWlsZFNwZWMucmVuZGVyKHsgcHJpbWFyeUFydGlmYWN0TmFtZTogdGhpcy5vdXRwdXRBcnRpZmFjdE5hbWUgfSkpLFxuICAgICAgc3NtU2Vzc2lvblBlcm1pc3Npb25zOiB0cnVlLFxuICAgIH0pO1xuXG4gICAgdGhpcy5yb2xlID0gdGhpcy5wcm9qZWN0LnJvbGUhOyAvLyBub3QgdW5kZWZpbmVkLCBhcyBpdCdzIGEgbmV3IFByb2plY3RcbiAgICBhc3NldC5ncmFudFJlYWQodGhpcy5yb2xlKTtcblxuICAgIC8vIEdyYW50IHJlYWQgYWNjZXNzIHRvIHNlY3JldHNcbiAgICBPYmplY3QuZW50cmllcyhwcm9wcy5lbnZpcm9ubWVudFNlY3JldHMgPz8ge30pLmZvckVhY2goKFtuYW1lLCBzZWNyZXRBcm5dKSA9PiB7XG4gICAgICBjb25zdCBzZWNyZXQgPSBhd3Nfc2VjcmV0c21hbmFnZXIuU2VjcmV0LmZyb21TZWNyZXRDb21wbGV0ZUFybih0aGlzLCBgJHtuYW1lfVNlY3JldGAsIHNlY3JldEFybik7XG4gICAgICBzZWNyZXQuZ3JhbnRSZWFkKHRoaXMucm9sZSk7XG4gICAgfSk7XG5cbiAgICAvLyBHcmFudCByZWFkIGFjY2VzcyB0byBwYXJhbWV0ZXJzXG4gICAgT2JqZWN0LmVudHJpZXMocHJvcHMuZW52aXJvbm1lbnRQYXJhbWV0ZXJzID8/IHt9KS5mb3JFYWNoKChbbmFtZSwgcGFyYW1ldGVyTmFtZV0pID0+IHtcbiAgICAgIGNvbnN0IHBhcmFtZXRlciA9IGF3c19zc20uU3RyaW5nUGFyYW1ldGVyLmZyb21TdHJpbmdQYXJhbWV0ZXJOYW1lKHRoaXMsIGAke25hbWV9UGFyYW1ldGVyYCwgcGFyYW1ldGVyTmFtZSk7XG4gICAgICBwYXJhbWV0ZXIuZ3JhbnRSZWFkKHRoaXMucm9sZSk7XG4gICAgfSk7XG5cbiAgICBpZiAocHJvcHMuYXNzdW1lUm9sZSkge1xuICAgICAgdGhpcy5yb2xlLmFkZFRvUHJpbmNpcGFsUG9saWN5KG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgYWN0aW9uczogWydzdHM6QXNzdW1lUm9sZSddLFxuICAgICAgICByZXNvdXJjZXM6IFtwcm9wcy5hc3N1bWVSb2xlLnJvbGVBcm5dLFxuICAgICAgfSkpO1xuICAgIH1cblxuICAgIHRoaXMuYWxhcm0gPSBuZXcgY2xvdWR3YXRjaC5BbGFybSh0aGlzLCAnQWxhcm0nLCB7XG4gICAgICBtZXRyaWM6IHRoaXMucHJvamVjdC5tZXRyaWNGYWlsZWRCdWlsZHMoeyBwZXJpb2Q6IHByb3BzLmFsYXJtUGVyaW9kIHx8IER1cmF0aW9uLnNlY29uZHMoMzAwKSB9KSxcbiAgICAgIHRocmVzaG9sZDogcHJvcHMuYWxhcm1UaHJlc2hvbGQgfHwgMSxcbiAgICAgIGNvbXBhcmlzb25PcGVyYXRvcjogY2xvdWR3YXRjaC5Db21wYXJpc29uT3BlcmF0b3IuR1JFQVRFUl9USEFOX09SX0VRVUFMX1RPX1RIUkVTSE9MRCxcbiAgICAgIGV2YWx1YXRpb25QZXJpb2RzOiBwcm9wcy5hbGFybUV2YWx1YXRpb25QZXJpb2RzIHx8IDEsXG4gICAgICB0cmVhdE1pc3NpbmdEYXRhOiBjbG91ZHdhdGNoLlRyZWF0TWlzc2luZ0RhdGEuSUdOT1JFLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGFkZFRvUGlwZWxpbmUoc3RhZ2U6IGNwaXBlbGluZS5JU3RhZ2UsIG5hbWU6IHN0cmluZywgaW5wdXRBcnRpZmFjdDogY3BpcGVsaW5lLkFydGlmYWN0LCBydW5PcmRlcj86IG51bWJlcik6XG4gIGNwaXBlbGluZV9hY3Rpb25zLkNvZGVCdWlsZEFjdGlvbiB7XG4gICAgY29uc3QgY29kZUJ1aWxkQWN0aW9uID0gbmV3IGNwaXBlbGluZV9hY3Rpb25zLkNvZGVCdWlsZEFjdGlvbih7XG4gICAgICBhY3Rpb25OYW1lOiBuYW1lLFxuICAgICAgcHJvamVjdDogdGhpcy5wcm9qZWN0LFxuICAgICAgcnVuT3JkZXIsXG4gICAgICBpbnB1dDogaW5wdXRBcnRpZmFjdCxcbiAgICAgIG91dHB1dHM6IFtuZXcgY3BpcGVsaW5lLkFydGlmYWN0KHRoaXMub3V0cHV0QXJ0aWZhY3ROYW1lKV0uY29uY2F0KFxuICAgICAgICB0aGlzLmJ1aWxkU3BlYy5hZGRpdGlvbmFsQXJ0aWZhY3ROYW1lcy5tYXAoYXJ0aWZhY3ROYW1lID0+IG5ldyBjcGlwZWxpbmUuQXJ0aWZhY3QoYXJ0aWZhY3ROYW1lKSkpLFxuICAgIH0pO1xuICAgIHN0YWdlLmFkZEFjdGlvbihjb2RlQnVpbGRBY3Rpb24pO1xuICAgIHJldHVybiBjb2RlQnVpbGRBY3Rpb247XG4gIH1cblxuICAvKipcbiAgICogVGhlIGNvbnRyYWN0IG9mIGBlbnZpcm9ubWVudFNlY3JldHNgIGlzIHRoYXQgdGhlIHZhbHVlcyBhcmUgY29tcGxldGUgU2VjcmV0IEFSTnM7XG4gICAqIGhvd2V2ZXIsIHRoZSBDb2RlQnVpbGQgY29uc3RydWN0IGV4cGVjdHMgc2VjcmV0IG5hbWVzIGFzIHRoZSBpbnB1dHMgZm9yIGVudmlyb25tZW50IHZhcmlhYmxlcy5cbiAgICogVGhpcyBtZXRob2QgY29udmVydHMgdGhlIGVudmlyb25tZW50IHNlY3JldHMgZnJvbSBBUk5zIHRvIG5hbWVzLlxuICAgKi9cbiAgcHJpdmF0ZSBjb252ZXJ0RW52aXJvbm1lbnRTZWNyZXRBcm5zVG9TZWNyZXROYW1lcyhlbnZpcm9ubWVudFNlY3JldHM/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9KSB7XG4gICAgaWYgKCFlbnZpcm9ubWVudFNlY3JldHMpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgY29uc3Qgb3V0OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0geyB9O1xuICAgIE9iamVjdC5lbnRyaWVzKGVudmlyb25tZW50U2VjcmV0cyA/PyB7fSkuZm9yRWFjaCgoW25hbWUsIHNlY3JldEFybl0pID0+IHtcbiAgICAgIGNvbnN0IHNlY3JldCA9IGF3c19zZWNyZXRzbWFuYWdlci5TZWNyZXQuZnJvbVNlY3JldENvbXBsZXRlQXJuKHRoaXMsIGAke25hbWV9U2VjcmV0RnJvbUFybmAsIHNlY3JldEFybik7XG4gICAgICBvdXRbbmFtZV0gPSBzZWNyZXQuc2VjcmV0TmFtZTtcbiAgICB9KTtcbiAgICByZXR1cm4gb3V0O1xuICB9XG59XG5cbi8qKlxuICogUGxhdGZvcm0gYXJjaGV0eXBlXG4gKi9cbmV4cG9ydCBlbnVtIFBsYXRmb3JtVHlwZSB7XG4gIExpbnV4ID0gJ0xpbnV4JyxcbiAgV2luZG93cyA9ICdXaW5kb3dzJ1xufVxuXG4vKipcbiAqIFRoZSBwbGF0Zm9ybSB0eXBlIHRvIHJ1biB0aGUgc2NyaXB0cyBvblxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgU2hlbGxQbGF0Zm9ybSB7XG4gIC8qKlxuICAgKiBSZXR1cm4gYSBkZWZhdWx0IFVidW50dSBMaW51eCBwbGF0Zm9ybVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBnZXQgTGludXhVYnVudHUoKTogU2hlbGxQbGF0Zm9ybSB7XG4gICAgLy8gQ2Fubm90IGJlIHN0YXRpYyBtZW1iZXIgYmVjYXVzZSBvZiBpbml0aWFsaXphdGlvbiBvcmRlclxuICAgIHJldHVybiBuZXcgTGludXhQbGF0Zm9ybShjYnVpbGQuTGludXhCdWlsZEltYWdlLlNUQU5EQVJEXzRfMCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGEgZGVmYXVsdCBXaW5kb3dzIHBsYXRmb3JtXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGdldCBXaW5kb3dzKCk6IFNoZWxsUGxhdGZvcm0ge1xuICAgIC8vIENhbm5vdCBiZSBzdGF0aWMgbWVtYmVyIGJlY2F1c2Ugb2YgaW5pdGlhbGl6YXRpb24gb3JkZXJcbiAgICByZXR1cm4gbmV3IFdpbmRvd3NQbGF0Zm9ybShjYnVpbGQuV2luZG93c0J1aWxkSW1hZ2UuV0lOX1NFUlZFUl9DT1JFXzIwMTlfQkFTRSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgcmVhZG9ubHkgYnVpbGRJbWFnZTogY2J1aWxkLklCdWlsZEltYWdlKSB7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGNvbW1hbmRzIHRvIGRvd25sb2FkIHRoZSBzY3JpcHQgYnVuZGxlXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgcHJlYnVpbGRDb21tYW5kcyhhc3N1bWVSb2xlPzogQXNzdW1lUm9sZSwgdXNlUmVnaW9uYWxTdHNFbmRwb2ludHM/OiBib29sZWFuKTogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFJldHVybiBjb21tYW5kcyB0byBzdGFydCB0aGUgZW50cnlwb2ludCBzY3JpcHRcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBidWlsZENvbW1hbmRzKGVudHJ5cG9pbnQ6IHN0cmluZyk6IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBUeXBlIG9mIHBsYXRmb3JtXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgZ2V0IHBsYXRmb3JtVHlwZSgpOiBQbGF0Zm9ybVR5cGU7XG59XG5cbi8qKlxuICogQSBMaW51eCBQbGF0Zm9ybVxuICovXG5leHBvcnQgY2xhc3MgTGludXhQbGF0Zm9ybSBleHRlbmRzIFNoZWxsUGxhdGZvcm0ge1xuICBwdWJsaWMgcmVhZG9ubHkgcGxhdGZvcm1UeXBlID0gUGxhdGZvcm1UeXBlLkxpbnV4O1xuXG4gIHB1YmxpYyBwcmVidWlsZENvbW1hbmRzKGFzc3VtZVJvbGU/OiBBc3N1bWVSb2xlLCB1c2VSZWdpb25hbFN0c0VuZHBvaW50cz86IGJvb2xlYW4pOiBzdHJpbmdbXSB7XG4gICAgY29uc3QgbGluZXMgPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xuICAgIC8vIEJldHRlciBlY2hvIHRoZSBsb2NhdGlvbiBoZXJlOyBpZiB0aGlzIGZhaWxzLCB0aGUgZXJyb3IgbWVzc2FnZSBvbmx5IGNvbnRhaW5zXG4gICAgLy8gdGhlIHVuZXhwYW5kZWQgdmFyaWFibGVzIGJ5IGRlZmF1bHQuIEl0IG1pZ2h0IGZhaWwgaWYgeW91J3JlIHJ1bm5pbmcgYW4gb2xkXG4gICAgLy8gZGVmaW5pdGlvbiBvZiB0aGUgQ29kZUJ1aWxkIHByb2plY3QtLXRoZSBwZXJtaXNzaW9ucyB3aWxsIGhhdmUgYmVlbiBjaGFuZ2VkXG4gICAgLy8gdG8gb25seSBhbGxvdyBkb3dubG9hZGluZyB0aGUgdmVyeSBsYXRlc3QgdmVyc2lvbi5cbiAgICBsaW5lcy5wdXNoKGBlY2hvIFwiRG93bmxvYWRpbmcgc2NyaXB0cyBmcm9tIHMzOi8vXFwkeyR7UzNfQlVDS0VUX0VOVn19L1xcJHske1MzX0tFWV9FTlZ9fVwiYCk7XG4gICAgbGluZXMucHVzaChgYXdzIHMzIGNwIHMzOi8vXFwkeyR7UzNfQlVDS0VUX0VOVn19L1xcJHske1MzX0tFWV9FTlZ9fSAvdG1wYCk7XG4gICAgbGluZXMucHVzaCgnbWtkaXIgLXAgL3RtcC9zY3JpcHRkaXInKTtcbiAgICBsaW5lcy5wdXNoKGB1bnppcCAvdG1wLyQoYmFzZW5hbWUgXFwkJHtTM19LRVlfRU5WfSkgLWQgL3RtcC9zY3JpcHRkaXJgKTtcblxuICAgIGlmIChhc3N1bWVSb2xlKSB7XG5cbiAgICAgIGlmIChhc3N1bWVSb2xlLnJlZnJlc2gpIHtcblxuICAgICAgICBjb25zdCBhd3NIb21lID0gJ34vLmF3cyc7XG5cbiAgICAgICAgY29uc3QgcHJvZmlsZU5hbWUgPSBhc3N1bWVSb2xlLnByb2ZpbGVOYW1lID8/ICdsb25nLXJ1bm5pbmctcHJvZmlsZSc7XG5cbiAgICAgICAgbGluZXMucHVzaChgbWtkaXIgLXAgJHthd3NIb21lfWApO1xuICAgICAgICBsaW5lcy5wdXNoKGB0b3VjaCAke2F3c0hvbWV9L2NyZWRlbnRpYWxzYCk7XG4gICAgICAgIGxpbmVzLnB1c2goYGNvbmZpZz0ke2F3c0hvbWV9L2NvbmZpZ2ApO1xuICAgICAgICBsaW5lcy5wdXNoKGBlY2hvIFtwcm9maWxlICR7cHJvZmlsZU5hbWV9XT4+ICRcXHtjb25maWdcXH1gKTtcbiAgICAgICAgbGluZXMucHVzaCgnZWNobyBjcmVkZW50aWFsX3NvdXJjZSA9IEVjc0NvbnRhaW5lciA+PiAkXFx7Y29uZmlnXFx9Jyk7XG4gICAgICAgIGxpbmVzLnB1c2goYGVjaG8gcm9sZV9zZXNzaW9uX25hbWUgPSAke2Fzc3VtZVJvbGUuc2Vzc2lvbk5hbWV9ID4+ICRcXHtjb25maWdcXH1gKTtcbiAgICAgICAgbGluZXMucHVzaChgZWNobyByb2xlX2FybiA9ICR7YXNzdW1lUm9sZS5yb2xlQXJufSA+PiAkY29uZmlnYCk7XG5cbiAgICAgICAgaWYgKGFzc3VtZVJvbGUuZXh0ZXJuYWxJZCkge1xuICAgICAgICAgIGxpbmVzLnB1c2goYGVjaG8gZXh0ZXJuYWxfaWQgPSAke2Fzc3VtZVJvbGUuZXh0ZXJuYWxJZH0gPj4gJGNvbmZpZ2ApO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gbGV0IHRoZSBhcHBsaWNhdGlvbiBjb2RlIGtub3cgd2hpY2ggcm9sZSBpcyBiZWluZyB1c2VkLlxuICAgICAgICBsaW5lcy5wdXNoKGBleHBvcnQgQVdTX1BST0ZJTEU9JHtwcm9maWxlTmFtZX1gKTtcblxuICAgICAgICAvLyBmb3JjZSB0aGUgQVdTIFNESyBmb3IgSmF2YVNjcmlwdCB0byBhY3R1YWxseSBsb2FkIHRoZSBjb25maWcgZmlsZSAoZG8gYXV0b21hdGljYWxseSBzbyB1c2VycyBkb24ndCBmb3JnZXQpXG4gICAgICAgIGxpbmVzLnB1c2goJ2V4cG9ydCBBV1NfU0RLX0xPQURfQ09ORklHPTEnKTtcblxuICAgICAgfSBlbHNlIHtcblxuICAgICAgICBjb25zdCBleHRlcm5hbElkID0gYXNzdW1lUm9sZS5leHRlcm5hbElkID8gYC0tZXh0ZXJuYWwtaWQgXCIke2Fzc3VtZVJvbGUuZXh0ZXJuYWxJZH1cImAgOiAnJztcbiAgICAgICAgY29uc3QgU3RzRW5kcG9pbnRzID0gdXNlUmVnaW9uYWxTdHNFbmRwb2ludHMgPyAncmVnaW9uYWwnIDogJ2xlZ2FjeSc7XG5cbiAgICAgICAgbGluZXMucHVzaCgnY3JlZHM9JChta3RlbXAgLWQpL2NyZWRzLmpzb24nKTtcbiAgICAgICAgbGluZXMucHVzaChgQVdTX1NUU19SRUdJT05BTF9FTkRQT0lOVFM9JHtTdHNFbmRwb2ludHN9IGF3cyBzdHMgYXNzdW1lLXJvbGUgLS1yb2xlLWFybiBcIiR7YXNzdW1lUm9sZS5yb2xlQXJufVwiIC0tcm9sZS1zZXNzaW9uLW5hbWUgXCIke2Fzc3VtZVJvbGUuc2Vzc2lvbk5hbWV9XCIgJHtleHRlcm5hbElkfSA+ICRjcmVkc2ApO1xuICAgICAgICBsaW5lcy5wdXNoKCdleHBvcnQgQVdTX0FDQ0VTU19LRVlfSUQ9XCIkKGNhdCAke2NyZWRzfSB8IGdyZXAgXCJBY2Nlc3NLZXlJZFwiIHwgY3V0IC1kXFwnXCJcXCcgLWYgNClcIicpO1xuICAgICAgICBsaW5lcy5wdXNoKCdleHBvcnQgQVdTX1NFQ1JFVF9BQ0NFU1NfS0VZPVwiJChjYXQgJHtjcmVkc30gfCBncmVwIFwiU2VjcmV0QWNjZXNzS2V5XCIgfCBjdXQgLWRcXCdcIlxcJyAtZiA0KVwiJyk7XG4gICAgICAgIGxpbmVzLnB1c2goJ2V4cG9ydCBBV1NfU0VTU0lPTl9UT0tFTj1cIiQoY2F0ICR7Y3JlZHN9IHwgZ3JlcCBcIlNlc3Npb25Ub2tlblwiIHwgY3V0IC1kXFwnXCJcXCcgLWYgNClcIicpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBsaW5lcztcbiAgfVxuXG4gIHB1YmxpYyBidWlsZENvbW1hbmRzKGVudHJ5cG9pbnQ6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gW1xuICAgICAgJ2V4cG9ydCBTQ1JJUFRfRElSPS90bXAvc2NyaXB0ZGlyJyxcbiAgICAgIGBlY2hvIFwiUnVubmluZyAke2VudHJ5cG9pbnR9XCJgLFxuICAgICAgYC9iaW4vYmFzaCAvdG1wL3NjcmlwdGRpci8ke2VudHJ5cG9pbnR9YCxcbiAgICBdO1xuICB9XG59XG5cbi8qKlxuICogQSBXaW5kb3dzIFBsYXRmb3JtXG4gKi9cbmV4cG9ydCBjbGFzcyBXaW5kb3dzUGxhdGZvcm0gZXh0ZW5kcyBTaGVsbFBsYXRmb3JtIHtcbiAgcHVibGljIHJlYWRvbmx5IHBsYXRmb3JtVHlwZSA9IFBsYXRmb3JtVHlwZS5XaW5kb3dzO1xuXG4gIHB1YmxpYyBwcmVidWlsZENvbW1hbmRzKGFzc3VtZVJvbGU/OiBBc3N1bWVSb2xlLCBfdXNlUmVnaW9uYWxTdHNFbmRwb2ludHM/OiBib29sZWFuKTogc3RyaW5nW10ge1xuICAgIGlmIChhc3N1bWVSb2xlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2Fzc3VtZVJvbGUgaXMgbm90IHN1cHBvcnRlZCBvbiBXaW5kb3dzOiBodHRwczovL2dpdGh1Yi5jb20vY2RrbGFicy9hd3MtZGVsaXZsaWIvaXNzdWVzLzU3Jyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIFtcbiAgICAgIC8vIFdvdWxkIGxvdmUgdG8gZG8gZG93bmxvYWRpbmcgaGVyZSBhbmQgZXhlY3V0aW5nIGluIHRoZSBuZXh0IHN0ZXAsXG4gICAgICAvLyBidXQgSSBkb24ndCBrbm93IGhvdyB0byBwcm9wYWdhdGUgdGhlIHZhbHVlIG9mICRURU1QRElSLlxuICAgICAgLy9cbiAgICAgIC8vIFB1bnRpbmcgZm9yIHNvbWVvbmUgd2hvIGtub3dzIFBvd2VyU2hlbGwgd2VsbCBlbm91Z2guXG4gICAgXTtcbiAgfVxuXG4gIHB1YmxpYyBidWlsZENvbW1hbmRzKGVudHJ5cG9pbnQ6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gW1xuICAgICAgJ1NldC1WYXJpYWJsZSAtTmFtZSBURU1QRElSIC1WYWx1ZSAoTmV3LVRlbXBvcmFyeUZpbGUpLkRpcmVjdG9yeU5hbWUnLFxuICAgICAgYGF3cyBzMyBjcCBzMzovLyRlbnY6JHtTM19CVUNLRVRfRU5WfS8kZW52OiR7UzNfS0VZX0VOVn0gJFRFTVBESVJcXFxcc2NyaXB0cy56aXBgLFxuICAgICAgJ05ldy1JdGVtIC1JdGVtVHlwZSBEaXJlY3RvcnkgLVBhdGggJFRFTVBESVJcXFxcc2NyaXB0ZGlyJyxcbiAgICAgICdFeHBhbmQtQXJjaGl2ZSAtUGF0aCAkVEVNUERJUi9zY3JpcHRzLnppcCAtRGVzdGluYXRpb25QYXRoICRURU1QRElSXFxcXHNjcmlwdGRpcicsXG4gICAgICAnJGVudjpTQ1JJUFRfRElSID0gXCIkVEVNUERJUlxcXFxzY3JpcHRkaXJcIicsXG4gICAgICBgJiAkVEVNUERJUlxcXFxzY3JpcHRkaXJcXFxcJHtlbnRyeXBvaW50fWAsXG4gICAgXTtcbiAgfVxufVxuIl19
275
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hlbGxhYmxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic2hlbGxhYmxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsdUNBQXlCO0FBQ3pCLDJDQUE2QjtBQUM3Qiw2Q0FLcUI7QUFDckIsMkNBQXVDO0FBQ3ZDLDZDQUF5QztBQUN6QyxpQ0FBb0Q7QUFFcEQsTUFBTSxhQUFhLEdBQUcsa0JBQWtCLENBQUM7QUFDekMsTUFBTSxVQUFVLEdBQUcsZUFBZSxDQUFDO0FBK01uQzs7Ozs7Ozs7Ozs7O0dBWUc7QUFDSCxNQUFhLFNBQVUsU0FBUSxzQkFBUztJQWN0QyxZQUFZLE1BQWlCLEVBQUUsRUFBVSxFQUFFLEtBQXFCOztRQUM5RCxLQUFLLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWxCLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDLFFBQVEsSUFBSSxhQUFhLENBQUMsV0FBVyxDQUFDO1FBRTVELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWUsRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDdEUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDOUIsTUFBTSxJQUFJLEtBQUssQ0FBQyxnQ0FBZ0MsVUFBVSxFQUFFLENBQUMsQ0FBQztTQUMvRDtRQUVELE1BQU0sS0FBSyxHQUFHLElBQUksMkJBQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLGlCQUFpQixFQUFFO1lBQ3RELElBQUksRUFBRSxLQUFLLENBQUMsZUFBZTtTQUM1QixDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsWUFBWSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3ZELElBQUksSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sR0FBRyxHQUFHLEVBQUU7WUFDeEMsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQkFBcUIsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FBQztTQUNqRTtRQUVELElBQUksQ0FBQyxTQUFTLEdBQUcsc0JBQVMsQ0FBQyxNQUFNLENBQUM7WUFDaEMsT0FBTyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsZUFBZSxFQUFFO1lBQ3hDLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLHVCQUF1QixDQUFDO1lBQ3pGLEtBQUssRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDO1NBQ3JELENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLFNBQVMsSUFBSSxzQkFBUyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7UUFFL0MsTUFBTSwrQkFBK0IsR0FBRyxJQUFJLENBQUMseUNBQXlDLENBQUMsS0FBSyxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFFakgsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLDJCQUFNLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUU7WUFDbEQsV0FBVyxFQUFFLEtBQUssQ0FBQyxnQkFBZ0I7WUFDbkMsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNO1lBQ3BCLFdBQVcsRUFBRTtnQkFDWCxVQUFVLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVO2dCQUNwQyxXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVcsSUFBSSwyQkFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNO2dCQUMzRCxVQUFVLEVBQUUsS0FBSyxDQUFDLFVBQVU7YUFDN0I7WUFDRCxvQkFBb0IsRUFBRTtnQkFDcEIsQ0FBQyxhQUFhLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsWUFBWSxFQUFFO2dCQUM5QyxDQUFDLFVBQVUsQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxXQUFXLEVBQUU7Z0JBQzFDLEdBQUcsSUFBQSxpQ0FBMEIsRUFBQyxLQUFLLENBQUMsV0FBVyxDQUFDO2dCQUNoRCxHQUFHLElBQUEsaUNBQTBCLEVBQUMsK0JBQStCLEVBQUUsMkJBQU0sQ0FBQyw0QkFBNEIsQ0FBQyxlQUFlLENBQUM7Z0JBQ25ILEdBQUcsSUFBQSxpQ0FBMEIsRUFBQyxLQUFLLENBQUMscUJBQXFCLEVBQUUsMkJBQU0sQ0FBQyw0QkFBNEIsQ0FBQyxlQUFlLENBQUM7YUFDaEg7WUFDRCxPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU87WUFDdEIsU0FBUyxFQUFFLDJCQUFNLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLG1CQUFtQixFQUFFLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLENBQUM7WUFDL0cscUJBQXFCLEVBQUUsSUFBSTtTQUM1QixDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSyxDQUFDLENBQUMsdUNBQXVDO1FBQ3ZFLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTNCLCtCQUErQjtRQUMvQixNQUFNLENBQUMsT0FBTyxDQUFDLE1BQUEsS0FBSyxDQUFDLGtCQUFrQixtQ0FBSSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsRUFBRSxFQUFFO1lBQzNFLE1BQU0sTUFBTSxHQUFHLGdDQUFrQixDQUFDLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLEVBQUUsR0FBRyxJQUFJLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQztZQUNqRyxNQUFNLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM5QixDQUFDLENBQUMsQ0FBQztRQUVILGtDQUFrQztRQUNsQyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQUEsS0FBSyxDQUFDLHFCQUFxQixtQ0FBSSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxhQUFhLENBQUMsRUFBRSxFQUFFO1lBQ2xGLE1BQU0sU0FBUyxHQUFHLHFCQUFPLENBQUMsZUFBZSxDQUFDLHVCQUF1QixDQUFDLElBQUksRUFBRSxHQUFHLElBQUksV0FBVyxFQUFFLGFBQWEsQ0FBQyxDQUFDO1lBQzNHLFNBQVMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pDLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxLQUFLLENBQUMsVUFBVSxFQUFFO1lBQ3BCLElBQUksQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxxQkFBRyxDQUFDLGVBQWUsQ0FBQztnQkFDckQsT0FBTyxFQUFFLENBQUMsZ0JBQWdCLENBQUM7Z0JBQzNCLFNBQVMsRUFBRSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDO2FBQ3RDLENBQUMsQ0FBQyxDQUFDO1NBQ0w7UUFFRCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksNEJBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRTtZQUMvQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsV0FBVyxJQUFJLHNCQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDL0YsU0FBUyxFQUFFLEtBQUssQ0FBQyxjQUFjLElBQUksQ0FBQztZQUNwQyxrQkFBa0IsRUFBRSw0QkFBVSxDQUFDLGtCQUFrQixDQUFDLGtDQUFrQztZQUNwRixpQkFBaUIsRUFBRSxLQUFLLENBQUMsc0JBQXNCLElBQUksQ0FBQztZQUNwRCxnQkFBZ0IsRUFBRSw0QkFBVSxDQUFDLGdCQUFnQixDQUFDLE1BQU07U0FDckQsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLGFBQWEsQ0FBQyxLQUF1QixFQUFFLElBQVksRUFBRSxhQUFpQyxFQUFFLFFBQWlCO1FBRTlHLE1BQU0sZUFBZSxHQUFHLElBQUksc0NBQWlCLENBQUMsZUFBZSxDQUFDO1lBQzVELFVBQVUsRUFBRSxJQUFJO1lBQ2hCLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztZQUNyQixRQUFRO1lBQ1IsS0FBSyxFQUFFLGFBQWE7WUFDcEIsT0FBTyxFQUFFLENBQUMsSUFBSSw4QkFBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FDL0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyx1QkFBdUIsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxJQUFJLDhCQUFTLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7U0FDcEcsQ0FBQyxDQUFDO1FBQ0gsS0FBSyxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNqQyxPQUFPLGVBQWUsQ0FBQztJQUN6QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLHlDQUF5QyxDQUFDLGtCQUE4QztRQUM5RixJQUFJLENBQUMsa0JBQWtCLEVBQUU7WUFDdkIsT0FBTyxTQUFTLENBQUM7U0FDbEI7UUFFRCxNQUFNLEdBQUcsR0FBOEIsRUFBRyxDQUFDO1FBQzNDLE1BQU0sQ0FBQyxPQUFPLENBQUMsa0JBQWtCLGFBQWxCLGtCQUFrQixjQUFsQixrQkFBa0IsR0FBSSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsRUFBRSxFQUFFO1lBQ3JFLE1BQU0sTUFBTSxHQUFHLGdDQUFrQixDQUFDLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLEVBQUUsR0FBRyxJQUFJLGVBQWUsRUFBRSxTQUFTLENBQUMsQ0FBQztZQUN4RyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQztRQUNoQyxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztDQUNGO0FBM0hELDhCQTJIQztBQUVEOztHQUVHO0FBQ0gsSUFBWSxZQUdYO0FBSEQsV0FBWSxZQUFZO0lBQ3RCLCtCQUFlLENBQUE7SUFDZixtQ0FBbUIsQ0FBQTtBQUNyQixDQUFDLEVBSFcsWUFBWSxHQUFaLG9CQUFZLEtBQVosb0JBQVksUUFHdkI7QUFFRDs7R0FFRztBQUNILE1BQXNCLGFBQWE7SUFDakM7O09BRUc7SUFDSSxNQUFNLEtBQUssV0FBVztRQUMzQiwwREFBMEQ7UUFDMUQsT0FBTyxJQUFJLGFBQWEsQ0FBQywyQkFBTSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRUQ7O09BRUc7SUFDSSxNQUFNLEtBQUssT0FBTztRQUN2QiwwREFBMEQ7UUFDMUQsT0FBTyxJQUFJLGVBQWUsQ0FBQywyQkFBTSxDQUFDLGlCQUFpQixDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFDakYsQ0FBQztJQUVELFlBQTRCLFVBQThCO1FBQTlCLGVBQVUsR0FBVixVQUFVLENBQW9CO0lBQzFELENBQUM7Q0FxQkY7QUF2Q0Qsc0NBdUNDO0FBRUQ7O0dBRUc7QUFDSCxNQUFhLGFBQWMsU0FBUSxhQUFhO0lBQWhEOztRQUNrQixpQkFBWSxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUM7SUFrRXBELENBQUM7SUFoRVEsZUFBZTtRQUNwQixPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRU0sZ0JBQWdCLENBQUMsVUFBdUIsRUFBRSx1QkFBaUM7O1FBQ2hGLE1BQU0sS0FBSyxHQUFHLElBQUksS0FBSyxFQUFVLENBQUM7UUFDbEMsZ0ZBQWdGO1FBQ2hGLDhFQUE4RTtRQUM5RSw4RUFBOEU7UUFDOUUscURBQXFEO1FBQ3JELEtBQUssQ0FBQyxJQUFJLENBQUMsMENBQTBDLGFBQWEsUUFBUSxVQUFVLElBQUksQ0FBQyxDQUFDO1FBQzFGLEtBQUssQ0FBQyxJQUFJLENBQUMscUJBQXFCLGFBQWEsUUFBUSxVQUFVLFFBQVEsQ0FBQyxDQUFDO1FBQ3pFLEtBQUssQ0FBQyxJQUFJLENBQUMseUJBQXlCLENBQUMsQ0FBQztRQUN0QyxLQUFLLENBQUMsSUFBSSxDQUFDLDJCQUEyQixVQUFVLHFCQUFxQixDQUFDLENBQUM7UUFFdkUsSUFBSSxVQUFVLEVBQUU7WUFFZCxJQUFJLFVBQVUsQ0FBQyxPQUFPLEVBQUU7Z0JBRXRCLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQztnQkFFekIsTUFBTSxXQUFXLEdBQUcsTUFBQSxVQUFVLENBQUMsV0FBVyxtQ0FBSSxzQkFBc0IsQ0FBQztnQkFFckUsS0FBSyxDQUFDLElBQUksQ0FBQyxZQUFZLE9BQU8sRUFBRSxDQUFDLENBQUM7Z0JBQ2xDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxPQUFPLGNBQWMsQ0FBQyxDQUFDO2dCQUMzQyxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsT0FBTyxTQUFTLENBQUMsQ0FBQztnQkFDdkMsS0FBSyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsV0FBVyxpQkFBaUIsQ0FBQyxDQUFDO2dCQUMxRCxLQUFLLENBQUMsSUFBSSxDQUFDLHNEQUFzRCxDQUFDLENBQUM7Z0JBQ25FLEtBQUssQ0FBQyxJQUFJLENBQUMsNEJBQTRCLFVBQVUsQ0FBQyxXQUFXLGlCQUFpQixDQUFDLENBQUM7Z0JBQ2hGLEtBQUssQ0FBQyxJQUFJLENBQUMsbUJBQW1CLFVBQVUsQ0FBQyxPQUFPLGFBQWEsQ0FBQyxDQUFDO2dCQUUvRCxJQUFJLFVBQVUsQ0FBQyxVQUFVLEVBQUU7b0JBQ3pCLEtBQUssQ0FBQyxJQUFJLENBQUMsc0JBQXNCLFVBQVUsQ0FBQyxVQUFVLGFBQWEsQ0FBQyxDQUFDO2lCQUN0RTtnQkFFRCwwREFBMEQ7Z0JBQzFELEtBQUssQ0FBQyxJQUFJLENBQUMsc0JBQXNCLFdBQVcsRUFBRSxDQUFDLENBQUM7Z0JBRWhELDZHQUE2RztnQkFDN0csS0FBSyxDQUFDLElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO2FBRTVDO2lCQUFNO2dCQUVMLE1BQU0sVUFBVSxHQUFHLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixVQUFVLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDM0YsTUFBTSxZQUFZLEdBQUcsdUJBQXVCLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO2dCQUVyRSxLQUFLLENBQUMsSUFBSSxDQUFDLCtCQUErQixDQUFDLENBQUM7Z0JBQzVDLEtBQUssQ0FBQyxJQUFJLENBQUMsOEJBQThCLFlBQVksb0NBQW9DLFVBQVUsQ0FBQyxPQUFPLDBCQUEwQixVQUFVLENBQUMsV0FBVyxLQUFLLFVBQVUsV0FBVyxDQUFDLENBQUM7Z0JBQ3ZMLEtBQUssQ0FBQyxJQUFJLENBQUMsb0ZBQW9GLENBQUMsQ0FBQztnQkFDakcsS0FBSyxDQUFDLElBQUksQ0FBQyw0RkFBNEYsQ0FBQyxDQUFDO2dCQUN6RyxLQUFLLENBQUMsSUFBSSxDQUFDLHFGQUFxRixDQUFDLENBQUM7YUFDbkc7U0FDRjtRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVNLGFBQWEsQ0FBQyxVQUFrQjtRQUNyQyxPQUFPO1lBQ0wsa0NBQWtDO1lBQ2xDLGlCQUFpQixVQUFVLEdBQUc7WUFDOUIsNEJBQTRCLFVBQVUsRUFBRTtTQUN6QyxDQUFDO0lBQ0osQ0FBQztDQUNGO0FBbkVELHNDQW1FQztBQUVEOztHQUVHO0FBQ0gsTUFBYSxlQUFnQixTQUFRLGFBQWE7SUFBbEQ7O1FBQ2tCLGlCQUFZLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQztJQWlDdEQsQ0FBQztJQS9CUSxlQUFlO1FBQ3BCLE9BQU87WUFDTCx1REFBdUQ7WUFDdkQsOEVBQThFO1lBQzlFLG1FQUFtRTtTQUNwRSxDQUFDO0lBQ0osQ0FBQztJQUVNLGdCQUFnQixDQUFDLFVBQXVCLEVBQUUsd0JBQWtDO1FBQ2pGLElBQUksVUFBVSxFQUFFO1lBQ2QsTUFBTSxJQUFJLEtBQUssQ0FBQywyRkFBMkYsQ0FBQyxDQUFDO1NBQzlHO1FBRUQsT0FBTztRQUNMLG9FQUFvRTtRQUNwRSwyREFBMkQ7UUFDM0QsRUFBRTtRQUNGLHdEQUF3RDtTQUN6RCxDQUFDO0lBQ0osQ0FBQztJQUVNLGFBQWEsQ0FBQyxVQUFrQjtRQUNyQyxPQUFPO1lBQ0wscUVBQXFFO1lBQ3JFLHVCQUF1QixhQUFhLFNBQVMsVUFBVSx3QkFBd0I7WUFDL0Usd0RBQXdEO1lBQ3hELGdGQUFnRjtZQUNoRix5Q0FBeUM7WUFDekMsMEJBQTBCLFVBQVUsRUFBRTtTQUN2QyxDQUFDO0lBQ0osQ0FBQztDQUNGO0FBbENELDBDQWtDQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQge1xuICBEdXJhdGlvbixcbiAgYXdzX2Nsb3Vkd2F0Y2ggYXMgY2xvdWR3YXRjaCwgYXdzX2NvZGVidWlsZCBhcyBjYnVpbGQsXG4gIGF3c19jb2RlcGlwZWxpbmUgYXMgY3BpcGVsaW5lLCBhd3NfY29kZXBpcGVsaW5lX2FjdGlvbnMgYXMgY3BpcGVsaW5lX2FjdGlvbnMsXG4gIGF3c19pYW0gYXMgaWFtLCBhd3NfczNfYXNzZXRzIGFzIGFzc2V0cywgYXdzX3NlY3JldHNtYW5hZ2VyLCBhd3Nfc3NtLFxufSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IEJ1aWxkU3BlYyB9IGZyb20gJy4vYnVpbGQtc3BlYyc7XG5pbXBvcnQgeyByZW5kZXJFbnZpcm9ubWVudFZhcmlhYmxlcyB9IGZyb20gJy4vdXRpbCc7XG5cbmNvbnN0IFMzX0JVQ0tFVF9FTlYgPSAnU0NSSVBUX1MzX0JVQ0tFVCc7XG5jb25zdCBTM19LRVlfRU5WID0gJ1NDUklQVF9TM19LRVknO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNoZWxsYWJsZU9wdGlvbnMge1xuXG4gIC8qKlxuICAgKiBTb3VyY2UgZm9yIHRoZSBDb2RlQnVpbGQgcHJvamVjdFxuICAgKlxuICAgKiBAZGVmYXVsdCBubyBzb3VyY2VcbiAgICovXG4gIHNvdXJjZT86IGNidWlsZC5JU291cmNlO1xuXG4gIC8qKlxuICAgKiBXaGF0IHBsYXRmb3JtIHRvIHVzIHRvIHJ1biB0aGUgc2NyaXB0cyBvblxuICAgKlxuICAgKiBAZGVmYXVsdCBTaGVsbFBsYXRmb3JtLkxpbnV4VWJ1bnR1XG4gICAqL1xuICBwbGF0Zm9ybT86IFNoZWxsUGxhdGZvcm07XG5cbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgZW52aXJvbm1lbnQgdmFyaWFibGVzIHRvIHNldC5cbiAgICpcbiAgICogQGRlZmF1bHQgTm8gYWRkaXRpb25hbCBlbnZpcm9ubWVudCB2YXJpYWJsZXNcbiAgICovXG4gIGVudmlyb25tZW50PzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfCB1bmRlZmluZWQgfTtcblxuICAvKipcbiAgICogRW52aXJvbm1lbnQgdmFyaWFibGVzIHdpdGggc2VjcmV0cyBtYW5hZ2VyIHZhbHVlcy4gVGhlIHZhbHVlcyBtdXN0IGJlIGNvbXBsZXRlIFNlY3JldCBNYW5hZ2VyIEFSTnMuXG4gICAqXG4gICAqIEBkZWZhdWx0IG5vIGFkZGl0aW9uYWwgZW52aXJvbm1lbnQgdmFyaWFibGVzXG4gICAqL1xuICBlbnZpcm9ubWVudFNlY3JldHM/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuXG4gIC8qKlxuICAgKiBFbnZpcm9ubWVudCB2YXJpYWJsZXMgd2l0aCBTU00gcGFyYW1ldGVyIHZhbHVlcy5cbiAgICpcbiAgICogQGRlZmF1bHQgbm8gYWRkaXRpb25hbCBlbnZpcm9ubWVudCB2YXJpYWJsZXNcbiAgICovXG4gIGVudmlyb25tZW50UGFyYW1ldGVycz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgLyoqXG4gICAqIFRoZSBjb21wdXRlIHR5cGUgdG8gdXNlIGZvciB0aGUgYnVpbGQgY29udGFpbmVyLlxuICAgKlxuICAgKiBOb3RlIHRoYXQgbm90IGFsbCBjb21iaW5hdGlvbnMgYXJlIGF2YWlsYWJsZS4gRm9yIGV4YW1wbGUsXG4gICAqIFdpbmRvd3MgaW1hZ2VzIGNhbm5vdCBiZSBydW4gb24gQ29tcHV0ZVR5cGUuU21hbGwuXG4gICAqXG4gICAqIEBkZWZhdWx0IENvbXB1dGVUeXBlLk1lZGl1bVxuICAgKi9cbiAgY29tcHV0ZVR5cGU/OiBjYnVpbGQuQ29tcHV0ZVR5cGU7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyBob3cgdGhlIHByb2plY3QgYnVpbGRzIERvY2tlciBpbWFnZXMuIFNwZWNpZnkgdHJ1ZSB0byBlbmFibGVcbiAgICogcnVubmluZyB0aGUgRG9ja2VyIGRhZW1vbiBpbnNpZGUgYSBEb2NrZXIgY29udGFpbmVyLiBUaGlzIHZhbHVlIG11c3QgYmVcbiAgICogc2V0IHRvIHRydWUgb25seSBpZiB0aGlzIGJ1aWxkIHByb2plY3Qgd2lsbCBiZSB1c2VkIHRvIGJ1aWxkIERvY2tlclxuICAgKiBpbWFnZXMsIGFuZCB0aGUgc3BlY2lmaWVkIGJ1aWxkIGVudmlyb25tZW50IGltYWdlIGlzIG5vdCBvbmUgcHJvdmlkZWQgYnlcbiAgICogQVdTIENvZGVCdWlsZCB3aXRoIERvY2tlciBzdXBwb3J0LiBPdGhlcndpc2UsIGFsbCBhc3NvY2lhdGVkIGJ1aWxkcyB0aGF0XG4gICAqIGF0dGVtcHQgdG8gaW50ZXJhY3Qgd2l0aCB0aGUgRG9ja2VyIGRhZW1vbiB3aWxsIGZhaWwuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBwcml2aWxlZ2VkPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIG5hbWUgZm9yIHRoZSBidWlsZCBwcm9qZWN0LlxuICAgKlxuICAgKiBAZGVmYXVsdCBhIG5hbWUgaXMgZ2VuZXJhdGVkIGJ5IENsb3VkRm9ybWF0aW9uLlxuICAgKi9cbiAgYnVpbGRQcm9qZWN0TmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogSW5kaWNhdGVzIGlmIFJlZ2lvbmFsIEFXUyBTVFMgZW5kcG9pbnRzIHNob3VsZCBiZSB1c2VkIGluc3RlYWRcbiAgICogb2YgdGhlIGdsb2JhbCBlbmRwb2ludC4gU3BlY2lmeSB0cnVlIHRvIHVzZSBSZWdpb25hbCBBV1MgU1RTIGVuZHBvaW50cy5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHVzZVJlZ2lvbmFsU3RzRW5kcG9pbnRzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQ2FuIGJlIHVzZWQgdG8gcnVuIHRoaXMgYnVpbGQgdXNpbmcgYSBzcGVjaWZpYyBJQU0gcm9sZS4gVGhpcyBjYW4gYmUgdXNlZCxcbiAgICogZm9yIGV4YW1wbGUsIHRvIGV4ZWN1dGUgaW4gdGhlIGNvbnRleHQgb2YgYW5vdGhlciBhY2NvdW50IChlLmcuIHRvIHJ1blxuICAgKiB0ZXN0cyBpbiBpc29sYXRpb24pLlxuICAgKi9cbiAgYXNzdW1lUm9sZT86IEFzc3VtZVJvbGU7XG5cbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgYnVpbGRzcGVjIChmb3IgYXJ0aWZhY3RzIGV0Yy4pXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vIGFkZGl0aW9uYWwgYnVpbGRzcGVjXG4gICAqL1xuICBidWlsZFNwZWM/OiBCdWlsZFNwZWM7XG5cbiAgLyoqXG4gICAqIFRoZSB0aW1lb3V0IG9mIHRoZSBidWlsZC5cbiAgICpcbiAgICogQGRlZmF1bHQgdGhlIENvZGVCdWlsZCBkZWZhdWx0ICgxIGhvdXIpXG4gICAqL1xuICB0aW1lb3V0PzogRHVyYXRpb247XG5cbiAgLyoqXG4gICAqIEFsYXJtIHBlcmlvZC5cbiAgICpcbiAgICogQGRlZmF1bHQgMzAwIHNlY29uZHMgKDUgbWludXRlcylcbiAgICovXG4gIGFsYXJtUGVyaW9kPzogRHVyYXRpb247XG5cbiAgLyoqXG4gICAqIEFsYXJtIHRocmVzaG9sZC5cbiAgICogQGRlZmF1bHQgMVxuICAgKi9cbiAgYWxhcm1UaHJlc2hvbGQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEFsYXJtIGV2YWx1YXRpb24gcGVyaW9kcy5cbiAgICogQGRlZmF1bHQgMVxuICAgKi9cbiAgYWxhcm1FdmFsdWF0aW9uUGVyaW9kcz86IG51bWJlcjtcblxuICBzZWNvbmRhcnlBcnRpZmFjdE5hbWVzPzogc3RyaW5nW107XG59XG5cbi8qKlxuICogUHJvcGVydGllcyB1c2VkIHRvIGNyZWF0ZSBhIFNoZWxsYWJsZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNoZWxsYWJsZVByb3BzIGV4dGVuZHMgU2hlbGxhYmxlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBEaXJlY3Rvcnkgd2l0aCB0aGUgc2NyaXB0cy5cbiAgICpcbiAgICogVGhlIHdob2xlIGRpcmVjdG9yeSB3aWxsIGJlIHVwbG9hZGVkLlxuICAgKi9cbiAgc2NyaXB0RGlyZWN0b3J5OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEZpbGVuYW1lIG9mIHRoZSBpbml0aWFsIHNjcmlwdCB0byBzdGFydCwgcmVsYXRpdmUgdG8gc2NyaXB0RGlyZWN0b3J5LlxuICAgKi9cbiAgZW50cnlwb2ludDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFzc3VtZVJvbGUge1xuICAvKipcbiAgICogVGhlIEFtYXpvbiBSZXNvdXJjZSBOYW1lIChBUk4pIG9mIHRoZSByb2xlIHRvIGFzc3VtZS5cbiAgICovXG4gIHJvbGVBcm46IHN0cmluZztcblxuICAvKipcbiAgICogQW4gaWRlbnRpZmllciBmb3IgdGhlIGFzc3VtZWQgcm9sZSBzZXNzaW9uLlxuICAgKlxuICAgKiBVc2UgIHRoZSAgcm9sZSAgc2Vzc2lvbiBuYW1lIHRvIHVuaXF1ZWx5IGlkZW50aWZ5IGEgc2Vzc2lvbiB3aGVuIHRoZSBzYW1lXG4gICAqIHJvbGUgaXMgYXNzdW1lZCBieSBkaWZmZXJlbnQgcHJpbmNpcGFscyBvciBmb3IgZGlmZmVyZW50IHJlYXNvbnMuIEluXG4gICAqIGNyb3NzLWFjY291bnQgc2NlbmFyaW9zLCB0aGUgcm9sZSBzZXNzaW9uIG5hbWUgaXMgdmlzaWJsZSB0bywgYW5kIGNhbiBiZVxuICAgKiBsb2dnZWQgYnkgdGhlIGFjY291bnQgdGhhdCBvd25zIHRoZSByb2xlLiAgVGhlIHJvbGUgc2Vzc2lvbiBuYW1lIGlzIGFsc29cbiAgICogdXNlZCBpbiB0aGUgQVJOIG9mIHRoZSBhc3N1bWVkIHJvbGUgcHJpbmNpcGFsLiBUaGlzIG1lYW5zIHRoYXQgc3Vic2VxdWVudFxuICAgKiBjcm9zcy1hY2NvdW50IEFQSSByZXF1ZXN0cyB1c2luZyB0aGUgdGVtLSBwb3Jhcnkgc2VjdXJpdHkgY3JlZGVudGlhbHMgd2lsbFxuICAgKiBleHBvc2UgdGhlIHJvbGUgc2Vzc2lvbiBuYW1lIHRvIHRoZSBleHRlcm5hbCBhY2NvdW50IGluIHRoZWlyIENsb3VkVHJhaWxcbiAgICogbG9ncy5cbiAgICpcbiAgICogVGhlIHJlZ2V4IHVzZWQgdG8gdmFsaWRhdGUgdGhpcyBwYXJhbWV0ZXIgaXMgYSBzdHJpbmcgb2YgY2hhcmFjdGVyc1xuICAgKiBjb25zaXN0aW5nICBvZiB1cHBlci0gYW5kIGxvd2VyLWNhc2UgYWxwaGFudW1lcmljIGNoYXJhY3RlcnMgd2l0aCBub1xuICAgKiBzcGFjZXMuIFlvdSBjYW4gYWxzbyBpbmNsdWRlIHVuZGVyc2NvcmVzIG9yIGFueSBvZiB0aGUgZm9sbG93aW5nXG4gICAqIGNoYXJhY3RlcnM6ID0sLkAtXG4gICAqL1xuICBzZXNzaW9uTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBICB1bmlxdWUgIGlkZW50aWZpZXIgIHRoYXQgIGlzICB1c2VkIGJ5IHRoaXJkIHBhcnRpZXMgd2hlbiBhc3N1bWluZyByb2xlc1xuICAgKiBpbiB0aGVpciBjdXN0b21lcnMnIGFjY291bnRzLiBGb3IgZWFjaCAgcm9sZSAgdGhhdCAgdGhlICB0aGlyZCBwYXJ0eSBjYW5cbiAgICogYXNzdW1lLCB0aGV5IHNob3VsZCBpbnN0cnVjdCB0aGVpciBjdXN0b21lcnMgdG8gZW5zdXJlIHRoZSByb2xlJ3MgdHJ1c3RcbiAgICogcG9saWN5IGNoZWNrcyBmb3IgdGhlIGV4dGVybmFsIElEIHRoYXQgdGhlIHRoaXJkICBwYXJ0eSBnZW5lcmF0ZWQuICBFYWNoXG4gICAqIHRpbWUgdGhlIHRoaXJkIHBhcnR5IGFzc3VtZXMgdGhlIHJvbGUsIHRoZXkgc2hvdWxkIHBhc3MgdGhlIGN1c3RvbWVyJ3NcbiAgICogZXh0ZXJuYWwgSUQuIFRoZSBleHRlcm5hbCBJRCBpcyB1c2VmdWwgaW4gIG9yZGVyIHRvICBoZWxwICB0aGlyZCAgcGFydGllc1xuICAgKiBiaW5kIGEgcm9sZSB0byB0aGUgY3VzdG9tZXIgd2hvIGNyZWF0ZWQgaXQuIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZVxuICAgKiBleHRlcm5hbCBJRCwgc2VlIEhvdyB0byBVc2UgYW4gRXh0ZXItIG5hbCAgSUQgIFdoZW4gR3JhbnRpbmcgQWNjZXNzIHRvIFlvdXJcbiAgICogQVdTIFJlc291cmNlcyB0byBhIFRoaXJkIFBhcnR5IGluIHRoZSBJQU0gVXNlciBHdWlkZSAuXG4gICAqXG4gICAqIFRoaXMgcGFyYW1ldGVyIG11c3QgYmUgYSBzdHJpbmcgb2YgY2hhcmFjdGVycyBjb25zaXN0aW5nICBvZiB1cHBlci0gYW5kXG4gICAqIGxvd2VyLWNhc2UgYWxwaGFudW1lcmljIGNoYXJhY3RlcnMgd2l0aCBubyBzcGFjZXMuIFlvdSBjYW4gYWxzbyBpbmNsdWRlXG4gICAqIHVuZGVyc2NvcmVzIG9yICBhbnkgIG9mICB0aGUgIGZvbGxvd2luZyBjaGFyYWN0ZXJzOiA9LC5AOi8tXG4gICAqL1xuICBleHRlcm5hbElkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGVuIGEgcHJvZmllIG5hbWUgaXMgY29uZmlndXJlZCwgYW4gYXNzdW1lZCByb2xlIGNvbmZpZ3VyYXRpb24gd2lsbCBiZSBjcmVhdGVkXG4gICAqIGluIHRoZSBzaGFyZWQgYXdzIGNvbmZpZ3VyYXRpb24gZmlsZSAofi8uYXdzL2NvbmZpZykuIFRoaXMgaXMgaW4gY29udHJhcnkgb2Ygc2ltcGx5IGludm9raW5nXG4gICAqIGFuIGBzdHMgYXNzdW1lLXJvbGVgIGNvbW1hbmQgdGhhdCBjcmVhdGVzIGEgc2Vzc2lvbiB3aXRoIGEgZml4ZWQgZXhwaXJ5IGRhdGUuXG4gICAqXG4gICAqIFVzaW5nIGEgcHJvZmlsZSB3aWxsIGRlbGVnYXRlIGNyZWRlbnRpYWwgcmVmcmVzaGluZyB0byB0aGUgU0RLL0NMSS5cbiAgICogVGhpcyBpcyBuZWVkZWQgdG8gc3VwcG9ydCBsb25nIHJ1bm5pbmcgc2Vzc2lvbnMgdGhhdCBuZWVkcyBzZXNzaW9ucyB0aGF0IGFyZSBsb25nZXIgdGhhblxuICAgKiB0aGUgc2Vzc2lvbiBkdXJhdGlvbiB0aGF0IGNhbiBiZSBjb25maWd1cmVkIHdpdGggYSBgc3RzIGFzc3VtZS1yb2xlYC5cbiAgICpcbiAgICogVGhlIGFwcGxpY2F0aW9uIGNvZGUgd2lsbCBhY2Nlc3MgdG8gdGhpcyBwcm9maWxlIGluIHRoZSBgQVdTX1BST0ZJTEVgIGVudiB2YXJpYWJsZS5cbiAgICpcbiAgICogT25seSByZWxldmFudCBpZiBgcmVmcmVzaGAgaXMgc3BlY2lmaWVkLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9jbGkvbGF0ZXN0L3VzZXJndWlkZS9jbGktY29uZmlndXJlLWZpbGVzLmh0bWxcbiAgICpcbiAgICogQGRlZmF1bHQgJ2xvbmctcnVubmluZy1wcm9maWxlJ1xuICAgKi9cbiAgcHJvZmlsZU5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFNwZWNpZnkgdGhpcyBpZiB5b3UgaGF2ZSBhIGxvbmcgcnVubmluZyBleGVjdXRpb24gdGhhdCBuZWVkcyBsb25nIHJ1bm5pbmcgc2Vzc2lvbnMuXG4gICAqIFRoaXMgd2lsbCBjcmVhdGUgYSBwcm9maWxlIGFuZCB1c2UgaXQgdG8gZGVsZWdhdGUgY3JlZGVudGlhbCByZWZyZXNoaW5nIHRvIHRoZSBTREsvQ0xJXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWZyZXNoPzogYm9vbGVhbjtcblxufVxuXG4vKipcbiAqIEEgQ29kZUJ1aWxkIHByb2plY3QgdGhhdCBydW5zIGFyYml0cmFyeSBzY3JpcHRzLlxuICpcbiAqIFRoZSBzY3JpcHRzIHRvIGJlIHJ1biBhcmUgc3BlY2lmaWVkIGJ5IHN1cHBseWluZyBhIGRpcmVjdG9yeS5cbiAqIEFsbCBmaWxlcyBpbiB0aGUgZGlyZWN0b3J5IGFyZSB1cGxvYWRlZCwgdGhlbiB0aGUgc2NyaXB0IGRlc2lnbmF0ZWRcbiAqIGFzIHRoZSBlbnRyeSBwb2ludCBpcyBzdGFydGVkLlxuICpcbiAqIFRoZSBzY3JpcHQgaXMgZXhlY3V0ZWQgaW4gdGhlIGRpcmVjdG9yeSB3aGVyZSB0aGUgYnVpbGQgcHJvamVjdCdzXG4gKiBpbnB1dCBpcyBzdG9yZWQuIFRoZSBkaXJlY3Rvcnkgd2hlcmUgdGhlIHNjcmlwdCBmaWxlcyBhcmUgc3RvcmVkXG4gKiBpcyBpbiB0aGUgJFNDUklQVF9ESVIgZW52aXJvbm1lbnQgdmFyaWFibGUuXG4gKlxuICogU3VwcG9ydHMgYm90aCBXaW5kb3dzIGFuZCBMaW51eCBjb21wdXRlcy5cbiAqL1xuZXhwb3J0IGNsYXNzIFNoZWxsYWJsZSBleHRlbmRzIENvbnN0cnVjdCB7XG4gIHB1YmxpYyByZWFkb25seSBwcm9qZWN0OiBjYnVpbGQuUHJvamVjdDtcbiAgcHVibGljIHJlYWRvbmx5IHJvbGU6IGlhbS5JUm9sZTtcblxuICAvKipcbiAgICogQ2xvdWRXYXRjaCBhbGFybSB0aGF0IHdpbGwgYmUgdHJpZ2dlcmVkIGlmIHRoaXMgYWN0aW9uIGZhaWxzLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGFsYXJtOiBjbG91ZHdhdGNoLkFsYXJtO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgcGxhdGZvcm06IFNoZWxsUGxhdGZvcm07XG4gIHByaXZhdGUgcmVhZG9ubHkgYnVpbGRTcGVjOiBCdWlsZFNwZWM7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBvdXRwdXRBcnRpZmFjdE5hbWU6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihwYXJlbnQ6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFNoZWxsYWJsZVByb3BzKSB7XG4gICAgc3VwZXIocGFyZW50LCBpZCk7XG5cbiAgICB0aGlzLnBsYXRmb3JtID0gcHJvcHMucGxhdGZvcm0gfHwgU2hlbGxQbGF0Zm9ybS5MaW51eFVidW50dTtcblxuICAgIGNvbnN0IGVudHJ5cG9pbnQgPSBwYXRoLmpvaW4ocHJvcHMuc2NyaXB0RGlyZWN0b3J5LCBwcm9wcy5lbnRyeXBvaW50KTtcbiAgICBpZiAoIWZzLmV4aXN0c1N5bmMoZW50cnlwb2ludCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IGZpbmQgdGVzdCBlbnRyeXBvaW50OiAke2VudHJ5cG9pbnR9YCk7XG4gICAgfVxuXG4gICAgY29uc3QgYXNzZXQgPSBuZXcgYXNzZXRzLkFzc2V0KHRoaXMsICdTY3JpcHREaXJlY3RvcnknLCB7XG4gICAgICBwYXRoOiBwcm9wcy5zY3JpcHREaXJlY3RvcnksXG4gICAgfSk7XG5cbiAgICB0aGlzLm91dHB1dEFydGlmYWN0TmFtZSA9IGBBcnRpZmFjdF8ke3RoaXMubm9kZS5hZGRyfWA7XG4gICAgaWYgKHRoaXMub3V0cHV0QXJ0aWZhY3ROYW1lLmxlbmd0aCA+IDEwMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBXaG9vcHMsIHRvbyBsb25nOiAke3RoaXMub3V0cHV0QXJ0aWZhY3ROYW1lfWApO1xuICAgIH1cblxuICAgIHRoaXMuYnVpbGRTcGVjID0gQnVpbGRTcGVjLnNpbXBsZSh7XG4gICAgICBpbnN0YWxsOiB0aGlzLnBsYXRmb3JtLmluc3RhbGxDb21tYW5kcygpLFxuICAgICAgcHJlQnVpbGQ6IHRoaXMucGxhdGZvcm0ucHJlYnVpbGRDb21tYW5kcyhwcm9wcy5hc3N1bWVSb2xlLCBwcm9wcy51c2VSZWdpb25hbFN0c0VuZHBvaW50cyksXG4gICAgICBidWlsZDogdGhpcy5wbGF0Zm9ybS5idWlsZENvbW1hbmRzKHByb3BzLmVudHJ5cG9pbnQpLFxuICAgIH0pLm1lcmdlKHByb3BzLmJ1aWxkU3BlYyB8fCBCdWlsZFNwZWMuZW1wdHkoKSk7XG5cbiAgICBjb25zdCBlbnZpcm9ubWVudFNlY3JldHNBc1NlY3JldE5hbWVzID0gdGhpcy5jb252ZXJ0RW52aXJvbm1lbnRTZWNyZXRBcm5zVG9TZWNyZXROYW1lcyhwcm9wcy5lbnZpcm9ubWVudFNlY3JldHMpO1xuXG4gICAgdGhpcy5wcm9qZWN0ID0gbmV3IGNidWlsZC5Qcm9qZWN0KHRoaXMsICdSZXNvdXJjZScsIHtcbiAgICAgIHByb2plY3ROYW1lOiBwcm9wcy5idWlsZFByb2plY3ROYW1lLFxuICAgICAgc291cmNlOiBwcm9wcy5zb3VyY2UsXG4gICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICBidWlsZEltYWdlOiB0aGlzLnBsYXRmb3JtLmJ1aWxkSW1hZ2UsXG4gICAgICAgIGNvbXB1dGVUeXBlOiBwcm9wcy5jb21wdXRlVHlwZSB8fCBjYnVpbGQuQ29tcHV0ZVR5cGUuTUVESVVNLFxuICAgICAgICBwcml2aWxlZ2VkOiBwcm9wcy5wcml2aWxlZ2VkLFxuICAgICAgfSxcbiAgICAgIGVudmlyb25tZW50VmFyaWFibGVzOiB7XG4gICAgICAgIFtTM19CVUNLRVRfRU5WXTogeyB2YWx1ZTogYXNzZXQuczNCdWNrZXROYW1lIH0sXG4gICAgICAgIFtTM19LRVlfRU5WXTogeyB2YWx1ZTogYXNzZXQuczNPYmplY3RLZXkgfSxcbiAgICAgICAgLi4ucmVuZGVyRW52aXJvbm1lbnRWYXJpYWJsZXMocHJvcHMuZW52aXJvbm1lbnQpLFxuICAgICAgICAuLi5yZW5kZXJFbnZpcm9ubWVudFZhcmlhYmxlcyhlbnZpcm9ubWVudFNlY3JldHNBc1NlY3JldE5hbWVzLCBjYnVpbGQuQnVpbGRFbnZpcm9ubWVudFZhcmlhYmxlVHlwZS5TRUNSRVRTX01BTkFHRVIpLFxuICAgICAgICAuLi5yZW5kZXJFbnZpcm9ubWVudFZhcmlhYmxlcyhwcm9wcy5lbnZpcm9ubWVudFBhcmFtZXRlcnMsIGNidWlsZC5CdWlsZEVudmlyb25tZW50VmFyaWFibGVUeXBlLlBBUkFNRVRFUl9TVE9SRSksXG4gICAgICB9LFxuICAgICAgdGltZW91dDogcHJvcHMudGltZW91dCxcbiAgICAgIGJ1aWxkU3BlYzogY2J1aWxkLkJ1aWxkU3BlYy5mcm9tT2JqZWN0KHRoaXMuYnVpbGRTcGVjLnJlbmRlcih7IHByaW1hcnlBcnRpZmFjdE5hbWU6IHRoaXMub3V0cHV0QXJ0aWZhY3ROYW1lIH0pKSxcbiAgICAgIHNzbVNlc3Npb25QZXJtaXNzaW9uczogdHJ1ZSxcbiAgICB9KTtcblxuICAgIHRoaXMucm9sZSA9IHRoaXMucHJvamVjdC5yb2xlITsgLy8gbm90IHVuZGVmaW5lZCwgYXMgaXQncyBhIG5ldyBQcm9qZWN0XG4gICAgYXNzZXQuZ3JhbnRSZWFkKHRoaXMucm9sZSk7XG5cbiAgICAvLyBHcmFudCByZWFkIGFjY2VzcyB0byBzZWNyZXRzXG4gICAgT2JqZWN0LmVudHJpZXMocHJvcHMuZW52aXJvbm1lbnRTZWNyZXRzID8/IHt9KS5mb3JFYWNoKChbbmFtZSwgc2VjcmV0QXJuXSkgPT4ge1xuICAgICAgY29uc3Qgc2VjcmV0ID0gYXdzX3NlY3JldHNtYW5hZ2VyLlNlY3JldC5mcm9tU2VjcmV0Q29tcGxldGVBcm4odGhpcywgYCR7bmFtZX1TZWNyZXRgLCBzZWNyZXRBcm4pO1xuICAgICAgc2VjcmV0LmdyYW50UmVhZCh0aGlzLnJvbGUpO1xuICAgIH0pO1xuXG4gICAgLy8gR3JhbnQgcmVhZCBhY2Nlc3MgdG8gcGFyYW1ldGVyc1xuICAgIE9iamVjdC5lbnRyaWVzKHByb3BzLmVudmlyb25tZW50UGFyYW1ldGVycyA/PyB7fSkuZm9yRWFjaCgoW25hbWUsIHBhcmFtZXRlck5hbWVdKSA9PiB7XG4gICAgICBjb25zdCBwYXJhbWV0ZXIgPSBhd3Nfc3NtLlN0cmluZ1BhcmFtZXRlci5mcm9tU3RyaW5nUGFyYW1ldGVyTmFtZSh0aGlzLCBgJHtuYW1lfVBhcmFtZXRlcmAsIHBhcmFtZXRlck5hbWUpO1xuICAgICAgcGFyYW1ldGVyLmdyYW50UmVhZCh0aGlzLnJvbGUpO1xuICAgIH0pO1xuXG4gICAgaWYgKHByb3BzLmFzc3VtZVJvbGUpIHtcbiAgICAgIHRoaXMucm9sZS5hZGRUb1ByaW5jaXBhbFBvbGljeShuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgIGFjdGlvbnM6IFsnc3RzOkFzc3VtZVJvbGUnXSxcbiAgICAgICAgcmVzb3VyY2VzOiBbcHJvcHMuYXNzdW1lUm9sZS5yb2xlQXJuXSxcbiAgICAgIH0pKTtcbiAgICB9XG5cbiAgICB0aGlzLmFsYXJtID0gbmV3IGNsb3Vkd2F0Y2guQWxhcm0odGhpcywgJ0FsYXJtJywge1xuICAgICAgbWV0cmljOiB0aGlzLnByb2plY3QubWV0cmljRmFpbGVkQnVpbGRzKHsgcGVyaW9kOiBwcm9wcy5hbGFybVBlcmlvZCB8fCBEdXJhdGlvbi5zZWNvbmRzKDMwMCkgfSksXG4gICAgICB0aHJlc2hvbGQ6IHByb3BzLmFsYXJtVGhyZXNob2xkIHx8IDEsXG4gICAgICBjb21wYXJpc29uT3BlcmF0b3I6IGNsb3Vkd2F0Y2guQ29tcGFyaXNvbk9wZXJhdG9yLkdSRUFURVJfVEhBTl9PUl9FUVVBTF9UT19USFJFU0hPTEQsXG4gICAgICBldmFsdWF0aW9uUGVyaW9kczogcHJvcHMuYWxhcm1FdmFsdWF0aW9uUGVyaW9kcyB8fCAxLFxuICAgICAgdHJlYXRNaXNzaW5nRGF0YTogY2xvdWR3YXRjaC5UcmVhdE1pc3NpbmdEYXRhLklHTk9SRSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRUb1BpcGVsaW5lKHN0YWdlOiBjcGlwZWxpbmUuSVN0YWdlLCBuYW1lOiBzdHJpbmcsIGlucHV0QXJ0aWZhY3Q6IGNwaXBlbGluZS5BcnRpZmFjdCwgcnVuT3JkZXI/OiBudW1iZXIpOlxuICBjcGlwZWxpbmVfYWN0aW9ucy5Db2RlQnVpbGRBY3Rpb24ge1xuICAgIGNvbnN0IGNvZGVCdWlsZEFjdGlvbiA9IG5ldyBjcGlwZWxpbmVfYWN0aW9ucy5Db2RlQnVpbGRBY3Rpb24oe1xuICAgICAgYWN0aW9uTmFtZTogbmFtZSxcbiAgICAgIHByb2plY3Q6IHRoaXMucHJvamVjdCxcbiAgICAgIHJ1bk9yZGVyLFxuICAgICAgaW5wdXQ6IGlucHV0QXJ0aWZhY3QsXG4gICAgICBvdXRwdXRzOiBbbmV3IGNwaXBlbGluZS5BcnRpZmFjdCh0aGlzLm91dHB1dEFydGlmYWN0TmFtZSldLmNvbmNhdChcbiAgICAgICAgdGhpcy5idWlsZFNwZWMuYWRkaXRpb25hbEFydGlmYWN0TmFtZXMubWFwKGFydGlmYWN0TmFtZSA9PiBuZXcgY3BpcGVsaW5lLkFydGlmYWN0KGFydGlmYWN0TmFtZSkpKSxcbiAgICB9KTtcbiAgICBzdGFnZS5hZGRBY3Rpb24oY29kZUJ1aWxkQWN0aW9uKTtcbiAgICByZXR1cm4gY29kZUJ1aWxkQWN0aW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBjb250cmFjdCBvZiBgZW52aXJvbm1lbnRTZWNyZXRzYCBpcyB0aGF0IHRoZSB2YWx1ZXMgYXJlIGNvbXBsZXRlIFNlY3JldCBBUk5zO1xuICAgKiBob3dldmVyLCB0aGUgQ29kZUJ1aWxkIGNvbnN0cnVjdCBleHBlY3RzIHNlY3JldCBuYW1lcyBhcyB0aGUgaW5wdXRzIGZvciBlbnZpcm9ubWVudCB2YXJpYWJsZXMuXG4gICAqIFRoaXMgbWV0aG9kIGNvbnZlcnRzIHRoZSBlbnZpcm9ubWVudCBzZWNyZXRzIGZyb20gQVJOcyB0byBuYW1lcy5cbiAgICovXG4gIHByaXZhdGUgY29udmVydEVudmlyb25tZW50U2VjcmV0QXJuc1RvU2VjcmV0TmFtZXMoZW52aXJvbm1lbnRTZWNyZXRzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSkge1xuICAgIGlmICghZW52aXJvbm1lbnRTZWNyZXRzKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGNvbnN0IG91dDogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHsgfTtcbiAgICBPYmplY3QuZW50cmllcyhlbnZpcm9ubWVudFNlY3JldHMgPz8ge30pLmZvckVhY2goKFtuYW1lLCBzZWNyZXRBcm5dKSA9PiB7XG4gICAgICBjb25zdCBzZWNyZXQgPSBhd3Nfc2VjcmV0c21hbmFnZXIuU2VjcmV0LmZyb21TZWNyZXRDb21wbGV0ZUFybih0aGlzLCBgJHtuYW1lfVNlY3JldEZyb21Bcm5gLCBzZWNyZXRBcm4pO1xuICAgICAgb3V0W25hbWVdID0gc2VjcmV0LnNlY3JldE5hbWU7XG4gICAgfSk7XG4gICAgcmV0dXJuIG91dDtcbiAgfVxufVxuXG4vKipcbiAqIFBsYXRmb3JtIGFyY2hldHlwZVxuICovXG5leHBvcnQgZW51bSBQbGF0Zm9ybVR5cGUge1xuICBMaW51eCA9ICdMaW51eCcsXG4gIFdpbmRvd3MgPSAnV2luZG93cydcbn1cblxuLyoqXG4gKiBUaGUgcGxhdGZvcm0gdHlwZSB0byBydW4gdGhlIHNjcmlwdHMgb25cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFNoZWxsUGxhdGZvcm0ge1xuICAvKipcbiAgICogUmV0dXJuIGEgZGVmYXVsdCBVYnVudHUgTGludXggcGxhdGZvcm1cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZ2V0IExpbnV4VWJ1bnR1KCk6IFNoZWxsUGxhdGZvcm0ge1xuICAgIC8vIENhbm5vdCBiZSBzdGF0aWMgbWVtYmVyIGJlY2F1c2Ugb2YgaW5pdGlhbGl6YXRpb24gb3JkZXJcbiAgICByZXR1cm4gbmV3IExpbnV4UGxhdGZvcm0oY2J1aWxkLkxpbnV4QnVpbGRJbWFnZS5TVEFOREFSRF80XzApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhIGRlZmF1bHQgV2luZG93cyBwbGF0Zm9ybVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBnZXQgV2luZG93cygpOiBTaGVsbFBsYXRmb3JtIHtcbiAgICAvLyBDYW5ub3QgYmUgc3RhdGljIG1lbWJlciBiZWNhdXNlIG9mIGluaXRpYWxpemF0aW9uIG9yZGVyXG4gICAgcmV0dXJuIG5ldyBXaW5kb3dzUGxhdGZvcm0oY2J1aWxkLldpbmRvd3NCdWlsZEltYWdlLldJTl9TRVJWRVJfQ09SRV8yMDE5X0JBU0UpO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHVibGljIHJlYWRvbmx5IGJ1aWxkSW1hZ2U6IGNidWlsZC5JQnVpbGRJbWFnZSkge1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHJuIGNvbW1hbmRzIHRvIHByZXBhcmUgdGhlIGhvc3QgZm9yIHRoZSBzaGVsbGFibGUuXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgaW5zdGFsbENvbW1hbmRzKCk6IHN0cmluZ1tdIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBSZXR1cm4gY29tbWFuZHMgdG8gZG93bmxvYWQgdGhlIHNjcmlwdCBidW5kbGVcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBwcmVidWlsZENvbW1hbmRzKGFzc3VtZVJvbGU/OiBBc3N1bWVSb2xlLCB1c2VSZWdpb25hbFN0c0VuZHBvaW50cz86IGJvb2xlYW4pOiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogUmV0dXJuIGNvbW1hbmRzIHRvIHN0YXJ0IHRoZSBlbnRyeXBvaW50IHNjcmlwdFxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGJ1aWxkQ29tbWFuZHMoZW50cnlwb2ludDogc3RyaW5nKTogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFR5cGUgb2YgcGxhdGZvcm1cbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBnZXQgcGxhdGZvcm1UeXBlKCk6IFBsYXRmb3JtVHlwZTtcbn1cblxuLyoqXG4gKiBBIExpbnV4IFBsYXRmb3JtXG4gKi9cbmV4cG9ydCBjbGFzcyBMaW51eFBsYXRmb3JtIGV4dGVuZHMgU2hlbGxQbGF0Zm9ybSB7XG4gIHB1YmxpYyByZWFkb25seSBwbGF0Zm9ybVR5cGUgPSBQbGF0Zm9ybVR5cGUuTGludXg7XG5cbiAgcHVibGljIGluc3RhbGxDb21tYW5kcygpOiBzdHJpbmdbXSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHB1YmxpYyBwcmVidWlsZENvbW1hbmRzKGFzc3VtZVJvbGU/OiBBc3N1bWVSb2xlLCB1c2VSZWdpb25hbFN0c0VuZHBvaW50cz86IGJvb2xlYW4pOiBzdHJpbmdbXSB7XG4gICAgY29uc3QgbGluZXMgPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xuICAgIC8vIEJldHRlciBlY2hvIHRoZSBsb2NhdGlvbiBoZXJlOyBpZiB0aGlzIGZhaWxzLCB0aGUgZXJyb3IgbWVzc2FnZSBvbmx5IGNvbnRhaW5zXG4gICAgLy8gdGhlIHVuZXhwYW5kZWQgdmFyaWFibGVzIGJ5IGRlZmF1bHQuIEl0IG1pZ2h0IGZhaWwgaWYgeW91J3JlIHJ1bm5pbmcgYW4gb2xkXG4gICAgLy8gZGVmaW5pdGlvbiBvZiB0aGUgQ29kZUJ1aWxkIHByb2plY3QtLXRoZSBwZXJtaXNzaW9ucyB3aWxsIGhhdmUgYmVlbiBjaGFuZ2VkXG4gICAgLy8gdG8gb25seSBhbGxvdyBkb3dubG9hZGluZyB0aGUgdmVyeSBsYXRlc3QgdmVyc2lvbi5cbiAgICBsaW5lcy5wdXNoKGBlY2hvIFwiRG93bmxvYWRpbmcgc2NyaXB0cyBmcm9tIHMzOi8vXFwkeyR7UzNfQlVDS0VUX0VOVn19L1xcJHske1MzX0tFWV9FTlZ9fVwiYCk7XG4gICAgbGluZXMucHVzaChgYXdzIHMzIGNwIHMzOi8vXFwkeyR7UzNfQlVDS0VUX0VOVn19L1xcJHske1MzX0tFWV9FTlZ9fSAvdG1wYCk7XG4gICAgbGluZXMucHVzaCgnbWtkaXIgLXAgL3RtcC9zY3JpcHRkaXInKTtcbiAgICBsaW5lcy5wdXNoKGB1bnppcCAvdG1wLyQoYmFzZW5hbWUgXFwkJHtTM19LRVlfRU5WfSkgLWQgL3RtcC9zY3JpcHRkaXJgKTtcblxuICAgIGlmIChhc3N1bWVSb2xlKSB7XG5cbiAgICAgIGlmIChhc3N1bWVSb2xlLnJlZnJlc2gpIHtcblxuICAgICAgICBjb25zdCBhd3NIb21lID0gJ34vLmF3cyc7XG5cbiAgICAgICAgY29uc3QgcHJvZmlsZU5hbWUgPSBhc3N1bWVSb2xlLnByb2ZpbGVOYW1lID8/ICdsb25nLXJ1bm5pbmctcHJvZmlsZSc7XG5cbiAgICAgICAgbGluZXMucHVzaChgbWtkaXIgLXAgJHthd3NIb21lfWApO1xuICAgICAgICBsaW5lcy5wdXNoKGB0b3VjaCAke2F3c0hvbWV9L2NyZWRlbnRpYWxzYCk7XG4gICAgICAgIGxpbmVzLnB1c2goYGNvbmZpZz0ke2F3c0hvbWV9L2NvbmZpZ2ApO1xuICAgICAgICBsaW5lcy5wdXNoKGBlY2hvIFtwcm9maWxlICR7cHJvZmlsZU5hbWV9XT4+ICRcXHtjb25maWdcXH1gKTtcbiAgICAgICAgbGluZXMucHVzaCgnZWNobyBjcmVkZW50aWFsX3NvdXJjZSA9IEVjc0NvbnRhaW5lciA+PiAkXFx7Y29uZmlnXFx9Jyk7XG4gICAgICAgIGxpbmVzLnB1c2goYGVjaG8gcm9sZV9zZXNzaW9uX25hbWUgPSAke2Fzc3VtZVJvbGUuc2Vzc2lvbk5hbWV9ID4+ICRcXHtjb25maWdcXH1gKTtcbiAgICAgICAgbGluZXMucHVzaChgZWNobyByb2xlX2FybiA9ICR7YXNzdW1lUm9sZS5yb2xlQXJufSA+PiAkY29uZmlnYCk7XG5cbiAgICAgICAgaWYgKGFzc3VtZVJvbGUuZXh0ZXJuYWxJZCkge1xuICAgICAgICAgIGxpbmVzLnB1c2goYGVjaG8gZXh0ZXJuYWxfaWQgPSAke2Fzc3VtZVJvbGUuZXh0ZXJuYWxJZH0gPj4gJGNvbmZpZ2ApO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gbGV0IHRoZSBhcHBsaWNhdGlvbiBjb2RlIGtub3cgd2hpY2ggcm9sZSBpcyBiZWluZyB1c2VkLlxuICAgICAgICBsaW5lcy5wdXNoKGBleHBvcnQgQVdTX1BST0ZJTEU9JHtwcm9maWxlTmFtZX1gKTtcblxuICAgICAgICAvLyBmb3JjZSB0aGUgQVdTIFNESyBmb3IgSmF2YVNjcmlwdCB0byBhY3R1YWxseSBsb2FkIHRoZSBjb25maWcgZmlsZSAoZG8gYXV0b21hdGljYWxseSBzbyB1c2VycyBkb24ndCBmb3JnZXQpXG4gICAgICAgIGxpbmVzLnB1c2goJ2V4cG9ydCBBV1NfU0RLX0xPQURfQ09ORklHPTEnKTtcblxuICAgICAgfSBlbHNlIHtcblxuICAgICAgICBjb25zdCBleHRlcm5hbElkID0gYXNzdW1lUm9sZS5leHRlcm5hbElkID8gYC0tZXh0ZXJuYWwtaWQgXCIke2Fzc3VtZVJvbGUuZXh0ZXJuYWxJZH1cImAgOiAnJztcbiAgICAgICAgY29uc3QgU3RzRW5kcG9pbnRzID0gdXNlUmVnaW9uYWxTdHNFbmRwb2ludHMgPyAncmVnaW9uYWwnIDogJ2xlZ2FjeSc7XG5cbiAgICAgICAgbGluZXMucHVzaCgnY3JlZHM9JChta3RlbXAgLWQpL2NyZWRzLmpzb24nKTtcbiAgICAgICAgbGluZXMucHVzaChgQVdTX1NUU19SRUdJT05BTF9FTkRQT0lOVFM9JHtTdHNFbmRwb2ludHN9IGF3cyBzdHMgYXNzdW1lLXJvbGUgLS1yb2xlLWFybiBcIiR7YXNzdW1lUm9sZS5yb2xlQXJufVwiIC0tcm9sZS1zZXNzaW9uLW5hbWUgXCIke2Fzc3VtZVJvbGUuc2Vzc2lvbk5hbWV9XCIgJHtleHRlcm5hbElkfSA+ICRjcmVkc2ApO1xuICAgICAgICBsaW5lcy5wdXNoKCdleHBvcnQgQVdTX0FDQ0VTU19LRVlfSUQ9XCIkKGNhdCAke2NyZWRzfSB8IGdyZXAgXCJBY2Nlc3NLZXlJZFwiIHwgY3V0IC1kXFwnXCJcXCcgLWYgNClcIicpO1xuICAgICAgICBsaW5lcy5wdXNoKCdleHBvcnQgQVdTX1NFQ1JFVF9BQ0NFU1NfS0VZPVwiJChjYXQgJHtjcmVkc30gfCBncmVwIFwiU2VjcmV0QWNjZXNzS2V5XCIgfCBjdXQgLWRcXCdcIlxcJyAtZiA0KVwiJyk7XG4gICAgICAgIGxpbmVzLnB1c2goJ2V4cG9ydCBBV1NfU0VTU0lPTl9UT0tFTj1cIiQoY2F0ICR7Y3JlZHN9IHwgZ3JlcCBcIlNlc3Npb25Ub2tlblwiIHwgY3V0IC1kXFwnXCJcXCcgLWYgNClcIicpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBsaW5lcztcbiAgfVxuXG4gIHB1YmxpYyBidWlsZENvbW1hbmRzKGVudHJ5cG9pbnQ6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gW1xuICAgICAgJ2V4cG9ydCBTQ1JJUFRfRElSPS90bXAvc2NyaXB0ZGlyJyxcbiAgICAgIGBlY2hvIFwiUnVubmluZyAke2VudHJ5cG9pbnR9XCJgLFxuICAgICAgYC9iaW4vYmFzaCAvdG1wL3NjcmlwdGRpci8ke2VudHJ5cG9pbnR9YCxcbiAgICBdO1xuICB9XG59XG5cbi8qKlxuICogQSBXaW5kb3dzIFBsYXRmb3JtXG4gKi9cbmV4cG9ydCBjbGFzcyBXaW5kb3dzUGxhdGZvcm0gZXh0ZW5kcyBTaGVsbFBsYXRmb3JtIHtcbiAgcHVibGljIHJlYWRvbmx5IHBsYXRmb3JtVHlwZSA9IFBsYXRmb3JtVHlwZS5XaW5kb3dzO1xuXG4gIHB1YmxpYyBpbnN0YWxsQ29tbWFuZHMoKTogc3RyaW5nW10gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiBbXG4gICAgICAvLyBVcGRhdGUgdGhlIGltYWdlJ3Mgbm9kZWpzIHRvIHRoZSBsYXRlc3QgTFRTIHJlbGVhc2UuXG4gICAgICAnSW1wb3J0LU1vZHVsZSBcIkM6XFxcXFByb2dyYW1EYXRhXFxcXGNob2NvbGF0ZXlcXFxcaGVscGVyc1xcXFxjaG9jb2xhdGV5UHJvZmlsZS5wc20xXCInLFxuICAgICAgJ0M6XFxcXFByb2dyYW1EYXRhXFxcXGNob2NvbGF0ZXlcXFxcYmluXFxcXGNob2NvLmV4ZSB1cGdyYWRlIG5vZGVqcy1sdHMgLXknLFxuICAgIF07XG4gIH1cblxuICBwdWJsaWMgcHJlYnVpbGRDb21tYW5kcyhhc3N1bWVSb2xlPzogQXNzdW1lUm9sZSwgX3VzZVJlZ2lvbmFsU3RzRW5kcG9pbnRzPzogYm9vbGVhbik6IHN0cmluZ1tdIHtcbiAgICBpZiAoYXNzdW1lUm9sZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdhc3N1bWVSb2xlIGlzIG5vdCBzdXBwb3J0ZWQgb24gV2luZG93czogaHR0cHM6Ly9naXRodWIuY29tL2Nka2xhYnMvYXdzLWRlbGl2bGliL2lzc3Vlcy81NycpO1xuICAgIH1cblxuICAgIHJldHVybiBbXG4gICAgICAvLyBXb3VsZCBsb3ZlIHRvIGRvIGRvd25sb2FkaW5nIGhlcmUgYW5kIGV4ZWN1dGluZyBpbiB0aGUgbmV4dCBzdGVwLFxuICAgICAgLy8gYnV0IEkgZG9uJ3Qga25vdyBob3cgdG8gcHJvcGFnYXRlIHRoZSB2YWx1ZSBvZiAkVEVNUERJUi5cbiAgICAgIC8vXG4gICAgICAvLyBQdW50aW5nIGZvciBzb21lb25lIHdobyBrbm93cyBQb3dlclNoZWxsIHdlbGwgZW5vdWdoLlxuICAgIF07XG4gIH1cblxuICBwdWJsaWMgYnVpbGRDb21tYW5kcyhlbnRyeXBvaW50OiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIFtcbiAgICAgICdTZXQtVmFyaWFibGUgLU5hbWUgVEVNUERJUiAtVmFsdWUgKE5ldy1UZW1wb3JhcnlGaWxlKS5EaXJlY3RvcnlOYW1lJyxcbiAgICAgIGBhd3MgczMgY3AgczM6Ly8kZW52OiR7UzNfQlVDS0VUX0VOVn0vJGVudjoke1MzX0tFWV9FTlZ9ICRURU1QRElSXFxcXHNjcmlwdHMuemlwYCxcbiAgICAgICdOZXctSXRlbSAtSXRlbVR5cGUgRGlyZWN0b3J5IC1QYXRoICRURU1QRElSXFxcXHNjcmlwdGRpcicsXG4gICAgICAnRXhwYW5kLUFyY2hpdmUgLVBhdGggJFRFTVBESVIvc2NyaXB0cy56aXAgLURlc3RpbmF0aW9uUGF0aCAkVEVNUERJUlxcXFxzY3JpcHRkaXInLFxuICAgICAgJyRlbnY6U0NSSVBUX0RJUiA9IFwiJFRFTVBESVJcXFxcc2NyaXB0ZGlyXCInLFxuICAgICAgYCYgJFRFTVBESVJcXFxcc2NyaXB0ZGlyXFxcXCR7ZW50cnlwb2ludH1gLFxuICAgIF07XG4gIH1cbn1cbiJdfQ==
package/package.json CHANGED
@@ -91,7 +91,7 @@
91
91
  },
92
92
  "main": "lib/index.js",
93
93
  "license": "Apache-2.0",
94
- "version": "14.1.91",
94
+ "version": "14.1.92",
95
95
  "jest": {
96
96
  "testMatch": [
97
97
  "**/lib/__tests__/**/?(*.)+(spec|test).js?(x)"