@provoly/dashboard 0.20.4 → 0.20.5

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.
Files changed (125) hide show
  1. package/dataset/components/dataset-detail/dataset-detail.component.d.ts +2 -1
  2. package/dataset/i18n/en.translations.d.ts +2 -1
  3. package/dataset/i18n/fr.translations.d.ts +2 -1
  4. package/dataset/style/_o-pry-dataset-card.scss +0 -1
  5. package/dataset/style/_o-pry-dataset-detail.scss +2 -53
  6. package/esm2022/admin/components/admin-classes/admin-classes-form/admin-classes-form.component.mjs +3 -3
  7. package/esm2022/admin/components/admin-classes/admin-classes-view/admin-attributes-form/admin-attributes-form.component.mjs +3 -3
  8. package/esm2022/admin/components/admin-fields/admin-fields-form/admin-fields-form.component.mjs +3 -3
  9. package/esm2022/admin/components/admin-menu/admin-menu.component.mjs +3 -3
  10. package/esm2022/dataset/components/dataset-detail/dataset-detail.component.mjs +20 -4
  11. package/esm2022/dataset/i18n/en.translations.mjs +3 -2
  12. package/esm2022/dataset/i18n/fr.translations.mjs +3 -2
  13. package/esm2022/dataset/style/css.component.mjs +2 -2
  14. package/esm2022/filters/autocomplete/autocomplete.component.mjs +16 -10
  15. package/esm2022/lib/core/components/about/about.component.mjs +3 -3
  16. package/esm2022/lib/core/components/base-menu/base-menu.component.mjs +3 -3
  17. package/esm2022/lib/core/components/select/select.component.mjs +42 -13
  18. package/esm2022/lib/core/i18n/en.translations.mjs +1 -2
  19. package/esm2022/lib/core/i18n/fr.translations.mjs +1 -2
  20. package/esm2022/lib/core/model/display-options.interface.mjs +2 -2
  21. package/esm2022/lib/core/store/class/class.actions.mjs +1 -4
  22. package/esm2022/lib/core/store/class/class.effects.mjs +1 -4
  23. package/esm2022/lib/core/store/class/class.interface.mjs +1 -1
  24. package/esm2022/lib/core/store/class/class.reducer.mjs +3 -13
  25. package/esm2022/lib/core/store/class/class.selectors.mjs +1 -3
  26. package/esm2022/lib/core/store/class/class.service.mjs +1 -9
  27. package/esm2022/lib/core/store/config/config.selectors.mjs +1 -3
  28. package/esm2022/lib/core/store/config/config.service.mjs +4 -7
  29. package/esm2022/presentation/components/add-edit-presentation/add-edit-presentation.component.mjs +3 -3
  30. package/esm2022/presentation/components/presentation.component.mjs +3 -3
  31. package/esm2022/presentation/components/title-presentation/title-presentation.component.mjs +11 -21
  32. package/esm2022/presentation/style/css.component.mjs +2 -2
  33. package/esm2022/restitution/components/restitution-catalog/restitution-catalog.component.mjs +3 -3
  34. package/esm2022/restitution/i18n/en.translations.mjs +2 -2
  35. package/esm2022/restitution/style/css.component.mjs +2 -2
  36. package/esm2022/search/i18n/en.translations.mjs +2 -1
  37. package/esm2022/search/i18n/fr.translations.mjs +2 -1
  38. package/esm2022/toolbox/components/filter-settings/filter-settings.component.mjs +3 -7
  39. package/fesm2022/provoly-dashboard-admin.mjs +8 -8
  40. package/fesm2022/provoly-dashboard-admin.mjs.map +1 -1
  41. package/fesm2022/provoly-dashboard-dataset.mjs +25 -7
  42. package/fesm2022/provoly-dashboard-dataset.mjs.map +1 -1
  43. package/fesm2022/provoly-dashboard-filters-autocomplete.mjs +15 -9
  44. package/fesm2022/provoly-dashboard-filters-autocomplete.mjs.map +1 -1
  45. package/fesm2022/provoly-dashboard-presentation.mjs +14 -24
  46. package/fesm2022/provoly-dashboard-presentation.mjs.map +1 -1
  47. package/fesm2022/provoly-dashboard-restitution.mjs +5 -5
  48. package/fesm2022/provoly-dashboard-restitution.mjs.map +1 -1
  49. package/fesm2022/provoly-dashboard-search.mjs +2 -0
  50. package/fesm2022/provoly-dashboard-search.mjs.map +1 -1
  51. package/fesm2022/provoly-dashboard-toolbox.mjs +2 -6
  52. package/fesm2022/provoly-dashboard-toolbox.mjs.map +1 -1
  53. package/fesm2022/provoly-dashboard.mjs +54 -58
  54. package/fesm2022/provoly-dashboard.mjs.map +1 -1
  55. package/filters/autocomplete/autocomplete.component.d.ts +1 -0
  56. package/lib/core/components/select/select.component.d.ts +2 -1
  57. package/lib/core/i18n/en.translations.d.ts +0 -1
  58. package/lib/core/i18n/fr.translations.d.ts +0 -1
  59. package/lib/core/store/class/class.actions.d.ts +1 -12
  60. package/lib/core/store/class/class.effects.d.ts +0 -5
  61. package/lib/core/store/class/class.interface.d.ts +0 -6
  62. package/lib/core/store/class/class.reducer.d.ts +2 -3
  63. package/lib/core/store/class/class.selectors.d.ts +0 -1
  64. package/lib/core/store/class/class.service.d.ts +1 -5
  65. package/lib/core/store/config/config.selectors.d.ts +0 -1
  66. package/package.json +1 -7
  67. package/presentation/components/title-presentation/title-presentation.component.d.ts +3 -5
  68. package/presentation/style/_o-pry-presentation.scss +1 -48
  69. package/restitution/i18n/en.translations.d.ts +1 -1
  70. package/restitution/style/_o-restitution.scss +11 -14
  71. package/search/i18n/en.translations.d.ts +1 -0
  72. package/search/i18n/fr.translations.d.ts +1 -0
  73. package/styles/base/_utils.scss +4 -0
  74. package/styles/components/_a-tooltip.scss +25 -18
  75. package/styles/components/_m-info-icon.scss +16 -0
  76. package/styles/components/_m-presentation-title.scss +14 -0
  77. package/styles/components/_o-about.scss +2 -24
  78. package/styles/main.scss +2 -0
  79. package/styles-theme/components-theme/_o-pry-dataset.theme.scss +0 -8
  80. package/styles-theme/components-theme/_o-pry-presentation.theme.scss +1 -1
  81. package/styles-theme/components-theme/_o-restitution.theme.scss +10 -0
  82. package/esm2022/supervision/components/supervision-business-data/supervision-business-data.component.mjs +0 -34
  83. package/esm2022/supervision/components/supervision-flow/supervision-flow.component.mjs +0 -33
  84. package/esm2022/supervision/components/supervision-infrastructures/supervision-infrastructures.component.mjs +0 -51
  85. package/esm2022/supervision/components/supervision-integration-errors/supervision-integration-errors-select/supervision-integration-errors-select.component.mjs +0 -27
  86. package/esm2022/supervision/components/supervision-integration-errors/supervision-integration-errors.component.mjs +0 -100
  87. package/esm2022/supervision/components/supervision-layout/supervision-layout.component.mjs +0 -47
  88. package/esm2022/supervision/components/supervision-menu/supervision-menu.component.mjs +0 -32
  89. package/esm2022/supervision/components/supervision-title/supervision-title.component.mjs +0 -24
  90. package/esm2022/supervision/components/supervision.component.mjs +0 -19
  91. package/esm2022/supervision/i18n/en.translations.mjs +0 -58
  92. package/esm2022/supervision/i18n/fr.translations.mjs +0 -58
  93. package/esm2022/supervision/provoly-dashboard-supervision.mjs +0 -5
  94. package/esm2022/supervision/public-api.mjs +0 -2
  95. package/esm2022/supervision/store/supervision-api.model.mjs +0 -2
  96. package/esm2022/supervision/store/supervision.actions.mjs +0 -33
  97. package/esm2022/supervision/store/supervision.effects.mjs +0 -60
  98. package/esm2022/supervision/store/supervision.reducer.mjs +0 -111
  99. package/esm2022/supervision/store/supervision.selectors.mjs +0 -35
  100. package/esm2022/supervision/store/supervision.service.mjs +0 -54
  101. package/esm2022/supervision/supervision-routing.module.mjs +0 -96
  102. package/esm2022/supervision/supervision.module.mjs +0 -96
  103. package/fesm2022/provoly-dashboard-supervision.mjs +0 -861
  104. package/fesm2022/provoly-dashboard-supervision.mjs.map +0 -1
  105. package/supervision/components/supervision-business-data/supervision-business-data.component.d.ts +0 -14
  106. package/supervision/components/supervision-flow/supervision-flow.component.d.ts +0 -14
  107. package/supervision/components/supervision-infrastructures/supervision-infrastructures.component.d.ts +0 -18
  108. package/supervision/components/supervision-integration-errors/supervision-integration-errors-select/supervision-integration-errors-select.component.d.ts +0 -12
  109. package/supervision/components/supervision-integration-errors/supervision-integration-errors.component.d.ts +0 -29
  110. package/supervision/components/supervision-layout/supervision-layout.component.d.ts +0 -21
  111. package/supervision/components/supervision-menu/supervision-menu.component.d.ts +0 -13
  112. package/supervision/components/supervision-title/supervision-title.component.d.ts +0 -11
  113. package/supervision/components/supervision.component.d.ts +0 -9
  114. package/supervision/i18n/en.translations.d.ts +0 -57
  115. package/supervision/i18n/fr.translations.d.ts +0 -57
  116. package/supervision/index.d.ts +0 -5
  117. package/supervision/public-api.d.ts +0 -1
  118. package/supervision/store/supervision-api.model.d.ts +0 -36
  119. package/supervision/store/supervision.actions.d.ts +0 -121
  120. package/supervision/store/supervision.effects.d.ts +0 -51
  121. package/supervision/store/supervision.reducer.d.ts +0 -22
  122. package/supervision/store/supervision.selectors.d.ts +0 -18
  123. package/supervision/store/supervision.service.d.ts +0 -19
  124. package/supervision/supervision-routing.module.d.ts +0 -7
  125. package/supervision/supervision.module.d.ts +0 -25
@@ -105,26 +105,23 @@ export class ConfigService {
105
105
  this.store.select(ConfigSelectors.dataUrl),
106
106
  this.store.select(ConfigSelectors.replayUrl),
107
107
  this.store.select(ConfigSelectors.execUrl),
108
- this.store.select(ConfigSelectors.transfoUrl),
109
- this.store.select(ConfigSelectors.monitorUrl)
110
- ]).pipe(mergeMap(([ref, data, replay, exec, transfo, monitor]) => {
108
+ this.store.select(ConfigSelectors.transfoUrl)
109
+ ]).pipe(mergeMap(([ref, data, replay, exec, transfo]) => {
111
110
  const allVersions = [
112
111
  this.handleBackendVersionError(this.httpClient.get(encodeURI(`${ref}/about/version`))),
113
112
  this.handleBackendVersionError(this.httpClient.get(encodeURI(`${data}/about/version`))),
114
113
  this.handleBackendVersionError(this.httpClient.get(encodeURI(`${replay}/about/version`))),
115
114
  this.handleBackendVersionError(this.httpClient.get(encodeURI(`${exec}/about/version`))),
116
115
  this.handleBackendVersionError(this.httpClient.get(encodeURI(`${transfo}/about/version`))),
117
- this.handleBackendVersionError(this.httpClient.get(encodeURI(`${monitor}/about/version`))),
118
116
  this.httpClient.get(encodeURI(`/assets/pry.version`)).pipe(map((version) => (version ? { libVersion: version } : {})), catchError(() => of({})))
119
117
  ];
120
- return combineLatest(allVersions).pipe(map(([refVersion, dataVersion, replayVersion, execVersion, tranfoVersion, monitorVersion, frontend]) => {
118
+ return combineLatest(allVersions).pipe(map(([refVersion, dataVersion, replayVersion, execVersion, tranfoVersion, frontend]) => {
121
119
  const versions = {
122
120
  ref: refVersion,
123
121
  data: dataVersion,
124
122
  replay: replayVersion,
125
123
  exec: execVersion,
126
124
  transfo: tranfoVersion,
127
- monitor: monitorVersion,
128
125
  front: frontend
129
126
  };
130
127
  return versions;
@@ -137,4 +134,4 @@ export class ConfigService {
137
134
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ConfigService, decorators: [{
138
135
  type: Injectable
139
136
  }], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.Store }, { type: i3.PrySnackbarService }, { type: i4.PryI18nService }]; } });
140
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC9saWIvY29yZS9zdG9yZS9jb25maWcvY29uZmlnLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFJMUYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLHNCQUFzQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDNUYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7Ozs7QUFTckQsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLFFBQVEsQ0FBQztBQUN0QyxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxXQUFXLENBQUM7QUFDN0MsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLFVBQVUsQ0FBQztBQUMxQyxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsU0FBUyxDQUFDO0FBQ3hDLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLFVBQVUsQ0FBQztBQUczQyxNQUFNLE9BQU8sYUFBYTthQUNqQixTQUFJLEdBQUcsSUFBSSxDQUFDO0lBRW5CLFlBQ1UsVUFBc0IsRUFDdEIsS0FBaUIsRUFDakIsUUFBNEIsRUFDNUIsZ0JBQWdDO1FBSGhDLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsVUFBSyxHQUFMLEtBQUssQ0FBWTtRQUNqQixhQUFRLEdBQVIsUUFBUSxDQUFvQjtRQUM1QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWdCO0lBQ3ZDLENBQUM7SUFFSjs7T0FFRztJQUNILGlCQUFpQjtRQUNmLE9BQU8sSUFBSSxDQUFDLEtBQUs7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Q0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBaUIsU0FBUyxDQUFDLEdBQUcsT0FBTyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7Z0JBQzFHLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFTLFNBQVMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUNoRSxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFDMUQsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUN6QjthQUNGLENBQUM7WUFDRixPQUFPLGFBQWEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQ3BDLEdBQUcsQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUUsUUFBUSxDQUFDLEVBQUUsRUFBRTtnQkFDckcsTUFBTSxRQUFRLEdBQWE7b0JBQ3pCLEdBQUcsRUFBRSxVQUFVO29CQUNmLElBQUksRUFBRSxXQUFXO29CQUNqQixNQUFNLEVBQUUsYUFBYTtvQkFDckIsSUFBSSxFQUFFLFdBQVc7b0JBQ2pCLE9BQU8sRUFBRSxhQUFhO29CQUN0QixPQUFPLEVBQUUsY0FBYztvQkFDdkIsS0FBSyxFQUFFLFFBQVE7aUJBQ2hCLENBQUM7Z0JBQ0YsT0FBTyxRQUFRLENBQUM7WUFDbEIsQ0FBQyxDQUFDLENBQ0gsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDOytHQTlJVSxhQUFhO21IQUFiLGFBQWE7OzRGQUFiLGFBQWE7a0JBRHpCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBjb21iaW5lTGF0ZXN0LCBmb3JrSm9pbiwgbWFwLCBtZXJnZU1hcCwgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFByeVNuYWNrYmFyU2VydmljZSB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvc25hY2tiYXIvc25hY2tiYXIuc2VydmljZSc7XG5pbXBvcnQgeyBQcnlJMThuU2VydmljZSB9IGZyb20gJy4uLy4uL2kxOG4vaTE4bi5zZXJ2aWNlJztcbmltcG9ydCB7IFdpZGdldCB9IGZyb20gJy4uLy4uL21vZGVsL3dpZGdldC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgREVGQVVMVF9OQU1FRF9RVUVSWV9JRCwgRVhQTE9SRV9OQU1FRF9RVUVSWV9JRCB9IGZyb20gJy4uL3NlYXJjaC9zZWFyY2guY29uc3RhbnRzJztcbmltcG9ydCB7IENvbmZpZ1NlbGVjdG9ycyB9IGZyb20gJy4vY29uZmlnLnNlbGVjdG9ycyc7XG5pbXBvcnQgeyBCYWNrZW5kVmVyc2lvbiwgRnJvbnRlbmRWZXJzaW9uLCBWZXJzaW9ucyB9IGZyb20gJy4vdmVyc2lvbnMuaW50ZXJmYWNlJztcblxuZXhwb3J0IGludGVyZmFjZSBQYXJhbUNvbnRlbnQge1xuICBkb21haW46IHN0cmluZztcbiAgb0NsYXNzOiBzdHJpbmc7XG4gIGNvbnRlbnQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGNvbnN0IFNZTUJPTF9ET01BSU4gPSAnc3ltYm9sJztcbmV4cG9ydCBjb25zdCBUQUJMRV9BVFRSX0RPTUFJTiA9ICd0YWJsZUF0dHInO1xuZXhwb3J0IGNvbnN0IFRPT0xUSVBTX0RPTUFJTiA9ICd0b29sdGlwcyc7XG5leHBvcnQgY29uc3QgRklMVEVSU19ET01BSU4gPSAnZmlsdGVycyc7XG5leHBvcnQgY29uc3QgVElMRV9BVFRSX0RPTUFJTiA9ICd0aWxlQXR0cic7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBDb25maWdTZXJ2aWNlIHtcbiAgc3RhdGljIHdhcm4gPSB0cnVlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgaHR0cENsaWVudDogSHR0cENsaWVudCxcbiAgICBwcml2YXRlIHN0b3JlOiBTdG9yZTxhbnk+LFxuICAgIHByaXZhdGUgc25hY2tCYXI6IFByeVNuYWNrYmFyU2VydmljZSxcbiAgICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFByeUkxOG5TZXJ2aWNlXG4gICkge31cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgbGlzdCBvZiBpY29ucyBydWxlcyBmb3IgZWFjaCBjbGFzc1xuICAgKi9cbiAgZ2V0QWxsQ2xhc3NQYXJhbXMoKTogT2JzZXJ2YWJsZTxQYXJhbUNvbnRlbnRbXT4ge1xuICAgIHJldHVybiB0aGlzLnN0b3JlXG4gICAgICAuc2VsZWN0KENvbmZpZ1NlbGVjdG9ycy5yZWZVcmwpXG4gICAgICAucGlwZShtZXJnZU1hcCgodXJsKSA9PiB0aGlzLmh0dHBDbGllbnQuZ2V0PFBhcmFtQ29udGVudFtdPihlbmNvZGVVUkkoYCR7dXJsfS9jdXN0b21jbGFzcy9hbGwvcGFyYW1gKSkpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTYXZlIHRoZSBkZWZpbml0aW9ucyBmcm9tIHNwZWNpZmllZCBkb21haW5cbiAgICogQHBhcmFtIGRlZmluaXRpb25zXG4gICAqIEBwYXJhbSBkb21haW5cbiAgICovXG4gIHNhdmVEZWZpbml0aW9ucyhkZWZpbml0aW9uczogYW55LCBkb21haW46IHN0cmluZyk6IE9ic2VydmFibGU8dm9pZFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcmUuc2VsZWN0KENvbmZpZ1NlbGVjdG9ycy5yZWZVcmwpLnBpcGUoXG4gICAgICBtZXJnZU1hcCgodXJsKSA9PiB7XG4gICAgICAgIC8vIExhdW5jaGluZyBhIHJlcXVlc3QgZm9yIGVhY2ggaW5kaWNhdGVkIGNsYXNzLCBpbiBwYXJhbGxlbFxuICAgICAgICBjb25zdCByZXF1ZXN0cyA9IE9iamVjdC5rZXlzKGRlZmluaXRpb25zKVxuICAgICAgICAgIC5maWx0ZXIoKGNsYXNzSWQpID0+IGNsYXNzSWQgIT09ICdkZWZhdWx0JylcbiAgICAgICAgICAubWFwKChjbGFzc0lkKSA9PlxuICAgICAgICAgICAgdGhpcy5odHRwQ2xpZW50LnB1dDx2b2lkPihcbiAgICAgICAgICAgICAgZW5jb2RlVVJJKGAke3VybH0vY3VzdG9tY2xhc3MvaWQvJHtjbGFzc0lkfS9wYXJhbS8ke2RvbWFpbn1gKSxcbiAgICAgICAgICAgICAgZGVmaW5pdGlvbnNbY2xhc3NJZF1cbiAgICAgICAgICAgIClcbiAgICAgICAgICApO1xuICAgICAgICByZXR1cm4gZm9ya0pvaW4ocmVxdWVzdHMpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFNhdmUgYSB3aWRnZXQgY29uZmlndXJhdGlvblxuICAgKiBAcGFyYW0gd2lkZ2V0XG4gICAqL1xuICBzYXZlV2lkZ2V0KHdpZGdldDogV2lkZ2V0KSB7XG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgLi4ud2lkZ2V0LFxuICAgICAgZGF0YXNvdXJjZTogd2lkZ2V0LmRhdGFzb3VyY2UuZmlsdGVyKChkcykgPT4gIVtERUZBVUxUX05BTUVEX1FVRVJZX0lELCBFWFBMT1JFX05BTUVEX1FVRVJZX0lEXS5pbmNsdWRlcyhkcykpXG4gICAgfTtcbiAgICByZXR1cm4gdGhpcy5zdG9yZVxuICAgICAgLnNlbGVjdChDb25maWdTZWxlY3RvcnMucmVmVXJsKVxuICAgICAgLnBpcGUobWVyZ2VNYXAoKHVybCkgPT4gdGhpcy5odHRwQ2xpZW50LnBvc3Q8dm9pZD4oZW5jb2RlVVJJKGAke3VybH0vd2lkZ2V0L2NhdGFsb2dgKSwgcGFyYW1zKSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIERlbGV0ZSBhIHdpZGdldCBjb25maWd1cmF0aW9uXG4gICAqIEBwYXJhbSBpZFxuICAgKi9cbiAgZGVsZXRlUmVzdGl0dXRpb24oaWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLnN0b3JlXG4gICAgICAuc2VsZWN0KENvbmZpZ1NlbGVjdG9ycy5yZWZVcmwpXG4gICAgICAucGlwZShtZXJnZU1hcCgodXJsKSA9PiB0aGlzLmh0dHBDbGllbnQuZGVsZXRlPHZvaWQ+KGVuY29kZVVSSShgJHt1cmx9L3dpZGdldC9jYXRhbG9nL2lkLyR7aWR9YCkpKSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGEgbGlzdCBvZiBhbGwgd2lkZ2V0cyBmcm9tIGNhdGFsb2dcbiAgICovXG4gIGdldEFsbFdpZGdldHMoKTogT2JzZXJ2YWJsZTxXaWRnZXRbXT4ge1xuICAgIHJldHVybiB0aGlzLnN0b3JlLnNlbGVjdChDb25maWdTZWxlY3RvcnMucmVmVXJsKS5waXBlKFxuICAgICAgbWVyZ2VNYXAoKHVybCkgPT4gdGhpcy5odHRwQ2xpZW50LmdldDxXaWRnZXRbXT4oZW5jb2RlVVJJKGAke3VybH0vd2lkZ2V0L2NhdGFsb2dgKSkpLFxuICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcbiAgICAgICAgaWYgKGVycm9yLmVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgICAvLyBBIGNsaWVudC1zaWRlIG9yIG5ldHdvcmsgZXJyb3Igb2NjdXJyZWRcbiAgICAgICAgICBpZiAoQ29uZmlnU2VydmljZS53YXJuKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdBIGZyb250ZW5kIGVycm9yIG9jY3VycmVkOicsIGVycm9yLmVycm9yLm1lc3NhZ2UpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLnNuYWNrQmFyLm9wZW4oe1xuICAgICAgICAgICAgdHlwZTogJ2Vycm9yJyxcbiAgICAgICAgICAgIG1lc3NhZ2U6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdAcHJ5Lm1hbmlmZXN0LmdldC5lcnJvckZyb250JywgeyBtc2c6IGVycm9yLmVycm9yLm1lc3NhZ2UgfSlcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBUaGUgYmFja2VuZCByZXR1cm5lZCBhbiB1bnN1Y2Nlc3NmdWwgcmVzcG9uc2UgY29kZS5cbiAgICAgICAgICBpZiAoQ29uZmlnU2VydmljZS53YXJuKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGBCYWNrZW5kIHJldHVybmVkIGNvZGUgJHtlcnJvci5zdGF0dXN9LCBib2R5IHdhczogJHtKU09OLnN0cmluZ2lmeShlcnJvci5lcnJvcil9YCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChlcnJvci5jb2RlICE9PSAyMDQpIHtcbiAgICAgICAgICAgIHRoaXMuc25hY2tCYXIub3Blbih7XG4gICAgICAgICAgICAgIHR5cGU6ICdlcnJvcicsXG4gICAgICAgICAgICAgIG1lc3NhZ2U6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdAcHJ5Lm1hbmlmZXN0LmdldC5lcnJvckJhY2snLCB7XG4gICAgICAgICAgICAgICAgY29kZTogZXJyb3Iuc3RhdHVzXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG9mKFtdKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIGhhbmRsZUJhY2tlbmRWZXJzaW9uRXJyb3Iob2JzOiBPYnNlcnZhYmxlPEJhY2tlbmRWZXJzaW9uPik6IE9ic2VydmFibGU8QmFja2VuZFZlcnNpb24+IHtcbiAgICByZXR1cm4gb2JzLnBpcGUoY2F0Y2hFcnJvcigoKSA9PiBvZih7fSkpKTtcbiAgfVxuXG4gIGdldEFsbFZlcnNpb25zKCk6IE9ic2VydmFibGU8VmVyc2lvbnM+IHtcbiAgICByZXR1cm4gY29tYmluZUxhdGVzdChbXG4gICAgICB0aGlzLnN0b3JlLnNlbGVjdChDb25maWdTZWxlY3RvcnMucmVmVXJsKSxcbiAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KENvbmZpZ1NlbGVjdG9ycy5kYXRhVXJsKSxcbiAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KENvbmZpZ1NlbGVjdG9ycy5yZXBsYXlVcmwpLFxuICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoQ29uZmlnU2VsZWN0b3JzLmV4ZWNVcmwpLFxuICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoQ29uZmlnU2VsZWN0b3JzLnRyYW5zZm9VcmwpLFxuICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoQ29uZmlnU2VsZWN0b3JzLm1vbml0b3JVcmwpXG4gICAgXSkucGlwZShcbiAgICAgIG1lcmdlTWFwKChbcmVmLCBkYXRhLCByZXBsYXksIGV4ZWMsIHRyYW5zZm8sIG1vbml0b3JdKSA9PiB7XG4gICAgICAgIGNvbnN0IGFsbFZlcnNpb25zOiBPYnNlcnZhYmxlPEJhY2tlbmRWZXJzaW9uIHwgRnJvbnRlbmRWZXJzaW9uPltdID0gW1xuICAgICAgICAgIHRoaXMuaGFuZGxlQmFja2VuZFZlcnNpb25FcnJvcih0aGlzLmh0dHBDbGllbnQuZ2V0PEJhY2tlbmRWZXJzaW9uPihlbmNvZGVVUkkoYCR7cmVmfS9hYm91dC92ZXJzaW9uYCkpKSxcbiAgICAgICAgICB0aGlzLmhhbmRsZUJhY2tlbmRWZXJzaW9uRXJyb3IodGhpcy5odHRwQ2xpZW50LmdldDxCYWNrZW5kVmVyc2lvbj4oZW5jb2RlVVJJKGAke2RhdGF9L2Fib3V0L3ZlcnNpb25gKSkpLFxuICAgICAgICAgIHRoaXMuaGFuZGxlQmFja2VuZFZlcnNpb25FcnJvcih0aGlzLmh0dHBDbGllbnQuZ2V0PEJhY2tlbmRWZXJzaW9uPihlbmNvZGVVUkkoYCR7cmVwbGF5fS9hYm91dC92ZXJzaW9uYCkpKSxcbiAgICAgICAgICB0aGlzLmhhbmRsZUJhY2tlbmRWZXJzaW9uRXJyb3IodGhpcy5odHRwQ2xpZW50LmdldDxCYWNrZW5kVmVyc2lvbj4oZW5jb2RlVVJJKGAke2V4ZWN9L2Fib3V0L3ZlcnNpb25gKSkpLFxuICAgICAgICAgIHRoaXMuaGFuZGxlQmFja2VuZFZlcnNpb25FcnJvcih0aGlzLmh0dHBDbGllbnQuZ2V0PEJhY2tlbmRWZXJzaW9uPihlbmNvZGVVUkkoYCR7dHJhbnNmb30vYWJvdXQvdmVyc2lvbmApKSksXG4gICAgICAgICAgdGhpcy5oYW5kbGVCYWNrZW5kVmVyc2lvbkVycm9yKHRoaXMuaHR0cENsaWVudC5nZXQ8QmFja2VuZFZlcnNpb24+KGVuY29kZVVSSShgJHttb25pdG9yfS9hYm91dC92ZXJzaW9uYCkpKSxcbiAgICAgICAgICB0aGlzLmh0dHBDbGllbnQuZ2V0PHN0cmluZz4oZW5jb2RlVVJJKGAvYXNzZXRzL3ByeS52ZXJzaW9uYCkpLnBpcGUoXG4gICAgICAgICAgICBtYXAoKHZlcnNpb24pID0+ICh2ZXJzaW9uID8geyBsaWJWZXJzaW9uOiB2ZXJzaW9uIH0gOiB7fSkpLFxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoKSA9PiBvZih7fSkpXG4gICAgICAgICAgKVxuICAgICAgICBdO1xuICAgICAgICByZXR1cm4gY29tYmluZUxhdGVzdChhbGxWZXJzaW9ucykucGlwZShcbiAgICAgICAgICBtYXAoKFtyZWZWZXJzaW9uLCBkYXRhVmVyc2lvbiwgcmVwbGF5VmVyc2lvbiwgZXhlY1ZlcnNpb24sIHRyYW5mb1ZlcnNpb24sIG1vbml0b3JWZXJzaW9uLCBmcm9udGVuZF0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHZlcnNpb25zOiBWZXJzaW9ucyA9IHtcbiAgICAgICAgICAgICAgcmVmOiByZWZWZXJzaW9uLFxuICAgICAgICAgICAgICBkYXRhOiBkYXRhVmVyc2lvbixcbiAgICAgICAgICAgICAgcmVwbGF5OiByZXBsYXlWZXJzaW9uLFxuICAgICAgICAgICAgICBleGVjOiBleGVjVmVyc2lvbixcbiAgICAgICAgICAgICAgdHJhbnNmbzogdHJhbmZvVmVyc2lvbixcbiAgICAgICAgICAgICAgbW9uaXRvcjogbW9uaXRvclZlcnNpb24sXG4gICAgICAgICAgICAgIGZyb250OiBmcm9udGVuZFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHJldHVybiB2ZXJzaW9ucztcbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgfSlcbiAgICApO1xuICB9XG59XG4iXX0=
137
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC9saWIvY29yZS9zdG9yZS9jb25maWcvY29uZmlnLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFJMUYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLHNCQUFzQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDNUYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7Ozs7QUFTckQsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLFFBQVEsQ0FBQztBQUN0QyxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxXQUFXLENBQUM7QUFDN0MsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLFVBQVUsQ0FBQztBQUMxQyxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsU0FBUyxDQUFDO0FBQ3hDLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLFVBQVUsQ0FBQztBQUczQyxNQUFNLE9BQU8sYUFBYTthQUNqQixTQUFJLEdBQUcsSUFBSSxDQUFDO0lBRW5CLFlBQ1UsVUFBc0IsRUFDdEIsS0FBaUIsRUFDakIsUUFBNEIsRUFDNUIsZ0JBQWdDO1FBSGhDLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsVUFBSyxHQUFMLEtBQUssQ0FBWTtRQUNqQixhQUFRLEdBQVIsUUFBUSxDQUFvQjtRQUM1QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWdCO0lBQ3ZDLENBQUM7SUFFSjs7T0FFRztJQUNILGlCQUFpQjtRQUNmLE9BQU8sSUFBSSxDQUFDLEtBQUs7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Q0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFDMUQsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUN6QjthQUNGLENBQUM7WUFDRixPQUFPLGFBQWEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQ3BDLEdBQUcsQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLGFBQWEsRUFBRSxRQUFRLENBQUMsRUFBRSxFQUFFO2dCQUNyRixNQUFNLFFBQVEsR0FBYTtvQkFDekIsR0FBRyxFQUFFLFVBQVU7b0JBQ2YsSUFBSSxFQUFFLFdBQVc7b0JBQ2pCLE1BQU0sRUFBRSxhQUFhO29CQUNyQixJQUFJLEVBQUUsV0FBVztvQkFDakIsT0FBTyxFQUFFLGFBQWE7b0JBQ3RCLEtBQUssRUFBRSxRQUFRO2lCQUNoQixDQUFDO2dCQUNGLE9BQU8sUUFBUSxDQUFDO1lBQ2xCLENBQUMsQ0FBQyxDQUNILENBQUM7UUFDSixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQzsrR0EzSVUsYUFBYTttSEFBYixhQUFhOzs0RkFBYixhQUFhO2tCQUR6QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgY29tYmluZUxhdGVzdCwgZm9ya0pvaW4sIG1hcCwgbWVyZ2VNYXAsIE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBQcnlTbmFja2JhclNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL3NuYWNrYmFyL3NuYWNrYmFyLnNlcnZpY2UnO1xuaW1wb3J0IHsgUHJ5STE4blNlcnZpY2UgfSBmcm9tICcuLi8uLi9pMThuL2kxOG4uc2VydmljZSc7XG5pbXBvcnQgeyBXaWRnZXQgfSBmcm9tICcuLi8uLi9tb2RlbC93aWRnZXQuaW50ZXJmYWNlJztcbmltcG9ydCB7IERFRkFVTFRfTkFNRURfUVVFUllfSUQsIEVYUExPUkVfTkFNRURfUVVFUllfSUQgfSBmcm9tICcuLi9zZWFyY2gvc2VhcmNoLmNvbnN0YW50cyc7XG5pbXBvcnQgeyBDb25maWdTZWxlY3RvcnMgfSBmcm9tICcuL2NvbmZpZy5zZWxlY3RvcnMnO1xuaW1wb3J0IHsgQmFja2VuZFZlcnNpb24sIEZyb250ZW5kVmVyc2lvbiwgVmVyc2lvbnMgfSBmcm9tICcuL3ZlcnNpb25zLmludGVyZmFjZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFyYW1Db250ZW50IHtcbiAgZG9tYWluOiBzdHJpbmc7XG4gIG9DbGFzczogc3RyaW5nO1xuICBjb250ZW50OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjb25zdCBTWU1CT0xfRE9NQUlOID0gJ3N5bWJvbCc7XG5leHBvcnQgY29uc3QgVEFCTEVfQVRUUl9ET01BSU4gPSAndGFibGVBdHRyJztcbmV4cG9ydCBjb25zdCBUT09MVElQU19ET01BSU4gPSAndG9vbHRpcHMnO1xuZXhwb3J0IGNvbnN0IEZJTFRFUlNfRE9NQUlOID0gJ2ZpbHRlcnMnO1xuZXhwb3J0IGNvbnN0IFRJTEVfQVRUUl9ET01BSU4gPSAndGlsZUF0dHInO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQ29uZmlnU2VydmljZSB7XG4gIHN0YXRpYyB3YXJuID0gdHJ1ZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGh0dHBDbGllbnQ6IEh0dHBDbGllbnQsXG4gICAgcHJpdmF0ZSBzdG9yZTogU3RvcmU8YW55PixcbiAgICBwcml2YXRlIHNuYWNrQmFyOiBQcnlTbmFja2JhclNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBQcnlJMThuU2VydmljZVxuICApIHt9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGxpc3Qgb2YgaWNvbnMgcnVsZXMgZm9yIGVhY2ggY2xhc3NcbiAgICovXG4gIGdldEFsbENsYXNzUGFyYW1zKCk6IE9ic2VydmFibGU8UGFyYW1Db250ZW50W10+IHtcbiAgICByZXR1cm4gdGhpcy5zdG9yZVxuICAgICAgLnNlbGVjdChDb25maWdTZWxlY3RvcnMucmVmVXJsKVxuICAgICAgLnBpcGUobWVyZ2VNYXAoKHVybCkgPT4gdGhpcy5odHRwQ2xpZW50LmdldDxQYXJhbUNvbnRlbnRbXT4oZW5jb2RlVVJJKGAke3VybH0vY3VzdG9tY2xhc3MvYWxsL3BhcmFtYCkpKSk7XG4gIH1cblxuICAvKipcbiAgICogU2F2ZSB0aGUgZGVmaW5pdGlvbnMgZnJvbSBzcGVjaWZpZWQgZG9tYWluXG4gICAqIEBwYXJhbSBkZWZpbml0aW9uc1xuICAgKiBAcGFyYW0gZG9tYWluXG4gICAqL1xuICBzYXZlRGVmaW5pdGlvbnMoZGVmaW5pdGlvbnM6IGFueSwgZG9tYWluOiBzdHJpbmcpOiBPYnNlcnZhYmxlPHZvaWRbXT4ge1xuICAgIHJldHVybiB0aGlzLnN0b3JlLnNlbGVjdChDb25maWdTZWxlY3RvcnMucmVmVXJsKS5waXBlKFxuICAgICAgbWVyZ2VNYXAoKHVybCkgPT4ge1xuICAgICAgICAvLyBMYXVuY2hpbmcgYSByZXF1ZXN0IGZvciBlYWNoIGluZGljYXRlZCBjbGFzcywgaW4gcGFyYWxsZWxcbiAgICAgICAgY29uc3QgcmVxdWVzdHMgPSBPYmplY3Qua2V5cyhkZWZpbml0aW9ucylcbiAgICAgICAgICAuZmlsdGVyKChjbGFzc0lkKSA9PiBjbGFzc0lkICE9PSAnZGVmYXVsdCcpXG4gICAgICAgICAgLm1hcCgoY2xhc3NJZCkgPT5cbiAgICAgICAgICAgIHRoaXMuaHR0cENsaWVudC5wdXQ8dm9pZD4oXG4gICAgICAgICAgICAgIGVuY29kZVVSSShgJHt1cmx9L2N1c3RvbWNsYXNzL2lkLyR7Y2xhc3NJZH0vcGFyYW0vJHtkb21haW59YCksXG4gICAgICAgICAgICAgIGRlZmluaXRpb25zW2NsYXNzSWRdXG4gICAgICAgICAgICApXG4gICAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIGZvcmtKb2luKHJlcXVlc3RzKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTYXZlIGEgd2lkZ2V0IGNvbmZpZ3VyYXRpb25cbiAgICogQHBhcmFtIHdpZGdldFxuICAgKi9cbiAgc2F2ZVdpZGdldCh3aWRnZXQ6IFdpZGdldCkge1xuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIC4uLndpZGdldCxcbiAgICAgIGRhdGFzb3VyY2U6IHdpZGdldC5kYXRhc291cmNlLmZpbHRlcigoZHMpID0+ICFbREVGQVVMVF9OQU1FRF9RVUVSWV9JRCwgRVhQTE9SRV9OQU1FRF9RVUVSWV9JRF0uaW5jbHVkZXMoZHMpKVxuICAgIH07XG4gICAgcmV0dXJuIHRoaXMuc3RvcmVcbiAgICAgIC5zZWxlY3QoQ29uZmlnU2VsZWN0b3JzLnJlZlVybClcbiAgICAgIC5waXBlKG1lcmdlTWFwKCh1cmwpID0+IHRoaXMuaHR0cENsaWVudC5wb3N0PHZvaWQ+KGVuY29kZVVSSShgJHt1cmx9L3dpZGdldC9jYXRhbG9nYCksIHBhcmFtcykpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWxldGUgYSB3aWRnZXQgY29uZmlndXJhdGlvblxuICAgKiBAcGFyYW0gaWRcbiAgICovXG4gIGRlbGV0ZVJlc3RpdHV0aW9uKGlkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5zdG9yZVxuICAgICAgLnNlbGVjdChDb25maWdTZWxlY3RvcnMucmVmVXJsKVxuICAgICAgLnBpcGUobWVyZ2VNYXAoKHVybCkgPT4gdGhpcy5odHRwQ2xpZW50LmRlbGV0ZTx2b2lkPihlbmNvZGVVUkkoYCR7dXJsfS93aWRnZXQvY2F0YWxvZy9pZC8ke2lkfWApKSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhIGxpc3Qgb2YgYWxsIHdpZGdldHMgZnJvbSBjYXRhbG9nXG4gICAqL1xuICBnZXRBbGxXaWRnZXRzKCk6IE9ic2VydmFibGU8V2lkZ2V0W10+IHtcbiAgICByZXR1cm4gdGhpcy5zdG9yZS5zZWxlY3QoQ29uZmlnU2VsZWN0b3JzLnJlZlVybCkucGlwZShcbiAgICAgIG1lcmdlTWFwKCh1cmwpID0+IHRoaXMuaHR0cENsaWVudC5nZXQ8V2lkZ2V0W10+KGVuY29kZVVSSShgJHt1cmx9L3dpZGdldC9jYXRhbG9nYCkpKSxcbiAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XG4gICAgICAgIGlmIChlcnJvci5lcnJvciBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICAgICAgLy8gQSBjbGllbnQtc2lkZSBvciBuZXR3b3JrIGVycm9yIG9jY3VycmVkXG4gICAgICAgICAgaWYgKENvbmZpZ1NlcnZpY2Uud2Fybikge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignQSBmcm9udGVuZCBlcnJvciBvY2N1cnJlZDonLCBlcnJvci5lcnJvci5tZXNzYWdlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5zbmFja0Jhci5vcGVuKHtcbiAgICAgICAgICAgIHR5cGU6ICdlcnJvcicsXG4gICAgICAgICAgICBtZXNzYWdlOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnQHByeS5tYW5pZmVzdC5nZXQuZXJyb3JGcm9udCcsIHsgbXNnOiBlcnJvci5lcnJvci5tZXNzYWdlIH0pXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gVGhlIGJhY2tlbmQgcmV0dXJuZWQgYW4gdW5zdWNjZXNzZnVsIHJlc3BvbnNlIGNvZGUuXG4gICAgICAgICAgaWYgKENvbmZpZ1NlcnZpY2Uud2Fybikge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihgQmFja2VuZCByZXR1cm5lZCBjb2RlICR7ZXJyb3Iuc3RhdHVzfSwgYm9keSB3YXM6ICR7SlNPTi5zdHJpbmdpZnkoZXJyb3IuZXJyb3IpfWApO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoZXJyb3IuY29kZSAhPT0gMjA0KSB7XG4gICAgICAgICAgICB0aGlzLnNuYWNrQmFyLm9wZW4oe1xuICAgICAgICAgICAgICB0eXBlOiAnZXJyb3InLFxuICAgICAgICAgICAgICBtZXNzYWdlOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnQHByeS5tYW5pZmVzdC5nZXQuZXJyb3JCYWNrJywge1xuICAgICAgICAgICAgICAgIGNvZGU6IGVycm9yLnN0YXR1c1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvZihbXSk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBoYW5kbGVCYWNrZW5kVmVyc2lvbkVycm9yKG9iczogT2JzZXJ2YWJsZTxCYWNrZW5kVmVyc2lvbj4pOiBPYnNlcnZhYmxlPEJhY2tlbmRWZXJzaW9uPiB7XG4gICAgcmV0dXJuIG9icy5waXBlKGNhdGNoRXJyb3IoKCkgPT4gb2Yoe30pKSk7XG4gIH1cblxuICBnZXRBbGxWZXJzaW9ucygpOiBPYnNlcnZhYmxlPFZlcnNpb25zPiB7XG4gICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoQ29uZmlnU2VsZWN0b3JzLnJlZlVybCksXG4gICAgICB0aGlzLnN0b3JlLnNlbGVjdChDb25maWdTZWxlY3RvcnMuZGF0YVVybCksXG4gICAgICB0aGlzLnN0b3JlLnNlbGVjdChDb25maWdTZWxlY3RvcnMucmVwbGF5VXJsKSxcbiAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KENvbmZpZ1NlbGVjdG9ycy5leGVjVXJsKSxcbiAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KENvbmZpZ1NlbGVjdG9ycy50cmFuc2ZvVXJsKVxuICAgIF0pLnBpcGUoXG4gICAgICBtZXJnZU1hcCgoW3JlZiwgZGF0YSwgcmVwbGF5LCBleGVjLCB0cmFuc2ZvXSkgPT4ge1xuICAgICAgICBjb25zdCBhbGxWZXJzaW9uczogT2JzZXJ2YWJsZTxCYWNrZW5kVmVyc2lvbiB8IEZyb250ZW5kVmVyc2lvbj5bXSA9IFtcbiAgICAgICAgICB0aGlzLmhhbmRsZUJhY2tlbmRWZXJzaW9uRXJyb3IodGhpcy5odHRwQ2xpZW50LmdldDxCYWNrZW5kVmVyc2lvbj4oZW5jb2RlVVJJKGAke3JlZn0vYWJvdXQvdmVyc2lvbmApKSksXG4gICAgICAgICAgdGhpcy5oYW5kbGVCYWNrZW5kVmVyc2lvbkVycm9yKHRoaXMuaHR0cENsaWVudC5nZXQ8QmFja2VuZFZlcnNpb24+KGVuY29kZVVSSShgJHtkYXRhfS9hYm91dC92ZXJzaW9uYCkpKSxcbiAgICAgICAgICB0aGlzLmhhbmRsZUJhY2tlbmRWZXJzaW9uRXJyb3IodGhpcy5odHRwQ2xpZW50LmdldDxCYWNrZW5kVmVyc2lvbj4oZW5jb2RlVVJJKGAke3JlcGxheX0vYWJvdXQvdmVyc2lvbmApKSksXG4gICAgICAgICAgdGhpcy5oYW5kbGVCYWNrZW5kVmVyc2lvbkVycm9yKHRoaXMuaHR0cENsaWVudC5nZXQ8QmFja2VuZFZlcnNpb24+KGVuY29kZVVSSShgJHtleGVjfS9hYm91dC92ZXJzaW9uYCkpKSxcbiAgICAgICAgICB0aGlzLmhhbmRsZUJhY2tlbmRWZXJzaW9uRXJyb3IodGhpcy5odHRwQ2xpZW50LmdldDxCYWNrZW5kVmVyc2lvbj4oZW5jb2RlVVJJKGAke3RyYW5zZm99L2Fib3V0L3ZlcnNpb25gKSkpLFxuICAgICAgICAgIHRoaXMuaHR0cENsaWVudC5nZXQ8c3RyaW5nPihlbmNvZGVVUkkoYC9hc3NldHMvcHJ5LnZlcnNpb25gKSkucGlwZShcbiAgICAgICAgICAgIG1hcCgodmVyc2lvbikgPT4gKHZlcnNpb24gPyB7IGxpYlZlcnNpb246IHZlcnNpb24gfSA6IHt9KSksXG4gICAgICAgICAgICBjYXRjaEVycm9yKCgpID0+IG9mKHt9KSlcbiAgICAgICAgICApXG4gICAgICAgIF07XG4gICAgICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KGFsbFZlcnNpb25zKS5waXBlKFxuICAgICAgICAgIG1hcCgoW3JlZlZlcnNpb24sIGRhdGFWZXJzaW9uLCByZXBsYXlWZXJzaW9uLCBleGVjVmVyc2lvbiwgdHJhbmZvVmVyc2lvbiwgZnJvbnRlbmRdKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB2ZXJzaW9uczogVmVyc2lvbnMgPSB7XG4gICAgICAgICAgICAgIHJlZjogcmVmVmVyc2lvbixcbiAgICAgICAgICAgICAgZGF0YTogZGF0YVZlcnNpb24sXG4gICAgICAgICAgICAgIHJlcGxheTogcmVwbGF5VmVyc2lvbixcbiAgICAgICAgICAgICAgZXhlYzogZXhlY1ZlcnNpb24sXG4gICAgICAgICAgICAgIHRyYW5zZm86IHRyYW5mb1ZlcnNpb24sXG4gICAgICAgICAgICAgIGZyb250OiBmcm9udGVuZFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHJldHVybiB2ZXJzaW9ucztcbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgfSlcbiAgICApO1xuICB9XG59XG4iXX0=
@@ -123,13 +123,13 @@ export class PryAddEditPresentationComponent extends SubscriptionnerDirective {
123
123
  }));
124
124
  this.store.dispatch(DashboardActions.selectPresentation({
125
125
  presentation,
126
- viewMode: this.edition ? ViewMode.CREATION : ViewMode.EDITION
126
+ viewMode: ViewMode.CREATION
127
127
  }));
128
128
  }
129
129
  else {
130
130
  this.store.dispatch(DashboardActions.loadPresentation({
131
131
  presentation,
132
- viewMode: this.edition ? ViewMode.CREATION : ViewMode.EDITION
132
+ viewMode: ViewMode.EDITION
133
133
  }));
134
134
  }
135
135
  this.router?.navigateByUrl(this.editionStartUrl);
@@ -181,4 +181,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
181
181
  }], mode: [{
182
182
  type: Input
183
183
  }] } });
