ctt-puro 0.48.1 → 0.48.3

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.
@@ -181,7 +181,7 @@ export class MapperService {
181
181
  componentMapped.props = this.mapThanks(component.props);
182
182
  break;
183
183
  case 'contactform':
184
- componentMapped.props = this.mapContactForm(component.props, addons?.consultType);
184
+ componentMapped.props = this.mapContactForm(component.props);
185
185
  break;
186
186
  case 'offersslider':
187
187
  componentMapped.props = this.mapOffersSlider(component.props);
@@ -997,7 +997,7 @@ export class MapperService {
997
997
  filter: Number(item?.id),
998
998
  filterParent: item.subtitle,
999
999
  img: this.getImageResponsive(item?.multimedia?.[0]),
1000
- buttons: Utils.mapButtons(this.siteId(), item?.buttons.filter((btn) => !!btn?.linkValue)),
1000
+ buttons: Utils.mapButtons(this.siteId(), item?.buttons?.filter((btn) => !!btn?.linkValue)),
1001
1001
  links: undefined,
1002
1002
  };
1003
1003
  });
@@ -1289,7 +1289,7 @@ export class MapperService {
1289
1289
  }
1290
1290
  return {
1291
1291
  title: texts?.title,
1292
- button: Utils.mapButtons(this.siteId(), buttons.filter((btn) => !!btn?.linkValue))[0],
1292
+ button: Utils.mapButtons(this.siteId(), buttons?.filter((btn) => !!btn?.linkValue))[0],
1293
1293
  images: this.getArrayImageResponsive(multimedia?.imagenes || []),
1294
1294
  items: items,
1295
1295
  view: this.getView(view),
@@ -1501,7 +1501,7 @@ export class MapperService {
1501
1501
  },
1502
1502
  };
1503
1503
  }
1504
- mapContactForm(props, ndPropsConsult) {
1504
+ mapContactForm(props) {
1505
1505
  const prefixValues = Object.values(props?.prefixes || {});
1506
1506
  return {
1507
1507
  title: typeof props?.texts?.title === 'string'
@@ -1536,7 +1536,7 @@ export class MapperService {
1536
1536
  },
1537
1537
  ndDropdown: {
1538
1538
  title: props?.texts?.consulttype,
1539
- options: ndPropsConsult?.map((prop) => ({
1539
+ options: props?.ConsultyTpe?.map((prop) => ({
1540
1540
  code: prop?.consultTypeId,
1541
1541
  name: prop?.name,
1542
1542
  })),
@@ -1849,7 +1849,7 @@ export class MapperService {
1849
1849
  },
1850
1850
  resident: {
1851
1851
  placeholder: props?.texts?.residentPlaceholder,
1852
- options: props?.countries
1852
+ options: props?.Resident
1853
1853
  ?.sort((a, b) => a.name.localeCompare(b.name))
1854
1854
  ?.map((country) => ({
1855
1855
  code: country?.id,
@@ -2705,4 +2705,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
2705
2705
  providedIn: 'root',
2706
2706
  }]
2707
2707
  }] });
2708
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwcGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wdXJvL3NyYy9saWIvc2VydmljZXMvbWFwcGVyL21hcHBlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0UsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBNkc1QyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDMUMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDckQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sd0JBQXdCLENBQUM7O0FBTW5FLE1BQU0sT0FBTyxhQUFhO0lBSDFCO1FBSXFCLFlBQU8sR0FBRyxNQUFNLENBQUMseUJBQXlCLENBQUMsQ0FBQztRQUM1QyxnQkFBVyxHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBSzFELGtCQUFhLEdBQUcsTUFBTSxDQUFxQyxTQUFTLENBQUMsQ0FBQztRQUV0RSxXQUFNLEdBQW1CLFFBQVEsQ0FDN0IsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxNQUFNLENBQzlDLENBQUM7S0ErOUdMO0lBditHRyxJQUFJLHdCQUF3QjtRQUN4QixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztJQUNyRCxDQUFDO0lBUU8sa0JBQWtCLENBQUMsR0FBVztRQUNsQyxNQUFNLEdBQUcsR0FBRyxJQUFJLGNBQWMsRUFBRSxDQUFDO1FBQ2pDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM3QixJQUFJO1lBQ0EsR0FBRyxDQUFDLElB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LFFBQVEsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVE7U0FDcEIsQ0FBQztJQUNyQixDQUFDOytHQXorR1EsYUFBYTttSEFBYixhQUFhLGNBRlYsTUFBTTs7NEZBRVQsYUFBYTtrQkFIekIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb21wdXRlZCwgaW5qZWN0LCBJbmplY3RhYmxlLCBTaWduYWwsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHtcbiAgICBQdXJvNDA0SSxcbiAgICBQdXJvQWR2YW50YWdlc0ksXG4gICAgUHVyb0FkdmFudGFnZXNJdGVtLFxuICAgIFB1cm9BZHZhbnRhZ2VzU21hbGxJLFxuICAgIFB1cm9BZHZhbnRhZ2VzU21hbGxJdGVtLFxuICAgIFB1cm9CYW5uZXI0Q29sSSxcbiAgICBQdXJvQmFubmVySW5mbzJJLFxuICAgIFB1cm9CYW5uZXJJbmZvSSxcbiAgICBQdXJvQmFubmVyU2xpZGVySSxcbiAgICBQdXJvQnJlYWRjcnVtYkksXG4gICAgUHVyb0NhcmVlcnNGb3JtSSxcbiAgICBQdXJvQ2FydGFJLFxuICAgIFB1cm9Db250YWN0Rm9ybUksXG4gICAgUHVyb0R1YWxMaXN0SSxcbiAgICBQdXJvRW5naW5lSSxcbiAgICBQdXJvRW5naW5lTW9kYWxJLFxuICAgIFB1cm9FdmVudHNGb3JtSSxcbiAgICBQdXJvRm9vdGVyQmVhY2hzSSxcbiAgICBQdXJvRm9vdGVyQmVhY2hzSXRlbSxcbiAgICBQdXJvRm9vdGVySG90ZWxzSSxcbiAgICBQdXJvRm9vdGVySG90ZWxzSXRlbSxcbiAgICBQdXJvRm9vdGVySW5mb0ksXG4gICAgUHVyb0Zvb3RlckluZm9Tb2NpYWxNZWRpYUluZm8sXG4gICAgUHVyb0Zvb3RlckxpbmtzSSxcbiAgICBQdXJvR2FsbGVyeUZpbHRlcixcbiAgICBQdXJvR2FsbGVyeUksXG4gICAgUHVyb0dhbGxlcnlJdGVtLFxuICAgIFB1cm9HcmlkM0NvbEZpbHRlckksXG4gICAgUHVyb0dyaWQzQ29sRmlsdGVySXRlbSxcbiAgICBQdXJvR3JpZDNDb2xQbHVzRmlsdGVySSxcbiAgICBQdXJvR3JpZDNDb2xQbHVzRmlsdGVySXRlbSxcbiAgICBQdXJvR3JpZDNjb2xTbGlkZXJJLFxuICAgIFB1cm9HcmlkM2NvbFNsaWRlckl0ZW0sXG4gICAgUHVyb0dyaWQ0aXRlbXNJLFxuICAgIFB1cm9HcmlkNGl0ZW1zSXRlbSxcbiAgICBQdXJvR3JpZDVpdGVtc0ksXG4gICAgUHVyb0dyaWQ1aXRlbXNJdGVtLFxuICAgIFB1cm9HcmlkNml0ZW1zSSxcbiAgICBQdXJvSGVhZGVySSxcbiAgICBQdXJvSGVhZEludHJvSSxcbiAgICBQdXJvSW1nSW5mb0ksXG4gICAgUHVyb0luZm9CYW5uZXJJLFxuICAgIFB1cm9JbmZvQmFubmVySXRlbSxcbiAgICBQdXJvSW5mb0JpZ0ksXG4gICAgUHVyb0luZm9EZXRhaWxzSSxcbiAgICBQdXJvSW5mb0dhbGxlcnlJLFxuICAgIFB1cm9JbmZvSW50cm9JLFxuICAgIFB1cm9JbmZvTGlzdEksXG4gICAgUHVyb0luZm9TZXJ2aWNlc0ksXG4gICAgUHVyb0luZm9TZXJ2aWNlc0l0ZW0sXG4gICAgUHVyb0luZm9TbGlkZXJJLFxuICAgIFB1cm9JbmZvU2xpZGVySXRlbSxcbiAgICBQdXJvSW5mb1RhYmxlSSxcbiAgICBQdXJvSW5mb1ZpZGVvSSxcbiAgICBQdXJvTGFuZ3VhZ2VzTW9kYWxJLFxuICAgIFB1cm9MYW5ndWFnZXNNb2RhbEl0ZW0sXG4gICAgUHVyb0xpc3RBd2FyZHNJLFxuICAgIFB1cm9MaXN0QXdhcmRzSXRlbUksXG4gICAgUHVyb0xpc3RHZW5lcmFsSSxcbiAgICBQdXJvTGlzdEdlbmVyYWxJdGVtLFxuICAgIFB1cm9NYXBMaXN0SSxcbiAgICBQdXJvTWFwTGlzdEl0ZW0sXG4gICAgUHVyb01lbnVJLFxuICAgIFB1cm9Nb2RhbEluZm9JLFxuICAgIFB1cm9Nb2RhbE9wdGlvbnNJLFxuICAgIFB1cm9NdXNpY1NsaWRlckksXG4gICAgUHVyb05ld3NsZXR0ZXJJLFxuICAgIFB1cm9PZmZlcixcbiAgICBQdXJvT2ZmZXJCYW5uZXJJLFxuICAgIFB1cm9QaG90b1NsaWRlckksXG4gICAgUHVyb1Byb2plY3RzRm9ybUksXG4gICAgUHVyb0ZhcXNJLFxuICAgIFB1cm9GYXFzSW1nSSxcbiAgICBQdXJvU2NoZWR1bGVJLFxuICAgIFB1cm9TY2hlZHVsZUl0ZW0sXG4gICAgUHVyb1NsaWRlcjFjb2xJLFxuICAgIFB1cm9TbGlkZXIxY29sSXRlbSxcbiAgICBQdXJvU2xpZGVyMmNvbEksXG4gICAgUHVyb1NsaWRlcjNDYXJkSSxcbiAgICBQdXJvU2xpZGVyM0NhcmRJdGVtSSxcbiAgICBQdXJvU2xpZGVyM2NvbEksXG4gICAgUHVyb1NsaWRlcjNDb2xJdGVtLFxuICAgIFB1cm9TbGlkZXIzQ29sUm91bmRJLFxuICAgIFB1cm9TbGlkZXIzQ29sUm91bmRJdGVtLFxuICAgIFB1cm9TbGlkZXI0SXRlbXNJLFxuICAgIFB1cm9UaGFua3NJLFxuICAgIFB1cm9UaW1lbGluZUksXG4gICAgUHVyb1RvcFNsaWRlckksXG4gICAgUHVyb1dlYm1hcEksXG4gICAgUHVyb1ppZ1phZzJjb2xJLFxuICAgIFB1cm9JbmZvRGV0YWlsczNDb2xJLFxuICAgIFB1cm9JbmZvRGV0YWlsSXRlbUksXG4gICAgUHVyb0luZm9EZXRhaWxzMkNvbEksXG4gICAgUHVyb0Jsb2dMaXN0SSxcbiAgICBQdXJvQmxvZ0RldGFpbHNJLFxuICAgIFB1cm9Jbm5lckNvbnRlbnRJLFxuICAgIFB1cm9TbGlkZXIyY29sSXRlbSxcbiAgICBQdXJvU3VibWVudU1vYmlsZUl0ZW1JLFxuICAgIFB1cm9HcmlkNml0ZW1zSXRlbSxcbiAgICBQdXJvTGlzdFJlc3RhdXJhbnRzSSxcbiAgICBQdXJvTGlzdFJlc3RhdXJhbnRJdGVtSSxcbiAgICBQdXJvSWZyYW1lSSxcbn0gZnJvbSAnLi4vLi4vY29tcG9uZW50cyc7XG5pbXBvcnQgeyBQdXJvSW5mbzJDb2xJIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9wdXJvLWluZm8yY29sL3B1cm8taW5mbzJjb2wuaW50ZXJmYWNlJztcbmltcG9ydCB7IEJvZHlDb21wb25lbnQsIFB1cm9CdXR0b25JLCBQdXJvSW1hZ2VJIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBEcm9wZG93bk9wdGlvbiB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvcHVyby1kcm9wZG93bi5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgVXRpbHMgfSBmcm9tICcuLi8uLi91dGlscy91dGlscyc7XG5pbXBvcnQgeyBTY3JlZW5TaXplclNlcnZpY2UgfSBmcm9tICcuLi9zY3JlZW4tc2l6ZXInO1xuaW1wb3J0IHsgU0lURV9DT05GSUdfU0VSVklDRV9UT0tFTiB9IGZyb20gJy4vbWFwcGVyLnNlcnZpY2UudG9rZW4nO1xuaW1wb3J0IHsgUHVyb1ZpZXdzVHlwZSB9IGZyb20gJy4uLy4uL0VudW0vdmlld3MuZW51bSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIE1hcHBlclNlcnZpY2Uge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgc2l0ZVN2YyA9IGluamVjdChTSVRFX0NPTkZJR19TRVJWSUNFX1RPS0VOKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHNjcmVlblNpemVyID0gaW5qZWN0KFNjcmVlblNpemVyU2VydmljZSk7XG4gICAgZ2V0IGlzTWF4U21hbGxEZXNrdG9wSW5zdGFudCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2NyZWVuU2l6ZXIubWF4U21hbGxEZXNrdG9wSW5zdGFudCgpO1xuICAgIH1cblxuICAgIGhlYWRlckJ1dHRvbnMgPSBzaWduYWw8UmVjb3JkPHN0cmluZywgc3RyaW5nPiB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuICAgIHNpdGVJZDogU2lnbmFsPG51bWJlcj4gPSBjb21wdXRlZChcbiAgICAgICAgKCkgPT4gdGhpcy5zaXRlU3ZjLndlYkNvbmZpZ0luc3RhbnQ/LnNpdGVJRFxuICAgICk7XG5cbiAgICBwcml2YXRlIHRodW1ibmFpbEF2YWlsYWJsZSh1cmw6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcbiAgICAgICAgeGhyLm9wZW4oJ0hFQUQnLCB1cmwsIGZhbHNlKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHhoci5zZW5kKCk7XG4gICAgICAgICAgICByZXR1cm4geGhyLnN0YXR1cyA+PSAyMDAgJiYgeGhyLnN0YXR1cyA8IDQwMDtcbiAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgIGltYWdlOiBJbWFnZVJlc3BvbnNlIHwgdW5kZWZpbmVkXG4gICAgKTogUHVyb0ltYWdlSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmICghaW1hZ2UpIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgICAgICAgbGV0IHNlbGVjdGVkSW1hZ2UgPSAnJztcblxuICAgICAgICBpZiAodGhpcy5zY3JlZW5TaXplci5pc01vYmlsZUluc3RhbnQoKSkge1xuICAgICAgICAgICAgc2VsZWN0ZWRJbWFnZSA9IGltYWdlPy50aHVtYm5haWxzPy5bMzc1XT8ud2VicDtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNjcmVlblNpemVyLmlzU21hbGxUYWJsZXRJbnN0YW50KCkpIHtcbiAgICAgICAgICAgIHNlbGVjdGVkSW1hZ2UgPSBpbWFnZT8udGh1bWJuYWlscz8uWzU0MF0/LndlYnA7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5zY3JlZW5TaXplci5pc01lZGl1bVRhYmxldEluc3RhbnQoKSkge1xuICAgICAgICAgICAgc2VsZWN0ZWRJbWFnZSA9IGltYWdlPy50aHVtYm5haWxzPy5bNzY4XT8ud2VicDtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNjcmVlblNpemVyLmlzRnVsbFRhYmxldEluc3RhbnQoKSkge1xuICAgICAgICAgICAgc2VsZWN0ZWRJbWFnZSA9IGltYWdlPy50aHVtYm5haWxzPy5bMTAyNF0/LndlYnA7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5zY3JlZW5TaXplci5taW5GdWxsRGVza3RvcCgpKSB7XG4gICAgICAgICAgICBzZWxlY3RlZEltYWdlID0gaW1hZ2U/LnBhdGg/LndlYnA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzZWxlY3RlZEltYWdlID0gaW1hZ2U/LnRodW1ibmFpbHM/LlsxMjgwXT8ud2VicDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGNkbiA9IHRoaXMuc2l0ZVN2Yy5jZG5JbWFnZXNJbnN0YW50O1xuICAgICAgICBjb25zdCB0aHVtYlVybCA9IGNkbiArIHNlbGVjdGVkSW1hZ2U7XG4gICAgICAgIGNvbnN0IG9yaWdpbmFsVXJsID0gY2RuICsgaW1hZ2UucGF0aC53ZWJwO1xuXG4gICAgICAgIGNvbnN0IGZpbmFsU3JjID0gdGhpcy50aHVtYm5haWxBdmFpbGFibGUodGh1bWJVcmwpXG4gICAgICAgICAgICA/IHRodW1iVXJsXG4gICAgICAgICAgICA6IG9yaWdpbmFsVXJsO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzcmM6IGZpbmFsU3JjLFxuICAgICAgICAgICAgYWx0OiBpbWFnZT8uYWx0LFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGdldEFycmF5SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICBpbWFnZXM6IEltYWdlUmVzcG9uc2VbXSB8IHVuZGVmaW5lZFxuICAgICk6IFB1cm9JbWFnZUlbXSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiBpbWFnZXM/LnNvbWUoKGltZykgPT4gaW1nICE9PSB1bmRlZmluZWQgJiYgaW1nICE9PSBudWxsKVxuICAgICAgICAgICAgPyBpbWFnZXM/Lm1hcCgoaW1nKSA9PiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpbWcpISlcbiAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGdldFZpZXcodmlldzogUHVyb1ZpZXdzVHlwZSB8IHVuZGVmaW5lZCk6ICdsZWZ0JyB8ICdyaWdodCcge1xuICAgICAgICByZXR1cm4gdmlldyA9PT0gJ3JpZ2h0JyA/ICdyaWdodCcgOiAnbGVmdCc7XG4gICAgfVxuXG4gICAgc2FuaXRpemUobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIG5hbWVcbiAgICAgICAgICAgIC5ub3JtYWxpemUoJ05GRCcpXG4gICAgICAgICAgICAucmVwbGFjZSgvW1xcdTAzMDAtXFx1MDM2Zl0vZywgJycpIC8vIHF1aXRhciB0aWxkZXNcbiAgICAgICAgICAgIC5yZXBsYWNlKC9bXmEtekEtWjAtOSBdL2csICcgJykgLy8gcXVpdGFyIHPDrW1ib2xvcyByYXJvc1xuICAgICAgICAgICAgLnRyaW0oKVxuICAgICAgICAgICAgLnNwbGl0KCcgJylcbiAgICAgICAgICAgIC5tYXAoKHBhcnQsIGkpID0+XG4gICAgICAgICAgICAgICAgaSA9PT0gMFxuICAgICAgICAgICAgICAgICAgICA/IHBhcnQudG9Mb3dlckNhc2UoKVxuICAgICAgICAgICAgICAgICAgICA6IHBhcnQuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBwYXJ0LnNsaWNlKDEpLnRvTG93ZXJDYXNlKClcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5qb2luKCcnKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdlbmVyYXRlQWdlc09wdGlvbnMobWF4TGVuZ3RoOiBudW1iZXIsIG1pbkxlbmd0aCA9IDApOiBhbnlbXSB7XG4gICAgICAgIGNvbnN0IG9wdGlvbnM6IGFueVtdID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSBtaW5MZW5ndGg7IGkgPD0gbWF4TGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIG9wdGlvbnMucHVzaCh7IGNvZGU6IGksIG5hbWU6IGkgPCAxMCA/IGAwJHtpfWAgOiBgJHtpfWAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG9wdGlvbnM7XG4gICAgfVxuXG4gICAgbWFwQ29tcG9uZW50czxUPihcbiAgICAgICAgYm9keTogYW55W10sXG4gICAgICAgIGFkZG9ucz86IENvbXBvbmVudHNBZGRvbnNcbiAgICApOiBCb2R5Q29tcG9uZW50PFQ+W10ge1xuICAgICAgICBjb25zdCBib2R5TWFwcGVkOiBCb2R5Q29tcG9uZW50PFQ+W10gPSBib2R5Lm1hcCgoY29tcG9uZW50KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjb21wb25lbnRNYXBwZWQ6IEJvZHlDb21wb25lbnQ8VD4gPSB7XG4gICAgICAgICAgICAgICAgbmFtZTogY29tcG9uZW50Py5uYW1lPy50b0xvd2VyQ2FzZSgpLFxuICAgICAgICAgICAgICAgIG9yZGVyOiBjb21wb25lbnQ/Lm9yZGVyLFxuICAgICAgICAgICAgICAgIHByb3BzOiBjb21wb25lbnQ/LnByb3BzLFxuICAgICAgICAgICAgICAgIHZpZXc6IGNvbXBvbmVudD8udmlldyxcbiAgICAgICAgICAgICAgICBpZGVudGlmaWVyOiBjb21wb25lbnQuaWRlbnRpZmllcixcbiAgICAgICAgICAgIH0gYXMgQm9keUNvbXBvbmVudDxUPjtcblxuICAgICAgICAgICAgaWYgKGNvbXBvbmVudCAmJiBjb21wb25lbnQ/Lm5hbWUgJiYgY29tcG9uZW50Py5wcm9wcykge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoY29tcG9uZW50Lm5hbWU/LnRvTG93ZXJDYXNlKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2dhbGxlcnknOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwR2FsbGVyeShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZ3JpZDNjb2xmaWx0ZXInOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwR3JpZDNjb2xGaWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2dyaWQzY29scGx1c2ZpbHRlcic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBHcmlkM2NvbFBsdXNGaWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm9iaWcnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwSW5mb0JpZyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnc2xpZGVyMWNvbCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBTbGlkZXIxY29sKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdmb290ZXJiZWFjaHMnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwRm9vdGVyQmVhY2hzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdmb290ZXJpbmZvJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEZvb3RlckluZm8oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2Zvb3RlcmhvdGVscyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBGb290ZXJIb3RlbHMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2Zvb3RlcmxpbmtzJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEZvb3RlckxpbmtzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICd3ZWJtYXAnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwV2VibWFwKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICd0b3BzbGlkZXInOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwVG9wU2xpZGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaGVhZGVyQnV0dG9ucygpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnYWR2YW50YWdlc3NtYWxsJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEFkdmFudGFnZXNTbWFsbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mb2xpc3QnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwSW5mb0xpc3QoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3NsaWRlcjNjb2xyb3VuZCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBTbGlkZXIzQ29sUm91bmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm9pbnRybyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBJbmZvSW50cm8oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2ltZ2luZm9yaWdodCc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbWdpbmZvbGVmdCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBJbWdJbmZvKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5uYW1lPy50b0xvd2VyQ2FzZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mb3RhYmxlJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEluZm9UYWJsZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnc2xpZGVyM2NvbCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBTbGlkZXIzY29sKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdzbGlkZXIyY29sJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFNsaWRlcjJjb2woXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2dyaWQ1aXRlbXMnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwR3JpZDVpdGVtcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZ3JpZDZpdGVtcyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBHcmlkNml0ZW1zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvdmlkZW9yaWdodCc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvdmlkZW9sZWZ0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEluZm9WaWRlbyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQubmFtZT8udG9Mb3dlckNhc2UoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2xpc3RvZmZlcnMnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbGlzdG5ld3NyaWdodCc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdsaXN0bmV3c2xlZnQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbGlzdHJvb21zJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcExpc3RHZW5lcmFsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5uYW1lPy50b0xvd2VyQ2FzZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbGlzdHJlc3RhdXJhbnRzJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcExpc3RSZXN0YXVyYW50cyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnNDA0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcDQwNChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAndGhhbmtzJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFRoYW5rcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnY29udGFjdGZvcm0nOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwQ29udGFjdEZvcm0oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkb25zPy5jb25zdWx0VHlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ29mZmVyc3NsaWRlcic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBPZmZlcnNTbGlkZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm9zZXJ2aWNlcyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBJbmZvU2VydmljZXMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnZpZXdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvYmFubmVyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEluZm9CYW5uZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3NjaGVkdWxlJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFNjaGVkdWxlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdhZHZhbnRhZ2VzJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEFkdmFudGFnZXMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2dyaWQ0aXRlbXMnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwR3JpZDRpdGVtcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnemlnemFnMmNvbCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBaaWd6YWcyY29sKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdncmlkM2NvbHNsaWRlcic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBHcmlkM2NvbFNsaWRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mb3NsaWRlcmxlZnQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mb3NsaWRlcnJpZ2h0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEluZm9TbGlkZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50Lm5hbWU/LnRvTG93ZXJDYXNlKCkgPT09XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW5mb3NsaWRlcmxlZnQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAncGhvdG9zbGlkZXJsZWZ0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3Bob3Rvc2xpZGVycmlnaHQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwUGhvdG9TbGlkZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50Lm5hbWU/LnRvTG93ZXJDYXNlKCkgPT09XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGhvdG9zbGlkZXJsZWZ0J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2Jhbm5lcjRjb2wnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwQmFubmVyNENvbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mb2dhbGxlcnknOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwSW5mb0dhbGxlcnkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm8yY29sJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEluZm8yQ29sKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdtYXBsaXN0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcE1hcExpc3QoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ21vZGFsaG90ZWxzJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2xpc3RhZG9iZWFjaCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBNYXBMaXN0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdsYW5ndWFnZXNtb2RhbCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBMYW5ndWFnZXNNb2RhbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnb2ZmZXJiYW5uZXInOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwT2ZmZXJCYW5uZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ21lbnUnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwU3VibWVudShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbGlzdGF3YXJkcyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBMaXN0QXdhcmRzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdzbGlkZXIzY2FyZCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBTbGlkZXIzQ2FyZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbmV3c2xldHRlcic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBOZXdzbGV0dGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdiYW5uZXJpbmZvJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEJhbm5lckluZm8oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2Jhbm5lcmluZm8yJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEJhbm5lckluZm8yKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvZGV0YWlscyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBJbmZvRGV0YWlscyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mb2RldGFpbHMyY29sJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm9kZXRhaWxzM2NvbCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBJbmZvRGV0YWlsc0NvbHMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ211c2ljc2xpZGVyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcE11c2ljU2xpZGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdjYXJ0YSc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBDYXJ0YShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnc2xpZGVyNGl0ZW1zJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFNsaWRlcjRJdGVtcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZHVhbGxpc3QnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwRHVhbExpc3QoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3Byb2plY3RzZm9ybSc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBQcm9qZWN0c0Zvcm0oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2Jsb2dsaXN0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEJsb2dMaXN0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdibG9nZGV0YWlsJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEJsb2dQb3N0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdiYW5uZXJzbGlkZXInOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwQmFubmVyU2xpZGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdtb2RhbG9wdGlvbnMnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwTW9kYWxPcHRpb25zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbm5lcmNvbnRlbnQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwSW5uZXJDb250ZW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICd0aW1lbGluZSc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBUaW1lbGluZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaGVhZGludHJvJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEhlYWRJbnRybyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnY2FyZWVyc2Zvcm0nOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwQ2FyZWVyc0Zvcm0oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2V2ZW50c2Zvcm0nOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwRXZlbnRzRm9ybShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbW9kYWxpbmZvbGVmdCc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdtb2RhbGluZm9yaWdodCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBNb2RhbEluZm8oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50Lm5hbWU/LnRvTG93ZXJDYXNlKCkgPT09XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbW9kYWxpbmZvbGVmdCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpZnJhbWUnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwSWZyYW1lKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdmYXFzJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEZhcXMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2ZhcXNpbWcnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwRmFxc0ltZyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQudmlldyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LmlkZW50aWZpZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgICAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGNvbXBvbmVudE1hcHBlZC5uYW1lLCBlcnJvcik7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvcik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gY29tcG9uZW50TWFwcGVkO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gYm9keU1hcHBlZDtcbiAgICB9XG5cbiAgICBtYXBHcmlkM2NvbFNsaWRlcihwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0dyaWQzY29sU2xpZGVySSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IHsgdGV4dHMsIG11bHRpbWVkaWEsIGhvdGVscywgYnV0dG9ucyB9ID0gcHJvcHM7XG4gICAgICAgIGxldCBpdGVtczogUHVyb0dyaWQzY29sU2xpZGVySXRlbVtdID0gW107XG4gICAgICAgIGlmIChtdWx0aW1lZGlhKSB7XG4gICAgICAgICAgICBpdGVtcyA9IG11bHRpbWVkaWE/LmltYWdlbmVzPy5tYXAoXG4gICAgICAgICAgICAgICAgKGltZzogSW1hZ2VSZXNwb25zZSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNpdGVJZCgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZz8uYnV0dG9uc1xuICAgICAgICAgICAgICAgICAgICAgICAgKVswXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOiBpbWc/LnByZXRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGltZz8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGltZyksXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9HcmlkM2NvbFNsaWRlckl0ZW1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSBpZiAoaG90ZWxzKSB7XG4gICAgICAgICAgICBpdGVtcyA9IGhvdGVscz8ubWFwKFxuICAgICAgICAgICAgICAgIChob3RlbDogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2l0ZUlkKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaG90ZWw/LmxpbmtzXG4gICAgICAgICAgICAgICAgICAgICAgICApWzBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJldGl0bGU6IGhvdGVsPy5jaXR5LFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGhvdGVsLnRleHRzPy5uYW1lIHx8ICcnKSArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGhvdGVsLnRleHRzPy5kZXNjcmlwdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICcgPGJyPiAnICsgaG90ZWwudGV4dHMuZGVzY3JpcHRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnJyksXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvdGVsLm11bHRpbWVkaWE/LmZpbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbWc6IEltYWdlUmVzcG9uc2UpID0+IGltZy5jb3ZlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9HcmlkM2NvbFNsaWRlckl0ZW1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiB0ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gdGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogdGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgaXRlbXM6IGl0ZW1zLFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGJ1dHRvbnMpWzBdLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHRleHRzPy50aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0gYXMgUHVyb0dyaWQzY29sU2xpZGVySTtcbiAgICB9XG5cbiAgICBtYXBHYWxsZXJ5KHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvR2FsbGVyeUkgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCB7IHRleHRzLCBidXR0b25zLCBmaWx0ZXJzID0gW10gfSA9IHByb3BzO1xuXG4gICAgICAgIGNvbnN0IHZhbGlkRmlsdGVycyA9IGZpbHRlcnMuZmlsdGVyKChmOiBhbnkpID0+IHtcbiAgICAgICAgICAgIC8vIE1hbnRlbmVyIFwiVG9kb3NcIiBzaWVtcHJlXG4gICAgICAgICAgICBpZiAoZi5hbGwpIHJldHVybiB0cnVlO1xuXG4gICAgICAgICAgICAvLyBNYW50ZW5lciBoYWJpdGFjaW9uZXMgcGFyZW50IChyb29tczp0cnVlKSBzaWVtcHJlXG4gICAgICAgICAgICBpZiAoZi5yb29tcykgcmV0dXJuIHRydWU7XG5cbiAgICAgICAgICAgIC8vIEhhYml0YWNpb25lcyBpbmRpdmlkdWFsZXMg4oaSIHJlcXVpZXJlbiBtdWx0aW1lZGlhXG4gICAgICAgICAgICBpZiAoZi5yb29tKVxuICAgICAgICAgICAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KGYubXVsdGltZWRpYSkgJiYgZi5tdWx0aW1lZGlhLmxlbmd0aCA+IDA7XG5cbiAgICAgICAgICAgIC8vIFJlc3RvIGRlIGZpbHRyb3Mg4oaSIHJlcXVpZXJlbiBtdWx0aW1lZGlhXG4gICAgICAgICAgICByZXR1cm4gQXJyYXkuaXNBcnJheShmLm11bHRpbWVkaWEpICYmIGYubXVsdGltZWRpYS5sZW5ndGggPiAwO1xuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCBpbmRleE1hcCA9IG5ldyBNYXA8YW55LCBudW1iZXI+KCk7XG4gICAgICAgIHZhbGlkRmlsdGVycy5mb3JFYWNoKChmOiBhbnksIGk6IGFueSkgPT4gaW5kZXhNYXAuc2V0KGYsIGkpKTtcblxuICAgICAgICBjb25zdCBtYXBwZWRGaWx0ZXJzID0gdmFsaWRGaWx0ZXJzLm1hcCgoaXRlbTogYW55LCBpbmRleDogbnVtYmVyKSA9PiAoe1xuICAgICAgICAgICAgaWQ6IGluZGV4LFxuICAgICAgICAgICAgYWxsOiBpdGVtLmFsbCxcbiAgICAgICAgICAgIHJvb206IGl0ZW0ucm9vbSxcbiAgICAgICAgICAgIHJvb21zOiBpdGVtLnJvb21zLFxuICAgICAgICAgICAgdGV4dDogaXRlbS5uYW1lLFxuICAgICAgICB9KSkgYXMgUHVyb0dhbGxlcnlGaWx0ZXJbXTtcblxuICAgICAgICBjb25zdCBpdGVtcyA9IHZhbGlkRmlsdGVycy5mbGF0TWFwKChmaWx0ZXI6IGFueSkgPT4ge1xuICAgICAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGZpbHRlci5tdWx0aW1lZGlhKSkgcmV0dXJuIFtdO1xuXG4gICAgICAgICAgICByZXR1cm4gZmlsdGVyLm11bHRpbWVkaWEubWFwKChpbWc6IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGltZyksXG4gICAgICAgICAgICAgICAgdGl0bGU6IGltZz8udGl0bGUsXG4gICAgICAgICAgICAgICAgZmlsdGVyOiBpbmRleE1hcC5nZXQoZmlsdGVyKSwgLy8gaW5kZXggY29ycmVjdG9cbiAgICAgICAgICAgIH0pKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGZpbHRlcnM6IG1hcHBlZEZpbHRlcnMsXG4gICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgdGV4dHM/LnByZXRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHRleHRzPy5wcmV0aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHRleHRzPy5wcmV0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiB0ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gdGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogdGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiB0ZXh0cz8ucHJldGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiB0ZXh0cz8ucHJldGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICAgICAgdGl0bGU6IHRleHRzPy50aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBmaWx0ZXJUaXRsZTogdGV4dHM/LnJvb21zRmlsdGVyLFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGJ1dHRvbnMpPy5bMF0sXG4gICAgICAgICAgICBpdGVtcyxcbiAgICAgICAgfSBhcyBQdXJvR2FsbGVyeUk7XG4gICAgfVxuXG4gICAgbWFwTWFwTGlzdChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb01hcExpc3RJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgeyB0ZXh0cywgbXVsdGltZWRpYSwgaG90ZWxzIH0gPSBwcm9wcztcbiAgICAgICAgbGV0IGl0ZW1zOiBQdXJvTWFwTGlzdEl0ZW1bXSA9IFtdO1xuICAgICAgICBpZiAoaG90ZWxzKSB7XG4gICAgICAgICAgICBpdGVtcyA9IGhvdGVscz8ubWFwKFxuICAgICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8udGV4dHM/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaXRlbT8udGV4dHM/LmFkZGl0aW9uYWwxLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2U6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/Lm11bHRpbWVkaWE/LmZpbHRlcigoaW1nOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZz8udGFncz8uc29tZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0YWc6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWcgPT09ICdNYXBMaXN0UGhvdG8nIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFnPy5uYW1lID09PSAnTWFwTGlzdFBob3RvJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKT8uWzBdXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWFwSW1hZ2U6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/Lm11bHRpbWVkaWE/LmZpbHRlcigoaW1nOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZz8udGFncz8uc29tZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0YWc6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWcgPT09ICdNYXBMaXN0TWFwJyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZz8ubmFtZSA9PT0gJ01hcExpc3RNYXAnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApPy5bMF1cbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9NYXBMaXN0SXRlbVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIGlmIChtdWx0aW1lZGlhKSB7XG4gICAgICAgICAgICBpdGVtcyA9IG11bHRpbWVkaWE/LmltYWdlbmVzPy5tYXAoXG4gICAgICAgICAgICAgICAgKGltZzogSW1hZ2VSZXNwb25zZSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpbWc/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGltZz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWFnZTogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaW1nKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcEltYWdlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9NYXBMaXN0SXRlbVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogdGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgcHJldGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHRleHRzPy5wcmV0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyB0ZXh0cz8ucHJldGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiB0ZXh0cz8ucHJldGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgdGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHN1YnRpdGxlOiB0ZXh0cz8uc3VidGl0bGUsXG4gICAgICAgICAgICBuZFRpdGxlOiB0ZXh0cz8ubmR0aXRsZSxcbiAgICAgICAgICAgIG5kRGVzY3JpcHRpb246IHRleHRzPy5uZGRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgbWFwSW1hZ2U6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKHByb3BzPy5tdWx0aW1lZGlhPy5tYXA/LlswXSksXG4gICAgICAgICAgICBpdGVtcyxcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogdGV4dHM/LnByZXRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRleHRDb2xvcnM6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogdGV4dHM/LnByZXRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICB9LFxuICAgICAgICB9IGFzIFB1cm9NYXBMaXN0STtcbiAgICB9XG5cbiAgICBtYXBPZmZlckJhbm5lcihwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb09mZmVyQmFubmVySSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmIChwcm9wcykge1xuICAgICAgICAgICAgY29uc3QgeyB0ZXh0cywgYnV0dG9ucyB9ID0gcHJvcHM7XG4gICAgICAgICAgICAvL1RPRE86YmFja1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgYnV0dG9ucylbMF0sXG4gICAgICAgICAgICAgICAgY3VycmVuY3k6ICcnLFxuICAgICAgICAgICAgICAgIGZyb206IHRleHRzPy5mcm9tLFxuICAgICAgICAgICAgICAgIGltYWdlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgcHJpY2U6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgfSBhcyBQdXJvT2ZmZXJCYW5uZXJJO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBtYXBMYW5ndWFnZXNNb2RhbChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0xhbmd1YWdlc01vZGFsSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IHsgdGV4dHMsIGxhbmd1YWdlcyB9ID0gcHJvcHM7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpdGVtczogbGFuZ3VhZ2VzIGFzIFB1cm9MYW5ndWFnZXNNb2RhbEl0ZW1bXSxcbiAgICAgICAgICAgIHNlbGVjdGVkOiBsYW5ndWFnZXMuZmluZChcbiAgICAgICAgICAgICAgICAoaXRlbTogUHVyb0xhbmd1YWdlc01vZGFsSXRlbSkgPT5cbiAgICAgICAgICAgICAgICAgICAgaXRlbS5pZCA9PT0gdGhpcy5zaXRlU3ZjLnNlbGVjdGVkTGFuZ3VhZ2VJbnN0YW50Py5pZFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiB0ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gdGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogdGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHRleHRzPy50aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0gYXMgUHVyb0xhbmd1YWdlc01vZGFsSTtcbiAgICB9XG5cbiAgICBtYXBIZWFkZXIoXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWQsXG4gICAgICAgIG1lbnU6IGFueSB8IHVuZGVmaW5lZFxuICAgICk6IFB1cm9IZWFkZXJJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgeyBuYXYsIG11bHRpbWVkaWEsIGxpbmtzIH0gPSBtZW51IHx8IHt9O1xuICAgICAgICBjb25zdCB7IGJvdHRvbUxpbmtzIH0gPSBsaW5rcyA/PyB7fTtcblxuICAgICAgICBjb25zdCBmYWxsYmFja1RleHRzID0ge1xuICAgICAgICAgICAgbWVudTogJ01lbsO6JyxcbiAgICAgICAgICAgIGxhbmd1YWdlOiAnSWRpb21hJyxcbiAgICAgICAgICAgIGJvb2tub3c6ICdSZXNlcnZhcicsXG4gICAgICAgICAgICBjaGVja2luOiAnQ2hlY2tJbicsXG4gICAgICAgICAgICBjaGVja2luT25saW5lOiAnQ2hlY2tJbk9ubGluZScsXG4gICAgICAgIH0gYXMgUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgICAgICAgY29uc3QgdGV4dHMgPSBwcm9wcz8uaGVhZGVyQnV0dG9ucz8udGV4dHMgPz8gZmFsbGJhY2tUZXh0cztcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGVNZW51OiB0ZXh0cz8ubWVudSA/PyBmYWxsYmFja1RleHRzWydtZW51J10sXG4gICAgICAgICAgICB0aXRsZUxhbmc6IHRleHRzPy5sYW5ndWFnZSA/PyBmYWxsYmFja1RleHRzWydsYW5ndWFnZSddLFxuICAgICAgICAgICAgYnRuQm9vazogdGV4dHM/LmJvb2tub3cgPz8gZmFsbGJhY2tUZXh0c1snYm9va25vdyddLFxuICAgICAgICAgICAgbmF2TGlua3M6IG5hdj8ubWFwKChsaW5rOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBwcmVmaXggPVxuICAgICAgICAgICAgICAgICAgICBsaW5rPy5zaXRlSWQgPT09IDJcbiAgICAgICAgICAgICAgICAgICAgICAgID8gJy9wdXJvaG90ZWxzJ1xuICAgICAgICAgICAgICAgICAgICAgICAgOiBsaW5rPy5zaXRlSWQgPT09IDNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPyAnL3B1cm9iZWFjaCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnJztcblxuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiBsaW5rPy50cmFuc2xhdGlvbnM/LlswXT8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiBwcmVmaXggKyBsaW5rPy5saW5rVmFsdWUsXG4gICAgICAgICAgICAgICAgICAgIGxpbmtUeXBlOiBsaW5rLmxpbmtUeXBlLFxuICAgICAgICAgICAgICAgICAgICBpY29uOiBsaW5rPy5pY29uLFxuICAgICAgICAgICAgICAgIH0gYXMgUHVyb0J1dHRvbkk7XG4gICAgICAgICAgICB9KSxcblxuICAgICAgICAgICAgYm90dG9tTGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgdGhpcy5zaXRlSWQoKSxcbiAgICAgICAgICAgICAgICBib3R0b21MaW5rcz8uWzBdPy5maWx0ZXIoKGJ0bjogYW55KSA9PiAhIWJ0bj8ubGFiZWwpXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYnRuQ2hlY2tpbjogdGV4dHM/LmNoZWNraW4gPz8gZmFsbGJhY2tUZXh0c1snY2hlY2tpbiddLFxuICAgICAgICAgICAgYnRuQ2hlY2tpbk9ubGluZTpcbiAgICAgICAgICAgICAgICB0ZXh0cz8uY2hlY2tpbm9ubGluZSA/PyBmYWxsYmFja1RleHRzWydjaGVja2luT25saW5lJ10sXG4gICAgICAgICAgICBob3RlbEJyYW5kOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShtdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdKSxcbiAgICAgICAgfSBhcyBQdXJvSGVhZGVySTtcbiAgICB9XG5cbiAgICBtYXBJbmZvQmlnKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvSW5mb0JpZ0kgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCB7IHRleHRzLCBidXR0b25zLCBtdWx0aW1lZGlhIH0gPSBwcm9wcztcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHByZXRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiB0ZXh0cz8ucHJldGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gdGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogdGV4dHM/LnByZXRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyB0ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiB0ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICBzdWJ0aXRsZTogdGV4dHM/LnN1YnRpdGxlLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIG5kRGVzY3JpcHRpb246IHRleHRzPy5uZERlc2NyaXB0aW9uLFxuICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBidXR0b25zKSxcbiAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUobXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXSksXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHRleHRzPy5wcmV0aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSBhcyBQdXJvSW5mb0JpZ0k7XG4gICAgfVxuXG4gICAgbWFwU2xpZGVyMWNvbChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb1NsaWRlcjFjb2xJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgeyBtdWx0aW1lZGlhLCBidXR0b25zLCB0ZXh0cywgcG9zdHMgfSA9IHByb3BzO1xuICAgICAgICBsZXQgaXRlbXM6IFB1cm9TbGlkZXIxY29sSXRlbVtdID0gW107XG5cbiAgICAgICAgaWYgKG11bHRpbWVkaWEpIHtcbiAgICAgICAgICAgIGl0ZW1zID0gbXVsdGltZWRpYT8uaW1hZ2VuZXM/Lm1hcChcbiAgICAgICAgICAgICAgICAoaW1nOiBJbWFnZVJlc3BvbnNlKSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpbWcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGltZz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9TbGlkZXIxY29sSXRlbVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIGlmIChwb3N0cykge1xuICAgICAgICAgICAgaXRlbXMgPSBwb3N0cy5tYXAoKGl0ZW06IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGlkZW50aWZpZXIgPVxuICAgICAgICAgICAgICAgICAgICBpdGVtPy5ibG9ncz8uWzBdPy5uYW1lSWRlbnRpZmllcj8udG9Mb3dlckNhc2UoKSB8fCAnJztcbiAgICAgICAgICAgICAgICBjb25zdCBub3JtYWxpemVkID0gaWRlbnRpZmllci50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL1xccysvZywgJycpO1xuICAgICAgICAgICAgICAgIGxldCBzaXRlSWQgPSAxO1xuXG4gICAgICAgICAgICAgICAgaWYgKG5vcm1hbGl6ZWQuaW5jbHVkZXMoJ3B1cm9ob3RlbHMnKSkge1xuICAgICAgICAgICAgICAgICAgICBzaXRlSWQgPSAyO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobm9ybWFsaXplZC5pbmNsdWRlcygncHVyb2JlYWNoJykpIHtcbiAgICAgICAgICAgICAgICAgICAgc2l0ZUlkID0gMztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdCBidXR0b24gPSBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICBzaXRlSWQsXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0/LmJ1dHRvbnMgfHwgW11cbiAgICAgICAgICAgICAgICApPy5bMF07XG5cbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaXRlbT8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGl0ZW0/Lm11bHRpbWVkaWE/LlswXSksXG4gICAgICAgICAgICAgICAgICAgIGxpbms6IGJ1dHRvbixcbiAgICAgICAgICAgICAgICB9IGFzIFB1cm9TbGlkZXIxY29sSXRlbTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBidXR0b25zKVswXSxcbiAgICAgICAgICAgIHN1YnRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiB0ZXh0cz8uc3VidGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gdGV4dHM/LnN1YnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogdGV4dHM/LnN1YnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyB0ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiB0ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICBpdGVtczogaXRlbXMsXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgc3VidGl0bGU6IHRleHRzPy5zdWJ0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgc3VidGl0bGU6IHRleHRzPy5zdWJ0aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSBhcyBQdXJvU2xpZGVyMWNvbEk7XG4gICAgfVxuXG4gICAgbWFwQWR2YW50YWdlcyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0FkdmFudGFnZXNJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgeyBBZHZhbnRhZ2VzIH0gPSBwcm9wcztcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGl0ZW1zOiBBZHZhbnRhZ2VzPy5tYXAoXG4gICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb246IGl0ZW0/Lmljb24sXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9BZHZhbnRhZ2VzSXRlbVxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBQdXJvQWR2YW50YWdlc0k7XG4gICAgfVxuXG4gICAgbWFwWmlnemFnMmNvbChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb1ppZ1phZzJjb2xJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKHByb3BzKSB7XG4gICAgICAgICAgICBjb25zdCB7IHRleHRzLCBidXR0b25zLCBtdWx0aW1lZGlhIH0gPSBwcm9wcztcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHRleHRzPy5hZGRpdGlvbmFsMixcbiAgICAgICAgICAgICAgICBuZFRpdGxlOiB0ZXh0cz8uYWRkaXRpb25hbDMsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IHRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogdGV4dHM/LmFkZGl0aW9uYWwxLFxuICAgICAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBidXR0b25zKVswXSxcbiAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKG11bHRpbWVkaWE/LlswXSksXG4gICAgICAgICAgICAgICAgbmRJbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKG11bHRpbWVkaWE/LlsxXSksXG4gICAgICAgICAgICB9IGFzIFB1cm9aaWdaYWcyY29sSTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgbWFwR3JpZDRpdGVtcyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0dyaWQ0aXRlbXNJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgeyB0ZXh0cywgYnV0dG9ucywgbXVsdGltZWRpYSB9ID0gcHJvcHM7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgdGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaXRlbXM6IChBcnJheS5pc0FycmF5KG11bHRpbWVkaWEpXG4gICAgICAgICAgICAgICAgPyBtdWx0aW1lZGlhXG4gICAgICAgICAgICAgICAgOiBtdWx0aW1lZGlhPy5pbWFnZW5lc1xuICAgICAgICAgICAgKT8ubWFwKFxuICAgICAgICAgICAgICAgIChpbWc6IEltYWdlUmVzcG9uc2UpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaW1nPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbms6IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgaW1nPy5saW5rcylbMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaW1nPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaW1nKSxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb0dyaWQ0aXRlbXNJdGVtXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGJ1dHRvbnMpWzBdLFxuICAgICAgICB9IGFzIFB1cm9HcmlkNGl0ZW1zSTtcbiAgICB9XG5cbiAgICBtYXBJbmZvVmlkZW8oXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWQsXG4gICAgICAgIG5hbWU6ICdpbmZvdmlkZW9yaWdodCcgfCAnaW5mb3ZpZGVvbGVmdCdcbiAgICApOiBQdXJvSW5mb1ZpZGVvSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgcHJvcHM/LmJ1dHRvbnMpWzBdLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHN1YnRpdGxlOiBwcm9wcz8udGV4dHM/LnN1YnRpdGxlLFxuICAgICAgICAgICAgcmV2ZXJzZTogbmFtZS5pbmNsdWRlcygncmlnaHQnKSxcbiAgICAgICAgICAgIHZpZGVvOiB7XG4gICAgICAgICAgICAgICAgc291cmNlOiBwcm9wcy52aWRlbz8uc3JjLFxuICAgICAgICAgICAgICAgIHR5cGU6IHByb3BzLnZpZGVvPy50eXBlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRleHRDb2xvcnM6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0gYXMgUHVyb0luZm9WaWRlb0k7XG4gICAgfVxuXG4gICAgbWFwQnJlYWRjcnVtYnMocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9CcmVhZGNydW1iSSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBsaW5rczogKHByb3BzPy5pdGVtcyBhcyBhbnlbXSlcbiAgICAgICAgICAgICAgICA/LnNvcnQoKGEsIGIpID0+IGEgLSBiKVxuICAgICAgICAgICAgICAgID8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAoaXRlbSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGl0ZW0/LmxhYmVsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtUeXBlOiAnaW50ZXJuYWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogaXRlbT8udXJsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gaXRlbT8udXJsPy5jaGFyQXQoaXRlbT8udXJsPy5sZW5ndGggLSAxKSA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gaXRlbT8udXJsPy5zbGljZSgwLCAtMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaXRlbT8udXJsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb0J1dHRvbklcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICB9IGFzIFB1cm9CcmVhZGNydW1iSTtcbiAgICB9XG5cbiAgICBtYXBGb290ZXJJbmZvKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvRm9vdGVySW5mb0kgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCBhZGRyZXNzID0gcHJvcHM/LmFkZHJlc3M/LlswXSA/PyBwcm9wcz8uYWRkcmVzcztcbiAgICAgICAgY29uc3QgeyB0ZXh0cywgYnV0dG9ucywgbGlua3MsIHNvY2lhbE1lZGlhLCBtdWx0aW1lZGlhIH0gPSBwcm9wcztcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYWRkcmVzc0luZm86IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlQWRkcmVzcyxcbiAgICAgICAgICAgICAgICB0ZXh0OiBgJHthZGRyZXNzPy5hZGRyZXNzID8/ICcnfSwgJHthZGRyZXNzPy5jaXR5ID8/ICcnfSwgJHthZGRyZXNzPy5jcCA/PyAnJ30gJHthZGRyZXNzPy5wcm92aW5jZSA/PyAnJ31gLFxuICAgICAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaXRlSWQoKSxcbiAgICAgICAgICAgICAgICAgICAgYnV0dG9ucz8uZmlsdGVyKChidG46IGFueSkgPT4gISFidG4/LmxpbmtWYWx1ZSlcbiAgICAgICAgICAgICAgICApWzFdLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICB0aGlzLnNpdGVJZCgpLFxuICAgICAgICAgICAgICAgIGJ1dHRvbnM/LmZpbHRlcigoYnRuOiBhbnkpID0+ICEhYnRuPy5saW5rVmFsdWUpXG4gICAgICAgICAgICApWzBdLFxuICAgICAgICAgICAgY29udGFjdEluZm86IHtcbiAgICAgICAgICAgICAgICBsaW5rczogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaXRlSWQoKSxcbiAgICAgICAgICAgICAgICAgICAgbGlua3M/LmNvbnRhY3RMaW5rcz8uWzBdXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2l0ZUlkKCksXG4gICAgICAgICAgICAgICAgICAgIGJ1dHRvbnM/LmZpbHRlcigoYnRuOiBhbnkpID0+ICEhYnRuPy5saW5rVmFsdWUpXG4gICAgICAgICAgICAgICAgKVswXSxcbiAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlQ29udGFjdCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsb2dvSW1hZ2U6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKG11bHRpbWVkaWE/LmxvZ28/LlswXSksXG4gICAgICAgICAgICBsb2dvOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShtdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdKSxcbiAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUobXVsdGltZWRpYT8uaW1hZ2U/LlswXSksXG4gICAgICAgICAgICBuZXdzbGV0dGVySW5mbzoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGVOZXdzbGV0dGVyLFxuICAgICAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBidXR0b25zKVsxXSxcbiAgICAgICAgICAgICAgICBjb25kaXRpb25zTGluazogdGV4dHM/Lm5ld3NsZXR0ZXJDb25kaXRpb25zLFxuICAgICAgICAgICAgICAgIGlucHV0UGxhY2Vob2xkZXI6IHRleHRzPy5uZXdzbGV0dGVyUGxhY2Vob2xkZXIsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc29jaWFsTWVkaWE6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlU29jaWFsTWVkaWEsXG4gICAgICAgICAgICAgICAgaXRlbXM6IHNvY2lhbE1lZGlhPy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgIGljb246IFV0aWxzLm1hcFNvY2lhbGNvbnMoaXRlbT8ubmFtZT8udG9Mb3dlckNhc2UoKSksXG4gICAgICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgfSBhcyBQdXJvRm9vdGVySW5mb1NvY2lhbE1lZGlhSW5mbyxcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiB0ZXh0cz8ucHJldGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gdGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogdGV4dHM/LnByZXRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSBhcyBQdXJvRm9vdGVySW5mb0k7XG4gICAgfVxuXG4gICAgbWFwU2xpZGVyM2NvbChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb1NsaWRlcjNjb2xJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgeyBldmVudCwgZXhwZXJpZW5jZSwgbXVsdGltZWRpYSwgdGV4dHMsIGJ1dHRvbnMgfSA9IHByb3BzO1xuICAgICAgICBsZXQgaXRlbXM6IFB1cm9TbGlkZXIzQ29sSXRlbVtdID0gW107XG5cbiAgICAgICAgaWYgKGV2ZW50KSB7XG4gICAgICAgICAgICBpdGVtcyA9IGV2ZW50Py5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgICAgIGxvY2F0aW9uOiBpdGVtPy50ZXh0cz8ubG9jYXRpb24sXG4gICAgICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGl0ZW0/LmJ1dHRvbnMpWzBdLFxuICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaXRlbT8ubXVsdGltZWRpYT8uWzBdKSxcbiAgICAgICAgICAgICAgICBsaW5rOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGl0ZW0/LmxpbmtzKVswXSxcbiAgICAgICAgICAgICAgICBkYXRlOiBpdGVtLmRhdGV0aW1lLFxuICAgICAgICAgICAgICAgIGljb246IGl0ZW0/LnRleHRzPy5kZXNjcmlwdGlvbjMsXG4gICAgICAgICAgICB9KSk7XG4gICAgICAgIH0gZWxzZSBpZiAoZXhwZXJpZW5jZSkge1xuICAgICAgICAgICAgaXRlbXMgPSBleHBlcmllbmNlPy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgICAgIGxvY2F0aW9uOiBpdGVtPy50ZXh0cz8ubG9jYXRpb24sXG4gICAgICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGl0ZW0/LmJ1dHRvbnMpWzBdLFxuICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaXRlbT8ubXVsdGltZWRpYT8uWzBdKSxcbiAgICAgICAgICAgICAgICBsaW5rOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGl0ZW0/LmxpbmtzKVswXSxcbiAgICAgICAgICAgICAgICBkYXRlOiBpdGVtLmRhdGV0aW1lLFxuICAgICAgICAgICAgICAgIGljb246IGl0ZW0/LnRleHRzPy5kZXNjcmlwdGlvbjMsXG4gICAgICAgICAgICB9KSk7XG4gICAgICAgIH0gZWxzZSBpZiAobXVsdGltZWRpYSkge1xuICAgICAgICAgICAgaXRlbXMgPSBtdWx0aW1lZGlhPy5pbWFnZW5lcz8ubWFwKChpdGVtOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0/LnRpdGxlLFxuICAgICAgICAgICAgICAgIGxvY2F0aW9uOiBpdGVtPy5wcmV0aXRsZSxcbiAgICAgICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgaXRlbT8uYnV0dG9ucylbMF0sXG4gICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpdGVtKSxcbiAgICAgICAgICAgICAgICAvLyBsaW5rOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGl0ZW0/LmxpbmtzKVswXSxcbiAgICAgICAgICAgICAgICAvLyBkYXRlOiBpdGVtLmRhdGV0aW1lLFxuICAgICAgICAgICAgICAgIC8vIGljb246IGl0ZW0/LnRleHRzPy5kZXNjcmlwdGlvbjMsXG4gICAgICAgICAgICB9KSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBpdGVtczogaXRlbXMsXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgYnV0dG9ucylbMF0sXG4gICAgICAgIH0gYXMgUHVyb1NsaWRlcjNjb2xJO1xuICAgIH1cblxuICAgIG1hcFNsaWRlcjJjb2wocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9TbGlkZXIyY29sSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IHsgcm9vbXMsIG11bHRpbWVkaWEsIHRleHRzLCBidXR0b25zIH0gPSBwcm9wcztcbiAgICAgICAgbGV0IGl0ZW1zOiBQdXJvU2xpZGVyMmNvbEl0ZW1bXSA9IFtdO1xuXG4gICAgICAgIGlmIChyb29tcykge1xuICAgICAgICAgICAgaXRlbXMgPSByb29tcz8ubWFwKChpdGVtOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICAgICAgaXRlbT8ubXVsdGltZWRpYT8uZmlsdGVyKChpbWc6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGltZz8udGFncz8uc29tZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGFnOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZyA9PT0gJ1NsaWRlcjJDb2wnIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZz8ubmFtZSA9PT0gJ1NsaWRlcjJDb2wnXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICk/LlswXVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0udGV4dHM/Lm5hbWUsXG4gICAgICAgICAgICAgICAgc3VidGl0bGU6IGl0ZW0udGV4dHM/LmRlc2NyaXRpb24sXG4gICAgICAgICAgICAgICAgYnV0dG9uczogW1xuICAgICAgICAgICAgICAgICAgICBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGl0ZW0/LmJ1dHRvbnMpWzBdLFxuICAgICAgICAgICAgICAgICAgICBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGl0ZW0/LmxpbmtzKVswXSxcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgfSkpO1xuICAgICAgICB9IGVsc2UgaWYgKG11bHRpbWVkaWEpIHtcbiAgICAgICAgICAgIGl0ZW1zID0gbXVsdGltZWRpYT8uaW1hZ2VuZXM/Lm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaXRlbSksXG4gICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0udGl0bGUsXG4gICAgICAgICAgICAgICAgc3VidGl0bGU6IGl0ZW0uc3VidGl0bGUsXG4gICAgICAgICAgICAgICAgYnV0dG9uczogW1xuICAgICAgICAgICAgICAgICAgICBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGl0ZW0/LmJ1dHRvbnMpWzBdLFxuICAgICAgICAgICAgICAgICAgICBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGl0ZW0/LmxpbmtzKVswXSxcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgfSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBpdGVtczogaXRlbXMsXG4gICAgICAgIH0gYXMgUHVyb1NsaWRlcjJjb2xJO1xuICAgIH1cblxuICAgIG1hcEdyaWQ1aXRlbXMocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9HcmlkNWl0ZW1zSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IGNvbWJpbmVkSW1hZ2VzOiBJbWFnZVJlc3BvbnNlW10gPSBbXTtcbiAgICAgICAgbGV0IGkgPSAwO1xuICAgICAgICBsZXQgaiA9IDA7XG5cbiAgICAgICAgd2hpbGUgKFxuICAgICAgICAgICAgaSA8IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8ubGVuZ3RoIHx8XG4gICAgICAgICAgICBqIDwgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlc3NtYWxsPy5sZW5ndGhcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBpZiAocHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5baV0pIHtcbiAgICAgICAgICAgICAgICBjb21iaW5lZEltYWdlcy5wdXNoKHByb3BzLm11bHRpbWVkaWEuaW1hZ2VuZXNbaV0pO1xuICAgICAgICAgICAgICAgIGkrKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2Vzc21hbGw/LltqXSkge1xuICAgICAgICAgICAgICAgIGlmIChqID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbWJpbmVkSW1hZ2VzLnB1c2gocHJvcHMubXVsdGltZWRpYS5pbWFnZXNzbWFsbFtqXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGorKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb21iaW5lZEltYWdlcy5wdXNoKHByb3BzLm11bHRpbWVkaWEuaW1hZ2Vzc21hbGxbMV0pO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZSA/PyBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgaXRlbXM6IGNvbWJpbmVkSW1hZ2VzPy5tYXAoXG4gICAgICAgICAgICAgICAgKGltZzogSW1hZ2VSZXNwb25zZSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaW1nKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpbWc/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3VidGl0bGU6IGltZz8uc3VidGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBsaW5rOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGltZz8ubGlua3MpWzBdLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvR3JpZDVpdGVtc0l0ZW1cbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgcHJvcHM/LmJ1dHRvbnMpWzBdLFxuICAgICAgICB9IGFzIFB1cm9HcmlkNWl0ZW1zSTtcbiAgICB9XG5cbiAgICBtYXBHcmlkNml0ZW1zKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvR3JpZDZpdGVtc0kgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBpdGVtczogcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzLm1hcCgoaW1nOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpbWcpLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBpbWcudGl0bGUsXG4gICAgICAgICAgICB9KSkgYXMgUHVyb0dyaWQ2aXRlbXNJdGVtW10sXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgcHJvcHM/LmJ1dHRvbnMpWzBdLFxuICAgICAgICB9IGFzIFB1cm9HcmlkNml0ZW1zSTtcbiAgICB9XG5cbiAgICBtYXBBZHZhbnRhZ2VzU21hbGwoXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWRcbiAgICApOiBQdXJvQWR2YW50YWdlc1NtYWxsSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpdGVtczogKHByb3BzLnNlcnZpY2VzQWR2YW50YWdlcyB8fCBwcm9wcz8uQWR2YW50YWdlcyk/Lm1hcChcbiAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0/Lm5hbWUgfHwgaXRlbT8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBpY29uOiAnaWNvbi0nICsgKGl0ZW0/LmNsYXNzIHx8IGl0ZW0/Lmljb24pLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGl0ZW0/LnRleHQgfHwgaXRlbT8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9BZHZhbnRhZ2VzU21hbGxJdGVtXG4gICAgICAgICAgICApLFxuICAgICAgICB9IGFzIFB1cm9BZHZhbnRhZ2VzU21hbGxJO1xuICAgIH1cblxuICAgIG1hcEdyaWQzY29sRmlsdGVyKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvR3JpZDNDb2xGaWx0ZXJJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKCFwcm9wcykgcmV0dXJuIHVuZGVmaW5lZDtcblxuICAgICAgICBjb25zdCByYXdEZXN0aW5hdGlvbnM6IGFueVtdID0gKHByb3BzLmRlc3RpbmF0aW9ucyA/PyBbXSlcbiAgICAgICAgICAgIC5mbGF0KClcbiAgICAgICAgICAgIC5maWx0ZXIoQm9vbGVhbik7XG4gICAgICAgIGNvbnN0IGRlc3RpbmF0aW9uczogYW55W10gPSBBcnJheS5mcm9tKFxuICAgICAgICAgICAgbmV3IE1hcChyYXdEZXN0aW5hdGlvbnMubWFwKChkOiBhbnkpID0+IFtOdW1iZXIoZC5pZCksIGRdKSkudmFsdWVzKClcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCByYXdJdGVtcyA9IGRlc3RpbmF0aW9ucy5mbGF0TWFwKChkZXN0OiBhbnkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNoaWxkcmVuID0gZGVzdD8uY2hpbGRyZW4gPz8gW107XG5cbiAgICAgICAgICAgIHJldHVybiBjaGlsZHJlbi5tYXAoKGNoaWxkOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB0ciA9IGNoaWxkPy50cmFuc2xhdGlvbnM/LlswXSA/PyB7fTtcbiAgICAgICAgICAgICAgICBjb25zdCB0aXRsZSA9IHRyPy5uYW1lID8/IGNoaWxkPy5uYW1lID8/IGNoaWxkPy5uYW1lX2lkZW50aWZpZXI7XG4gICAgICAgICAgICAgICAgY29uc3QgcHJldGl0bGUgPSBkZXN0Py5uYW1lO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgYnV0dG9uID0gKFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2l0ZUlkKCksXG4gICAgICAgICAgICAgICAgICAgIGNoaWxkPy5ob3RlbHM/LlswXT8ubGlua3M/LlswXVxuICAgICAgICAgICAgICAgICkgPz8gW10pWzBdO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgaW1nQ292ZXIgPSBjaGlsZD8uaG90ZWxzPy5bMF0/Lm11bHRpbWVkaWE/LmZpbmQoXG4gICAgICAgICAgICAgICAgICAgIChpbWc6IGFueSkgPT4gaW1nLmNvdmVyXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBjb25zdCBpbWcgPSB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpbWdDb3Zlcik7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICB0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgcHJldGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcjogTnVtYmVyKGNoaWxkPy5pZCksXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlclBhcmVudDogTnVtYmVyKGRlc3Q/LmlkID8/IGNoaWxkPy5wYXJlbnRfaWQpLFxuICAgICAgICAgICAgICAgICAgICBidXR0b24sXG4gICAgICAgICAgICAgICAgICAgIGltZyxcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZEltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uYmFja2dyb3VuZEltYWdlXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgfSBhcyBQdXJvR3JpZDNDb2xGaWx0ZXJJdGVtO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IGl0ZW1zOiBQdXJvR3JpZDNDb2xGaWx0ZXJJdGVtW10gPSBBcnJheS5mcm9tKFxuICAgICAgICAgICAgbmV3IE1hcChyYXdJdGVtcy5tYXAoKGkpID0+IFtpLmZpbHRlciwgaV0pKS52YWx1ZXMoKVxuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IHZhbGlkUGFyZW50SWRzID0gbmV3IFNldChpdGVtcy5tYXAoKGkpID0+IGkuZmlsdGVyUGFyZW50KSk7XG4gICAgICAgIGNvbnN0IG9wdGlvbnM6IERyb3Bkb3duT3B0aW9uW10gPSBkZXN0aW5hdGlvbnNcbiAgICAgICAgICAgIC5maWx0ZXIoKGRlc3Q6IGFueSkgPT4gdmFsaWRQYXJlbnRJZHMuaGFzKE51bWJlcihkZXN0Py5pZCkpKVxuICAgICAgICAgICAgLm1hcCgoZGVzdDogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgIGNvZGU6IE51bWJlcihkZXN0Py5pZCksXG4gICAgICAgICAgICAgICAgbmFtZTogZGVzdD8ubmFtZSB8fCBkZXN0Py5uYW1lX2lkZW50aWZpZXIsXG4gICAgICAgICAgICB9KSk7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8uc3VidGl0bGUgPz8gcHJvcHM/LnRleHRzPy5wcmV0aXRsZSxcbiAgICAgICAgICAgIGl0ZW1zLFxuICAgICAgICAgICAgZmlsdGVyOiB7XG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8ucGxhY2Vob2xkZXIsXG4gICAgICAgICAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIHByb3BzPy5idXR0b25zKSA/PyBbXSxcbiAgICAgICAgICAgIGJhY2tncm91bmRJbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdXG4gICAgICAgICAgICApLFxuICAgICAgICB9IGFzIFB1cm9HcmlkM0NvbEZpbHRlckk7XG4gICAgfVxuXG4gICAgbWFwR3JpZDNjb2xQbHVzRmlsdGVyKFxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkXG4gICAgKTogUHVyb0dyaWQzQ29sUGx1c0ZpbHRlckkgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAoIXByb3BzKSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gICAgICAgIGNvbnN0IHsgdGV4dHMsIGV2ZW50LCBleHBlcmllbmNlLCBob3RlbHMsIG11bHRpbWVkaWEsIGRlc3RpbmF0aW9ucyB9ID1cbiAgICAgICAgICAgIHByb3BzO1xuXG4gICAgICAgIGxldCBpdGVtczogUHVyb0dyaWQzQ29sUGx1c0ZpbHRlckl0ZW1bXSA9IFtdO1xuICAgICAgICBsZXQgb3B0aW9uczogRHJvcGRvd25PcHRpb25bXSA9IFtdO1xuICAgICAgICBjb25zdCBleHAgPSAhIShleHBlcmllbmNlIHx8IGhvdGVscyk7XG5cbiAgICAgICAgaWYgKGV2ZW50IHx8IGV4cGVyaWVuY2UpIHtcbiAgICAgICAgICAgIGNvbnN0IHJhd0Rlc3RpbmF0aW9uczogYW55W10gPSAoZXZlbnQgPz8gZXhwZXJpZW5jZSA/PyBbXSlcbiAgICAgICAgICAgICAgICAuZmxhdCgpXG4gICAgICAgICAgICAgICAgLmZpbHRlcihCb29sZWFuKTtcblxuICAgICAgICAgICAgY29uc3QgZGVzdGluYXRpb25zOiBhbnlbXSA9IEFycmF5LmZyb20oXG4gICAgICAgICAgICAgICAgbmV3IE1hcChcbiAgICAgICAgICAgICAgICAgICAgcmF3RGVzdGluYXRpb25zLm1hcCgoZDogYW55KSA9PiBbTnVtYmVyKGQuaWQpLCBkXSlcbiAgICAgICAgICAgICAgICApLnZhbHVlcygpXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBjb25zdCByYXdJdGVtcyA9IGRlc3RpbmF0aW9ucy5tYXAoKGRlc3Q6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRyID0gZGVzdD8udGV4dHMgPz8gZGVzdD8udHJhbnNsYXRpb25zID8/IHt9O1xuICAgICAgICAgICAgICAgIGNvbnN0IHRpdGxlID1cbiAgICAgICAgICAgICAgICAgICAgdHI/LnRpdGxlID8/XG4gICAgICAgICAgICAgICAgICAgIGRlc3Q/Lm5hbWUgPz9cbiAgICAgICAgICAgICAgICAgICAgZGVzdD8ubmFtZV9pZGVudGlmaWVyID8/XG4gICAgICAgICAgICAgICAgICAgIGRlc3Q/LnRyYW5zbGF0aW9ucz8udGl0bGU7XG4gICAgICAgICAgICAgICAgY29uc3QgbmRUaXRsZSA9IHRyPy5sb2NhdGlvbiA/PyBkZXN0Py50cmFuc2xhdGlvbnM/LmxvY2F0aW9uO1xuICAgICAgICAgICAgICAgIGNvbnN0IGRhdGUgPSBkZXN0Py5kYXRldGltZT8uc3BsaXQoJyAnKT8uWzBdO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgYnV0dG9ucyA9IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgZGVzdD8uYnV0dG9ucyk7XG4gICAgICAgICAgICAgICAgY29uc3QgbGlua3MgPSBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGRlc3Q/LmxpbmtzKTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGZpcnN0SW1nID1cbiAgICAgICAgICAgICAgICAgICAgZGVzdD8ubXVsdGltZWRpYT8uZmluZCgobTogYW55KSA9PiBtPy5jb3ZlcikgPz8ge307XG4gICAgICAgICAgICAgICAgY29uc3QgaW1nID0gdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoZmlyc3RJbWcpO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgdGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIG5kVGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIGRhdGUsXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcjogTnVtYmVyKGRlc3Q/LmlkKSxcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyUGFyZW50OiB0cj8ubG9jYXRpb24sIC8vIHVzYW1vcyBsb2NhdGlvbiBjb21vIGFncnVwYWRvci9maWx0cm9cbiAgICAgICAgICAgICAgICAgICAgaW1nLFxuICAgICAgICAgICAgICAgICAgICBidXR0b25zLFxuICAgICAgICAgICAgICAgICAgICBsaW5rcyxcbiAgICAgICAgICAgICAgICB9IGFzIFB1cm9HcmlkM0NvbFBsdXNGaWx0ZXJJdGVtO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGl0ZW1zID0gQXJyYXkuZnJvbShcbiAgICAgICAgICAgICAgICBuZXcgTWFwKHJhd0l0ZW1zLm1hcCgoaSkgPT4gW2kuZmlsdGVyLCBpXSkpLnZhbHVlcygpXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBjb25zdCB2YWxpZFBhcmVudElkcyA9IG5ldyBTZXQoaXRlbXMubWFwKChpKSA9PiBpLmZpbHRlclBhcmVudCkpO1xuICAgICAgICAgICAgb3B0aW9ucyA9IEFycmF5LmZyb20odmFsaWRQYXJlbnRJZHMpLm1hcCgobG9jOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgY29kZTogbG9jLFxuICAgICAgICAgICAgICAgIG5hbWU6IGxvYyxcbiAgICAgICAgICAgIH0pKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChob3RlbHMpIHtcbiAgICAgICAgICAgIGl0ZW1zID0gaG90ZWxzLm1hcCgoaG90ZWw6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRyID0gaG90ZWw/LnRleHRzID8/IGhvdGVsPy50cmFuc2xhdGlvbnMgPz8ge307XG4gICAgICAgICAgICAgICAgY29uc3QgdGl0bGUgPSB0cj8ubmFtZSA/PyBob3RlbD8ubmFtZV9pZGVudGlmaWVyO1xuICAgICAgICAgICAgICAgIGNvbnN0IGxvY2F0aW9uID0gaG90ZWw/LmNpdHk7XG5cbiAgICAgICAgICAgICAgICAvLyBjb25zdCBidXR0b25zID0gVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICAvLyAgICAgaG90ZWw/LmJ1dHRvbnM/LlswXT8uc2l0ZUlkID8/IHRoaXMuc2l0ZUlkKCksXG4gICAgICAgICAgICAgICAgLy8gICAgIGhvdGVsPy5idXR0b25zPy5maWx0ZXIoKGJ0bjogYW55KSA9PiAhIWJ0bj8ubGlua1ZhbHVlKVxuICAgICAgICAgICAgICAgIC8vICk7XG4gICAgICAgICAgICAgICAgY29uc3QgbGlua3MgPSBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICBob3RlbD8ubGlua3M/LlswXT8uc2l0ZUlkID8/IHRoaXMuc2l0ZUlkKCksXG4gICAgICAgICAgICAgICAgICAgIGhvdGVsPy5saW5rc1xuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBmaXJzdEltZyA9XG4gICAgICAgICAgICAgICAgICAgIGhvdGVsPy5tdWx0aW1lZGlhPy5maW5kKChtOiBhbnkpID0+IG0/LmNvdmVyKSA/PyB7fTtcbiAgICAgICAgICAgICAgICBjb25zdCBpbWcgPSB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShmaXJzdEltZyk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICB0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgbmRUaXRsZTogbG9jYXRpb24sXG4gICAgICAgICAgICAgICAgICAgIGRhdGU6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyOiBOdW1iZXIoaG90ZWw/LmlkKSxcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyUGFyZW50OiBob3RlbC5jaXR5LFxuICAgICAgICAgICAgICAgICAgICBpbWcsXG4gICAgICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFtdLFxuICAgICAgICAgICAgICAgICAgICBsaW5rcyxcbiAgICAgICAgICAgICAgICB9IGFzIFB1cm9HcmlkM0NvbFBsdXNGaWx0ZXJJdGVtO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGNvbnN0IHZhbGlkQ2l0aWVzID0gbmV3IFNldChpdGVtcy5tYXAoKGkpID0+IGkuZmlsdGVyUGFyZW50KSk7XG4gICAgICAgICAgICBvcHRpb25zID0gQXJyYXkuZnJvbSh2YWxpZENpdGllcykubWFwKChjaXR5OiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgY29kZTogY2l0eSxcbiAgICAgICAgICAgICAgICBuYW1lOiBjaXR5LFxuICAgICAgICAgICAgfSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG11bHRpbWVkaWEpIHtcbiAgICAgICAgICAgIGl0ZW1zID0gbXVsdGltZWRpYT8uaW1hZ2VuZXM/Lm1hcCgoaW1nOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICB0aXRsZTogaW1nPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgbmRUaXRsZTogaW1nPy5uZFRpdGxlLFxuICAgICAgICAgICAgICAgICAgICBkYXRlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcjogTnVtYmVyKGltZz8uaWQpLFxuICAgICAgICAgICAgICAgICAgICBmaWx0ZXJQYXJlbnQ6IGltZy5hbHQsXG4gICAgICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaW1nKSxcbiAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2l0ZUlkKCksXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWc/LmJ1dHRvbnM/LmZpbHRlcigoYnRuOiBhbnkpID0+ICEhYnRuPy5saW5rVmFsdWUpXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zaXRlSWQoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGltZz8ubGlua3M/LmZpbHRlcigoYnRuOiBhbnkpID0+ICEhYnRuPy5saW5rVmFsdWUpXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBjb25zdCB2YWxpZEFsdHMgPSBuZXcgU2V0KGl0ZW1zLm1hcCgoaSkgPT4gaS5maWx0ZXJQYXJlbnQpKTtcbiAgICAgICAgICAgIG9wdGlvbnMgPSBBcnJheS5mcm9tKHZhbGlkQWx0cykubWFwKChhbHQ6IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICBjb2RlOiBhbHQsXG4gICAgICAgICAgICAgICAgbmFtZTogYWx0LFxuICAgICAgICAgICAgfSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGRlc3RpbmF0aW9ucykge1xuICAgICAgICAgICAgaXRlbXMgPSBkZXN0aW5hdGlvbnM/Lm1hcCgoaXRlbTogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0/LnRpdGxlID8/IGl0ZW0/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgIG5kVGl0bGU6IGl0ZW0/LnN1YnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICBkYXRlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcjogTnVtYmVyKGl0ZW0/LmlkKSxcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyUGFyZW50OiBpdGVtLnN1YnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGl0ZW0/Lm11bHRpbWVkaWE/LlswXSksXG4gICAgICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNpdGVJZCgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8uYnV0dG9ucy5maWx0ZXIoKGJ0bjogYW55KSA9PiAhIWJ0bj8ubGlua1ZhbHVlKVxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICBsaW5rczogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgY29uc3QgdmFsaWRTdWJ0aXRsZXMgPSBuZXcgU2V0KGl0ZW1zLm1hcCgoaSkgPT4gaS5maWx0ZXJQYXJlbnQpKTtcbiAgICAgICAgICAgIG9wdGlvbnMgPSBBcnJheS5mcm9tKHZhbGlkU3VidGl0bGVzKS5tYXAoKHN1YnRpdGxlOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgY29kZTogc3VidGl0bGUsXG4gICAgICAgICAgICAgICAgbmFtZTogc3VidGl0bGUsXG4gICAgICAgICAgICB9KSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyB0ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiB0ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgdGV4dHM/LnByZXRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHRleHRzPy5wcmV0aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHRleHRzPy5wcmV0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIGl0ZW1zLFxuICAgICAgICAgICAgZmlsdGVyOiB7XG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHRleHRzPy5wbGFjZWhvbGRlcixcbiAgICAgICAgICAgICAgICBvcHRpb25zLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgcHJvcHM/LmJ1dHRvbnMpID8/IFtdLFxuICAgICAgICAgICAgLy8gYmFja2dyb3VuZEltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAvLyAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF1cbiAgICAgICAgICAgIC8vICksXG4gICAgICAgICAgICBleHAsXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHRleHRzPy5wcmV0aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSBhcyBQdXJvR3JpZDNDb2xQbHVzRmlsdGVySTtcbiAgICB9XG5cbiAgICBtYXBGb290ZXJIb3RlbHMocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9Gb290ZXJIb3RlbHNJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGxvZ286IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKHByb3BzPy5tdWx0aW1lZGlhPy5sb2dvPy5bMF0pLFxuICAgICAgICAgICAgaXRlbXM6IHByb3BzPy5ob3RlbHM/Lm1hcChcbiAgICAgICAgICAgICAgICAoaG90ZWw6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbms6IFV0aWxzLm1hcEJ1dHRvbnMoMiwgaG90ZWwubGlua3MpWzBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGhvdGVsPy50ZXh0cz8ubmFtZSA/PyBob3RlbD8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBob3RlbD8udGV4dHM/LmxvY2F0aW9uRGVzY3JpcHRpb24gPz8gbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb0Zvb3RlckhvdGVsc0l0ZW1cbiAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgUHVyb0Zvb3RlckhvdGVsc0k7XG4gICAgfVxuXG4gICAgbWFwRm9vdGVyTGlua3MocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9Gb290ZXJMaW5rc0kgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAocHJvcHMpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgaW1nOiB7XG4gICAgICAgICAgICAgICAgICAgIC4uLnRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKHByb3BzLm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0pLFxuICAgICAgICAgICAgICAgICAgICBhbHQ6IHByb3BzPy50ZXh0cz8uaWNvbixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGxvZ286IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKHByb3BzLm11bHRpbWVkaWE/LmxvZ28/LlswXSksXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzLnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgICAgICBtZW1iZXJUaXRsZTogcHJvcHMudGV4dHM/Lm1lbWJlclRpdGxlLFxuICAgICAgICAgICAgICAgIG1lbWJlclByZXRpdGxlOiBwcm9wcy50ZXh0cz8ubWVtYmVyUHJldGl0bGUsXG4gICAgICAgICAgICAgICAgY29weXJpZ2h0OiBwcm9wcy50ZXh0cz8uY29weXJpZ2h0LFxuICAgICAgICAgICAgICAgIGxpbmtzOiBwcm9wcy5saW5rc1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzLmxpbmtzXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC5tYXAoKGxpbms6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2l0ZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluay5zaXRlSWQgPz9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rLnNpdGVfaWQgPz9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rLnNpdGUgPz9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNpdGVJZCgpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gVXRpbHMubWFwQnV0dG9ucyhzaXRlLCBsaW5rKVswXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbHRlcihCb29sZWFuKVxuICAgICAgICAgICAgICAgICAgICA6IFtdLFxuICAgICAgICAgICAgfSBhcyBQdXJvRm9vdGVyTGlua3NJO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBtYXBGb290ZXJCZWFjaHMocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9Gb290ZXJCZWFjaHNJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8uaG90ZWxzPy5tYXAoXG4gICAgICAgICAgICAgICAgKGhvdGVsOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBsaW5rOiBVdGlscy5tYXBCdXR0b25zKDMsIGhvdGVsLmxpbmtzKVswXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBob3RlbD8udGV4dHM/Lm5hbWUgPz8gaG90ZWwubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBob3RlbD8udGV4dHM/LmxvY2F0aW9uRGVzY3JpcHRpb24gPz8gbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb0Zvb3RlckJlYWNoc0l0ZW1cbiAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgUHVyb0Zvb3RlckJlYWNoc0k7XG4gICAgfVxuXG4gICAgbWFwSW5mb0xpc3QocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9JbmZvTGlzdEkgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCB7IHRleHRzLCBtdWx0aW1lZGlhLCBBZHZhbnRhZ2VzIH0gPSBwcm9wcztcbiAgICAgICAgY29uc3QgeyBiYWNrZ3JvdW5kaW1hZ2UsIGltYWdlbmVzLCBzbWFsbGltYWdlIH0gPSBtdWx0aW1lZGlhO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyB0ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiB0ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogdGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgaXRlbXM6IEFycmF5KC4uLihBZHZhbnRhZ2VzIHx8IFtdKSk/Lm1hcChcbiAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PiBpdGVtLnRpdGxlIGFzIHN0cmluZ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaW1hZ2VuZXM/LlswXSksXG4gICAgICAgICAgICBzbWFsbEltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoc21hbGxpbWFnZT8uWzBdKSxcbiAgICAgICAgICAgIGJhY2tncm91bmRJbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGJhY2tncm91bmRpbWFnZT8uWzBdKSxcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICB9LFxuICAgICAgICB9IGFzIFB1cm9JbmZvTGlzdEk7XG4gICAgfVxuXG4gICAgbWFwU2xpZGVyM0NvbFJvdW5kKFxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkXG4gICAgKTogUHVyb1NsaWRlcjNDb2xSb3VuZEkgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCB7IHRleHRzLCBidXR0b25zLCBtdWx0aW1lZGlhLCBwb3N0cyB9ID0gcHJvcHM7XG4gICAgICAgIGxldCBpdGVtczogUHVyb1NsaWRlcjNDb2xSb3VuZEl0ZW1bXSA9IFtdO1xuXG4gICAgICAgIGlmIChtdWx0aW1lZGlhKSB7XG4gICAgICAgICAgICBpdGVtcyA9IG11bHRpbWVkaWE/LmltYWdlbmVzPy5tYXAoXG4gICAgICAgICAgICAgICAgKGltZzogSW1hZ2VSZXNwb25zZSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpbWc/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpbWcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGluazogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNpdGVJZCgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZz8ubGlua3MgfHwgW11cbiAgICAgICAgICAgICAgICAgICAgICAgIClbMF0sXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9TbGlkZXIzQ29sUm91bmRJdGVtXG4gICAgICAgICAgICApO1xuICAgICAgICB9IGVsc2UgaWYgKHBvc3RzKSB7XG4gICAgICAgICAgICBpdGVtcyA9IHBvc3RzPy5tYXAoKGl0ZW06IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGlkZW50aWZpZXIgPVxuICAgICAgICAgICAgICAgICAgICBpdGVtPy5ibG9ncz8uWzBdPy5uYW1lSWRlbnRpZmllcj8udG9Mb3dlckNhc2UoKSB8fCAnJztcbiAgICAgICAgICAgICAgICBjb25zdCBub3JtYWxpemVkID0gaWRlbnRpZmllci50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL1xccysvZywgJycpO1xuICAgICAgICAgICAgICAgIGxldCBzaXRlSWQgPSAxO1xuXG4gICAgICAgICAgICAgICAgaWYgKG5vcm1hbGl6ZWQuaW5jbHVkZXMoJ3B1cm9ob3RlbHMnKSkge1xuICAgICAgICAgICAgICAgICAgICBzaXRlSWQgPSAyO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobm9ybWFsaXplZC5pbmNsdWRlcygncHVyb2JlYWNoJykpIHtcbiAgICAgICAgICAgICAgICAgICAgc2l0ZUlkID0gMztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdCBidXR0b24gPSBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICBzaXRlSWQsXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0/LmJ1dHRvbnMgfHwgW11cbiAgICAgICAgICAgICAgICApPy5bMF07XG5cbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaXRlbT8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGl0ZW0/Lm11bHRpbWVkaWE/LlswXSksXG4gICAgICAgICAgICAgICAgICAgIGxpbms6IGJ1dHRvbixcbiAgICAgICAgICAgICAgICB9IGFzIFB1cm9TbGlkZXIzQ29sUm91bmRJdGVtO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBzdWJ0aXRsZTogdGV4dHM/LnN1YnRpdGxlLFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGJ1dHRvbnMpWzBdLFxuICAgICAgICAgICAgaXRlbXMsXG4gICAgICAgIH0gYXMgUHVyb1NsaWRlcjNDb2xSb3VuZEk7XG4gICAgfVxuXG4gICAgbWFwSW5mb0ludHJvKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvSW5mb0ludHJvSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmIChwcm9wcykge1xuICAgICAgICAgICAgY29uc3QgeyB0ZXh0cywgYnV0dG9ucyB9ID0gcHJvcHM7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOlxuICAgICAgICAgICAgICAgICAgICB0eXBlb2YgdGV4dHM/LnByZXRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICAgICAgPyB0ZXh0cz8ucHJldGl0bGVcbiAgICAgICAgICAgICAgICAgICAgICAgIDogdGV4dHM/LnByZXRpdGxlPy5jb250YWluLFxuXG4gICAgICAgICAgICAgICAgdGl0bGU6IHRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA/IHR5cGVvZiB0ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICAgICAgOiB0ZXh0cz8udGl0bGU/LmNvbnRhaW5cbiAgICAgICAgICAgICAgICAgICAgOiB0ZXh0cz8ubmFtZSxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogdGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uSGlkZGVuOlxuICAgICAgICAgICAgICAgICAgICB0ZXh0cz8uZGVzY3JpcHRpb25BZGRpdGlvbmFsID8/IHRleHRzLmRlc2NyaXB0aW9uQWRpY2lvbmFsLFxuICAgICAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaXRlSWQoKSxcbiAgICAgICAgICAgICAgICAgICAgYnV0dG9ucz8uZmlsdGVyKChidG46IGFueSkgPT4gISFidG4/LmxpbmtWYWx1ZSlcbiAgICAgICAgICAgICAgICApWzBdLFxuICAgICAgICAgICAgICAgIHNlZUxlc3M6IHRleHRzPy5idXR0b25NZW5vc2luZm8sXG4gICAgICAgICAgICAgICAgc2VlTW9yZTogdGV4dHM/LmJ1dHRvbk1hc2luZm8sXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZEltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOiB0ZXh0cz8ucHJldGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgICAgICBwcmV0aXRsZTogdGV4dHM/LnByZXRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9IGFzIFB1cm9JbmZvSW50cm9JO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIG1hcEltZ0luZm8oXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWQsXG4gICAgICAgIG5hbWU/OiAnaW1naW5mb3JpZ2h0JyB8ICdpbWdpbmZvbGVmdCdcbiAgICApOiBQdXJvSW1nSW5mb0kgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCB7IHRleHRzLCBtdWx0aW1lZGlhIH0gPSBwcm9wcztcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBzZWN0aW9uczogcHJvcHM/Lk1lbnU/LlswXT8uY2hpbGRyZW5zPy5tYXAoKHNlY3Rpb246IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICB0aXRsZTogc2VjdGlvbi50aXRsZSxcbiAgICAgICAgICAgICAgICBpdGVtczogc2VjdGlvbj8ubWVudT8ubWFwKChpdGVtOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICBwcmljZTogaXRlbS5wcmljZSxcbiAgICAgICAgICAgICAgICAgICAgaWNvbnM6IGl0ZW0uaWNvbnM/Lm1hcCgoaWNvbjogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogJ2ljb24tJyArIChpY29uPy5jbGFzcyB8fCBpY29uPy5pY29uKSxcbiAgICAgICAgICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaXRlbS5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICB9KSksXG4gICAgICAgICAgICB9KSksXG4gICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKG11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0pLFxuICAgICAgICAgICAgcmlnaHRTaWRlOiBuYW1lPy5pbmNsdWRlcygncmlnaHQnKSxcbiAgICAgICAgfSBhcyBQdXJvSW1nSW5mb0k7XG4gICAgfVxuXG4gICAgbWFwVG9wU2xpZGVyKFxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkLFxuICAgICAgICBhY3Rpb25zOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHwgdW5kZWZpbmVkXG4gICAgKTogUHVyb1RvcFNsaWRlckkgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCB7IHRleHRzLCBtdWx0aW1lZGlhIH0gPSBwcm9wcztcblxuICAgICAgICBjb25zdCBpbWFnZXMgPSB0aGlzLmdldEFycmF5SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgbXVsdGltZWRpYT8uaW1hZ2VzIHx8IG11bHRpbWVkaWE/Lm11bHRpbWVkaWEgfHwgbXVsdGltZWRpYT8uaW1hZ2VuZXNcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCBpbWFnZXNNb2JpbGUgPSB0aGlzLmdldEFycmF5SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgbXVsdGltZWRpYS5pbWFnZW5lc21vYmlsZSB8fCBbXVxuICAgICAgICApO1xuXG4gICAgICAgIC8vIFByZWNhcmdhIGRpbsOhbWljYSBkZSBsYSBwcmltZXJhIGltYWdlbiBkZWwgc2xpZGVyXG4gICAgICAgIGlmIChpbWFnZXM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgY29uc3QgaGVyb0ltZyA9IG5ldyBJbWFnZSgpO1xuICAgICAgICAgICAgaGVyb0ltZy5zcmMgPSBpbWFnZXNbMF0uc3JjO1xuICAgICAgICAgICAgaGVyb0ltZy5kZWNvZGluZyA9ICdhc3luYyc7XG4gICAgICAgICAgICBoZXJvSW1nLnNldEF0dHJpYnV0ZSgnZmV0Y2hwcmlvcml0eScsICdoaWdoJyk7XG4gICAgICAgICAgICBoZXJvSW1nLmxvYWRpbmcgPSAnZWFnZXInO1xuXG4gICAgICAgICAgICBpZiAoaW1hZ2VzPy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcHJlZmV0Y2ggPSBuZXcgSW1hZ2UoKTtcbiAgICAgICAgICAgICAgICBwcmVmZXRjaC5zcmMgPSBpbWFnZXNbMV0uc3JjO1xuICAgICAgICAgICAgICAgIHByZWZldGNoLmRlY29kaW5nID0gJ2FzeW5jJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpbWFnZXNNb2JpbGU/Lmxlbmd0aCkge1xuICAgICAgICAgICAgY29uc3QgaGVyb0ltZyA9IG5ldyBJbWFnZSgpO1xuICAgICAgICAgICAgaGVyb0ltZy5zcmMgPSBpbWFnZXNNb2JpbGVbMF0uc3JjO1xuICAgICAgICAgICAgaGVyb0ltZy5kZWNvZGluZyA9ICdhc3luYyc7XG4gICAgICAgICAgICBoZXJvSW1nLnNldEF0dHJpYnV0ZSgnZmV0Y2hwcmlvcml0eScsICdoaWdoJyk7XG4gICAgICAgICAgICBoZXJvSW1nLmxvYWRpbmcgPSAnZWFnZXInO1xuXG4gICAgICAgICAgICBpZiAoaW1hZ2VzTW9iaWxlPy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcHJlZmV0Y2ggPSBuZXcgSW1hZ2UoKTtcbiAgICAgICAgICAgICAgICBwcmVmZXRjaC5zcmMgPSBpbWFnZXNNb2JpbGVbMV0uc3JjO1xuICAgICAgICAgICAgICAgIHByZWZldGNoLmRlY29kaW5nID0gJ2FzeW5jJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgc3VidGl0bGU6IHRleHRzPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgIHByZXRpdGxlOiB0ZXh0cz8ucHJldGl0bGUsXG4gICAgICAgICAgICBzcG90aWZ5OiB7XG4gICAgICAgICAgICAgICAgbGFiZWw6IGFjdGlvbnM/Llsnc3BvdGlmeSddLFxuICAgICAgICAgICAgICAgIGxpbmtUeXBlOiAnZXh0ZXJuYWwnLFxuICAgICAgICAgICAgICAgIHVybDogYWN0aW9ucz8uWydzcG9ydGlmeUxpbmsnXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBmaWRlbGl0eToge1xuICAgICAgICAgICAgICAgIGxhYmVsOiBhY3Rpb25zPy5bJ2ZpZGVsaXR5J10sXG4gICAgICAgICAgICAgICAgbGlua1R5cGU6ICdleHRlcm5hbCcsXG4gICAgICAgICAgICAgICAgdXJsOiBhY3Rpb25zPy5bJ2ZpZGVsaXR5TGluayddLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5ld3NsZXR0ZXI6IHtcbiAgICAgICAgICAgICAgICBsYWJlbDogYWN0aW9ucz8uWyduZXdzbGV0dGVyJ10sXG4gICAgICAgICAgICAgICAgbGlua1R5cGU6ICdleHRlcm5hbCcsXG4gICAgICAgICAgICAgICAgdXJsOiBhY3Rpb25zPy5bJ25ld3NsZXR0ZXJMaW5rJ10sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGFuZ3VhZ2VzOiBhY3Rpb25zPy5bJ2xhbmd1YWdlJ10sXG4gICAgICAgICAgICBzZWxlY3RlZExhbmd1YWdlOlxuICAgICAgICAgICAgICAgIHRoaXMuc2l0ZVN2Yy5zZWxlY3RlZExhbmd1YWdlSW5zdGFudD8ubG9jYXRlPy50b0xvY2FsZVVwcGVyQ2FzZSgpLFxuICAgICAgICAgICAgdmlkZW86IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIG1haW5UaXRsZTogdGV4dHM/Lm1haW5UaXRsZSxcbiAgICAgICAgICAgIGltYWdlcyxcbiAgICAgICAgICAgIGltYWdlc01vYmlsZSxcbiAgICAgICAgfSBhcyBQdXJvVG9wU2xpZGVySTtcbiAgICB9XG5cbiAgICBtYXBJbmZvQmFubmVyKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvSW5mb0Jhbm5lckkgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAocHJvcHMpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgdGV4dHMsIG11bHRpbWVkaWEgfSA9IHByb3BzO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgICAgIGl0ZW1zOiBtdWx0aW1lZGlhPy5pbWFnZW5lcz8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAoaW1nOiBJbWFnZVJlc3BvbnNlKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2l0ZUlkKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZy5idXR0b25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVswXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaW1nPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaW1nPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGltZyksXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvSW5mb0Jhbm5lckl0ZW1cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgfSBhcyBQdXJvSW5mb0Jhbm5lckk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBtYXBTY2hlZHVsZShwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb1NjaGVkdWxlSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmIChwcm9wcykge1xuICAgICAgICAgICAgY29uc3QgeyB0ZXh0cywgQWR2YW50YWdlcyB9ID0gcHJvcHM7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICAgICAgaXRlbXM6IEFycmF5KC4uLihBZHZhbnRhZ2VzIHx8IFtdKSk/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb246IGBpY29uLSR7aXRlbT8uaWNvbn1gLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpdGVtPy50ZXh0LFxuICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb1NjaGVkdWxlSXRlbVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICB9IGFzIFB1cm9TY2hlZHVsZUk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBtYXBJbmZvU2VydmljZXMoXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWQsXG4gICAgICAgIHZpZXc6IFB1cm9WaWV3c1R5cGUgfCB1bmRlZmluZWRcbiAgICApOiBQdXJvSW5mb1NlcnZpY2VzSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IHsgdGV4dHMsIHNlcnZpY2VzU2VydmljZSwgQWR2YW50YWdlcywgbXVsdGltZWRpYSwgYnV0dG9ucyB9ID1cbiAgICAgICAgICAgIHByb3BzO1xuICAgICAgICBsZXQgaXRlbXMgPSBbXTtcbiAgICAgICAgaWYgKEFkdmFudGFnZXMpIHtcbiAgICAgICAgICAgIGl0ZW1zID0gQWR2YW50YWdlcz8ubWFwKFxuICAgICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8ubmFtZSA/PyBpdGVtPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBpdGVtPy5kZXNjcmlwdGlvbiA/PyBpdGVtPy50ZXh0LFxuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogYGljb24tJHtpdGVtPy5jbGFzcyA/PyBpdGVtPy5pY29ufWAsXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9JbmZvU2VydmljZXNJdGVtXG4gICAgICAgICAgICApO1xuICAgICAgICB9IGVsc2UgaWYgKHNlcnZpY2VzU2VydmljZSkge1xuICAgICAgICAgICAgaXRlbXMgPSBzZXJ2aWNlc1NlcnZpY2U/Lm1hcChcbiAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0/Lm5hbWUgPz8gaXRlbT8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaXRlbT8uZGVzY3JpcHRpb24gPz8gaXRlbT8udGV4dCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb246IGBpY29uLSR7aXRlbT8uY2xhc3MgPz8gaXRlbT8uaWNvbn1gLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvSW5mb1NlcnZpY2VzSXRlbVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICB0aGlzLnNpdGVJZCgpLFxuICAgICAgICAgICAgICAgIGJ1dHRvbnMuZmlsdGVyKChidG46IGFueSkgPT4gISFidG4/LmxpbmtWYWx1ZSlcbiAgICAgICAgICAgIClbMF0sXG4gICAgICAgICAgICBpbWFnZXM6IHRoaXMuZ2V0QXJyYXlJbWFnZVJlc3BvbnNpdmUobXVsdGltZWRpYT8uaW1hZ2VuZXMgfHwgW10pLFxuICAgICAgICAgICAgaXRlbXM6IGl0ZW1zLFxuICAgICAgICAgICAgdmlldzogdGhpcy5nZXRWaWV3KHZpZXcpLFxuICAgICAgICB9IGFzIFB1cm9JbmZvU2VydmljZXNJO1xuICAgIH1cblxuICAgIG1hcExpc3RHZW5lcmFsKFxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkLFxuICAgICAgICBuYW1lPzogJ2xpc3RuZXdzcmlnaHQnIHwgJ2xpc3RuZXdzbGVmdCdcbiAgICApOiBhbnkgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCB7IG9mZmVycywgcm9vbXMsIG11bHRpbWVkaWEsIGhvdGVscywgdGV4dHMsIGJ1dHRvbnMgfSA9IHByb3BzO1xuICAgICAgICBsZXQgaXRlbXM6IFB1cm9MaXN0R2VuZXJhbEl0ZW1bXSA9IFtdO1xuXG4gICAgICAgIGlmIChvZmZlcnMpIHtcbiAgICAgICAgICAgIGl0ZW1zID0gb2ZmZXJzPy5tYXAoXG4gICAgICAgICAgICAgICAgKG9mZmVyOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogb2ZmZXI/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBvZmZlcj8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2VzOiB0aGlzLmdldEFycmF5SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZmVyLm11bHRpbWVkaWEgfHwgW11cbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBvZmZlcj8ubGlua3MpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLlV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgb2ZmZXI/LmJ1dHRvbnMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb0xpc3RHZW5lcmFsSXRlbVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIGlmIChyb29tcykge1xuICAgICAgICAgICAgaXRlbXMgPSByb29tcz8ubWFwKChpdGVtOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIWl0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgeyB0ZXh0cywgZXF1aXBtZW50LCBtdWx0aW1lZGlhIH0gPSBpdGVtO1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IHRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgc3VidGl0bGU6IHRleHRzPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgcHJldGl0bGU6IHRleHRzPy5wcmV0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgZXF1aXBtZW50OiBlcXVpcG1lbnQ/LnNsaWNlKDAsIDMpPy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb246ICdpY29uLScgKyBpdGVtPy5jbGFzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6IGl0ZW0ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgICAgICAgICBpbWFnZXM6IHRoaXMuZ2V0QXJyYXlJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgICAgICAgICBtdWx0aW1lZGlhPy5maWx0ZXIoKGltZzogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZz8udGFncz8uc29tZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRhZzogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFnID09PSAnTGlzdFJvb21zJyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFnPy5uYW1lID09PSAnTGlzdFJvb21zJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2l0ZUlkKCksXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy5idXR0b25zLnJldmVyc2UoKVxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIH0gYXMgUHVyb0xpc3RHZW5lcmFsSXRlbTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2UgaWYgKGhvdGVscykge1xuICAgICAgICAgICAgaXRlbXMgPSBob3RlbHM/Lm1hcChcbiAgICAgICAgICAgICAgICAoaG90ZWw6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBob3RlbD8udGV4dHM/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaG90ZWw/LnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBob3RlbD8udGV4dHM/LnN1YnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJldGl0bGU6IGhvdGVsPy50ZXh0cz8ucHJldGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWFnZXM6IHRoaXMuZ2V0QXJyYXlJbWFnZVJlc3BvbnNpdmUoaG90ZWw/Lm11bHRpbWVkaWEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgaG90ZWw/LmxpbmtzKVswXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5VdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGhvdGVsPy5idXR0b25zKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9MaXN0R2VuZXJhbEl0ZW1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSBpZiAobXVsdGltZWRpYSkge1xuICAgICAgICAgICAgaXRlbXMgPSBtdWx0aW1lZGlhPy5pbWFnZW5lcz8ubWFwKFxuICAgICAgICAgICAgICAgIChpbWc6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZz8udGl0bGUgJiYgaW1nPy50aXRsZS50cmltKCkgIT09ICcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gaW1nLnRpdGxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nPy5kZXNjcmlwdGlvbiAmJiBpbWc/LmRlc2NyaXB0aW9uLnRyaW0oKSAhPT0gJydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBpbWcuZGVzY3JpcHRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB0ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWFnZXM6IHRoaXMuZ2V0QXJyYXlJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGltZWRpYT8uaW1hZ2VuZXMgfHwgW11cbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2dvOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShtdWx0aW1lZGlhPy5sb2dvPy5bMF0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLlV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgaW1nPy5idXR0b25zKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9MaXN0R2VuZXJhbEl0ZW1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgaXRlbXMsXG4gICAgICAgICAgICByaWdodFNpZGU6IG5hbWU/LmluY2x1ZGVzKCdyaWdodCcpLFxuICAgICAgICB9IGFzIFB1cm9MaXN0R2VuZXJhbEk7XG4gICAgfVxuXG4gICAgbWFwTGlzdFJlc3RhdXJhbnRzKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvTGlzdFJlc3RhdXJhbnRzSSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8ucmVzdGF1cmFudHM/Lm1hcChcbiAgICAgICAgICAgICAgICAocmVzdGF1cmFudDogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHJlc3RhdXJhbnQ/LnRleHRzPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IHJlc3RhdXJhbnQ/LnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlOiByZXN0YXVyYW50Py50ZXh0cz8uc3VidGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmV0aXRsZTogcmVzdGF1cmFudD8udGV4dHM/LnByZXRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2VzOiB0aGlzLmdldEFycmF5SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3RhdXJhbnQ/Lm11bHRpbWVkaWE/LmZpbHRlcigoaW1nOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZz8udGFncz8uc29tZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0YWc6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWcgPT09ICdMaXN0UmVzdGF1cmFudHMnIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFnPy5uYW1lID09PSAnTGlzdFJlc3RhdXJhbnRzJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNpdGVJZCgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN0YXVyYW50Py5idXR0b25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi4ocmVzdGF1cmFudD8ubG9nb3M/Lmxlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ286IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjOiByZXN0YXVyYW50Py5sb2dvcz8uWzBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ6IHJlc3RhdXJhbnQ/LnRleHRzPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gYXMgUHVyb0ltYWdlSSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHt9KSxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb0xpc3RSZXN0YXVyYW50SXRlbUlcbiAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgUHVyb0xpc3RSZXN0YXVyYW50c0k7XG4gICAgfVxuXG4gICAgbWFwRW5naW5lKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvRW5naW5lSSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBidXR0b246IHsgbGFiZWw6IHByb3BzPy50ZXh0cz8ubW90b3JTdWJtaXQsIHVybDogcHJvcHM/LnVybCB9LFxuICAgICAgICAgICAgZGF0ZXBpY2tlckluOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8ubW90b3JEYXRlVGl0bGU/LnNwbGl0KCctJyk/LlswXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBkYXRlcGlja2VyT3V0OiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8ubW90b3JEYXRlVGl0bGU/LnNwbGl0KCctJyk/LlsxXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBndWVzdHNJbnB1dDoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/Lm1vdG9yR3Vlc3RzSW5wdXRIb2xkZXIsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcHJvbW9JbnB1dDoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/Lm1vdG9yUHJvbW9Ib2xkZXIsXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBidG5BcHBseTogeyBsYWJlbDogcHJvcHM/LnRleHRzPy5tb3RvckFwcGx5IH0sXG4gICAgICAgICAgICBhZHVsdHNEcm9wZG93bjoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/Lm1vdG9yQWR1bHRzVGl0bGUsXG4gICAgICAgICAgICAgICAgb3B0aW9uczogdGhpcy5nZW5lcmF0ZUFnZXNPcHRpb25zKHByb3BzPy5tYXhBZHVsdHMsIDEpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGtpZHNEcm9wZG93bjoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/Lm1vdG9yS2lkc1RpdGxlLFxuICAgICAgICAgICAgICAgIG9wdGlvbnM6IHRoaXMuZ2VuZXJhdGVBZ2VzT3B0aW9ucyhwcm9wcz8ubWF4Q2hpbGRyZW4pLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxvY2F0aW9uRHJvcGRvd246IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5tb3RvckRyb3BEb3duSG9sZGVyLFxuICAgICAgICAgICAgICAgIG9wdGlvbnM6IFtcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogJ2FsbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBwcm9wcz8udGV4dHM/Lm1vdG9yRHJvcERvd25OYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBwcm9wcz8udXJsLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAuLi4ocHJvcHM/LmhvdGVscz8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAgICAgKGhvdGVsOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogaG90ZWw/Lm1vZGVsSWQgPz8gNCwgLy8gZmFsdGEgbW9kZWxJZCBwYXJhIGxhIFVSTCBnZW5lcmFkYSBwb3IgcGFydGUgZGUgQmFja1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBob3RlbD8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBob3RlbD8udXJsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIERyb3Bkb3duT3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICkgPz8gW10pLFxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8ubW90b3JUaXRsZSxcbiAgICAgICAgICAgIHVybDogcHJvcHM/LnVybCxcbiAgICAgICAgICAgIGhvdGVsOiBwcm9wcz8uaG90ZWxzPy5bMF0sXG4gICAgICAgIH0gYXMgUHVyb0VuZ2luZUk7XG4gICAgfVxuXG4gICAgbWFwRW5naW5lTW9kYWwoXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWQsXG4gICAgICAgIGVuZ2luZU1hcHBlZDogUHVyb0VuZ2luZUlcbiAgICApOiBQdXJvRW5naW5lTW9kYWxJIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlQWR2YW50YWdlczpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5hZHZhbnRhZ2VzVGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5hZHZhbnRhZ2VzVGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LmFkdmFudGFnZXNUaXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5hZHZhbnRhZ2VzVGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8uYWR2YW50YWdlc1RpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGVuZ2luZTogZW5naW5lTWFwcGVkLFxuICAgICAgICAgICAgYWR2YW50YWdlczogcHJvcHM/Lml0ZW1zPy5tYXAoXG4gICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb246IGl0ZW0/Lmljb24sXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9BZHZhbnRhZ2VzSXRlbVxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBQdXJvRW5naW5lTW9kYWxJO1xuICAgIH1cblxuICAgIG1hcFdlYm1hcChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb1dlYm1hcEkgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbGlua3M6IHByb3BzPy5wYWdlc1xuICAgICAgICAgICAgICAgIC5maWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgIChsaW5rOiBQdXJvQnV0dG9uSSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmsudXJsPy5zcGxpdCgnLycpWzFdID09PVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zaXRlU3ZjLnNlbGVjdGVkTGFuZ3VhZ2VJbnN0YW50Py5sb2NhdGVcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChsaW5rOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBsaW5rLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBVdGlscy51cmxWYWxpZGF0aW9uKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rLnVybCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ludGVybmFsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zaXRlSWQoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua1R5cGU6ICdpbnRlcm5hbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvQnV0dG9uSVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF1cbiAgICAgICAgICAgICkgYXMgUHVyb0ltYWdlSSxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBtYXBQaG90b1NsaWRlcihcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZCxcbiAgICAgICAgcmV2ZXJzZTogYm9vbGVhblxuICAgICk6IFB1cm9QaG90b1NsaWRlckkgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZSxcbiAgICAgICAgICAgIHN1YnRpdGxlOiBwcm9wcz8udGV4dHM/LnN1YnRpdGxlLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgdGhpcy5zaXRlSWQoKSxcbiAgICAgICAgICAgICAgICBwcm9wcz8uYnV0dG9ucz8uZmlsdGVyKChidG46IGFueSkgPT4gISFidG4/LmxpbmtWYWx1ZSlcbiAgICAgICAgICAgIClbMF0sXG4gICAgICAgICAgICBpbWc6IHRoaXMuZ2V0QXJyYXlJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzIHx8IFtdXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgcmV2ZXJzZSxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBtYXBCYW5uZXI0Q29sKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvQmFubmVyNENvbEkgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBwcm9wcz8uYnV0dG9ucylbMF0sXG4gICAgICAgICAgICBpbWFnZXM6IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8ubGVuZ3RoXG4gICAgICAgICAgICAgICAgPyB0aGlzLmdldEFycmF5SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgICAgICAgIHByb3BzLm11bHRpbWVkaWEuaW1hZ2ViaWc/Lmxlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICA/IHByb3BzLm11bHRpbWVkaWEuaW1hZ2VuZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgOiBwcm9wcy5tdWx0aW1lZGlhLmltYWdlbmVzLnNsaWNlKDEpXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgOiBbXSxcblxuICAgICAgICAgICAgYmlnYmFubmVyOiBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2ViaWc/LlswXVxuICAgICAgICAgICAgICAgID8gdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUocHJvcHMubXVsdGltZWRpYS5pbWFnZWJpZ1swXSlcbiAgICAgICAgICAgICAgICA6IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdXG4gICAgICAgICAgICAgICAgICA/IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKHByb3BzLm11bHRpbWVkaWEuaW1hZ2VuZXNbMF0pXG4gICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGJpZ3RpdGxlOiAnJyxcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRleHRDb2xvcnM6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0gYXMgUHVyb0Jhbm5lcjRDb2xJO1xuICAgIH1cblxuICAgIG1hcENvbnRhY3RGb3JtKFxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkLFxuICAgICAgICBuZFByb3BzQ29uc3VsdDogYW55IHwgdW5kZWZpbmVkXG4gICAgKTogUHVyb0NvbnRhY3RGb3JtSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IHByZWZpeFZhbHVlcyA9IE9iamVjdC52YWx1ZXMocHJvcHM/LnByZWZpeGVzIHx8IHt9KSBhcyBzdHJpbmdbXTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgc3VidGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8uc3VidGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5zdWJ0aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8uc3VidGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgc3VidGl0bGU6IHByb3BzPy50ZXh0cz8uc3VidGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRleHRDb2xvcnM6IHtcbiAgICAgICAgICAgICAgICBzdWJ0aXRsZTogcHJvcHM/LnRleHRzPy5zdWJ0aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjb25kaXRpb25zTGluazogcHJvcHM/LnRleHRzPy5jb25kaXRpb25zTGlua3MsXG4gICAgICAgICAgICBwcm9tb3Rpb25zOiBwcm9wcz8udGV4dHM/LnByb21vdGlvbnMsXG4gICAgICAgICAgICByZXF1aXJlZExhYmVsOiBwcm9wcz8udGV4dHM/LnJlcXVpcmVkTGFiZWwsXG4gICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdKSxcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBwcm9wcz8uYnV0dG9ucylbMF0sXG4gICAgICAgICAgICB0ZXh0YXJlYToge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LmlucHV0TWVzc2FnZSxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5pbnB1dE1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgIHZhbGlkOiBzaWduYWwodHJ1ZSksXG4gICAgICAgICAgICAgICAgbmFtZTogJ21lc3NhZ2UnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGRyb3Bkb3duOiB7XG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uZHJvcGRvd24sXG4gICAgICAgICAgICAgICAgb3B0aW9uczogcHJvcHM/LmhvdGVscz8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAocHJvcDogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgKHsgY29kZTogcHJvcD8uaWQsIG5hbWU6IHByb3A/Lm5hbWUgfSkgYXMgRHJvcGRvd25PcHRpb25cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5kRHJvcGRvd246IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5jb25zdWx0dHlwZSxcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBuZFByb3BzQ29uc3VsdD8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAocHJvcDogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiBwcm9wPy5jb25zdWx0VHlwZUlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHByb3A/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBEcm9wZG93bk9wdGlvblxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcHJlZml4OiB7XG4gICAgICAgICAgICAgICAgb3B0aW9uczogcHJlZml4VmFsdWVzLm1hcChcbiAgICAgICAgICAgICAgICAgICAgKHByZWZpeDogc3RyaW5nLCBpbmRleDogbnVtYmVyKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiBpbmRleCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBwcmVmaXgsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBEcm9wZG93bk9wdGlvblxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8ucHJlZml4ZXMsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaW5wdXROYW1lOiB7XG4gICAgICAgICAgICAgICAgbmFtZTogVXRpbHMubm9ybWFsaXplQ29udHJvbE5hbWUoXG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uaW5wdXROYW1lLFxuICAgICAgICAgICAgICAgICAgICAnbmFtZSdcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LmlucHV0TmFtZSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICAgIGVycm9yOiBwcm9wcz8udGV4dHM/LmVycm9yTmFtZSxcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHNpZ25hbCh0cnVlKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBpbnB1dFN1cm5hbWU6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5zdXJuYW1lcyxcbiAgICAgICAgICAgICAgICBuYW1lOiBVdGlscy5ub3JtYWxpemVDb250cm9sTmFtZShcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5zdXJuYW1lcyxcbiAgICAgICAgICAgICAgICAgICAgJ3N1cm5hbWUnXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5zdXJuYW1lcyxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICAgIGVycm9yOiBwcm9wcz8udGV4dHM/LmVycm9yTmFtZSxcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHNpZ25hbCh0cnVlKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlbWFpbElucHV0OiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8uaW5wdXRFbWFpbCxcbiAgICAgICAgICAgICAgICBuYW1lOiBVdGlscy5ub3JtYWxpemVDb250cm9sTmFtZShcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5pbnB1dEVtYWlsLFxuICAgICAgICAgICAgICAgICAgICAnZW1haWwnXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5pbnB1dEVtYWlsLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgICAgICB0eXBlOiAnZW1haWwnLFxuICAgICAgICAgICAgICAgIGVycm9yOiBwcm9wcz8udGV4dHM/LmVycm9yRW1haWwsXG4gICAgICAgICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMuZW1haWwsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgIHZhbGlkOiBzaWduYWwodHJ1ZSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcGhvbmVJbnB1dDoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LmlucHV0UGhvbmUsXG4gICAgICAgICAgICAgICAgbmFtZTogVXRpbHMubm9ybWFsaXplQ29udHJvbE5hbWUoXG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uaW5wdXRQaG9uZSxcbiAgICAgICAgICAgICAgICAgICAgJ3Bob25lJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uaW5wdXRQaG9uZSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgdHlwZTogJ3RlbCcsXG4gICAgICAgICAgICAgICAgZXJyb3I6IHByb3BzPy50ZXh0cz8uZXJyb3JQaG9uZSxcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHNpZ25hbCh0cnVlKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0gYXMgUHVyb0NvbnRhY3RGb3JtSTtcbiAgICB9XG5cbiAgICBtYXBJbmZvU2xpZGVyKHByb3BzOiBhbnkgfCB1bmRlZmluZWQsIHJldmVyc2U6IGJvb2xlYW4pOiBhbnkgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCB7IG11bHRpbWVkaWEsIGV4cGVyaWVuY2UsIHRleHRzIH0gPSBwcm9wcztcbiAgICAgICAgbGV0IGl0ZW1zOiBQdXJvSW5mb1NsaWRlckl0ZW1bXSA9IFtdO1xuICAgICAgICBpZiAobXVsdGltZWRpYSkge1xuICAgICAgICAgICAgaXRlbXMgPSBtdWx0aW1lZGlhPy5pbWFnZW5lcz8ubWFwKFxuICAgICAgICAgICAgICAgIChpbWc6IEltYWdlUmVzcG9uc2UpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGltZykgYXMgUHVyb0ltYWdlSSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpbWcudGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaW1nLnN1YnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGltZy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zaXRlSWQoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWc/LmJ1dHRvbnM/LmZpbHRlcigoYnRuOiBhbnkpID0+ICEhYnRuPy5saW5rVmFsdWUpXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJldGl0bGU6IGltZy5wcmV0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb0luZm9TbGlkZXJJdGVtXG4gICAgICAgICAgICApO1xuICAgICAgICB9IGVsc2UgaWYgKGV4cGVyaWVuY2UpIHtcbiAgICAgICAgICAgIGl0ZW1zID0gZXhwZXJpZW5jZT8ubWFwKFxuICAgICAgICAgICAgICAgIChleHA6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwPy5tdWx0aW1lZGlhPy5bMF1cbiAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgUHVyb0ltYWdlSSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBleHA/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBleHA/LnRleHRzPy5sb2NhdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBleHA/LnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zaXRlSWQoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHA/LmJ1dHRvbnM/LmZpbHRlcigoYnRuOiBhbnkpID0+ICEhYnRuPy5saW5rVmFsdWUpXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gcHJldGl0bGU6IGV4cC5wcmV0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb0luZm9TbGlkZXJJdGVtXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpdGVtczogaXRlbXMsXG4gICAgICAgICAgICByZXZlcnNlOiByZXZlcnNlLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIG1hcE9mZmVyc1NsaWRlcihwcm9wczogYW55IHwgdW5kZWZpbmVkKTogYW55IHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgaXRlbXM6IHByb3BzPy5vZmZlcnM/Lm1hcChcbiAgICAgICAgICAgICAgICAob2ZmZXI6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBvZmZlcj8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3VidGl0bGU6IG9mZmVyPy50ZXh0cz8uc3VidGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICB0YWc6IG9mZmVyPy50ZXh0cz8uYWRkaXRpb25hbDEsXG4gICAgICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBvZmZlcj8ubGlua3MpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLlV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgb2ZmZXI/LmJ1dHRvbnMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUob2ZmZXIubXVsdGltZWRpYVswXSksXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9PZmZlclxuICAgICAgICAgICAgKSxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBtYXBUaGFua3MocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9UaGFua3NJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdXG4gICAgICAgICAgICApIGFzIFB1cm9JbWFnZUksXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgcHJvcHM/LmJ1dHRvbnMpWzBdLFxuICAgICAgICB9IGFzIFB1cm9UaGFua3NJO1xuICAgIH1cblxuICAgIG1hcDQwNChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVybzQwNEkgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCBhZGRyZXNzID0gcHJvcHM/LmFkZHJlc3M/LlswXTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgc3VidGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8uc3VidGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5zdWJ0aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8uc3VidGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogcHJvcHMudGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgbGluazogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBwcm9wcz8uYnV0dG9ucylbMF0sXG4gICAgICAgICAgICBhZGRyZXNzOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8uYWRkcmVzc1RpdGxlLFxuICAgICAgICAgICAgICAgIHRleHQ6IGAke2FkZHJlc3MuYWRkcmVzc308L2JyPiR7YWRkcmVzcy5jaXR5fSwgJHthZGRyZXNzLmNwfSAke2FkZHJlc3MucHJvdmluY2V9YCxcbiAgICAgICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgcHJvcHM/LmJ1dHRvbnM/LlsxXSlbMF0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY29udGFjdDoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LmNvbnRhY3RUaXRsZSxcbiAgICAgICAgICAgICAgICBsaW5rczogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaXRlSWQoKSxcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LmxpbmtzPy5Db250YWN0Py5bMF1cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBwcm9wcz8uYnV0dG9ucz8uWzJdKVswXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgc3VidGl0bGU6IHByb3BzPy50ZXh0cz8uc3VidGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIGFkZHJlc3NUaXRsZTogcHJvcHM/LnRleHRzPy5hZGRyZXNzVGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICBjb250YWN0VGl0bGU6IHByb3BzPy50ZXh0cz8uY29udGFjdFRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBwcm9wcz8udGV4dHM/LnN1YnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgIGFkZHJlc3NUaXRsZTogcHJvcHM/LnRleHRzPy5hZGRyZXNzVGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICAgICAgY29udGFjdFRpdGxlOiBwcm9wcz8udGV4dHM/LmNvbnRhY3RUaXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0gYXMgUHVybzQwNEk7XG4gICAgfVxuXG4gICAgbWFwSW5mb0dhbGxlcnkocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IGFueSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgbW9yZWluZm86IHByb3BzPy50ZXh0cz8uYWRkaXRpb25hbDEsXG4gICAgICAgICAgICBpbWFnZXM6IHRoaXMuZ2V0QXJyYXlJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzIHx8IFtdXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgLy8gYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBwcm9wcz8uYnV0dG9ucy5yZXZlcnNlKCkpLFxuICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICB0aGlzLnNpdGVJZCgpLFxuICAgICAgICAgICAgICAgIHByb3BzPy5idXR0b25zXG4gICAgICAgICAgICAgICAgICAgID8uZmlsdGVyKChidG46IGFueSkgPT4gYnRuPy5saW5rVHlwZSAhPT0gJ3NlbGZfbGluaycpXG4gICAgICAgICAgICAgICAgICAgIC5yZXZlcnNlKClcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBhZHZhbnRhZ2VzOiBwcm9wcz8uZXF1aXBtZW50Py5tYXAoXG4gICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogJ2ljb24tJyArIGl0ZW0/LmNsYXNzLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGl0ZW0/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvU2NoZWR1bGVJdGVtXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSBhcyBQdXJvSW5mb0dhbGxlcnlJO1xuICAgIH1cblxuICAgIG1hcEluZm9UYWJsZShwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0luZm9UYWJsZUkgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCBsaXN0cyA9IHByb3BzPy5MaXN0cztcblxuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkobGlzdHMpKSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlLFxuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBjb2x1bW5zOiBsaXN0cy5tYXAoKGxpc3Q6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1zID0gbGlzdC5pdGVtcyA/PyBbXTtcbiAgICAgICAgICAgICAgICBjb25zdCBoZWFkZXIgPSBpdGVtc1swXT8udGl0bGUgPz8gJyc7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBjb2x1bW5JdGVtcyA9IGl0ZW1zLnNsaWNlKDEpLm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgdGV4dDogaXRlbS50ZXh0LFxuICAgICAgICAgICAgICAgICAgICBpY29uOiBpdGVtLmljb24sXG4gICAgICAgICAgICAgICAgfSkpO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgaGVhZGVyLFxuICAgICAgICAgICAgICAgICAgICBpdGVtczogY29sdW1uSXRlbXMsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgaW5mb0l0ZW1zOiBwcm9wcz8uaW5mb0l0ZW1zLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIG1hcEluZm8yQ29sKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvSW5mbzJDb2xJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgaXRlbXM6IHByb3BzPy5pdGVtcz8ubWFwKChpdGVtOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0udGl0bGUsXG4gICAgICAgICAgICAgICAgc3VidGl0bGU6IGl0ZW0uc3VidGl0bGUsXG4gICAgICAgICAgICAgICAgbGluazogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBpdGVtLmxpbmspLFxuICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgaXRlbS5idXR0b25zKSxcbiAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGl0ZW0uaW1hZ2UpLFxuICAgICAgICAgICAgfSkpLFxuICAgICAgICB9IGFzIFB1cm9JbmZvMkNvbEk7XG4gICAgfVxuXG4gICAgbWFwU3VibWVudShwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb01lbnVJIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWQgPSBwcm9wcz8uaXRlbXM/LmZpbmQoKGl0ZW06IGFueSkgPT4gaXRlbS5zZWxlY3RlZCk7XG4gICAgICAgIGxldCBzaXRlVXJsID0gJyc7XG4gICAgICAgIGlmICh0aGlzLnNpdGVJZCgpID09PSAyKSB7XG4gICAgICAgICAgICBzaXRlVXJsID0gJy9wdXJvaG90ZWxzJztcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNpdGVJZCgpID09PSAzKSB7XG4gICAgICAgICAgICBzaXRlVXJsID0gJy9wdXJvYmVhY2gnO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHN1Ym1lbnUgPSB7XG4gICAgICAgICAgICAvLyBob3RlbDogcHJvcHM/LmhvdGVsLFxuICAgICAgICAgICAgaXRlbXM6IHByb3BzPy5pdGVtc1xuICAgICAgICAgICAgICAgID8uZmlsdGVyKChpdGVtOiBhbnkpID0+IGl0ZW0uYWN0aXZlKVxuICAgICAgICAgICAgICAgID8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAobGluazogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogbGluaz8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IHNpdGVVcmwgKyBsaW5rPy5saW5rVmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua1R5cGU6ICdpbnRlcm5hbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogbGluaz8uaWNvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2JpbGU6IGxpbms/Lm1vYmlsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9TdWJtZW51TW9iaWxlSXRlbUlcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgaXRlbXNNb2JpbGU6IHByb3BzPy5pdGVtc1xuICAgICAgICAgICAgICAgID8uZmlsdGVyKChpdGVtOiBhbnkpID0+IGl0ZW0uYWN0aXZlICYmICFpdGVtLm1vYmlsZSlcbiAgICAgICAgICAgICAgICA/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgKGxpbms6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGxpbms/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBzaXRlVXJsICsgbGluaz8ubGlua1ZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtUeXBlOiAnaW50ZXJuYWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb246IGxpbms/Lmljb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9iaWxlOiBsaW5rPy5tb2JpbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvU3VibWVudU1vYmlsZUl0ZW1JXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHNlbGVjdGVkOiB7XG4gICAgICAgICAgICAgICAgbGFiZWw6IHNlbGVjdGVkPy5uYW1lLFxuICAgICAgICAgICAgICAgIHVybDogc2VsZWN0ZWQ/LmxpbmtWYWx1ZSxcbiAgICAgICAgICAgIH0gYXMgUHVyb0J1dHRvbkksXG4gICAgICAgICAgICBib3R0b21MaW5rczogcHJvcHM/Lml0ZW1zXG4gICAgICAgICAgICAgICAgPy5maWx0ZXIoKGl0ZW06IGFueSkgPT4gaXRlbS5hY3RpdmUpXG4gICAgICAgICAgICAgICAgPy5maWx0ZXIoKGl0ZW06IGFueSkgPT4gaXRlbS5tb2JpbGUpXG4gICAgICAgICAgICAgICAgPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChsaW5rOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBsaW5rPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogc2l0ZVVybCArIGxpbms/LmxpbmtWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rVHlwZTogJ2ludGVybmFsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9TdWJtZW51TW9iaWxlSXRlbUlcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICB9IGFzIFB1cm9NZW51STtcblxuICAgICAgICByZXR1cm4gc3VibWVudSBhcyBQdXJvTWVudUk7XG4gICAgfVxuXG4gICAgbWFwTGlzdEF3YXJkcyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0xpc3RBd2FyZHNJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgaXRlbXM6IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8ubWFwKFxuICAgICAgICAgICAgICAgIChpbWc6IEltYWdlUmVzcG9uc2UpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaW1nPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpbWc/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2U6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGltZyksXG4gICAgICAgICAgICAgICAgICAgICAgICBidXR0b246IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5VdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGltZy5idXR0b25zKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF1bMF0sXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9MaXN0QXdhcmRzSXRlbUlcbiAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgUHVyb0xpc3RBd2FyZHNJO1xuICAgIH1cblxuICAgIG1hcFNsaWRlcjNDYXJkKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvU2xpZGVyM0NhcmRJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8uSXRlbXM/Lm1hcChcbiAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgYXV0aG9yOiBpdGVtLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGl0ZW0udGV4dCxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb1NsaWRlcjNDYXJkSXRlbUlcbiAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgUHVyb1NsaWRlcjNDYXJkSTtcbiAgICB9XG5cbiAgICBtYXBOZXdzbGV0dGVyKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvTmV3c2xldHRlckkgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICBzdWJ0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5zdWJ0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnN1YnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5zdWJ0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgaW1hZ2U6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdKSxcbiAgICAgICAgICAgIGVtYWlsOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8ubWFpbFBsYWNlaG9sZGVyLFxuICAgICAgICAgICAgICAgIG5hbWU6ICdlbWFpbCcsXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8ubWFpbFBsYWNlaG9sZGVyLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgICAgICB0eXBlOiAnZW1haWwnLFxuICAgICAgICAgICAgICAgIGVycm9yOiBwcm9wcz8udGV4dHM/Lm1haWxFcnJvcixcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5lbWFpbCwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHNpZ25hbCh0cnVlKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsYW5nOiB7XG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8ubGFuZ3VhZ2VQbGFjZWhvbGRlcixcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBwcm9wcz8ubGFuZ3VhZ2VzPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChsYW5nOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoeyBjb2RlOiBsYW5nPy5pZCwgbmFtZTogbGFuZz8ubmFtZSB9KSBhcyBEcm9wZG93bk9wdGlvblxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY291bnRyeToge1xuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LmNvdW50cnlQbGFjZWhvbGRlcixcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBwcm9wcz8uY291bnRyaWVzXG4gICAgICAgICAgICAgICAgICAgID8uc29ydCgoYTogYW55LCBiOiBhbnkpID0+IGEubmFtZS5sb2NhbGVDb21wYXJlKGIubmFtZSkpXG4gICAgICAgICAgICAgICAgICAgID8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAgICAgKGNvdW50cnk6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiBjb3VudHJ5Py5pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogY291bnRyeT8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBEcm9wZG93bk9wdGlvblxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNlbnRlcjoge1xuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LmNlbnRlclBsYWNlaG9sZGVyLFxuICAgICAgICAgICAgICAgIG9wdGlvbnM6IFtcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHByb3BzPy50ZXh0cz8uYWxsQ2VudGVycyxcbiAgICAgICAgICAgICAgICAgICAgfSBhcyBEcm9wZG93bk9wdGlvbixcbiAgICAgICAgICAgICAgICAgICAgLi4uKHByb3BzPy5ob3RlbHM/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgICAgIChjZW50ZXI6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiBjZW50ZXI/LmlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBjZW50ZXI/LnRleHRzPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIERyb3Bkb3duT3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICkgPz8gW10pLFxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcmVzaWRlbnQ6IHtcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5yZXNpZGVudFBsYWNlaG9sZGVyLFxuICAgICAgICAgICAgICAgIG9wdGlvbnM6IHByb3BzPy5jb3VudHJpZXNcbiAgICAgICAgICAgICAgICAgICAgPy5zb3J0KChhOiBhbnksIGI6IGFueSkgPT4gYS5uYW1lLmxvY2FsZUNvbXBhcmUoYi5uYW1lKSlcbiAgICAgICAgICAgICAgICAgICAgPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgICAgICAoY291bnRyeTogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGU6IGNvdW50cnk/LmlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBjb3VudHJ5Py5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIERyb3Bkb3duT3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIHByb3BzPy5idXR0b25zKVswXSxcbiAgICAgICAgICAgIGNvbmRpdGlvbnM6IHByb3BzPy50ZXh0cz8uY29uZGl0aW9ucyxcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICBzdWJ0aXRsZTogcHJvcHM/LnRleHRzPy5zdWJ0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBwcm9wcz8udGV4dHM/LnN1YnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSBhcyBQdXJvTmV3c2xldHRlckk7XG4gICAgfVxuXG4gICAgbWFwQmFubmVySW5mbyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0Jhbm5lckluZm9JIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBmcmFtZVVybDogcHJvcHM/LnRleHRzPy5mcmFtZVVybCxcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBwcm9wcz8uYnV0dG9ucylbMF0sXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICB9LFxuICAgICAgICB9IGFzIFB1cm9CYW5uZXJJbmZvSTtcbiAgICB9XG5cbiAgICAvL1RPRE86IENoZWNrIGJhY2sgcHJvcHNcbiAgICBtYXBCYW5uZXJJbmZvMihwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0Jhbm5lckluZm8ySSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5wcmV0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICB9LFxuICAgICAgICB9IGFzIFB1cm9CYW5uZXJJbmZvMkk7XG4gICAgfVxuXG4gICAgLy9UT0RPOiBDaGVjayBiYWNrIHByb3BzXG4gICAgbWFwSW5mb0RldGFpbHMocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9JbmZvRGV0YWlsc0kgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBzdWJ0aXRsZTogcHJvcHM/LnRleHRzPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICB9IGFzIFB1cm9JbmZvRGV0YWlsc0k7XG4gICAgfVxuXG4gICAgbWFwSW5mb0RldGFpbHNDb2xzKFxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkXG4gICAgKTogUHVyb0luZm9EZXRhaWxzM0NvbEkgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBzdWJ0aXRsZTogcHJvcHM/LnRleHRzPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgaXRlbXM6IHByb3BzPy5JdGVtcz8ubWFwKFxuICAgICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS50aXRsZSA/PyBpdGVtLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaXRlbS5kZXNjcmlwdGlvbiA/PyBpdGVtLnRleHQsXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9JbmZvRGV0YWlsSXRlbUlcbiAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgUHVyb0luZm9EZXRhaWxzM0NvbEk7XG4gICAgfVxuXG4gICAgbWFwRmFxcyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0ZhcXNJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8uSXRlbXM/Lm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlLFxuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGl0ZW0uY29udGVudCA/PyBpdGVtLnRleHQsXG4gICAgICAgICAgICB9KSksXG4gICAgICAgIH0gYXMgUHVyb0ZhcXNJO1xuICAgIH1cblxuICAgIC8vVE9ETzogQ2hlY2sgYmFjayBwcm9wc1xuICAgIG1hcE11c2ljU2xpZGVyKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvTXVzaWNTbGlkZXJJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBwcm9wcz8uYnV0dG9ucylbMF0sXG4gICAgICAgICAgICBpdGVtczogcHJvcHM/Lm11bHRpbWVkaWE/Lml0ZW1zPy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICBhdWRpbzogaXRlbS5hdWRpbyxcbiAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGl0ZW0uaW1hZ2UpLFxuICAgICAgICAgICAgICAgIGRhdGU6IGl0ZW0uZGF0ZSxcbiAgICAgICAgICAgICAgICBoZWFkaW5nOiBpdGVtLmhlYWRpbmcsXG4gICAgICAgICAgICAgICAgdGV4dDoge1xuICAgICAgICAgICAgICAgICAgICBoZWFkaW5nOiBpdGVtLnRleHQ/LmhlYWRpbmcsXG4gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpdGVtLnRleHQ/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KSksXG4gICAgICAgIH0gYXMgUHVyb011c2ljU2xpZGVySTtcbiAgICB9XG5cbiAgICBtYXBDYXJ0YShwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0NhcnRhSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRleHRDb2xvcnM6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzZWN0aW9uczogcHJvcHM/Lk1lbnU/LlswXT8uY2hpbGRyZW5zPy5tYXAoKHNlY3Rpb246IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICB0aXRsZTogc2VjdGlvbi50aXRsZSxcbiAgICAgICAgICAgICAgICBpdGVtczogc2VjdGlvbj8ubWVudT8ubWFwKChpdGVtOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICBwcmljZTogaXRlbS5wcmljZSxcbiAgICAgICAgICAgICAgICAgICAgaWNvbnM6IGl0ZW0uaWNvbnM/Lm1hcCgoaWNvbjogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogJ2ljb24tJyArIChpY29uPy5jbGFzcyB8fCBpY29uPy5pY29uKSxcbiAgICAgICAgICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaXRlbS5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICB9KSksXG4gICAgICAgICAgICB9KSksXG4gICAgICAgIH0gYXMgUHVyb0NhcnRhSTtcbiAgICB9XG5cbiAgICBtYXBTbGlkZXI0SXRlbXMocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9TbGlkZXI0SXRlbXNJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgc3VidGl0bGU6IHByb3BzPy50ZXh0cz8uc3VidGl0bGUsXG4gICAgICAgICAgICBpdGVtczogcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5tYXAoKGltZzogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaW1nKSxcbiAgICAgICAgICAgICAgICB0aXRsZTogaW1nPy50aXRsZSxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaW1nPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgfSBhcyBQdXJvU2xpZGVyNEl0ZW1zSTtcbiAgICB9XG5cbiAgICBtYXBEdWFsTGlzdChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0R1YWxMaXN0SSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5wcmV0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24gPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvblxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24/LmNvbnRhaW4sXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRleHRDb2xvcnM6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsaXN0czogT2JqZWN0LmtleXMocHJvcHMudGV4dHMpXG4gICAgICAgICAgICAgICAgLmZpbHRlcigoa2V5KSA9PiBrZXkubWF0Y2goL15saXN0XFxkK1RpdGxlJC8pKVxuICAgICAgICAgICAgICAgIC5zb3J0KClcbiAgICAgICAgICAgICAgICAubWFwKCh0aXRsZUtleSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBsaXN0TnVtYmVyID0gdGl0bGVLZXlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKCdsaXN0JywgJycpXG4gICAgICAgICAgICAgICAgICAgICAgICAucmVwbGFjZSgnVGl0bGUnLCAnJyk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHByZWZpeCA9IGBsaXN0JHtsaXN0TnVtYmVyfUl0ZW1gO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1LZXlzID0gT2JqZWN0LmtleXMocHJvcHMudGV4dHMpXG4gICAgICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKChrKSA9PiBrLnN0YXJ0c1dpdGgocHJlZml4KSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5zb3J0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhLCBiKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOdW1iZXIoYS5yZXBsYWNlKHByZWZpeCwgJycpKSAtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE51bWJlcihiLnJlcGxhY2UocHJlZml4LCAnJykpXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1zID0gW107XG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaXRlbUtleXMubGVuZ3RoOyBpICs9IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcy50ZXh0c1tpdGVtS2V5c1tpXV0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IHByb3BzLnRleHRzW2l0ZW1LZXlzW2kgKyAxXV0gPz8gJycsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHMudGV4dHNbdGl0bGVLZXldLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXMsXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgIH0gYXMgUHVyb0R1YWxMaXN0STtcbiAgICB9XG5cbiAgICBtYXBQcm9qZWN0c0Zvcm0ocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9Qcm9qZWN0c0Zvcm1JIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgcHJlZml4VmFsdWVzID0gT2JqZWN0LnZhbHVlcyhwcm9wcz8ucHJlZml4ZXMgfHwge30pIGFzIHN0cmluZ1tdO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICB5ZFRpdGxlOiBwcm9wcz8udGV4dHM/LnlkdGl0bGUsXG4gICAgICAgICAgICBhaVRpdGxlOiBwcm9wcz8udGV4dHM/LmFpdGl0bGUsXG4gICAgICAgICAgICBpY1RpdGxlOiBwcm9wcz8udGV4dHM/LmljdGl0bGUsXG4gICAgICAgICAgICBkVGl0bGU6IHByb3BzPy50ZXh0cz8uZHRpdGxlLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBjb25kaXRpb25zTGluazogcHJvcHM/LnRleHRzPy5jb25kaXRpb25zbGluayxcbiAgICAgICAgICAgIG90aGVyczogcHJvcHM/LnRleHRzPy5vdGhlcnMsXG4gICAgICAgICAgICByZXF1aXJlZExhYmVsOiBwcm9wcz8udGV4dHM/LnJlcXVpcmVkTGFiZWwsXG4gICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdKSxcbiAgICAgICAgICAgIGFwcGx5QnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIHByb3BzPy5idXR0b25zKVswXSxcbiAgICAgICAgICAgIHNlZUFsbEJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBwcm9wcz8uYnV0dG9ucylbMV0sXG4gICAgICAgICAgICB3aHlUZXh0YXJlYToge1xuICAgICAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmlucHV0V2h5TWVzc2FnZSA/P1xuICAgICAgICAgICAgICAgICAgICAnV2h5IGRvIHlvdSBiZWxpZXZlIHRoaXMgaXMgYW4gaWRlYWwgbG9jYXRpb24gZm9yIGEgUHVybyBlc3RhYmxpc2htZW50PycsXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6XG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uaW5wdXRXaHlNZXNzYWdlID8/XG4gICAgICAgICAgICAgICAgICAgICdXaHkgZG8geW91IGJlbGlldmUgdGhpcyBpcyBhbiBpZGVhbCBsb2NhdGlvbiBmb3IgYSBQdXJvIGVzdGFibGlzaG1lbnQ/JyxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHNpZ25hbCh0cnVlKSxcbiAgICAgICAgICAgICAgICBuYW1lOiAnd2h5TWVzc2FnZScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgd2FUZXh0YXJlYToge1xuICAgICAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmlucHV0V2FNZXNzYWdlID8/XG4gICAgICAgICAgICAgICAgICAgICdXaGF0IGF0dHJhY3RzIHlvdSB0byB0aGUgUHVybyBHcm91cCBicmFuZCwgYW5kIGhvdyBkbyB5b3UgZW52aXNpb24gaW50ZWdyYXRpbmcgaXQgaW50byB5b3VyIGJ1c2luZXNzIGNvbmNlcHQ/JyxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjpcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5pbnB1dFdhTWVzc2FnZSA/P1xuICAgICAgICAgICAgICAgICAgICAnV2hhdCBhdHRyYWN0cyB5b3UgdG8gdGhlIFB1cm8gR3JvdXAgYnJhbmQsIGFuZCBob3cgZG8geW91IGVudmlzaW9uIGludGVncmF0aW5nIGl0IGludG8geW91ciBidXNpbmVzcyBjb25jZXB0PycsXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgIHZhbGlkOiBzaWduYWwodHJ1ZSksXG4gICAgICAgICAgICAgICAgbmFtZTogJ3dhTWVzc2FnZScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcHBUZXh0YXJlYToge1xuICAgICAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmlucHV0UFBNZXNzYWdlID8/XG4gICAgICAgICAgICAgICAgICAgICdQbGVhc2UgcHJvdmlkZSBkZXRhaWxzIGFib3V0IHlvdXIgY29tcGFueSwgc2hhcmVob2xkZXJzIChpZiBhcHBsaWNhYmxlKSwgYW5kIGV4cGVyaWVuY2UgaW4gdGhlIHNlY3Rvci4nLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOlxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmlucHV0UFBNZXNzYWdlID8/XG4gICAgICAgICAgICAgICAgICAgICdQbGVhc2UgcHJvdmlkZSBkZXRhaWxzIGFib3V0IHlvdXIgY29tcGFueSwgc2hhcmVob2xkZXJzIChpZiBhcHBsaWNhYmxlKSwgYW5kIGV4cGVyaWVuY2UgaW4gdGhlIHNlY3Rvci4nLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgICAgICB2YWxpZDogc2lnbmFsKHRydWUpLFxuICAgICAgICAgICAgICAgIG5hbWU6ICdwcE1lc3NhZ2UnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5wRHJvcGRvd246IHtcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjpcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5ucERyb3Bkb3duID8/ICdOYXR1cmUgb2YgdGhlIFByb2plY3QnLFxuICAgICAgICAgICAgICAgIG9wdGlvbnM6IHByb3BzPy5jb25zdWx0VHlwZXM/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgKHByb3A6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7IGNvZGU6IHByb3A/LmlkLCBuYW1lOiBwcm9wPy5uYW1lIH0pIGFzIERyb3Bkb3duT3B0aW9uXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBicERyb3Bkb3duOiB7XG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6XG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uYnBEcm9wZG93biA/PyAnRG8geW91IGhhdmUgYSBidXNpbmVzcyBwbGFuPycsXG4gICAgICAgICAgICAgICAgb3B0aW9uczogcHJvcHM/LmNvbnN1bHRUeXBlcz8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAocHJvcDogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgKHsgY29kZTogcHJvcD8uaWQsIG5hbWU6IHByb3A/Lm5hbWUgfSkgYXMgRHJvcGRvd25PcHRpb25cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRiRHJvcGRvd246IHtcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy50YkRyb3Bkb3duID8/ICdUeXBlIG9mIEJ1c2luZXNzJyxcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBwcm9wcz8uY29uc3VsdFR5cGVzPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChwcm9wOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoeyBjb2RlOiBwcm9wPy5pZCwgbmFtZTogcHJvcD8ubmFtZSB9KSBhcyBEcm9wZG93bk9wdGlvblxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcG9Ecm9wZG93bjoge1xuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LnBvRHJvcGRvd24gPz8gJ1BsYW5uZWQgT3BlbmluZyBEYXRlJyxcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBwcm9wcz8uY29uc3VsdFR5cGVzPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChwcm9wOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoeyBjb2RlOiBwcm9wPy5pZCwgbmFtZTogcHJvcD8ubmFtZSB9KSBhcyBEcm9wZG93bk9wdGlvblxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZW1Ecm9wZG93bjoge1xuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOlxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmVtRHJvcGRvd24gPz9cbiAgICAgICAgICAgICAgICAgICAgJ0VzdGltYXRlZCBNb250aHMgb2YgT3BlcmF0aW9uIHBlciBZZWFyJyxcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBwcm9wcz8uY29uc3VsdFR5cGVzPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChwcm9wOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoeyBjb2RlOiBwcm9wPy5pZCwgbmFtZTogcHJvcD8ubmFtZSB9KSBhcyBEcm9wZG93bk9wdGlvblxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaGJwRHJvcGRvd246IHtcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjpcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5oYnBEcm9wZG93biA/PyAnRG8geW91IGhhdmUgYSBidXNpbmVzcyBwbGFuPycsXG4gICAgICAgICAgICAgICAgb3B0aW9uczogcHJvcHM/LmNvbnN1bHRUeXBlcz8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAocHJvcDogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgKHsgY29kZTogcHJvcD8uaWQsIG5hbWU6IHByb3A/Lm5hbWUgfSkgYXMgRHJvcGRvd25PcHRpb25cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHByZWZpeDoge1xuICAgICAgICAgICAgICAgIG9wdGlvbnM6IHByZWZpeFZhbHVlcy5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChwcmVmaXg6IHN0cmluZywgaW5kZXg6IG51bWJlcikgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogaW5kZXgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogcHJlZml4LFxuICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgRHJvcGRvd25PcHRpb25cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LnByZWZpeGVzLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGFkZHJlc3NJbnB1dDoge1xuICAgICAgICAgICAgICAgIG5hbWU6IFV0aWxzLm5vcm1hbGl6ZUNvbnRyb2xOYW1lKFxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmFkZHJlc3NJbnB1dCxcbiAgICAgICAgICAgICAgICAgICAgJ2FkZHJlc3MnXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjpcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5hZGRyZXNzSW5wdXQgPz8gJ0VzdGFibGlzaG1lbnQgQWRkcmVzcycsXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5lcnJvckFkZHJlc3MsXG4gICAgICAgICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgIHZhbGlkOiBzaWduYWwodHJ1ZSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2l6ZUlucHV0OiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8uc2l6ZUlucHV0ID8/ICdzaXplJyxcbiAgICAgICAgICAgICAgICBuYW1lOiBVdGlscy5ub3JtYWxpemVDb250cm9sTmFtZShcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5zaXplSW5wdXQsXG4gICAgICAgICAgICAgICAgICAgICdzaXplJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uc2l6ZUlucHV0ID8/ICdWZW51ZSBTaXplIChtwrIpJyxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICAgIGVycm9yOiBwcm9wcz8udGV4dHM/LmVycm9yU2l6ZSxcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHNpZ25hbCh0cnVlKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBuYW1lSW5wdXQ6IHtcbiAgICAgICAgICAgICAgICBuYW1lOiBVdGlscy5ub3JtYWxpemVDb250cm9sTmFtZShcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5pbnB1dE5hbWUsXG4gICAgICAgICAgICAgICAgICAgICduYW1lJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uaW5wdXROYW1lID8/ICdGaXJzdCBOYW1lJyxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICAgIGVycm9yOiBwcm9wcz8udGV4dHM/LmVycm9yTmFtZSxcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHNpZ25hbCh0cnVlKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzdXJuYW1lSW5wdXQ6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5zdXJuYW1lcyA/PyAnc3VybmFtZScsXG4gICAgICAgICAgICAgICAgbmFtZTogVXRpbHMubm9ybWFsaXplQ29udHJvbE5hbWUoXG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uc3VybmFtZXMsXG4gICAgICAgICAgICAgICAgICAgICdzdXJuYW1lJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uc3VybmFtZXMgPz8gJ0xhc3QgTmFtZScsXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5lcnJvck5hbWUsXG4gICAgICAgICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgIHZhbGlkOiBzaWduYWwodHJ1ZSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZW1haWxJbnB1dDoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LmlucHV0RW1haWwgPz8gJ2VtYWlsJyxcbiAgICAgICAgICAgICAgICBuYW1lOiBVdGlscy5ub3JtYWxpemVDb250cm9sTmFtZShcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5pbnB1dEVtYWlsLFxuICAgICAgICAgICAgICAgICAgICAnZW1haWwnXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5pbnB1dEVtYWlsID8/ICdFbWFpbCBBZGRyZXNzJyxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgdHlwZTogJ2VtYWlsJyxcbiAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5lcnJvckVtYWlsLFxuICAgICAgICAgICAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLmVtYWlsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgICAgICB2YWxpZDogc2lnbmFsKHRydWUpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNvbmZpcm1FbWFpbElucHV0OiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8uaW5wdXRFbWFpbCA/PyAnZW1haWxjJyxcbiAgICAgICAgICAgICAgICBuYW1lOiBVdGlscy5ub3JtYWxpemVDb250cm9sTmFtZShcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5pbnB1dEVtYWlsLFxuICAgICAgICAgICAgICAgICAgICAnZW1haWxjJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uaW5wdXRFbWFpbCA/PyAnQ29uZmlybSB5b3VyIGVtYWlsJyxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgdHlwZTogJ2VtYWlsJyxcbiAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5lcnJvckVtYWlsLFxuICAgICAgICAgICAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLmVtYWlsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgICAgICB2YWxpZDogc2lnbmFsKHRydWUpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHBob25lSW5wdXQ6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5pbnB1dFBob25lID8/ICdwaG9uZScsXG4gICAgICAgICAgICAgICAgbmFtZTogVXRpbHMubm9ybWFsaXplQ29udHJvbE5hbWUoXG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uaW5wdXRQaG9uZSxcbiAgICAgICAgICAgICAgICAgICAgJ3Bob25lJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uaW5wdXRQaG9uZSA/PyAnVGVsw6lmb25vJyxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgdHlwZTogJ3RlbCcsXG4gICAgICAgICAgICAgICAgZXJyb3I6IHByb3BzPy50ZXh0cz8uZXJyb3JQaG9uZSxcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHNpZ25hbCh0cnVlKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBtYXRlcmlhbHNJbnB1dDoge1xuICAgICAgICAgICAgICAgIG5hbWU6IFV0aWxzLm5vcm1hbGl6ZUNvbnRyb2xOYW1lKFxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmlucHV0TWF0ZXJpYWxzLFxuICAgICAgICAgICAgICAgICAgICAnbWF0ZXJpYWxzJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgdHlwZTogcHJvcHM/LnRleHRzPy5pbnB1dE1hdGVyaWFscyxcbiAgICAgICAgICAgICAgICBsYWJlbDogcHJvcHM/LnRleHRzPy5pbnB1dE1hdGVyaWFscyA/PyAnU3VwcG9ydGluZyBtYXRlcmlhbHMnLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBudWxsIGFzIEZpbGUgfCBGaWxlW10gfCBudWxsIHwgdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIHZhbGlkOiBzaWduYWwodHJ1ZSksXG4gICAgICAgICAgICAgICAgLy8gdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSBhcyBQdXJvUHJvamVjdHNGb3JtSTtcbiAgICB9XG5cbiAgICBtYXBGYXFzSW1nKFxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkLFxuICAgICAgICB2aWV3OiBQdXJvVmlld3NUeXBlIHwgdW5kZWZpbmVkLFxuICAgICAgICBpZGVudGlmaWVyOiBzdHJpbmcgfCB1bmRlZmluZWRcbiAgICApOiBQdXJvRmFxc0ltZ0kgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCB7IG11bHRpbWVkaWEsIEl0ZW1zLCB0ZXh0cywgYnV0dG9ucyB9ID0gcHJvcHM7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgdGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIGltZ3M6IHRoaXMuZ2V0QXJyYXlJbWFnZVJlc3BvbnNpdmUobXVsdGltZWRpYT8uaW1hZ2VuZXMpLFxuICAgICAgICAgICAgaXRlbXM6IEl0ZW1zPy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS50aXRsZSxcbiAgICAgICAgICAgICAgICBjb250ZW50OiBpdGVtLnRleHQsXG4gICAgICAgICAgICB9KSksXG4gICAgICAgICAgICBhcHBsaWNhdGlvbkJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBidXR0b25zKVswXSxcbiAgICAgICAgICAgIHZpZXc6IHRoaXMuZ2V0Vmlldyh2aWV3KSxcbiAgICAgICAgICAgIGNvbnRhY3RCdXR0b246IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgYnV0dG9ucylbMV0sXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRleHRDb2xvcnM6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGlkZW50aWZpZXI6IGlkZW50aWZpZXIsXG4gICAgICAgIH0gYXMgUHVyb0ZhcXNJbWdJO1xuICAgIH1cblxuICAgIG1hcEJsb2dMaXN0KHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvQmxvZ0xpc3RJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgbGV0IHBvc3RzID0gcHJvcHM/LnBvc3RzPy5tYXAoKHBvc3Q6IGFueSkgPT4gKHtcbiAgICAgICAgICAgIGlkOiBwb3N0Py5pZCxcbiAgICAgICAgICAgIHRpdGxlOiBwb3N0Py50ZXh0cz8udGl0bGUgPz8gcG9zdD8udHJhbnNsYXRpb25zPy5bMF0/LnRpdGxlLFxuICAgICAgICAgICAgc3VidGl0bGU6XG4gICAgICAgICAgICAgICAgcG9zdD8udGV4dHM/LnN1YnRpdGxlID8/IHBvc3Q/LnRyYW5zbGF0aW9ucz8uWzBdPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgICAgICAgIHBvc3Q/LnRleHRzPy5kZXNjcmlwdGlvbiA/P1xuICAgICAgICAgICAgICAgIHBvc3Q/LnRyYW5zbGF0aW9ucz8uWzBdPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUocG9zdD8ubXVsdGltZWRpYT8uWzBdKSA/PyB7XG4gICAgICAgICAgICAgICAgc3JjOiAnaHR0cHM6Ly9wdXJvLWFwaS1kZXYuYi1jZG4ubmV0L211bHRpbWVkaWEvaW1hZ2VzL3RodW1ibmFpbHMvMTI4MC8yMDNDYXB0dXJhLTIwZGUtMjBwYW50YWxsYS0yMDIwMTctMDQtMjQtMjBhLTIwbGFzLTIwMTktNDUtNTYtcG5nLndlYnAnLFxuICAgICAgICAgICAgICAgIGFsdDogcG9zdD8udGV4dHM/LnRpdGxlID8/IHBvc3Q/LnRyYW5zbGF0aW9ucz8uWzBdPy50aXRsZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIHBvc3Q/LmJ1dHRvbnMpLFxuICAgICAgICAgICAgcG9zdFVybDogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBwb3N0Py5idXR0b25zKT8uWzBdLFxuICAgICAgICAgICAgY2F0ZWdvcnk6IHBvc3Q/LmNhdGVnb3J5LnRyYW5zbGF0aW9ucz8uWzBdPy50aXRsZSxcbiAgICAgICAgICAgIGRhdGU6IHBvc3Q/LmRhdGUgPyBuZXcgRGF0ZShwb3N0LmRhdGUpIDogbmV3IERhdGUocG9zdC5jcmVhdGVkQXQpLFxuICAgICAgICB9KSk7XG5cbiAgICAgICAgcG9zdHMgPSBwb3N0cy5zb3J0KChhOiBhbnksIGI6IGFueSkgPT4ge1xuICAgICAgICAgICAgaWYgKGEuZGF0ZSAmJiBiLmRhdGUpIHJldHVybiBiLmRhdGUgLSBhLmRhdGU7IC8vIGFtYm9zIGNvbiBmZWNoYVxuICAgICAgICAgICAgaWYgKGEuZGF0ZSAmJiAhYi5kYXRlKSByZXR1cm4gLTE7IC8vIGEgdGllbmUgZmVjaGEsIGIgbm9cbiAgICAgICAgICAgIGlmICghYS5kYXRlICYmIGIuZGF0ZSkgcmV0dXJuIDE7IC8vIGIgdGllbmUgZmVjaGEsIGEgbm9cbiAgICAgICAgICAgIHJldHVybiAwOyAvLyBuaW5ndW5vIHRpZW5lIGZlY2hhXG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIE9idGVuZXIgbG9zIDQgcG9zdHMgbcOhcyByZWNpZW50ZXNcbiAgICAgICAgY29uc3QgbGF0ZXN0UG9zdHMgPSBwb3N0cz8uc2xpY2UoMCwgNCk7XG5cbiAgICAgICAgY29uc3QgY2F0ZWdvcmllcyA9IEFycmF5LmlzQXJyYXkocHJvcHM/LnBvc3RDYXRlZ29yaWVzKVxuICAgICAgICAgICAgPyBwcm9wcy5wb3N0Q2F0ZWdvcmllc1xuICAgICAgICAgICAgOiBPYmplY3QudmFsdWVzKHByb3BzPy5wb3N0Q2F0ZWdvcmllcyB8fCB7fSk7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHByZXRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnByZXRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8ucHJldGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIGNhdGVnb3JpZXNUaXRsZTogcHJvcHM/LnRleHRzPy5jYXRlZ29yaWVzPy50YWcsXG4gICAgICAgICAgICAgICAgbGF0ZXN0UG9zdHNUaXRsZTogcHJvcHM/LnRleHRzPy5sYXRlc3RFbnRyaWVzPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgIGNhdGVnb3JpZXNUaXRsZTogcHJvcHM/LnRleHRzPy5jYXRlZ29yaWVzPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgIGxhdGVzdFBvc3RzVGl0bGU6IHByb3BzPy50ZXh0cz8ubGF0ZXN0RW50cmllcz8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzZWFyY2hQbGFjZUhvbGRlcjogcHJvcHM/LnRleHRzPy5zZWFyY2hQbGFjZUhvbGRlcixcbiAgICAgICAgICAgIG5vdGZvdW5kVGV4dDogcHJvcHM/LnRleHRzPy5zZWFyY2hOb3RGb3VuZCxcbiAgICAgICAgICAgIHBvc3RzOiBwb3N0cyxcbiAgICAgICAgICAgIGNhdGVnb3JpZXNUaXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5jYXRlZ29yaWVzID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8uY2F0ZWdvcmllc1xuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8uY2F0ZWdvcmllcz8uY29udGFpbixcbiAgICAgICAgICAgIGNhdGVnb3JpZXM6XG4gICAgICAgICAgICAgICAgY2F0ZWdvcmllcy5tYXAoKGNhdGVnb3J5OiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBjYXRlZ29yeT8uaWQsXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBjYXRlZ29yeT8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgcG9zdHM6IGNhdGVnb3J5Py50b3RhbFBvc3RzLFxuICAgICAgICAgICAgICAgIH0pKSA/PyBbXSxcbiAgICAgICAgICAgIGxhdGVzdFBvc3RzVGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8ubGF0ZXN0RW50cmllcyA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LmxhdGVzdEVudHJpZXNcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LmxhdGVzdEVudHJpZXM/LmNvbnRhaW4sXG4gICAgICAgICAgICBsYXRlc3RQb3N0czogbGF0ZXN0UG9zdHMsXG4gICAgICAgICAgICBhbnRlcmlvcjogcHJvcHM/LnRleHRzPy5hbnRlcmlvcixcbiAgICAgICAgICAgIHNpZ3VpZW50ZTogcHJvcHM/LnRleHRzPy5zaWd1aWVudGUsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgbWFwQmxvZ1Bvc3QocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9CbG9nRGV0YWlsc0kgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCBjdXJyZW50UG9zdElkID0gcHJvcHM/LnBvc3Q/LmlkO1xuICAgICAgICBjb25zdCBwb3N0cyA9IHByb3BzPy5yZWxhdGVkUG9zdHM/Lm1hcCgocG9zdDogYW55KSA9PiAoe1xuICAgICAgICAgICAgaWQ6IHBvc3Q/LmlkLFxuICAgICAgICAgICAgdGl0bGU6IHBvc3Q/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIHN1YnRpdGxlOiBwb3N0Py50ZXh0cz8uc3VidGl0bGUsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogcG9zdD8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShwb3N0Py5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdKSxcbiAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgcG9zdD8uYnV0dG9ucyksXG4gICAgICAgICAgICBwb3N0VXJsOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIHBvc3Q/LmJ1dHRvbnMpPy5bMF0sXG4gICAgICAgICAgICBjYXRlZ29yeTogcG9zdD8uY2F0ZWdvcnksXG4gICAgICAgICAgICBkYXRlOiBwb3N0Py5kYXRlID8gbmV3IERhdGUocG9zdC5kYXRlKSA6IHVuZGVmaW5lZCxcbiAgICAgICAgfSkpO1xuXG4gICAgICAgIGNvbnN0IGNhbmRpZGF0ZXMgPSAocG9zdHMgfHwgW10pLmZpbHRlcihcbiAgICAgICAgICAgIChwOiBhbnkpID0+IHA/LmlkICE9PSBjdXJyZW50UG9zdElkXG4gICAgICAgICk7XG5cbiAgICAgICAgbGV0IHJlbGF0ZWRQb3N0c0NvbnN0ID1cbiAgICAgICAgICAgIGNhbmRpZGF0ZXNcbiAgICAgICAgICAgICAgICAuZmlsdGVyKChwOiBhbnkpID0+IHA/LmRhdGUpXG4gICAgICAgICAgICAgICAgLnNvcnQoKGE6IGFueSwgYjogYW55KSA9PiAoYi5kYXRlIGFzIGFueSkgLSAoYS5kYXRlIGFzIGFueSkpXG4gICAgICAgICAgICAgICAgLnNsaWNlKDAsIDQpIHx8IFtdO1xuICAgICAgICBpZiAocmVsYXRlZFBvc3RzQ29uc3QubGVuZ3RoIDwgNCkge1xuICAgICAgICAgICAgY29uc3Qgd2l0aG91dERhdGUgPSBjYW5kaWRhdGVzLmZpbHRlcigocDogYW55KSA9PiAhcD8uZGF0ZSk7XG4gICAgICAgICAgICByZWxhdGVkUG9zdHNDb25zdCA9IHJlbGF0ZWRQb3N0c0NvbnN0LmNvbmNhdChcbiAgICAgICAgICAgICAgICB3aXRob3V0RGF0ZS5zbGljZSgwLCA0IC0gcmVsYXRlZFBvc3RzQ29uc3QubGVuZ3RoKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGNhdGVnb3JpZXMgPSBBcnJheS5pc0FycmF5KHByb3BzPy5wb3N0Q2F0ZWdvcmllcylcbiAgICAgICAgICAgID8gcHJvcHMucG9zdENhdGVnb3JpZXNcbiAgICAgICAgICAgIDogT2JqZWN0LnZhbHVlcyhwcm9wcz8ucG9zdENhdGVnb3JpZXMgfHwge30pO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnBvc3Q/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIHN1YnRpdGxlOiBwcm9wcz8ucG9zdD8udGV4dHM/LnN1YnRpdGxlLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHByb3BzPy5wb3N0Py50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBhZGRpdGlvbmFsMTogcHJvcHM/LnBvc3Q/LnRleHRzPy5hZGRpdGlvbmFsMSxcbiAgICAgICAgICAgIGFkZGl0aW9uYWwyOiBwcm9wcz8ucG9zdD8udGV4dHM/LmFkZGl0aW9uYWwyLFxuICAgICAgICAgICAgYWRkaXRpb25hbDM6IHByb3BzPy5wb3N0Py50ZXh0cz8uYWRkaXRpb25hbDMsXG4gICAgICAgICAgICBhZGRpdGlvbmFsNDogcHJvcHM/LnBvc3Q/LnRleHRzPy5hZGRpdGlvbmFsNCxcbiAgICAgICAgICAgIGRhdGU6IHByb3BzPy5wb3N0Py5kYXRlID8gbmV3IERhdGUocHJvcHM/LnBvc3Q/LmRhdGUpIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgY2F0ZWdvcnk6IHByb3BzPy5wb3N0Py5jYXRlZ29yeSxcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgY2F0ZWdvcmllc1RpdGxlOiBwcm9wcz8udGV4dHM/LmNhdGVnb3JpZXM/LnRhZyxcbiAgICAgICAgICAgICAgICBsYXRlc3RQb3N0c1RpdGxlOiBwcm9wcz8udGV4dHM/LmxhdGVzdEVudHJpZXM/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICAgICAgY2F0ZWdvcmllc1RpdGxlOiBwcm9wcz8udGV4dHM/LmNhdGVnb3JpZXM/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICAgICAgbGF0ZXN0UG9zdHNUaXRsZTogcHJvcHM/LnRleHRzPy5sYXRlc3RFbnRyaWVzPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNlYXJjaFBsYWNlSG9sZGVyOiBwcm9wcz8udGV4dHM/LnNlYXJjaFBsYWNlSG9sZGVyLFxuICAgICAgICAgICAgY2F0ZWdvcmllc1RpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LmNhdGVnb3JpZXMgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5jYXRlZ29yaWVzXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5jYXRlZ29yaWVzPy5jb250YWluLFxuICAgICAgICAgICAgY2F0ZWdvcmllczogY2F0ZWdvcmllcy5tYXAoKGNhdGVnb3J5OiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgaWQ6IGNhdGVnb3J5Py5pZCxcbiAgICAgICAgICAgICAgICB0aXRsZTogY2F0ZWdvcnk/Lm5hbWUsXG4gICAgICAgICAgICAgICAgcG9zdHM6IGNhdGVnb3J5Py50b3RhbF9wb3N0cyxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIHJlbGF0ZWRQb3N0c1RpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LmxhdGVzdEVudHJpZXMgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5sYXRlc3RFbnRyaWVzXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5sYXRlc3RFbnRyaWVzPy5jb250YWluLFxuICAgICAgICAgICAgcmVsYXRlZFBvc3RzOiByZWxhdGVkUG9zdHNDb25zdCxcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBwcm9wcz8uYnV0dG9ucyk/LlswXSxcbiAgICAgICAgICAgIHNoYXJlOiBwcm9wcz8udGV4dHM/LnNoYXJlLFxuICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ucG9zdD8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXVxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBQdXJvQmxvZ0RldGFpbHNJO1xuICAgIH1cblxuICAgIG1hcEJhbm5lclNsaWRlcihwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0Jhbm5lclNsaWRlckkgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaXRlbXM6IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8ubWFwKChpbWc6IEltYWdlUmVzcG9uc2UpID0+ICh7XG4gICAgICAgICAgICAgICAgdGl0bGU6IGltZy50aXRsZSxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaW1nLmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaW1nKSxcbiAgICAgICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgaW1nLmJ1dHRvbnMpWzBdLFxuICAgICAgICAgICAgfSkpLFxuICAgICAgICB9IGFzIFB1cm9CYW5uZXJTbGlkZXJJO1xuICAgIH1cbiAgICAvL1RPRE86IENoZWNrIGJhY2sgcHJvcHNcbiAgICBtYXBNb2RhbE9wdGlvbnMocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9Nb2RhbE9wdGlvbnNJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8uaXRlbXM/Lm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpdGVtLmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaXRlbS5tdWx0aW1lZGlhPy5pbWFnZT8uWzBdKSxcbiAgICAgICAgICAgICAgICBsaW5rOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGl0ZW0ubGlua3MpWzBdLFxuICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIHByb3BzPy5idXR0b25zKVswXSxcbiAgICAgICAgfSBhcyBQdXJvTW9kYWxPcHRpb25zSTtcbiAgICB9XG5cbiAgICAvL1RPRE86IENoZWNrIGJhY2sgcHJvcHNcbiAgICBtYXBJbm5lckNvbnRlbnQocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9Jbm5lckNvbnRlbnRJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNvbnRlbnQ6IHByb3BzPy50ZXh0cz8uY29udGVudCxcbiAgICAgICAgfSBhcyBQdXJvSW5uZXJDb250ZW50STtcbiAgICB9XG5cbiAgICBtYXBUaW1lbGluZShwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb1RpbWVsaW5lSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHByZXRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnByZXRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8ucHJldGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBpdGVtczogcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5tYXAoKGltZzogSW1hZ2VSZXNwb25zZSkgPT4gKHtcbiAgICAgICAgICAgICAgICB5ZWFyOiBpbWcudGl0bGUsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGltZy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGltZyksXG4gICAgICAgICAgICB9KSksXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRleHRDb2xvcnM6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0gYXMgUHVyb1RpbWVsaW5lSTtcbiAgICB9XG5cbiAgICBtYXBIZWFkSW50cm8ocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9IZWFkSW50cm9JIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGUsXG4gICAgICAgICAgICBzdWJ0aXRsZTogcHJvcHM/LnRleHRzPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICB0aGlzLnNpdGVJZCgpLFxuICAgICAgICAgICAgICAgIHByb3BzPy5idXR0b25zPy5maWx0ZXIoKGJ0bjogYW55KSA9PiAhIWJ0bj8ubGlua1ZhbHVlKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBQdXJvSGVhZEludHJvSTtcbiAgICB9XG5cbiAgICBtYXBDYXJlZXJzRm9ybShwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0NhcmVlcnNGb3JtSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IHByZWZpeFZhbHVlcyA9IE9iamVjdC52YWx1ZXMocHJvcHM/LnByZWZpeGVzIHx8IHt9KSBhcyBzdHJpbmdbXTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHlkVGl0bGU6IHByb3BzPy50ZXh0cz8ueWR0aXRsZSxcbiAgICAgICAgICAgIG9kVGl0bGU6IHByb3BzPy50ZXh0cz8ub2R0aXRsZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgY29uZGl0aW9uc0xpbms6IHByb3BzPy50ZXh0cz8uY29uZGl0aW9uc2xpbmssXG4gICAgICAgICAgICBvdGhlcnM6IHByb3BzPy50ZXh0cz8ub3RoZXJzLFxuICAgICAgICAgICAgcmVxdWlyZWRMYWJlbDogcHJvcHM/LnRleHRzPy5yZXF1aXJlZExhYmVsLFxuICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXSksXG4gICAgICAgICAgICBhcHBseUJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBwcm9wcz8uYnV0dG9ucylbMF0sXG4gICAgICAgICAgICBzZWVBbGxCdXR0b246IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgcHJvcHM/LmJ1dHRvbnMpWzFdLFxuICAgICAgICAgICAgd3dUZXh0YXJlYToge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/Lnd3VGV4dGFyZWEsXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6XG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8ud3dUZXh0YXJlYSA/P1xuICAgICAgICAgICAgICAgICAgICAnV2Ugd291bGQgbG92ZSB0byBrbm93IG1vcmUgYWJvdXQgeW91LCBwbGVhc2Ugc2hhcmUgeW91ciBjb3ZlciBsZXR0ZXInLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgICAgICB2YWxpZDogc2lnbmFsKHRydWUpLFxuICAgICAgICAgICAgICAgIG5hbWU6ICd3d1RleHRhcmVhJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB3bERyb3Bkb3duOiB7XG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6XG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8ud2xEcm9wZG93biA/P1xuICAgICAgICAgICAgICAgICAgICAnV2hpY2ggbG9jYXRpb24gd291bGQgeW91IGxpa2UgdG8gYXBwbHkgZm9yPycsXG4gICAgICAgICAgICAgICAgb3B0aW9uczogcHJvcHM/LmNvbnN1bHRUeXBlcz8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAocHJvcDogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgKHsgY29kZTogcHJvcD8uaWQsIG5hbWU6IHByb3A/Lm5hbWUgfSkgYXMgRHJvcGRvd25PcHRpb25cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHdwRHJvcGRvd246IHtcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjpcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy53cERyb3Bkb3duID8/XG4gICAgICAgICAgICAgICAgICAgICdXaGljaCBwb3NpdGlvbiB3b3VsZCB5b3UgbGlrZSB0byBhcHBseSBmb3I/JyxcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBwcm9wcz8uY29uc3VsdFR5cGVzPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChwcm9wOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoeyBjb2RlOiBwcm9wPy5pZCwgbmFtZTogcHJvcD8ubmFtZSB9KSBhcyBEcm9wZG93bk9wdGlvblxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYW9Ecm9wZG93bjoge1xuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOlxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmFvRHJvcGRvd24gPz9cbiAgICAgICAgICAgICAgICAgICAgJ0FueSBvdGhlciBsb2NhdGlvbiB0aGF0IHlvdSBtaWdodCBiZSBpbnRlcmVzdGVkIGluIHdvcmtpbmcgYXQ/JyxcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBwcm9wcz8uY29uc3VsdFR5cGVzPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChwcm9wOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoeyBjb2RlOiBwcm9wPy5pZCwgbmFtZTogcHJvcD8ubmFtZSB9KSBhcyBEcm9wZG93bk9wdGlvblxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgd2xhbmdEcm9wZG93bjoge1xuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOlxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LndsYW5nRHJvcGRvd24gPz9cbiAgICAgICAgICAgICAgICAgICAgJ1doaWNoIGxhbmd1YWdlcyBkbyB5b3Ugc3BlYWs/JyxcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBwcm9wcz8uY29uc3VsdFR5cGVzPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChwcm9wOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoeyBjb2RlOiBwcm9wPy5pZCwgbmFtZTogcHJvcD8ubmFtZSB9KSBhcyBEcm9wZG93bk9wdGlvblxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaGREcm9wZG93bjoge1xuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOlxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmhkRHJvcGRvd24gPz9cbiAgICAgICAgICAgICAgICAgICAgJ0hvdyBkaWQgeW91IGhlYXIgYWJvdXQgUHVybyBHcm91cD8nLFxuICAgICAgICAgICAgICAgIG9wdGlvbnM6IHByb3BzPy5jb25zdWx0VHlwZXM/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgKHByb3A6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7IGNvZGU6IHByb3A/LmlkLCBuYW1lOiBwcm9wPy5uYW1lIH0pIGFzIERyb3Bkb3duT3B0aW9uXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwcmVmaXg6IHtcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBwcmVmaXhWYWx1ZXMubWFwKFxuICAgICAgICAgICAgICAgICAgICAocHJlZml4OiBzdHJpbmcsIGluZGV4OiBudW1iZXIpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGU6IGluZGV4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHByZWZpeCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIERyb3Bkb3duT3B0aW9uXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5wcmVmaXhlcyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBuYW1lSW5wdXQ6IHtcbiAgICAgICAgICAgICAgICBuYW1lOlxuICAgICAgICAgICAgICAgICAgICBVdGlscy5ub3JtYWxpemVDb250cm9sTmFtZShcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uaW5wdXROYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ25hbWUnXG4gICAgICAgICAgICAgICAgICAgICkgPz8gJ0ZpcnN0IG5hbWUnLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LmlucHV0TmFtZSA/PyAnRmlyc3QgbmFtZScsXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5lcnJvck5hbWUsXG4gICAgICAgICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgIHZhbGlkOiBzaWduYWwodHJ1ZSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc3VybmFtZUlucHV0OiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8uc3VybmFtZXMsXG4gICAgICAgICAgICAgICAgbmFtZTpcbiAgICAgICAgICAgICAgICAgICAgVXRpbHMubm9ybWFsaXplQ29udHJvbE5hbWUoXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LnN1cm5hbWVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3N1cm5hbWUnXG4gICAgICAgICAgICAgICAgICAgICkgPz8gJ0xhc3QgbmFtZScsXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uc3VybmFtZXMgPz8gJ0xhc3QgbmFtZScsXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5lcnJvck5hbWUsXG4gICAgICAgICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgIHZhbGlkOiBzaWduYWwodHJ1ZSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZW1haWxJbnB1dDoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LmlucHV0RW1haWwgPz8gJ2VtYWlsJyxcbiAgICAgICAgICAgICAgICBuYW1lOlxuICAgICAgICAgICAgICAgICAgICBVdGlscy5ub3JtYWxpemVDb250cm9sTmFtZShcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uaW5wdXRFbWFpbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICdlbWFpbCdcbiAgICAgICAgICAgICAgICAgICAgKSA/PyAnZW1haWwnLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LmlucHV0RW1haWwgPz8gJ0VtYWlsIGFkZHJlc3MnLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgICAgICB0eXBlOiAnZW1haWwnLFxuICAgICAgICAgICAgICAgIGVycm9yOiBwcm9wcz8udGV4dHM/LmVycm9yRW1haWwsXG4gICAgICAgICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMuZW1haWwsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgIHZhbGlkOiBzaWduYWwodHJ1ZSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY29uZmlybUVtYWlsSW5wdXQ6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5pbnB1dEVtYWlsID8/ICdlbWFpbCAyJyxcbiAgICAgICAgICAgICAgICBuYW1lOlxuICAgICAgICAgICAgICAgICAgICBVdGlscy5ub3JtYWxpemVDb250cm9sTmFtZShcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uaW5wdXRFbWFpbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICdlbWFpbGMnXG4gICAgICAgICAgICAgICAgICAgICkgPz8gJ2VtYWlsIDInLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LmlucHV0RW1haWwgPz8gJ0NvbmZpcm0geW91ciBlbWFpbCcsXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgIHR5cGU6ICdlbWFpbCcsXG4gICAgICAgICAgICAgICAgZXJyb3I6IHByb3BzPy50ZXh0cz8uZXJyb3JFbWFpbCxcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5lbWFpbCwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHNpZ25hbCh0cnVlKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwaG9uZUlucHV0OiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8uaW5wdXRQaG9uZSA/PyAncGhvbmUnLFxuICAgICAgICAgICAgICAgIG5hbWU6XG4gICAgICAgICAgICAgICAgICAgIFV0aWxzLm5vcm1hbGl6ZUNvbnRyb2xOYW1lKFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5pbnB1dFBob25lLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3Bob25lJ1xuICAgICAgICAgICAgICAgICAgICApID8/ICdwaG9uZScsXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uaW5wdXRQaG9uZSA/PyAnVGVsw6lmb25vJyxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgdHlwZTogJ3RlbCcsXG4gICAgICAgICAgICAgICAgZXJyb3I6IHByb3BzPy50ZXh0cz8uZXJyb3JQaG9uZSxcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHNpZ25hbCh0cnVlKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBmaWxlc0lucHV0OiB7XG4gICAgICAgICAgICAgICAgbmFtZTpcbiAgICAgICAgICAgICAgICAgICAgVXRpbHMubm9ybWFsaXplQ29udHJvbE5hbWUoXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmZpbGVzSW5wdXQsXG4gICAgICAgICAgICAgICAgICAgICAgICAnYWRkaXRpb25hbEZpbGVzJ1xuICAgICAgICAgICAgICAgICAgICApID8/ICdhZGRpdGlvbmFsRmlsZXMnLFxuICAgICAgICAgICAgICAgIHR5cGU6IHByb3BzPy50ZXh0cz8uZmlsZXNJbnB1dCA/PyAnQWRkaXRpb25hbCBmaWxlcycsXG4gICAgICAgICAgICAgICAgbGFiZWw6IHByb3BzPy50ZXh0cz8uZmlsZXNJbnB1dCxcbiAgICAgICAgICAgICAgICB2YWx1ZTogbnVsbCBhcyBGaWxlIHwgRmlsZVtdIHwgbnVsbCB8IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICB2YWxpZDogc2lnbmFsKHRydWUpLFxuICAgICAgICAgICAgICAgIC8vIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjdklucHV0OiB7XG4gICAgICAgICAgICAgICAgbmFtZTpcbiAgICAgICAgICAgICAgICAgICAgVXRpbHMubm9ybWFsaXplQ29udHJvbE5hbWUocHJvcHM/LnRleHRzPy5jdklucHV0LCAnY3YnKSA/P1xuICAgICAgICAgICAgICAgICAgICAnY3YnLFxuICAgICAgICAgICAgICAgIHR5cGU6IHByb3BzPy50ZXh0cz8uY3ZJbnB1dCxcbiAgICAgICAgICAgICAgICBsYWJlbDogcHJvcHM/LnRleHRzPy5jdklucHV0ID8/ICdVcGxvYWQgeW8gdXIgQ1YgaGVyZScsXG4gICAgICAgICAgICAgICAgdmFsdWU6IG51bGwgYXMgRmlsZSB8IEZpbGVbXSB8IG51bGwgfCB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHNpZ25hbCh0cnVlKSxcbiAgICAgICAgICAgICAgICAvLyB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICB9LFxuICAgICAgICB9IGFzIFB1cm9DYXJlZXJzRm9ybUk7XG4gICAgfVxuXG4gICAgbWFwRXZlbnRzRm9ybShwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0V2ZW50c0Zvcm1JIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgcHJlZml4VmFsdWVzID0gT2JqZWN0LnZhbHVlcyhwcm9wcz8ucHJlZml4ZXMgfHwge30pIGFzIHN0cmluZ1tdO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIGNpVGl0bGU6IHByb3BzPy50ZXh0cz8uY2l0aXRsZSxcbiAgICAgICAgICAgIGRUaXRsZTogcHJvcHM/LnRleHRzPy5kdGl0bGUsXG4gICAgICAgICAgICBob3dUaXRsZTogcHJvcHM/LnRleHRzPy5ob3dUaXRsZSxcbiAgICAgICAgICAgIG90aGVyczogcHJvcHM/LnRleHRzPy5vdGhlcnMsXG4gICAgICAgICAgICBjb25kaXRpb25zTGluazogcHJvcHM/LnRleHRzPy5jb25kaXRpb25zbGluayxcbiAgICAgICAgICAgIHJlcXVpcmVkTGFiZWw6IHByb3BzPy50ZXh0cz8ucmVxdWlyZWRMYWJlbCxcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRleHRDb2xvcnM6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdKSxcbiAgICAgICAgICAgIGFwcGx5QnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIHByb3BzPy5idXR0b25zKVswXSxcbiAgICAgICAgICAgIHNlZUFsbEJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBwcm9wcz8uYnV0dG9ucylbMV0sXG4gICAgICAgICAgICBob3dUZXh0YXJlYToge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/Lmhvd1RpdGxlLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/Lmhvd1RpdGxlLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgICAgICB2YWxpZDogc2lnbmFsKHRydWUpLFxuICAgICAgICAgICAgICAgIG5hbWU6ICdob3dNZXNzYWdlJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBpbmZvVGV4dGFyZWE6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5pbmZvVGl0bGUsXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uaW5mb1RpdGxlLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgICAgICB2YWxpZDogc2lnbmFsKHRydWUpLFxuICAgICAgICAgICAgICAgIG5hbWU6ICdpbmZvTWVzc2FnZScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbmVEcm9wZG93bjoge1xuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/Lm5lRHJvcGRvd24sXG4gICAgICAgICAgICAgICAgb3B0aW9uczogcHJvcHM/Lm5hdHVyZT8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAocHJvcDogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgKHsgY29kZTogcHJvcD8uaWQsIG5hbWU6IHByb3A/Lm5hbWUgfSkgYXMgRHJvcGRvd25PcHRpb25cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG90aGVyc0Ryb3Bkb3duOiB7XG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8ub3RoZXJzRHJvcGRvd24sXG4gICAgICAgICAgICAgICAgb3B0aW9uczogcHJvcHM/Lmhvd0hlYXJkVXM/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgKHByb3A6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7IGNvZGU6IHByb3A/LmlkLCBuYW1lOiBwcm9wPy5uYW1lIH0pIGFzIERyb3Bkb3duT3B0aW9uXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwcmVmaXg6IHtcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBwcmVmaXhWYWx1ZXMubWFwKFxuICAgICAgICAgICAgICAgICAgICAocHJlZml4OiBzdHJpbmcsIGluZGV4OiBudW1iZXIpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGU6IGluZGV4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHByZWZpeCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIERyb3Bkb3duT3B0aW9uXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5wcmVmaXhlcyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBuYW1lSW5wdXQ6IHtcbiAgICAgICAgICAgICAgICBuYW1lOiBVdGlscy5ub3JtYWxpemVDb250cm9sTmFtZShcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5uYW1lVGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICduYW1lJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8ubmFtZVRpdGxlLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgICAgZXJyb3I6IHByb3BzPy50ZXh0cz8ubmFtZUVycm9yLFxuICAgICAgICAgICAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgICAgICB2YWxpZDogc2lnbmFsKHRydWUpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHN1cm5hbWVJbnB1dDoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnN1cm5hbWVzVGl0bGUsXG4gICAgICAgICAgICAgICAgbmFtZTogVXRpbHMubm9ybWFsaXplQ29udHJvbE5hbWUoXG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uc3VybmFtZXNUaXRsZSxcbiAgICAgICAgICAgICAgICAgICAgJ3N1cm5hbWUnXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5zdXJuYW1lc1RpdGxlLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgICAgZXJyb3I6IHByb3BzPy50ZXh0cz8uc3VybmFtZXNFcnJvcixcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHNpZ25hbCh0cnVlKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlbWFpbElucHV0OiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8uZW1haWxUaXRsZSxcbiAgICAgICAgICAgICAgICBuYW1lOiBVdGlscy5ub3JtYWxpemVDb250cm9sTmFtZShcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5lbWFpbFRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAnZW1haWwnXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5lbWFpbFRpdGxlLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgICAgICB0eXBlOiAnZW1haWwnLFxuICAgICAgICAgICAgICAgIGVycm9yOiBwcm9wcz8udGV4dHM/LmVtYWlsRXJyb3IsXG4gICAgICAgICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMuZW1haWwsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgIHZhbGlkOiBzaWduYWwodHJ1ZSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY29tcGFueU5hbWVJbnB1dDoge1xuICAgICAgICAgICAgICAgIG5hbWU6IFV0aWxzLm5vcm1hbGl6ZUNvbnRyb2xOYW1lKFxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmNvbXBhbnlUaXRsZSxcbiAgICAgICAgICAgICAgICAgICAgJ2NvbXBhbnlOYW1lJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uY29tcGFueVRpdGxlLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgICAgZXJyb3I6IHByb3BzPy50ZXh0cz8uY29tcGFueUVycm9yLFxuICAgICAgICAgICAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgICAgICB2YWxpZDogc2lnbmFsKHRydWUpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHBob25lSW5wdXQ6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5waG9uZVRpdGxlLFxuICAgICAgICAgICAgICAgIG5hbWU6IFV0aWxzLm5vcm1hbGl6ZUNvbnRyb2xOYW1lKFxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LnBob25lVGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICdwaG9uZSdcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LnBob25lVGl0bGUsXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgIHR5cGU6ICd0ZWwnLFxuICAgICAgICAgICAgICAgIGVycm9yOiBwcm9wcz8udGV4dHM/LnBob25lRXJyb3IsXG4gICAgICAgICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgIHZhbGlkOiBzaWduYWwodHJ1ZSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbnBJbnB1dDoge1xuICAgICAgICAgICAgICAgIG5hbWU6IFV0aWxzLm5vcm1hbGl6ZUNvbnRyb2xOYW1lKFxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/Lm5wVGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICducFRpdGxlJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8ubnBUaXRsZSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICAgIGVycm9yOiBwcm9wcz8udGV4dHM/Lm5wRXJyb3IsXG4gICAgICAgICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgIHZhbGlkOiBzaWduYWwodHJ1ZSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZGF0ZUlucHV0OiB7XG4gICAgICAgICAgICAgICAgbmFtZTogVXRpbHMubm9ybWFsaXplQ29udHJvbE5hbWUoXG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uZGF0ZVRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAnZGF0ZSdcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LmRhdGVUaXRsZSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICAgIGVycm9yOiBwcm9wcz8udGV4dHM/LmRhdGVFcnJvcixcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHNpZ25hbCh0cnVlKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzSG91cklucHV0OiB7XG4gICAgICAgICAgICAgICAgbmFtZTogVXRpbHMubm9ybWFsaXplQ29udHJvbE5hbWUoXG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uc0hvdXJUaXRsZSxcbiAgICAgICAgICAgICAgICAgICAgJ3N0YXJ0SG91cidcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LnNIb3VyVGl0bGUsXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5zSG91ckVycm9yLFxuICAgICAgICAgICAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgICAgICB2YWxpZDogc2lnbmFsKHRydWUpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGZIb3VySW5wdXQ6IHtcbiAgICAgICAgICAgICAgICBuYW1lOiBVdGlscy5ub3JtYWxpemVDb250cm9sTmFtZShcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5mSG91clRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAnZW5kSG91cidcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LmZIb3VyVGl0bGUsXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5mSG91ckVycm9yLFxuICAgICAgICAgICAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgICAgICB2YWxpZDogc2lnbmFsKHRydWUpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHR5cGVFdmVudElucHV0OiB7XG4gICAgICAgICAgICAgICAgbmFtZTogVXRpbHMubm9ybWFsaXplQ29udHJvbE5hbWUoXG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8ubmVEcm9wZG93bixcbiAgICAgICAgICAgICAgICAgICAgJ2V2ZW50VHlwZSdcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/Lm5lRHJvcGRvd24sXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5uYW1lRXJyb3IsXG4gICAgICAgICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgIHZhbGlkOiBzaWduYWwodHJ1ZSksXG4gICAgICAgICAgICB9LFxuICAgICAgICB9IGFzIFB1cm9FdmVudHNGb3JtSTtcbiAgICB9XG5cbiAgICAvL1RPRE86IENoZWNrIGJhY2sgcHJvcHNcbiAgICBtYXBNb2RhbEluZm8oXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWQsXG4gICAgICAgIHJldmVyc2U6IGJvb2xlYW5cbiAgICApOiBQdXJvTW9kYWxJbmZvSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIHN1YnRpdGxlOiBwcm9wcz8udGV4dHM/LnN1YnRpdGxlLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBleHRyYURlc2NyaXB0aW9uOiBwcm9wcz8udGV4dHM/LmV4dHJhRGVzY3JpcHRpb24sXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgcHJvcHM/LmJ1dHRvbnMpWzBdLFxuICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2U/LlswXSksXG4gICAgICAgICAgICByZXZlcnNlLFxuICAgICAgICB9IGFzIFB1cm9Nb2RhbEluZm9JO1xuICAgIH1cblxuICAgIG1hcElmcmFtZShwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0lmcmFtZUkgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZnJhbWVVcmw6IHByb3BzPy50ZXh0cz8uZnJhbWVVcmwsXG4gICAgICAgIH0gYXMgUHVyb0lmcmFtZUk7XG4gICAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEltYWdlUmVzcG9uc2Uge1xuICAgIHBhdGg6IEltYWdlUmVzcG9uc2VQYXRoO1xuICAgIHRodW1ibmFpbHM6IHtcbiAgICAgICAgMzc1OiBJbWFnZVJlc3BvbnNlUGF0aDtcbiAgICAgICAgNTQwOiBJbWFnZVJlc3BvbnNlUGF0aDtcbiAgICAgICAgNzY4OiBJbWFnZVJlc3BvbnNlUGF0aDtcbiAgICAgICAgODAwOiBJbWFnZVJlc3BvbnNlUGF0aDtcbiAgICAgICAgMTAyNDogSW1hZ2VSZXNwb25zZVBhdGg7XG4gICAgICAgIDEyODA6IEltYWdlUmVzcG9uc2VQYXRoO1xuICAgIH07XG4gICAgY292ZXI6IG51bWJlcjtcbiAgICB0YWdzPzogYW55W107XG4gICAgdGl0bGU/OiBzdHJpbmc7XG4gICAgcHJldGl0bGU/OiBzdHJpbmc7XG4gICAgc3VidGl0bGU/OiBzdHJpbmc7XG4gICAgbmRUaXRsZT86IHN0cmluZztcbiAgICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgICBsaW5rcz86IGFueVtdO1xuICAgIGJ1dHRvbnM/OiBhbnlbXTtcbiAgICBhbHQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW1hZ2VSZXNwb25zZVBhdGgge1xuICAgIG9yaWdpbmFsOiBzdHJpbmc7XG4gICAgd2VicDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudHNBZGRvbnMge1xuICAgIGNvbnN1bHRUeXBlPzogQ29uc3VsdFR5cGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmlsdGVyT3B0aW9uIHtcbiAgICBpZD86IG51bWJlcjtcbiAgICBuYW1lPzogc3RyaW5nO1xuICAgIGNoaWxkcmVuPzogRmlsdGVyT3B0aW9uO1xufVxuZXhwb3J0IGludGVyZmFjZSBDb25zdWx0VHlwZSB7XG4gICAgY29uc3VsdFR5cGVJZD86IG51bWJlcjtcbiAgICBJZD86IG51bWJlcjtcbiAgICBsYW5ndWFnZUlkPzogbnVtYmVyO1xuICAgIG5hbWU/OiBzdHJpbmc7XG59XG4iXX0=
2708
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwcGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wdXJvL3NyYy9saWIvc2VydmljZXMvbWFwcGVyL21hcHBlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0UsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBNkc1QyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDMUMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDckQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sd0JBQXdCLENBQUM7O0FBTW5FLE1BQU0sT0FBTyxhQUFhO0lBSDFCO1FBSXFCLFlBQU8sR0FBRyxNQUFNLENBQUMseUJBQXlCLENBQUMsQ0FBQztRQUM1QyxnQkFBVyxHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBSzFELGtCQUFhLEdBQUcsTUFBTSxDQUFxQyxTQUFTLENBQUMsQ0FBQztRQUV0RSxXQUFNLEdBQW1CLFFBQVEsQ0FDN0IsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxNQUFNLENBQzlDLENBQUM7S0E2OUdMO0lBcitHRyxJQUFJLHdCQUF3QjtRQUN4QixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztJQUNyRCxDQUFDO0lBUU8sa0JBQWtCLENBQUMsR0FBVztRQUNsQyxNQUFNLEdBQUcsR0FBRyxJQUFJLGNBQWMsRUFBRSxDQUFDO1FBQ2pDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM3QixJQUFJO1lBQ0EsR0FBRyxDQUFDLElB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QUssRUFBRSxRQUFRO1NBQ3BCLENBQUM7SUFDckIsQ0FBQzsrR0F2K0dRLGFBQWE7bUhBQWIsYUFBYSxjQUZWLE1BQU07OzRGQUVULGFBQWE7a0JBSHpCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29tcHV0ZWQsIGluamVjdCwgSW5qZWN0YWJsZSwgU2lnbmFsLCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7XG4gICAgUHVybzQwNEksXG4gICAgUHVyb0FkdmFudGFnZXNJLFxuICAgIFB1cm9BZHZhbnRhZ2VzSXRlbSxcbiAgICBQdXJvQWR2YW50YWdlc1NtYWxsSSxcbiAgICBQdXJvQWR2YW50YWdlc1NtYWxsSXRlbSxcbiAgICBQdXJvQmFubmVyNENvbEksXG4gICAgUHVyb0Jhbm5lckluZm8ySSxcbiAgICBQdXJvQmFubmVySW5mb0ksXG4gICAgUHVyb0Jhbm5lclNsaWRlckksXG4gICAgUHVyb0JyZWFkY3J1bWJJLFxuICAgIFB1cm9DYXJlZXJzRm9ybUksXG4gICAgUHVyb0NhcnRhSSxcbiAgICBQdXJvQ29udGFjdEZvcm1JLFxuICAgIFB1cm9EdWFsTGlzdEksXG4gICAgUHVyb0VuZ2luZUksXG4gICAgUHVyb0VuZ2luZU1vZGFsSSxcbiAgICBQdXJvRXZlbnRzRm9ybUksXG4gICAgUHVyb0Zvb3RlckJlYWNoc0ksXG4gICAgUHVyb0Zvb3RlckJlYWNoc0l0ZW0sXG4gICAgUHVyb0Zvb3RlckhvdGVsc0ksXG4gICAgUHVyb0Zvb3RlckhvdGVsc0l0ZW0sXG4gICAgUHVyb0Zvb3RlckluZm9JLFxuICAgIFB1cm9Gb290ZXJJbmZvU29jaWFsTWVkaWFJbmZvLFxuICAgIFB1cm9Gb290ZXJMaW5rc0ksXG4gICAgUHVyb0dhbGxlcnlGaWx0ZXIsXG4gICAgUHVyb0dhbGxlcnlJLFxuICAgIFB1cm9HYWxsZXJ5SXRlbSxcbiAgICBQdXJvR3JpZDNDb2xGaWx0ZXJJLFxuICAgIFB1cm9HcmlkM0NvbEZpbHRlckl0ZW0sXG4gICAgUHVyb0dyaWQzQ29sUGx1c0ZpbHRlckksXG4gICAgUHVyb0dyaWQzQ29sUGx1c0ZpbHRlckl0ZW0sXG4gICAgUHVyb0dyaWQzY29sU2xpZGVySSxcbiAgICBQdXJvR3JpZDNjb2xTbGlkZXJJdGVtLFxuICAgIFB1cm9HcmlkNGl0ZW1zSSxcbiAgICBQdXJvR3JpZDRpdGVtc0l0ZW0sXG4gICAgUHVyb0dyaWQ1aXRlbXNJLFxuICAgIFB1cm9HcmlkNWl0ZW1zSXRlbSxcbiAgICBQdXJvR3JpZDZpdGVtc0ksXG4gICAgUHVyb0hlYWRlckksXG4gICAgUHVyb0hlYWRJbnRyb0ksXG4gICAgUHVyb0ltZ0luZm9JLFxuICAgIFB1cm9JbmZvQmFubmVySSxcbiAgICBQdXJvSW5mb0Jhbm5lckl0ZW0sXG4gICAgUHVyb0luZm9CaWdJLFxuICAgIFB1cm9JbmZvRGV0YWlsc0ksXG4gICAgUHVyb0luZm9HYWxsZXJ5SSxcbiAgICBQdXJvSW5mb0ludHJvSSxcbiAgICBQdXJvSW5mb0xpc3RJLFxuICAgIFB1cm9JbmZvU2VydmljZXNJLFxuICAgIFB1cm9JbmZvU2VydmljZXNJdGVtLFxuICAgIFB1cm9JbmZvU2xpZGVySSxcbiAgICBQdXJvSW5mb1NsaWRlckl0ZW0sXG4gICAgUHVyb0luZm9UYWJsZUksXG4gICAgUHVyb0luZm9WaWRlb0ksXG4gICAgUHVyb0xhbmd1YWdlc01vZGFsSSxcbiAgICBQdXJvTGFuZ3VhZ2VzTW9kYWxJdGVtLFxuICAgIFB1cm9MaXN0QXdhcmRzSSxcbiAgICBQdXJvTGlzdEF3YXJkc0l0ZW1JLFxuICAgIFB1cm9MaXN0R2VuZXJhbEksXG4gICAgUHVyb0xpc3RHZW5lcmFsSXRlbSxcbiAgICBQdXJvTWFwTGlzdEksXG4gICAgUHVyb01hcExpc3RJdGVtLFxuICAgIFB1cm9NZW51SSxcbiAgICBQdXJvTW9kYWxJbmZvSSxcbiAgICBQdXJvTW9kYWxPcHRpb25zSSxcbiAgICBQdXJvTXVzaWNTbGlkZXJJLFxuICAgIFB1cm9OZXdzbGV0dGVySSxcbiAgICBQdXJvT2ZmZXIsXG4gICAgUHVyb09mZmVyQmFubmVySSxcbiAgICBQdXJvUGhvdG9TbGlkZXJJLFxuICAgIFB1cm9Qcm9qZWN0c0Zvcm1JLFxuICAgIFB1cm9GYXFzSSxcbiAgICBQdXJvRmFxc0ltZ0ksXG4gICAgUHVyb1NjaGVkdWxlSSxcbiAgICBQdXJvU2NoZWR1bGVJdGVtLFxuICAgIFB1cm9TbGlkZXIxY29sSSxcbiAgICBQdXJvU2xpZGVyMWNvbEl0ZW0sXG4gICAgUHVyb1NsaWRlcjJjb2xJLFxuICAgIFB1cm9TbGlkZXIzQ2FyZEksXG4gICAgUHVyb1NsaWRlcjNDYXJkSXRlbUksXG4gICAgUHVyb1NsaWRlcjNjb2xJLFxuICAgIFB1cm9TbGlkZXIzQ29sSXRlbSxcbiAgICBQdXJvU2xpZGVyM0NvbFJvdW5kSSxcbiAgICBQdXJvU2xpZGVyM0NvbFJvdW5kSXRlbSxcbiAgICBQdXJvU2xpZGVyNEl0ZW1zSSxcbiAgICBQdXJvVGhhbmtzSSxcbiAgICBQdXJvVGltZWxpbmVJLFxuICAgIFB1cm9Ub3BTbGlkZXJJLFxuICAgIFB1cm9XZWJtYXBJLFxuICAgIFB1cm9aaWdaYWcyY29sSSxcbiAgICBQdXJvSW5mb0RldGFpbHMzQ29sSSxcbiAgICBQdXJvSW5mb0RldGFpbEl0ZW1JLFxuICAgIFB1cm9JbmZvRGV0YWlsczJDb2xJLFxuICAgIFB1cm9CbG9nTGlzdEksXG4gICAgUHVyb0Jsb2dEZXRhaWxzSSxcbiAgICBQdXJvSW5uZXJDb250ZW50SSxcbiAgICBQdXJvU2xpZGVyMmNvbEl0ZW0sXG4gICAgUHVyb1N1Ym1lbnVNb2JpbGVJdGVtSSxcbiAgICBQdXJvR3JpZDZpdGVtc0l0ZW0sXG4gICAgUHVyb0xpc3RSZXN0YXVyYW50c0ksXG4gICAgUHVyb0xpc3RSZXN0YXVyYW50SXRlbUksXG4gICAgUHVyb0lmcmFtZUksXG59IGZyb20gJy4uLy4uL2NvbXBvbmVudHMnO1xuaW1wb3J0IHsgUHVyb0luZm8yQ29sSSB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvcHVyby1pbmZvMmNvbC9wdXJvLWluZm8yY29sLmludGVyZmFjZSc7XG5pbXBvcnQgeyBCb2R5Q29tcG9uZW50LCBQdXJvQnV0dG9uSSwgUHVyb0ltYWdlSSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgRHJvcGRvd25PcHRpb24gfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3B1cm8tZHJvcGRvd24uaW50ZXJmYWNlJztcbmltcG9ydCB7IFV0aWxzIH0gZnJvbSAnLi4vLi4vdXRpbHMvdXRpbHMnO1xuaW1wb3J0IHsgU2NyZWVuU2l6ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vc2NyZWVuLXNpemVyJztcbmltcG9ydCB7IFNJVEVfQ09ORklHX1NFUlZJQ0VfVE9LRU4gfSBmcm9tICcuL21hcHBlci5zZXJ2aWNlLnRva2VuJztcbmltcG9ydCB7IFB1cm9WaWV3c1R5cGUgfSBmcm9tICcuLi8uLi9FbnVtL3ZpZXdzLmVudW0nO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBNYXBwZXJTZXJ2aWNlIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHNpdGVTdmMgPSBpbmplY3QoU0lURV9DT05GSUdfU0VSVklDRV9UT0tFTik7XG4gICAgcHJpdmF0ZSByZWFkb25seSBzY3JlZW5TaXplciA9IGluamVjdChTY3JlZW5TaXplclNlcnZpY2UpO1xuICAgIGdldCBpc01heFNtYWxsRGVza3RvcEluc3RhbnQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnNjcmVlblNpemVyLm1heFNtYWxsRGVza3RvcEluc3RhbnQoKTtcbiAgICB9XG5cbiAgICBoZWFkZXJCdXR0b25zID0gc2lnbmFsPFJlY29yZDxzdHJpbmcsIHN0cmluZz4gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbiAgICBzaXRlSWQ6IFNpZ25hbDxudW1iZXI+ID0gY29tcHV0ZWQoXG4gICAgICAgICgpID0+IHRoaXMuc2l0ZVN2Yy53ZWJDb25maWdJbnN0YW50Py5zaXRlSURcbiAgICApO1xuXG4gICAgcHJpdmF0ZSB0aHVtYm5haWxBdmFpbGFibGUodXJsOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7XG4gICAgICAgIHhoci5vcGVuKCdIRUFEJywgdXJsLCBmYWxzZSk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB4aHIuc2VuZCgpO1xuICAgICAgICAgICAgcmV0dXJuIHhoci5zdGF0dXMgPj0gMjAwICYmIHhoci5zdGF0dXMgPCA0MDA7XG4gICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICBpbWFnZTogSW1hZ2VSZXNwb25zZSB8IHVuZGVmaW5lZFxuICAgICk6IFB1cm9JbWFnZUkgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAoIWltYWdlKSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gICAgICAgIGxldCBzZWxlY3RlZEltYWdlID0gJyc7XG5cbiAgICAgICAgaWYgKHRoaXMuc2NyZWVuU2l6ZXIuaXNNb2JpbGVJbnN0YW50KCkpIHtcbiAgICAgICAgICAgIHNlbGVjdGVkSW1hZ2UgPSBpbWFnZT8udGh1bWJuYWlscz8uWzM3NV0/LndlYnA7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5zY3JlZW5TaXplci5pc1NtYWxsVGFibGV0SW5zdGFudCgpKSB7XG4gICAgICAgICAgICBzZWxlY3RlZEltYWdlID0gaW1hZ2U/LnRodW1ibmFpbHM/Lls1NDBdPy53ZWJwO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc2NyZWVuU2l6ZXIuaXNNZWRpdW1UYWJsZXRJbnN0YW50KCkpIHtcbiAgICAgICAgICAgIHNlbGVjdGVkSW1hZ2UgPSBpbWFnZT8udGh1bWJuYWlscz8uWzc2OF0/LndlYnA7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5zY3JlZW5TaXplci5pc0Z1bGxUYWJsZXRJbnN0YW50KCkpIHtcbiAgICAgICAgICAgIHNlbGVjdGVkSW1hZ2UgPSBpbWFnZT8udGh1bWJuYWlscz8uWzEwMjRdPy53ZWJwO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc2NyZWVuU2l6ZXIubWluRnVsbERlc2t0b3AoKSkge1xuICAgICAgICAgICAgc2VsZWN0ZWRJbWFnZSA9IGltYWdlPy5wYXRoPy53ZWJwO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc2VsZWN0ZWRJbWFnZSA9IGltYWdlPy50aHVtYm5haWxzPy5bMTI4MF0/LndlYnA7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjZG4gPSB0aGlzLnNpdGVTdmMuY2RuSW1hZ2VzSW5zdGFudDtcbiAgICAgICAgY29uc3QgdGh1bWJVcmwgPSBjZG4gKyBzZWxlY3RlZEltYWdlO1xuICAgICAgICBjb25zdCBvcmlnaW5hbFVybCA9IGNkbiArIGltYWdlLnBhdGgud2VicDtcblxuICAgICAgICBjb25zdCBmaW5hbFNyYyA9IHRoaXMudGh1bWJuYWlsQXZhaWxhYmxlKHRodW1iVXJsKVxuICAgICAgICAgICAgPyB0aHVtYlVybFxuICAgICAgICAgICAgOiBvcmlnaW5hbFVybDtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgc3JjOiBmaW5hbFNyYyxcbiAgICAgICAgICAgIGFsdDogaW1hZ2U/LmFsdCxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBnZXRBcnJheUltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgaW1hZ2VzOiBJbWFnZVJlc3BvbnNlW10gfCB1bmRlZmluZWRcbiAgICApOiBQdXJvSW1hZ2VJW10gfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gaW1hZ2VzPy5zb21lKChpbWcpID0+IGltZyAhPT0gdW5kZWZpbmVkICYmIGltZyAhPT0gbnVsbClcbiAgICAgICAgICAgID8gaW1hZ2VzPy5tYXAoKGltZykgPT4gdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaW1nKSEpXG4gICAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBnZXRWaWV3KHZpZXc6IFB1cm9WaWV3c1R5cGUgfCB1bmRlZmluZWQpOiAnbGVmdCcgfCAncmlnaHQnIHtcbiAgICAgICAgcmV0dXJuIHZpZXcgPT09ICdyaWdodCcgPyAncmlnaHQnIDogJ2xlZnQnO1xuICAgIH1cblxuICAgIHNhbml0aXplKG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBuYW1lXG4gICAgICAgICAgICAubm9ybWFsaXplKCdORkQnKVxuICAgICAgICAgICAgLnJlcGxhY2UoL1tcXHUwMzAwLVxcdTAzNmZdL2csICcnKSAvLyBxdWl0YXIgdGlsZGVzXG4gICAgICAgICAgICAucmVwbGFjZSgvW15hLXpBLVowLTkgXS9nLCAnICcpIC8vIHF1aXRhciBzw61tYm9sb3MgcmFyb3NcbiAgICAgICAgICAgIC50cmltKClcbiAgICAgICAgICAgIC5zcGxpdCgnICcpXG4gICAgICAgICAgICAubWFwKChwYXJ0LCBpKSA9PlxuICAgICAgICAgICAgICAgIGkgPT09IDBcbiAgICAgICAgICAgICAgICAgICAgPyBwYXJ0LnRvTG93ZXJDYXNlKClcbiAgICAgICAgICAgICAgICAgICAgOiBwYXJ0LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgcGFydC5zbGljZSgxKS50b0xvd2VyQ2FzZSgpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuam9pbignJyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZW5lcmF0ZUFnZXNPcHRpb25zKG1heExlbmd0aDogbnVtYmVyLCBtaW5MZW5ndGggPSAwKTogYW55W10ge1xuICAgICAgICBjb25zdCBvcHRpb25zOiBhbnlbXSA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpID0gbWluTGVuZ3RoOyBpIDw9IG1heExlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBvcHRpb25zLnB1c2goeyBjb2RlOiBpLCBuYW1lOiBpIDwgMTAgPyBgMCR7aX1gIDogYCR7aX1gIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvcHRpb25zO1xuICAgIH1cblxuICAgIG1hcENvbXBvbmVudHM8VD4oXG4gICAgICAgIGJvZHk6IGFueVtdLFxuICAgICAgICBhZGRvbnM/OiBDb21wb25lbnRzQWRkb25zXG4gICAgKTogQm9keUNvbXBvbmVudDxUPltdIHtcbiAgICAgICAgY29uc3QgYm9keU1hcHBlZDogQm9keUNvbXBvbmVudDxUPltdID0gYm9keS5tYXAoKGNvbXBvbmVudCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY29tcG9uZW50TWFwcGVkOiBCb2R5Q29tcG9uZW50PFQ+ID0ge1xuICAgICAgICAgICAgICAgIG5hbWU6IGNvbXBvbmVudD8ubmFtZT8udG9Mb3dlckNhc2UoKSxcbiAgICAgICAgICAgICAgICBvcmRlcjogY29tcG9uZW50Py5vcmRlcixcbiAgICAgICAgICAgICAgICBwcm9wczogY29tcG9uZW50Py5wcm9wcyxcbiAgICAgICAgICAgICAgICB2aWV3OiBjb21wb25lbnQ/LnZpZXcsXG4gICAgICAgICAgICAgICAgaWRlbnRpZmllcjogY29tcG9uZW50LmlkZW50aWZpZXIsXG4gICAgICAgICAgICB9IGFzIEJvZHlDb21wb25lbnQ8VD47XG5cbiAgICAgICAgICAgIGlmIChjb21wb25lbnQgJiYgY29tcG9uZW50Py5uYW1lICYmIGNvbXBvbmVudD8ucHJvcHMpIHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGNvbXBvbmVudC5uYW1lPy50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdnYWxsZXJ5JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEdhbGxlcnkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2dyaWQzY29sZmlsdGVyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEdyaWQzY29sRmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdncmlkM2NvbHBsdXNmaWx0ZXInOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwR3JpZDNjb2xQbHVzRmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvYmlnJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEluZm9CaWcoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3NsaWRlcjFjb2wnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwU2xpZGVyMWNvbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZm9vdGVyYmVhY2hzJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEZvb3RlckJlYWNocyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZm9vdGVyaW5mbyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBGb290ZXJJbmZvKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdmb290ZXJob3RlbHMnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwRm9vdGVySG90ZWxzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdmb290ZXJsaW5rcyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBGb290ZXJMaW5rcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnd2VibWFwJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFdlYm1hcChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAndG9wc2xpZGVyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFRvcFNsaWRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmhlYWRlckJ1dHRvbnMoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2FkdmFudGFnZXNzbWFsbCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBBZHZhbnRhZ2VzU21hbGwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm9saXN0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEluZm9MaXN0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdzbGlkZXIzY29scm91bmQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwU2xpZGVyM0NvbFJvdW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvaW50cm8nOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwSW5mb0ludHJvKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbWdpbmZvcmlnaHQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW1naW5mb2xlZnQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwSW1nSW5mbyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQubmFtZT8udG9Mb3dlckNhc2UoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm90YWJsZSc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBJbmZvVGFibGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3NsaWRlcjNjb2wnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwU2xpZGVyM2NvbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnc2xpZGVyMmNvbCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBTbGlkZXIyY29sKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdncmlkNWl0ZW1zJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEdyaWQ1aXRlbXMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2dyaWQ2aXRlbXMnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwR3JpZDZpdGVtcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mb3ZpZGVvcmlnaHQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mb3ZpZGVvbGVmdCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBJbmZvVmlkZW8oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50Lm5hbWU/LnRvTG93ZXJDYXNlKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdsaXN0b2ZmZXJzJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2xpc3RuZXdzcmlnaHQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbGlzdG5ld3NsZWZ0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2xpc3Ryb29tcyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBMaXN0R2VuZXJhbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQubmFtZT8udG9Mb3dlckNhc2UoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2xpc3RyZXN0YXVyYW50cyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBMaXN0UmVzdGF1cmFudHMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJzQwNCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXA0MDQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3RoYW5rcyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBUaGFua3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2NvbnRhY3Rmb3JtJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcENvbnRhY3RGb3JtKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdvZmZlcnNzbGlkZXInOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwT2ZmZXJzU2xpZGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvc2VydmljZXMnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwSW5mb1NlcnZpY2VzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC52aWV3XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mb2Jhbm5lcic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBJbmZvQmFubmVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdzY2hlZHVsZSc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBTY2hlZHVsZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnYWR2YW50YWdlcyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBBZHZhbnRhZ2VzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdncmlkNGl0ZW1zJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEdyaWQ0aXRlbXMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3ppZ3phZzJjb2wnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwWmlnemFnMmNvbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZ3JpZDNjb2xzbGlkZXInOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwR3JpZDNjb2xTbGlkZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm9zbGlkZXJsZWZ0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm9zbGlkZXJyaWdodCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBJbmZvU2xpZGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5uYW1lPy50b0xvd2VyQ2FzZSgpID09PVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2luZm9zbGlkZXJsZWZ0J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3Bob3Rvc2xpZGVybGVmdCc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdwaG90b3NsaWRlcnJpZ2h0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFBob3RvU2xpZGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5uYW1lPy50b0xvd2VyQ2FzZSgpID09PVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Bob3Rvc2xpZGVybGVmdCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdiYW5uZXI0Y29sJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEJhbm5lcjRDb2woXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm9nYWxsZXJ5JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEluZm9HYWxsZXJ5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvMmNvbCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBJbmZvMkNvbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbWFwbGlzdCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBNYXBMaXN0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdtb2RhbGhvdGVscyc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdsaXN0YWRvYmVhY2gnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwTWFwTGlzdChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbGFuZ3VhZ2VzbW9kYWwnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwTGFuZ3VhZ2VzTW9kYWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ29mZmVyYmFubmVyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcE9mZmVyQmFubmVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdtZW51JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFN1Ym1lbnUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2xpc3Rhd2FyZHMnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwTGlzdEF3YXJkcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnc2xpZGVyM2NhcmQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwU2xpZGVyM0NhcmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ25ld3NsZXR0ZXInOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwTmV3c2xldHRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnYmFubmVyaW5mbyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBCYW5uZXJJbmZvKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdiYW5uZXJpbmZvMic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBCYW5uZXJJbmZvMihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mb2RldGFpbHMnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwSW5mb0RldGFpbHMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm9kZXRhaWxzMmNvbCc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvZGV0YWlsczNjb2wnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwSW5mb0RldGFpbHNDb2xzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdtdXNpY3NsaWRlcic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBNdXNpY1NsaWRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnY2FydGEnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwQ2FydGEoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3NsaWRlcjRpdGVtcyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBTbGlkZXI0SXRlbXMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2R1YWxsaXN0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcER1YWxMaXN0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdwcm9qZWN0c2Zvcm0nOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwUHJvamVjdHNGb3JtKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdibG9nbGlzdCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBCbG9nTGlzdChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnYmxvZ2RldGFpbCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBCbG9nUG9zdChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnYmFubmVyc2xpZGVyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEJhbm5lclNsaWRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbW9kYWxvcHRpb25zJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcE1vZGFsT3B0aW9ucyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5uZXJjb250ZW50JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcElubmVyQ29udGVudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAndGltZWxpbmUnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwVGltZWxpbmUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2hlYWRpbnRybyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBIZWFkSW50cm8oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2NhcmVlcnNmb3JtJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcENhcmVlcnNGb3JtKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdldmVudHNmb3JtJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEV2ZW50c0Zvcm0oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ21vZGFsaW5mb2xlZnQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbW9kYWxpbmZvcmlnaHQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwTW9kYWxJbmZvKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5uYW1lPy50b0xvd2VyQ2FzZSgpID09PVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21vZGFsaW5mb2xlZnQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaWZyYW1lJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcElmcmFtZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZmFxcyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBGYXFzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdmYXFzaW1nJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEZhcXNJbWcoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnZpZXcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5pZGVudGlmaWVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihjb21wb25lbnRNYXBwZWQubmFtZSwgZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGNvbXBvbmVudE1hcHBlZDtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGJvZHlNYXBwZWQ7XG4gICAgfVxuXG4gICAgbWFwR3JpZDNjb2xTbGlkZXIocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9HcmlkM2NvbFNsaWRlckkgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCB7IHRleHRzLCBtdWx0aW1lZGlhLCBob3RlbHMsIGJ1dHRvbnMgfSA9IHByb3BzO1xuICAgICAgICBsZXQgaXRlbXM6IFB1cm9HcmlkM2NvbFNsaWRlckl0ZW1bXSA9IFtdO1xuICAgICAgICBpZiAobXVsdGltZWRpYSkge1xuICAgICAgICAgICAgaXRlbXMgPSBtdWx0aW1lZGlhPy5pbWFnZW5lcz8ubWFwKFxuICAgICAgICAgICAgICAgIChpbWc6IEltYWdlUmVzcG9uc2UpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zaXRlSWQoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWc/LmJ1dHRvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgIClbMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmV0aXRsZTogaW1nPy5wcmV0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpbWc/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpbWcpLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvR3JpZDNjb2xTbGlkZXJJdGVtXG4gICAgICAgICAgICApO1xuICAgICAgICB9IGVsc2UgaWYgKGhvdGVscykge1xuICAgICAgICAgICAgaXRlbXMgPSBob3RlbHM/Lm1hcChcbiAgICAgICAgICAgICAgICAoaG90ZWw6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNpdGVJZCgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvdGVsPy5saW5rc1xuICAgICAgICAgICAgICAgICAgICAgICAgKVswXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOiBob3RlbD8uY2l0eSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChob3RlbC50ZXh0cz8ubmFtZSB8fCAnJykgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChob3RlbC50ZXh0cz8uZGVzY3JpcHRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAnIDxicj4gJyArIGhvdGVsLnRleHRzLmRlc2NyaXB0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJycpLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBob3RlbC5tdWx0aW1lZGlhPy5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW1nOiBJbWFnZVJlc3BvbnNlKSA9PiBpbWcuY292ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvR3JpZDNjb2xTbGlkZXJJdGVtXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgdGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIGl0ZW1zOiBpdGVtcyxcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBidXR0b25zKVswXSxcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICB9LFxuICAgICAgICB9IGFzIFB1cm9HcmlkM2NvbFNsaWRlckk7XG4gICAgfVxuXG4gICAgbWFwR2FsbGVyeShwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0dhbGxlcnlJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgeyB0ZXh0cywgYnV0dG9ucywgZmlsdGVycyA9IFtdIH0gPSBwcm9wcztcblxuICAgICAgICBjb25zdCB2YWxpZEZpbHRlcnMgPSBmaWx0ZXJzLmZpbHRlcigoZjogYW55KSA9PiB7XG4gICAgICAgICAgICAvLyBNYW50ZW5lciBcIlRvZG9zXCIgc2llbXByZVxuICAgICAgICAgICAgaWYgKGYuYWxsKSByZXR1cm4gdHJ1ZTtcblxuICAgICAgICAgICAgLy8gTWFudGVuZXIgaGFiaXRhY2lvbmVzIHBhcmVudCAocm9vbXM6dHJ1ZSkgc2llbXByZVxuICAgICAgICAgICAgaWYgKGYucm9vbXMpIHJldHVybiB0cnVlO1xuXG4gICAgICAgICAgICAvLyBIYWJpdGFjaW9uZXMgaW5kaXZpZHVhbGVzIOKGkiByZXF1aWVyZW4gbXVsdGltZWRpYVxuICAgICAgICAgICAgaWYgKGYucm9vbSlcbiAgICAgICAgICAgICAgICByZXR1cm4gQXJyYXkuaXNBcnJheShmLm11bHRpbWVkaWEpICYmIGYubXVsdGltZWRpYS5sZW5ndGggPiAwO1xuXG4gICAgICAgICAgICAvLyBSZXN0byBkZSBmaWx0cm9zIOKGkiByZXF1aWVyZW4gbXVsdGltZWRpYVxuICAgICAgICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkoZi5tdWx0aW1lZGlhKSAmJiBmLm11bHRpbWVkaWEubGVuZ3RoID4gMDtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgaW5kZXhNYXAgPSBuZXcgTWFwPGFueSwgbnVtYmVyPigpO1xuICAgICAgICB2YWxpZEZpbHRlcnMuZm9yRWFjaCgoZjogYW55LCBpOiBhbnkpID0+IGluZGV4TWFwLnNldChmLCBpKSk7XG5cbiAgICAgICAgY29uc3QgbWFwcGVkRmlsdGVycyA9IHZhbGlkRmlsdGVycy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IG51bWJlcikgPT4gKHtcbiAgICAgICAgICAgIGlkOiBpbmRleCxcbiAgICAgICAgICAgIGFsbDogaXRlbS5hbGwsXG4gICAgICAgICAgICByb29tOiBpdGVtLnJvb20sXG4gICAgICAgICAgICByb29tczogaXRlbS5yb29tcyxcbiAgICAgICAgICAgIHRleHQ6IGl0ZW0ubmFtZSxcbiAgICAgICAgfSkpIGFzIFB1cm9HYWxsZXJ5RmlsdGVyW107XG5cbiAgICAgICAgY29uc3QgaXRlbXMgPSB2YWxpZEZpbHRlcnMuZmxhdE1hcCgoZmlsdGVyOiBhbnkpID0+IHtcbiAgICAgICAgICAgIGlmICghQXJyYXkuaXNBcnJheShmaWx0ZXIubXVsdGltZWRpYSkpIHJldHVybiBbXTtcblxuICAgICAgICAgICAgcmV0dXJuIGZpbHRlci5tdWx0aW1lZGlhLm1hcCgoaW1nOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpbWcpLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBpbWc/LnRpdGxlLFxuICAgICAgICAgICAgICAgIGZpbHRlcjogaW5kZXhNYXAuZ2V0KGZpbHRlciksIC8vIGluZGV4IGNvcnJlY3RvXG4gICAgICAgICAgICB9KSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBmaWx0ZXJzOiBtYXBwZWRGaWx0ZXJzLFxuICAgICAgICAgICAgcHJldGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHRleHRzPy5wcmV0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyB0ZXh0cz8ucHJldGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiB0ZXh0cz8ucHJldGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgdGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogdGV4dHM/LnByZXRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRleHRDb2xvcnM6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogdGV4dHM/LnByZXRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZmlsdGVyVGl0bGU6IHRleHRzPy5yb29tc0ZpbHRlcixcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBidXR0b25zKT8uWzBdLFxuICAgICAgICAgICAgaXRlbXMsXG4gICAgICAgIH0gYXMgUHVyb0dhbGxlcnlJO1xuICAgIH1cblxuICAgIG1hcE1hcExpc3QocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9NYXBMaXN0SSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IHsgdGV4dHMsIG11bHRpbWVkaWEsIGhvdGVscyB9ID0gcHJvcHM7XG4gICAgICAgIGxldCBpdGVtczogUHVyb01hcExpc3RJdGVtW10gPSBbXTtcbiAgICAgICAgaWYgKGhvdGVscykge1xuICAgICAgICAgICAgaXRlbXMgPSBob3RlbHM/Lm1hcChcbiAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0/LnRleHRzPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGl0ZW0/LnRleHRzPy5hZGRpdGlvbmFsMSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy5tdWx0aW1lZGlhPy5maWx0ZXIoKGltZzogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWc/LnRhZ3M/LnNvbWUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGFnOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFnID09PSAnTWFwTGlzdFBob3RvJyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZz8ubmFtZSA9PT0gJ01hcExpc3RQaG90bydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk/LlswXVxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcEltYWdlOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy5tdWx0aW1lZGlhPy5maWx0ZXIoKGltZzogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWc/LnRhZ3M/LnNvbWUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGFnOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFnID09PSAnTWFwTGlzdE1hcCcgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWc/Lm5hbWUgPT09ICdNYXBMaXN0TWFwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKT8uWzBdXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvTWFwTGlzdEl0ZW1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSBpZiAobXVsdGltZWRpYSkge1xuICAgICAgICAgICAgaXRlbXMgPSBtdWx0aW1lZGlhPy5pbWFnZW5lcz8ubWFwKFxuICAgICAgICAgICAgICAgIChpbWc6IEltYWdlUmVzcG9uc2UpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaW1nPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpbWc/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2U6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGltZyksXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXBJbWFnZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvTWFwTGlzdEl0ZW1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZGVzY3JpcHRpb246IHRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIHByZXRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiB0ZXh0cz8ucHJldGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gdGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogdGV4dHM/LnByZXRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyB0ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiB0ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICBzdWJ0aXRsZTogdGV4dHM/LnN1YnRpdGxlLFxuICAgICAgICAgICAgbmRUaXRsZTogdGV4dHM/Lm5kdGl0bGUsXG4gICAgICAgICAgICBuZERlc2NyaXB0aW9uOiB0ZXh0cz8ubmRkZXNjcmlwdGlvbixcbiAgICAgICAgICAgIG1hcEltYWdlOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShwcm9wcz8ubXVsdGltZWRpYT8ubWFwPy5bMF0pLFxuICAgICAgICAgICAgaXRlbXMsXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHRleHRzPy5wcmV0aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSBhcyBQdXJvTWFwTGlzdEk7XG4gICAgfVxuXG4gICAgbWFwT2ZmZXJCYW5uZXIocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9PZmZlckJhbm5lckkgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAocHJvcHMpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgdGV4dHMsIGJ1dHRvbnMgfSA9IHByb3BzO1xuICAgICAgICAgICAgLy9UT0RPOmJhY2tcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGJ1dHRvbnMpWzBdLFxuICAgICAgICAgICAgICAgIGN1cnJlbmN5OiAnJyxcbiAgICAgICAgICAgICAgICBmcm9tOiB0ZXh0cz8uZnJvbSxcbiAgICAgICAgICAgICAgICBpbWFnZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIHByaWNlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIH0gYXMgUHVyb09mZmVyQmFubmVySTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgbWFwTGFuZ3VhZ2VzTW9kYWwocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9MYW5ndWFnZXNNb2RhbEkgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCB7IHRleHRzLCBsYW5ndWFnZXMgfSA9IHByb3BzO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaXRlbXM6IGxhbmd1YWdlcyBhcyBQdXJvTGFuZ3VhZ2VzTW9kYWxJdGVtW10sXG4gICAgICAgICAgICBzZWxlY3RlZDogbGFuZ3VhZ2VzLmZpbmQoXG4gICAgICAgICAgICAgICAgKGl0ZW06IFB1cm9MYW5ndWFnZXNNb2RhbEl0ZW0pID0+XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0uaWQgPT09IHRoaXMuc2l0ZVN2Yy5zZWxlY3RlZExhbmd1YWdlSW5zdGFudD8uaWRcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgdGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICB9LFxuICAgICAgICB9IGFzIFB1cm9MYW5ndWFnZXNNb2RhbEk7XG4gICAgfVxuXG4gICAgbWFwSGVhZGVyKFxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkLFxuICAgICAgICBtZW51OiBhbnkgfCB1bmRlZmluZWRcbiAgICApOiBQdXJvSGVhZGVySSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IHsgbmF2LCBtdWx0aW1lZGlhLCBsaW5rcyB9ID0gbWVudSB8fCB7fTtcbiAgICAgICAgY29uc3QgeyBib3R0b21MaW5rcyB9ID0gbGlua3MgPz8ge307XG5cbiAgICAgICAgY29uc3QgZmFsbGJhY2tUZXh0cyA9IHtcbiAgICAgICAgICAgIG1lbnU6ICdNZW7DuicsXG4gICAgICAgICAgICBsYW5ndWFnZTogJ0lkaW9tYScsXG4gICAgICAgICAgICBib29rbm93OiAnUmVzZXJ2YXInLFxuICAgICAgICAgICAgY2hlY2tpbjogJ0NoZWNrSW4nLFxuICAgICAgICAgICAgY2hlY2tpbk9ubGluZTogJ0NoZWNrSW5PbmxpbmUnLFxuICAgICAgICB9IGFzIFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gICAgICAgIGNvbnN0IHRleHRzID0gcHJvcHM/LmhlYWRlckJ1dHRvbnM/LnRleHRzID8/IGZhbGxiYWNrVGV4dHM7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlTWVudTogdGV4dHM/Lm1lbnUgPz8gZmFsbGJhY2tUZXh0c1snbWVudSddLFxuICAgICAgICAgICAgdGl0bGVMYW5nOiB0ZXh0cz8ubGFuZ3VhZ2UgPz8gZmFsbGJhY2tUZXh0c1snbGFuZ3VhZ2UnXSxcbiAgICAgICAgICAgIGJ0bkJvb2s6IHRleHRzPy5ib29rbm93ID8/IGZhbGxiYWNrVGV4dHNbJ2Jvb2tub3cnXSxcbiAgICAgICAgICAgIG5hdkxpbmtzOiBuYXY/Lm1hcCgobGluazogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgcHJlZml4ID1cbiAgICAgICAgICAgICAgICAgICAgbGluaz8uc2l0ZUlkID09PSAyXG4gICAgICAgICAgICAgICAgICAgICAgICA/ICcvcHVyb2hvdGVscydcbiAgICAgICAgICAgICAgICAgICAgICAgIDogbGluaz8uc2l0ZUlkID09PSAzXG4gICAgICAgICAgICAgICAgICAgICAgICAgID8gJy9wdXJvYmVhY2gnXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDogJyc7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICBsYWJlbDogbGluaz8udHJhbnNsYXRpb25zPy5bMF0/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgIHVybDogcHJlZml4ICsgbGluaz8ubGlua1ZhbHVlLFxuICAgICAgICAgICAgICAgICAgICBsaW5rVHlwZTogbGluay5saW5rVHlwZSxcbiAgICAgICAgICAgICAgICAgICAgaWNvbjogbGluaz8uaWNvbixcbiAgICAgICAgICAgICAgICB9IGFzIFB1cm9CdXR0b25JO1xuICAgICAgICAgICAgfSksXG5cbiAgICAgICAgICAgIGJvdHRvbUxpbmtzOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgIHRoaXMuc2l0ZUlkKCksXG4gICAgICAgICAgICAgICAgYm90dG9tTGlua3M/LlswXT8uZmlsdGVyKChidG46IGFueSkgPT4gISFidG4/LmxhYmVsKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGJ0bkNoZWNraW46IHRleHRzPy5jaGVja2luID8/IGZhbGxiYWNrVGV4dHNbJ2NoZWNraW4nXSxcbiAgICAgICAgICAgIGJ0bkNoZWNraW5PbmxpbmU6XG4gICAgICAgICAgICAgICAgdGV4dHM/LmNoZWNraW5vbmxpbmUgPz8gZmFsbGJhY2tUZXh0c1snY2hlY2tpbk9ubGluZSddLFxuICAgICAgICAgICAgaG90ZWxCcmFuZDogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUobXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXSksXG4gICAgICAgIH0gYXMgUHVyb0hlYWRlckk7XG4gICAgfVxuXG4gICAgbWFwSW5mb0JpZyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0luZm9CaWdJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgeyB0ZXh0cywgYnV0dG9ucywgbXVsdGltZWRpYSB9ID0gcHJvcHM7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgdGV4dHM/LnByZXRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHRleHRzPy5wcmV0aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHRleHRzPy5wcmV0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiB0ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gdGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogdGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgc3VidGl0bGU6IHRleHRzPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiB0ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBuZERlc2NyaXB0aW9uOiB0ZXh0cz8ubmREZXNjcmlwdGlvbixcbiAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgYnV0dG9ucyksXG4gICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKG11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0pLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiB0ZXh0cz8ucHJldGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiB0ZXh0cz8ucHJldGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICAgICAgdGl0bGU6IHRleHRzPy50aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0gYXMgUHVyb0luZm9CaWdJO1xuICAgIH1cblxuICAgIG1hcFNsaWRlcjFjb2wocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9TbGlkZXIxY29sSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IHsgbXVsdGltZWRpYSwgYnV0dG9ucywgdGV4dHMsIHBvc3RzIH0gPSBwcm9wcztcbiAgICAgICAgbGV0IGl0ZW1zOiBQdXJvU2xpZGVyMWNvbEl0ZW1bXSA9IFtdO1xuXG4gICAgICAgIGlmIChtdWx0aW1lZGlhKSB7XG4gICAgICAgICAgICBpdGVtcyA9IG11bHRpbWVkaWE/LmltYWdlbmVzPy5tYXAoXG4gICAgICAgICAgICAgICAgKGltZzogSW1hZ2VSZXNwb25zZSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaW1nKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpbWc/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvU2xpZGVyMWNvbEl0ZW1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSBpZiAocG9zdHMpIHtcbiAgICAgICAgICAgIGl0ZW1zID0gcG9zdHMubWFwKChpdGVtOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBpZGVudGlmaWVyID1cbiAgICAgICAgICAgICAgICAgICAgaXRlbT8uYmxvZ3M/LlswXT8ubmFtZUlkZW50aWZpZXI/LnRvTG93ZXJDYXNlKCkgfHwgJyc7XG4gICAgICAgICAgICAgICAgY29uc3Qgbm9ybWFsaXplZCA9IGlkZW50aWZpZXIudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9cXHMrL2csICcnKTtcbiAgICAgICAgICAgICAgICBsZXQgc2l0ZUlkID0gMTtcblxuICAgICAgICAgICAgICAgIGlmIChub3JtYWxpemVkLmluY2x1ZGVzKCdwdXJvaG90ZWxzJykpIHtcbiAgICAgICAgICAgICAgICAgICAgc2l0ZUlkID0gMjtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG5vcm1hbGl6ZWQuaW5jbHVkZXMoJ3B1cm9iZWFjaCcpKSB7XG4gICAgICAgICAgICAgICAgICAgIHNpdGVJZCA9IDM7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY29uc3QgYnV0dG9uID0gVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICAgICAgc2l0ZUlkLFxuICAgICAgICAgICAgICAgICAgICBpdGVtPy5idXR0b25zIHx8IFtdXG4gICAgICAgICAgICAgICAgKT8uWzBdO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGl0ZW0/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpdGVtPy5tdWx0aW1lZGlhPy5bMF0pLFxuICAgICAgICAgICAgICAgICAgICBsaW5rOiBidXR0b24sXG4gICAgICAgICAgICAgICAgfSBhcyBQdXJvU2xpZGVyMWNvbEl0ZW07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgYnV0dG9ucylbMF0sXG4gICAgICAgICAgICBzdWJ0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgdGV4dHM/LnN1YnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHRleHRzPy5zdWJ0aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHRleHRzPy5zdWJ0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiB0ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gdGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogdGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgaXRlbXM6IGl0ZW1zLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHN1YnRpdGxlOiB0ZXh0cz8uc3VidGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHN1YnRpdGxlOiB0ZXh0cz8uc3VidGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICAgICAgdGl0bGU6IHRleHRzPy50aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0gYXMgUHVyb1NsaWRlcjFjb2xJO1xuICAgIH1cblxuICAgIG1hcEFkdmFudGFnZXMocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9BZHZhbnRhZ2VzSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IHsgQWR2YW50YWdlcyB9ID0gcHJvcHM7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpdGVtczogQWR2YW50YWdlcz8ubWFwKFxuICAgICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpY29uOiBpdGVtPy5pY29uLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvQWR2YW50YWdlc0l0ZW1cbiAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgUHVyb0FkdmFudGFnZXNJO1xuICAgIH1cblxuICAgIG1hcFppZ3phZzJjb2wocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9aaWdaYWcyY29sSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmIChwcm9wcykge1xuICAgICAgICAgICAgY29uc3QgeyB0ZXh0cywgYnV0dG9ucywgbXVsdGltZWRpYSB9ID0gcHJvcHM7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8uYWRkaXRpb25hbDIsXG4gICAgICAgICAgICAgICAgbmRUaXRsZTogdGV4dHM/LmFkZGl0aW9uYWwzLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiB0ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHRleHRzPy5hZGRpdGlvbmFsMSxcbiAgICAgICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgYnV0dG9ucylbMF0sXG4gICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShtdWx0aW1lZGlhPy5bMF0pLFxuICAgICAgICAgICAgICAgIG5kSW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShtdWx0aW1lZGlhPy5bMV0pLFxuICAgICAgICAgICAgfSBhcyBQdXJvWmlnWmFnMmNvbEk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIG1hcEdyaWQ0aXRlbXMocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9HcmlkNGl0ZW1zSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IHsgdGV4dHMsIGJ1dHRvbnMsIG11bHRpbWVkaWEgfSA9IHByb3BzO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyB0ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiB0ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRleHRDb2xvcnM6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGl0ZW1zOiAoQXJyYXkuaXNBcnJheShtdWx0aW1lZGlhKVxuICAgICAgICAgICAgICAgID8gbXVsdGltZWRpYVxuICAgICAgICAgICAgICAgIDogbXVsdGltZWRpYT8uaW1hZ2VuZXNcbiAgICAgICAgICAgICk/Lm1hcChcbiAgICAgICAgICAgICAgICAoaW1nOiBJbWFnZVJlc3BvbnNlKSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGltZz8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBsaW5rOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGltZz8ubGlua3MpWzBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3VidGl0bGU6IGltZz8uc3VidGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGltZyksXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9HcmlkNGl0ZW1zSXRlbVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBidXR0b25zKVswXSxcbiAgICAgICAgfSBhcyBQdXJvR3JpZDRpdGVtc0k7XG4gICAgfVxuXG4gICAgbWFwSW5mb1ZpZGVvKFxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkLFxuICAgICAgICBuYW1lOiAnaW5mb3ZpZGVvcmlnaHQnIHwgJ2luZm92aWRlb2xlZnQnXG4gICAgKTogUHVyb0luZm9WaWRlb0kgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIHByb3BzPy5idXR0b25zKVswXSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICBzdWJ0aXRsZTogcHJvcHM/LnRleHRzPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgIHJldmVyc2U6IG5hbWUuaW5jbHVkZXMoJ3JpZ2h0JyksXG4gICAgICAgICAgICB2aWRlbzoge1xuICAgICAgICAgICAgICAgIHNvdXJjZTogcHJvcHMudmlkZW8/LnNyYyxcbiAgICAgICAgICAgICAgICB0eXBlOiBwcm9wcy52aWRlbz8udHlwZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICB9LFxuICAgICAgICB9IGFzIFB1cm9JbmZvVmlkZW9JO1xuICAgIH1cblxuICAgIG1hcEJyZWFkY3J1bWJzKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvQnJlYWRjcnVtYkkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbGlua3M6IChwcm9wcz8uaXRlbXMgYXMgYW55W10pXG4gICAgICAgICAgICAgICAgPy5zb3J0KChhLCBiKSA9PiBhIC0gYilcbiAgICAgICAgICAgICAgICA/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgKGl0ZW0pID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBpdGVtPy5sYWJlbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rVHlwZTogJ2ludGVybmFsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGl0ZW0/LnVybFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGl0ZW0/LnVybD8uY2hhckF0KGl0ZW0/LnVybD8ubGVuZ3RoIC0gMSkgPT09XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy8nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGl0ZW0/LnVybD8uc2xpY2UoMCwgLTEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGl0ZW0/LnVybFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9CdXR0b25JXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBQdXJvQnJlYWRjcnVtYkk7XG4gICAgfVxuXG4gICAgbWFwRm9vdGVySW5mbyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0Zvb3RlckluZm9JIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgYWRkcmVzcyA9IHByb3BzPy5hZGRyZXNzPy5bMF0gPz8gcHJvcHM/LmFkZHJlc3M7XG4gICAgICAgIGNvbnN0IHsgdGV4dHMsIGJ1dHRvbnMsIGxpbmtzLCBzb2NpYWxNZWRpYSwgbXVsdGltZWRpYSB9ID0gcHJvcHM7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGFkZHJlc3NJbmZvOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHRleHRzPy50aXRsZUFkZHJlc3MsXG4gICAgICAgICAgICAgICAgdGV4dDogYCR7YWRkcmVzcz8uYWRkcmVzcyA/PyAnJ30sICR7YWRkcmVzcz8uY2l0eSA/PyAnJ30sICR7YWRkcmVzcz8uY3AgPz8gJyd9ICR7YWRkcmVzcz8ucHJvdmluY2UgPz8gJyd9YCxcbiAgICAgICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2l0ZUlkKCksXG4gICAgICAgICAgICAgICAgICAgIGJ1dHRvbnM/LmZpbHRlcigoYnRuOiBhbnkpID0+ICEhYnRuPy5saW5rVmFsdWUpXG4gICAgICAgICAgICAgICAgKVsxXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgdGhpcy5zaXRlSWQoKSxcbiAgICAgICAgICAgICAgICBidXR0b25zPy5maWx0ZXIoKGJ0bjogYW55KSA9PiAhIWJ0bj8ubGlua1ZhbHVlKVxuICAgICAgICAgICAgKVswXSxcbiAgICAgICAgICAgIGNvbnRhY3RJbmZvOiB7XG4gICAgICAgICAgICAgICAgbGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2l0ZUlkKCksXG4gICAgICAgICAgICAgICAgICAgIGxpbmtzPy5jb250YWN0TGlua3M/LlswXVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNpdGVJZCgpLFxuICAgICAgICAgICAgICAgICAgICBidXR0b25zPy5maWx0ZXIoKGJ0bjogYW55KSA9PiAhIWJ0bj8ubGlua1ZhbHVlKVxuICAgICAgICAgICAgICAgIClbMF0sXG4gICAgICAgICAgICAgICAgdGl0bGU6IHRleHRzPy50aXRsZUNvbnRhY3QsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbG9nb0ltYWdlOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShtdWx0aW1lZGlhPy5sb2dvPy5bMF0pLFxuICAgICAgICAgICAgbG9nbzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUobXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXSksXG4gICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKG11bHRpbWVkaWE/LmltYWdlPy5bMF0pLFxuICAgICAgICAgICAgbmV3c2xldHRlckluZm86IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlTmV3c2xldHRlcixcbiAgICAgICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgYnV0dG9ucylbMV0sXG4gICAgICAgICAgICAgICAgY29uZGl0aW9uc0xpbms6IHRleHRzPy5uZXdzbGV0dGVyQ29uZGl0aW9ucyxcbiAgICAgICAgICAgICAgICBpbnB1dFBsYWNlaG9sZGVyOiB0ZXh0cz8ubmV3c2xldHRlclBsYWNlaG9sZGVyLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNvY2lhbE1lZGlhOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHRleHRzPy50aXRsZVNvY2lhbE1lZGlhLFxuICAgICAgICAgICAgICAgIGl0ZW1zOiBzb2NpYWxNZWRpYT8ubWFwKChpdGVtOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICBpY29uOiBVdGlscy5tYXBTb2NpYWxjb25zKGl0ZW0/Lm5hbWU/LnRvTG93ZXJDYXNlKCkpLFxuICAgICAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIH0gYXMgUHVyb0Zvb3RlckluZm9Tb2NpYWxNZWRpYUluZm8sXG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgdGV4dHM/LnByZXRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHRleHRzPy5wcmV0aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHRleHRzPy5wcmV0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRleHRDb2xvcnM6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0gYXMgUHVyb0Zvb3RlckluZm9JO1xuICAgIH1cblxuICAgIG1hcFNsaWRlcjNjb2wocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9TbGlkZXIzY29sSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IHsgZXZlbnQsIGV4cGVyaWVuY2UsIG11bHRpbWVkaWEsIHRleHRzLCBidXR0b25zIH0gPSBwcm9wcztcbiAgICAgICAgbGV0IGl0ZW1zOiBQdXJvU2xpZGVyM0NvbEl0ZW1bXSA9IFtdO1xuXG4gICAgICAgIGlmIChldmVudCkge1xuICAgICAgICAgICAgaXRlbXMgPSBldmVudD8ubWFwKChpdGVtOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgICAgICBsb2NhdGlvbjogaXRlbT8udGV4dHM/LmxvY2F0aW9uLFxuICAgICAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBpdGVtPy5idXR0b25zKVswXSxcbiAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGl0ZW0/Lm11bHRpbWVkaWE/LlswXSksXG4gICAgICAgICAgICAgICAgbGluazogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBpdGVtPy5saW5rcylbMF0sXG4gICAgICAgICAgICAgICAgZGF0ZTogaXRlbS5kYXRldGltZSxcbiAgICAgICAgICAgICAgICBpY29uOiBpdGVtPy50ZXh0cz8uZGVzY3JpcHRpb24zLFxuICAgICAgICAgICAgfSkpO1xuICAgICAgICB9IGVsc2UgaWYgKGV4cGVyaWVuY2UpIHtcbiAgICAgICAgICAgIGl0ZW1zID0gZXhwZXJpZW5jZT8ubWFwKChpdGVtOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgICAgICBsb2NhdGlvbjogaXRlbT8udGV4dHM/LmxvY2F0aW9uLFxuICAgICAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBpdGVtPy5idXR0b25zKVswXSxcbiAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGl0ZW0/Lm11bHRpbWVkaWE/LlswXSksXG4gICAgICAgICAgICAgICAgbGluazogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBpdGVtPy5saW5rcylbMF0sXG4gICAgICAgICAgICAgICAgZGF0ZTogaXRlbS5kYXRldGltZSxcbiAgICAgICAgICAgICAgICBpY29uOiBpdGVtPy50ZXh0cz8uZGVzY3JpcHRpb24zLFxuICAgICAgICAgICAgfSkpO1xuICAgICAgICB9IGVsc2UgaWYgKG11bHRpbWVkaWEpIHtcbiAgICAgICAgICAgIGl0ZW1zID0gbXVsdGltZWRpYT8uaW1hZ2VuZXM/Lm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtPy50aXRsZSxcbiAgICAgICAgICAgICAgICBsb2NhdGlvbjogaXRlbT8ucHJldGl0bGUsXG4gICAgICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGl0ZW0/LmJ1dHRvbnMpWzBdLFxuICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaXRlbSksXG4gICAgICAgICAgICAgICAgLy8gbGluazogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBpdGVtPy5saW5rcylbMF0sXG4gICAgICAgICAgICAgICAgLy8gZGF0ZTogaXRlbS5kYXRldGltZSxcbiAgICAgICAgICAgICAgICAvLyBpY29uOiBpdGVtPy50ZXh0cz8uZGVzY3JpcHRpb24zLFxuICAgICAgICAgICAgfSkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgaXRlbXM6IGl0ZW1zLFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGJ1dHRvbnMpWzBdLFxuICAgICAgICB9IGFzIFB1cm9TbGlkZXIzY29sSTtcbiAgICB9XG5cbiAgICBtYXBTbGlkZXIyY29sKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvU2xpZGVyMmNvbEkgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCB7IHJvb21zLCBtdWx0aW1lZGlhLCB0ZXh0cywgYnV0dG9ucyB9ID0gcHJvcHM7XG4gICAgICAgIGxldCBpdGVtczogUHVyb1NsaWRlcjJjb2xJdGVtW10gPSBbXTtcblxuICAgICAgICBpZiAocm9vbXMpIHtcbiAgICAgICAgICAgIGl0ZW1zID0gcm9vbXM/Lm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0/Lm11bHRpbWVkaWE/LmZpbHRlcigoaW1nOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBpbWc/LnRhZ3M/LnNvbWUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRhZzogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWcgPT09ICdTbGlkZXIyQ29sJyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWc/Lm5hbWUgPT09ICdTbGlkZXIyQ29sJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApPy5bMF1cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRleHRzPy5uYW1lLFxuICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBpdGVtLnRleHRzPy5kZXNjcml0aW9uLFxuICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFtcbiAgICAgICAgICAgICAgICAgICAgVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBpdGVtPy5idXR0b25zKVswXSxcbiAgICAgICAgICAgICAgICAgICAgVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBpdGVtPy5saW5rcylbMF0sXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIH0pKTtcbiAgICAgICAgfSBlbHNlIGlmIChtdWx0aW1lZGlhKSB7XG4gICAgICAgICAgICBpdGVtcyA9IG11bHRpbWVkaWE/LmltYWdlbmVzPy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGl0ZW0pLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlLFxuICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBpdGVtLnN1YnRpdGxlLFxuICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFtcbiAgICAgICAgICAgICAgICAgICAgVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBpdGVtPy5idXR0b25zKVswXSxcbiAgICAgICAgICAgICAgICAgICAgVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBpdGVtPy5saW5rcylbMF0sXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIH0pKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgaXRlbXM6IGl0ZW1zLFxuICAgICAgICB9IGFzIFB1cm9TbGlkZXIyY29sSTtcbiAgICB9XG5cbiAgICBtYXBHcmlkNWl0ZW1zKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvR3JpZDVpdGVtc0kgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCBjb21iaW5lZEltYWdlczogSW1hZ2VSZXNwb25zZVtdID0gW107XG4gICAgICAgIGxldCBpID0gMDtcbiAgICAgICAgbGV0IGogPSAwO1xuXG4gICAgICAgIHdoaWxlIChcbiAgICAgICAgICAgIGkgPCBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/Lmxlbmd0aCB8fFxuICAgICAgICAgICAgaiA8IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZXNzbWFsbD8ubGVuZ3RoXG4gICAgICAgICkge1xuICAgICAgICAgICAgaWYgKHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uW2ldKSB7XG4gICAgICAgICAgICAgICAgY29tYmluZWRJbWFnZXMucHVzaChwcm9wcy5tdWx0aW1lZGlhLmltYWdlbmVzW2ldKTtcbiAgICAgICAgICAgICAgICBpKys7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlc3NtYWxsPy5bal0pIHtcbiAgICAgICAgICAgICAgICBpZiAoaiA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICBjb21iaW5lZEltYWdlcy5wdXNoKHByb3BzLm11bHRpbWVkaWEuaW1hZ2Vzc21hbGxbal0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBqKys7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29tYmluZWRJbWFnZXMucHVzaChwcm9wcy5tdWx0aW1lZGlhLmltYWdlc3NtYWxsWzFdKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGUgPz8gcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIGl0ZW1zOiBjb21iaW5lZEltYWdlcz8ubWFwKFxuICAgICAgICAgICAgICAgIChpbWc6IEltYWdlUmVzcG9uc2UpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGltZyksXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaW1nPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBpbWc/LnN1YnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGluazogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBpbWc/LmxpbmtzKVswXSxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb0dyaWQ1aXRlbXNJdGVtXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIHByb3BzPy5idXR0b25zKVswXSxcbiAgICAgICAgfSBhcyBQdXJvR3JpZDVpdGVtc0k7XG4gICAgfVxuXG4gICAgbWFwR3JpZDZpdGVtcyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0dyaWQ2aXRlbXNJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgaXRlbXM6IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcy5tYXAoKGltZzogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaW1nKSxcbiAgICAgICAgICAgICAgICB0aXRsZTogaW1nLnRpdGxlLFxuICAgICAgICAgICAgfSkpIGFzIFB1cm9HcmlkNml0ZW1zSXRlbVtdLFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIHByb3BzPy5idXR0b25zKVswXSxcbiAgICAgICAgfSBhcyBQdXJvR3JpZDZpdGVtc0k7XG4gICAgfVxuXG4gICAgbWFwQWR2YW50YWdlc1NtYWxsKFxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkXG4gICAgKTogUHVyb0FkdmFudGFnZXNTbWFsbEkgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaXRlbXM6IChwcm9wcy5zZXJ2aWNlc0FkdmFudGFnZXMgfHwgcHJvcHM/LkFkdmFudGFnZXMpPy5tYXAoXG4gICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtPy5uYW1lIHx8IGl0ZW0/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogJ2ljb24tJyArIChpdGVtPy5jbGFzcyB8fCBpdGVtPy5pY29uKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpdGVtPy50ZXh0IHx8IGl0ZW0/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvQWR2YW50YWdlc1NtYWxsSXRlbVxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBQdXJvQWR2YW50YWdlc1NtYWxsSTtcbiAgICB9XG5cbiAgICBtYXBHcmlkM2NvbEZpbHRlcihwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0dyaWQzQ29sRmlsdGVySSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmICghcHJvcHMpIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgICAgICAgY29uc3QgcmF3RGVzdGluYXRpb25zOiBhbnlbXSA9IChwcm9wcy5kZXN0aW5hdGlvbnMgPz8gW10pXG4gICAgICAgICAgICAuZmxhdCgpXG4gICAgICAgICAgICAuZmlsdGVyKEJvb2xlYW4pO1xuICAgICAgICBjb25zdCBkZXN0aW5hdGlvbnM6IGFueVtdID0gQXJyYXkuZnJvbShcbiAgICAgICAgICAgIG5ldyBNYXAocmF3RGVzdGluYXRpb25zLm1hcCgoZDogYW55KSA9PiBbTnVtYmVyKGQuaWQpLCBkXSkpLnZhbHVlcygpXG4gICAgICAgICk7XG5cbiAgICAgICAgY29uc3QgcmF3SXRlbXMgPSBkZXN0aW5hdGlvbnMuZmxhdE1hcCgoZGVzdDogYW55KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjaGlsZHJlbiA9IGRlc3Q/LmNoaWxkcmVuID8/IFtdO1xuXG4gICAgICAgICAgICByZXR1cm4gY2hpbGRyZW4ubWFwKChjaGlsZDogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgdHIgPSBjaGlsZD8udHJhbnNsYXRpb25zPy5bMF0gPz8ge307XG4gICAgICAgICAgICAgICAgY29uc3QgdGl0bGUgPSB0cj8ubmFtZSA/PyBjaGlsZD8ubmFtZSA/PyBjaGlsZD8ubmFtZV9pZGVudGlmaWVyO1xuICAgICAgICAgICAgICAgIGNvbnN0IHByZXRpdGxlID0gZGVzdD8ubmFtZTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGJ1dHRvbiA9IChVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNpdGVJZCgpLFxuICAgICAgICAgICAgICAgICAgICBjaGlsZD8uaG90ZWxzPy5bMF0/LmxpbmtzPy5bMF1cbiAgICAgICAgICAgICAgICApID8/IFtdKVswXTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGltZ0NvdmVyID0gY2hpbGQ/LmhvdGVscz8uWzBdPy5tdWx0aW1lZGlhPy5maW5kKFxuICAgICAgICAgICAgICAgICAgICAoaW1nOiBhbnkpID0+IGltZy5jb3ZlclxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgY29uc3QgaW1nID0gdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaW1nQ292ZXIpO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgdGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIHByZXRpdGxlLFxuICAgICAgICAgICAgICAgICAgICBmaWx0ZXI6IE51bWJlcihjaGlsZD8uaWQpLFxuICAgICAgICAgICAgICAgICAgICBmaWx0ZXJQYXJlbnQ6IE51bWJlcihkZXN0Py5pZCA/PyBjaGlsZD8ucGFyZW50X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgYnV0dG9uLFxuICAgICAgICAgICAgICAgICAgICBpbWcsXG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRJbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmJhY2tncm91bmRJbWFnZVxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIH0gYXMgUHVyb0dyaWQzQ29sRmlsdGVySXRlbTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCBpdGVtczogUHVyb0dyaWQzQ29sRmlsdGVySXRlbVtdID0gQXJyYXkuZnJvbShcbiAgICAgICAgICAgIG5ldyBNYXAocmF3SXRlbXMubWFwKChpKSA9PiBbaS5maWx0ZXIsIGldKSkudmFsdWVzKClcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCB2YWxpZFBhcmVudElkcyA9IG5ldyBTZXQoaXRlbXMubWFwKChpKSA9PiBpLmZpbHRlclBhcmVudCkpO1xuICAgICAgICBjb25zdCBvcHRpb25zOiBEcm9wZG93bk9wdGlvbltdID0gZGVzdGluYXRpb25zXG4gICAgICAgICAgICAuZmlsdGVyKChkZXN0OiBhbnkpID0+IHZhbGlkUGFyZW50SWRzLmhhcyhOdW1iZXIoZGVzdD8uaWQpKSlcbiAgICAgICAgICAgIC5tYXAoKGRlc3Q6IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICBjb2RlOiBOdW1iZXIoZGVzdD8uaWQpLFxuICAgICAgICAgICAgICAgIG5hbWU6IGRlc3Q/Lm5hbWUgfHwgZGVzdD8ubmFtZV9pZGVudGlmaWVyLFxuICAgICAgICAgICAgfSkpO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnN1YnRpdGxlID8/IHByb3BzPy50ZXh0cz8ucHJldGl0bGUsXG4gICAgICAgICAgICBpdGVtcyxcbiAgICAgICAgICAgIGZpbHRlcjoge1xuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LnBsYWNlaG9sZGVyLFxuICAgICAgICAgICAgICAgIG9wdGlvbnMsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBwcm9wcz8uYnV0dG9ucykgPz8gW10sXG4gICAgICAgICAgICBiYWNrZ3JvdW5kSW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXVxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBQdXJvR3JpZDNDb2xGaWx0ZXJJO1xuICAgIH1cblxuICAgIG1hcEdyaWQzY29sUGx1c0ZpbHRlcihcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZFxuICAgICk6IFB1cm9HcmlkM0NvbFBsdXNGaWx0ZXJJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKCFwcm9wcykgcmV0dXJuIHVuZGVmaW5lZDtcblxuICAgICAgICBjb25zdCB7IHRleHRzLCBldmVudCwgZXhwZXJpZW5jZSwgaG90ZWxzLCBtdWx0aW1lZGlhLCBkZXN0aW5hdGlvbnMgfSA9XG4gICAgICAgICAgICBwcm9wcztcblxuICAgICAgICBsZXQgaXRlbXM6IFB1cm9HcmlkM0NvbFBsdXNGaWx0ZXJJdGVtW10gPSBbXTtcbiAgICAgICAgbGV0IG9wdGlvbnM6IERyb3Bkb3duT3B0aW9uW10gPSBbXTtcbiAgICAgICAgY29uc3QgZXhwID0gISEoZXhwZXJpZW5jZSB8fCBob3RlbHMpO1xuXG4gICAgICAgIGlmIChldmVudCB8fCBleHBlcmllbmNlKSB7XG4gICAgICAgICAgICBjb25zdCByYXdEZXN0aW5hdGlvbnM6IGFueVtdID0gKGV2ZW50ID8/IGV4cGVyaWVuY2UgPz8gW10pXG4gICAgICAgICAgICAgICAgLmZsYXQoKVxuICAgICAgICAgICAgICAgIC5maWx0ZXIoQm9vbGVhbik7XG5cbiAgICAgICAgICAgIGNvbnN0IGRlc3RpbmF0aW9uczogYW55W10gPSBBcnJheS5mcm9tKFxuICAgICAgICAgICAgICAgIG5ldyBNYXAoXG4gICAgICAgICAgICAgICAgICAgIHJhd0Rlc3RpbmF0aW9ucy5tYXAoKGQ6IGFueSkgPT4gW051bWJlcihkLmlkKSwgZF0pXG4gICAgICAgICAgICAgICAgKS52YWx1ZXMoKVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgY29uc3QgcmF3SXRlbXMgPSBkZXN0aW5hdGlvbnMubWFwKChkZXN0OiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB0ciA9IGRlc3Q/LnRleHRzID8/IGRlc3Q/LnRyYW5zbGF0aW9ucyA/PyB7fTtcbiAgICAgICAgICAgICAgICBjb25zdCB0aXRsZSA9XG4gICAgICAgICAgICAgICAgICAgIHRyPy50aXRsZSA/P1xuICAgICAgICAgICAgICAgICAgICBkZXN0Py5uYW1lID8/XG4gICAgICAgICAgICAgICAgICAgIGRlc3Q/Lm5hbWVfaWRlbnRpZmllciA/P1xuICAgICAgICAgICAgICAgICAgICBkZXN0Py50cmFuc2xhdGlvbnM/LnRpdGxlO1xuICAgICAgICAgICAgICAgIGNvbnN0IG5kVGl0bGUgPSB0cj8ubG9jYXRpb24gPz8gZGVzdD8udHJhbnNsYXRpb25zPy5sb2NhdGlvbjtcbiAgICAgICAgICAgICAgICBjb25zdCBkYXRlID0gZGVzdD8uZGF0ZXRpbWU/LnNwbGl0KCcgJyk/LlswXTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGJ1dHRvbnMgPSBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGRlc3Q/LmJ1dHRvbnMpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGxpbmtzID0gVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBkZXN0Py5saW5rcyk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBmaXJzdEltZyA9XG4gICAgICAgICAgICAgICAgICAgIGRlc3Q/Lm11bHRpbWVkaWE/LmZpbmQoKG06IGFueSkgPT4gbT8uY292ZXIpID8/IHt9O1xuICAgICAgICAgICAgICAgIGNvbnN0IGltZyA9IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGZpcnN0SW1nKTtcblxuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlLFxuICAgICAgICAgICAgICAgICAgICBuZFRpdGxlLFxuICAgICAgICAgICAgICAgICAgICBkYXRlLFxuICAgICAgICAgICAgICAgICAgICBmaWx0ZXI6IE51bWJlcihkZXN0Py5pZCksXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlclBhcmVudDogdHI/LmxvY2F0aW9uLCAvLyB1c2Ftb3MgbG9jYXRpb24gY29tbyBhZ3J1cGFkb3IvZmlsdHJvXG4gICAgICAgICAgICAgICAgICAgIGltZyxcbiAgICAgICAgICAgICAgICAgICAgYnV0dG9ucyxcbiAgICAgICAgICAgICAgICAgICAgbGlua3MsXG4gICAgICAgICAgICAgICAgfSBhcyBQdXJvR3JpZDNDb2xQbHVzRmlsdGVySXRlbTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBpdGVtcyA9IEFycmF5LmZyb20oXG4gICAgICAgICAgICAgICAgbmV3IE1hcChyYXdJdGVtcy5tYXAoKGkpID0+IFtpLmZpbHRlciwgaV0pKS52YWx1ZXMoKVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgY29uc3QgdmFsaWRQYXJlbnRJZHMgPSBuZXcgU2V0KGl0ZW1zLm1hcCgoaSkgPT4gaS5maWx0ZXJQYXJlbnQpKTtcbiAgICAgICAgICAgIG9wdGlvbnMgPSBBcnJheS5mcm9tKHZhbGlkUGFyZW50SWRzKS5tYXAoKGxvYzogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgIGNvZGU6IGxvYyxcbiAgICAgICAgICAgICAgICBuYW1lOiBsb2MsXG4gICAgICAgICAgICB9KSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaG90ZWxzKSB7XG4gICAgICAgICAgICBpdGVtcyA9IGhvdGVscy5tYXAoKGhvdGVsOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB0ciA9IGhvdGVsPy50ZXh0cyA/PyBob3RlbD8udHJhbnNsYXRpb25zID8/IHt9O1xuICAgICAgICAgICAgICAgIGNvbnN0IHRpdGxlID0gdHI/Lm5hbWUgPz8gaG90ZWw/Lm5hbWVfaWRlbnRpZmllcjtcbiAgICAgICAgICAgICAgICBjb25zdCBsb2NhdGlvbiA9IGhvdGVsPy5jaXR5O1xuXG4gICAgICAgICAgICAgICAgLy8gY29uc3QgYnV0dG9ucyA9IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgLy8gICAgIGhvdGVsPy5idXR0b25zPy5bMF0/LnNpdGVJZCA/PyB0aGlzLnNpdGVJZCgpLFxuICAgICAgICAgICAgICAgIC8vICAgICBob3RlbD8uYnV0dG9ucz8uZmlsdGVyKChidG46IGFueSkgPT4gISFidG4/LmxpbmtWYWx1ZSlcbiAgICAgICAgICAgICAgICAvLyApO1xuICAgICAgICAgICAgICAgIGNvbnN0IGxpbmtzID0gVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICAgICAgaG90ZWw/LmxpbmtzPy5bMF0/LnNpdGVJZCA/PyB0aGlzLnNpdGVJZCgpLFxuICAgICAgICAgICAgICAgICAgICBob3RlbD8ubGlua3NcbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgZmlyc3RJbWcgPVxuICAgICAgICAgICAgICAgICAgICBob3RlbD8ubXVsdGltZWRpYT8uZmluZCgobTogYW55KSA9PiBtPy5jb3ZlcikgPz8ge307XG4gICAgICAgICAgICAgICAgY29uc3QgaW1nID0gdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoZmlyc3RJbWcpO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgdGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIG5kVGl0bGU6IGxvY2F0aW9uLFxuICAgICAgICAgICAgICAgICAgICBkYXRlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcjogTnVtYmVyKGhvdGVsPy5pZCksXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlclBhcmVudDogaG90ZWwuY2l0eSxcbiAgICAgICAgICAgICAgICAgICAgaW1nLFxuICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBbXSxcbiAgICAgICAgICAgICAgICAgICAgbGlua3MsXG4gICAgICAgICAgICAgICAgfSBhcyBQdXJvR3JpZDNDb2xQbHVzRmlsdGVySXRlbTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBjb25zdCB2YWxpZENpdGllcyA9IG5ldyBTZXQoaXRlbXMubWFwKChpKSA9PiBpLmZpbHRlclBhcmVudCkpO1xuICAgICAgICAgICAgb3B0aW9ucyA9IEFycmF5LmZyb20odmFsaWRDaXRpZXMpLm1hcCgoY2l0eTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgIGNvZGU6IGNpdHksXG4gICAgICAgICAgICAgICAgbmFtZTogY2l0eSxcbiAgICAgICAgICAgIH0pKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChtdWx0aW1lZGlhKSB7XG4gICAgICAgICAgICBpdGVtcyA9IG11bHRpbWVkaWE/LmltYWdlbmVzPy5tYXAoKGltZzogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGltZz8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIG5kVGl0bGU6IGltZz8ubmRUaXRsZSxcbiAgICAgICAgICAgICAgICAgICAgZGF0ZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICBmaWx0ZXI6IE51bWJlcihpbWc/LmlkKSxcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyUGFyZW50OiBpbWcuYWx0LFxuICAgICAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGltZyksXG4gICAgICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNpdGVJZCgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW1nPy5idXR0b25zPy5maWx0ZXIoKGJ0bjogYW55KSA9PiAhIWJ0bj8ubGlua1ZhbHVlKVxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICBsaW5rczogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2l0ZUlkKCksXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWc/LmxpbmtzPy5maWx0ZXIoKGJ0bjogYW55KSA9PiAhIWJ0bj8ubGlua1ZhbHVlKVxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgY29uc3QgdmFsaWRBbHRzID0gbmV3IFNldChpdGVtcy5tYXAoKGkpID0+IGkuZmlsdGVyUGFyZW50KSk7XG4gICAgICAgICAgICBvcHRpb25zID0gQXJyYXkuZnJvbSh2YWxpZEFsdHMpLm1hcCgoYWx0OiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgY29kZTogYWx0LFxuICAgICAgICAgICAgICAgIG5hbWU6IGFsdCxcbiAgICAgICAgICAgIH0pKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChkZXN0aW5hdGlvbnMpIHtcbiAgICAgICAgICAgIGl0ZW1zID0gZGVzdGluYXRpb25zPy5tYXAoKGl0ZW06IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtPy50aXRsZSA/PyBpdGVtPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICBuZFRpdGxlOiBpdGVtPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgZGF0ZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICBmaWx0ZXI6IE51bWJlcihpdGVtPy5pZCksXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlclBhcmVudDogaXRlbS5zdWJ0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpdGVtPy5tdWx0aW1lZGlhPy5bMF0pLFxuICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zaXRlSWQoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/LmJ1dHRvbnM/LmZpbHRlcigoYnRuOiBhbnkpID0+ICEhYnRuPy5saW5rVmFsdWUpXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIGxpbmtzOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBjb25zdCB2YWxpZFN1YnRpdGxlcyA9IG5ldyBTZXQoaXRlbXMubWFwKChpKSA9PiBpLmZpbHRlclBhcmVudCkpO1xuICAgICAgICAgICAgb3B0aW9ucyA9IEFycmF5LmZyb20odmFsaWRTdWJ0aXRsZXMpLm1hcCgoc3VidGl0bGU6IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICBjb2RlOiBzdWJ0aXRsZSxcbiAgICAgICAgICAgICAgICBuYW1lOiBzdWJ0aXRsZSxcbiAgICAgICAgICAgIH0pKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgdGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHByZXRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiB0ZXh0cz8ucHJldGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gdGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogdGV4dHM/LnByZXRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgaXRlbXMsXG4gICAgICAgICAgICBmaWx0ZXI6IHtcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogdGV4dHM/LnBsYWNlaG9sZGVyLFxuICAgICAgICAgICAgICAgIG9wdGlvbnMsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBwcm9wcz8uYnV0dG9ucykgPz8gW10sXG4gICAgICAgICAgICAvLyBiYWNrZ3JvdW5kSW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgIC8vICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXVxuICAgICAgICAgICAgLy8gKSxcbiAgICAgICAgICAgIGV4cCxcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogdGV4dHM/LnByZXRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRleHRDb2xvcnM6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogdGV4dHM/LnByZXRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICB9LFxuICAgICAgICB9IGFzIFB1cm9HcmlkM0NvbFBsdXNGaWx0ZXJJO1xuICAgIH1cblxuICAgIG1hcEZvb3RlckhvdGVscyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0Zvb3RlckhvdGVsc0kgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbG9nbzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUocHJvcHM/Lm11bHRpbWVkaWE/LmxvZ28/LlswXSksXG4gICAgICAgICAgICBpdGVtczogcHJvcHM/LmhvdGVscz8ubWFwKFxuICAgICAgICAgICAgICAgIChob3RlbDogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgbGluazogVXRpbHMubWFwQnV0dG9ucygyLCBob3RlbC5saW5rcylbMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaG90ZWw/LnRleHRzPy5uYW1lID8/IGhvdGVsPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3VidGl0bGU6IGhvdGVsPy50ZXh0cz8ubG9jYXRpb25EZXNjcmlwdGlvbiA/PyBudWxsLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvRm9vdGVySG90ZWxzSXRlbVxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBQdXJvRm9vdGVySG90ZWxzSTtcbiAgICB9XG5cbiAgICBtYXBGb290ZXJMaW5rcyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0Zvb3RlckxpbmtzSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmIChwcm9wcykge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBpbWc6IHtcbiAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUocHJvcHMubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXSksXG4gICAgICAgICAgICAgICAgICAgIGFsdDogcHJvcHM/LnRleHRzPy5pY29uLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgbG9nbzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUocHJvcHMubXVsdGltZWRpYT8ubG9nbz8uWzBdKSxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHMudGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgICAgIG1lbWJlclRpdGxlOiBwcm9wcy50ZXh0cz8ubWVtYmVyVGl0bGUsXG4gICAgICAgICAgICAgICAgbWVtYmVyUHJldGl0bGU6IHByb3BzLnRleHRzPy5tZW1iZXJQcmV0aXRsZSxcbiAgICAgICAgICAgICAgICBjb3B5cmlnaHQ6IHByb3BzLnRleHRzPy5jb3B5cmlnaHQsXG4gICAgICAgICAgICAgICAgbGlua3M6IHByb3BzLmxpbmtzXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHMubGlua3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLm1hcCgobGluazogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzaXRlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rLnNpdGVJZCA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmsuc2l0ZV9pZCA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmsuc2l0ZSA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2l0ZUlkKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBVdGlscy5tYXBCdXR0b25zKHNpdGUsIGxpbmspWzBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKEJvb2xlYW4pXG4gICAgICAgICAgICAgICAgICAgIDogW10sXG4gICAgICAgICAgICB9IGFzIFB1cm9Gb290ZXJMaW5rc0k7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIG1hcEZvb3RlckJlYWNocyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0Zvb3RlckJlYWNoc0kgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaXRlbXM6IHByb3BzPy5ob3RlbHM/Lm1hcChcbiAgICAgICAgICAgICAgICAoaG90ZWw6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbms6IFV0aWxzLm1hcEJ1dHRvbnMoMywgaG90ZWwubGlua3MpWzBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGhvdGVsPy50ZXh0cz8ubmFtZSA/PyBob3RlbC5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3VidGl0bGU6IGhvdGVsPy50ZXh0cz8ubG9jYXRpb25EZXNjcmlwdGlvbiA/PyBudWxsLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvRm9vdGVyQmVhY2hzSXRlbVxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBQdXJvRm9vdGVyQmVhY2hzSTtcbiAgICB9XG5cbiAgICBtYXBJbmZvTGlzdChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0luZm9MaXN0SSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IHsgdGV4dHMsIG11bHRpbWVkaWEsIEFkdmFudGFnZXMgfSA9IHByb3BzO1xuICAgICAgICBjb25zdCB7IGJhY2tncm91bmRpbWFnZSwgaW1hZ2VuZXMsIHNtYWxsaW1hZ2UgfSA9IG11bHRpbWVkaWE7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgdGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiB0ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBpdGVtczogQXJyYXkoLi4uKEFkdmFudGFnZXMgfHwgW10pKT8ubWFwKFxuICAgICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+IGl0ZW0udGl0bGUgYXMgc3RyaW5nXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpbWFnZW5lcz8uWzBdKSxcbiAgICAgICAgICAgIHNtYWxsSW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShzbWFsbGltYWdlPy5bMF0pLFxuICAgICAgICAgICAgYmFja2dyb3VuZEltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoYmFja2dyb3VuZGltYWdlPy5bMF0pLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHRleHRzPy50aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0gYXMgUHVyb0luZm9MaXN0STtcbiAgICB9XG5cbiAgICBtYXBTbGlkZXIzQ29sUm91bmQoXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWRcbiAgICApOiBQdXJvU2xpZGVyM0NvbFJvdW5kSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IHsgdGV4dHMsIGJ1dHRvbnMsIG11bHRpbWVkaWEsIHBvc3RzIH0gPSBwcm9wcztcbiAgICAgICAgbGV0IGl0ZW1zOiBQdXJvU2xpZGVyM0NvbFJvdW5kSXRlbVtdID0gW107XG5cbiAgICAgICAgaWYgKG11bHRpbWVkaWEpIHtcbiAgICAgICAgICAgIGl0ZW1zID0gbXVsdGltZWRpYT8uaW1hZ2VuZXM/Lm1hcChcbiAgICAgICAgICAgICAgICAoaW1nOiBJbWFnZVJlc3BvbnNlKSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGltZz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGltZyksXG4gICAgICAgICAgICAgICAgICAgICAgICBsaW5rOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2l0ZUlkKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nPy5saW5rcyB8fCBbXVxuICAgICAgICAgICAgICAgICAgICAgICAgKVswXSxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb1NsaWRlcjNDb2xSb3VuZEl0ZW1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSBpZiAocG9zdHMpIHtcbiAgICAgICAgICAgIGl0ZW1zID0gcG9zdHM/Lm1hcCgoaXRlbTogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgaWRlbnRpZmllciA9XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0/LmJsb2dzPy5bMF0/Lm5hbWVJZGVudGlmaWVyPy50b0xvd2VyQ2FzZSgpIHx8ICcnO1xuICAgICAgICAgICAgICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSBpZGVudGlmaWVyLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvXFxzKy9nLCAnJyk7XG4gICAgICAgICAgICAgICAgbGV0IHNpdGVJZCA9IDE7XG5cbiAgICAgICAgICAgICAgICBpZiAobm9ybWFsaXplZC5pbmNsdWRlcygncHVyb2hvdGVscycpKSB7XG4gICAgICAgICAgICAgICAgICAgIHNpdGVJZCA9IDI7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChub3JtYWxpemVkLmluY2x1ZGVzKCdwdXJvYmVhY2gnKSkge1xuICAgICAgICAgICAgICAgICAgICBzaXRlSWQgPSAzO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IGJ1dHRvbiA9IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgICAgIHNpdGVJZCxcbiAgICAgICAgICAgICAgICAgICAgaXRlbT8uYnV0dG9ucyB8fCBbXVxuICAgICAgICAgICAgICAgICk/LlswXTtcblxuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpdGVtPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaXRlbT8ubXVsdGltZWRpYT8uWzBdKSxcbiAgICAgICAgICAgICAgICAgICAgbGluazogYnV0dG9uLFxuICAgICAgICAgICAgICAgIH0gYXMgUHVyb1NsaWRlcjNDb2xSb3VuZEl0ZW07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIHN1YnRpdGxlOiB0ZXh0cz8uc3VidGl0bGUsXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgYnV0dG9ucylbMF0sXG4gICAgICAgICAgICBpdGVtcyxcbiAgICAgICAgfSBhcyBQdXJvU2xpZGVyM0NvbFJvdW5kSTtcbiAgICB9XG5cbiAgICBtYXBJbmZvSW50cm8ocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9JbmZvSW50cm9JIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKHByb3BzKSB7XG4gICAgICAgICAgICBjb25zdCB7IHRleHRzLCBidXR0b25zIH0gPSBwcm9wcztcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6XG4gICAgICAgICAgICAgICAgICAgIHR5cGVvZiB0ZXh0cz8ucHJldGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHRleHRzPy5wcmV0aXRsZVxuICAgICAgICAgICAgICAgICAgICAgICAgOiB0ZXh0cz8ucHJldGl0bGU/LmNvbnRhaW4sXG5cbiAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgID8gdHlwZW9mIHRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgICAgID8gdGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHRleHRzPy50aXRsZT8uY29udGFpblxuICAgICAgICAgICAgICAgICAgICA6IHRleHRzPy5uYW1lLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiB0ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb25IaWRkZW46XG4gICAgICAgICAgICAgICAgICAgIHRleHRzPy5kZXNjcmlwdGlvbkFkZGl0aW9uYWwgPz8gdGV4dHMuZGVzY3JpcHRpb25BZGljaW9uYWwsXG4gICAgICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNpdGVJZCgpLFxuICAgICAgICAgICAgICAgICAgICBidXR0b25zPy5maWx0ZXIoKGJ0bjogYW55KSA9PiAhIWJ0bj8ubGlua1ZhbHVlKVxuICAgICAgICAgICAgICAgIClbMF0sXG4gICAgICAgICAgICAgICAgc2VlTGVzczogdGV4dHM/LmJ1dHRvbk1lbm9zaW5mbyxcbiAgICAgICAgICAgICAgICBzZWVNb3JlOiB0ZXh0cz8uYnV0dG9uTWFzaW5mbyxcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kSW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF1cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICAgICAgcHJldGl0bGU6IHRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOiB0ZXh0cz8ucHJldGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0gYXMgUHVyb0luZm9JbnRyb0k7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgbWFwSW1nSW5mbyhcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZCxcbiAgICAgICAgbmFtZT86ICdpbWdpbmZvcmlnaHQnIHwgJ2ltZ2luZm9sZWZ0J1xuICAgICk6IFB1cm9JbWdJbmZvSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IHsgdGV4dHMsIG11bHRpbWVkaWEgfSA9IHByb3BzO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIHNlY3Rpb25zOiBwcm9wcz8uTWVudT8uWzBdPy5jaGlsZHJlbnM/Lm1hcCgoc2VjdGlvbjogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgIHRpdGxlOiBzZWN0aW9uLnRpdGxlLFxuICAgICAgICAgICAgICAgIGl0ZW1zOiBzZWN0aW9uPy5tZW51Py5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIHByaWNlOiBpdGVtLnByaWNlLFxuICAgICAgICAgICAgICAgICAgICBpY29uczogaXRlbS5pY29ucz8ubWFwKChpY29uOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpY29uOiAnaWNvbi0nICsgKGljb24/LmNsYXNzIHx8IGljb24/Lmljb24pLFxuICAgICAgICAgICAgICAgICAgICB9KSksXG4gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpdGVtLmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUobXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXSksXG4gICAgICAgICAgICByaWdodFNpZGU6IG5hbWU/LmluY2x1ZGVzKCdyaWdodCcpLFxuICAgICAgICB9IGFzIFB1cm9JbWdJbmZvSTtcbiAgICB9XG5cbiAgICBtYXBUb3BTbGlkZXIoXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWQsXG4gICAgICAgIGFjdGlvbnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gfCB1bmRlZmluZWRcbiAgICApOiBQdXJvVG9wU2xpZGVySSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IHsgdGV4dHMsIG11bHRpbWVkaWEgfSA9IHByb3BzO1xuXG4gICAgICAgIGNvbnN0IGltYWdlcyA9IHRoaXMuZ2V0QXJyYXlJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICBtdWx0aW1lZGlhPy5pbWFnZXMgfHwgbXVsdGltZWRpYT8ubXVsdGltZWRpYSB8fCBtdWx0aW1lZGlhPy5pbWFnZW5lc1xuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IGltYWdlc01vYmlsZSA9IHRoaXMuZ2V0QXJyYXlJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICBtdWx0aW1lZGlhLmltYWdlbmVzbW9iaWxlIHx8IFtdXG4gICAgICAgICk7XG5cbiAgICAgICAgLy8gUHJlY2FyZ2EgZGluw6FtaWNhIGRlIGxhIHByaW1lcmEgaW1hZ2VuIGRlbCBzbGlkZXJcbiAgICAgICAgaWYgKGltYWdlcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICBjb25zdCBoZXJvSW1nID0gbmV3IEltYWdlKCk7XG4gICAgICAgICAgICBoZXJvSW1nLnNyYyA9IGltYWdlc1swXS5zcmM7XG4gICAgICAgICAgICBoZXJvSW1nLmRlY29kaW5nID0gJ2FzeW5jJztcbiAgICAgICAgICAgIGhlcm9JbWcuc2V0QXR0cmlidXRlKCdmZXRjaHByaW9yaXR5JywgJ2hpZ2gnKTtcbiAgICAgICAgICAgIGhlcm9JbWcubG9hZGluZyA9ICdlYWdlcic7XG5cbiAgICAgICAgICAgIGlmIChpbWFnZXM/Lmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwcmVmZXRjaCA9IG5ldyBJbWFnZSgpO1xuICAgICAgICAgICAgICAgIHByZWZldGNoLnNyYyA9IGltYWdlc1sxXS5zcmM7XG4gICAgICAgICAgICAgICAgcHJlZmV0Y2guZGVjb2RpbmcgPSAnYXN5bmMnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGltYWdlc01vYmlsZT8ubGVuZ3RoKSB7XG4gICAgICAgICAgICBjb25zdCBoZXJvSW1nID0gbmV3IEltYWdlKCk7XG4gICAgICAgICAgICBoZXJvSW1nLnNyYyA9IGltYWdlc01vYmlsZVswXS5zcmM7XG4gICAgICAgICAgICBoZXJvSW1nLmRlY29kaW5nID0gJ2FzeW5jJztcbiAgICAgICAgICAgIGhlcm9JbWcuc2V0QXR0cmlidXRlKCdmZXRjaHByaW9yaXR5JywgJ2hpZ2gnKTtcbiAgICAgICAgICAgIGhlcm9JbWcubG9hZGluZyA9ICdlYWdlcic7XG5cbiAgICAgICAgICAgIGlmIChpbWFnZXNNb2JpbGU/Lmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwcmVmZXRjaCA9IG5ldyBJbWFnZSgpO1xuICAgICAgICAgICAgICAgIHByZWZldGNoLnNyYyA9IGltYWdlc01vYmlsZVsxXS5zcmM7XG4gICAgICAgICAgICAgICAgcHJlZmV0Y2guZGVjb2RpbmcgPSAnYXN5bmMnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBzdWJ0aXRsZTogdGV4dHM/LnN1YnRpdGxlLFxuICAgICAgICAgICAgcHJldGl0bGU6IHRleHRzPy5wcmV0aXRsZSxcbiAgICAgICAgICAgIHNwb3RpZnk6IHtcbiAgICAgICAgICAgICAgICBsYWJlbDogYWN0aW9ucz8uWydzcG90aWZ5J10sXG4gICAgICAgICAgICAgICAgbGlua1R5cGU6ICdleHRlcm5hbCcsXG4gICAgICAgICAgICAgICAgdXJsOiBhY3Rpb25zPy5bJ3Nwb3J0aWZ5TGluayddLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGZpZGVsaXR5OiB7XG4gICAgICAgICAgICAgICAgbGFiZWw6IGFjdGlvbnM/LlsnZmlkZWxpdHknXSxcbiAgICAgICAgICAgICAgICBsaW5rVHlwZTogJ2V4dGVybmFsJyxcbiAgICAgICAgICAgICAgICB1cmw6IGFjdGlvbnM/LlsnZmlkZWxpdHlMaW5rJ10sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbmV3c2xldHRlcjoge1xuICAgICAgICAgICAgICAgIGxhYmVsOiBhY3Rpb25zPy5bJ25ld3NsZXR0ZXInXSxcbiAgICAgICAgICAgICAgICBsaW5rVHlwZTogJ2V4dGVybmFsJyxcbiAgICAgICAgICAgICAgICB1cmw6IGFjdGlvbnM/LlsnbmV3c2xldHRlckxpbmsnXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsYW5ndWFnZXM6IGFjdGlvbnM/LlsnbGFuZ3VhZ2UnXSxcbiAgICAgICAgICAgIHNlbGVjdGVkTGFuZ3VhZ2U6XG4gICAgICAgICAgICAgICAgdGhpcy5zaXRlU3ZjLnNlbGVjdGVkTGFuZ3VhZ2VJbnN0YW50Py5sb2NhdGU/LnRvTG9jYWxlVXBwZXJDYXNlKCksXG4gICAgICAgICAgICB2aWRlbzogdW5kZWZpbmVkLFxuICAgICAgICAgICAgbWFpblRpdGxlOiB0ZXh0cz8ubWFpblRpdGxlLFxuICAgICAgICAgICAgaW1hZ2VzLFxuICAgICAgICAgICAgaW1hZ2VzTW9iaWxlLFxuICAgICAgICB9IGFzIFB1cm9Ub3BTbGlkZXJJO1xuICAgIH1cblxuICAgIG1hcEluZm9CYW5uZXIocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9JbmZvQmFubmVySSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmIChwcm9wcykge1xuICAgICAgICAgICAgY29uc3QgeyB0ZXh0cywgbXVsdGltZWRpYSB9ID0gcHJvcHM7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICAgICAgaXRlbXM6IG11bHRpbWVkaWE/LmltYWdlbmVzPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChpbWc6IEltYWdlUmVzcG9uc2UpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zaXRlSWQoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nLmJ1dHRvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApWzBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpbWc/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpbWc/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaW1nKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9JbmZvQmFubmVySXRlbVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICB9IGFzIFB1cm9JbmZvQmFubmVySTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIG1hcFNjaGVkdWxlKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvU2NoZWR1bGVJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKHByb3BzKSB7XG4gICAgICAgICAgICBjb25zdCB7IHRleHRzLCBBZHZhbnRhZ2VzIH0gPSBwcm9wcztcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHRleHRzPy50aXRsZSxcbiAgICAgICAgICAgICAgICBpdGVtczogQXJyYXkoLi4uKEFkdmFudGFnZXMgfHwgW10pKT8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogYGljb24tJHtpdGVtPy5pY29ufWAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGl0ZW0/LnRleHQsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvU2NoZWR1bGVJdGVtXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIH0gYXMgUHVyb1NjaGVkdWxlSTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIG1hcEluZm9TZXJ2aWNlcyhcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZCxcbiAgICAgICAgdmlldzogUHVyb1ZpZXdzVHlwZSB8IHVuZGVmaW5lZFxuICAgICk6IFB1cm9JbmZvU2VydmljZXNJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgeyB0ZXh0cywgc2VydmljZXNTZXJ2aWNlLCBBZHZhbnRhZ2VzLCBtdWx0aW1lZGlhLCBidXR0b25zIH0gPVxuICAgICAgICAgICAgcHJvcHM7XG4gICAgICAgIGxldCBpdGVtcyA9IFtdO1xuICAgICAgICBpZiAoQWR2YW50YWdlcykge1xuICAgICAgICAgICAgaXRlbXMgPSBBZHZhbnRhZ2VzPy5tYXAoXG4gICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtPy5uYW1lID8/IGl0ZW0/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3VidGl0bGU6IGl0ZW0/LmRlc2NyaXB0aW9uID8/IGl0ZW0/LnRleHQsXG4gICAgICAgICAgICAgICAgICAgICAgICBpY29uOiBgaWNvbi0ke2l0ZW0/LmNsYXNzID8/IGl0ZW0/Lmljb259YCxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb0luZm9TZXJ2aWNlc0l0ZW1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSBpZiAoc2VydmljZXNTZXJ2aWNlKSB7XG4gICAgICAgICAgICBpdGVtcyA9IHNlcnZpY2VzU2VydmljZT8ubWFwKFxuICAgICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8ubmFtZSA/PyBpdGVtPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBpdGVtPy5kZXNjcmlwdGlvbiA/PyBpdGVtPy50ZXh0LFxuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogYGljb24tJHtpdGVtPy5jbGFzcyA/PyBpdGVtPy5pY29ufWAsXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9JbmZvU2VydmljZXNJdGVtXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgIHRoaXMuc2l0ZUlkKCksXG4gICAgICAgICAgICAgICAgYnV0dG9ucz8uZmlsdGVyKChidG46IGFueSkgPT4gISFidG4/LmxpbmtWYWx1ZSlcbiAgICAgICAgICAgIClbMF0sXG4gICAgICAgICAgICBpbWFnZXM6IHRoaXMuZ2V0QXJyYXlJbWFnZVJlc3BvbnNpdmUobXVsdGltZWRpYT8uaW1hZ2VuZXMgfHwgW10pLFxuICAgICAgICAgICAgaXRlbXM6IGl0ZW1zLFxuICAgICAgICAgICAgdmlldzogdGhpcy5nZXRWaWV3KHZpZXcpLFxuICAgICAgICB9IGFzIFB1cm9JbmZvU2VydmljZXNJO1xuICAgIH1cblxuICAgIG1hcExpc3RHZW5lcmFsKFxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkLFxuICAgICAgICBuYW1lPzogJ2xpc3RuZXdzcmlnaHQnIHwgJ2xpc3RuZXdzbGVmdCdcbiAgICApOiBhbnkgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCB7IG9mZmVycywgcm9vbXMsIG11bHRpbWVkaWEsIGhvdGVscywgdGV4dHMsIGJ1dHRvbnMgfSA9IHByb3BzO1xuICAgICAgICBsZXQgaXRlbXM6IFB1cm9MaXN0R2VuZXJhbEl0ZW1bXSA9IFtdO1xuXG4gICAgICAgIGlmIChvZmZlcnMpIHtcbiAgICAgICAgICAgIGl0ZW1zID0gb2ZmZXJzPy5tYXAoXG4gICAgICAgICAgICAgICAgKG9mZmVyOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogb2ZmZXI/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBvZmZlcj8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2VzOiB0aGlzLmdldEFycmF5SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZmVyLm11bHRpbWVkaWEgfHwgW11cbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBvZmZlcj8ubGlua3MpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLlV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgb2ZmZXI/LmJ1dHRvbnMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb0xpc3RHZW5lcmFsSXRlbVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIGlmIChyb29tcykge1xuICAgICAgICAgICAgaXRlbXMgPSByb29tcz8ubWFwKChpdGVtOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIWl0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgeyB0ZXh0cywgZXF1aXBtZW50LCBtdWx0aW1lZGlhIH0gPSBpdGVtO1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiB0ZXh0cz8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IHRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgc3VidGl0bGU6IHRleHRzPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgcHJldGl0bGU6IHRleHRzPy5wcmV0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgZXF1aXBtZW50OiBlcXVpcG1lbnQ/LnNsaWNlKDAsIDMpPy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb246ICdpY29uLScgKyBpdGVtPy5jbGFzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6IGl0ZW0ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgICAgICAgICBpbWFnZXM6IHRoaXMuZ2V0QXJyYXlJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgICAgICAgICBtdWx0aW1lZGlhPy5maWx0ZXIoKGltZzogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZz8udGFncz8uc29tZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRhZzogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFnID09PSAnTGlzdFJvb21zJyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFnPy5uYW1lID09PSAnTGlzdFJvb21zJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2l0ZUlkKCksXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy5idXR0b25zLnJldmVyc2UoKVxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIH0gYXMgUHVyb0xpc3RHZW5lcmFsSXRlbTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2UgaWYgKGhvdGVscykge1xuICAgICAgICAgICAgaXRlbXMgPSBob3RlbHM/Lm1hcChcbiAgICAgICAgICAgICAgICAoaG90ZWw6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBob3RlbD8udGV4dHM/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaG90ZWw/LnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBob3RlbD8udGV4dHM/LnN1YnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJldGl0bGU6IGhvdGVsPy50ZXh0cz8ucHJldGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWFnZXM6IHRoaXMuZ2V0QXJyYXlJbWFnZVJlc3BvbnNpdmUoaG90ZWw/Lm11bHRpbWVkaWEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgaG90ZWw/LmxpbmtzKVswXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5VdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGhvdGVsPy5idXR0b25zKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9MaXN0R2VuZXJhbEl0ZW1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSBpZiAobXVsdGltZWRpYSkge1xuICAgICAgICAgICAgaXRlbXMgPSBtdWx0aW1lZGlhPy5pbWFnZW5lcz8ubWFwKFxuICAgICAgICAgICAgICAgIChpbWc6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZz8udGl0bGUgJiYgaW1nPy50aXRsZS50cmltKCkgIT09ICcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gaW1nLnRpdGxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nPy5kZXNjcmlwdGlvbiAmJiBpbWc/LmRlc2NyaXB0aW9uLnRyaW0oKSAhPT0gJydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBpbWcuZGVzY3JpcHRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB0ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWFnZXM6IHRoaXMuZ2V0QXJyYXlJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGltZWRpYT8uaW1hZ2VuZXMgfHwgW11cbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2dvOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShtdWx0aW1lZGlhPy5sb2dvPy5bMF0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLlV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgaW1nPy5idXR0b25zKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9MaXN0R2VuZXJhbEl0ZW1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgaXRlbXMsXG4gICAgICAgICAgICByaWdodFNpZGU6IG5hbWU/LmluY2x1ZGVzKCdyaWdodCcpLFxuICAgICAgICB9IGFzIFB1cm9MaXN0R2VuZXJhbEk7XG4gICAgfVxuXG4gICAgbWFwTGlzdFJlc3RhdXJhbnRzKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvTGlzdFJlc3RhdXJhbnRzSSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8ucmVzdGF1cmFudHM/Lm1hcChcbiAgICAgICAgICAgICAgICAocmVzdGF1cmFudDogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHJlc3RhdXJhbnQ/LnRleHRzPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IHJlc3RhdXJhbnQ/LnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlOiByZXN0YXVyYW50Py50ZXh0cz8uc3VidGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmV0aXRsZTogcmVzdGF1cmFudD8udGV4dHM/LnByZXRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2VzOiB0aGlzLmdldEFycmF5SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3RhdXJhbnQ/Lm11bHRpbWVkaWE/LmZpbHRlcigoaW1nOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZz8udGFncz8uc29tZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0YWc6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWcgPT09ICdMaXN0UmVzdGF1cmFudHMnIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFnPy5uYW1lID09PSAnTGlzdFJlc3RhdXJhbnRzJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNpdGVJZCgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN0YXVyYW50Py5idXR0b25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi4ocmVzdGF1cmFudD8ubG9nb3M/Lmxlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ286IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjOiByZXN0YXVyYW50Py5sb2dvcz8uWzBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ6IHJlc3RhdXJhbnQ/LnRleHRzPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gYXMgUHVyb0ltYWdlSSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHt9KSxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb0xpc3RSZXN0YXVyYW50SXRlbUlcbiAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgUHVyb0xpc3RSZXN0YXVyYW50c0k7XG4gICAgfVxuXG4gICAgbWFwRW5naW5lKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvRW5naW5lSSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBidXR0b246IHsgbGFiZWw6IHByb3BzPy50ZXh0cz8ubW90b3JTdWJtaXQsIHVybDogcHJvcHM/LnVybCB9LFxuICAgICAgICAgICAgZGF0ZXBpY2tlckluOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8ubW90b3JEYXRlVGl0bGU/LnNwbGl0KCctJyk/LlswXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBkYXRlcGlja2VyT3V0OiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8ubW90b3JEYXRlVGl0bGU/LnNwbGl0KCctJyk/LlsxXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBndWVzdHNJbnB1dDoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/Lm1vdG9yR3Vlc3RzSW5wdXRIb2xkZXIsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcHJvbW9JbnB1dDoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/Lm1vdG9yUHJvbW9Ib2xkZXIsXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBidG5BcHBseTogeyBsYWJlbDogcHJvcHM/LnRleHRzPy5tb3RvckFwcGx5IH0sXG4gICAgICAgICAgICBhZHVsdHNEcm9wZG93bjoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/Lm1vdG9yQWR1bHRzVGl0bGUsXG4gICAgICAgICAgICAgICAgb3B0aW9uczogdGhpcy5nZW5lcmF0ZUFnZXNPcHRpb25zKHByb3BzPy5tYXhBZHVsdHMsIDEpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGtpZHNEcm9wZG93bjoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/Lm1vdG9yS2lkc1RpdGxlLFxuICAgICAgICAgICAgICAgIG9wdGlvbnM6IHRoaXMuZ2VuZXJhdGVBZ2VzT3B0aW9ucyhwcm9wcz8ubWF4Q2hpbGRyZW4pLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxvY2F0aW9uRHJvcGRvd246IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5tb3RvckRyb3BEb3duSG9sZGVyLFxuICAgICAgICAgICAgICAgIG9wdGlvbnM6IFtcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogJ2FsbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBwcm9wcz8udGV4dHM/Lm1vdG9yRHJvcERvd25OYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBwcm9wcz8udXJsLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAuLi4ocHJvcHM/LmhvdGVscz8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAgICAgKGhvdGVsOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogaG90ZWw/Lm1vZGVsSWQgPz8gNCwgLy8gZmFsdGEgbW9kZWxJZCBwYXJhIGxhIFVSTCBnZW5lcmFkYSBwb3IgcGFydGUgZGUgQmFja1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBob3RlbD8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBob3RlbD8udXJsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIERyb3Bkb3duT3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICkgPz8gW10pLFxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8ubW90b3JUaXRsZSxcbiAgICAgICAgICAgIHVybDogcHJvcHM/LnVybCxcbiAgICAgICAgICAgIGhvdGVsOiBwcm9wcz8uaG90ZWxzPy5bMF0sXG4gICAgICAgIH0gYXMgUHVyb0VuZ2luZUk7XG4gICAgfVxuXG4gICAgbWFwRW5naW5lTW9kYWwoXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWQsXG4gICAgICAgIGVuZ2luZU1hcHBlZDogUHVyb0VuZ2luZUlcbiAgICApOiBQdXJvRW5naW5lTW9kYWxJIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlQWR2YW50YWdlczpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5hZHZhbnRhZ2VzVGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5hZHZhbnRhZ2VzVGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LmFkdmFudGFnZXNUaXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5hZHZhbnRhZ2VzVGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8uYWR2YW50YWdlc1RpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGVuZ2luZTogZW5naW5lTWFwcGVkLFxuICAgICAgICAgICAgYWR2YW50YWdlczogcHJvcHM/Lml0ZW1zPy5tYXAoXG4gICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb246IGl0ZW0/Lmljb24sXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9BZHZhbnRhZ2VzSXRlbVxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBQdXJvRW5naW5lTW9kYWxJO1xuICAgIH1cblxuICAgIG1hcFdlYm1hcChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb1dlYm1hcEkgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbGlua3M6IHByb3BzPy5wYWdlc1xuICAgICAgICAgICAgICAgIC5maWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgIChsaW5rOiBQdXJvQnV0dG9uSSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmsudXJsPy5zcGxpdCgnLycpWzFdID09PVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zaXRlU3ZjLnNlbGVjdGVkTGFuZ3VhZ2VJbnN0YW50Py5sb2NhdGVcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChsaW5rOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBsaW5rLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBVdGlscy51cmxWYWxpZGF0aW9uKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rLnVybCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ludGVybmFsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zaXRlSWQoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua1R5cGU6ICdpbnRlcm5hbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvQnV0dG9uSVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF1cbiAgICAgICAgICAgICkgYXMgUHVyb0ltYWdlSSxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBtYXBQaG90b1NsaWRlcihcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZCxcbiAgICAgICAgcmV2ZXJzZTogYm9vbGVhblxuICAgICk6IFB1cm9QaG90b1NsaWRlckkgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZSxcbiAgICAgICAgICAgIHN1YnRpdGxlOiBwcm9wcz8udGV4dHM/LnN1YnRpdGxlLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgdGhpcy5zaXRlSWQoKSxcbiAgICAgICAgICAgICAgICBwcm9wcz8uYnV0dG9ucz8uZmlsdGVyKChidG46IGFueSkgPT4gISFidG4/LmxpbmtWYWx1ZSlcbiAgICAgICAgICAgIClbMF0sXG4gICAgICAgICAgICBpbWc6IHRoaXMuZ2V0QXJyYXlJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzIHx8IFtdXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgcmV2ZXJzZSxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBtYXBCYW5uZXI0Q29sKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvQmFubmVyNENvbEkgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBwcm9wcz8uYnV0dG9ucylbMF0sXG4gICAgICAgICAgICBpbWFnZXM6IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8ubGVuZ3RoXG4gICAgICAgICAgICAgICAgPyB0aGlzLmdldEFycmF5SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgICAgICAgIHByb3BzLm11bHRpbWVkaWEuaW1hZ2ViaWc/Lmxlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICA/IHByb3BzLm11bHRpbWVkaWEuaW1hZ2VuZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgOiBwcm9wcy5tdWx0aW1lZGlhLmltYWdlbmVzLnNsaWNlKDEpXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgOiBbXSxcblxuICAgICAgICAgICAgYmlnYmFubmVyOiBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2ViaWc/LlswXVxuICAgICAgICAgICAgICAgID8gdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUocHJvcHMubXVsdGltZWRpYS5pbWFnZWJpZ1swXSlcbiAgICAgICAgICAgICAgICA6IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdXG4gICAgICAgICAgICAgICAgICA/IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKHByb3BzLm11bHRpbWVkaWEuaW1hZ2VuZXNbMF0pXG4gICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGJpZ3RpdGxlOiAnJyxcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRleHRDb2xvcnM6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0gYXMgUHVyb0Jhbm5lcjRDb2xJO1xuICAgIH1cblxuICAgIG1hcENvbnRhY3RGb3JtKFxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkXG4gICAgKTogUHVyb0NvbnRhY3RGb3JtSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IHByZWZpeFZhbHVlcyA9IE9iamVjdC52YWx1ZXMocHJvcHM/LnByZWZpeGVzIHx8IHt9KSBhcyBzdHJpbmdbXTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgc3VidGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8uc3VidGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5zdWJ0aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8uc3VidGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgc3VidGl0bGU6IHByb3BzPy50ZXh0cz8uc3VidGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRleHRDb2xvcnM6IHtcbiAgICAgICAgICAgICAgICBzdWJ0aXRsZTogcHJvcHM/LnRleHRzPy5zdWJ0aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjb25kaXRpb25zTGluazogcHJvcHM/LnRleHRzPy5jb25kaXRpb25zTGlua3MsXG4gICAgICAgICAgICBwcm9tb3Rpb25zOiBwcm9wcz8udGV4dHM/LnByb21vdGlvbnMsXG4gICAgICAgICAgICByZXF1aXJlZExhYmVsOiBwcm9wcz8udGV4dHM/LnJlcXVpcmVkTGFiZWwsXG4gICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdKSxcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBwcm9wcz8uYnV0dG9ucylbMF0sXG4gICAgICAgICAgICB0ZXh0YXJlYToge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LmlucHV0TWVzc2FnZSxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5pbnB1dE1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgIHZhbGlkOiBzaWduYWwodHJ1ZSksXG4gICAgICAgICAgICAgICAgbmFtZTogJ21lc3NhZ2UnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGRyb3Bkb3duOiB7XG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uZHJvcGRvd24sXG4gICAgICAgICAgICAgICAgb3B0aW9uczogcHJvcHM/LmhvdGVscz8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAocHJvcDogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgKHsgY29kZTogcHJvcD8uaWQsIG5hbWU6IHByb3A/Lm5hbWUgfSkgYXMgRHJvcGRvd25PcHRpb25cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5kRHJvcGRvd246IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5jb25zdWx0dHlwZSxcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBwcm9wcz8uQ29uc3VsdHlUcGU/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgKHByb3A6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogcHJvcD8uY29uc3VsdFR5cGVJZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBwcm9wPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgRHJvcGRvd25PcHRpb25cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHByZWZpeDoge1xuICAgICAgICAgICAgICAgIG9wdGlvbnM6IHByZWZpeFZhbHVlcy5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChwcmVmaXg6IHN0cmluZywgaW5kZXg6IG51bWJlcikgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogaW5kZXgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogcHJlZml4LFxuICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgRHJvcGRvd25PcHRpb25cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LnByZWZpeGVzLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGlucHV0TmFtZToge1xuICAgICAgICAgICAgICAgIG5hbWU6IFV0aWxzLm5vcm1hbGl6ZUNvbnRyb2xOYW1lKFxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmlucHV0TmFtZSxcbiAgICAgICAgICAgICAgICAgICAgJ25hbWUnXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5pbnB1dE5hbWUsXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5lcnJvck5hbWUsXG4gICAgICAgICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgIHZhbGlkOiBzaWduYWwodHJ1ZSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaW5wdXRTdXJuYW1lOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8uc3VybmFtZXMsXG4gICAgICAgICAgICAgICAgbmFtZTogVXRpbHMubm9ybWFsaXplQ29udHJvbE5hbWUoXG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uc3VybmFtZXMsXG4gICAgICAgICAgICAgICAgICAgICdzdXJuYW1lJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uc3VybmFtZXMsXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5lcnJvck5hbWUsXG4gICAgICAgICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgIHZhbGlkOiBzaWduYWwodHJ1ZSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZW1haWxJbnB1dDoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LmlucHV0RW1haWwsXG4gICAgICAgICAgICAgICAgbmFtZTogVXRpbHMubm9ybWFsaXplQ29udHJvbE5hbWUoXG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uaW5wdXRFbWFpbCxcbiAgICAgICAgICAgICAgICAgICAgJ2VtYWlsJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uaW5wdXRFbWFpbCxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgdHlwZTogJ2VtYWlsJyxcbiAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5lcnJvckVtYWlsLFxuICAgICAgICAgICAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLmVtYWlsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgICAgICB2YWxpZDogc2lnbmFsKHRydWUpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHBob25lSW5wdXQ6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5pbnB1dFBob25lLFxuICAgICAgICAgICAgICAgIG5hbWU6IFV0aWxzLm5vcm1hbGl6ZUNvbnRyb2xOYW1lKFxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmlucHV0UGhvbmUsXG4gICAgICAgICAgICAgICAgICAgICdwaG9uZSdcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LmlucHV0UGhvbmUsXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgIHR5cGU6ICd0ZWwnLFxuICAgICAgICAgICAgICAgIGVycm9yOiBwcm9wcz8udGV4dHM/LmVycm9yUGhvbmUsXG4gICAgICAgICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgIHZhbGlkOiBzaWduYWwodHJ1ZSksXG4gICAgICAgICAgICB9LFxuICAgICAgICB9IGFzIFB1cm9Db250YWN0Rm9ybUk7XG4gICAgfVxuXG4gICAgbWFwSW5mb1NsaWRlcihwcm9wczogYW55IHwgdW5kZWZpbmVkLCByZXZlcnNlOiBib29sZWFuKTogYW55IHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgeyBtdWx0aW1lZGlhLCBleHBlcmllbmNlLCB0ZXh0cyB9ID0gcHJvcHM7XG4gICAgICAgIGxldCBpdGVtczogUHVyb0luZm9TbGlkZXJJdGVtW10gPSBbXTtcbiAgICAgICAgaWYgKG11bHRpbWVkaWEpIHtcbiAgICAgICAgICAgIGl0ZW1zID0gbXVsdGltZWRpYT8uaW1hZ2VuZXM/Lm1hcChcbiAgICAgICAgICAgICAgICAoaW1nOiBJbWFnZVJlc3BvbnNlKSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpbWcpIGFzIFB1cm9JbWFnZUksXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaW1nLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3VidGl0bGU6IGltZy5zdWJ0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpbWcuZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2l0ZUlkKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nPy5idXR0b25zPy5maWx0ZXIoKGJ0bjogYW55KSA9PiAhIWJ0bj8ubGlua1ZhbHVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOiBpbWcucHJldGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9JbmZvU2xpZGVySXRlbVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIGlmIChleHBlcmllbmNlKSB7XG4gICAgICAgICAgICBpdGVtcyA9IGV4cGVyaWVuY2U/Lm1hcChcbiAgICAgICAgICAgICAgICAoZXhwOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cD8ubXVsdGltZWRpYT8uWzBdXG4gICAgICAgICAgICAgICAgICAgICAgICApIGFzIFB1cm9JbWFnZUksXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogZXhwPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogZXhwPy50ZXh0cz8ubG9jYXRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogZXhwPy50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2l0ZUlkKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwPy5idXR0b25zPy5maWx0ZXIoKGJ0bjogYW55KSA9PiAhIWJ0bj8ubGlua1ZhbHVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHByZXRpdGxlOiBleHAucHJldGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9JbmZvU2xpZGVySXRlbVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaXRlbXM6IGl0ZW1zLFxuICAgICAgICAgICAgcmV2ZXJzZTogcmV2ZXJzZSxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBtYXBPZmZlcnNTbGlkZXIocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IGFueSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8ub2ZmZXJzPy5tYXAoXG4gICAgICAgICAgICAgICAgKG9mZmVyOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogb2ZmZXI/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBvZmZlcj8udGV4dHM/LnN1YnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGFnOiBvZmZlcj8udGV4dHM/LmFkZGl0aW9uYWwxLFxuICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLlV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgb2ZmZXI/LmxpbmtzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5VdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIG9mZmVyPy5idXR0b25zKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKG9mZmVyLm11bHRpbWVkaWFbMF0pLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvT2ZmZXJcbiAgICAgICAgICAgICksXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgbWFwVGhhbmtzKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvVGhhbmtzSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXVxuICAgICAgICAgICAgKSBhcyBQdXJvSW1hZ2VJLFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIHByb3BzPy5idXR0b25zKVswXSxcbiAgICAgICAgfSBhcyBQdXJvVGhhbmtzSTtcbiAgICB9XG5cbiAgICBtYXA0MDQocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm80MDRJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgYWRkcmVzcyA9IHByb3BzPy5hZGRyZXNzPy5bMF07XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHN1YnRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnN1YnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8uc3VidGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnN1YnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHByb3BzLnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIGxpbms6IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgcHJvcHM/LmJ1dHRvbnMpWzBdLFxuICAgICAgICAgICAgYWRkcmVzczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LmFkZHJlc3NUaXRsZSxcbiAgICAgICAgICAgICAgICB0ZXh0OiBgJHthZGRyZXNzLmFkZHJlc3N9PC9icj4ke2FkZHJlc3MuY2l0eX0sICR7YWRkcmVzcy5jcH0gJHthZGRyZXNzLnByb3ZpbmNlfWAsXG4gICAgICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIHByb3BzPy5idXR0b25zPy5bMV0pWzBdLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNvbnRhY3Q6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5jb250YWN0VGl0bGUsXG4gICAgICAgICAgICAgICAgbGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2l0ZUlkKCksXG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy5saW5rcz8uQ29udGFjdD8uWzBdXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgcHJvcHM/LmJ1dHRvbnM/LlsyXSlbMF0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBwcm9wcz8udGV4dHM/LnN1YnRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICBhZGRyZXNzVGl0bGU6IHByb3BzPy50ZXh0cz8uYWRkcmVzc1RpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgY29udGFjdFRpdGxlOiBwcm9wcz8udGV4dHM/LmNvbnRhY3RUaXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRleHRDb2xvcnM6IHtcbiAgICAgICAgICAgICAgICBzdWJ0aXRsZTogcHJvcHM/LnRleHRzPy5zdWJ0aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgICAgICBhZGRyZXNzVGl0bGU6IHByb3BzPy50ZXh0cz8uYWRkcmVzc1RpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgIGNvbnRhY3RUaXRsZTogcHJvcHM/LnRleHRzPy5jb250YWN0VGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICB9LFxuICAgICAgICB9IGFzIFB1cm80MDRJO1xuICAgIH1cblxuICAgIG1hcEluZm9HYWxsZXJ5KHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBhbnkgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIG1vcmVpbmZvOiBwcm9wcz8udGV4dHM/LmFkZGl0aW9uYWwxLFxuICAgICAgICAgICAgaW1hZ2VzOiB0aGlzLmdldEFycmF5SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcyB8fCBbXVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIC8vIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgcHJvcHM/LmJ1dHRvbnMucmV2ZXJzZSgpKSxcbiAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgdGhpcy5zaXRlSWQoKSxcbiAgICAgICAgICAgICAgICBwcm9wcz8uYnV0dG9uc1xuICAgICAgICAgICAgICAgICAgICA/LmZpbHRlcigoYnRuOiBhbnkpID0+IGJ0bj8ubGlua1R5cGUgIT09ICdzZWxmX2xpbmsnKVxuICAgICAgICAgICAgICAgICAgICAucmV2ZXJzZSgpXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYWR2YW50YWdlczogcHJvcHM/LmVxdWlwbWVudD8ubWFwKFxuICAgICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb246ICdpY29uLScgKyBpdGVtPy5jbGFzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpdGVtPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb1NjaGVkdWxlSXRlbVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRleHRDb2xvcnM6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0gYXMgUHVyb0luZm9HYWxsZXJ5STtcbiAgICB9XG5cbiAgICBtYXBJbmZvVGFibGUocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9JbmZvVGFibGVJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgbGlzdHMgPSBwcm9wcz8uTGlzdHM7XG5cbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGxpc3RzKSkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZSxcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgY29sdW1uczogbGlzdHMubWFwKChsaXN0OiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBpdGVtcyA9IGxpc3QuaXRlbXMgPz8gW107XG4gICAgICAgICAgICAgICAgY29uc3QgaGVhZGVyID0gaXRlbXNbMF0/LnRpdGxlID8/ICcnO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgY29sdW1uSXRlbXMgPSBpdGVtcy5zbGljZSgxKS5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIHRleHQ6IGl0ZW0udGV4dCxcbiAgICAgICAgICAgICAgICAgICAgaWNvbjogaXRlbS5pY29uLFxuICAgICAgICAgICAgICAgIH0pKTtcblxuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIGhlYWRlcixcbiAgICAgICAgICAgICAgICAgICAgaXRlbXM6IGNvbHVtbkl0ZW1zLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIGluZm9JdGVtczogcHJvcHM/LmluZm9JdGVtcyxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBtYXBJbmZvMkNvbChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0luZm8yQ29sSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8uaXRlbXM/Lm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlLFxuICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBpdGVtLnN1YnRpdGxlLFxuICAgICAgICAgICAgICAgIGxpbms6IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgaXRlbS5saW5rKSxcbiAgICAgICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGl0ZW0uYnV0dG9ucyksXG4gICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpdGVtLmltYWdlKSxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgfSBhcyBQdXJvSW5mbzJDb2xJO1xuICAgIH1cblxuICAgIG1hcFN1Ym1lbnUocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9NZW51SSB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkID0gcHJvcHM/Lml0ZW1zPy5maW5kKChpdGVtOiBhbnkpID0+IGl0ZW0uc2VsZWN0ZWQpO1xuICAgICAgICBsZXQgc2l0ZVVybCA9ICcnO1xuICAgICAgICBpZiAodGhpcy5zaXRlSWQoKSA9PT0gMikge1xuICAgICAgICAgICAgc2l0ZVVybCA9ICcvcHVyb2hvdGVscyc7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5zaXRlSWQoKSA9PT0gMykge1xuICAgICAgICAgICAgc2l0ZVVybCA9ICcvcHVyb2JlYWNoJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzdWJtZW51ID0ge1xuICAgICAgICAgICAgLy8gaG90ZWw6IHByb3BzPy5ob3RlbCxcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8uaXRlbXNcbiAgICAgICAgICAgICAgICA/LmZpbHRlcigoaXRlbTogYW55KSA9PiBpdGVtLmFjdGl2ZSlcbiAgICAgICAgICAgICAgICA/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgKGxpbms6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGxpbms/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBzaXRlVXJsICsgbGluaz8ubGlua1ZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtUeXBlOiAnaW50ZXJuYWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb246IGxpbms/Lmljb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9iaWxlOiBsaW5rPy5tb2JpbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvU3VibWVudU1vYmlsZUl0ZW1JXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGl0ZW1zTW9iaWxlOiBwcm9wcz8uaXRlbXNcbiAgICAgICAgICAgICAgICA/LmZpbHRlcigoaXRlbTogYW55KSA9PiBpdGVtLmFjdGl2ZSAmJiAhaXRlbS5tb2JpbGUpXG4gICAgICAgICAgICAgICAgPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChsaW5rOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBsaW5rPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogc2l0ZVVybCArIGxpbms/LmxpbmtWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rVHlwZTogJ2ludGVybmFsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uOiBsaW5rPy5pY29uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vYmlsZTogbGluaz8ubW9iaWxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgUHVyb1N1Ym1lbnVNb2JpbGVJdGVtSVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICBzZWxlY3RlZDoge1xuICAgICAgICAgICAgICAgIGxhYmVsOiBzZWxlY3RlZD8ubmFtZSxcbiAgICAgICAgICAgICAgICB1cmw6IHNlbGVjdGVkPy5saW5rVmFsdWUsXG4gICAgICAgICAgICB9IGFzIFB1cm9CdXR0b25JLFxuICAgICAgICAgICAgYm90dG9tTGlua3M6IHByb3BzPy5pdGVtc1xuICAgICAgICAgICAgICAgID8uZmlsdGVyKChpdGVtOiBhbnkpID0+IGl0ZW0uYWN0aXZlKVxuICAgICAgICAgICAgICAgID8uZmlsdGVyKChpdGVtOiBhbnkpID0+IGl0ZW0ubW9iaWxlKVxuICAgICAgICAgICAgICAgID8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAobGluazogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogbGluaz8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IHNpdGVVcmwgKyBsaW5rPy5saW5rVmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua1R5cGU6ICdpbnRlcm5hbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvU3VibWVudU1vYmlsZUl0ZW1JXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBQdXJvTWVudUk7XG5cbiAgICAgICAgcmV0dXJuIHN1Ym1lbnUgYXMgUHVyb01lbnVJO1xuICAgIH1cblxuICAgIG1hcExpc3RBd2FyZHMocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9MaXN0QXdhcmRzSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/Lm1hcChcbiAgICAgICAgICAgICAgICAoaW1nOiBJbWFnZVJlc3BvbnNlKSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGltZz8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaW1nPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpbWcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBpbWcuYnV0dG9ucyksXG4gICAgICAgICAgICAgICAgICAgICAgICBdWzBdLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBQdXJvTGlzdEF3YXJkc0l0ZW1JXG4gICAgICAgICAgICApLFxuICAgICAgICB9IGFzIFB1cm9MaXN0QXdhcmRzSTtcbiAgICB9XG5cbiAgICBtYXBTbGlkZXIzQ2FyZChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb1NsaWRlcjNDYXJkSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpdGVtczogcHJvcHM/Lkl0ZW1zPy5tYXAoXG4gICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGF1dGhvcjogaXRlbS50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpdGVtLnRleHQsXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9TbGlkZXIzQ2FyZEl0ZW1JXG4gICAgICAgICAgICApLFxuICAgICAgICB9IGFzIFB1cm9TbGlkZXIzQ2FyZEk7XG4gICAgfVxuXG4gICAgbWFwTmV3c2xldHRlcihwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb05ld3NsZXR0ZXJJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgc3VidGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8uc3VidGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5zdWJ0aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8uc3VidGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIGltYWdlOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXSksXG4gICAgICAgICAgICBlbWFpbDoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/Lm1haWxQbGFjZWhvbGRlcixcbiAgICAgICAgICAgICAgICBuYW1lOiAnZW1haWwnLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/Lm1haWxQbGFjZWhvbGRlcixcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgdHlwZTogJ2VtYWlsJyxcbiAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5tYWlsRXJyb3IsXG4gICAgICAgICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMuZW1haWwsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgIHZhbGlkOiBzaWduYWwodHJ1ZSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGFuZzoge1xuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/Lmxhbmd1YWdlUGxhY2Vob2xkZXIsXG4gICAgICAgICAgICAgICAgb3B0aW9uczogcHJvcHM/Lmxhbmd1YWdlcz8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAobGFuZzogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgKHsgY29kZTogbGFuZz8uaWQsIG5hbWU6IGxhbmc/Lm5hbWUgfSkgYXMgRHJvcGRvd25PcHRpb25cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNvdW50cnk6IHtcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5jb3VudHJ5UGxhY2Vob2xkZXIsXG4gICAgICAgICAgICAgICAgb3B0aW9uczogcHJvcHM/LmNvdW50cmllc1xuICAgICAgICAgICAgICAgICAgICA/LnNvcnQoKGE6IGFueSwgYjogYW55KSA9PiBhLm5hbWUubG9jYWxlQ29tcGFyZShiLm5hbWUpKVxuICAgICAgICAgICAgICAgICAgICA/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgICAgIChjb3VudHJ5OiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogY291bnRyeT8uaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGNvdW50cnk/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgRHJvcGRvd25PcHRpb25cbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjZW50ZXI6IHtcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5jZW50ZXJQbGFjZWhvbGRlcixcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBbXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvZGU6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBwcm9wcz8udGV4dHM/LmFsbENlbnRlcnMsXG4gICAgICAgICAgICAgICAgICAgIH0gYXMgRHJvcGRvd25PcHRpb24sXG4gICAgICAgICAgICAgICAgICAgIC4uLihwcm9wcz8uaG90ZWxzPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2VudGVyOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogY2VudGVyPy5pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogY2VudGVyPy50ZXh0cz8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBEcm9wZG93bk9wdGlvblxuICAgICAgICAgICAgICAgICAgICApID8/IFtdKSxcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJlc2lkZW50OiB7XG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8ucmVzaWRlbnRQbGFjZWhvbGRlcixcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBwcm9wcz8uUmVzaWRlbnRcbiAgICAgICAgICAgICAgICAgICAgPy5zb3J0KChhOiBhbnksIGI6IGFueSkgPT4gYS5uYW1lLmxvY2FsZUNvbXBhcmUoYi5uYW1lKSlcbiAgICAgICAgICAgICAgICAgICAgPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgICAgICAoY291bnRyeTogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGU6IGNvdW50cnk/LmlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBjb3VudHJ5Py5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIERyb3Bkb3duT3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIHByb3BzPy5idXR0b25zKVswXSxcbiAgICAgICAgICAgIGNvbmRpdGlvbnM6IHByb3BzPy50ZXh0cz8uY29uZGl0aW9ucyxcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICBzdWJ0aXRsZTogcHJvcHM/LnRleHRzPy5zdWJ0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBwcm9wcz8udGV4dHM/LnN1YnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSBhcyBQdXJvTmV3c2xldHRlckk7XG4gICAgfVxuXG4gICAgbWFwQmFubmVySW5mbyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0Jhbm5lckluZm9JIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBmcmFtZVVybDogcHJvcHM/LnRleHRzPy5mcmFtZVVybCxcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBwcm9wcz8uYnV0dG9ucylbMF0sXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICB9LFxuICAgICAgICB9IGFzIFB1cm9CYW5uZXJJbmZvSTtcbiAgICB9XG5cbiAgICAvL1RPRE86IENoZWNrIGJhY2sgcHJvcHNcbiAgICBtYXBCYW5uZXJJbmZvMihwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0Jhbm5lckluZm8ySSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5wcmV0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICB9LFxuICAgICAgICB9IGFzIFB1cm9CYW5uZXJJbmZvMkk7XG4gICAgfVxuXG4gICAgLy9UT0RPOiBDaGVjayBiYWNrIHByb3BzXG4gICAgbWFwSW5mb0RldGFpbHMocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9JbmZvRGV0YWlsc0kgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBzdWJ0aXRsZTogcHJvcHM/LnRleHRzPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICB9IGFzIFB1cm9JbmZvRGV0YWlsc0k7XG4gICAgfVxuXG4gICAgbWFwSW5mb0RldGFpbHNDb2xzKFxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkXG4gICAgKTogUHVyb0luZm9EZXRhaWxzM0NvbEkgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBzdWJ0aXRsZTogcHJvcHM/LnRleHRzPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgaXRlbXM6IHByb3BzPy5JdGVtcz8ubWFwKFxuICAgICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS50aXRsZSA/PyBpdGVtLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaXRlbS5kZXNjcmlwdGlvbiA/PyBpdGVtLnRleHQsXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIFB1cm9JbmZvRGV0YWlsSXRlbUlcbiAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgUHVyb0luZm9EZXRhaWxzM0NvbEk7XG4gICAgfVxuXG4gICAgbWFwRmFxcyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0ZhcXNJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8uSXRlbXM/Lm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlLFxuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGl0ZW0uY29udGVudCA/PyBpdGVtLnRleHQsXG4gICAgICAgICAgICB9KSksXG4gICAgICAgIH0gYXMgUHVyb0ZhcXNJO1xuICAgIH1cblxuICAgIC8vVE9ETzogQ2hlY2sgYmFjayBwcm9wc1xuICAgIG1hcE11c2ljU2xpZGVyKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvTXVzaWNTbGlkZXJJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBwcm9wcz8uYnV0dG9ucylbMF0sXG4gICAgICAgICAgICBpdGVtczogcHJvcHM/Lm11bHRpbWVkaWE/Lml0ZW1zPy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICBhdWRpbzogaXRlbS5hdWRpbyxcbiAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGl0ZW0uaW1hZ2UpLFxuICAgICAgICAgICAgICAgIGRhdGU6IGl0ZW0uZGF0ZSxcbiAgICAgICAgICAgICAgICBoZWFkaW5nOiBpdGVtLmhlYWRpbmcsXG4gICAgICAgICAgICAgICAgdGV4dDoge1xuICAgICAgICAgICAgICAgICAgICBoZWFkaW5nOiBpdGVtLnRleHQ/LmhlYWRpbmcsXG4gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpdGVtLnRleHQ/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KSksXG4gICAgICAgIH0gYXMgUHVyb011c2ljU2xpZGVySTtcbiAgICB9XG5cbiAgICBtYXBDYXJ0YShwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0NhcnRhSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRleHRDb2xvcnM6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzZWN0aW9uczogcHJvcHM/Lk1lbnU/LlswXT8uY2hpbGRyZW5zPy5tYXAoKHNlY3Rpb246IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICB0aXRsZTogc2VjdGlvbi50aXRsZSxcbiAgICAgICAgICAgICAgICBpdGVtczogc2VjdGlvbj8ubWVudT8ubWFwKChpdGVtOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICBwcmljZTogaXRlbS5wcmljZSxcbiAgICAgICAgICAgICAgICAgICAgaWNvbnM6IGl0ZW0uaWNvbnM/Lm1hcCgoaWNvbjogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogJ2ljb24tJyArIChpY29uPy5jbGFzcyB8fCBpY29uPy5pY29uKSxcbiAgICAgICAgICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaXRlbS5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICB9KSksXG4gICAgICAgICAgICB9KSksXG4gICAgICAgIH0gYXMgUHVyb0NhcnRhSTtcbiAgICB9XG5cbiAgICBtYXBTbGlkZXI0SXRlbXMocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9TbGlkZXI0SXRlbXNJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgc3VidGl0bGU6IHByb3BzPy50ZXh0cz8uc3VidGl0bGUsXG4gICAgICAgICAgICBpdGVtczogcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5tYXAoKGltZzogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaW1nKSxcbiAgICAgICAgICAgICAgICB0aXRsZTogaW1nPy50aXRsZSxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaW1nPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgfSBhcyBQdXJvU2xpZGVyNEl0ZW1zSTtcbiAgICB9XG5cbiAgICBtYXBEdWFsTGlzdChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0R1YWxMaXN0SSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5wcmV0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24gPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvblxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24/LmNvbnRhaW4sXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRleHRDb2xvcnM6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsaXN0czogT2JqZWN0LmtleXMocHJvcHMudGV4dHMpXG4gICAgICAgICAgICAgICAgLmZpbHRlcigoa2V5KSA9PiBrZXkubWF0Y2goL15saXN0XFxkK1RpdGxlJC8pKVxuICAgICAgICAgICAgICAgIC5zb3J0KClcbiAgICAgICAgICAgICAgICAubWFwKCh0aXRsZUtleSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBsaXN0TnVtYmVyID0gdGl0bGVLZXlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKCdsaXN0JywgJycpXG4gICAgICAgICAgICAgICAgICAgICAgICAucmVwbGFjZSgnVGl0bGUnLCAnJyk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHByZWZpeCA9IGBsaXN0JHtsaXN0TnVtYmVyfUl0ZW1gO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1LZXlzID0gT2JqZWN0LmtleXMocHJvcHMudGV4dHMpXG4gICAgICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKChrKSA9PiBrLnN0YXJ0c1dpdGgocHJlZml4KSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5zb3J0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhLCBiKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOdW1iZXIoYS5yZXBsYWNlKHByZWZpeCwgJycpKSAtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE51bWJlcihiLnJlcGxhY2UocHJlZml4LCAnJykpXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1zID0gW107XG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaXRlbUtleXMubGVuZ3RoOyBpICs9IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcy50ZXh0c1tpdGVtS2V5c1tpXV0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IHByb3BzLnRleHRzW2l0ZW1LZXlzW2kgKyAxXV0gPz8gJycsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHMudGV4dHNbdGl0bGVLZXldLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXMsXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgIH0gYXMgUHVyb0R1YWxMaXN0STtcbiAgICB9XG5cbiAgICBtYXBQcm9qZWN0c0Zvcm0ocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9Qcm9qZWN0c0Zvcm1JIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgcHJlZml4VmFsdWVzID0gT2JqZWN0LnZhbHVlcyhwcm9wcz8ucHJlZml4ZXMgfHwge30pIGFzIHN0cmluZ1tdO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICB5ZFRpdGxlOiBwcm9wcz8udGV4dHM/LnlkdGl0bGUsXG4gICAgICAgICAgICBhaVRpdGxlOiBwcm9wcz8udGV4dHM/LmFpdGl0bGUsXG4gICAgICAgICAgICBpY1RpdGxlOiBwcm9wcz8udGV4dHM/LmljdGl0bGUsXG4gICAgICAgICAgICBkVGl0bGU6IHByb3BzPy50ZXh0cz8uZHRpdGxlLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBjb25kaXRpb25zTGluazogcHJvcHM/LnRleHRzPy5jb25kaXRpb25zbGluayxcbiAgICAgICAgICAgIG90aGVyczogcHJvcHM/LnRleHRzPy5vdGhlcnMsXG4gICAgICAgICAgICByZXF1aXJlZExhYmVsOiBwcm9wcz8udGV4dHM/LnJlcXVpcmVkTGFiZWwsXG4gICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdKSxcbiAgICAgICAgICAgIGFwcGx5QnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIHByb3BzPy5idXR0b25zKVswXSxcbiAgICAgICAgICAgIHNlZUFsbEJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBwcm9wcz8uYnV0dG9ucylbMV0sXG4gICAgICAgICAgICB3aHlUZXh0YXJlYToge1xuICAgICAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmlucHV0V2h5TWVzc2FnZSA/P1xuICAgICAgICAgICAgICAgICAgICAnV2h5IGRvIHlvdSBiZWxpZXZlIHRoaXMgaXMgYW4gaWRlYWwgbG9jYXRpb24gZm9yIGEgUHVybyBlc3RhYmxpc2htZW50PycsXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6XG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uaW5wdXRXaHlNZXNzYWdlID8/XG4gICAgICAgICAgICAgICAgICAgICdXaHkgZG8geW91IGJlbGlldmUgdGhpcyBpcyBhbiBpZGVhbCBsb2NhdGlvbiBmb3IgYSBQdXJvIGVzdGFibGlzaG1lbnQ/JyxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHNpZ25hbCh0cnVlKSxcbiAgICAgICAgICAgICAgICBuYW1lOiAnd2h5TWVzc2FnZScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgd2FUZXh0YXJlYToge1xuICAgICAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmlucHV0V2FNZXNzYWdlID8/XG4gICAgICAgICAgICAgICAgICAgICdXaGF0IGF0dHJhY3RzIHlvdSB0byB0aGUgUHVybyBHcm91cCBicmFuZCwgYW5kIGhvdyBkbyB5b3UgZW52aXNpb24gaW50ZWdyYXRpbmcgaXQgaW50byB5b3VyIGJ1c2luZXNzIGNvbmNlcHQ/JyxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjpcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5pbnB1dFdhTWVzc2FnZSA/P1xuICAgICAgICAgICAgICAgICAgICAnV2hhdCBhdHRyYWN0cyB5b3UgdG8gdGhlIFB1cm8gR3JvdXAgYnJhbmQsIGFuZCBob3cgZG8geW91IGVudmlzaW9uIGludGVncmF0aW5nIGl0IGludG8geW91ciBidXNpbmVzcyBjb25jZXB0PycsXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgIHZhbGlkOiBzaWduYWwodHJ1ZSksXG4gICAgICAgICAgICAgICAgbmFtZTogJ3dhTWVzc2FnZScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcHBUZXh0YXJlYToge1xuICAgICAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmlucHV0UFBNZXNzYWdlID8/XG4gICAgICAgICAgICAgICAgICAgICdQbGVhc2UgcHJvdmlkZSBkZXRhaWxzIGFib3V0IHlvdXIgY29tcGFueSwgc2hhcmVob2xkZXJzIChpZiBhcHBsaWNhYmxlKSwgYW5kIGV4cGVyaWVuY2UgaW4gdGhlIHNlY3Rvci4nLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOlxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmlucHV0UFBNZXNzYWdlID8/XG4gICAgICAgICAgICAgICAgICAgICdQbGVhc2UgcHJvdmlkZSBkZXRhaWxzIGFib3V0IHlvdXIgY29tcGFueSwgc2hhcmVob2xkZXJzIChpZiBhcHBsaWNhYmxlKSwgYW5kIGV4cGVyaWVuY2UgaW4gdGhlIHNlY3Rvci4nLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgICAgICB2YWxpZDogc2lnbmFsKHRydWUpLFxuICAgICAgICAgICAgICAgIG5hbWU6ICdwcE1lc3NhZ2UnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5wRHJvcGRvd246IHtcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjpcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5ucERyb3Bkb3duID8/ICdOYXR1cmUgb2YgdGhlIFByb2plY3QnLFxuICAgICAgICAgICAgICAgIG9wdGlvbnM6IHByb3BzPy5jb25zdWx0VHlwZXM/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgKHByb3A6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7IGNvZGU6IHByb3A/LmlkLCBuYW1lOiBwcm9wPy5uYW1lIH0pIGFzIERyb3Bkb3duT3B0aW9uXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBicERyb3Bkb3duOiB7XG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6XG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uYnBEcm9wZG93biA/PyAnRG8geW91IGhhdmUgYSBidXNpbmVzcyBwbGFuPycsXG4gICAgICAgICAgICAgICAgb3B0aW9uczogcHJvcHM/LmNvbnN1bHRUeXBlcz8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAocHJvcDogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgKHsgY29kZTogcHJvcD8uaWQsIG5hbWU6IHByb3A/Lm5hbWUgfSkgYXMgRHJvcGRvd25PcHRpb25cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRiRHJvcGRvd246IHtcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy50YkRyb3Bkb3duID8/ICdUeXBlIG9mIEJ1c2luZXNzJyxcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBwcm9wcz8uY29uc3VsdFR5cGVzPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChwcm9wOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoeyBjb2RlOiBwcm9wPy5pZCwgbmFtZTogcHJvcD8ubmFtZSB9KSBhcyBEcm9wZG93bk9wdGlvblxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcG9Ecm9wZG93bjoge1xuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LnBvRHJvcGRvd24gPz8gJ1BsYW5uZWQgT3BlbmluZyBEYXRlJyxcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBwcm9wcz8uY29uc3VsdFR5cGVzPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChwcm9wOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoeyBjb2RlOiBwcm9wPy5pZCwgbmFtZTogcHJvcD8ubmFtZSB9KSBhcyBEcm9wZG93bk9wdGlvblxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZW1Ecm9wZG93bjoge1xuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOlxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmVtRHJvcGRvd24gPz9cbiAgICAgICAgICAgICAgICAgICAgJ0VzdGltYXRlZCBNb250aHMgb2YgT3BlcmF0aW9uIHBlciBZZWFyJyxcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBwcm9wcz8uY29uc3VsdFR5cGVzPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChwcm9wOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoeyBjb2RlOiBwcm9wPy5pZCwgbmFtZTogcHJvcD8ubmFtZSB9KSBhcyBEcm9wZG93bk9wdGlvblxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaGJwRHJvcGRvd246IHtcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjpcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5oYnBEcm9wZG93biA/PyAnRG8geW91IGhhdmUgYSBidXNpbmVzcyBwbGFuPycsXG4gICAgICAgICAgICAgICAgb3B0aW9uczogcHJvcHM/LmNvbnN1bHRUeXBlcz8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAocHJvcDogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgKHsgY29kZTogcHJvcD8uaWQsIG5hbWU6IHByb3A/Lm5hbWUgfSkgYXMgRHJvcGRvd25PcHRpb25cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHByZWZpeDoge1xuICAgICAgICAgICAgICAgIG9wdGlvbnM6IHByZWZpeFZhbHVlcy5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChwcmVmaXg6IHN0cmluZywgaW5kZXg6IG51bWJlcikgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogaW5kZXgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogcHJlZml4LFxuICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgRHJvcGRvd25PcHRpb25cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LnByZWZpeGVzLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGFkZHJlc3NJbnB1dDoge1xuICAgICAgICAgICAgICAgIG5hbWU6IFV0aWxzLm5vcm1hbGl6ZUNvbnRyb2xOYW1lKFxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmFkZHJlc3NJbnB1dCxcbiAgICAgICAgICAgICAgICAgICAgJ2FkZHJlc3MnXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjpcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5hZGRyZXNzSW5wdXQgPz8gJ0VzdGFibGlzaG1lbnQgQWRkcmVzcycsXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5lcnJvckFkZHJlc3MsXG4gICAgICAgICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgIHZhbGlkOiBzaWduYWwodHJ1ZSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2l6ZUlucHV0OiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8uc2l6ZUlucHV0ID8/ICdzaXplJyxcbiAgICAgICAgICAgICAgICBuYW1lOiBVdGlscy5ub3JtYWxpemVDb250cm9sTmFtZShcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5zaXplSW5wdXQsXG4gICAgICAgICAgICAgICAgICAgICdzaXplJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uc2l6ZUlucHV0ID8/ICdWZW51ZSBTaXplIChtwrIpJyxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICAgIGVycm9yOiBwcm9wcz8udGV4dHM/LmVycm9yU2l6ZSxcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHNpZ25hbCh0cnVlKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBuYW1lSW5wdXQ6IHtcbiAgICAgICAgICAgICAgICBuYW1lOiBVdGlscy5ub3JtYWxpemVDb250cm9sTmFtZShcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5pbnB1dE5hbWUsXG4gICAgICAgICAgICAgICAgICAgICduYW1lJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uaW5wdXROYW1lID8/ICdGaXJzdCBOYW1lJyxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICAgIGVycm9yOiBwcm9wcz8udGV4dHM/LmVycm9yTmFtZSxcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHNpZ25hbCh0cnVlKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzdXJuYW1lSW5wdXQ6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5zdXJuYW1lcyA/PyAnc3VybmFtZScsXG4gICAgICAgICAgICAgICAgbmFtZTogVXRpbHMubm9ybWFsaXplQ29udHJvbE5hbWUoXG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uc3VybmFtZXMsXG4gICAgICAgICAgICAgICAgICAgICdzdXJuYW1lJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uc3VybmFtZXMgPz8gJ0xhc3QgTmFtZScsXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5lcnJvck5hbWUsXG4gICAgICAgICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgIHZhbGlkOiBzaWduYWwodHJ1ZSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZW1haWxJbnB1dDoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LmlucHV0RW1haWwgPz8gJ2VtYWlsJyxcbiAgICAgICAgICAgICAgICBuYW1lOiBVdGlscy5ub3JtYWxpemVDb250cm9sTmFtZShcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5pbnB1dEVtYWlsLFxuICAgICAgICAgICAgICAgICAgICAnZW1haWwnXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5pbnB1dEVtYWlsID8/ICdFbWFpbCBBZGRyZXNzJyxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgdHlwZTogJ2VtYWlsJyxcbiAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5lcnJvckVtYWlsLFxuICAgICAgICAgICAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLmVtYWlsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgICAgICB2YWxpZDogc2lnbmFsKHRydWUpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNvbmZpcm1FbWFpbElucHV0OiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8uaW5wdXRFbWFpbCA/PyAnZW1haWxjJyxcbiAgICAgICAgICAgICAgICBuYW1lOiBVdGlscy5ub3JtYWxpemVDb250cm9sTmFtZShcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5pbnB1dEVtYWlsLFxuICAgICAgICAgICAgICAgICAgICAnZW1haWxjJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uaW5wdXRFbWFpbCA/PyAnQ29uZmlybSB5b3VyIGVtYWlsJyxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgdHlwZTogJ2VtYWlsJyxcbiAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5lcnJvckVtYWlsLFxuICAgICAgICAgICAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLmVtYWlsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgICAgICB2YWxpZDogc2lnbmFsKHRydWUpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHBob25lSW5wdXQ6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5pbnB1dFBob25lID8/ICdwaG9uZScsXG4gICAgICAgICAgICAgICAgbmFtZTogVXRpbHMubm9ybWFsaXplQ29udHJvbE5hbWUoXG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uaW5wdXRQaG9uZSxcbiAgICAgICAgICAgICAgICAgICAgJ3Bob25lJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uaW5wdXRQaG9uZSA/PyAnVGVsw6lmb25vJyxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgdHlwZTogJ3RlbCcsXG4gICAgICAgICAgICAgICAgZXJyb3I6IHByb3BzPy50ZXh0cz8uZXJyb3JQaG9uZSxcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHNpZ25hbCh0cnVlKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBtYXRlcmlhbHNJbnB1dDoge1xuICAgICAgICAgICAgICAgIG5hbWU6IFV0aWxzLm5vcm1hbGl6ZUNvbnRyb2xOYW1lKFxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmlucHV0TWF0ZXJpYWxzLFxuICAgICAgICAgICAgICAgICAgICAnbWF0ZXJpYWxzJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgdHlwZTogcHJvcHM/LnRleHRzPy5pbnB1dE1hdGVyaWFscyxcbiAgICAgICAgICAgICAgICBsYWJlbDogcHJvcHM/LnRleHRzPy5pbnB1dE1hdGVyaWFscyA/PyAnU3VwcG9ydGluZyBtYXRlcmlhbHMnLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBudWxsIGFzIEZpbGUgfCBGaWxlW10gfCBudWxsIHwgdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIHZhbGlkOiBzaWduYWwodHJ1ZSksXG4gICAgICAgICAgICAgICAgLy8gdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSBhcyBQdXJvUHJvamVjdHNGb3JtSTtcbiAgICB9XG5cbiAgICBtYXBGYXFzSW1nKFxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkLFxuICAgICAgICB2aWV3OiBQdXJvVmlld3NUeXBlIHwgdW5kZWZpbmVkLFxuICAgICAgICBpZGVudGlmaWVyOiBzdHJpbmcgfCB1bmRlZmluZWRcbiAgICApOiBQdXJvRmFxc0ltZ0kgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCB7IG11bHRpbWVkaWEsIEl0ZW1zLCB0ZXh0cywgYnV0dG9ucyB9ID0gcHJvcHM7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgdGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIGltZ3M6IHRoaXMuZ2V0QXJyYXlJbWFnZVJlc3BvbnNpdmUobXVsdGltZWRpYT8uaW1hZ2VuZXMpLFxuICAgICAgICAgICAgaXRlbXM6IEl0ZW1zPy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS50aXRsZSxcbiAgICAgICAgICAgICAgICBjb250ZW50OiBpdGVtLnRleHQsXG4gICAgICAgICAgICB9KSksXG4gICAgICAgICAgICBhcHBsaWNhdGlvbkJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBidXR0b25zKVswXSxcbiAgICAgICAgICAgIHZpZXc6IHRoaXMuZ2V0Vmlldyh2aWV3KSxcbiAgICAgICAgICAgIGNvbnRhY3RCdXR0b246IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgYnV0dG9ucylbMV0sXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRleHRDb2xvcnM6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogdGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGlkZW50aWZpZXI6IGlkZW50aWZpZXIsXG4gICAgICAgIH0gYXMgUHVyb0ZhcXNJbWdJO1xuICAgIH1cblxuICAgIG1hcEJsb2dMaXN0KHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBQdXJvQmxvZ0xpc3RJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgbGV0IHBvc3RzID0gcHJvcHM/LnBvc3RzPy5tYXAoKHBvc3Q6IGFueSkgPT4gKHtcbiAgICAgICAgICAgIGlkOiBwb3N0Py5pZCxcbiAgICAgICAgICAgIHRpdGxlOiBwb3N0Py50ZXh0cz8udGl0bGUgPz8gcG9zdD8udHJhbnNsYXRpb25zPy5bMF0/LnRpdGxlLFxuICAgICAgICAgICAgc3VidGl0bGU6XG4gICAgICAgICAgICAgICAgcG9zdD8udGV4dHM/LnN1YnRpdGxlID8/IHBvc3Q/LnRyYW5zbGF0aW9ucz8uWzBdPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgICAgICAgIHBvc3Q/LnRleHRzPy5kZXNjcmlwdGlvbiA/P1xuICAgICAgICAgICAgICAgIHBvc3Q/LnRyYW5zbGF0aW9ucz8uWzBdPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUocG9zdD8ubXVsdGltZWRpYT8uWzBdKSA/PyB7XG4gICAgICAgICAgICAgICAgc3JjOiAnaHR0cHM6Ly9wdXJvLWFwaS1kZXYuYi1jZG4ubmV0L211bHRpbWVkaWEvaW1hZ2VzL3RodW1ibmFpbHMvMTI4MC8yMDNDYXB0dXJhLTIwZGUtMjBwYW50YWxsYS0yMDIwMTctMDQtMjQtMjBhLTIwbGFzLTIwMTktNDUtNTYtcG5nLndlYnAnLFxuICAgICAgICAgICAgICAgIGFsdDogcG9zdD8udGV4dHM/LnRpdGxlID8/IHBvc3Q/LnRyYW5zbGF0aW9ucz8uWzBdPy50aXRsZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIHBvc3Q/LmJ1dHRvbnMpLFxuICAgICAgICAgICAgcG9zdFVybDogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBwb3N0Py5idXR0b25zKT8uWzBdLFxuICAgICAgICAgICAgY2F0ZWdvcnk6IHBvc3Q/LmNhdGVnb3J5LnRyYW5zbGF0aW9ucz8uWzBdPy50aXRsZSxcbiAgICAgICAgICAgIGRhdGU6IHBvc3Q/LmRhdGUgPyBuZXcgRGF0ZShwb3N0LmRhdGUpIDogbmV3IERhdGUocG9zdC5jcmVhdGVkQXQpLFxuICAgICAgICB9KSk7XG5cbiAgICAgICAgcG9zdHMgPSBwb3N0cy5zb3J0KChhOiBhbnksIGI6IGFueSkgPT4ge1xuICAgICAgICAgICAgaWYgKGEuZGF0ZSAmJiBiLmRhdGUpIHJldHVybiBiLmRhdGUgLSBhLmRhdGU7IC8vIGFtYm9zIGNvbiBmZWNoYVxuICAgICAgICAgICAgaWYgKGEuZGF0ZSAmJiAhYi5kYXRlKSByZXR1cm4gLTE7IC8vIGEgdGllbmUgZmVjaGEsIGIgbm9cbiAgICAgICAgICAgIGlmICghYS5kYXRlICYmIGIuZGF0ZSkgcmV0dXJuIDE7IC8vIGIgdGllbmUgZmVjaGEsIGEgbm9cbiAgICAgICAgICAgIHJldHVybiAwOyAvLyBuaW5ndW5vIHRpZW5lIGZlY2hhXG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIE9idGVuZXIgbG9zIDQgcG9zdHMgbcOhcyByZWNpZW50ZXNcbiAgICAgICAgY29uc3QgbGF0ZXN0UG9zdHMgPSBwb3N0cz8uc2xpY2UoMCwgNCk7XG5cbiAgICAgICAgY29uc3QgY2F0ZWdvcmllcyA9IEFycmF5LmlzQXJyYXkocHJvcHM/LnBvc3RDYXRlZ29yaWVzKVxuICAgICAgICAgICAgPyBwcm9wcy5wb3N0Q2F0ZWdvcmllc1xuICAgICAgICAgICAgOiBPYmplY3QudmFsdWVzKHByb3BzPy5wb3N0Q2F0ZWdvcmllcyB8fCB7fSk7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHByZXRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnByZXRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8ucHJldGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIGNhdGVnb3JpZXNUaXRsZTogcHJvcHM/LnRleHRzPy5jYXRlZ29yaWVzPy50YWcsXG4gICAgICAgICAgICAgICAgbGF0ZXN0UG9zdHNUaXRsZTogcHJvcHM/LnRleHRzPy5sYXRlc3RFbnRyaWVzPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgIGNhdGVnb3JpZXNUaXRsZTogcHJvcHM/LnRleHRzPy5jYXRlZ29yaWVzPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgIGxhdGVzdFBvc3RzVGl0bGU6IHByb3BzPy50ZXh0cz8ubGF0ZXN0RW50cmllcz8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzZWFyY2hQbGFjZUhvbGRlcjogcHJvcHM/LnRleHRzPy5zZWFyY2hQbGFjZUhvbGRlcixcbiAgICAgICAgICAgIG5vdGZvdW5kVGV4dDogcHJvcHM/LnRleHRzPy5zZWFyY2hOb3RGb3VuZCxcbiAgICAgICAgICAgIHBvc3RzOiBwb3N0cyxcbiAgICAgICAgICAgIGNhdGVnb3JpZXNUaXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5jYXRlZ29yaWVzID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8uY2F0ZWdvcmllc1xuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8uY2F0ZWdvcmllcz8uY29udGFpbixcbiAgICAgICAgICAgIGNhdGVnb3JpZXM6XG4gICAgICAgICAgICAgICAgY2F0ZWdvcmllcy5tYXAoKGNhdGVnb3J5OiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBjYXRlZ29yeT8uaWQsXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBjYXRlZ29yeT8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgcG9zdHM6IGNhdGVnb3J5Py50b3RhbFBvc3RzLFxuICAgICAgICAgICAgICAgIH0pKSA/PyBbXSxcbiAgICAgICAgICAgIGxhdGVzdFBvc3RzVGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8ubGF0ZXN0RW50cmllcyA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LmxhdGVzdEVudHJpZXNcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LmxhdGVzdEVudHJpZXM/LmNvbnRhaW4sXG4gICAgICAgICAgICBsYXRlc3RQb3N0czogbGF0ZXN0UG9zdHMsXG4gICAgICAgICAgICBhbnRlcmlvcjogcHJvcHM/LnRleHRzPy5hbnRlcmlvcixcbiAgICAgICAgICAgIHNpZ3VpZW50ZTogcHJvcHM/LnRleHRzPy5zaWd1aWVudGUsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgbWFwQmxvZ1Bvc3QocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9CbG9nRGV0YWlsc0kgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCBjdXJyZW50UG9zdElkID0gcHJvcHM/LnBvc3Q/LmlkO1xuICAgICAgICBjb25zdCBwb3N0cyA9IHByb3BzPy5yZWxhdGVkUG9zdHM/Lm1hcCgocG9zdDogYW55KSA9PiAoe1xuICAgICAgICAgICAgaWQ6IHBvc3Q/LmlkLFxuICAgICAgICAgICAgdGl0bGU6IHBvc3Q/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIHN1YnRpdGxlOiBwb3N0Py50ZXh0cz8uc3VidGl0bGUsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogcG9zdD8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShwb3N0Py5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdKSxcbiAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgcG9zdD8uYnV0dG9ucyksXG4gICAgICAgICAgICBwb3N0VXJsOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIHBvc3Q/LmJ1dHRvbnMpPy5bMF0sXG4gICAgICAgICAgICBjYXRlZ29yeTogcG9zdD8uY2F0ZWdvcnksXG4gICAgICAgICAgICBkYXRlOiBwb3N0Py5kYXRlID8gbmV3IERhdGUocG9zdC5kYXRlKSA6IHVuZGVmaW5lZCxcbiAgICAgICAgfSkpO1xuXG4gICAgICAgIGNvbnN0IGNhbmRpZGF0ZXMgPSAocG9zdHMgfHwgW10pLmZpbHRlcihcbiAgICAgICAgICAgIChwOiBhbnkpID0+IHA/LmlkICE9PSBjdXJyZW50UG9zdElkXG4gICAgICAgICk7XG5cbiAgICAgICAgbGV0IHJlbGF0ZWRQb3N0c0NvbnN0ID1cbiAgICAgICAgICAgIGNhbmRpZGF0ZXNcbiAgICAgICAgICAgICAgICAuZmlsdGVyKChwOiBhbnkpID0+IHA/LmRhdGUpXG4gICAgICAgICAgICAgICAgLnNvcnQoKGE6IGFueSwgYjogYW55KSA9PiAoYi5kYXRlIGFzIGFueSkgLSAoYS5kYXRlIGFzIGFueSkpXG4gICAgICAgICAgICAgICAgLnNsaWNlKDAsIDQpIHx8IFtdO1xuICAgICAgICBpZiAocmVsYXRlZFBvc3RzQ29uc3QubGVuZ3RoIDwgNCkge1xuICAgICAgICAgICAgY29uc3Qgd2l0aG91dERhdGUgPSBjYW5kaWRhdGVzLmZpbHRlcigocDogYW55KSA9PiAhcD8uZGF0ZSk7XG4gICAgICAgICAgICByZWxhdGVkUG9zdHNDb25zdCA9IHJlbGF0ZWRQb3N0c0NvbnN0LmNvbmNhdChcbiAgICAgICAgICAgICAgICB3aXRob3V0RGF0ZS5zbGljZSgwLCA0IC0gcmVsYXRlZFBvc3RzQ29uc3QubGVuZ3RoKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGNhdGVnb3JpZXMgPSBBcnJheS5pc0FycmF5KHByb3BzPy5wb3N0Q2F0ZWdvcmllcylcbiAgICAgICAgICAgID8gcHJvcHMucG9zdENhdGVnb3JpZXNcbiAgICAgICAgICAgIDogT2JqZWN0LnZhbHVlcyhwcm9wcz8ucG9zdENhdGVnb3JpZXMgfHwge30pO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnBvc3Q/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIHN1YnRpdGxlOiBwcm9wcz8ucG9zdD8udGV4dHM/LnN1YnRpdGxlLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHByb3BzPy5wb3N0Py50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBhZGRpdGlvbmFsMTogcHJvcHM/LnBvc3Q/LnRleHRzPy5hZGRpdGlvbmFsMSxcbiAgICAgICAgICAgIGFkZGl0aW9uYWwyOiBwcm9wcz8ucG9zdD8udGV4dHM/LmFkZGl0aW9uYWwyLFxuICAgICAgICAgICAgYWRkaXRpb25hbDM6IHByb3BzPy5wb3N0Py50ZXh0cz8uYWRkaXRpb25hbDMsXG4gICAgICAgICAgICBhZGRpdGlvbmFsNDogcHJvcHM/LnBvc3Q/LnRleHRzPy5hZGRpdGlvbmFsNCxcbiAgICAgICAgICAgIGRhdGU6IHByb3BzPy5wb3N0Py5kYXRlID8gbmV3IERhdGUocHJvcHM/LnBvc3Q/LmRhdGUpIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgY2F0ZWdvcnk6IHByb3BzPy5wb3N0Py5jYXRlZ29yeSxcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgY2F0ZWdvcmllc1RpdGxlOiBwcm9wcz8udGV4dHM/LmNhdGVnb3JpZXM/LnRhZyxcbiAgICAgICAgICAgICAgICBsYXRlc3RQb3N0c1RpdGxlOiBwcm9wcz8udGV4dHM/LmxhdGVzdEVudHJpZXM/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICAgICAgY2F0ZWdvcmllc1RpdGxlOiBwcm9wcz8udGV4dHM/LmNhdGVnb3JpZXM/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICAgICAgbGF0ZXN0UG9zdHNUaXRsZTogcHJvcHM/LnRleHRzPy5sYXRlc3RFbnRyaWVzPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNlYXJjaFBsYWNlSG9sZGVyOiBwcm9wcz8udGV4dHM/LnNlYXJjaFBsYWNlSG9sZGVyLFxuICAgICAgICAgICAgY2F0ZWdvcmllc1RpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LmNhdGVnb3JpZXMgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5jYXRlZ29yaWVzXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5jYXRlZ29yaWVzPy5jb250YWluLFxuICAgICAgICAgICAgY2F0ZWdvcmllczogY2F0ZWdvcmllcy5tYXAoKGNhdGVnb3J5OiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgaWQ6IGNhdGVnb3J5Py5pZCxcbiAgICAgICAgICAgICAgICB0aXRsZTogY2F0ZWdvcnk/Lm5hbWUsXG4gICAgICAgICAgICAgICAgcG9zdHM6IGNhdGVnb3J5Py50b3RhbF9wb3N0cyxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIHJlbGF0ZWRQb3N0c1RpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LmxhdGVzdEVudHJpZXMgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5sYXRlc3RFbnRyaWVzXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5sYXRlc3RFbnRyaWVzPy5jb250YWluLFxuICAgICAgICAgICAgcmVsYXRlZFBvc3RzOiByZWxhdGVkUG9zdHNDb25zdCxcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBwcm9wcz8uYnV0dG9ucyk/LlswXSxcbiAgICAgICAgICAgIHNoYXJlOiBwcm9wcz8udGV4dHM/LnNoYXJlLFxuICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ucG9zdD8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXVxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBQdXJvQmxvZ0RldGFpbHNJO1xuICAgIH1cblxuICAgIG1hcEJhbm5lclNsaWRlcihwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0Jhbm5lclNsaWRlckkgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaXRlbXM6IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8ubWFwKChpbWc6IEltYWdlUmVzcG9uc2UpID0+ICh7XG4gICAgICAgICAgICAgICAgdGl0bGU6IGltZy50aXRsZSxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaW1nLmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaW1nKSxcbiAgICAgICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgaW1nLmJ1dHRvbnMpWzBdLFxuICAgICAgICAgICAgfSkpLFxuICAgICAgICB9IGFzIFB1cm9CYW5uZXJTbGlkZXJJO1xuICAgIH1cbiAgICAvL1RPRE86IENoZWNrIGJhY2sgcHJvcHNcbiAgICBtYXBNb2RhbE9wdGlvbnMocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9Nb2RhbE9wdGlvbnNJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8uaXRlbXM/Lm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpdGVtLmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaXRlbS5tdWx0aW1lZGlhPy5pbWFnZT8uWzBdKSxcbiAgICAgICAgICAgICAgICBsaW5rOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIGl0ZW0ubGlua3MpWzBdLFxuICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIHByb3BzPy5idXR0b25zKVswXSxcbiAgICAgICAgfSBhcyBQdXJvTW9kYWxPcHRpb25zSTtcbiAgICB9XG5cbiAgICAvL1RPRE86IENoZWNrIGJhY2sgcHJvcHNcbiAgICBtYXBJbm5lckNvbnRlbnQocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9Jbm5lckNvbnRlbnRJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNvbnRlbnQ6IHByb3BzPy50ZXh0cz8uY29udGVudCxcbiAgICAgICAgfSBhcyBQdXJvSW5uZXJDb250ZW50STtcbiAgICB9XG5cbiAgICBtYXBUaW1lbGluZShwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb1RpbWVsaW5lSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHByZXRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnByZXRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8ucHJldGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBpdGVtczogcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5tYXAoKGltZzogSW1hZ2VSZXNwb25zZSkgPT4gKHtcbiAgICAgICAgICAgICAgICB5ZWFyOiBpbWcudGl0bGUsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGltZy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGltZyksXG4gICAgICAgICAgICB9KSksXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRleHRDb2xvcnM6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0gYXMgUHVyb1RpbWVsaW5lSTtcbiAgICB9XG5cbiAgICBtYXBIZWFkSW50cm8ocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IFB1cm9IZWFkSW50cm9JIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGUsXG4gICAgICAgICAgICBzdWJ0aXRsZTogcHJvcHM/LnRleHRzPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICB0aGlzLnNpdGVJZCgpLFxuICAgICAgICAgICAgICAgIHByb3BzPy5idXR0b25zPy5maWx0ZXIoKGJ0bjogYW55KSA9PiAhIWJ0bj8ubGlua1ZhbHVlKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBQdXJvSGVhZEludHJvSTtcbiAgICB9XG5cbiAgICBtYXBDYXJlZXJzRm9ybShwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0NhcmVlcnNGb3JtSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IHByZWZpeFZhbHVlcyA9IE9iamVjdC52YWx1ZXMocHJvcHM/LnByZWZpeGVzIHx8IHt9KSBhcyBzdHJpbmdbXTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHlkVGl0bGU6IHByb3BzPy50ZXh0cz8ueWR0aXRsZSxcbiAgICAgICAgICAgIG9kVGl0bGU6IHByb3BzPy50ZXh0cz8ub2R0aXRsZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgY29uZGl0aW9uc0xpbms6IHByb3BzPy50ZXh0cz8uY29uZGl0aW9uc2xpbmssXG4gICAgICAgICAgICBvdGhlcnM6IHByb3BzPy50ZXh0cz8ub3RoZXJzLFxuICAgICAgICAgICAgcmVxdWlyZWRMYWJlbDogcHJvcHM/LnRleHRzPy5yZXF1aXJlZExhYmVsLFxuICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXSksXG4gICAgICAgICAgICBhcHBseUJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBwcm9wcz8uYnV0dG9ucylbMF0sXG4gICAgICAgICAgICBzZWVBbGxCdXR0b246IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgcHJvcHM/LmJ1dHRvbnMpWzFdLFxuICAgICAgICAgICAgd3dUZXh0YXJlYToge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/Lnd3VGV4dGFyZWEsXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6XG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8ud3dUZXh0YXJlYSA/P1xuICAgICAgICAgICAgICAgICAgICAnV2Ugd291bGQgbG92ZSB0byBrbm93IG1vcmUgYWJvdXQgeW91LCBwbGVhc2Ugc2hhcmUgeW91ciBjb3ZlciBsZXR0ZXInLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgICAgICB2YWxpZDogc2lnbmFsKHRydWUpLFxuICAgICAgICAgICAgICAgIG5hbWU6ICd3d1RleHRhcmVhJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB3bERyb3Bkb3duOiB7XG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6XG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8ud2xEcm9wZG93biA/P1xuICAgICAgICAgICAgICAgICAgICAnV2hpY2ggbG9jYXRpb24gd291bGQgeW91IGxpa2UgdG8gYXBwbHkgZm9yPycsXG4gICAgICAgICAgICAgICAgb3B0aW9uczogcHJvcHM/LmNvbnN1bHRUeXBlcz8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAocHJvcDogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgKHsgY29kZTogcHJvcD8uaWQsIG5hbWU6IHByb3A/Lm5hbWUgfSkgYXMgRHJvcGRvd25PcHRpb25cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHdwRHJvcGRvd246IHtcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjpcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy53cERyb3Bkb3duID8/XG4gICAgICAgICAgICAgICAgICAgICdXaGljaCBwb3NpdGlvbiB3b3VsZCB5b3UgbGlrZSB0byBhcHBseSBmb3I/JyxcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBwcm9wcz8uY29uc3VsdFR5cGVzPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChwcm9wOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoeyBjb2RlOiBwcm9wPy5pZCwgbmFtZTogcHJvcD8ubmFtZSB9KSBhcyBEcm9wZG93bk9wdGlvblxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYW9Ecm9wZG93bjoge1xuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOlxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmFvRHJvcGRvd24gPz9cbiAgICAgICAgICAgICAgICAgICAgJ0FueSBvdGhlciBsb2NhdGlvbiB0aGF0IHlvdSBtaWdodCBiZSBpbnRlcmVzdGVkIGluIHdvcmtpbmcgYXQ/JyxcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBwcm9wcz8uY29uc3VsdFR5cGVzPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChwcm9wOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoeyBjb2RlOiBwcm9wPy5pZCwgbmFtZTogcHJvcD8ubmFtZSB9KSBhcyBEcm9wZG93bk9wdGlvblxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgd2xhbmdEcm9wZG93bjoge1xuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOlxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LndsYW5nRHJvcGRvd24gPz9cbiAgICAgICAgICAgICAgICAgICAgJ1doaWNoIGxhbmd1YWdlcyBkbyB5b3Ugc3BlYWs/JyxcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBwcm9wcz8uY29uc3VsdFR5cGVzPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChwcm9wOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoeyBjb2RlOiBwcm9wPy5pZCwgbmFtZTogcHJvcD8ubmFtZSB9KSBhcyBEcm9wZG93bk9wdGlvblxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaGREcm9wZG93bjoge1xuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOlxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmhkRHJvcGRvd24gPz9cbiAgICAgICAgICAgICAgICAgICAgJ0hvdyBkaWQgeW91IGhlYXIgYWJvdXQgUHVybyBHcm91cD8nLFxuICAgICAgICAgICAgICAgIG9wdGlvbnM6IHByb3BzPy5jb25zdWx0VHlwZXM/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgKHByb3A6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7IGNvZGU6IHByb3A/LmlkLCBuYW1lOiBwcm9wPy5uYW1lIH0pIGFzIERyb3Bkb3duT3B0aW9uXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwcmVmaXg6IHtcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBwcmVmaXhWYWx1ZXMubWFwKFxuICAgICAgICAgICAgICAgICAgICAocHJlZml4OiBzdHJpbmcsIGluZGV4OiBudW1iZXIpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGU6IGluZGV4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHByZWZpeCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIERyb3Bkb3duT3B0aW9uXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5wcmVmaXhlcyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBuYW1lSW5wdXQ6IHtcbiAgICAgICAgICAgICAgICBuYW1lOlxuICAgICAgICAgICAgICAgICAgICBVdGlscy5ub3JtYWxpemVDb250cm9sTmFtZShcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uaW5wdXROYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ25hbWUnXG4gICAgICAgICAgICAgICAgICAgICkgPz8gJ0ZpcnN0IG5hbWUnLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LmlucHV0TmFtZSA/PyAnRmlyc3QgbmFtZScsXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5lcnJvck5hbWUsXG4gICAgICAgICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgIHZhbGlkOiBzaWduYWwodHJ1ZSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc3VybmFtZUlucHV0OiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8uc3VybmFtZXMsXG4gICAgICAgICAgICAgICAgbmFtZTpcbiAgICAgICAgICAgICAgICAgICAgVXRpbHMubm9ybWFsaXplQ29udHJvbE5hbWUoXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LnN1cm5hbWVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3N1cm5hbWUnXG4gICAgICAgICAgICAgICAgICAgICkgPz8gJ0xhc3QgbmFtZScsXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uc3VybmFtZXMgPz8gJ0xhc3QgbmFtZScsXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5lcnJvck5hbWUsXG4gICAgICAgICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgIHZhbGlkOiBzaWduYWwodHJ1ZSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZW1haWxJbnB1dDoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LmlucHV0RW1haWwgPz8gJ2VtYWlsJyxcbiAgICAgICAgICAgICAgICBuYW1lOlxuICAgICAgICAgICAgICAgICAgICBVdGlscy5ub3JtYWxpemVDb250cm9sTmFtZShcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uaW5wdXRFbWFpbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICdlbWFpbCdcbiAgICAgICAgICAgICAgICAgICAgKSA/PyAnZW1haWwnLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LmlucHV0RW1haWwgPz8gJ0VtYWlsIGFkZHJlc3MnLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgICAgICB0eXBlOiAnZW1haWwnLFxuICAgICAgICAgICAgICAgIGVycm9yOiBwcm9wcz8udGV4dHM/LmVycm9yRW1haWwsXG4gICAgICAgICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMuZW1haWwsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgIHZhbGlkOiBzaWduYWwodHJ1ZSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY29uZmlybUVtYWlsSW5wdXQ6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5pbnB1dEVtYWlsID8/ICdlbWFpbCAyJyxcbiAgICAgICAgICAgICAgICBuYW1lOlxuICAgICAgICAgICAgICAgICAgICBVdGlscy5ub3JtYWxpemVDb250cm9sTmFtZShcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uaW5wdXRFbWFpbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICdlbWFpbGMnXG4gICAgICAgICAgICAgICAgICAgICkgPz8gJ2VtYWlsIDInLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LmlucHV0RW1haWwgPz8gJ0NvbmZpcm0geW91ciBlbWFpbCcsXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgIHR5cGU6ICdlbWFpbCcsXG4gICAgICAgICAgICAgICAgZXJyb3I6IHByb3BzPy50ZXh0cz8uZXJyb3JFbWFpbCxcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5lbWFpbCwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHNpZ25hbCh0cnVlKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwaG9uZUlucHV0OiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8uaW5wdXRQaG9uZSA/PyAncGhvbmUnLFxuICAgICAgICAgICAgICAgIG5hbWU6XG4gICAgICAgICAgICAgICAgICAgIFV0aWxzLm5vcm1hbGl6ZUNvbnRyb2xOYW1lKFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5pbnB1dFBob25lLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3Bob25lJ1xuICAgICAgICAgICAgICAgICAgICApID8/ICdwaG9uZScsXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uaW5wdXRQaG9uZSA/PyAnVGVsw6lmb25vJyxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgdHlwZTogJ3RlbCcsXG4gICAgICAgICAgICAgICAgZXJyb3I6IHByb3BzPy50ZXh0cz8uZXJyb3JQaG9uZSxcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHNpZ25hbCh0cnVlKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBmaWxlc0lucHV0OiB7XG4gICAgICAgICAgICAgICAgbmFtZTpcbiAgICAgICAgICAgICAgICAgICAgVXRpbHMubm9ybWFsaXplQ29udHJvbE5hbWUoXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmZpbGVzSW5wdXQsXG4gICAgICAgICAgICAgICAgICAgICAgICAnYWRkaXRpb25hbEZpbGVzJ1xuICAgICAgICAgICAgICAgICAgICApID8/ICdhZGRpdGlvbmFsRmlsZXMnLFxuICAgICAgICAgICAgICAgIHR5cGU6IHByb3BzPy50ZXh0cz8uZmlsZXNJbnB1dCA/PyAnQWRkaXRpb25hbCBmaWxlcycsXG4gICAgICAgICAgICAgICAgbGFiZWw6IHByb3BzPy50ZXh0cz8uZmlsZXNJbnB1dCxcbiAgICAgICAgICAgICAgICB2YWx1ZTogbnVsbCBhcyBGaWxlIHwgRmlsZVtdIHwgbnVsbCB8IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICB2YWxpZDogc2lnbmFsKHRydWUpLFxuICAgICAgICAgICAgICAgIC8vIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjdklucHV0OiB7XG4gICAgICAgICAgICAgICAgbmFtZTpcbiAgICAgICAgICAgICAgICAgICAgVXRpbHMubm9ybWFsaXplQ29udHJvbE5hbWUocHJvcHM/LnRleHRzPy5jdklucHV0LCAnY3YnKSA/P1xuICAgICAgICAgICAgICAgICAgICAnY3YnLFxuICAgICAgICAgICAgICAgIHR5cGU6IHByb3BzPy50ZXh0cz8uY3ZJbnB1dCxcbiAgICAgICAgICAgICAgICBsYWJlbDogcHJvcHM/LnRleHRzPy5jdklucHV0ID8/ICdVcGxvYWQgeW8gdXIgQ1YgaGVyZScsXG4gICAgICAgICAgICAgICAgdmFsdWU6IG51bGwgYXMgRmlsZSB8IEZpbGVbXSB8IG51bGwgfCB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHNpZ25hbCh0cnVlKSxcbiAgICAgICAgICAgICAgICAvLyB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICB9LFxuICAgICAgICB9IGFzIFB1cm9DYXJlZXJzRm9ybUk7XG4gICAgfVxuXG4gICAgbWFwRXZlbnRzRm9ybShwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0V2ZW50c0Zvcm1JIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgcHJlZml4VmFsdWVzID0gT2JqZWN0LnZhbHVlcyhwcm9wcz8ucHJlZml4ZXMgfHwge30pIGFzIHN0cmluZ1tdO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIGNpVGl0bGU6IHByb3BzPy50ZXh0cz8uY2l0aXRsZSxcbiAgICAgICAgICAgIGRUaXRsZTogcHJvcHM/LnRleHRzPy5kdGl0bGUsXG4gICAgICAgICAgICBob3dUaXRsZTogcHJvcHM/LnRleHRzPy5ob3dUaXRsZSxcbiAgICAgICAgICAgIG90aGVyczogcHJvcHM/LnRleHRzPy5vdGhlcnMsXG4gICAgICAgICAgICBjb25kaXRpb25zTGluazogcHJvcHM/LnRleHRzPy5jb25kaXRpb25zbGluayxcbiAgICAgICAgICAgIHJlcXVpcmVkTGFiZWw6IHByb3BzPy50ZXh0cz8ucmVxdWlyZWRMYWJlbCxcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRleHRDb2xvcnM6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdKSxcbiAgICAgICAgICAgIGFwcGx5QnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHRoaXMuc2l0ZUlkKCksIHByb3BzPy5idXR0b25zKVswXSxcbiAgICAgICAgICAgIHNlZUFsbEJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyh0aGlzLnNpdGVJZCgpLCBwcm9wcz8uYnV0dG9ucylbMV0sXG4gICAgICAgICAgICBob3dUZXh0YXJlYToge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/Lmhvd1RpdGxlLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/Lmhvd1RpdGxlLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgICAgICB2YWxpZDogc2lnbmFsKHRydWUpLFxuICAgICAgICAgICAgICAgIG5hbWU6ICdob3dNZXNzYWdlJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBpbmZvVGV4dGFyZWE6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5pbmZvVGl0bGUsXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uaW5mb1RpdGxlLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgICAgICB2YWxpZDogc2lnbmFsKHRydWUpLFxuICAgICAgICAgICAgICAgIG5hbWU6ICdpbmZvTWVzc2FnZScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbmVEcm9wZG93bjoge1xuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/Lm5lRHJvcGRvd24sXG4gICAgICAgICAgICAgICAgb3B0aW9uczogcHJvcHM/Lm5hdHVyZT8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAocHJvcDogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgKHsgY29kZTogcHJvcD8uaWQsIG5hbWU6IHByb3A/Lm5hbWUgfSkgYXMgRHJvcGRvd25PcHRpb25cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG90aGVyc0Ryb3Bkb3duOiB7XG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8ub3RoZXJzRHJvcGRvd24sXG4gICAgICAgICAgICAgICAgb3B0aW9uczogcHJvcHM/Lmhvd0hlYXJkVXM/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgKHByb3A6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7IGNvZGU6IHByb3A/LmlkLCBuYW1lOiBwcm9wPy5uYW1lIH0pIGFzIERyb3Bkb3duT3B0aW9uXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwcmVmaXg6IHtcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBwcmVmaXhWYWx1ZXMubWFwKFxuICAgICAgICAgICAgICAgICAgICAocHJlZml4OiBzdHJpbmcsIGluZGV4OiBudW1iZXIpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGU6IGluZGV4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHByZWZpeCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIERyb3Bkb3duT3B0aW9uXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5wcmVmaXhlcyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBuYW1lSW5wdXQ6IHtcbiAgICAgICAgICAgICAgICBuYW1lOiBVdGlscy5ub3JtYWxpemVDb250cm9sTmFtZShcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5uYW1lVGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICduYW1lJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8ubmFtZVRpdGxlLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgICAgZXJyb3I6IHByb3BzPy50ZXh0cz8ubmFtZUVycm9yLFxuICAgICAgICAgICAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgICAgICB2YWxpZDogc2lnbmFsKHRydWUpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHN1cm5hbWVJbnB1dDoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnN1cm5hbWVzVGl0bGUsXG4gICAgICAgICAgICAgICAgbmFtZTogVXRpbHMubm9ybWFsaXplQ29udHJvbE5hbWUoXG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uc3VybmFtZXNUaXRsZSxcbiAgICAgICAgICAgICAgICAgICAgJ3N1cm5hbWUnXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5zdXJuYW1lc1RpdGxlLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgICAgZXJyb3I6IHByb3BzPy50ZXh0cz8uc3VybmFtZXNFcnJvcixcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHNpZ25hbCh0cnVlKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlbWFpbElucHV0OiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8uZW1haWxUaXRsZSxcbiAgICAgICAgICAgICAgICBuYW1lOiBVdGlscy5ub3JtYWxpemVDb250cm9sTmFtZShcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5lbWFpbFRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAnZW1haWwnXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5lbWFpbFRpdGxlLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgICAgICB0eXBlOiAnZW1haWwnLFxuICAgICAgICAgICAgICAgIGVycm9yOiBwcm9wcz8udGV4dHM/LmVtYWlsRXJyb3IsXG4gICAgICAgICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMuZW1haWwsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgIHZhbGlkOiBzaWduYWwodHJ1ZSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY29tcGFueU5hbWVJbnB1dDoge1xuICAgICAgICAgICAgICAgIG5hbWU6IFV0aWxzLm5vcm1hbGl6ZUNvbnRyb2xOYW1lKFxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmNvbXBhbnlUaXRsZSxcbiAgICAgICAgICAgICAgICAgICAgJ2NvbXBhbnlOYW1lJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uY29tcGFueVRpdGxlLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgICAgZXJyb3I6IHByb3BzPy50ZXh0cz8uY29tcGFueUVycm9yLFxuICAgICAgICAgICAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgICAgICB2YWxpZDogc2lnbmFsKHRydWUpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHBob25lSW5wdXQ6IHtcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5waG9uZVRpdGxlLFxuICAgICAgICAgICAgICAgIG5hbWU6IFV0aWxzLm5vcm1hbGl6ZUNvbnRyb2xOYW1lKFxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LnBob25lVGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICdwaG9uZSdcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LnBob25lVGl0bGUsXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgIHR5cGU6ICd0ZWwnLFxuICAgICAgICAgICAgICAgIGVycm9yOiBwcm9wcz8udGV4dHM/LnBob25lRXJyb3IsXG4gICAgICAgICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgIHZhbGlkOiBzaWduYWwodHJ1ZSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbnBJbnB1dDoge1xuICAgICAgICAgICAgICAgIG5hbWU6IFV0aWxzLm5vcm1hbGl6ZUNvbnRyb2xOYW1lKFxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/Lm5wVGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICducFRpdGxlJ1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8ubnBUaXRsZSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICAgIGVycm9yOiBwcm9wcz8udGV4dHM/Lm5wRXJyb3IsXG4gICAgICAgICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgIHZhbGlkOiBzaWduYWwodHJ1ZSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZGF0ZUlucHV0OiB7XG4gICAgICAgICAgICAgICAgbmFtZTogVXRpbHMubm9ybWFsaXplQ29udHJvbE5hbWUoXG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uZGF0ZVRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAnZGF0ZSdcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LmRhdGVUaXRsZSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICAgIGVycm9yOiBwcm9wcz8udGV4dHM/LmRhdGVFcnJvcixcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHNpZ25hbCh0cnVlKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzSG91cklucHV0OiB7XG4gICAgICAgICAgICAgICAgbmFtZTogVXRpbHMubm9ybWFsaXplQ29udHJvbE5hbWUoXG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uc0hvdXJUaXRsZSxcbiAgICAgICAgICAgICAgICAgICAgJ3N0YXJ0SG91cidcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LnNIb3VyVGl0bGUsXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5zSG91ckVycm9yLFxuICAgICAgICAgICAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgICAgICB2YWxpZDogc2lnbmFsKHRydWUpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGZIb3VySW5wdXQ6IHtcbiAgICAgICAgICAgICAgICBuYW1lOiBVdGlscy5ub3JtYWxpemVDb250cm9sTmFtZShcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5mSG91clRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAnZW5kSG91cidcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LmZIb3VyVGl0bGUsXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5mSG91ckVycm9yLFxuICAgICAgICAgICAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgICAgICB2YWxpZDogc2lnbmFsKHRydWUpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHR5cGVFdmVudElucHV0OiB7XG4gICAgICAgICAgICAgICAgbmFtZTogVXRpbHMubm9ybWFsaXplQ29udHJvbE5hbWUoXG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8ubmVEcm9wZG93bixcbiAgICAgICAgICAgICAgICAgICAgJ2V2ZW50VHlwZSdcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/Lm5lRHJvcGRvd24sXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5uYW1lRXJyb3IsXG4gICAgICAgICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgIHZhbGlkOiBzaWduYWwodHJ1ZSksXG4gICAgICAgICAgICB9LFxuICAgICAgICB9IGFzIFB1cm9FdmVudHNGb3JtSTtcbiAgICB9XG5cbiAgICAvL1RPRE86IENoZWNrIGJhY2sgcHJvcHNcbiAgICBtYXBNb2RhbEluZm8oXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWQsXG4gICAgICAgIHJldmVyc2U6IGJvb2xlYW5cbiAgICApOiBQdXJvTW9kYWxJbmZvSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIHN1YnRpdGxlOiBwcm9wcz8udGV4dHM/LnN1YnRpdGxlLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBleHRyYURlc2NyaXB0aW9uOiBwcm9wcz8udGV4dHM/LmV4dHJhRGVzY3JpcHRpb24sXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnModGhpcy5zaXRlSWQoKSwgcHJvcHM/LmJ1dHRvbnMpWzBdLFxuICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2U/LlswXSksXG4gICAgICAgICAgICByZXZlcnNlLFxuICAgICAgICB9IGFzIFB1cm9Nb2RhbEluZm9JO1xuICAgIH1cblxuICAgIG1hcElmcmFtZShwcm9wczogYW55IHwgdW5kZWZpbmVkKTogUHVyb0lmcmFtZUkgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZnJhbWVVcmw6IHByb3BzPy50ZXh0cz8uZnJhbWVVcmwsXG4gICAgICAgIH0gYXMgUHVyb0lmcmFtZUk7XG4gICAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEltYWdlUmVzcG9uc2Uge1xuICAgIHBhdGg6IEltYWdlUmVzcG9uc2VQYXRoO1xuICAgIHRodW1ibmFpbHM6IHtcbiAgICAgICAgMzc1OiBJbWFnZVJlc3BvbnNlUGF0aDtcbiAgICAgICAgNTQwOiBJbWFnZVJlc3BvbnNlUGF0aDtcbiAgICAgICAgNzY4OiBJbWFnZVJlc3BvbnNlUGF0aDtcbiAgICAgICAgODAwOiBJbWFnZVJlc3BvbnNlUGF0aDtcbiAgICAgICAgMTAyNDogSW1hZ2VSZXNwb25zZVBhdGg7XG4gICAgICAgIDEyODA6IEltYWdlUmVzcG9uc2VQYXRoO1xuICAgIH07XG4gICAgY292ZXI6IG51bWJlcjtcbiAgICB0YWdzPzogYW55W107XG4gICAgdGl0bGU/OiBzdHJpbmc7XG4gICAgcHJldGl0bGU/OiBzdHJpbmc7XG4gICAgc3VidGl0bGU/OiBzdHJpbmc7XG4gICAgbmRUaXRsZT86IHN0cmluZztcbiAgICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgICBsaW5rcz86IGFueVtdO1xuICAgIGJ1dHRvbnM/OiBhbnlbXTtcbiAgICBhbHQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW1hZ2VSZXNwb25zZVBhdGgge1xuICAgIG9yaWdpbmFsOiBzdHJpbmc7XG4gICAgd2VicDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudHNBZGRvbnMge1xuICAgIGNvbnN1bHRUeXBlPzogQ29uc3VsdFR5cGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmlsdGVyT3B0aW9uIHtcbiAgICBpZD86IG51bWJlcjtcbiAgICBuYW1lPzogc3RyaW5nO1xuICAgIGNoaWxkcmVuPzogRmlsdGVyT3B0aW9uO1xufVxuZXhwb3J0IGludGVyZmFjZSBDb25zdWx0VHlwZSB7XG4gICAgY29uc3VsdFR5cGVJZD86IG51bWJlcjtcbiAgICBJZD86IG51bWJlcjtcbiAgICBsYW5ndWFnZUlkPzogbnVtYmVyO1xuICAgIG5hbWU/OiBzdHJpbmc7XG59XG4iXX0=