184
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLWVkaXQtcHJlc2VudGF0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL3ByZXNlbnRhdGlvbi9jb21wb25lbnRzL2FkZC1lZGl0LXByZXNlbnRhdGlvbi9hZGQtZWRpdC1wcmVzZW50YXRpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9kYXNoYm9hcmQvcHJlc2VudGF0aW9uL2NvbXBvbmVudHMvYWRkLWVkaXQtcHJlc2VudGF0aW9uL2FkZC1lZGl0LXByZXNlbnRhdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEcsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHcEUsT0FBTyxFQUNMLGdCQUFnQixFQUNoQixtQkFBbUIsRUFDbkIsa0JBQWtCLEVBQ2xCLDRCQUE0QixFQUc1QixZQUFZLEVBRVosd0JBQXdCLEVBQ3hCLFFBQVEsRUFDVCxNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFjLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN4RSxPQUFPLEVBQUUsZUFBZSxFQUFFLGlCQUFpQixFQUFpQixNQUFNLCtDQUErQyxDQUFDO0FBQ2xILE9BQU8sRUFBRSxFQUFFLElBQUksTUFBTSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7Ozs7O0FBTXBDLE1BQU0sT0FBTywrQkFBZ0MsU0FBUSx3QkFBd0I7SUFjM0UsSUFBYSxvQkFBb0IsQ0FBQyxZQUF3QztRQUN4RSxJQUFJLENBQUMscUJBQXFCLENB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SUFDSixDQUFDO0lBRUQsS0FBSztRQUNILElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELFFBQVE7UUFDTixPQUFPLElBQUksQ0FBQyxJQUFJLEtBQUssT0FBTztZQUMxQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxLQUFLLEVBQUU7Z0JBQ3RELENBQUMsQ0FBQyxFQUFFO2dCQUNKLENBQUMsQ0FBQztvQkFDRTt3QkFDRSxXQUFXLEVBQUUsSUFBSSxDQUFDLFlBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLGVBQWUsQ0FBRTt3QkFDekYsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssSUFBSSxFQUFFO3FCQUNuQztpQkFDRjtZQUNMLENBQUMsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsS0FBSyxFQUFFLFFBQVEsSUFBSSxFQUFFLENBQUM7SUFDdkQsQ0FBQzsrR0F6TFUsK0JBQStCO21HQUEvQiwrQkFBK0IsdVBDeEI1QyxxdUpBZ0hBOzs0RkR4RmEsK0JBQStCO2tCQUozQyxTQUFTOytCQUNFLDJCQUEyQjs7MEJBdUJBLFFBQVE7NENBakJwQyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFHSSxNQUFNO3NCQUFmLE1BQU07Z0JBT00sb0JBQW9CO3NCQUFoQyxLQUFLO2dCQUlHLElBQUk7c0JBQVosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPcHRpb25hbCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHtcbiAgRGFzaGJvYXJkQWN0aW9ucyxcbiAgRGFzaGJvYXJkR3JpZExheW91dCxcbiAgRGFzaGJvYXJkU2VsZWN0b3JzLFxuICBERUZBVUxUX1JFU1RJVFVUSU9OX0lDT05fVVJMLFxuICBHbG9iYWxNYW5pZmVzdCxcbiAgSU1ldGFkYXRhLFxuICBMaWJyYXJ5VHlwZXMsXG4gIE1hbmlmZXN0RGVzY3JpcHRpb24sXG4gIFN1YnNjcmlwdGlvbm5lckRpcmVjdGl2ZSxcbiAgVmlld01vZGVcbn0gZnJvbSAnQHByb3ZvbHkvZGFzaGJvYXJkJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZSwgdGFrZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTWV0YWRhdGFBY3Rpb25zLCBNZXRhZGF0YVNlbGVjdG9ycywgTWV0YUV2ZW50VHlwZSB9IGZyb20gJ0Bwcm92b2x5L2Rhc2hib2FyZC9jb21wb25lbnRzL21ldGFkYXRhLWVkaXRvcic7XG5pbXBvcnQgeyB2NCBhcyB1dWlkdjQgfSBmcm9tICd1dWlkJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncHJ5LWFkZC1lZGl0LXByZXNlbnRhdGlvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9hZGQtZWRpdC1wcmVzZW50YXRpb24uY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFByeUFkZEVkaXRQcmVzZW50YXRpb25Db21wb25lbnQgZXh0ZW5kcyBTdWJzY3JpcHRpb25uZXJEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xuICBzdGF0aWNNYW5pZmVzdCQ6IE9ic2VydmFibGU8R2xvYmFsTWFuaWZlc3Q+O1xuICBzZWxlY3RlZFByZXNlbnRhdGlvbiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1hbmlmZXN0RGVzY3JpcHRpb24gfCBudWxsPihudWxsKTtcbiAgQElucHV0KCkgZWRpdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBlZGl0aW9uU3RhcnRVcmw6IHN0cmluZyA9ICcvJztcbiAgZm9ybSE6IEZvcm1Hcm91cDtcbiAgaW1hZ2U6IHN0cmluZyA9IERFRkFVTFRfUkVTVElUVVRJT05fSUNPTl9VUkw7XG4gIEBPdXRwdXQoKSBnb0JhY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIHR5cGU6IExpYnJhcnlUeXBlcyA9IExpYnJhcnlUeXBlcy5JTExVU1RSQVRJT047XG4gIGNob3NlbkxheW91dDogRGFzaGJvYXJkR3JpZExheW91dCA9IERhc2hib2FyZEdyaWRMYXlvdXQuRlVMTDtcbiAgcG9zc2libGVUaGVtZXM6IHN0cmluZ1tdID0gW107XG4gIG1ldGFkYXRhRGVmczogSU1ldGFkYXRhW10gfCB1bmRlZmluZWQ7XG4gIG1ldGFkYXRhVGhlbWVJZDogc3RyaW5nID0gJyc7XG5cbiAgQElucHV0KCkgc2V0IHNlbGVjdGVkUHJlc2VudGF0aW9uKHByZXNlbnRhdGlvbjogTWFuaWZlc3REZXNjcmlwdGlvbiB8IG51bGwpIHtcbiAgICB0aGlzLnNlbGVjdGVkUHJlc2VudGF0aW9uJC5uZXh0KHByZXNlbnRhdGlvbik7XG4gIH1cblxuICBASW5wdXQoKSBtb2RlOiAndGhlbWUnIHwgJ21ldGEnID0gJ21ldGEnO1xuXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBzdG9yZTogU3RvcmUsIEBPcHRpb25hbCgpIHByb3RlY3RlZCByb3V0ZXI6IFJvdXRlcikge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChNZXRhZGF0YUFjdGlvbnMubG9hZE1ldGFkYXRhKCkpO1xuICAgIHRoaXMuc3RhdGljTWFuaWZlc3QkID0gdGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLnN0YXRpY01hbmlmZXN0KTtcbiAgICBjb21iaW5lTGF0ZXN0KFt0aGlzLnN0YXRpY01hbmlmZXN0JCwgdGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLmdyaWRMYXlvdXQpXSkuc3Vic2NyaWJlKFxuICAgICAgKFtzdGF0aWNNYW5pZmVzdCwgZ3JpZExheW91dF0pID0+IHtcbiAgICAgICAgdGhpcy5jaG9zZW5MYXlvdXQgPVxuICAgICAgICAgIHRoaXMuZWRpdGlvbiAmJiBzdGF0aWNNYW5pZmVzdC53aW5kb3dzWzBdPy5ncmlkPy5sYXlvdXQgIT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgPyBzdGF0aWNNYW5pZmVzdC53aW5kb3dzWzBdPy5ncmlkPy5sYXlvdXRcbiAgICAgICAgICAgIDogZ3JpZExheW91dDtcbiAgICAgIH1cbiAgICApO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICB0aGlzLnN0b3JlLnNlbGVjdChNZXRhZGF0YVNlbGVjdG9ycy5tZXRhZGF0YSkuc3Vic2NyaWJlKChtZXRhZGF0YSkgPT4ge1xuICAgICAgICB0aGlzLm1ldGFkYXRhRGVmcyA9IG1ldGFkYXRhO1xuICAgICAgICBjb25zdCBtZXRhZGF0YVRoZW1lID0gbWV0YWRhdGE/LmZpbmQoKG1ldGEpID0+IG1ldGEubmFtZSA9PT0gJ190aGVtZScpO1xuICAgICAgICBpZiAobWV0YWRhdGFUaGVtZSkge1xuICAgICAgICAgIHRoaXMubWV0YWRhdGFUaGVtZUlkID0gbWV0YWRhdGFUaGVtZT8uaWQgPz8gJyc7XG4gICAgICAgICAgdGhpcy5wb3NzaWJsZVRoZW1lcyA9IG1ldGFkYXRhVGhlbWU/LmFsbG93ZWRWYWx1ZXMgPz8gW107XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZm9ybSA9IG5ldyBGb3JtR3JvdXAoe1xuICAgICAgbmFtZTogbmV3IEZvcm1Db250cm9sKG51bGwsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1heExlbmd0aCg1MCldKSxcbiAgICAgIGRlc2NyaXB0aW9uOiBuZXcgRm9ybUNvbnRyb2wobnVsbCwgW1ZhbGlkYXRvcnMubWF4TGVuZ3RoKDIwMCldKSxcbiAgICAgIGNvdmVyOiBuZXcgRm9ybUNvbnRyb2woZmFsc2UpLFxuICAgICAgdGhlbWU6IG5ldyBGb3JtQ29udHJvbCgnJylcbiAgICB9KTtcbiAgICB0aGlzLmltYWdlID0gdGhpcy5zZWxlY3RlZFByZXNlbnRhdGlvbiQudmFsdWU/LmltYWdlID8/IERFRkFVTFRfUkVTVElUVVRJT05fSUNPTl9VUkw7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIHRoaXMuc2VsZWN0ZWRQcmVzZW50YXRpb24kLnN1YnNjcmliZSgocHJlc2VudGF0aW9uKSA9PiB7XG4gICAgICAgIGNvbnN0IHRoZW1lID0gcHJlc2VudGF0aW9uPy5tZXRhZGF0YT8uZmluZCgobWV0YWRhdGEpID0+IG1ldGFkYXRhLm1ldGFkYXRhRGVmLm5hbWUgPT09ICdfdGhlbWUnKT8udmFsdWU7XG4gICAgICAgIGlmICghIXRoZW1lKSB0aGlzLmZvcm0ucGF0Y2hWYWx1ZSh7IHRoZW1lIH0pO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRQcmVzZW50YXRpb24kLnZhbHVlKSB0aGlzLmZvcm0ucGF0Y2hWYWx1ZSh0aGlzLnNlbGVjdGVkUHJlc2VudGF0aW9uJC52YWx1ZSk7XG4gICAgfSk7XG4gIH1cblxuICBzYXZlKCkge1xuICAgIGlmICghdGhpcy5lZGl0aW9uKSB7XG4gICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKERhc2hib2FyZEFjdGlvbnMudXBkYXRlU3RhdGljTWFuaWZlc3QoeyBzdGF0aWNNYW5pZmVzdDogeyB3aW5kb3dzOiBbXSB9IH0pKTtcbiAgICB9XG4gICAgY29uc3QgcHJlc2VudGF0aW9uID0gdGhpcy5kaXNwYXRjaFNhdmUoKTtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFxuICAgICAgRGFzaGJvYXJkQWN0aW9ucy5zZWxlY3RQcmVzZW50YXRpb24oe1xuICAgICAgICBwcmVzZW50YXRpb24sXG4gICAgICAgIHZpZXdNb2RlOiBWaWV3TW9kZS5FRElUSU9OXG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBkaXNwYXRjaFNhdmUoKTogTWFuaWZlc3REZXNjcmlwdGlvbiB7XG4gICAgY29uc3QgcHJlc2VudGF0aW9uID0ge1xuICAgICAgLi4udGhpcy5zZWxlY3RlZFByZXNlbnRhdGlvbiQudmFsdWUhLFxuICAgICAgaWQ6IHRoaXMuc2VsZWN0ZWRQcmVzZW50YXRpb24kLnZhbHVlPy5pZCB8fCB1dWlkdjQoKSxcbiAgICAgIG5hbWU6IHRoaXMuZm9ybS52YWx1ZS5uYW1lID8/ICcnLFxuICAgICAgZGVzY3JpcHRpb246IHRoaXMuZm9ybS52YWx1ZS5kZXNjcmlwdGlvbiA/PyAnJyxcbiAgICAgIGNvdmVyOiB0aGlzLmZvcm0udmFsdWUuY292ZXIgPz8gZmFsc2UsXG4gICAgICBpbWFnZTogdGhpcy5pbWFnZSA/PyBERUZBVUxUX1JFU1RJVFVUSU9OX0lDT05fVVJMLFxuICAgICAgbWV0YWRhdGE6IHRoaXMubWV0YWRhdGEoKVxuICAgIH07XG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgdGhpcy5zdGF0aWNNYW5pZmVzdCQucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKHN0YXRpY01hbmlmZXN0KSA9PiB7XG4gICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goXG4gICAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy5zYXZlTWFuaWZlc3Qoe1xuICAgICAgICAgICAgLi4ucHJlc2VudGF0aW9uLFxuICAgICAgICAgICAgbWV0YWRhdGE6IHByZXNlbnRhdGlvbi5tZXRhZGF0YT8ubWFwKChtZXRhZGF0YSkgPT4gKHtcbiAgICAgICAgICAgICAgbWV0YWRhdGFEZWZJZDogbWV0YWRhdGEubWV0YWRhdGFEZWYuaWQsXG4gICAgICAgICAgICAgIHZhbHVlOiBtZXRhZGF0YS52YWx1ZVxuICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgbWFuaWZlc3Q6IHN0YXRpY01hbmlmZXN0XG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgICByZXR1cm4gcHJlc2VudGF0aW9uO1xuICB9XG5cbiAgY29uZmlndXJlRGFzaGJvYXJkKHNlbGVjdGVkUHJlc2VudGF0aW9uOiBNYW5pZmVzdERlc2NyaXB0aW9uKSB7XG4gICAgaWYgKHRoaXMuZm9ybS52YWxpZCkge1xuICAgICAgdGhpcy5kaXNwYXRjaFNhdmUoKTtcbiAgICB9XG5cbiAgICBjb25zdCBwcmVzZW50YXRpb24gPSB7XG4gICAgICAuLi50aGlzLnNlbGVjdGVkUHJlc2VudGF0aW9uJC52YWx1ZSEsXG4gICAgICBuYW1lOiB0aGlzLmZvcm0udmFsdWUubmFtZSA/PyAnJyxcbiAgICAgIGRlc2NyaXB0aW9uOiB0aGlzLmZvcm0udmFsdWUuZGVzY3JpcHRpb24gPz8gJycsXG4gICAgICBpbWFnZTogdGhpcy5pbWFnZSA/PyBERUZBVUxUX1JFU1RJVFVUSU9OX0lDT05fVVJMLFxuICAgICAgY292ZXI6IHRoaXMuZm9ybS52YWx1ZS5jb3ZlciA/PyBmYWxzZSxcbiAgICAgIG1ldGFkYXRhOiB0aGlzLm1ldGFkYXRhKClcbiAgICB9O1xuXG4gICAgaWYgKCF0aGlzLmVkaXRpb24pIHtcbiAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goXG4gICAgICAgIERhc2hib2FyZEFjdGlvbnMudXBkYXRlTWFuaWZlc3Qoe1xuICAgICAgICAgIG1hbmlmZXN0OiB7IHdpbmRvd3M6IFt7IHdpZGdldHM6IFtdLCBncmlkOiB7IGxheW91dDogdGhpcy5jaG9zZW5MYXlvdXQgfSB9XSB9LFxuICAgICAgICAgIHNlbGVjdGVkSWRzOiBbXSxcbiAgICAgICAgICBtYW5pZmVzdElkOiBzZWxlY3RlZFByZXNlbnRhdGlvbi5pZFxuICAgICAgICB9KVxuICAgICAgKTtcbiAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goXG4gICAgICAgIERhc2hib2FyZEFjdGlvbnMuc2V0SW5pdGlhbFByZXNlbnRhdGlvbih7XG4gICAgICAgICAgaW5pdGlhbDogeyB3aW5kb3dzOiBbeyB3aWRnZXRzOiBbXSwgZ3JpZDogeyBsYXlvdXQ6IHRoaXMuY2hvc2VuTGF5b3V0IGFzIERhc2hib2FyZEdyaWRMYXlvdXQgfSB9XSB9XG4gICAgICAgIH0pXG4gICAgICApO1xuICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChcbiAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy5zZWxlY3RQcmVzZW50YXRpb24oe1xuICAgICAgICAgIHByZXNlbnRhdGlvbixcbiAgICAgICAgICB2aWV3TW9kZTogdGhpcy5lZGl0aW9uID8gVmlld01vZGUuQ1JFQVRJT04gOiBWaWV3TW9kZS5FRElUSU9OXG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFxuICAgICAgICBEYXNoYm9hcmRBY3Rpb25zLmxvYWRQcmVzZW50YXRpb24oe1xuICAgICAgICAgIHByZXNlbnRhdGlvbixcbiAgICAgICAgICB2aWV3TW9kZTogdGhpcy5lZGl0aW9uID8gVmlld01vZGUuQ1JFQVRJT04gOiBWaWV3TW9kZS5FRElUSU9OXG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH1cbiAgICB0aGlzLnJvdXRlcj8ubmF2aWdhdGVCeVVybCh0aGlzLmVkaXRpb25TdGFydFVybCk7XG4gIH1cblxuICBhZGRNZXRhZGF0YShtZXRhZGF0YTogTWV0YUV2ZW50VHlwZSkge1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goXG4gICAgICBEYXNoYm9hcmRBY3Rpb25zLmFkZE1hbmlmZXN0TWV0YWRhdGEoe1xuICAgICAgICBwcmVzZW50YXRpb25JZDogdGhpcy5zZWxlY3RlZFByZXNlbnRhdGlvbiQudmFsdWU/LmlkISxcbiAgICAgICAgbWV0YWRhdGFJZDogbWV0YWRhdGEubWV0YWRhdGFJZCxcbiAgICAgICAgdmFsdWU6IG1ldGFkYXRhLnZhbHVlID8/ICcnXG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICByZW1vdmVNZXRhZGF0YShtZXRhZGF0YTogTWV0YUV2ZW50VHlwZSkge1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goXG4gICAgICBEYXNoYm9hcmRBY3Rpb25zLmRlbGV0ZU1hbmlmZXN0TWV0YWRhdGEoe1xuICAgICAgICBwcmVzZW50YXRpb25JZDogdGhpcy5zZWxlY3RlZFByZXNlbnRhdGlvbiQudmFsdWU/LmlkISxcbiAgICAgICAgbWV0YWRhdGFJZDogbWV0YWRhdGEubWV0YWRhdGFJZFxuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgY2xvc2UoKSB7XG4gICAgdGhpcy5nb0JhY2suZW1pdCgpO1xuICB9XG5cbiAgbWV0YWRhdGEoKSB7XG4gICAgcmV0dXJuIHRoaXMubW9kZSA9PT0gJ3RoZW1lJ1xuICAgICAgPyAhdGhpcy5mb3JtLnZhbHVlLnRoZW1lIHx8IHRoaXMuZm9ybS52YWx1ZS50aGVtZSA9PT0gJydcbiAgICAgICAgPyBbXVxuICAgICAgICA6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbWV0YWRhdGFEZWY6IHRoaXMubWV0YWRhdGFEZWZzIS5maW5kKChtZXRhZGF0YSkgPT4gbWV0YWRhdGEuaWQgPT09IHRoaXMubWV0YWRhdGFUaGVtZUlkKSEsXG4gICAgICAgICAgICAgIHZhbHVlOiB0aGlzLmZvcm0udmFsdWUudGhlbWUgPz8gJydcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBdXG4gICAgICA6IHRoaXMuc2VsZWN0ZWRQcmVzZW50YXRpb24kLnZhbHVlPy5tZXRhZGF0YSA/PyBbXTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cIm8tbWFuaWZlc3QtbGF5b3V0XCI+XG4gIDxkaXYgY2xhc3M9XCJvLW1hbmlmZXN0LWxheW91dF9fdG9vbGJveFwiPlxuICAgIDxidXR0b24gY2xhc3M9XCJhLWJ0biBhLWJ0bi0tc2Vjb25kYXJ5XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJjbG9zZSgpXCI+XG4gICAgICB7eyAnQHByeS50b29sYm94Lm1hbmlmZXN0LmNsb3NlJyB8IGkxOG4gfX1cbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uIGNsYXNzPVwiYS1idG4gYS1idG4tLXByaW1hcnlcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInNhdmUoKVwiIFtkaXNhYmxlZF09XCJmb3JtLmludmFsaWRcIj5cbiAgICAgIHt7ICdAcHJ5LnRvb2xib3gubWFuaWZlc3QuY2hlY2snIHwgaTE4biB9fVxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cIm8tbWFuaWZlc3QtbGF5b3V0X19jb250ZW50LS1wcmVzZW50YXRpb25cIj5cbiAgICA8aDEgY2xhc3M9XCJhLWgxXCI+e3sgJ0BwcnkucHJlc2VudGF0aW9uLmFkZCcgKyAnLnBhZ2VUaXRsZScgfCBpMThuIH19PC9oMT5cbiAgICA8ZGl2IGNsYXNzPVwiby1wcmVzZW50YXRpb24tZm9ybS13cmFwcGVyXCI+XG4gICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1cIiBjbGFzcz1cIm8tcHJlc2VudGF0aW9uLWZvcm1cIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm0tZm9ybS1sYWJlbC1maWVsZCAtd2lkdGgtZnVsbFwiPlxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImEtbGFiZWxcIiBmb3I9XCJwcmVzZW50YXRpb25fbmFtZVwiPnt7ICdAcHJ5LnByZXNlbnRhdGlvbi5mb3JtLm5hbWUnIHwgaTE4biB9fTwvbGFiZWw+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICBpZD1cInByZXNlbnRhdGlvbl9uYW1lXCJcbiAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cIm5hbWVcIlxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyAnQHByeS5wcmVzZW50YXRpb24uZm9ybS5uYW1lJyB8IGkxOG4gfX1cIlxuICAgICAgICAgICAgY2xhc3M9XCJhLWZvcm0tZmllbGRcIlxuICAgICAgICAgICAgbWF4bGVuZ3RoPVwiNTBcIlxuICAgICAgICAgICAgcmVxdWlyZWRcbiAgICAgICAgICAvPlxuICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgZm9yPVwicHJlc2VudGF0aW9uX25hbWVcIlxuICAgICAgICAgICAgKm5nSWY9XCJmb3JtLmdldCgnbmFtZScpPy50b3VjaGVkICYmIGZvcm0uZ2V0KCduYW1lJyk/Lmhhc0Vycm9yKCdyZXF1aXJlZCcpXCJcbiAgICAgICAgICAgIGNsYXNzPVwiYS1sYWJlbCBhLWxhYmVsLS1oZWxwIC1lcnJvclwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgJ0BwcnkucHJlc2VudGF0aW9uLnJlcXVpcmVkJyB8IGkxOG4gfX1cbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgZm9yPVwicHJlc2VudGF0aW9uX25hbWVcIlxuICAgICAgICAgICAgKm5nSWY9XCJmb3JtLmdldCgnbmFtZScpPy5oYXNFcnJvcignbWF4bGVuZ3RoJylcIlxuICAgICAgICAgICAgY2xhc3M9XCJhLWxhYmVsIGEtbGFiZWwtLWhlbHAgLWVycm9yXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyAnQHByeS5wcmVzZW50YXRpb24ubWF4TGVuZ3RoJyB8IGkxOG4gOiB7IGxlbjogJzUwJyB9IH19XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtLWZvcm0tbGFiZWwtZmllbGQgLXdpZHRoLWZ1bGxcIj5cbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJhLWxhYmVsXCIgZm9yPVwicHJlc2VudGF0aW9uX2Rlc2NyaXB0aW9uXCI+e3tcbiAgICAgICAgICAgICdAcHJ5LnByZXNlbnRhdGlvbi5mb3JtLmRlc2NyaXB0aW9uJyB8IGkxOG5cbiAgICAgICAgICB9fTwvbGFiZWw+XG4gICAgICAgICAgPHRleHRhcmVhXG4gICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJkZXNjcmlwdGlvblwiXG4gICAgICAgICAgICBpZD1cInByZXNlbnRhdGlvbl9kZXNjcmlwdGlvblwiXG4gICAgICAgICAgICBuYW1lPVwiZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgY29scz1cIjMwXCJcbiAgICAgICAgICAgIHJvd3M9XCI1XCJcbiAgICAgICAgICAgIG1heGxlbmd0aD1cIjIwMFwiXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7ICdAcHJ5LnByZXNlbnRhdGlvbi5mb3JtLmRlc2NyaXB0aW9uJyB8IGkxOG4gfX1cIlxuICAgICAgICAgICAgY2xhc3M9XCJhLWZvcm0tZmllbGRcIlxuICAgICAgICAgID48L3RleHRhcmVhPlxuICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgZm9yPVwicHJlc2VudGF0aW9uX2Rlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgICpuZ0lmPVwiZm9ybS5nZXQoJ2Rlc2NyaXB0aW9uJyk/Lmhhc0Vycm9yKCdtYXhsZW5ndGgnKVwiXG4gICAgICAgICAgICBjbGFzcz1cImEtbGFiZWwgYS1sYWJlbC0taGVscCAtZXJyb3JcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7ICdAcHJ5LnByZXNlbnRhdGlvbi5tYXhMZW5ndGgnIHwgaTE4biA6IHsgbGVuOiAnMjAwJyB9IH19XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtLWZvcm0tbGFiZWwtZmllbGQgLXdpZHRoLWZ1bGxcIiAqbmdJZj1cIm1vZGUgPT09ICd0aGVtZSdcIj5cbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJhLWxhYmVsXCIgZm9yPVwicHJlc2VudGF0aW9uX3RoZW1lXCI+e3sgJ0BwcnkucHJlc2VudGF0aW9uLmZvcm0udGhlbWUnIHwgaTE4biB9fTwvbGFiZWw+XG4gICAgICAgICAgPHByeS1zZWxlY3RcbiAgICAgICAgICAgIGlkPVwicHJlc2VudGF0aW9uX3RoZW1lXCJcbiAgICAgICAgICAgIFtpdGVtc109XCJwb3NzaWJsZVRoZW1lc1wiXG4gICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ0aGVtZVwiXG4gICAgICAgICAgICBbY2xlYXJhYmxlXT1cInRydWVcIlxuICAgICAgICAgID48L3ByeS1zZWxlY3Q+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwibS1mb3JtLWxhYmVsLWZpZWxkIC13aWR0aC1mdWxsXCI+XG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwiYS1sYWJlbFwiIGZvcj1cInByZXNlbnRhdGlvbl9pbWFnZVwiPnt7ICdAcHJ5LnByZXNlbnRhdGlvbi5mb3JtLmltYWdlJyB8IGkxOG4gfX08L2xhYmVsPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJvLWZpbGUtaW5wdXRcIj5cbiAgICAgICAgICAgIDxwcnktc2VsZWN0LWltYWdlXG4gICAgICAgICAgICAgIGlkPVwicHJlc2VudGF0aW9uX2ltYWdlXCJcbiAgICAgICAgICAgICAgKGNoYW5nZWQpPVwiaW1hZ2UgPSAkZXZlbnRcIlxuICAgICAgICAgICAgICBbaWNvblVybF09XCJpbWFnZVwiXG4gICAgICAgICAgICAgIFttb2RlXT1cInR5cGVcIlxuICAgICAgICAgICAgPjwvcHJ5LXNlbGVjdC1pbWFnZT5cbiAgICAgICAgICAgIDxwcnktY2hlY2tib3ggZm9ybUNvbnRyb2xOYW1lPVwiY292ZXJcIiBuYW1lPVwiY292ZXJcIiBuZ0RlZmF1bHRDb250cm9sPlxuICAgICAgICAgICAgICB7eyAnQHByeS5wcmVzZW50YXRpb24uZm9ybS5jb3ZlcicgfCBpMThuIH19XG4gICAgICAgICAgICA8L3ByeS1jaGVja2JveD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtLWZvcm0tbGFiZWwtZmllbGQgLXdpZHRoLWZ1bGwgbS1mb3JtLWxhYmVsLWZpZWxkLS1pbmxpbmVcIj5cbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJhLWxhYmVsXCI+e3sgJ0BwcnkucHJlc2VudGF0aW9uLmZvcm0uZ3JpZCcgfCBpMThuIH19PC9sYWJlbD5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImEtbGFiZWxcIj57eyAnQHByeS50b29sYm94LmxheW91dC4nICsgdGhpcy5jaG9zZW5MYXlvdXQgfCBpMThuIH19PC9zcGFuPlxuICAgICAgICAgIDxwcnktc2VsZWN0LWdyaWQtbGF5b3V0ICpuZ0lmPVwiIWVkaXRpb25cIj48L3ByeS1zZWxlY3QtZ3JpZC1sYXlvdXQ+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9mb3JtPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1vZGUgPT09ICdtZXRhJ1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiby1wcmVzZW50YXRpb25fX21ldGFkYXRhLWVkaXRvclwiICpuZ0lmPVwic2VsZWN0ZWRQcmVzZW50YXRpb24kIHwgYXN5bmMgYXMgc2VsZWN0ZWRQcmVzZW50YXRpb25cIj5cbiAgICAgICAgICA8cHJ5LW1ldGFkYXRhLWVkaXRvclxuICAgICAgICAgICAgW3RhcmdldElkXT1cInNlbGVjdGVkUHJlc2VudGF0aW9uLmlkXCJcbiAgICAgICAgICAgIFtpc01vZGlmaWNhdGlvbl09XCJ0cnVlXCJcbiAgICAgICAgICAgIFttZXRhZGF0YV09XCJzZWxlY3RlZFByZXNlbnRhdGlvbi5tZXRhZGF0YVwiXG4gICAgICAgICAgICAocmVtb3ZlTWV0YSk9XCJyZW1vdmVNZXRhZGF0YSgkZXZlbnQpXCJcbiAgICAgICAgICAgIChhZGRNZXRhKT1cImFkZE1ldGFkYXRhKCRldmVudClcIlxuICAgICAgICAgICAgW3R5cGVdPVwiJ21ldGEnXCJcbiAgICAgICAgICA+PC9wcnktbWV0YWRhdGEtZWRpdG9yPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICAgIDxidXR0b25cbiAgICAgIGNsYXNzPVwiYS1idG4gYS1idG4tLXByaW1hcnlcIlxuICAgICAgKGNsaWNrKT1cImNvbmZpZ3VyZURhc2hib2FyZChzZWxlY3RlZFByZXNlbnRhdGlvbiQudmFsdWUhKVwiXG4gICAgICBbZGlzYWJsZWRdPVwiZm9ybS5pbnZhbGlkXCJcbiAgICA+XG4gICAgICB7eyAnQHByeS5wcmVzZW50YXRpb24uY29uZmlndXJhdGlvbicgfCBpMThuIH19XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
184
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLWVkaXQtcHJlc2VudGF0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL3ByZXNlbnRhdGlvbi9jb21wb25lbnRzL2FkZC1lZGl0LXByZXNlbnRhdGlvbi9hZGQtZWRpdC1wcmVzZW50YXRpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9kYXNoYm9hcmQvcHJlc2VudGF0aW9uL2NvbXBvbmVudHMvYWRkLWVkaXQtcHJlc2VudGF0aW9uL2FkZC1lZGl0LXByZXNlbnRhdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEcsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHcEUsT0FBTyxFQUNMLGdCQUFnQixFQUNoQixtQkFBbUIsRUFDbkIsa0JBQWtCLEVBQ2xCLDRCQUE0QixFQUc1QixZQUFZLEVBRVosd0JBQXdCLEVBQ3hCLFFBQVEsRUFDVCxNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFjLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN4RSxPQUFPLEVBQUUsZUFBZSxFQUFFLGlCQUFpQixFQUFpQixNQUFNLCtDQUErQyxDQUFDO0FBQ2xILE9BQU8sRUFBRSxFQUFFLElBQUksTUFBTSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7Ozs7O0FBTXBDLE1BQU0sT0FBTywrQkFBZ0MsU0FBUSx3QkFBd0I7SUFjM0UsSUFBYSxvQkFBb0IsQ0FBQyxZQUF3QztRQUN4RSxJQUFJLENBQUMscUJBQXFCLENB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QixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxLQUFLLEVBQUU7Z0JBQ3RELENBQUMsQ0FBQyxFQUFFO2dCQUNKLENBQUMsQ0FBQztvQkFDRTt3QkFDRSxXQUFXLEVBQUUsSUFBSSxDQUFDLFlBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLGVBQWUsQ0FBRTt3QkFDekYsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssSUFBSSxFQUFFO3FCQUNuQztpQkFDRjtZQUNMLENBQUMsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsS0FBSyxFQUFFLFFBQVEsSUFBSSxFQUFFLENBQUM7SUFDdkQsQ0FBQzsrR0F6TFUsK0JBQStCO21HQUEvQiwrQkFBK0IsdVBDeEI1QyxxdUpBZ0hBOzs0RkR4RmEsK0JBQStCO2tCQUozQyxTQUFTOytCQUNFLDJCQUEyQjs7MEJBdUJBLFFBQVE7NENBakJwQyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFHSSxNQUFNO3NCQUFmLE1BQU07Z0JBT00sb0JBQW9CO3NCQUFoQyxLQUFLO2dCQUlHLElBQUk7c0JBQVosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPcHRpb25hbCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHtcbiAgRGFzaGJvYXJkQWN0aW9ucyxcbiAgRGFzaGJvYXJkR3JpZExheW91dCxcbiAgRGFzaGJvYXJkU2VsZWN0b3JzLFxuICBERUZBVUxUX1JFU1RJVFVUSU9OX0lDT05fVVJMLFxuICBHbG9iYWxNYW5pZmVzdCxcbiAgSU1ldGFkYXRhLFxuICBMaWJyYXJ5VHlwZXMsXG4gIE1hbmlmZXN0RGVzY3JpcHRpb24sXG4gIFN1YnNjcmlwdGlvbm5lckRpcmVjdGl2ZSxcbiAgVmlld01vZGVcbn0gZnJvbSAnQHByb3ZvbHkvZGFzaGJvYXJkJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZSwgdGFrZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTWV0YWRhdGFBY3Rpb25zLCBNZXRhZGF0YVNlbGVjdG9ycywgTWV0YUV2ZW50VHlwZSB9IGZyb20gJ0Bwcm92b2x5L2Rhc2hib2FyZC9jb21wb25lbnRzL21ldGFkYXRhLWVkaXRvcic7XG5pbXBvcnQgeyB2NCBhcyB1dWlkdjQgfSBmcm9tICd1dWlkJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncHJ5LWFkZC1lZGl0LXByZXNlbnRhdGlvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9hZGQtZWRpdC1wcmVzZW50YXRpb24uY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFByeUFkZEVkaXRQcmVzZW50YXRpb25Db21wb25lbnQgZXh0ZW5kcyBTdWJzY3JpcHRpb25uZXJEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xuICBzdGF0aWNNYW5pZmVzdCQ6IE9ic2VydmFibGU8R2xvYmFsTWFuaWZlc3Q+O1xuICBzZWxlY3RlZFByZXNlbnRhdGlvbiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1hbmlmZXN0RGVzY3JpcHRpb24gfCBudWxsPihudWxsKTtcbiAgQElucHV0KCkgZWRpdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBlZGl0aW9uU3RhcnRVcmw6IHN0cmluZyA9ICcvJztcbiAgZm9ybSE6IEZvcm1Hcm91cDtcbiAgaW1hZ2U6IHN0cmluZyA9IERFRkFVTFRfUkVTVElUVVRJT05fSUNPTl9VUkw7XG4gIEBPdXRwdXQoKSBnb0JhY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIHR5cGU6IExpYnJhcnlUeXBlcyA9IExpYnJhcnlUeXBlcy5JTExVU1RSQVRJT047XG4gIGNob3NlbkxheW91dDogRGFzaGJvYXJkR3JpZExheW91dCA9IERhc2hib2FyZEdyaWRMYXlvdXQuRlVMTDtcbiAgcG9zc2libGVUaGVtZXM6IHN0cmluZ1tdID0gW107XG4gIG1ldGFkYXRhRGVmczogSU1ldGFkYXRhW10gfCB1bmRlZmluZWQ7XG4gIG1ldGFkYXRhVGhlbWVJZDogc3RyaW5nID0gJyc7XG5cbiAgQElucHV0KCkgc2V0IHNlbGVjdGVkUHJlc2VudGF0aW9uKHByZXNlbnRhdGlvbjogTWFuaWZlc3REZXNjcmlwdGlvbiB8IG51bGwpIHtcbiAgICB0aGlzLnNlbGVjdGVkUHJlc2VudGF0aW9uJC5uZXh0KHByZXNlbnRhdGlvbik7XG4gIH1cblxuICBASW5wdXQoKSBtb2RlOiAndGhlbWUnIHwgJ21ldGEnID0gJ21ldGEnO1xuXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBzdG9yZTogU3RvcmUsIEBPcHRpb25hbCgpIHByb3RlY3RlZCByb3V0ZXI6IFJvdXRlcikge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChNZXRhZGF0YUFjdGlvbnMubG9hZE1ldGFkYXRhKCkpO1xuICAgIHRoaXMuc3RhdGljTWFuaWZlc3QkID0gdGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLnN0YXRpY01hbmlmZXN0KTtcbiAgICBjb21iaW5lTGF0ZXN0KFt0aGlzLnN0YXRpY01hbmlmZXN0JCwgdGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLmdyaWRMYXlvdXQpXSkuc3Vic2NyaWJlKFxuICAgICAgKFtzdGF0aWNNYW5pZmVzdCwgZ3JpZExheW91dF0pID0+IHtcbiAgICAgICAgdGhpcy5jaG9zZW5MYXlvdXQgPVxuICAgICAgICAgIHRoaXMuZWRpdGlvbiAmJiBzdGF0aWNNYW5pZmVzdC53aW5kb3dzWzBdPy5ncmlkPy5sYXlvdXQgIT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgPyBzdGF0aWNNYW5pZmVzdC53aW5kb3dzWzBdPy5ncmlkPy5sYXlvdXRcbiAgICAgICAgICAgIDogZ3JpZExheW91dDtcbiAgICAgIH1cbiAgICApO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICB0aGlzLnN0b3JlLnNlbGVjdChNZXRhZGF0YVNlbGVjdG9ycy5tZXRhZGF0YSkuc3Vic2NyaWJlKChtZXRhZGF0YSkgPT4ge1xuICAgICAgICB0aGlzLm1ldGFkYXRhRGVmcyA9IG1ldGFkYXRhO1xuICAgICAgICBjb25zdCBtZXRhZGF0YVRoZW1lID0gbWV0YWRhdGE/LmZpbmQoKG1ldGEpID0+IG1ldGEubmFtZSA9PT0gJ190aGVtZScpO1xuICAgICAgICBpZiAobWV0YWRhdGFUaGVtZSkge1xuICAgICAgICAgIHRoaXMubWV0YWRhdGFUaGVtZUlkID0gbWV0YWRhdGFUaGVtZT8uaWQgPz8gJyc7XG4gICAgICAgICAgdGhpcy5wb3NzaWJsZVRoZW1lcyA9IG1ldGFkYXRhVGhlbWU/LmFsbG93ZWRWYWx1ZXMgPz8gW107XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZm9ybSA9IG5ldyBGb3JtR3JvdXAoe1xuICAgICAgbmFtZTogbmV3IEZvcm1Db250cm9sKG51bGwsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1heExlbmd0aCg1MCldKSxcbiAgICAgIGRlc2NyaXB0aW9uOiBuZXcgRm9ybUNvbnRyb2wobnVsbCwgW1ZhbGlkYXRvcnMubWF4TGVuZ3RoKDIwMCldKSxcbiAgICAgIGNvdmVyOiBuZXcgRm9ybUNvbnRyb2woZmFsc2UpLFxuICAgICAgdGhlbWU6IG5ldyBGb3JtQ29udHJvbCgnJylcbiAgICB9KTtcbiAgICB0aGlzLmltYWdlID0gdGhpcy5zZWxlY3RlZFByZXNlbnRhdGlvbiQudmFsdWU/LmltYWdlID8/IERFRkFVTFRfUkVTVElUVVRJT05fSUNPTl9VUkw7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIHRoaXMuc2VsZWN0ZWRQcmVzZW50YXRpb24kLnN1YnNjcmliZSgocHJlc2VudGF0aW9uKSA9PiB7XG4gICAgICAgIGNvbnN0IHRoZW1lID0gcHJlc2VudGF0aW9uPy5tZXRhZGF0YT8uZmluZCgobWV0YWRhdGEpID0+IG1ldGFkYXRhLm1ldGFkYXRhRGVmLm5hbWUgPT09ICdfdGhlbWUnKT8udmFsdWU7XG4gICAgICAgIGlmICghIXRoZW1lKSB0aGlzLmZvcm0ucGF0Y2hWYWx1ZSh7IHRoZW1lIH0pO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRQcmVzZW50YXRpb24kLnZhbHVlKSB0aGlzLmZvcm0ucGF0Y2hWYWx1ZSh0aGlzLnNlbGVjdGVkUHJlc2VudGF0aW9uJC52YWx1ZSk7XG4gICAgfSk7XG4gIH1cblxuICBzYXZlKCkge1xuICAgIGlmICghdGhpcy5lZGl0aW9uKSB7XG4gICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKERhc2hib2FyZEFjdGlvbnMudXBkYXRlU3RhdGljTWFuaWZlc3QoeyBzdGF0aWNNYW5pZmVzdDogeyB3aW5kb3dzOiBbXSB9IH0pKTtcbiAgICB9XG4gICAgY29uc3QgcHJlc2VudGF0aW9uID0gdGhpcy5kaXNwYXRjaFNhdmUoKTtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFxuICAgICAgRGFzaGJvYXJkQWN0aW9ucy5zZWxlY3RQcmVzZW50YXRpb24oe1xuICAgICAgICBwcmVzZW50YXRpb24sXG4gICAgICAgIHZpZXdNb2RlOiBWaWV3TW9kZS5FRElUSU9OXG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBkaXNwYXRjaFNhdmUoKTogTWFuaWZlc3REZXNjcmlwdGlvbiB7XG4gICAgY29uc3QgcHJlc2VudGF0aW9uID0ge1xuICAgICAgLi4udGhpcy5zZWxlY3RlZFByZXNlbnRhdGlvbiQudmFsdWUhLFxuICAgICAgaWQ6IHRoaXMuc2VsZWN0ZWRQcmVzZW50YXRpb24kLnZhbHVlPy5pZCB8fCB1dWlkdjQoKSxcbiAgICAgIG5hbWU6IHRoaXMuZm9ybS52YWx1ZS5uYW1lID8/ICcnLFxuICAgICAgZGVzY3JpcHRpb246IHRoaXMuZm9ybS52YWx1ZS5kZXNjcmlwdGlvbiA/PyAnJyxcbiAgICAgIGNvdmVyOiB0aGlzLmZvcm0udmFsdWUuY292ZXIgPz8gZmFsc2UsXG4gICAgICBpbWFnZTogdGhpcy5pbWFnZSA/PyBERUZBVUxUX1JFU1RJVFVUSU9OX0lDT05fVVJMLFxuICAgICAgbWV0YWRhdGE6IHRoaXMubWV0YWRhdGEoKVxuICAgIH07XG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgdGhpcy5zdGF0aWNNYW5pZmVzdCQucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKHN0YXRpY01hbmlmZXN0KSA9PiB7XG4gICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goXG4gICAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy5zYXZlTWFuaWZlc3Qoe1xuICAgICAgICAgICAgLi4ucHJlc2VudGF0aW9uLFxuICAgICAgICAgICAgbWV0YWRhdGE6IHByZXNlbnRhdGlvbi5tZXRhZGF0YT8ubWFwKChtZXRhZGF0YSkgPT4gKHtcbiAgICAgICAgICAgICAgbWV0YWRhdGFEZWZJZDogbWV0YWRhdGEubWV0YWRhdGFEZWYuaWQsXG4gICAgICAgICAgICAgIHZhbHVlOiBtZXRhZGF0YS52YWx1ZVxuICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgbWFuaWZlc3Q6IHN0YXRpY01hbmlmZXN0XG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgICByZXR1cm4gcHJlc2VudGF0aW9uO1xuICB9XG5cbiAgY29uZmlndXJlRGFzaGJvYXJkKHNlbGVjdGVkUHJlc2VudGF0aW9uOiBNYW5pZmVzdERlc2NyaXB0aW9uKSB7XG4gICAgaWYgKHRoaXMuZm9ybS52YWxpZCkge1xuICAgICAgdGhpcy5kaXNwYXRjaFNhdmUoKTtcbiAgICB9XG5cbiAgICBjb25zdCBwcmVzZW50YXRpb24gPSB7XG4gICAgICAuLi50aGlzLnNlbGVjdGVkUHJlc2VudGF0aW9uJC52YWx1ZSEsXG4gICAgICBuYW1lOiB0aGlzLmZvcm0udmFsdWUubmFtZSA/PyAnJyxcbiAgICAgIGRlc2NyaXB0aW9uOiB0aGlzLmZvcm0udmFsdWUuZGVzY3JpcHRpb24gPz8gJycsXG4gICAgICBpbWFnZTogdGhpcy5pbWFnZSA/PyBERUZBVUxUX1JFU1RJVFVUSU9OX0lDT05fVVJMLFxuICAgICAgY292ZXI6IHRoaXMuZm9ybS52YWx1ZS5jb3ZlciA/PyBmYWxzZSxcbiAgICAgIG1ldGFkYXRhOiB0aGlzLm1ldGFkYXRhKClcbiAgICB9O1xuXG4gICAgaWYgKCF0aGlzLmVkaXRpb24pIHtcbiAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goXG4gICAgICAgIERhc2hib2FyZEFjdGlvbnMudXBkYXRlTWFuaWZlc3Qoe1xuICAgICAgICAgIG1hbmlmZXN0OiB7IHdpbmRvd3M6IFt7IHdpZGdldHM6IFtdLCBncmlkOiB7IGxheW91dDogdGhpcy5jaG9zZW5MYXlvdXQgfSB9XSB9LFxuICAgICAgICAgIHNlbGVjdGVkSWRzOiBbXSxcbiAgICAgICAgICBtYW5pZmVzdElkOiBzZWxlY3RlZFByZXNlbnRhdGlvbi5pZFxuICAgICAgICB9KVxuICAgICAgKTtcbiAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goXG4gICAgICAgIERhc2hib2FyZEFjdGlvbnMuc2V0SW5pdGlhbFByZXNlbnRhdGlvbih7XG4gICAgICAgICAgaW5pdGlhbDogeyB3aW5kb3dzOiBbeyB3aWRnZXRzOiBbXSwgZ3JpZDogeyBsYXlvdXQ6IHRoaXMuY2hvc2VuTGF5b3V0IGFzIERhc2hib2FyZEdyaWRMYXlvdXQgfSB9XSB9XG4gICAgICAgIH0pXG4gICAgICApO1xuICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChcbiAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy5zZWxlY3RQcmVzZW50YXRpb24oe1xuICAgICAgICAgIHByZXNlbnRhdGlvbixcbiAgICAgICAgICB2aWV3TW9kZTogVmlld01vZGUuQ1JFQVRJT05cbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goXG4gICAgICAgIERhc2hib2FyZEFjdGlvbnMubG9hZFByZXNlbnRhdGlvbih7XG4gICAgICAgICAgcHJlc2VudGF0aW9uLFxuICAgICAgICAgIHZpZXdNb2RlOiBWaWV3TW9kZS5FRElUSU9OXG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH1cbiAgICB0aGlzLnJvdXRlcj8ubmF2aWdhdGVCeVVybCh0aGlzLmVkaXRpb25TdGFydFVybCk7XG4gIH1cblxuICBhZGRNZXRhZGF0YShtZXRhZGF0YTogTWV0YUV2ZW50VHlwZSkge1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goXG4gICAgICBEYXNoYm9hcmRBY3Rpb25zLmFkZE1hbmlmZXN0TWV0YWRhdGEoe1xuICAgICAgICBwcmVzZW50YXRpb25JZDogdGhpcy5zZWxlY3RlZFByZXNlbnRhdGlvbiQudmFsdWU/LmlkISxcbiAgICAgICAgbWV0YWRhdGFJZDogbWV0YWRhdGEubWV0YWRhdGFJZCxcbiAgICAgICAgdmFsdWU6IG1ldGFkYXRhLnZhbHVlID8/ICcnXG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICByZW1vdmVNZXRhZGF0YShtZXRhZGF0YTogTWV0YUV2ZW50VHlwZSkge1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goXG4gICAgICBEYXNoYm9hcmRBY3Rpb25zLmRlbGV0ZU1hbmlmZXN0TWV0YWRhdGEoe1xuICAgICAgICBwcmVzZW50YXRpb25JZDogdGhpcy5zZWxlY3RlZFByZXNlbnRhdGlvbiQudmFsdWU/LmlkISxcbiAgICAgICAgbWV0YWRhdGFJZDogbWV0YWRhdGEubWV0YWRhdGFJZFxuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgY2xvc2UoKSB7XG4gICAgdGhpcy5nb0JhY2suZW1pdCgpO1xuICB9XG5cbiAgbWV0YWRhdGEoKSB7XG4gICAgcmV0dXJuIHRoaXMubW9kZSA9PT0gJ3RoZW1lJ1xuICAgICAgPyAhdGhpcy5mb3JtLnZhbHVlLnRoZW1lIHx8IHRoaXMuZm9ybS52YWx1ZS50aGVtZSA9PT0gJydcbiAgICAgICAgPyBbXVxuICAgICAgICA6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbWV0YWRhdGFEZWY6IHRoaXMubWV0YWRhdGFEZWZzIS5maW5kKChtZXRhZGF0YSkgPT4gbWV0YWRhdGEuaWQgPT09IHRoaXMubWV0YWRhdGFUaGVtZUlkKSEsXG4gICAgICAgICAgICAgIHZhbHVlOiB0aGlzLmZvcm0udmFsdWUudGhlbWUgPz8gJydcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBdXG4gICAgICA6IHRoaXMuc2VsZWN0ZWRQcmVzZW50YXRpb24kLnZhbHVlPy5tZXRhZGF0YSA/PyBbXTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cIm8tbWFuaWZlc3QtbGF5b3V0XCI+XG4gIDxkaXYgY2xhc3M9XCJvLW1hbmlmZXN0LWxheW91dF9fdG9vbGJveFwiPlxuICAgIDxidXR0b24gY2xhc3M9XCJhLWJ0biBhLWJ0bi0tc2Vjb25kYXJ5XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJjbG9zZSgpXCI+XG4gICAgICB7eyAnQHByeS50b29sYm94Lm1hbmlmZXN0LmNsb3NlJyB8IGkxOG4gfX1cbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uIGNsYXNzPVwiYS1idG4gYS1idG4tLXByaW1hcnlcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInNhdmUoKVwiIFtkaXNhYmxlZF09XCJmb3JtLmludmFsaWRcIj5cbiAgICAgIHt7ICdAcHJ5LnRvb2xib3gubWFuaWZlc3QuY2hlY2snIHwgaTE4biB9fVxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cIm8tbWFuaWZlc3QtbGF5b3V0X19jb250ZW50LS1wcmVzZW50YXRpb25cIj5cbiAgICA8aDEgY2xhc3M9XCJhLWgxXCI+e3sgJ0BwcnkucHJlc2VudGF0aW9uLmFkZCcgKyAnLnBhZ2VUaXRsZScgfCBpMThuIH19PC9oMT5cbiAgICA8ZGl2IGNsYXNzPVwiby1wcmVzZW50YXRpb24tZm9ybS13cmFwcGVyXCI+XG4gICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1cIiBjbGFzcz1cIm8tcHJlc2VudGF0aW9uLWZvcm1cIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm0tZm9ybS1sYWJlbC1maWVsZCAtd2lkdGgtZnVsbFwiPlxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImEtbGFiZWxcIiBmb3I9XCJwcmVzZW50YXRpb25fbmFtZVwiPnt7ICdAcHJ5LnByZXNlbnRhdGlvbi5mb3JtLm5hbWUnIHwgaTE4biB9fTwvbGFiZWw+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICBpZD1cInByZXNlbnRhdGlvbl9uYW1lXCJcbiAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cIm5hbWVcIlxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyAnQHByeS5wcmVzZW50YXRpb24uZm9ybS5uYW1lJyB8IGkxOG4gfX1cIlxuICAgICAgICAgICAgY2xhc3M9XCJhLWZvcm0tZmllbGRcIlxuICAgICAgICAgICAgbWF4bGVuZ3RoPVwiNTBcIlxuICAgICAgICAgICAgcmVxdWlyZWRcbiAgICAgICAgICAvPlxuICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgZm9yPVwicHJlc2VudGF0aW9uX25hbWVcIlxuICAgICAgICAgICAgKm5nSWY9XCJmb3JtLmdldCgnbmFtZScpPy50b3VjaGVkICYmIGZvcm0uZ2V0KCduYW1lJyk/Lmhhc0Vycm9yKCdyZXF1aXJlZCcpXCJcbiAgICAgICAgICAgIGNsYXNzPVwiYS1sYWJlbCBhLWxhYmVsLS1oZWxwIC1lcnJvclwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgJ0BwcnkucHJlc2VudGF0aW9uLnJlcXVpcmVkJyB8IGkxOG4gfX1cbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgZm9yPVwicHJlc2VudGF0aW9uX25hbWVcIlxuICAgICAgICAgICAgKm5nSWY9XCJmb3JtLmdldCgnbmFtZScpPy5oYXNFcnJvcignbWF4bGVuZ3RoJylcIlxuICAgICAgICAgICAgY2xhc3M9XCJhLWxhYmVsIGEtbGFiZWwtLWhlbHAgLWVycm9yXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyAnQHByeS5wcmVzZW50YXRpb24ubWF4TGVuZ3RoJyB8IGkxOG4gOiB7IGxlbjogJzUwJyB9IH19XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtLWZvcm0tbGFiZWwtZmllbGQgLXdpZHRoLWZ1bGxcIj5cbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJhLWxhYmVsXCIgZm9yPVwicHJlc2VudGF0aW9uX2Rlc2NyaXB0aW9uXCI+e3tcbiAgICAgICAgICAgICdAcHJ5LnByZXNlbnRhdGlvbi5mb3JtLmRlc2NyaXB0aW9uJyB8IGkxOG5cbiAgICAgICAgICB9fTwvbGFiZWw+XG4gICAgICAgICAgPHRleHRhcmVhXG4gICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJkZXNjcmlwdGlvblwiXG4gICAgICAgICAgICBpZD1cInByZXNlbnRhdGlvbl9kZXNjcmlwdGlvblwiXG4gICAgICAgICAgICBuYW1lPVwiZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgY29scz1cIjMwXCJcbiAgICAgICAgICAgIHJvd3M9XCI1XCJcbiAgICAgICAgICAgIG1heGxlbmd0aD1cIjIwMFwiXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7ICdAcHJ5LnByZXNlbnRhdGlvbi5mb3JtLmRlc2NyaXB0aW9uJyB8IGkxOG4gfX1cIlxuICAgICAgICAgICAgY2xhc3M9XCJhLWZvcm0tZmllbGRcIlxuICAgICAgICAgID48L3RleHRhcmVhPlxuICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgZm9yPVwicHJlc2VudGF0aW9uX2Rlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgICpuZ0lmPVwiZm9ybS5nZXQoJ2Rlc2NyaXB0aW9uJyk/Lmhhc0Vycm9yKCdtYXhsZW5ndGgnKVwiXG4gICAgICAgICAgICBjbGFzcz1cImEtbGFiZWwgYS1sYWJlbC0taGVscCAtZXJyb3JcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7ICdAcHJ5LnByZXNlbnRhdGlvbi5tYXhMZW5ndGgnIHwgaTE4biA6IHsgbGVuOiAnMjAwJyB9IH19XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtLWZvcm0tbGFiZWwtZmllbGQgLXdpZHRoLWZ1bGxcIiAqbmdJZj1cIm1vZGUgPT09ICd0aGVtZSdcIj5cbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJhLWxhYmVsXCIgZm9yPVwicHJlc2VudGF0aW9uX3RoZW1lXCI+e3sgJ0BwcnkucHJlc2VudGF0aW9uLmZvcm0udGhlbWUnIHwgaTE4biB9fTwvbGFiZWw+XG4gICAgICAgICAgPHByeS1zZWxlY3RcbiAgICAgICAgICAgIGlkPVwicHJlc2VudGF0aW9uX3RoZW1lXCJcbiAgICAgICAgICAgIFtpdGVtc109XCJwb3NzaWJsZVRoZW1lc1wiXG4gICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ0aGVtZVwiXG4gICAgICAgICAgICBbY2xlYXJhYmxlXT1cInRydWVcIlxuICAgICAgICAgID48L3ByeS1zZWxlY3Q+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwibS1mb3JtLWxhYmVsLWZpZWxkIC13aWR0aC1mdWxsXCI+XG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwiYS1sYWJlbFwiIGZvcj1cInByZXNlbnRhdGlvbl9pbWFnZVwiPnt7ICdAcHJ5LnByZXNlbnRhdGlvbi5mb3JtLmltYWdlJyB8IGkxOG4gfX08L2xhYmVsPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJvLWZpbGUtaW5wdXRcIj5cbiAgICAgICAgICAgIDxwcnktc2VsZWN0LWltYWdlXG4gICAgICAgICAgICAgIGlkPVwicHJlc2VudGF0aW9uX2ltYWdlXCJcbiAgICAgICAgICAgICAgKGNoYW5nZWQpPVwiaW1hZ2UgPSAkZXZlbnRcIlxuICAgICAgICAgICAgICBbaWNvblVybF09XCJpbWFnZVwiXG4gICAgICAgICAgICAgIFttb2RlXT1cInR5cGVcIlxuICAgICAgICAgICAgPjwvcHJ5LXNlbGVjdC1pbWFnZT5cbiAgICAgICAgICAgIDxwcnktY2hlY2tib3ggZm9ybUNvbnRyb2xOYW1lPVwiY292ZXJcIiBuYW1lPVwiY292ZXJcIiBuZ0RlZmF1bHRDb250cm9sPlxuICAgICAgICAgICAgICB7eyAnQHByeS5wcmVzZW50YXRpb24uZm9ybS5jb3ZlcicgfCBpMThuIH19XG4gICAgICAgICAgICA8L3ByeS1jaGVja2JveD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtLWZvcm0tbGFiZWwtZmllbGQgLXdpZHRoLWZ1bGwgbS1mb3JtLWxhYmVsLWZpZWxkLS1pbmxpbmVcIj5cbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJhLWxhYmVsXCI+e3sgJ0BwcnkucHJlc2VudGF0aW9uLmZvcm0uZ3JpZCcgfCBpMThuIH19PC9sYWJlbD5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImEtbGFiZWxcIj57eyAnQHByeS50b29sYm94LmxheW91dC4nICsgdGhpcy5jaG9zZW5MYXlvdXQgfCBpMThuIH19PC9zcGFuPlxuICAgICAgICAgIDxwcnktc2VsZWN0LWdyaWQtbGF5b3V0ICpuZ0lmPVwiIWVkaXRpb25cIj48L3ByeS1zZWxlY3QtZ3JpZC1sYXlvdXQ+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9mb3JtPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1vZGUgPT09ICdtZXRhJ1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiby1wcmVzZW50YXRpb25fX21ldGFkYXRhLWVkaXRvclwiICpuZ0lmPVwic2VsZWN0ZWRQcmVzZW50YXRpb24kIHwgYXN5bmMgYXMgc2VsZWN0ZWRQcmVzZW50YXRpb25cIj5cbiAgICAgICAgICA8cHJ5LW1ldGFkYXRhLWVkaXRvclxuICAgICAgICAgICAgW3RhcmdldElkXT1cInNlbGVjdGVkUHJlc2VudGF0aW9uLmlkXCJcbiAgICAgICAgICAgIFtpc01vZGlmaWNhdGlvbl09XCJ0cnVlXCJcbiAgICAgICAgICAgIFttZXRhZGF0YV09XCJzZWxlY3RlZFByZXNlbnRhdGlvbi5tZXRhZGF0YVwiXG4gICAgICAgICAgICAocmVtb3ZlTWV0YSk9XCJyZW1vdmVNZXRhZGF0YSgkZXZlbnQpXCJcbiAgICAgICAgICAgIChhZGRNZXRhKT1cImFkZE1ldGFkYXRhKCRldmVudClcIlxuICAgICAgICAgICAgW3R5cGVdPVwiJ21ldGEnXCJcbiAgICAgICAgICA+PC9wcnktbWV0YWRhdGEtZWRpdG9yPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICAgIDxidXR0b25cbiAgICAgIGNsYXNzPVwiYS1idG4gYS1idG4tLXByaW1hcnlcIlxuICAgICAgKGNsaWNrKT1cImNvbmZpZ3VyZURhc2hib2FyZChzZWxlY3RlZFByZXNlbnRhdGlvbiQudmFsdWUhKVwiXG4gICAgICBbZGlzYWJsZWRdPVwiZm9ybS5pbnZhbGlkXCJcbiAgICA+XG4gICAgICB7eyAnQHByeS5wcmVzZW50YXRpb24uY29uZmlndXJhdGlvbicgfCBpMThuIH19XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -197,11 +197,11 @@ export class PryPresentationComponent extends SubscriptionnerDirective {
197
197
  this.submit.nativeElement.focus();
198
198
  }
199
199
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PryPresentationComponent, deps: [{ token: i1.Store }, { token: i2.Overlay }, { token: i0.ViewContainerRef }, { token: i3.Router }, { token: i4.PryTitleService }, { token: i3.ActivatedRoute }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
200
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: PryPresentationComponent, selector: "pry-presentation", inputs: { editionStartUrl: "editionStartUrl", consultStartUrl: "consultStartUrl", meAsOwner: "meAsOwner", mode: "mode", listOfManifests: "listOfManifests", hideToolbox: "hideToolbox", search: "search" }, viewQueries: [{ propertyName: "templateModalActions", first: true, predicate: ["modalActions"], descendants: true, read: TemplateRef }, { propertyName: "template", first: true, predicate: ["modal"], descendants: true, read: TemplateRef }, { propertyName: "openModal", first: true, predicate: ["openModal"], descendants: true }, { propertyName: "confirm", first: true, predicate: ["confirm"], descendants: true }, { propertyName: "submit", first: true, predicate: ["submit"], descendants: true }, { propertyName: "cross", first: true, predicate: ["cross"], descendants: true }, { propertyName: "crossVisibility", first: true, predicate: ["crossVisibility"], descendants: true }, { propertyName: "visibilityModal", first: true, predicate: ["visibilityModal"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<pry-presentation-css></pry-presentation-css>\n<div class=\"o-manifest-layout\" [ngSwitch]=\"selectedMode\">\n <ng-container *ngSwitchDefault>\n <div class=\"o-manifest-layout__toolbox\" [class.-u-hidden]=\"hideToolbox\">\n <button\n class=\"a-btn a-btn--primary a-btn--icon-text a-tooltip\"\n [attr.data-tooltip]=\"'@pry.presentation.create' | i18n\"\n data-tooltip-position=\"bottom\"\n type=\"button\"\n (click)=\"creation()\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'create' }\"\n >\n {{ '@pry.presentation.create' | i18n }}\n </button>\n <div>\n <div class=\"o-manifest-layout__toolbox__search\">\n <label id=\"catalog-search-label\" for=\"catalog-search\" class=\"u-visually-hidden\">\n <span>{{ '@pry.toolbox.catalog.filter.name' | i18n }}</span>\n </label>\n <input\n id=\"catalog-search\"\n type=\"text\"\n class=\"a-form-field\"\n [placeholder]=\"'@pry.presentation.search' | i18n\"\n [ngModel]=\"search$ | async\"\n (ngModelChange)=\"this.search$.next($event)\"\n />\n <pry-icon class=\"search-icon\" iconSvg=\"search\" [width]=\"17\" [height]=\"17\"></pry-icon>\n </div>\n </div>\n </div>\n <div class=\"o-manifest-layout__content\">\n <h1 class=\"a-h1\">{{ '@pry.presentation.title' | i18n }}</h1>\n <div class=\"o-presentation-wrapper\">\n <ul class=\"o-presentation\">\n <li\n class=\"o-presentation__item\"\n *ngFor=\"let presentation of filteredPresentations$ | async; let index = index\"\n >\n <div class=\"o-presentation__item__header\">\n <ng-container *ngIf=\"presentation.visibility.type === PryVisibilityType.PRIVATE\">\n <pry-icon\n [iconSvg]=\"presentation.visibility.type.toLowerCase()\"\n class=\"is-private a-tooltip\"\n [attr.data-tooltip]=\"'@pry.presentation.private' | i18n\"\n [height]=\"17\"\n [width]=\"17\"\n ></pry-icon>\n </ng-container>\n <div\n class=\"a-tooltip\"\n (click)=\"fetch(presentation)\"\n [attr.data-tooltip]=\"'@pry.presentation.view' | i18n\"\n >\n <div class=\"o-presentation__item__image\">\n <img\n alt=\"\"\n [height]=\"presentation.cover ? 600 : 100\"\n [width]=\"presentation.cover ? 600 : 100\"\n [class.is-full-width]=\"presentation.cover\"\n [src]=\"presentation.image | getSecuredImage | async\"\n />\n </div>\n </div>\n <ng-container *ngIf=\"presentation.owner\">\n <div class=\"more-actions\" *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'share' }\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--more a-tooltip\"\n [id]=\"'more-actions-' + index\"\n [attr.data-tooltip]=\"'@pry.restitution.more' | i18n\"\n (click)=\"$event.stopPropagation(); toggleModalActions(presentation, button)\"\n #button\n >\n <pry-icon [height]=\"25\" [width]=\"25\" iconSvg=\"more_horiz\"></pry-icon>\n </button>\n </div>\n </ng-container>\n </div>\n <div class=\"o-presentation__item__txt\" (click)=\"fetch(presentation)\">\n <h3 class=\"a-h3\">{{ presentation.name }}</h3>\n <div class=\"o-presentation__item__description-container\" ellipsis textElementSelector=\".a-p\">\n <div class=\"o-presentation__item__description a-p\">\n {{ presentation.description }}\n </div>\n </div>\n <p class=\"a-p -date\">{{ presentation.modificationDate | sinceDate }}</p>\n </div>\n <div\n class=\"o-presentation__item__footer a-tooltip\"\n (click)=\"fetch(presentation)\"\n [attr.data-tooltip]=\"'@pry.presentation.view' | i18n\"\n >\n <button class=\"a-btn\">\n {{ '@pry.presentation.consult' | i18n }}\n <pry-icon [width]=\"20\" [height]=\"20\" iconSvg=\"arrow_right\"></pry-icon>\n </button>\n </div>\n </li>\n </ul>\n </div>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"ViewMode.CREATION\">\n <pry-add-edit-presentation\n [selectedPresentation]=\"selectedPresentation$ | async\"\n (goBack)=\"closeRestitution()\"\n [editionStartUrl]=\"editionStartUrl\"\n [edition]=\"false\"\n [mode]=\"mode\"\n ></pry-add-edit-presentation>\n </ng-container>\n <ng-container *ngSwitchCase=\"ViewMode.EDITION\">\n <pry-add-edit-presentation\n [selectedPresentation]=\"selectedPresentation$ | async\"\n (goBack)=\"closeRestitution()\"\n [editionStartUrl]=\"editionStartUrl\"\n [edition]=\"true\"\n [mode]=\"mode\"\n ></pry-add-edit-presentation>\n </ng-container>\n</div>\n\n<ng-template #modal>\n <div\n class=\"o-modal\"\n #visibilityModal\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=\"dialog change visibility\"\n *ngIf=\"selectedPresentation$ | async as selectedPresentation\"\n >\n <div class=\"o-modal__top\">\n <div class=\"o-modal__top__title\">\n <h2 class=\"a-h2\" id=\"dialog_title\">{{ '@pry.toolbox.share' | i18n }}</h2>\n </div>\n <div class=\"o-modal__top__close\">\n <button\n class=\"a-btn a-btn--icon-only\"\n #crossVisibility\n (keydown.shift.tab)=\"focusValidation()\"\n (click)=\"toggleModal()\"\n >\n <pry-icon iconSvg=\"close\" [height]=\"35\" [width]=\"35\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.toolbox.close' | i18n }}</span>\n </button>\n </div>\n </div>\n <pry-share [ngModel]=\"selectedPresentation.visibility\" (ngModelChange)=\"visibility = $event\"></pry-share>\n <div class=\"m-btn-group\">\n <button type=\"button\" class=\"a-btn a-btn--secondary\" (click)=\"toggleModal()\">\n {{ '@pry.toolbox.manifest.close' | i18n }}\n </button>\n <button\n type=\"submit\"\n class=\"a-btn a-btn--primary\"\n #submit\n (keydown.tab)=\"focusCrossElement()\"\n (click)=\"changeVisibility(selectedPresentation)\"\n >\n {{ '@pry.toolbox.manifest.check' | i18n }}\n </button>\n </div>\n </div>\n</ng-template>\n<ng-template #modalActions>\n <div class=\"m-context-menu\">\n <ul\n class=\"m-context-menu__list\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=\"dialog presentation options\"\n *ngIf=\"selectedPresentation$ | async as selectedPresentation\"\n >\n <li class=\"m-context-menu__list__item\">\n <button\n class=\"a-btn -link-like\"\n (click)=\"edit(selectedPresentation)\"\n [disabled]=\"!selectedPresentation.owner\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'edit' }\"\n >\n {{ '@pry.presentation.edition' | i18n }}\n </button>\n </li>\n <li class=\"m-context-menu__list__item\">\n <button\n (click)=\"toggleModal(selectedPresentation)\"\n class=\"a-btn -link-like\"\n aria-haspopup=\"dialog\"\n [disabled]=\"!selectedPresentation.owner\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'share' }\"\n >\n {{ '@pry.presentation.share' | i18n }}\n </button>\n </li>\n <li class=\"m-context-menu__list__item\">\n <button\n class=\"a-btn -link-like\"\n #openModal\n (click)=\"delete(selectedPresentation.id)\"\n [disabled]=\"!selectedPresentation.owner\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'delete' }\"\n >\n {{ '@pry.presentation.delete' | i18n }}\n </button>\n </li>\n </ul>\n </div>\n</ng-template>\n", dependencies: [{ kind: "component", type: i4.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "directive", type: i4.PryAccessDirective, selector: "[pryAccess]", inputs: ["pryAccess"] }, { kind: "directive", type: i4.EllipsisDirective, selector: "[ellipsis]", inputs: ["textElementSelector"] }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "component", type: i4.PryShareComponent, selector: "pry-share", inputs: ["value", "labelProperty", "valueProperty", "users$"] }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i6.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i6.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "component", type: i7.PryAddEditPresentationComponent, selector: "pry-add-edit-presentation", inputs: ["edition", "editionStartUrl", "selectedPresentation", "mode"], outputs: ["goBack"] }, { kind: "component", type: i8.PryPresentationCssComponent, selector: "pry-presentation-css" }, { kind: "pipe", type: i4.GetSecuredImagePipe, name: "getSecuredImage" }, { kind: "pipe", type: i9.PrySinceDatePipe, name: "sinceDate" }, { kind: "pipe", type: i4.I18nPipe, name: "i18n" }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }] }); }
200
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: PryPresentationComponent, selector: "pry-presentation", inputs: { editionStartUrl: "editionStartUrl", consultStartUrl: "consultStartUrl", meAsOwner: "meAsOwner", mode: "mode", listOfManifests: "listOfManifests", hideToolbox: "hideToolbox", search: "search" }, viewQueries: [{ propertyName: "templateModalActions", first: true, predicate: ["modalActions"], descendants: true, read: TemplateRef }, { propertyName: "template", first: true, predicate: ["modal"], descendants: true, read: TemplateRef }, { propertyName: "openModal", first: true, predicate: ["openModal"], descendants: true }, { propertyName: "confirm", first: true, predicate: ["confirm"], descendants: true }, { propertyName: "submit", first: true, predicate: ["submit"], descendants: true }, { propertyName: "cross", first: true, predicate: ["cross"], descendants: true }, { propertyName: "crossVisibility", first: true, predicate: ["crossVisibility"], descendants: true }, { propertyName: "visibilityModal", first: true, predicate: ["visibilityModal"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<pry-presentation-css></pry-presentation-css>\n<div class=\"o-manifest-layout\" [ngSwitch]=\"selectedMode\">\n <ng-container *ngSwitchDefault>\n <div class=\"o-manifest-layout__toolbox\" [class.-u-hidden]=\"hideToolbox\">\n <button\n class=\"a-btn a-btn--primary a-btn--icon-text a-tooltip\"\n [attr.data-tooltip]=\"'@pry.presentation.create' | i18n\"\n data-tooltip-position=\"bottom\"\n type=\"button\"\n (click)=\"creation()\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'create' }\"\n >\n {{ '@pry.presentation.create' | i18n }}\n </button>\n <div>\n <div class=\"o-manifest-layout__toolbox__search\">\n <label id=\"catalog-search-label\" for=\"catalog-search\" class=\"u-visually-hidden\">\n <span>{{ '@pry.toolbox.catalog.filter.name' | i18n }}</span>\n </label>\n <input\n id=\"catalog-search\"\n type=\"text\"\n class=\"a-form-field\"\n [placeholder]=\"'@pry.presentation.search' | i18n\"\n [ngModel]=\"search$ | async\"\n (ngModelChange)=\"this.search$.next($event)\"\n />\n <pry-icon class=\"search-icon\" iconSvg=\"search\" [width]=\"17\" [height]=\"17\"></pry-icon>\n </div>\n </div>\n </div>\n <div class=\"o-manifest-layout__content\">\n <h1 class=\"a-h1\">{{ '@pry.presentation.title' | i18n }}</h1>\n <div class=\"o-presentation-wrapper\">\n <ul class=\"o-presentation\">\n <li\n class=\"o-presentation__item\"\n *ngFor=\"let presentation of filteredPresentations$ | async; let index = index\"\n >\n <div class=\"o-presentation__item__header\">\n <ng-container *ngIf=\"presentation.visibility.type === PryVisibilityType.PRIVATE\">\n <pry-icon\n [iconSvg]=\"presentation.visibility.type.toLowerCase()\"\n class=\"is-private a-tooltip -tooltip-no-wrap\"\n [attr.data-tooltip]=\"'@pry.presentation.private' | i18n\"\n [height]=\"17\"\n [width]=\"17\"\n ></pry-icon>\n </ng-container>\n <div\n class=\"a-tooltip -tooltip-no-wrap\"\n (click)=\"fetch(presentation)\"\n [attr.data-tooltip]=\"'@pry.presentation.view' | i18n\"\n >\n <div class=\"o-presentation__item__image\">\n <img\n alt=\"\"\n [height]=\"presentation.cover ? 600 : 100\"\n [width]=\"presentation.cover ? 600 : 100\"\n [class.is-full-width]=\"presentation.cover\"\n [src]=\"presentation.image | getSecuredImage | async\"\n />\n </div>\n </div>\n <ng-container *ngIf=\"presentation.owner\">\n <div class=\"more-button\" *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'share' }\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--more a-tooltip -tooltip-no-wrap\"\n [id]=\"'more-button-' + index\"\n [attr.data-tooltip]=\"'@pry.restitution.more' | i18n\"\n (click)=\"$event.stopPropagation(); toggleModalActions(presentation, button)\"\n #button\n >\n <pry-icon [height]=\"25\" [width]=\"25\" iconSvg=\"more_horiz\"></pry-icon>\n </button>\n </div>\n </ng-container>\n </div>\n <div class=\"o-presentation__item__txt\" (click)=\"fetch(presentation)\">\n <h3 class=\"a-h3\">{{ presentation.name }}</h3>\n <div class=\"o-presentation__item__description-container\" ellipsis textElementSelector=\".a-p\">\n <div class=\"o-presentation__item__description a-p\">\n {{ presentation.description }}\n </div>\n </div>\n <p class=\"a-p -date\">{{ presentation.modificationDate | sinceDate }}</p>\n </div>\n <div\n class=\"o-presentation__item__footer a-tooltip -tooltip-no-wrap\"\n (click)=\"fetch(presentation)\"\n [attr.data-tooltip]=\"'@pry.presentation.view' | i18n\"\n >\n <button class=\"a-btn\">\n {{ '@pry.presentation.consult' | i18n }}\n <pry-icon [width]=\"20\" [height]=\"20\" iconSvg=\"arrow_right\"></pry-icon>\n </button>\n </div>\n </li>\n </ul>\n </div>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"ViewMode.CREATION\">\n <pry-add-edit-presentation\n [selectedPresentation]=\"selectedPresentation$ | async\"\n (goBack)=\"closeRestitution()\"\n [editionStartUrl]=\"editionStartUrl\"\n [edition]=\"false\"\n [mode]=\"mode\"\n ></pry-add-edit-presentation>\n </ng-container>\n <ng-container *ngSwitchCase=\"ViewMode.EDITION\">\n <pry-add-edit-presentation\n [selectedPresentation]=\"selectedPresentation$ | async\"\n (goBack)=\"closeRestitution()\"\n [editionStartUrl]=\"editionStartUrl\"\n [edition]=\"true\"\n [mode]=\"mode\"\n ></pry-add-edit-presentation>\n </ng-container>\n</div>\n\n<ng-template #modal>\n <div\n class=\"o-modal\"\n #visibilityModal\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=\"dialog change visibility\"\n *ngIf=\"selectedPresentation$ | async as selectedPresentation\"\n >\n <div class=\"o-modal__top\">\n <div class=\"o-modal__top__title\">\n <h2 class=\"a-h2\" id=\"dialog_title\">{{ '@pry.toolbox.share' | i18n }}</h2>\n </div>\n <div class=\"o-modal__top__close\">\n <button\n class=\"a-btn a-btn--icon-only\"\n #crossVisibility\n (keydown.shift.tab)=\"focusValidation()\"\n (click)=\"toggleModal()\"\n >\n <pry-icon iconSvg=\"close\" [height]=\"35\" [width]=\"35\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.toolbox.close' | i18n }}</span>\n </button>\n </div>\n </div>\n <pry-share [ngModel]=\"selectedPresentation.visibility\" (ngModelChange)=\"visibility = $event\"></pry-share>\n <div class=\"m-btn-group\">\n <button type=\"button\" class=\"a-btn a-btn--secondary\" (click)=\"toggleModal()\">\n {{ '@pry.toolbox.manifest.close' | i18n }}\n </button>\n <button\n type=\"submit\"\n class=\"a-btn a-btn--primary\"\n #submit\n (keydown.tab)=\"focusCrossElement()\"\n (click)=\"changeVisibility(selectedPresentation)\"\n >\n {{ '@pry.toolbox.manifest.check' | i18n }}\n </button>\n </div>\n </div>\n</ng-template>\n<ng-template #modalActions>\n <div class=\"m-context-menu\">\n <ul\n class=\"m-context-menu__list\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=\"dialog presentation options\"\n *ngIf=\"selectedPresentation$ | async as selectedPresentation\"\n >\n <li class=\"m-context-menu__list__item\">\n <button\n class=\"a-btn -link-like\"\n (click)=\"edit(selectedPresentation)\"\n [disabled]=\"!selectedPresentation.owner\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'edit' }\"\n >\n {{ '@pry.presentation.edition' | i18n }}\n </button>\n </li>\n <li class=\"m-context-menu__list__item\">\n <button\n (click)=\"toggleModal(selectedPresentation)\"\n class=\"a-btn -link-like\"\n aria-haspopup=\"dialog\"\n [disabled]=\"!selectedPresentation.owner\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'share' }\"\n >\n {{ '@pry.presentation.share' | i18n }}\n </button>\n </li>\n <li class=\"m-context-menu__list__item\">\n <button\n class=\"a-btn -link-like\"\n #openModal\n (click)=\"delete(selectedPresentation.id)\"\n [disabled]=\"!selectedPresentation.owner\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'delete' }\"\n >\n {{ '@pry.presentation.delete' | i18n }}\n </button>\n </li>\n </ul>\n </div>\n</ng-template>\n", dependencies: [{ kind: "component", type: i4.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "directive", type: i4.PryAccessDirective, selector: "[pryAccess]", inputs: ["pryAccess"] }, { kind: "directive", type: i4.EllipsisDirective, selector: "[ellipsis]", inputs: ["textElementSelector"] }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "component", type: i4.PryShareComponent, selector: "pry-share", inputs: ["value", "labelProperty", "valueProperty", "users$"] }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i6.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i6.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "component", type: i7.PryAddEditPresentationComponent, selector: "pry-add-edit-presentation", inputs: ["edition", "editionStartUrl", "selectedPresentation", "mode"], outputs: ["goBack"] }, { kind: "component", type: i8.PryPresentationCssComponent, selector: "pry-presentation-css" }, { kind: "pipe", type: i4.GetSecuredImagePipe, name: "getSecuredImage" }, { kind: "pipe", type: i9.PrySinceDatePipe, name: "sinceDate" }, { kind: "pipe", type: i4.I18nPipe, name: "i18n" }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }] }); }
201
201
  }
202
202
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PryPresentationComponent, decorators: [{
203
203
  type: Component,
204
- args: [{ selector: 'pry-presentation', template: "<pry-presentation-css></pry-presentation-css>\n<div class=\"o-manifest-layout\" [ngSwitch]=\"selectedMode\">\n <ng-container *ngSwitchDefault>\n <div class=\"o-manifest-layout__toolbox\" [class.-u-hidden]=\"hideToolbox\">\n <button\n class=\"a-btn a-btn--primary a-btn--icon-text a-tooltip\"\n [attr.data-tooltip]=\"'@pry.presentation.create' | i18n\"\n data-tooltip-position=\"bottom\"\n type=\"button\"\n (click)=\"creation()\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'create' }\"\n >\n {{ '@pry.presentation.create' | i18n }}\n </button>\n <div>\n <div class=\"o-manifest-layout__toolbox__search\">\n <label id=\"catalog-search-label\" for=\"catalog-search\" class=\"u-visually-hidden\">\n <span>{{ '@pry.toolbox.catalog.filter.name' | i18n }}</span>\n </label>\n <input\n id=\"catalog-search\"\n type=\"text\"\n class=\"a-form-field\"\n [placeholder]=\"'@pry.presentation.search' | i18n\"\n [ngModel]=\"search$ | async\"\n (ngModelChange)=\"this.search$.next($event)\"\n />\n <pry-icon class=\"search-icon\" iconSvg=\"search\" [width]=\"17\" [height]=\"17\"></pry-icon>\n </div>\n </div>\n </div>\n <div class=\"o-manifest-layout__content\">\n <h1 class=\"a-h1\">{{ '@pry.presentation.title' | i18n }}</h1>\n <div class=\"o-presentation-wrapper\">\n <ul class=\"o-presentation\">\n <li\n class=\"o-presentation__item\"\n *ngFor=\"let presentation of filteredPresentations$ | async; let index = index\"\n >\n <div class=\"o-presentation__item__header\">\n <ng-container *ngIf=\"presentation.visibility.type === PryVisibilityType.PRIVATE\">\n <pry-icon\n [iconSvg]=\"presentation.visibility.type.toLowerCase()\"\n class=\"is-private a-tooltip\"\n [attr.data-tooltip]=\"'@pry.presentation.private' | i18n\"\n [height]=\"17\"\n [width]=\"17\"\n ></pry-icon>\n </ng-container>\n <div\n class=\"a-tooltip\"\n (click)=\"fetch(presentation)\"\n [attr.data-tooltip]=\"'@pry.presentation.view' | i18n\"\n >\n <div class=\"o-presentation__item__image\">\n <img\n alt=\"\"\n [height]=\"presentation.cover ? 600 : 100\"\n [width]=\"presentation.cover ? 600 : 100\"\n [class.is-full-width]=\"presentation.cover\"\n [src]=\"presentation.image | getSecuredImage | async\"\n />\n </div>\n </div>\n <ng-container *ngIf=\"presentation.owner\">\n <div class=\"more-actions\" *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'share' }\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--more a-tooltip\"\n [id]=\"'more-actions-' + index\"\n [attr.data-tooltip]=\"'@pry.restitution.more' | i18n\"\n (click)=\"$event.stopPropagation(); toggleModalActions(presentation, button)\"\n #button\n >\n <pry-icon [height]=\"25\" [width]=\"25\" iconSvg=\"more_horiz\"></pry-icon>\n </button>\n </div>\n </ng-container>\n </div>\n <div class=\"o-presentation__item__txt\" (click)=\"fetch(presentation)\">\n <h3 class=\"a-h3\">{{ presentation.name }}</h3>\n <div class=\"o-presentation__item__description-container\" ellipsis textElementSelector=\".a-p\">\n <div class=\"o-presentation__item__description a-p\">\n {{ presentation.description }}\n </div>\n </div>\n <p class=\"a-p -date\">{{ presentation.modificationDate | sinceDate }}</p>\n </div>\n <div\n class=\"o-presentation__item__footer a-tooltip\"\n (click)=\"fetch(presentation)\"\n [attr.data-tooltip]=\"'@pry.presentation.view' | i18n\"\n >\n <button class=\"a-btn\">\n {{ '@pry.presentation.consult' | i18n }}\n <pry-icon [width]=\"20\" [height]=\"20\" iconSvg=\"arrow_right\"></pry-icon>\n </button>\n </div>\n </li>\n </ul>\n </div>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"ViewMode.CREATION\">\n <pry-add-edit-presentation\n [selectedPresentation]=\"selectedPresentation$ | async\"\n (goBack)=\"closeRestitution()\"\n [editionStartUrl]=\"editionStartUrl\"\n [edition]=\"false\"\n [mode]=\"mode\"\n ></pry-add-edit-presentation>\n </ng-container>\n <ng-container *ngSwitchCase=\"ViewMode.EDITION\">\n <pry-add-edit-presentation\n [selectedPresentation]=\"selectedPresentation$ | async\"\n (goBack)=\"closeRestitution()\"\n [editionStartUrl]=\"editionStartUrl\"\n [edition]=\"true\"\n [mode]=\"mode\"\n ></pry-add-edit-presentation>\n </ng-container>\n</div>\n\n<ng-template #modal>\n <div\n class=\"o-modal\"\n #visibilityModal\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=\"dialog change visibility\"\n *ngIf=\"selectedPresentation$ | async as selectedPresentation\"\n >\n <div class=\"o-modal__top\">\n <div class=\"o-modal__top__title\">\n <h2 class=\"a-h2\" id=\"dialog_title\">{{ '@pry.toolbox.share' | i18n }}</h2>\n </div>\n <div class=\"o-modal__top__close\">\n <button\n class=\"a-btn a-btn--icon-only\"\n #crossVisibility\n (keydown.shift.tab)=\"focusValidation()\"\n (click)=\"toggleModal()\"\n >\n <pry-icon iconSvg=\"close\" [height]=\"35\" [width]=\"35\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.toolbox.close' | i18n }}</span>\n </button>\n </div>\n </div>\n <pry-share [ngModel]=\"selectedPresentation.visibility\" (ngModelChange)=\"visibility = $event\"></pry-share>\n <div class=\"m-btn-group\">\n <button type=\"button\" class=\"a-btn a-btn--secondary\" (click)=\"toggleModal()\">\n {{ '@pry.toolbox.manifest.close' | i18n }}\n </button>\n <button\n type=\"submit\"\n class=\"a-btn a-btn--primary\"\n #submit\n (keydown.tab)=\"focusCrossElement()\"\n (click)=\"changeVisibility(selectedPresentation)\"\n >\n {{ '@pry.toolbox.manifest.check' | i18n }}\n </button>\n </div>\n </div>\n</ng-template>\n<ng-template #modalActions>\n <div class=\"m-context-menu\">\n <ul\n class=\"m-context-menu__list\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=\"dialog presentation options\"\n *ngIf=\"selectedPresentation$ | async as selectedPresentation\"\n >\n <li class=\"m-context-menu__list__item\">\n <button\n class=\"a-btn -link-like\"\n (click)=\"edit(selectedPresentation)\"\n [disabled]=\"!selectedPresentation.owner\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'edit' }\"\n >\n {{ '@pry.presentation.edition' | i18n }}\n </button>\n </li>\n <li class=\"m-context-menu__list__item\">\n <button\n (click)=\"toggleModal(selectedPresentation)\"\n class=\"a-btn -link-like\"\n aria-haspopup=\"dialog\"\n [disabled]=\"!selectedPresentation.owner\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'share' }\"\n >\n {{ '@pry.presentation.share' | i18n }}\n </button>\n </li>\n <li class=\"m-context-menu__list__item\">\n <button\n class=\"a-btn -link-like\"\n #openModal\n (click)=\"delete(selectedPresentation.id)\"\n [disabled]=\"!selectedPresentation.owner\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'delete' }\"\n >\n {{ '@pry.presentation.delete' | i18n }}\n </button>\n </li>\n </ul>\n </div>\n</ng-template>\n" }]
204
+ args: [{ selector: 'pry-presentation', template: "<pry-presentation-css></pry-presentation-css>\n<div class=\"o-manifest-layout\" [ngSwitch]=\"selectedMode\">\n <ng-container *ngSwitchDefault>\n <div class=\"o-manifest-layout__toolbox\" [class.-u-hidden]=\"hideToolbox\">\n <button\n class=\"a-btn a-btn--primary a-btn--icon-text a-tooltip\"\n [attr.data-tooltip]=\"'@pry.presentation.create' | i18n\"\n data-tooltip-position=\"bottom\"\n type=\"button\"\n (click)=\"creation()\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'create' }\"\n >\n {{ '@pry.presentation.create' | i18n }}\n </button>\n <div>\n <div class=\"o-manifest-layout__toolbox__search\">\n <label id=\"catalog-search-label\" for=\"catalog-search\" class=\"u-visually-hidden\">\n <span>{{ '@pry.toolbox.catalog.filter.name' | i18n }}</span>\n </label>\n <input\n id=\"catalog-search\"\n type=\"text\"\n class=\"a-form-field\"\n [placeholder]=\"'@pry.presentation.search' | i18n\"\n [ngModel]=\"search$ | async\"\n (ngModelChange)=\"this.search$.next($event)\"\n />\n <pry-icon class=\"search-icon\" iconSvg=\"search\" [width]=\"17\" [height]=\"17\"></pry-icon>\n </div>\n </div>\n </div>\n <div class=\"o-manifest-layout__content\">\n <h1 class=\"a-h1\">{{ '@pry.presentation.title' | i18n }}</h1>\n <div class=\"o-presentation-wrapper\">\n <ul class=\"o-presentation\">\n <li\n class=\"o-presentation__item\"\n *ngFor=\"let presentation of filteredPresentations$ | async; let index = index\"\n >\n <div class=\"o-presentation__item__header\">\n <ng-container *ngIf=\"presentation.visibility.type === PryVisibilityType.PRIVATE\">\n <pry-icon\n [iconSvg]=\"presentation.visibility.type.toLowerCase()\"\n class=\"is-private a-tooltip -tooltip-no-wrap\"\n [attr.data-tooltip]=\"'@pry.presentation.private' | i18n\"\n [height]=\"17\"\n [width]=\"17\"\n ></pry-icon>\n </ng-container>\n <div\n class=\"a-tooltip -tooltip-no-wrap\"\n (click)=\"fetch(presentation)\"\n [attr.data-tooltip]=\"'@pry.presentation.view' | i18n\"\n >\n <div class=\"o-presentation__item__image\">\n <img\n alt=\"\"\n [height]=\"presentation.cover ? 600 : 100\"\n [width]=\"presentation.cover ? 600 : 100\"\n [class.is-full-width]=\"presentation.cover\"\n [src]=\"presentation.image | getSecuredImage | async\"\n />\n </div>\n </div>\n <ng-container *ngIf=\"presentation.owner\">\n <div class=\"more-button\" *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'share' }\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--more a-tooltip -tooltip-no-wrap\"\n [id]=\"'more-button-' + index\"\n [attr.data-tooltip]=\"'@pry.restitution.more' | i18n\"\n (click)=\"$event.stopPropagation(); toggleModalActions(presentation, button)\"\n #button\n >\n <pry-icon [height]=\"25\" [width]=\"25\" iconSvg=\"more_horiz\"></pry-icon>\n </button>\n </div>\n </ng-container>\n </div>\n <div class=\"o-presentation__item__txt\" (click)=\"fetch(presentation)\">\n <h3 class=\"a-h3\">{{ presentation.name }}</h3>\n <div class=\"o-presentation__item__description-container\" ellipsis textElementSelector=\".a-p\">\n <div class=\"o-presentation__item__description a-p\">\n {{ presentation.description }}\n </div>\n </div>\n <p class=\"a-p -date\">{{ presentation.modificationDate | sinceDate }}</p>\n </div>\n <div\n class=\"o-presentation__item__footer a-tooltip -tooltip-no-wrap\"\n (click)=\"fetch(presentation)\"\n [attr.data-tooltip]=\"'@pry.presentation.view' | i18n\"\n >\n <button class=\"a-btn\">\n {{ '@pry.presentation.consult' | i18n }}\n <pry-icon [width]=\"20\" [height]=\"20\" iconSvg=\"arrow_right\"></pry-icon>\n </button>\n </div>\n </li>\n </ul>\n </div>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"ViewMode.CREATION\">\n <pry-add-edit-presentation\n [selectedPresentation]=\"selectedPresentation$ | async\"\n (goBack)=\"closeRestitution()\"\n [editionStartUrl]=\"editionStartUrl\"\n [edition]=\"false\"\n [mode]=\"mode\"\n ></pry-add-edit-presentation>\n </ng-container>\n <ng-container *ngSwitchCase=\"ViewMode.EDITION\">\n <pry-add-edit-presentation\n [selectedPresentation]=\"selectedPresentation$ | async\"\n (goBack)=\"closeRestitution()\"\n [editionStartUrl]=\"editionStartUrl\"\n [edition]=\"true\"\n [mode]=\"mode\"\n ></pry-add-edit-presentation>\n </ng-container>\n</div>\n\n<ng-template #modal>\n <div\n class=\"o-modal\"\n #visibilityModal\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=\"dialog change visibility\"\n *ngIf=\"selectedPresentation$ | async as selectedPresentation\"\n >\n <div class=\"o-modal__top\">\n <div class=\"o-modal__top__title\">\n <h2 class=\"a-h2\" id=\"dialog_title\">{{ '@pry.toolbox.share' | i18n }}</h2>\n </div>\n <div class=\"o-modal__top__close\">\n <button\n class=\"a-btn a-btn--icon-only\"\n #crossVisibility\n (keydown.shift.tab)=\"focusValidation()\"\n (click)=\"toggleModal()\"\n >\n <pry-icon iconSvg=\"close\" [height]=\"35\" [width]=\"35\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.toolbox.close' | i18n }}</span>\n </button>\n </div>\n </div>\n <pry-share [ngModel]=\"selectedPresentation.visibility\" (ngModelChange)=\"visibility = $event\"></pry-share>\n <div class=\"m-btn-group\">\n <button type=\"button\" class=\"a-btn a-btn--secondary\" (click)=\"toggleModal()\">\n {{ '@pry.toolbox.manifest.close' | i18n }}\n </button>\n <button\n type=\"submit\"\n class=\"a-btn a-btn--primary\"\n #submit\n (keydown.tab)=\"focusCrossElement()\"\n (click)=\"changeVisibility(selectedPresentation)\"\n >\n {{ '@pry.toolbox.manifest.check' | i18n }}\n </button>\n </div>\n </div>\n</ng-template>\n<ng-template #modalActions>\n <div class=\"m-context-menu\">\n <ul\n class=\"m-context-menu__list\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=\"dialog presentation options\"\n *ngIf=\"selectedPresentation$ | async as selectedPresentation\"\n >\n <li class=\"m-context-menu__list__item\">\n <button\n class=\"a-btn -link-like\"\n (click)=\"edit(selectedPresentation)\"\n [disabled]=\"!selectedPresentation.owner\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'edit' }\"\n >\n {{ '@pry.presentation.edition' | i18n }}\n </button>\n </li>\n <li class=\"m-context-menu__list__item\">\n <button\n (click)=\"toggleModal(selectedPresentation)\"\n class=\"a-btn -link-like\"\n aria-haspopup=\"dialog\"\n [disabled]=\"!selectedPresentation.owner\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'share' }\"\n >\n {{ '@pry.presentation.share' | i18n }}\n </button>\n </li>\n <li class=\"m-context-menu__list__item\">\n <button\n class=\"a-btn -link-like\"\n #openModal\n (click)=\"delete(selectedPresentation.id)\"\n [disabled]=\"!selectedPresentation.owner\"\n *pryAccess=\"{ module: 'dashboard', page: 'manifest', action: 'delete' }\"\n >\n {{ '@pry.presentation.delete' | i18n }}\n </button>\n </li>\n </ul>\n </div>\n</ng-template>\n" }]
205
205
  }], ctorParameters: function () { return [{ type: i1.Store }, { type: i2.Overlay }, { type: i0.ViewContainerRef }, { type: i3.Router }, { type: i4.PryTitleService }, { type: i3.ActivatedRoute }, { type: i0.NgZone }]; }, propDecorators: { templateModalActions: [{
206
206
  type: ViewChild,
207
207
  args: ['modalActions', { read: TemplateRef }]
@@ -241,4 +241,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
241
241
  }], search: [{
242
242
  type: Input
243
243
  }] } });
244
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlc2VudGF0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL3ByZXNlbnRhdGlvbi9jb21wb25lbnRzL3ByZXNlbnRhdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC9wcmVzZW50YXRpb24vY29tcG9uZW50cy9wcmVzZW50YXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFXLGFBQWEsRUFBYyxNQUFNLHNCQUFzQixDQUFDO0FBQzFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsU0FBUyxFQUFjLEtBQUssRUFBVSxXQUFXLEVBQUUsU0FBUyxFQUFvQixNQUFNLGVBQWUsQ0FBQztBQUcvRyxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLG1CQUFtQixFQUVuQixrQkFBa0IsRUFJbEIsaUJBQWlCLEVBQ2pCLHdCQUF3QixFQUN4QixRQUFRLEVBQ1QsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQWMsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7Ozs7O0FBTTFCLE1BQU0sT0FBTyx3QkFBeUIsU0FBUSx3QkFBd0I7SUEyQnBFLElBQWEsZUFBZSxDQUFDLFNBQXVDO1FBQ2xFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMxRSxDQUFDO0lBSUQsSUFBYSxNQUFNLENBQUMsS0FBYTtR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SUFBSSxDQUFDLEtBQUssRUFBRSxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDcEMsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDaEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDcEM7UUFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNwQyxDQUFDOytHQXBPVSx3QkFBd0I7bUdBQXhCLHdCQUF3QixxV0FPQSxXQUFXLDRGQUNsQixXQUFXLGdsQkNoQ3pDLDR4UUFpTkE7OzRGRHpMYSx3QkFBd0I7a0JBSnBDLFNBQVM7K0JBQ0Usa0JBQWtCO3NQQVVzQixvQkFBb0I7c0JBQXJFLFNBQVM7dUJBQUMsY0FBYyxFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRTtnQkFDTCxRQUFRO3NCQUFsRCxTQUFTO3VCQUFDLE9BQU8sRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7Z0JBQ2pCLFNBQVM7c0JBQWhDLFNBQVM7dUJBQUMsV0FBVztnQkFDQSxPQUFPO3NCQUE1QixTQUFTO3VCQUFDLFNBQVM7Z0JBQ0MsTUFBTTtzQkFBMUIsU0FBUzt1QkFBQyxRQUFRO2dCQUNDLEtBQUs7c0JBQXhCLFNBQVM7dUJBQUMsT0FBTztnQkFDWSxlQUFlO3NCQUE1QyxTQUFTO3VCQUFDLGlCQUFpQjtnQkFDRSxlQUFlO3NCQUE1QyxTQUFTO3VCQUFDLGlCQUFpQjtnQkFJbkIsZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBS0csSUFBSTtzQkFBWixLQUFLO2dCQUVPLGVBQWU7c0JBQTNCLEtBQUs7Z0JBSUcsV0FBVztzQkFBbkIsS0FBSztnQkFFTyxNQUFNO3NCQUFsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT3ZlcmxheSwgT3ZlcmxheUNvbmZpZywgT3ZlcmxheVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IFRlbXBsYXRlUG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIElucHV0LCBOZ1pvbmUsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQsIFZpZXdDb250YWluZXJSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQge1xuICBEYXNoYm9hcmRBY3Rpb25zLFxuICBEYXNoYm9hcmRHcmlkTGF5b3V0LFxuICBEYXNoYm9hcmRNYW5pZmVzdCxcbiAgRGFzaGJvYXJkU2VsZWN0b3JzLFxuICBNYW5pZmVzdERlc2NyaXB0aW9uLFxuICBQcnlUaXRsZVNlcnZpY2UsXG4gIFByeVZpc2liaWxpdHksXG4gIFByeVZpc2liaWxpdHlUeXBlLFxuICBTdWJzY3JpcHRpb25uZXJEaXJlY3RpdmUsXG4gIFZpZXdNb2RlXG59IGZyb20gJ0Bwcm92b2x5L2Rhc2hib2FyZCc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIG1hcCwgT2JzZXJ2YWJsZSwgc3RhcnRXaXRoIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB2NCB9IGZyb20gJ3V1aWQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwcnktcHJlc2VudGF0aW9uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3ByZXNlbnRhdGlvbi5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgUHJ5UHJlc2VudGF0aW9uQ29tcG9uZW50IGV4dGVuZHMgU3Vic2NyaXB0aW9ubmVyRGlyZWN0aXZlIHtcbiAgbWFuaWZlc3RzJDogT2JzZXJ2YWJsZTxNYW5pZmVzdERlc2NyaXB0aW9uW10+O1xuICBzZWxlY3RlZFByZXNlbnRhdGlvbiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1hbmlmZXN0RGVzY3JpcHRpb24gfCBudWxsPihudWxsKTtcbiAgcHJlc2VudGF0aW9uPzogTWFuaWZlc3REZXNjcmlwdGlvbjtcbiAgc3RhdGljTWFuaWZlc3QkPzogT2JzZXJ2YWJsZTxEYXNoYm9hcmRNYW5pZmVzdD47XG4gIHNlbGVjdGVkTW9kZTogVmlld01vZGUgPSBWaWV3TW9kZS5DQVRBTE9HO1xuICBtb2RhbE9wZW5lZCA9IGZhbHNlO1xuICBAVmlld0NoaWxkKCdtb2RhbEFjdGlvbnMnLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pIHRlbXBsYXRlTW9kYWxBY3Rpb25zITogVGVtcGxhdGVSZWY8YW55PjtcbiAgQFZpZXdDaGlsZCgnbW9kYWwnLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pIHRlbXBsYXRlITogVGVtcGxhdGVSZWY8YW55PjtcbiAgQFZpZXdDaGlsZCgnb3Blbk1vZGFsJykgb3Blbk1vZGFsITogRWxlbWVudFJlZjxIVE1MQnV0dG9uRWxlbWVudD47XG4gIEBWaWV3Q2hpbGQoJ2NvbmZpcm0nKSBjb25maXJtITogRWxlbWVudFJlZjxIVE1MQnV0dG9uRWxlbWVudD47XG4gIEBWaWV3Q2hpbGQoJ3N1Ym1pdCcpIHN1Ym1pdCE6IEVsZW1lbnRSZWY8SFRNTEJ1dHRvbkVsZW1lbnQ+O1xuICBAVmlld0NoaWxkKCdjcm9zcycpIGNyb3NzITogRWxlbWVudFJlZjxIVE1MQnV0dG9uRWxlbWVudD47XG4gIEBWaWV3Q2hpbGQoJ2Nyb3NzVmlzaWJpbGl0eScpIGNyb3NzVmlzaWJpbGl0eSE6IEVsZW1lbnRSZWY8SFRNTEJ1dHRvbkVsZW1lbnQ+O1xuICBAVmlld0NoaWxkKCd2aXNpYmlsaXR5TW9kYWwnKSB2aXNpYmlsaXR5TW9kYWwhOiBFbGVtZW50UmVmO1xuICBvdmVybGF5UmVmPzogT3ZlcmxheVJlZjtcbiAgdmlzaWJpbGl0eTogUHJ5VmlzaWJpbGl0eSA9IHsgdHlwZTogUHJ5VmlzaWJpbGl0eVR5cGUuUFJJVkFURSB9O1xuICBQcnlWaXNpYmlsaXR5VHlwZSA9IFByeVZpc2liaWxpdHlUeXBlO1xuICBASW5wdXQoKSBlZGl0aW9uU3RhcnRVcmw6IHN0cmluZyA9ICcvJztcbiAgQElucHV0KCkgY29uc3VsdFN0YXJ0VXJsOiBzdHJpbmcgPSAnLyc7XG4gIEBJbnB1dCgpIG1lQXNPd25lcj86IHN0cmluZztcbiAgVmlld01vZGUgPSBWaWV3TW9kZTtcbiAgc2VhcmNoJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoJycpO1xuICBmaWx0ZXJlZFByZXNlbnRhdGlvbnMkOiBPYnNlcnZhYmxlPE1hbmlmZXN0RGVzY3JpcHRpb25bXT47XG4gIGxpc3RPZk1hbmlmZXN0cyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1hbmlmZXN0RGVzY3JpcHRpb25bXSB8IG51bGw+KG51bGwpO1xuICBASW5wdXQoKSBtb2RlOiAndGhlbWUnIHwgJ21ldGEnID0gJ21ldGEnO1xuXG4gIEBJbnB1dCgpIHNldCBsaXN0T2ZNYW5pZmVzdHMobWFuaWZlc3RzOiBNYW5pZmVzdERlc2NyaXB0aW9uW10gfCBudWxsKSB7XG4gICAgdGhpcy5saXN0T2ZNYW5pZmVzdHMkLm5leHQoQXJyYXkuaXNBcnJheShtYW5pZmVzdHMpID8gbWFuaWZlc3RzIDogbnVsbCk7XG4gIH1cblxuICBASW5wdXQoKSBoaWRlVG9vbGJveCA9IGZhbHNlO1xuICBpbnB1dFNlYXJjaCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KCcnKTtcbiAgQElucHV0KCkgc2V0IHNlYXJjaChxdWVyeTogc3RyaW5nKSB7XG4gICAgdGhpcy5pbnB1dFNlYXJjaCQubmV4dChxdWVyeSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgc3RvcmU6IFN0b3JlPGFueT4sXG4gICAgcHJvdGVjdGVkIG92ZXJsYXk6IE92ZXJsYXksXG4gICAgcHJvdGVjdGVkIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXG4gICAgcHJvdGVjdGVkIHJvdXRlcjogUm91dGVyLFxuICAgIHByb3RlY3RlZCB0aXRsZVNlcnZpY2U6IFByeVRpdGxlU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByb3RlY3RlZCBuZ1pvbmU6IE5nWm9uZVxuICApIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICB0aGlzLmFjdGl2YXRlZFJvdXRlLnF1ZXJ5UGFyYW1zLnN1YnNjcmliZSgocGFyYW1zKSA9PiB7XG4gICAgICAgIGlmIChwYXJhbXNbJ2NyZWF0ZSddKSB7XG4gICAgICAgICAgdGhpcy5jcmVhdGlvbigpO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChEYXNoYm9hcmRBY3Rpb25zLmZldGNoTWFuaWZlc3RzTGlzdCgpKTtcbiAgICB0aGlzLm1hbmlmZXN0cyQgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICAgIHRoaXMuc3RvcmVcbiAgICAgICAgLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMubWFuaWZlc3RzTGlzdClcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgbWFwKChtYW5pZmVzdExpc3QpID0+XG4gICAgICAgICAgICBbLi4ubWFuaWZlc3RMaXN0XS5zb3J0KChhLCBiKSA9PlxuICAgICAgICAgICAgICBhLm1vZGlmaWNhdGlvbkRhdGUgPyBiLm1vZGlmaWNhdGlvbkRhdGUubG9jYWxlQ29tcGFyZShhLm1vZGlmaWNhdGlvbkRhdGUpIDogMVxuICAgICAgICAgICAgKVxuICAgICAgICAgIClcbiAgICAgICAgKSxcbiAgICAgIHRoaXMubGlzdE9mTWFuaWZlc3RzJFxuICAgIF0pLnBpcGUobWFwKChbZHluYW1pY3MsIHN0YXRpY3NdKSA9PiAoISFzdGF0aWNzID8gc3RhdGljcyA6IGR5bmFtaWNzKSkpO1xuXG4gICAgdGhpcy5zdGF0aWNNYW5pZmVzdCQgPSB0aGlzLnN0b3JlXG4gICAgICAuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5zdGF0aWNNYW5pZmVzdClcbiAgICAgIC5waXBlKG1hcCgoc3RhdGljTSkgPT4gc3RhdGljTS53aW5kb3dzWzBdKSk7XG4gICAgdGhpcy5maWx0ZXJlZFByZXNlbnRhdGlvbnMkID0gY29tYmluZUxhdGVzdChbXG4gICAgICB0aGlzLm1hbmlmZXN0cyQsXG4gICAgICB0aGlzLnNlYXJjaCQsXG4gICAgICB0aGlzLmlucHV0U2VhcmNoJC5waXBlKHN0YXJ0V2l0aCgnJykpXG4gICAgXSkucGlwZShcbiAgICAgIG1hcCgoW3ByZXNlbnRhdGlvbnMsIHNlYXJjaCwgaW5wdXRTZWFyY2hdKSA9PlxuICAgICAgICBwcmVzZW50YXRpb25zLmZpbHRlcigocHJlc2VudGF0aW9ucykgPT4ge1xuICAgICAgICAgIGNvbnN0IFtuYW1lLCBkZXNjcmlwdGlvbl0gPSBbcHJlc2VudGF0aW9ucy5uYW1lLnRvTG93ZXJDYXNlKCksIHByZXNlbnRhdGlvbnMuZGVzY3JpcHRpb24udG9Mb3dlckNhc2UoKV07XG4gICAgICAgICAgY29uc3QgW3NlYXJjaFF1ZXJ5LCBpbnB1dFNlYXJjaFF1ZXJ5XSA9IFtzZWFyY2g/LnRvTG93ZXJDYXNlKCksIGlucHV0U2VhcmNoPy50b0xvd2VyQ2FzZSgpXTtcbiAgICAgICAgICByZXR1cm4gISFzZWFyY2hRdWVyeSB8fCAhIWlucHV0U2VhcmNoUXVlcnlcbiAgICAgICAgICAgID8gKCEhc2VhcmNoUXVlcnkgJiYgKG5hbWUuaW5jbHVkZXMoc2VhcmNoUXVlcnkpIHx8IGRlc2NyaXB0aW9uLmluY2x1ZGVzKHNlYXJjaFF1ZXJ5KSkpIHx8XG4gICAgICAgICAgICAgICAgKCEhaW5wdXRTZWFyY2hRdWVyeSAmJiAobmFtZS5pbmNsdWRlcyhpbnB1dFNlYXJjaFF1ZXJ5KSB8fCBkZXNjcmlwdGlvbi5pbmNsdWRlcyhpbnB1dFNlYXJjaFF1ZXJ5KSkpXG4gICAgICAgICAgICA6IHRydWU7XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLnByZXNlbnRhdGlvbikuc3Vic2NyaWJlKChwcmVzZW50YXRpb24pID0+IHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZE1vZGUgPSBwcmVzZW50YXRpb24/LnZpZXdNb2RlID8/IHRoaXMuVmlld01vZGUuQ0FUQUxPRztcbiAgICAgICAgaWYgKCEhcHJlc2VudGF0aW9uLmN1cnJlbnQpIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkUHJlc2VudGF0aW9uJC5uZXh0KHByZXNlbnRhdGlvbi5jdXJyZW50ID8/IG51bGwpO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gICAgdGhpcy50aXRsZVNlcnZpY2UuY2hhbmdlVGl0bGUoJ0BwcnkucHJlc2VudGF0aW9uLnRpdGxlJyk7XG4gIH1cblxuICBjbG9zZVJlc3RpdHV0aW9uKCkge1xuICAgIHRoaXMuc2VsZWN0ZWRQcmVzZW50YXRpb24kLm5leHQobnVsbCk7XG4gICAgdGhpcy5zZWxlY3RlZE1vZGUgPSBWaWV3TW9kZS5DQVRBTE9HO1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goRGFzaGJvYXJkQWN0aW9ucy5zZWxlY3RQcmVzZW50YXRpb24oeyBwcmVzZW50YXRpb246IHVuZGVmaW5lZCwgdmlld01vZGU6IFZpZXdNb2RlLkNBVEFMT0cgfSkpO1xuICB9XG5cbiAgZmV0Y2gocHJlc2VudGF0aW9uOiBNYW5pZmVzdERlc2NyaXB0aW9uKSB7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChEYXNoYm9hcmRBY3Rpb25zLmxvYWRQcmVzZW50YXRpb24oeyBwcmVzZW50YXRpb24sIHZpZXdNb2RlOiBWaWV3TW9kZS5DT05TVUxUIH0pKTtcbiAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgdGhpcy5yb3V0ZXI/Lm5hdmlnYXRlQnlVcmwodGhpcy5jb25zdWx0U3RhcnRVcmwpO1xuICAgIH0pO1xuICB9XG5cbiAgY3JlYXRpb24oKSB7XG4gICAgdGhpcy5zZWxlY3RlZE1vZGUgPSBWaWV3TW9kZS5DUkVBVElPTjtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKERhc2hib2FyZEFjdGlvbnMudXBkYXRlTWFuaWZlc3QoeyBtYW5pZmVzdDogeyB3aW5kb3dzOiBbXSB9LCBzZWxlY3RlZElkczogW10gfSkpO1xuICAgIGNvbnN0IG5ld1ByZXNlbnRhdGlvbiA9IHtcbiAgICAgIHByZXNlbnRhdGlvbjoge1xuICAgICAgICBpZDogdjQoKSxcbiAgICAgICAgbmFtZTogJycsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnJyxcbiAgICAgICAgdmlzaWJpbGl0eTogeyB0eXBlOiBQcnlWaXNpYmlsaXR5VHlwZS5QUklWQVRFIH0sXG4gICAgICAgIG93bmVyOiB0cnVlXG4gICAgICB9IGFzIE1hbmlmZXN0RGVzY3JpcHRpb24sXG4gICAgICB2aWV3TW9kZTogVmlld01vZGUuQ1JFQVRJT05cbiAgICB9O1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goRGFzaGJvYXJkQWN0aW9ucy5zZWxlY3RQcmVzZW50YXRpb24obmV3UHJlc2VudGF0aW9uKSk7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChEYXNoYm9hcmRBY3Rpb25zLnNldEdyaWRMYXlvdXQoeyBsYXlvdXQ6IERhc2hib2FyZEdyaWRMYXlvdXQuRlVMTCB9KSk7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChEYXNoYm9hcmRBY3Rpb25zLnVwZGF0ZURpc3BsYXlPcHRpb25zKHsgbW9kZTogVmlld01vZGUuQ1JFQVRJT04gfSkpO1xuICB9XG5cbiAgZWRpdChwcmVzZW50YXRpb246IE1hbmlmZXN0RGVzY3JpcHRpb24pIHtcbiAgICB0aGlzLnNlbGVjdGVkTW9kZSA9IFZpZXdNb2RlLkVESVRJT047XG4gICAgdGhpcy5zZWxlY3RlZFByZXNlbnRhdGlvbiQubmV4dChwcmVzZW50YXRpb24pO1xuICAgIHRoaXMudGl0bGVTZXJ2aWNlLmNoYW5nZVRpdGxlKHByZXNlbnRhdGlvbi5uYW1lKTtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKERhc2hib2FyZEFjdGlvbnMuc2VsZWN0UHJlc2VudGF0aW9uKHsgcHJlc2VudGF0aW9uLCB2aWV3TW9kZTogVmlld01vZGUuRURJVElPTiB9KSk7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChEYXNoYm9hcmRBY3Rpb25zLmZldGNoU3RhdGljTWFuaWZlc3QoeyBpZDogcHJlc2VudGF0aW9uLmlkIH0pKTtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKERhc2hib2FyZEFjdGlvbnMudXBkYXRlRGlzcGxheU9wdGlvbnMoeyBtb2RlOiBWaWV3TW9kZS5FRElUSU9OIH0pKTtcbiAgICB0aGlzLm92ZXJsYXlSZWY/LmRpc3Bvc2UoKTtcbiAgICB0aGlzLm92ZXJsYXlSZWYgPSB1bmRlZmluZWQ7XG4gIH1cblxuICBkZWxldGUoaWQ6IHN0cmluZykge1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goRGFzaGJvYXJkQWN0aW9ucy5jb25maXJtTWFuaWZlc3REZWxldGlvbih7IGlkIH0pKTtcbiAgICB0aGlzLnRvZ2dsZU1vZGFsQWN0aW9ucygpO1xuICB9XG5cbiAgdG9nZ2xlTW9kYWxBY3Rpb25zKHByZXNlbnRhdGlvbj86IE1hbmlmZXN0RGVzY3JpcHRpb24gfCBudWxsLCBtb3JlQnV0dG9uPzogSFRNTEJ1dHRvbkVsZW1lbnQpIHtcbiAgICBpZiAoIXRoaXMub3ZlcmxheVJlZiAmJiBwcmVzZW50YXRpb24pIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRQcmVzZW50YXRpb24kLm5leHQocHJlc2VudGF0aW9uKTtcbiAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goRGFzaGJvYXJkQWN0aW9ucy5zZWxlY3RQcmVzZW50YXRpb24oeyBwcmVzZW50YXRpb24sIHZpZXdNb2RlOiBWaWV3TW9kZS5DQVRBTE9HIH0pKTtcbiAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goRGFzaGJvYXJkQWN0aW9ucy5sb2FkTWFuaWZlc3QoeyBpZDogcHJlc2VudGF0aW9uLmlkIH0pKTtcbiAgICAgIHRoaXMub3ZlcmxheVJlZiA9IHRoaXMub3ZlcmxheS5jcmVhdGUoXG4gICAgICAgIG5ldyBPdmVybGF5Q29uZmlnKHtcbiAgICAgICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcbiAgICAgICAgICBwYW5lbENsYXNzOiBbJ20tY29udGV4dC1tZW51LXdyYXBwZXInXSxcbiAgICAgICAgICBiYWNrZHJvcENsYXNzOiAnYmFja2Ryb3AnXG4gICAgICAgIH0pXG4gICAgICApO1xuICAgICAgdGhpcy5vdmVybGF5UmVmLmJhY2tkcm9wQ2xpY2soKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy50b2dnbGVNb2RhbEFjdGlvbnMocHJlc2VudGF0aW9uKSk7XG4gICAgICB0aGlzLm92ZXJsYXlSZWYuYXR0YWNoKG5ldyBUZW1wbGF0ZVBvcnRhbCh0aGlzLnRlbXBsYXRlTW9kYWxBY3Rpb25zLCB0aGlzLnZpZXdDb250YWluZXJSZWYpKTtcbiAgICAgIGNvbnN0IGNvbnRleHRNZW51ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignZGl2Lm0tY29udGV4dC1tZW51JykgYXMgSFRNTERpdkVsZW1lbnQ7XG4gICAgICBpZiAoISFjb250ZXh0TWVudSAmJiBtb3JlQnV0dG9uKSB7XG4gICAgICAgIGNvbnN0IHRvZ2dsZUFjdGlvbnNNb2RhbEJ1dHRvbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyMnICsgbW9yZUJ1dHRvbi5pZCk7XG4gICAgICAgIGNvbnN0IHJlY3QgPSB0b2dnbGVBY3Rpb25zTW9kYWxCdXR0b24/LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICBjb250ZXh0TWVudS5zdHlsZS5sZWZ0ID0gKHJlY3Q/LmxlZnQgPz8gMCkgLSAoY29udGV4dE1lbnU/LmNsaWVudFdpZHRoID8/IDApICsgMjMgKyAncHgnO1xuICAgICAgICBjb250ZXh0TWVudS5zdHlsZS50b3AgPSAocmVjdD8udG9wID8/IDApICsgMjUgKyAncHgnO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm92ZXJsYXlSZWY/LmRpc3Bvc2UoKTtcbiAgICAgIHRoaXMub3ZlcmxheVJlZiA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuc2VsZWN0ZWRQcmVzZW50YXRpb24kLm5leHQobnVsbCk7XG4gICAgfVxuICB9XG5cbiAgdG9nZ2xlTW9kYWwocHJlc2VudGF0aW9uPzogTWFuaWZlc3REZXNjcmlwdGlvbiB8IG51bGwpIHtcbiAgICB0aGlzLm1vZGFsT3BlbmVkID0gIXRoaXMubW9kYWxPcGVuZWQ7XG4gICAgaWYgKHRoaXMubW9kYWxPcGVuZWQgJiYgcHJlc2VudGF0aW9uKSB7XG4gICAgICB0aGlzLnRvZ2dsZU1vZGFsQWN0aW9ucygpO1xuICAgICAgdGhpcy5zZWxlY3RlZFByZXNlbnRhdGlvbiQubmV4dChwcmVzZW50YXRpb24pO1xuICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChEYXNoYm9hcmRBY3Rpb25zLnNlbGVjdFByZXNlbnRhdGlvbih7IHByZXNlbnRhdGlvbiwgdmlld01vZGU6IFZpZXdNb2RlLkNBVEFMT0cgfSkpO1xuICAgICAgLyogd2UgbmVlZCB0byBsb2FkIG1hbmlmZXN0IGluIG9yZGVyIHRvIGJlIGFibGUgdG8gc2F2ZSBpdCBsYXRlciAqL1xuICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChEYXNoYm9hcmRBY3Rpb25zLmxvYWRNYW5pZmVzdCh7IGlkOiBwcmVzZW50YXRpb24uaWQgfSkpO1xuICAgICAgdGhpcy5vdmVybGF5UmVmID0gdGhpcy5vdmVybGF5LmNyZWF0ZShcbiAgICAgICAgbmV3IE92ZXJsYXlDb25maWcoe1xuICAgICAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxuICAgICAgICAgIHBhbmVsQ2xhc3M6IFsnby1tb2RhbC13cmFwcGVyJ10sXG4gICAgICAgICAgYmFja2Ryb3BDbGFzczogJ2JhY2tkcm9wJ1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgICAgIHRoaXMub3ZlcmxheVJlZi5iYWNrZHJvcENsaWNrKCkuc3Vic2NyaWJlKCgpID0+IHRoaXMudG9nZ2xlTW9kYWwocHJlc2VudGF0aW9uKSk7XG4gICAgICB0aGlzLm92ZXJsYXlSZWYuYXR0YWNoKG5ldyBUZW1wbGF0ZVBvcnRhbCh0aGlzLnRlbXBsYXRlLCB0aGlzLnZpZXdDb250YWluZXJSZWYpKTtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBjb25zdCBmb2N1cyA9IHRoaXMudmlzaWJpbGl0eU1vZGFsLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW5bMF0uY2hpbGRyZW5bMV0uZmlyc3RFbGVtZW50Q2hpbGQgYXMgSFRNTEJ1dHRvbkVsZW1lbnQ7XG4gICAgICAgIGZvY3VzLmZvY3VzKCk7XG4gICAgICB9LCAxMCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMub3ZlcmxheVJlZj8uZGlzcG9zZSgpO1xuICAgICAgdGhpcy5zZWxlY3RlZFByZXNlbnRhdGlvbiQubmV4dChudWxsKTtcbiAgICAgIHRoaXMub3ZlcmxheVJlZiA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICBjaGFuZ2VWaXNpYmlsaXR5KHByZXNlbnRhdGlvbj86IE1hbmlmZXN0RGVzY3JpcHRpb24pIHtcbiAgICBpZiAocHJlc2VudGF0aW9uKSB7XG4gICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFxuICAgICAgICBEYXNoYm9hcmRBY3Rpb25zLnNhdmVNYW5pZmVzdCh7XG4gICAgICAgICAgaWQ6IHByZXNlbnRhdGlvbi5pZCA/PyAnJyxcbiAgICAgICAgICBuYW1lOiBwcmVzZW50YXRpb24ubmFtZSA/PyAnJyxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogcHJlc2VudGF0aW9uLmRlc2NyaXB0aW9uID8/ICcnLFxuICAgICAgICAgIGltYWdlOiBwcmVzZW50YXRpb24uaW1hZ2UgPz8gJycsXG4gICAgICAgICAgdmlzaWJpbGl0eTogdGhpcy52aXNpYmlsaXR5XG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH1cbiAgICB0aGlzLnRvZ2dsZU1vZGFsKHByZXNlbnRhdGlvbik7XG4gIH1cblxuICBmb2N1c0Nyb3NzRWxlbWVudCgpIHtcbiAgICBpZiAodGhpcy5jcm9zc1Zpc2liaWxpdHkpIHtcbiAgICAgIHRoaXMuY3Jvc3NWaXNpYmlsaXR5Py5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgfVxuICAgIHRoaXMuY3Jvc3M/Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgfVxuXG4gIGZvY3VzVmFsaWRhdGlvbigpIHtcbiAgICBpZiAodGhpcy5jb25maXJtKSB7XG4gICAgICB0aGlzLmNvbmZpcm0ubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH1cbiAgICB0aGlzLnN1Ym1pdC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gIH1cbn1cbiIsIjxwcnktcHJlc2VudGF0aW9uLWNzcz48L3ByeS1wcmVzZW50YXRpb24tY3NzPlxuPGRpdiBjbGFzcz1cIm8tbWFuaWZlc3QtbGF5b3V0XCIgW25nU3dpdGNoXT1cInNlbGVjdGVkTW9kZVwiPlxuICA8bmctY29udGFpbmVyICpuZ1N3aXRjaERlZmF1bHQ+XG4gICAgPGRpdiBjbGFzcz1cIm8tbWFuaWZlc3QtbGF5b3V0X190b29sYm94XCIgW2NsYXNzLi11LWhpZGRlbl09XCJoaWRlVG9vbGJveFwiPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBjbGFzcz1cImEtYnRuIGEtYnRuLS1wcmltYXJ5IGEtYnRuLS1pY29uLXRleHQgYS10b29sdGlwXCJcbiAgICAgICAgW2F0dHIuZGF0YS10b29sdGlwXT1cIidAcHJ5LnByZXNlbnRhdGlvbi5jcmVhdGUnIHwgaTE4blwiXG4gICAgICAgIGRhdGEtdG9vbHRpcC1wb3NpdGlvbj1cImJvdHRvbVwiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAoY2xpY2spPVwiY3JlYXRpb24oKVwiXG4gICAgICAgICpwcnlBY2Nlc3M9XCJ7IG1vZHVsZTogJ2Rhc2hib2FyZCcsIHBhZ2U6ICdtYW5pZmVzdCcsIGFjdGlvbjogJ2NyZWF0ZScgfVwiXG4gICAgICA+XG4gICAgICAgIHt7ICdAcHJ5LnByZXNlbnRhdGlvbi5jcmVhdGUnIHwgaTE4biB9fVxuICAgICAgPC9idXR0b24+XG4gICAgICA8ZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiby1tYW5pZmVzdC1sYXlvdXRfX3Rvb2xib3hfX3NlYXJjaFwiPlxuICAgICAgICAgIDxsYWJlbCBpZD1cImNhdGFsb2ctc2VhcmNoLWxhYmVsXCIgZm9yPVwiY2F0YWxvZy1zZWFyY2hcIiBjbGFzcz1cInUtdmlzdWFsbHktaGlkZGVuXCI+XG4gICAgICAgICAgICA8c3Bhbj57eyAnQHByeS50b29sYm94LmNhdGFsb2cuZmlsdGVyLm5hbWUnIHwgaTE4biB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgaWQ9XCJjYXRhbG9nLXNlYXJjaFwiXG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICBjbGFzcz1cImEtZm9ybS1maWVsZFwiXG4gICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ0BwcnkucHJlc2VudGF0aW9uLnNlYXJjaCcgfCBpMThuXCJcbiAgICAgICAgICAgIFtuZ01vZGVsXT1cInNlYXJjaCQgfCBhc3luY1wiXG4gICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJ0aGlzLnNlYXJjaCQubmV4dCgkZXZlbnQpXCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIDxwcnktaWNvbiBjbGFzcz1cInNlYXJjaC1pY29uXCIgaWNvblN2Zz1cInNlYXJjaFwiIFt3aWR0aF09XCIxN1wiIFtoZWlnaHRdPVwiMTdcIj48L3ByeS1pY29uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJvLW1hbmlmZXN0LWxheW91dF9fY29udGVudFwiPlxuICAgICAgPGgxIGNsYXNzPVwiYS1oMVwiPnt7ICdAcHJ5LnByZXNlbnRhdGlvbi50aXRsZScgfCBpMThuIH19PC9oMT5cbiAgICAgIDxkaXYgY2xhc3M9XCJvLXByZXNlbnRhdGlvbi13cmFwcGVyXCI+XG4gICAgICAgIDx1bCBjbGFzcz1cIm8tcHJlc2VudGF0aW9uXCI+XG4gICAgICAgICAgPGxpXG4gICAgICAgICAgICBjbGFzcz1cIm8tcHJlc2VudGF0aW9uX19pdGVtXCJcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBwcmVzZW50YXRpb24gb2YgZmlsdGVyZWRQcmVzZW50YXRpb25zJCB8IGFzeW5jOyBsZXQgaW5kZXggPSBpbmRleFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm8tcHJlc2VudGF0aW9uX19pdGVtX19oZWFkZXJcIj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInByZXNlbnRhdGlvbi52aXNpYmlsaXR5LnR5cGUgPT09IFByeVZpc2liaWxpdHlUeXBlLlBSSVZBVEVcIj5cbiAgICAgICAgICAgICAgICA8cHJ5LWljb25cbiAgICAgICAgICAgICAgICAgIFtpY29uU3ZnXT1cInByZXNlbnRhdGlvbi52aXNpYmlsaXR5LnR5cGUudG9Mb3dlckNhc2UoKVwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImlzLXByaXZhdGUgYS10b29sdGlwXCJcbiAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtdG9vbHRpcF09XCInQHByeS5wcmVzZW50YXRpb24ucHJpdmF0ZScgfCBpMThuXCJcbiAgICAgICAgICAgICAgICAgIFtoZWlnaHRdPVwiMTdcIlxuICAgICAgICAgICAgICAgICAgW3dpZHRoXT1cIjE3XCJcbiAgICAgICAgICAgICAgICA+PC9wcnktaWNvbj5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cImEtdG9vbHRpcFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImZldGNoKHByZXNlbnRhdGlvbilcIlxuICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtdG9vbHRpcF09XCInQHByeS5wcmVzZW50YXRpb24udmlldycgfCBpMThuXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvLXByZXNlbnRhdGlvbl9faXRlbV9faW1hZ2VcIj5cbiAgICAgICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICAgICAgYWx0PVwiXCJcbiAgICAgICAgICAgICAgICAgICAgW2hlaWdodF09XCJwcmVzZW50YXRpb24uY292ZXIgPyA2MDAgOiAxMDBcIlxuICAgICAgICAgICAgICAgICAgICBbd2lkdGhdPVwicHJlc2VudGF0aW9uLmNvdmVyID8gNjAwIDogMTAwXCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmlzLWZ1bGwtd2lkdGhdPVwicHJlc2VudGF0aW9uLmNvdmVyXCJcbiAgICAgICAgICAgICAgICAgICAgW3NyY109XCJwcmVzZW50YXRpb24uaW1hZ2UgfCBnZXRTZWN1cmVkSW1hZ2UgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInByZXNlbnRhdGlvbi5vd25lclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb3JlLWFjdGlvbnNcIiAqcHJ5QWNjZXNzPVwieyBtb2R1bGU6ICdkYXNoYm9hcmQnLCBwYWdlOiAnbWFuaWZlc3QnLCBhY3Rpb246ICdzaGFyZScgfVwiPlxuICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhLWJ0biBhLWJ0bi0tbW9yZSBhLXRvb2x0aXBcIlxuICAgICAgICAgICAgICAgICAgICBbaWRdPVwiJ21vcmUtYWN0aW9ucy0nICsgaW5kZXhcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLXRvb2x0aXBdPVwiJ0BwcnkucmVzdGl0dXRpb24ubW9yZScgfCBpMThuXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgdG9nZ2xlTW9kYWxBY3Rpb25zKHByZXNlbnRhdGlvbiwgYnV0dG9uKVwiXG4gICAgICAgICAgICAgICAgICAgICNidXR0b25cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPHByeS1pY29uIFtoZWlnaHRdPVwiMjVcIiBbd2lkdGhdPVwiMjVcIiBpY29uU3ZnPVwibW9yZV9ob3JpelwiPjwvcHJ5LWljb24+XG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvLXByZXNlbnRhdGlvbl9faXRlbV9fdHh0XCIgKGNsaWNrKT1cImZldGNoKHByZXNlbnRhdGlvbilcIj5cbiAgICAgICAgICAgICAgPGgzIGNsYXNzPVwiYS1oM1wiPnt7IHByZXNlbnRhdGlvbi5uYW1lIH19PC9oMz5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm8tcHJlc2VudGF0aW9uX19pdGVtX19kZXNjcmlwdGlvbi1jb250YWluZXJcIiBlbGxpcHNpcyB0ZXh0RWxlbWVudFNlbGVjdG9yPVwiLmEtcFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvLXByZXNlbnRhdGlvbl9faXRlbV9fZGVzY3JpcHRpb24gYS1wXCI+XG4gICAgICAgICAgICAgICAgICB7eyBwcmVzZW50YXRpb24uZGVzY3JpcHRpb24gfX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxwIGNsYXNzPVwiYS1wIC1kYXRlXCI+e3sgcHJlc2VudGF0aW9uLm1vZGlmaWNhdGlvbkRhdGUgfCBzaW5jZURhdGUgfX08L3A+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJvLXByZXNlbnRhdGlvbl9faXRlbV9fZm9vdGVyIGEtdG9vbHRpcFwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJmZXRjaChwcmVzZW50YXRpb24pXCJcbiAgICAgICAgICAgICAgW2F0dHIuZGF0YS10b29sdGlwXT1cIidAcHJ5LnByZXNlbnRhdGlvbi52aWV3JyB8IGkxOG5cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYS1idG5cIj5cbiAgICAgICAgICAgICAgICB7eyAnQHByeS5wcmVzZW50YXRpb24uY29uc3VsdCcgfCBpMThuIH19XG4gICAgICAgICAgICAgICAgPHByeS1pY29uIFt3aWR0aF09XCIyMFwiIFtoZWlnaHRdPVwiMjBcIiBpY29uU3ZnPVwiYXJyb3dfcmlnaHRcIj48L3ByeS1pY29uPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbGk+XG4gICAgICAgIDwvdWw+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG4gIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIlZpZXdNb2RlLkNSRUFUSU9OXCI+XG4gICAgPHByeS1hZGQtZWRpdC1wcmVzZW50YXRpb25cbiAgICAgIFtzZWxlY3RlZFByZXNlbnRhdGlvbl09XCJzZWxlY3RlZFByZXNlbnRhdGlvbiQgfCBhc3luY1wiXG4gICAgICAoZ29CYWNrKT1cImNsb3NlUmVzdGl0dXRpb24oKVwiXG4gICAgICBbZWRpdGlvblN0YXJ0VXJsXT1cImVkaXRpb25TdGFydFVybFwiXG4gICAgICBbZWRpdGlvbl09XCJmYWxzZVwiXG4gICAgICBbbW9kZV09XCJtb2RlXCJcbiAgICA+PC9wcnktYWRkLWVkaXQtcHJlc2VudGF0aW9uPlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiVmlld01vZGUuRURJVElPTlwiPlxuICAgIDxwcnktYWRkLWVkaXQtcHJlc2VudGF0aW9uXG4gICAgICBbc2VsZWN0ZWRQcmVzZW50YXRpb25dPVwic2VsZWN0ZWRQcmVzZW50YXRpb24kIHwgYXN5bmNcIlxuICAgICAgKGdvQmFjayk9XCJjbG9zZVJlc3RpdHV0aW9uKClcIlxuICAgICAgW2VkaXRpb25TdGFydFVybF09XCJlZGl0aW9uU3RhcnRVcmxcIlxuICAgICAgW2VkaXRpb25dPVwidHJ1ZVwiXG4gICAgICBbbW9kZV09XCJtb2RlXCJcbiAgICA+PC9wcnktYWRkLWVkaXQtcHJlc2VudGF0aW9uPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI21vZGFsPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJvLW1vZGFsXCJcbiAgICAjdmlzaWJpbGl0eU1vZGFsXG4gICAgcm9sZT1cImRpYWxvZ1wiXG4gICAgYXJpYS1tb2RhbD1cInRydWVcIlxuICAgIGFyaWEtbGFiZWxsZWRieT1cImRpYWxvZyBjaGFuZ2UgdmlzaWJpbGl0eVwiXG4gICAgKm5nSWY9XCJzZWxlY3RlZFByZXNlbnRhdGlvbiQgfCBhc3luYyBhcyBzZWxlY3RlZFByZXNlbnRhdGlvblwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwiby1tb2RhbF9fdG9wXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiby1tb2RhbF9fdG9wX190aXRsZVwiPlxuICAgICAgICA8aDIgY2xhc3M9XCJhLWgyXCIgaWQ9XCJkaWFsb2dfdGl0bGVcIj57eyAnQHByeS50b29sYm94LnNoYXJlJyB8IGkxOG4gfX08L2gyPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiby1tb2RhbF9fdG9wX19jbG9zZVwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgY2xhc3M9XCJhLWJ0biBhLWJ0bi0taWNvbi1vbmx5XCJcbiAgICAgICAgICAjY3Jvc3NWaXNpYmlsaXR5XG4gICAgICAgICAgKGtleWRvd24uc2hpZnQudGFiKT1cImZvY3VzVmFsaWRhdGlvbigpXCJcbiAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlTW9kYWwoKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8cHJ5LWljb24gaWNvblN2Zz1cImNsb3NlXCIgW2hlaWdodF09XCIzNVwiIFt3aWR0aF09XCIzNVwiPjwvcHJ5LWljb24+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1LXZpc3VhbGx5LWhpZGRlblwiPnt7ICdAcHJ5LnRvb2xib3guY2xvc2UnIHwgaTE4biB9fTwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8cHJ5LXNoYXJlIFtuZ01vZGVsXT1cInNlbGVjdGVkUHJlc2VudGF0aW9uLnZpc2liaWxpdHlcIiAobmdNb2RlbENoYW5nZSk9XCJ2aXNpYmlsaXR5ID0gJGV2ZW50XCI+PC9wcnktc2hhcmU+XG4gICAgPGRpdiBjbGFzcz1cIm0tYnRuLWdyb3VwXCI+XG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImEtYnRuIGEtYnRuLS1zZWNvbmRhcnlcIiAoY2xpY2spPVwidG9nZ2xlTW9kYWwoKVwiPlxuICAgICAgICB7eyAnQHByeS50b29sYm94Lm1hbmlmZXN0LmNsb3NlJyB8IGkxOG4gfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvblxuICAgICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgICAgY2xhc3M9XCJhLWJ0biBhLWJ0bi0tcHJpbWFyeVwiXG4gICAgICAgICNzdWJtaXRcbiAgICAgICAgKGtleWRvd24udGFiKT1cImZvY3VzQ3Jvc3NFbGVtZW50KClcIlxuICAgICAgICAoY2xpY2spPVwiY2hhbmdlVmlzaWJpbGl0eShzZWxlY3RlZFByZXNlbnRhdGlvbilcIlxuICAgICAgPlxuICAgICAgICB7eyAnQHByeS50b29sYm94Lm1hbmlmZXN0LmNoZWNrJyB8IGkxOG4gfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI21vZGFsQWN0aW9ucz5cbiAgPGRpdiBjbGFzcz1cIm0tY29udGV4dC1tZW51XCI+XG4gICAgPHVsXG4gICAgICBjbGFzcz1cIm0tY29udGV4dC1tZW51X19saXN0XCJcbiAgICAgIHJvbGU9XCJkaWFsb2dcIlxuICAgICAgYXJpYS1tb2RhbD1cInRydWVcIlxuICAgICAgYXJpYS1sYWJlbGxlZGJ5PVwiZGlhbG9nIHByZXNlbnRhdGlvbiBvcHRpb25zXCJcbiAgICAgICpuZ0lmPVwic2VsZWN0ZWRQcmVzZW50YXRpb24kIHwgYXN5bmMgYXMgc2VsZWN0ZWRQcmVzZW50YXRpb25cIlxuICAgID5cbiAgICAgIDxsaSBjbGFzcz1cIm0tY29udGV4dC1tZW51X19saXN0X19pdGVtXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBjbGFzcz1cImEtYnRuIC1saW5rLWxpa2VcIlxuICAgICAgICAgIChjbGljayk9XCJlZGl0KHNlbGVjdGVkUHJlc2VudGF0aW9uKVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cIiFzZWxlY3RlZFByZXNlbnRhdGlvbi5vd25lclwiXG4gICAgICAgICAgKnByeUFjY2Vzcz1cInsgbW9kdWxlOiAnZGFzaGJvYXJkJywgcGFnZTogJ21hbmlmZXN0JywgYWN0aW9uOiAnZWRpdCcgfVwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyAnQHByeS5wcmVzZW50YXRpb24uZWRpdGlvbicgfCBpMThuIH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9saT5cbiAgICAgIDxsaSBjbGFzcz1cIm0tY29udGV4dC1tZW51X19saXN0X19pdGVtXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlTW9kYWwoc2VsZWN0ZWRQcmVzZW50YXRpb24pXCJcbiAgICAgICAgICBjbGFzcz1cImEtYnRuIC1saW5rLWxpa2VcIlxuICAgICAgICAgIGFyaWEtaGFzcG9wdXA9XCJkaWFsb2dcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCIhc2VsZWN0ZWRQcmVzZW50YXRpb24ub3duZXJcIlxuICAgICAgICAgICpwcnlBY2Nlc3M9XCJ7IG1vZHVsZTogJ2Rhc2hib2FyZCcsIHBhZ2U6ICdtYW5pZmVzdCcsIGFjdGlvbjogJ3NoYXJlJyB9XCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7ICdAcHJ5LnByZXNlbnRhdGlvbi5zaGFyZScgfCBpMThuIH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9saT5cbiAgICAgIDxsaSBjbGFzcz1cIm0tY29udGV4dC1tZW51X19saXN0X19pdGVtXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBjbGFzcz1cImEtYnRuIC1saW5rLWxpa2VcIlxuICAgICAgICAgICNvcGVuTW9kYWxcbiAgICAgICAgICAoY2xpY2spPVwiZGVsZXRlKHNlbGVjdGVkUHJlc2VudGF0aW9uLmlkKVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cIiFzZWxlY3RlZFByZXNlbnRhdGlvbi5vd25lclwiXG4gICAgICAgICAgKnByeUFjY2Vzcz1cInsgbW9kdWxlOiAnZGFzaGJvYXJkJywgcGFnZTogJ21hbmlmZXN0JywgYWN0aW9uOiAnZGVsZXRlJyB9XCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7ICdAcHJ5LnByZXNlbnRhdGlvbi5kZWxldGUnIHwgaTE4biB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvbGk+XG4gICAgPC91bD5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
244
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlc2VudGF0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL3ByZXNlbnRhdGlvbi9jb21wb25lbnRzL3ByZXNlbnRhdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC9wcmVzZW50YXRpb24vY29tcG9uZW50cy9wcmVzZW50YXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFXLGFBQWEsRUFBYyxNQUFNLHNCQUFzQixDQUFDO0FBQzFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsU0FBUyxFQUFjLEtBQUssRUFBVSxXQUFXLEVBQUUsU0FBUyxFQUFvQixNQUFNLGVBQWUsQ0FBQztBQUcvRyxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLG1CQUFtQixFQUVuQixrQkFBa0IsRUFJbEIsaUJBQWlCLEVBQ2pCLHdCQUF3QixFQUN4QixRQUFRLEVBQ1QsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQWMsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7Ozs7O0FBTTFCLE1BQU0sT0FBTyx3QkFBeUIsU0FBUSx3QkFBd0I7SUEyQnBFLElBQWEsZUFBZSxDQUFDLFNBQXVDO1FBQ2xFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMxRSxDQUFDO0lBSUQsSUFBYSxNQUFNLENBQUMsS0FBYTtR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SUFBSSxDQUFDLEtBQUssRUFBRSxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDcEMsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDaEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDcEM7UUFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNwQyxDQUFDOytHQXBPVSx3QkFBd0I7bUdBQXhCLHdCQUF3QixxV0FPQSxXQUFXLDRGQUNsQixXQUFXLGdsQkNoQ3pDLDgxUUFpTkE7OzRGRHpMYSx3QkFBd0I7a0JBSnBDLFNBQVM7K0JBQ0Usa0JBQWtCO3NQQVVzQixvQkFBb0I7c0JBQXJFLFNBQVM7dUJBQUMsY0FBYyxFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRTtnQkFDTCxRQUFRO3NCQUFsRCxTQUFTO3VCQUFDLE9BQU8sRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7Z0JBQ2pCLFNBQVM7c0JBQWhDLFNBQVM7dUJBQUMsV0FBVztnQkFDQSxPQUFPO3NCQUE1QixTQUFTO3VCQUFDLFNBQVM7Z0JBQ0MsTUFBTTtzQkFBMUIsU0FBUzt1QkFBQyxRQUFRO2dCQUNDLEtBQUs7c0JBQXhCLFNBQVM7dUJBQUMsT0FBTztnQkFDWSxlQUFlO3NCQUE1QyxTQUFTO3VCQUFDLGlCQUFpQjtnQkFDRSxlQUFlO3NCQUE1QyxTQUFTO3VCQUFDLGlCQUFpQjtnQkFJbkIsZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBS0csSUFBSTtzQkFBWixLQUFLO2dCQUVPLGVBQWU7c0JBQTNCLEtBQUs7Z0JBSUcsV0FBVztzQkFBbkIsS0FBSztnQkFFTyxNQUFNO3NCQUFsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT3ZlcmxheSwgT3ZlcmxheUNvbmZpZywgT3ZlcmxheVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IFRlbXBsYXRlUG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIElucHV0LCBOZ1pvbmUsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQsIFZpZXdDb250YWluZXJSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQge1xuICBEYXNoYm9hcmRBY3Rpb25zLFxuICBEYXNoYm9hcmRHcmlkTGF5b3V0LFxuICBEYXNoYm9hcmRNYW5pZmVzdCxcbiAgRGFzaGJvYXJkU2VsZWN0b3JzLFxuICBNYW5pZmVzdERlc2NyaXB0aW9uLFxuICBQcnlUaXRsZVNlcnZpY2UsXG4gIFByeVZpc2liaWxpdHksXG4gIFByeVZpc2liaWxpdHlUeXBlLFxuICBTdWJzY3JpcHRpb25uZXJEaXJlY3RpdmUsXG4gIFZpZXdNb2RlXG59IGZyb20gJ0Bwcm92b2x5L2Rhc2hib2FyZCc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIG1hcCwgT2JzZXJ2YWJsZSwgc3RhcnRXaXRoIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB2NCB9IGZyb20gJ3V1aWQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwcnktcHJlc2VudGF0aW9uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3ByZXNlbnRhdGlvbi5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgUHJ5UHJlc2VudGF0aW9uQ29tcG9uZW50IGV4dGVuZHMgU3Vic2NyaXB0aW9ubmVyRGlyZWN0aXZlIHtcbiAgbWFuaWZlc3RzJDogT2JzZXJ2YWJsZTxNYW5pZmVzdERlc2NyaXB0aW9uW10+O1xuICBzZWxlY3RlZFByZXNlbnRhdGlvbiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1hbmlmZXN0RGVzY3JpcHRpb24gfCBudWxsPihudWxsKTtcbiAgcHJlc2VudGF0aW9uPzogTWFuaWZlc3REZXNjcmlwdGlvbjtcbiAgc3RhdGljTWFuaWZlc3QkPzogT2JzZXJ2YWJsZTxEYXNoYm9hcmRNYW5pZmVzdD47XG4gIHNlbGVjdGVkTW9kZTogVmlld01vZGUgPSBWaWV3TW9kZS5DQVRBTE9HO1xuICBtb2RhbE9wZW5lZCA9IGZhbHNlO1xuICBAVmlld0NoaWxkKCdtb2RhbEFjdGlvbnMnLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pIHRlbXBsYXRlTW9kYWxBY3Rpb25zITogVGVtcGxhdGVSZWY8YW55PjtcbiAgQFZpZXdDaGlsZCgnbW9kYWwnLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pIHRlbXBsYXRlITogVGVtcGxhdGVSZWY8YW55PjtcbiAgQFZpZXdDaGlsZCgnb3Blbk1vZGFsJykgb3Blbk1vZGFsITogRWxlbWVudFJlZjxIVE1MQnV0dG9uRWxlbWVudD47XG4gIEBWaWV3Q2hpbGQoJ2NvbmZpcm0nKSBjb25maXJtITogRWxlbWVudFJlZjxIVE1MQnV0dG9uRWxlbWVudD47XG4gIEBWaWV3Q2hpbGQoJ3N1Ym1pdCcpIHN1Ym1pdCE6IEVsZW1lbnRSZWY8SFRNTEJ1dHRvbkVsZW1lbnQ+O1xuICBAVmlld0NoaWxkKCdjcm9zcycpIGNyb3NzITogRWxlbWVudFJlZjxIVE1MQnV0dG9uRWxlbWVudD47XG4gIEBWaWV3Q2hpbGQoJ2Nyb3NzVmlzaWJpbGl0eScpIGNyb3NzVmlzaWJpbGl0eSE6IEVsZW1lbnRSZWY8SFRNTEJ1dHRvbkVsZW1lbnQ+O1xuICBAVmlld0NoaWxkKCd2aXNpYmlsaXR5TW9kYWwnKSB2aXNpYmlsaXR5TW9kYWwhOiBFbGVtZW50UmVmO1xuICBvdmVybGF5UmVmPzogT3ZlcmxheVJlZjtcbiAgdmlzaWJpbGl0eTogUHJ5VmlzaWJpbGl0eSA9IHsgdHlwZTogUHJ5VmlzaWJpbGl0eVR5cGUuUFJJVkFURSB9O1xuICBQcnlWaXNpYmlsaXR5VHlwZSA9IFByeVZpc2liaWxpdHlUeXBlO1xuICBASW5wdXQoKSBlZGl0aW9uU3RhcnRVcmw6IHN0cmluZyA9ICcvJztcbiAgQElucHV0KCkgY29uc3VsdFN0YXJ0VXJsOiBzdHJpbmcgPSAnLyc7XG4gIEBJbnB1dCgpIG1lQXNPd25lcj86IHN0cmluZztcbiAgVmlld01vZGUgPSBWaWV3TW9kZTtcbiAgc2VhcmNoJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoJycpO1xuICBmaWx0ZXJlZFByZXNlbnRhdGlvbnMkOiBPYnNlcnZhYmxlPE1hbmlmZXN0RGVzY3JpcHRpb25bXT47XG4gIGxpc3RPZk1hbmlmZXN0cyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1hbmlmZXN0RGVzY3JpcHRpb25bXSB8IG51bGw+KG51bGwpO1xuICBASW5wdXQoKSBtb2RlOiAndGhlbWUnIHwgJ21ldGEnID0gJ21ldGEnO1xuXG4gIEBJbnB1dCgpIHNldCBsaXN0T2ZNYW5pZmVzdHMobWFuaWZlc3RzOiBNYW5pZmVzdERlc2NyaXB0aW9uW10gfCBudWxsKSB7XG4gICAgdGhpcy5saXN0T2ZNYW5pZmVzdHMkLm5leHQoQXJyYXkuaXNBcnJheShtYW5pZmVzdHMpID8gbWFuaWZlc3RzIDogbnVsbCk7XG4gIH1cblxuICBASW5wdXQoKSBoaWRlVG9vbGJveCA9IGZhbHNlO1xuICBpbnB1dFNlYXJjaCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KCcnKTtcbiAgQElucHV0KCkgc2V0IHNlYXJjaChxdWVyeTogc3RyaW5nKSB7XG4gICAgdGhpcy5pbnB1dFNlYXJjaCQubmV4dChxdWVyeSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgc3RvcmU6IFN0b3JlPGFueT4sXG4gICAgcHJvdGVjdGVkIG92ZXJsYXk6IE92ZXJsYXksXG4gICAgcHJvdGVjdGVkIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXG4gICAgcHJvdGVjdGVkIHJvdXRlcjogUm91dGVyLFxuICAgIHByb3RlY3RlZCB0aXRsZVNlcnZpY2U6IFByeVRpdGxlU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByb3RlY3RlZCBuZ1pvbmU6IE5nWm9uZVxuICApIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICB0aGlzLmFjdGl2YXRlZFJvdXRlLnF1ZXJ5UGFyYW1zLnN1YnNjcmliZSgocGFyYW1zKSA9PiB7XG4gICAgICAgIGlmIChwYXJhbXNbJ2NyZWF0ZSddKSB7XG4gICAgICAgICAgdGhpcy5jcmVhdGlvbigpO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChEYXNoYm9hcmRBY3Rpb25zLmZldGNoTWFuaWZlc3RzTGlzdCgpKTtcbiAgICB0aGlzLm1hbmlmZXN0cyQgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICAgIHRoaXMuc3RvcmVcbiAgICAgICAgLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMubWFuaWZlc3RzTGlzdClcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgbWFwKChtYW5pZmVzdExpc3QpID0+XG4gICAgICAgICAgICBbLi4ubWFuaWZlc3RMaXN0XS5zb3J0KChhLCBiKSA9PlxuICAgICAgICAgICAgICBhLm1vZGlmaWNhdGlvbkRhdGUgPyBiLm1vZGlmaWNhdGlvbkRhdGUubG9jYWxlQ29tcGFyZShhLm1vZGlmaWNhdGlvbkRhdGUpIDogMVxuICAgICAgICAgICAgKVxuICAgICAgICAgIClcbiAgICAgICAgKSxcbiAgICAgIHRoaXMubGlzdE9mTWFuaWZlc3RzJFxuICAgIF0pLnBpcGUobWFwKChbZHluYW1pY3MsIHN0YXRpY3NdKSA9PiAoISFzdGF0aWNzID8gc3RhdGljcyA6IGR5bmFtaWNzKSkpO1xuXG4gICAgdGhpcy5zdGF0aWNNYW5pZmVzdCQgPSB0aGlzLnN0b3JlXG4gICAgICAuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5zdGF0aWNNYW5pZmVzdClcbiAgICAgIC5waXBlKG1hcCgoc3RhdGljTSkgPT4gc3RhdGljTS53aW5kb3dzWzBdKSk7XG4gICAgdGhpcy5maWx0ZXJlZFByZXNlbnRhdGlvbnMkID0gY29tYmluZUxhdGVzdChbXG4gICAgICB0aGlzLm1hbmlmZXN0cyQsXG4gICAgICB0aGlzLnNlYXJjaCQsXG4gICAgICB0aGlzLmlucHV0U2VhcmNoJC5waXBlKHN0YXJ0V2l0aCgnJykpXG4gICAgXSkucGlwZShcbiAgICAgIG1hcCgoW3ByZXNlbnRhdGlvbnMsIHNlYXJjaCwgaW5wdXRTZWFyY2hdKSA9PlxuICAgICAgICBwcmVzZW50YXRpb25zLmZpbHRlcigocHJlc2VudGF0aW9ucykgPT4ge1xuICAgICAgICAgIGNvbnN0IFtuYW1lLCBkZXNjcmlwdGlvbl0gPSBbcHJlc2VudGF0aW9ucy5uYW1lLnRvTG93ZXJDYXNlKCksIHByZXNlbnRhdGlvbnMuZGVzY3JpcHRpb24udG9Mb3dlckNhc2UoKV07XG4gICAgICAgICAgY29uc3QgW3NlYXJjaFF1ZXJ5LCBpbnB1dFNlYXJjaFF1ZXJ5XSA9IFtzZWFyY2g/LnRvTG93ZXJDYXNlKCksIGlucHV0U2VhcmNoPy50b0xvd2VyQ2FzZSgpXTtcbiAgICAgICAgICByZXR1cm4gISFzZWFyY2hRdWVyeSB8fCAhIWlucHV0U2VhcmNoUXVlcnlcbiAgICAgICAgICAgID8gKCEhc2VhcmNoUXVlcnkgJiYgKG5hbWUuaW5jbHVkZXMoc2VhcmNoUXVlcnkpIHx8IGRlc2NyaXB0aW9uLmluY2x1ZGVzKHNlYXJjaFF1ZXJ5KSkpIHx8XG4gICAgICAgICAgICAgICAgKCEhaW5wdXRTZWFyY2hRdWVyeSAmJiAobmFtZS5pbmNsdWRlcyhpbnB1dFNlYXJjaFF1ZXJ5KSB8fCBkZXNjcmlwdGlvbi5pbmNsdWRlcyhpbnB1dFNlYXJjaFF1ZXJ5KSkpXG4gICAgICAgICAgICA6IHRydWU7XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLnByZXNlbnRhdGlvbikuc3Vic2NyaWJlKChwcmVzZW50YXRpb24pID0+IHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZE1vZGUgPSBwcmVzZW50YXRpb24/LnZpZXdNb2RlID8/IHRoaXMuVmlld01vZGUuQ0FUQUxPRztcbiAgICAgICAgaWYgKCEhcHJlc2VudGF0aW9uLmN1cnJlbnQpIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkUHJlc2VudGF0aW9uJC5uZXh0KHByZXNlbnRhdGlvbi5jdXJyZW50ID8/IG51bGwpO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gICAgdGhpcy50aXRsZVNlcnZpY2UuY2hhbmdlVGl0bGUoJ0BwcnkucHJlc2VudGF0aW9uLnRpdGxlJyk7XG4gIH1cblxuICBjbG9zZVJlc3RpdHV0aW9uKCkge1xuICAgIHRoaXMuc2VsZWN0ZWRQcmVzZW50YXRpb24kLm5leHQobnVsbCk7XG4gICAgdGhpcy5zZWxlY3RlZE1vZGUgPSBWaWV3TW9kZS5DQVRBTE9HO1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goRGFzaGJvYXJkQWN0aW9ucy5zZWxlY3RQcmVzZW50YXRpb24oeyBwcmVzZW50YXRpb246IHVuZGVmaW5lZCwgdmlld01vZGU6IFZpZXdNb2RlLkNBVEFMT0cgfSkpO1xuICB9XG5cbiAgZmV0Y2gocHJlc2VudGF0aW9uOiBNYW5pZmVzdERlc2NyaXB0aW9uKSB7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChEYXNoYm9hcmRBY3Rpb25zLmxvYWRQcmVzZW50YXRpb24oeyBwcmVzZW50YXRpb24sIHZpZXdNb2RlOiBWaWV3TW9kZS5DT05TVUxUIH0pKTtcbiAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgdGhpcy5yb3V0ZXI/Lm5hdmlnYXRlQnlVcmwodGhpcy5jb25zdWx0U3RhcnRVcmwpO1xuICAgIH0pO1xuICB9XG5cbiAgY3JlYXRpb24oKSB7XG4gICAgdGhpcy5zZWxlY3RlZE1vZGUgPSBWaWV3TW9kZS5DUkVBVElPTjtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKERhc2hib2FyZEFjdGlvbnMudXBkYXRlTWFuaWZlc3QoeyBtYW5pZmVzdDogeyB3aW5kb3dzOiBbXSB9LCBzZWxlY3RlZElkczogW10gfSkpO1xuICAgIGNvbnN0IG5ld1ByZXNlbnRhdGlvbiA9IHtcbiAgICAgIHByZXNlbnRhdGlvbjoge1xuICAgICAgICBpZDogdjQoKSxcbiAgICAgICAgbmFtZTogJycsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnJyxcbiAgICAgICAgdmlzaWJpbGl0eTogeyB0eXBlOiBQcnlWaXNpYmlsaXR5VHlwZS5QUklWQVRFIH0sXG4gICAgICAgIG93bmVyOiB0cnVlXG4gICAgICB9IGFzIE1hbmlmZXN0RGVzY3JpcHRpb24sXG4gICAgICB2aWV3TW9kZTogVmlld01vZGUuQ1JFQVRJT05cbiAgICB9O1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goRGFzaGJvYXJkQWN0aW9ucy5zZWxlY3RQcmVzZW50YXRpb24obmV3UHJlc2VudGF0aW9uKSk7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChEYXNoYm9hcmRBY3Rpb25zLnNldEdyaWRMYXlvdXQoeyBsYXlvdXQ6IERhc2hib2FyZEdyaWRMYXlvdXQuRlVMTCB9KSk7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChEYXNoYm9hcmRBY3Rpb25zLnVwZGF0ZURpc3BsYXlPcHRpb25zKHsgbW9kZTogVmlld01vZGUuQ1JFQVRJT04gfSkpO1xuICB9XG5cbiAgZWRpdChwcmVzZW50YXRpb246IE1hbmlmZXN0RGVzY3JpcHRpb24pIHtcbiAgICB0aGlzLnNlbGVjdGVkTW9kZSA9IFZpZXdNb2RlLkVESVRJT047XG4gICAgdGhpcy5zZWxlY3RlZFByZXNlbnRhdGlvbiQubmV4dChwcmVzZW50YXRpb24pO1xuICAgIHRoaXMudGl0bGVTZXJ2aWNlLmNoYW5nZVRpdGxlKHByZXNlbnRhdGlvbi5uYW1lKTtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKERhc2hib2FyZEFjdGlvbnMuc2VsZWN0UHJlc2VudGF0aW9uKHsgcHJlc2VudGF0aW9uLCB2aWV3TW9kZTogVmlld01vZGUuRURJVElPTiB9KSk7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChEYXNoYm9hcmRBY3Rpb25zLmZldGNoU3RhdGljTWFuaWZlc3QoeyBpZDogcHJlc2VudGF0aW9uLmlkIH0pKTtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKERhc2hib2FyZEFjdGlvbnMudXBkYXRlRGlzcGxheU9wdGlvbnMoeyBtb2RlOiBWaWV3TW9kZS5FRElUSU9OIH0pKTtcbiAgICB0aGlzLm92ZXJsYXlSZWY/LmRpc3Bvc2UoKTtcbiAgICB0aGlzLm92ZXJsYXlSZWYgPSB1bmRlZmluZWQ7XG4gIH1cblxuICBkZWxldGUoaWQ6IHN0cmluZykge1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goRGFzaGJvYXJkQWN0aW9ucy5jb25maXJtTWFuaWZlc3REZWxldGlvbih7IGlkIH0pKTtcbiAgICB0aGlzLnRvZ2dsZU1vZGFsQWN0aW9ucygpO1xuICB9XG5cbiAgdG9nZ2xlTW9kYWxBY3Rpb25zKHByZXNlbnRhdGlvbj86IE1hbmlmZXN0RGVzY3JpcHRpb24gfCBudWxsLCBtb3JlQnV0dG9uPzogSFRNTEJ1dHRvbkVsZW1lbnQpIHtcbiAgICBpZiAoIXRoaXMub3ZlcmxheVJlZiAmJiBwcmVzZW50YXRpb24pIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRQcmVzZW50YXRpb24kLm5leHQocHJlc2VudGF0aW9uKTtcbiAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goRGFzaGJvYXJkQWN0aW9ucy5zZWxlY3RQcmVzZW50YXRpb24oeyBwcmVzZW50YXRpb24sIHZpZXdNb2RlOiBWaWV3TW9kZS5DQVRBTE9HIH0pKTtcbiAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goRGFzaGJvYXJkQWN0aW9ucy5sb2FkTWFuaWZlc3QoeyBpZDogcHJlc2VudGF0aW9uLmlkIH0pKTtcbiAgICAgIHRoaXMub3ZlcmxheVJlZiA9IHRoaXMub3ZlcmxheS5jcmVhdGUoXG4gICAgICAgIG5ldyBPdmVybGF5Q29uZmlnKHtcbiAgICAgICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcbiAgICAgICAgICBwYW5lbENsYXNzOiBbJ20tY29udGV4dC1tZW51LXdyYXBwZXInXSxcbiAgICAgICAgICBiYWNrZHJvcENsYXNzOiAnYmFja2Ryb3AnXG4gICAgICAgIH0pXG4gICAgICApO1xuICAgICAgdGhpcy5vdmVybGF5UmVmLmJhY2tkcm9wQ2xpY2soKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy50b2dnbGVNb2RhbEFjdGlvbnMocHJlc2VudGF0aW9uKSk7XG4gICAgICB0aGlzLm92ZXJsYXlSZWYuYXR0YWNoKG5ldyBUZW1wbGF0ZVBvcnRhbCh0aGlzLnRlbXBsYXRlTW9kYWxBY3Rpb25zLCB0aGlzLnZpZXdDb250YWluZXJSZWYpKTtcbiAgICAgIGNvbnN0IGNvbnRleHRNZW51ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignZGl2Lm0tY29udGV4dC1tZW51JykgYXMgSFRNTERpdkVsZW1lbnQ7XG4gICAgICBpZiAoISFjb250ZXh0TWVudSAmJiBtb3JlQnV0dG9uKSB7XG4gICAgICAgIGNvbnN0IHRvZ2dsZUFjdGlvbnNNb2RhbEJ1dHRvbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyMnICsgbW9yZUJ1dHRvbi5pZCk7XG4gICAgICAgIGNvbnN0IHJlY3QgPSB0b2dnbGVBY3Rpb25zTW9kYWxCdXR0b24/LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICBjb250ZXh0TWVudS5zdHlsZS5sZWZ0ID0gKHJlY3Q/LmxlZnQgPz8gMCkgLSAoY29udGV4dE1lbnU/LmNsaWVudFdpZHRoID8/IDApICsgMjMgKyAncHgnO1xuICAgICAgICBjb250ZXh0TWVudS5zdHlsZS50b3AgPSAocmVjdD8udG9wID8/IDApICsgMjUgKyAncHgnO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm92ZXJsYXlSZWY/LmRpc3Bvc2UoKTtcbiAgICAgIHRoaXMub3ZlcmxheVJlZiA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuc2VsZWN0ZWRQcmVzZW50YXRpb24kLm5leHQobnVsbCk7XG4gICAgfVxuICB9XG5cbiAgdG9nZ2xlTW9kYWwocHJlc2VudGF0aW9uPzogTWFuaWZlc3REZXNjcmlwdGlvbiB8IG51bGwpIHtcbiAgICB0aGlzLm1vZGFsT3BlbmVkID0gIXRoaXMubW9kYWxPcGVuZWQ7XG4gICAgaWYgKHRoaXMubW9kYWxPcGVuZWQgJiYgcHJlc2VudGF0aW9uKSB7XG4gICAgICB0aGlzLnRvZ2dsZU1vZGFsQWN0aW9ucygpO1xuICAgICAgdGhpcy5zZWxlY3RlZFByZXNlbnRhdGlvbiQubmV4dChwcmVzZW50YXRpb24pO1xuICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChEYXNoYm9hcmRBY3Rpb25zLnNlbGVjdFByZXNlbnRhdGlvbih7IHByZXNlbnRhdGlvbiwgdmlld01vZGU6IFZpZXdNb2RlLkNBVEFMT0cgfSkpO1xuICAgICAgLyogd2UgbmVlZCB0byBsb2FkIG1hbmlmZXN0IGluIG9yZGVyIHRvIGJlIGFibGUgdG8gc2F2ZSBpdCBsYXRlciAqL1xuICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChEYXNoYm9hcmRBY3Rpb25zLmxvYWRNYW5pZmVzdCh7IGlkOiBwcmVzZW50YXRpb24uaWQgfSkpO1xuICAgICAgdGhpcy5vdmVybGF5UmVmID0gdGhpcy5vdmVybGF5LmNyZWF0ZShcbiAgICAgICAgbmV3IE92ZXJsYXlDb25maWcoe1xuICAgICAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxuICAgICAgICAgIHBhbmVsQ2xhc3M6IFsnby1tb2RhbC13cmFwcGVyJ10sXG4gICAgICAgICAgYmFja2Ryb3BDbGFzczogJ2JhY2tkcm9wJ1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgICAgIHRoaXMub3ZlcmxheVJlZi5iYWNrZHJvcENsaWNrKCkuc3Vic2NyaWJlKCgpID0+IHRoaXMudG9nZ2xlTW9kYWwocHJlc2VudGF0aW9uKSk7XG4gICAgICB0aGlzLm92ZXJsYXlSZWYuYXR0YWNoKG5ldyBUZW1wbGF0ZVBvcnRhbCh0aGlzLnRlbXBsYXRlLCB0aGlzLnZpZXdDb250YWluZXJSZWYpKTtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBjb25zdCBmb2N1cyA9IHRoaXMudmlzaWJpbGl0eU1vZGFsLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW5bMF0uY2hpbGRyZW5bMV0uZmlyc3RFbGVtZW50Q2hpbGQgYXMgSFRNTEJ1dHRvbkVsZW1lbnQ7XG4gICAgICAgIGZvY3VzLmZvY3VzKCk7XG4gICAgICB9LCAxMCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMub3ZlcmxheVJlZj8uZGlzcG9zZSgpO1xuICAgICAgdGhpcy5zZWxlY3RlZFByZXNlbnRhdGlvbiQubmV4dChudWxsKTtcbiAgICAgIHRoaXMub3ZlcmxheVJlZiA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICBjaGFuZ2VWaXNpYmlsaXR5KHByZXNlbnRhdGlvbj86IE1hbmlmZXN0RGVzY3JpcHRpb24pIHtcbiAgICBpZiAocHJlc2VudGF0aW9uKSB7XG4gICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFxuICAgICAgICBEYXNoYm9hcmRBY3Rpb25zLnNhdmVNYW5pZmVzdCh7XG4gICAgICAgICAgaWQ6IHByZXNlbnRhdGlvbi5pZCA/PyAnJyxcbiAgICAgICAgICBuYW1lOiBwcmVzZW50YXRpb24ubmFtZSA/PyAnJyxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogcHJlc2VudGF0aW9uLmRlc2NyaXB0aW9uID8/ICcnLFxuICAgICAgICAgIGltYWdlOiBwcmVzZW50YXRpb24uaW1hZ2UgPz8gJycsXG4gICAgICAgICAgdmlzaWJpbGl0eTogdGhpcy52aXNpYmlsaXR5XG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH1cbiAgICB0aGlzLnRvZ2dsZU1vZGFsKHByZXNlbnRhdGlvbik7XG4gIH1cblxuICBmb2N1c0Nyb3NzRWxlbWVudCgpIHtcbiAgICBpZiAodGhpcy5jcm9zc1Zpc2liaWxpdHkpIHtcbiAgICAgIHRoaXMuY3Jvc3NWaXNpYmlsaXR5Py5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgfVxuICAgIHRoaXMuY3Jvc3M/Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgfVxuXG4gIGZvY3VzVmFsaWRhdGlvbigpIHtcbiAgICBpZiAodGhpcy5jb25maXJtKSB7XG4gICAgICB0aGlzLmNvbmZpcm0ubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH1cbiAgICB0aGlzLnN1Ym1pdC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gIH1cbn1cbiIsIjxwcnktcHJlc2VudGF0aW9uLWNzcz48L3ByeS1wcmVzZW50YXRpb24tY3NzPlxuPGRpdiBjbGFzcz1cIm8tbWFuaWZlc3QtbGF5b3V0XCIgW25nU3dpdGNoXT1cInNlbGVjdGVkTW9kZVwiPlxuICA8bmctY29udGFpbmVyICpuZ1N3aXRjaERlZmF1bHQ+XG4gICAgPGRpdiBjbGFzcz1cIm8tbWFuaWZlc3QtbGF5b3V0X190b29sYm94XCIgW2NsYXNzLi11LWhpZGRlbl09XCJoaWRlVG9vbGJveFwiPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBjbGFzcz1cImEtYnRuIGEtYnRuLS1wcmltYXJ5IGEtYnRuLS1pY29uLXRleHQgYS10b29sdGlwXCJcbiAgICAgICAgW2F0dHIuZGF0YS10b29sdGlwXT1cIidAcHJ5LnByZXNlbnRhdGlvbi5jcmVhdGUnIHwgaTE4blwiXG4gICAgICAgIGRhdGEtdG9vbHRpcC1wb3NpdGlvbj1cImJvdHRvbVwiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAoY2xpY2spPVwiY3JlYXRpb24oKVwiXG4gICAgICAgICpwcnlBY2Nlc3M9XCJ7IG1vZHVsZTogJ2Rhc2hib2FyZCcsIHBhZ2U6ICdtYW5pZmVzdCcsIGFjdGlvbjogJ2NyZWF0ZScgfVwiXG4gICAgICA+XG4gICAgICAgIHt7ICdAcHJ5LnByZXNlbnRhdGlvbi5jcmVhdGUnIHwgaTE4biB9fVxuICAgICAgPC9idXR0b24+XG4gICAgICA8ZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiby1tYW5pZmVzdC1sYXlvdXRfX3Rvb2xib3hfX3NlYXJjaFwiPlxuICAgICAgICAgIDxsYWJlbCBpZD1cImNhdGFsb2ctc2VhcmNoLWxhYmVsXCIgZm9yPVwiY2F0YWxvZy1zZWFyY2hcIiBjbGFzcz1cInUtdmlzdWFsbHktaGlkZGVuXCI+XG4gICAgICAgICAgICA8c3Bhbj57eyAnQHByeS50b29sYm94LmNhdGFsb2cuZmlsdGVyLm5hbWUnIHwgaTE4biB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgaWQ9XCJjYXRhbG9nLXNlYXJjaFwiXG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICBjbGFzcz1cImEtZm9ybS1maWVsZFwiXG4gICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ0BwcnkucHJlc2VudGF0aW9uLnNlYXJjaCcgfCBpMThuXCJcbiAgICAgICAgICAgIFtuZ01vZGVsXT1cInNlYXJjaCQgfCBhc3luY1wiXG4gICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJ0aGlzLnNlYXJjaCQubmV4dCgkZXZlbnQpXCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIDxwcnktaWNvbiBjbGFzcz1cInNlYXJjaC1pY29uXCIgaWNvblN2Zz1cInNlYXJjaFwiIFt3aWR0aF09XCIxN1wiIFtoZWlnaHRdPVwiMTdcIj48L3ByeS1pY29uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJvLW1hbmlmZXN0LWxheW91dF9fY29udGVudFwiPlxuICAgICAgPGgxIGNsYXNzPVwiYS1oMVwiPnt7ICdAcHJ5LnByZXNlbnRhdGlvbi50aXRsZScgfCBpMThuIH19PC9oMT5cbiAgICAgIDxkaXYgY2xhc3M9XCJvLXByZXNlbnRhdGlvbi13cmFwcGVyXCI+XG4gICAgICAgIDx1bCBjbGFzcz1cIm8tcHJlc2VudGF0aW9uXCI+XG4gICAgICAgICAgPGxpXG4gICAgICAgICAgICBjbGFzcz1cIm8tcHJlc2VudGF0aW9uX19pdGVtXCJcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBwcmVzZW50YXRpb24gb2YgZmlsdGVyZWRQcmVzZW50YXRpb25zJCB8IGFzeW5jOyBsZXQgaW5kZXggPSBpbmRleFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm8tcHJlc2VudGF0aW9uX19pdGVtX19oZWFkZXJcIj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInByZXNlbnRhdGlvbi52aXNpYmlsaXR5LnR5cGUgPT09IFByeVZpc2liaWxpdHlUeXBlLlBSSVZBVEVcIj5cbiAgICAgICAgICAgICAgICA8cHJ5LWljb25cbiAgICAgICAgICAgICAgICAgIFtpY29uU3ZnXT1cInByZXNlbnRhdGlvbi52aXNpYmlsaXR5LnR5cGUudG9Mb3dlckNhc2UoKVwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImlzLXByaXZhdGUgYS10b29sdGlwIC10b29sdGlwLW5vLXdyYXBcIlxuICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS10b29sdGlwXT1cIidAcHJ5LnByZXNlbnRhdGlvbi5wcml2YXRlJyB8IGkxOG5cIlxuICAgICAgICAgICAgICAgICAgW2hlaWdodF09XCIxN1wiXG4gICAgICAgICAgICAgICAgICBbd2lkdGhdPVwiMTdcIlxuICAgICAgICAgICAgICAgID48L3ByeS1pY29uPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYS10b29sdGlwIC10b29sdGlwLW5vLXdyYXBcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJmZXRjaChwcmVzZW50YXRpb24pXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLXRvb2x0aXBdPVwiJ0BwcnkucHJlc2VudGF0aW9uLnZpZXcnIHwgaTE4blwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiby1wcmVzZW50YXRpb25fX2l0ZW1fX2ltYWdlXCI+XG4gICAgICAgICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICAgICAgIGFsdD1cIlwiXG4gICAgICAgICAgICAgICAgICAgIFtoZWlnaHRdPVwicHJlc2VudGF0aW9uLmNvdmVyID8gNjAwIDogMTAwXCJcbiAgICAgICAgICAgICAgICAgICAgW3dpZHRoXT1cInByZXNlbnRhdGlvbi5jb3ZlciA/IDYwMCA6IDEwMFwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1mdWxsLXdpZHRoXT1cInByZXNlbnRhdGlvbi5jb3ZlclwiXG4gICAgICAgICAgICAgICAgICAgIFtzcmNdPVwicHJlc2VudGF0aW9uLmltYWdlIHwgZ2V0U2VjdXJlZEltYWdlIHwgYXN5bmNcIlxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJwcmVzZW50YXRpb24ub3duZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9yZS1idXR0b25cIiAqcHJ5QWNjZXNzPVwieyBtb2R1bGU6ICdkYXNoYm9hcmQnLCBwYWdlOiAnbWFuaWZlc3QnLCBhY3Rpb246ICdzaGFyZScgfVwiPlxuICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhLWJ0biBhLWJ0bi0tbW9yZSBhLXRvb2x0aXAgLXRvb2x0aXAtbm8td3JhcFwiXG4gICAgICAgICAgICAgICAgICAgIFtpZF09XCInbW9yZS1idXR0b24tJyArIGluZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS10b29sdGlwXT1cIidAcHJ5LnJlc3RpdHV0aW9uLm1vcmUnIHwgaTE4blwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IHRvZ2dsZU1vZGFsQWN0aW9ucyhwcmVzZW50YXRpb24sIGJ1dHRvbilcIlxuICAgICAgICAgICAgICAgICAgICAjYnV0dG9uXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxwcnktaWNvbiBbaGVpZ2h0XT1cIjI1XCIgW3dpZHRoXT1cIjI1XCIgaWNvblN2Zz1cIm1vcmVfaG9yaXpcIj48L3ByeS1pY29uPlxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiby1wcmVzZW50YXRpb25fX2l0ZW1fX3R4dFwiIChjbGljayk9XCJmZXRjaChwcmVzZW50YXRpb24pXCI+XG4gICAgICAgICAgICAgIDxoMyBjbGFzcz1cImEtaDNcIj57eyBwcmVzZW50YXRpb24ubmFtZSB9fTwvaDM+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvLXByZXNlbnRhdGlvbl9faXRlbV9fZGVzY3JpcHRpb24tY29udGFpbmVyXCIgZWxsaXBzaXMgdGV4dEVsZW1lbnRTZWxlY3Rvcj1cIi5hLXBcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiby1wcmVzZW50YXRpb25fX2l0ZW1fX2Rlc2NyaXB0aW9uIGEtcFwiPlxuICAgICAgICAgICAgICAgICAge3sgcHJlc2VudGF0aW9uLmRlc2NyaXB0aW9uIH19XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8cCBjbGFzcz1cImEtcCAtZGF0ZVwiPnt7IHByZXNlbnRhdGlvbi5tb2RpZmljYXRpb25EYXRlIHwgc2luY2VEYXRlIH19PC9wPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwiby1wcmVzZW50YXRpb25fX2l0ZW1fX2Zvb3RlciBhLXRvb2x0aXAgLXRvb2x0aXAtbm8td3JhcFwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJmZXRjaChwcmVzZW50YXRpb24pXCJcbiAgICAgICAgICAgICAgW2F0dHIuZGF0YS10b29sdGlwXT1cIidAcHJ5LnByZXNlbnRhdGlvbi52aWV3JyB8IGkxOG5cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYS1idG5cIj5cbiAgICAgICAgICAgICAgICB7eyAnQHByeS5wcmVzZW50YXRpb24uY29uc3VsdCcgfCBpMThuIH19XG4gICAgICAgICAgICAgICAgPHByeS1pY29uIFt3aWR0aF09XCIyMFwiIFtoZWlnaHRdPVwiMjBcIiBpY29uU3ZnPVwiYXJyb3dfcmlnaHRcIj48L3ByeS1pY29uPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbGk+XG4gICAgICAgIDwvdWw+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG4gIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIlZpZXdNb2RlLkNSRUFUSU9OXCI+XG4gICAgPHByeS1hZGQtZWRpdC1wcmVzZW50YXRpb25cbiAgICAgIFtzZWxlY3RlZFByZXNlbnRhdGlvbl09XCJzZWxlY3RlZFByZXNlbnRhdGlvbiQgfCBhc3luY1wiXG4gICAgICAoZ29CYWNrKT1cImNsb3NlUmVzdGl0dXRpb24oKVwiXG4gICAgICBbZWRpdGlvblN0YXJ0VXJsXT1cImVkaXRpb25TdGFydFVybFwiXG4gICAgICBbZWRpdGlvbl09XCJmYWxzZVwiXG4gICAgICBbbW9kZV09XCJtb2RlXCJcbiAgICA+PC9wcnktYWRkLWVkaXQtcHJlc2VudGF0aW9uPlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiVmlld01vZGUuRURJVElPTlwiPlxuICAgIDxwcnktYWRkLWVkaXQtcHJlc2VudGF0aW9uXG4gICAgICBbc2VsZWN0ZWRQcmVzZW50YXRpb25dPVwic2VsZWN0ZWRQcmVzZW50YXRpb24kIHwgYXN5bmNcIlxuICAgICAgKGdvQmFjayk9XCJjbG9zZVJlc3RpdHV0aW9uKClcIlxuICAgICAgW2VkaXRpb25TdGFydFVybF09XCJlZGl0aW9uU3RhcnRVcmxcIlxuICAgICAgW2VkaXRpb25dPVwidHJ1ZVwiXG4gICAgICBbbW9kZV09XCJtb2RlXCJcbiAgICA+PC9wcnktYWRkLWVkaXQtcHJlc2VudGF0aW9uPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI21vZGFsPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJvLW1vZGFsXCJcbiAgICAjdmlzaWJpbGl0eU1vZGFsXG4gICAgcm9sZT1cImRpYWxvZ1wiXG4gICAgYXJpYS1tb2RhbD1cInRydWVcIlxuICAgIGFyaWEtbGFiZWxsZWRieT1cImRpYWxvZyBjaGFuZ2UgdmlzaWJpbGl0eVwiXG4gICAgKm5nSWY9XCJzZWxlY3RlZFByZXNlbnRhdGlvbiQgfCBhc3luYyBhcyBzZWxlY3RlZFByZXNlbnRhdGlvblwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwiby1tb2RhbF9fdG9wXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiby1tb2RhbF9fdG9wX190aXRsZVwiPlxuICAgICAgICA8aDIgY2xhc3M9XCJhLWgyXCIgaWQ9XCJkaWFsb2dfdGl0bGVcIj57eyAnQHByeS50b29sYm94LnNoYXJlJyB8IGkxOG4gfX08L2gyPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiby1tb2RhbF9fdG9wX19jbG9zZVwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgY2xhc3M9XCJhLWJ0biBhLWJ0bi0taWNvbi1vbmx5XCJcbiAgICAgICAgICAjY3Jvc3NWaXNpYmlsaXR5XG4gICAgICAgICAgKGtleWRvd24uc2hpZnQudGFiKT1cImZvY3VzVmFsaWRhdGlvbigpXCJcbiAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlTW9kYWwoKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8cHJ5LWljb24gaWNvblN2Zz1cImNsb3NlXCIgW2hlaWdodF09XCIzNVwiIFt3aWR0aF09XCIzNVwiPjwvcHJ5LWljb24+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1LXZpc3VhbGx5LWhpZGRlblwiPnt7ICdAcHJ5LnRvb2xib3guY2xvc2UnIHwgaTE4biB9fTwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8cHJ5LXNoYXJlIFtuZ01vZGVsXT1cInNlbGVjdGVkUHJlc2VudGF0aW9uLnZpc2liaWxpdHlcIiAobmdNb2RlbENoYW5nZSk9XCJ2aXNpYmlsaXR5ID0gJGV2ZW50XCI+PC9wcnktc2hhcmU+XG4gICAgPGRpdiBjbGFzcz1cIm0tYnRuLWdyb3VwXCI+XG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImEtYnRuIGEtYnRuLS1zZWNvbmRhcnlcIiAoY2xpY2spPVwidG9nZ2xlTW9kYWwoKVwiPlxuICAgICAgICB7eyAnQHByeS50b29sYm94Lm1hbmlmZXN0LmNsb3NlJyB8IGkxOG4gfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvblxuICAgICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgICAgY2xhc3M9XCJhLWJ0biBhLWJ0bi0tcHJpbWFyeVwiXG4gICAgICAgICNzdWJtaXRcbiAgICAgICAgKGtleWRvd24udGFiKT1cImZvY3VzQ3Jvc3NFbGVtZW50KClcIlxuICAgICAgICAoY2xpY2spPVwiY2hhbmdlVmlzaWJpbGl0eShzZWxlY3RlZFByZXNlbnRhdGlvbilcIlxuICAgICAgPlxuICAgICAgICB7eyAnQHByeS50b29sYm94Lm1hbmlmZXN0LmNoZWNrJyB8IGkxOG4gfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI21vZGFsQWN0aW9ucz5cbiAgPGRpdiBjbGFzcz1cIm0tY29udGV4dC1tZW51XCI+XG4gICAgPHVsXG4gICAgICBjbGFzcz1cIm0tY29udGV4dC1tZW51X19saXN0XCJcbiAgICAgIHJvbGU9XCJkaWFsb2dcIlxuICAgICAgYXJpYS1tb2RhbD1cInRydWVcIlxuICAgICAgYXJpYS1sYWJlbGxlZGJ5PVwiZGlhbG9nIHByZXNlbnRhdGlvbiBvcHRpb25zXCJcbiAgICAgICpuZ0lmPVwic2VsZWN0ZWRQcmVzZW50YXRpb24kIHwgYXN5bmMgYXMgc2VsZWN0ZWRQcmVzZW50YXRpb25cIlxuICAgID5cbiAgICAgIDxsaSBjbGFzcz1cIm0tY29udGV4dC1tZW51X19saXN0X19pdGVtXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBjbGFzcz1cImEtYnRuIC1saW5rLWxpa2VcIlxuICAgICAgICAgIChjbGljayk9XCJlZGl0KHNlbGVjdGVkUHJlc2VudGF0aW9uKVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cIiFzZWxlY3RlZFByZXNlbnRhdGlvbi5vd25lclwiXG4gICAgICAgICAgKnByeUFjY2Vzcz1cInsgbW9kdWxlOiAnZGFzaGJvYXJkJywgcGFnZTogJ21hbmlmZXN0JywgYWN0aW9uOiAnZWRpdCcgfVwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyAnQHByeS5wcmVzZW50YXRpb24uZWRpdGlvbicgfCBpMThuIH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9saT5cbiAgICAgIDxsaSBjbGFzcz1cIm0tY29udGV4dC1tZW51X19saXN0X19pdGVtXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlTW9kYWwoc2VsZWN0ZWRQcmVzZW50YXRpb24pXCJcbiAgICAgICAgICBjbGFzcz1cImEtYnRuIC1saW5rLWxpa2VcIlxuICAgICAgICAgIGFyaWEtaGFzcG9wdXA9XCJkaWFsb2dcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCIhc2VsZWN0ZWRQcmVzZW50YXRpb24ub3duZXJcIlxuICAgICAgICAgICpwcnlBY2Nlc3M9XCJ7IG1vZHVsZTogJ2Rhc2hib2FyZCcsIHBhZ2U6ICdtYW5pZmVzdCcsIGFjdGlvbjogJ3NoYXJlJyB9XCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7ICdAcHJ5LnByZXNlbnRhdGlvbi5zaGFyZScgfCBpMThuIH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9saT5cbiAgICAgIDxsaSBjbGFzcz1cIm0tY29udGV4dC1tZW51X19saXN0X19pdGVtXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBjbGFzcz1cImEtYnRuIC1saW5rLWxpa2VcIlxuICAgICAgICAgICNvcGVuTW9kYWxcbiAgICAgICAgICAoY2xpY2spPVwiZGVsZXRlKHNlbGVjdGVkUHJlc2VudGF0aW9uLmlkKVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cIiFzZWxlY3RlZFByZXNlbnRhdGlvbi5vd25lclwiXG4gICAgICAgICAgKnByeUFjY2Vzcz1cInsgbW9kdWxlOiAnZGFzaGJvYXJkJywgcGFnZTogJ21hbmlmZXN0JywgYWN0aW9uOiAnZGVsZXRlJyB9XCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7ICdAcHJ5LnByZXNlbnRhdGlvbi5kZWxldGUnIHwgaTE4biB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvbGk+XG4gICAgPC91bD5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19