geonetwork-ui 2.7.0-dev.dadaab772 → 2.7.0-dev.e3a54608e

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 (92) hide show
  1. package/esm2022/libs/api/repository/src/lib/gn4/elasticsearch/constant.mjs +4 -6
  2. package/esm2022/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.mjs +47 -3
  3. package/esm2022/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.mjs +7 -3
  4. package/esm2022/libs/common/domain/src/lib/model/record/metadata.model.mjs +11 -1
  5. package/esm2022/libs/feature/dataviz/src/lib/service/data.service.mjs +2 -2
  6. package/esm2022/libs/feature/map/src/lib/utils/map-utils.service.mjs +3 -5
  7. package/esm2022/libs/feature/record/src/lib/map-view/map-view.component.mjs +4 -2
  8. package/esm2022/libs/feature/router/src/lib/default/state/router.facade.mjs +3 -2
  9. package/esm2022/libs/feature/search/src/lib/state/reducer.mjs +5 -2
  10. package/esm2022/libs/ui/elements/src/lib/api-card/api-card.component.mjs +3 -3
  11. package/esm2022/libs/ui/elements/src/lib/downloads-list/downloads-list.component.mjs +5 -4
  12. package/esm2022/libs/ui/elements/src/lib/geo-data-badge/geo-data-badge.component.mjs +5 -4
  13. package/esm2022/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.mjs +1 -4
  14. package/esm2022/libs/ui/inputs/src/lib/search-feature-catalog/search-feature-catalog.component.mjs +5 -4
  15. package/esm2022/libs/util/app-config/src/lib/app-config.mjs +3 -1
  16. package/esm2022/libs/util/app-config/src/lib/model.mjs +1 -1
  17. package/esm2022/libs/util/shared/src/lib/record/quality-score.util.mjs +7 -7
  18. package/esm2022/libs/util/shared/src/lib/utils/geojson.mjs +58 -1
  19. package/esm2022/libs/util/shared/src/lib/utils/index.mjs +2 -1
  20. package/esm2022/libs/util/shared/src/lib/utils/mobile-screen.mjs +9 -0
  21. package/esm2022/translations/de.json +10 -0
  22. package/esm2022/translations/en.json +10 -0
  23. package/esm2022/translations/es.json +10 -0
  24. package/esm2022/translations/fr.json +10 -0
  25. package/esm2022/translations/it.json +10 -0
  26. package/esm2022/translations/nl.json +10 -0
  27. package/esm2022/translations/pt.json +10 -0
  28. package/esm2022/translations/sk.json +10 -0
  29. package/fesm2022/geonetwork-ui.mjs +2498 -2293
  30. package/fesm2022/geonetwork-ui.mjs.map +1 -1
  31. package/libs/api/repository/src/lib/gn4/elasticsearch/constant.d.ts.map +1 -1
  32. package/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.d.ts +1 -1
  33. package/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.d.ts.map +1 -1
  34. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts +1 -0
  35. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts.map +1 -1
  36. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts.map +1 -1
  37. package/libs/feature/dataviz/src/lib/service/data.service.d.ts.map +1 -1
  38. package/libs/feature/map/src/lib/utils/map-utils.service.d.ts +2 -2
  39. package/libs/feature/map/src/lib/utils/map-utils.service.d.ts.map +1 -1
  40. package/libs/feature/record/src/lib/map-view/map-view.component.d.ts.map +1 -1
  41. package/libs/feature/router/src/lib/default/state/router.facade.d.ts.map +1 -1
  42. package/libs/feature/search/src/lib/state/reducer.d.ts.map +1 -1
  43. package/libs/ui/elements/src/lib/downloads-list/downloads-list.component.d.ts +1 -0
  44. package/libs/ui/elements/src/lib/downloads-list/downloads-list.component.d.ts.map +1 -1
  45. package/libs/ui/elements/src/lib/geo-data-badge/geo-data-badge.component.d.ts +1 -0
  46. package/libs/ui/elements/src/lib/geo-data-badge/geo-data-badge.component.d.ts.map +1 -1
  47. package/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.d.ts +0 -1
  48. package/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.d.ts.map +1 -1
  49. package/libs/ui/inputs/src/lib/search-feature-catalog/search-feature-catalog.component.d.ts +1 -0
  50. package/libs/ui/inputs/src/lib/search-feature-catalog/search-feature-catalog.component.d.ts.map +1 -1
  51. package/libs/util/app-config/src/lib/app-config.d.ts.map +1 -1
  52. package/libs/util/app-config/src/lib/model.d.ts +1 -0
  53. package/libs/util/app-config/src/lib/model.d.ts.map +1 -1
  54. package/libs/util/shared/src/lib/record/quality-score.util.d.ts.map +1 -1
  55. package/libs/util/shared/src/lib/utils/geojson.d.ts +7 -2
  56. package/libs/util/shared/src/lib/utils/geojson.d.ts.map +1 -1
  57. package/libs/util/shared/src/lib/utils/index.d.ts +1 -0
  58. package/libs/util/shared/src/lib/utils/index.d.ts.map +1 -1
  59. package/libs/util/shared/src/lib/utils/mobile-screen.d.ts +2 -0
  60. package/libs/util/shared/src/lib/utils/mobile-screen.d.ts.map +1 -0
  61. package/package.json +11 -10
  62. package/src/libs/api/repository/src/lib/gn4/elasticsearch/constant.ts +3 -5
  63. package/src/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.ts +50 -3
  64. package/src/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.ts +7 -5
  65. package/src/libs/common/domain/src/lib/model/record/metadata.model.ts +11 -0
  66. package/src/libs/feature/dataviz/src/lib/service/data.service.ts +3 -1
  67. package/src/libs/feature/map/src/lib/utils/map-utils.service.ts +8 -8
  68. package/src/libs/feature/record/src/lib/map-view/map-view.component.ts +3 -1
  69. package/src/libs/feature/router/src/lib/default/state/router.facade.ts +2 -1
  70. package/src/libs/feature/search/src/lib/state/reducer.ts +4 -1
  71. package/src/libs/ui/elements/src/lib/api-card/api-card.component.html +4 -1
  72. package/src/libs/ui/elements/src/lib/downloads-list/downloads-list.component.html +12 -11
  73. package/src/libs/ui/elements/src/lib/downloads-list/downloads-list.component.ts +7 -1
  74. package/src/libs/ui/elements/src/lib/geo-data-badge/geo-data-badge.component.html +4 -1
  75. package/src/libs/ui/elements/src/lib/geo-data-badge/geo-data-badge.component.ts +7 -1
  76. package/src/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.ts +0 -4
  77. package/src/libs/ui/inputs/src/lib/search-feature-catalog/search-feature-catalog.component.html +7 -1
  78. package/src/libs/ui/inputs/src/lib/search-feature-catalog/search-feature-catalog.component.ts +3 -1
  79. package/src/libs/util/app-config/src/lib/app-config.ts +2 -0
  80. package/src/libs/util/app-config/src/lib/model.ts +1 -0
  81. package/src/libs/util/shared/src/lib/record/quality-score.util.ts +8 -9
  82. package/src/libs/util/shared/src/lib/utils/geojson.ts +72 -2
  83. package/src/libs/util/shared/src/lib/utils/index.ts +1 -0
  84. package/src/libs/util/shared/src/lib/utils/mobile-screen.ts +14 -0
  85. package/translations/de.json +10 -0
  86. package/translations/en.json +10 -0
  87. package/translations/es.json +10 -0
  88. package/translations/fr.json +10 -0
  89. package/translations/it.json +10 -0
  90. package/translations/nl.json +10 -0
  91. package/translations/pt.json +10 -0
  92. package/translations/sk.json +10 -0
@@ -10,14 +10,12 @@ export const ES_SOURCE_SUMMARY = [
10
10
  'codelist_status_text',
11
11
  'link',
12
12
  'linkProtocol',
13
- 'contactForResource.organisation',
14
- 'contact.organisation',
15
- 'contact.email',
13
+ 'contactForResource*.organisation*',
14
+ 'contact*.organisation*',
15
+ 'contact*.email',
16
16
  'userSavedCount',
17
- 'updateFrequency',
18
17
  'cl_topic',
19
18
  'cl_maintenanceAndUpdateFrequency',
20
- 'tag',
21
19
  'MD_LegalConstraints*Object',
22
20
  'qualityScore',
23
21
  'allKeywords',
@@ -31,4 +29,4 @@ export const ES_QUERY_FIELDS_PRIORITY = {
31
29
  'any.${searchLang}': 1,
32
30
  uuid: 1,
33
31
  };
34
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FwaS9yZXBvc2l0b3J5L3NyYy9saWIvZ240L2VsYXN0aWNzZWFyY2gvY29uc3RhbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUc7SUFDL0IsTUFBTTtJQUNOLElBQUk7SUFDSixPQUFPO0lBQ1AsV0FBVztJQUNYLHFCQUFxQjtJQUNyQix3QkFBd0I7SUFDeEIsVUFBVTtJQUNWLE1BQU07SUFDTixzQkFBc0I7SUFDdEIsTUFBTTtJQUNOLGNBQWM7SUFDZCxpQ0FBaUM7SUFDakMsc0JBQXNCO0lBQ3RCLGVBQWU7SUFDZixnQkFBZ0I7SUFDaEIsaUJBQWlCO0lBQ2pCLFVBQVU7SUFDVixrQ0FBa0M7SUFDbEMsS0FBSztJQUNMLDRCQUE0QjtJQUM1QixjQUFjO0lBQ2QsYUFBYTtJQUNiLFlBQVk7Q0FDYixDQUFBO0FBR0QsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUc7SUFDdEMsbUNBQW1DLEVBQUUsQ0FBQztJQUN0QyxtQkFBbUIsRUFBRSxDQUFDO0lBQ3RCLHNDQUFzQyxFQUFFLENBQUM7SUFDekMsNkJBQTZCLEVBQUUsQ0FBQztJQUNoQyxtQkFBbUIsRUFBRSxDQUFDO0lBQ3RCLElBQUksRUFBRSxDQUFDO0NBQ1IsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBFU19TT1VSQ0VfU1VNTUFSWSA9IFtcbiAgJ3V1aWQnLFxuICAnaWQnLFxuICAndGl0bGUnLFxuICAncmVzb3VyY2UqJyxcbiAgJ3Jlc291cmNlVGl0bGVPYmplY3QnLFxuICAncmVzb3VyY2VBYnN0cmFjdE9iamVjdCcsXG4gICdvdmVydmlldycsXG4gICdsb2dvJyxcbiAgJ2NvZGVsaXN0X3N0YXR1c190ZXh0JyxcbiAgJ2xpbmsnLFxuICAnbGlua1Byb3RvY29sJyxcbiAgJ2NvbnRhY3RGb3JSZXNvdXJjZS5vcmdhbmlzYXRpb24nLFxuICAnY29udGFjdC5vcmdhbmlzYXRpb24nLFxuICAnY29udGFjdC5lbWFpbCcsXG4gICd1c2VyU2F2ZWRDb3VudCcsXG4gICd1cGRhdGVGcmVxdWVuY3knLFxuICAnY2xfdG9waWMnLFxuICAnY2xfbWFpbnRlbmFuY2VBbmRVcGRhdGVGcmVxdWVuY3knLFxuICAndGFnJyxcbiAgJ01EX0xlZ2FsQ29uc3RyYWludHMqT2JqZWN0JyxcbiAgJ3F1YWxpdHlTY29yZScsXG4gICdhbGxLZXl3b3JkcycsXG4gICdyZWNvcmRMaW5rJyxcbl1cblxuZXhwb3J0IHR5cGUgRXNRdWVyeUZpZWxkc1ByaW9yaXR5VHlwZSA9IFJlY29yZDxzdHJpbmcsIG51bWJlcj5cbmV4cG9ydCBjb25zdCBFU19RVUVSWV9GSUVMRFNfUFJJT1JJVFkgPSB7XG4gICdyZXNvdXJjZVRpdGxlT2JqZWN0LiR7c2VhcmNoTGFuZ30nOiA1LFxuICAndGFnLiR7c2VhcmNoTGFuZ30nOiA0LFxuICAncmVzb3VyY2VBYnN0cmFjdE9iamVjdC4ke3NlYXJjaExhbmd9JzogMyxcbiAgJ2xpbmVhZ2VPYmplY3QuJHtzZWFyY2hMYW5nfSc6IDIsXG4gICdhbnkuJHtzZWFyY2hMYW5nfSc6IDEsXG4gIHV1aWQ6IDEsXG59XG4iXX0=
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FwaS9yZXBvc2l0b3J5L3NyYy9saWIvZ240L2VsYXN0aWNzZWFyY2gvY29uc3RhbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUc7SUFDL0IsTUFBTTtJQUNOLElBQUk7SUFDSixPQUFPO0lBQ1AsV0FBVztJQUNYLHFCQUFxQjtJQUNyQix3QkFBd0I7SUFDeEIsVUFBVTtJQUNWLE1BQU07SUFDTixzQkFBc0I7SUFDdEIsTUFBTTtJQUNOLGNBQWM7SUFDZCxtQ0FBbUM7SUFDbkMsd0JBQXdCO0lBQ3hCLGdCQUFnQjtJQUNoQixnQkFBZ0I7SUFDaEIsVUFBVTtJQUNWLGtDQUFrQztJQUNsQyw0QkFBNEI7SUFDNUIsY0FBYztJQUNkLGFBQWE7SUFDYixZQUFZO0NBQ2IsQ0FBQTtBQUdELE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHO0lBQ3RDLG1DQUFtQyxFQUFFLENBQUM7SUFDdEMsbUJBQW1CLEVBQUUsQ0FBQztJQUN0QixzQ0FBc0MsRUFBRSxDQUFDO0lBQ3pDLDZCQUE2QixFQUFFLENBQUM7SUFDaEMsbUJBQW1CLEVBQUUsQ0FBQztJQUN0QixJQUFJLEVBQUUsQ0FBQztDQUNSLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgRVNfU09VUkNFX1NVTU1BUlkgPSBbXG4gICd1dWlkJyxcbiAgJ2lkJyxcbiAgJ3RpdGxlJyxcbiAgJ3Jlc291cmNlKicsXG4gICdyZXNvdXJjZVRpdGxlT2JqZWN0JyxcbiAgJ3Jlc291cmNlQWJzdHJhY3RPYmplY3QnLFxuICAnb3ZlcnZpZXcnLFxuICAnbG9nbycsXG4gICdjb2RlbGlzdF9zdGF0dXNfdGV4dCcsXG4gICdsaW5rJyxcbiAgJ2xpbmtQcm90b2NvbCcsXG4gICdjb250YWN0Rm9yUmVzb3VyY2UqLm9yZ2FuaXNhdGlvbionLFxuICAnY29udGFjdCoub3JnYW5pc2F0aW9uKicsXG4gICdjb250YWN0Ki5lbWFpbCcsXG4gICd1c2VyU2F2ZWRDb3VudCcsXG4gICdjbF90b3BpYycsXG4gICdjbF9tYWludGVuYW5jZUFuZFVwZGF0ZUZyZXF1ZW5jeScsXG4gICdNRF9MZWdhbENvbnN0cmFpbnRzKk9iamVjdCcsXG4gICdxdWFsaXR5U2NvcmUnLFxuICAnYWxsS2V5d29yZHMnLFxuICAncmVjb3JkTGluaycsXG5dXG5cbmV4cG9ydCB0eXBlIEVzUXVlcnlGaWVsZHNQcmlvcml0eVR5cGUgPSBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+XG5leHBvcnQgY29uc3QgRVNfUVVFUllfRklFTERTX1BSSU9SSVRZID0ge1xuICAncmVzb3VyY2VUaXRsZU9iamVjdC4ke3NlYXJjaExhbmd9JzogNSxcbiAgJ3RhZy4ke3NlYXJjaExhbmd9JzogNCxcbiAgJ3Jlc291cmNlQWJzdHJhY3RPYmplY3QuJHtzZWFyY2hMYW5nfSc6IDMsXG4gICdsaW5lYWdlT2JqZWN0LiR7c2VhcmNoTGFuZ30nOiAyLFxuICAnYW55LiR7c2VhcmNoTGFuZ30nOiAxLFxuICB1dWlkOiAxLFxufVxuIl19
@@ -4,6 +4,9 @@ import { METADATA_LANGUAGE } from '../../metadata-language';
4
4
  import { getLang3FromLang2 } from '../../../../../../../libs/util/i18n/src';
5
5
  import { formatDate, isDateRange } from './date-range.utils';
6
6
  import { TranslateService } from '@ngx-translate/core';
7
+ import { getGeometryBoundingBox } from '../../../../../../../libs/util/shared/src';
8
+ import { getLength as getGeodesicLength } from 'ol/sphere';
9
+ import { LineString } from 'ol/geom';
7
10
  import * as i0 from "@angular/core";
8
11
  import * as i1 from "@ngx-translate/core";
9
12
  export class ElasticsearchService {
@@ -264,13 +267,18 @@ export class ElasticsearchService {
264
267
  });
265
268
  }
266
269
  if (geometry) {
270
+ // boosts applied using the filter geometry:
271
+ // * records completely within the geometry receive a boost of 5
272
+ // * records intersecting the geometry receive a boost of 2
273
+ // * records close to the geometry center receive a boost of 5 (based on the `location` field)
274
+ // * records on the outskirt of the geometry receive a boost of 2.5
267
275
  should.push({
268
276
  geo_shape: {
269
277
  geom: {
270
278
  shape: geometry,
271
279
  relation: 'within',
272
280
  },
273
- boost: 10.0,
281
+ boost: 5.0,
274
282
  },
275
283
  }, {
276
284
  geo_shape: {
@@ -278,7 +286,43 @@ export class ElasticsearchService {
278
286
  shape: geometry,
279
287
  relation: 'intersects',
280
288
  },
281
- boost: 7.0,
289
+ boost: 2.0,
290
+ },
291
+ });
292
+ // this will boost the results variably depending on their distance from the given geometry
293
+ // note: this takes into account the `location` field of a record; this is generally the center of all spatial extents
294
+ // combined, and thus the actual size/coverage of the record spatial extent isn't relevant here
295
+ const bbox = getGeometryBoundingBox(geometry);
296
+ const center = [(bbox[0] + bbox[2]) / 2, (bbox[1] + bbox[3]) / 2];
297
+ const northToCenter = new LineString([
298
+ [center[0], bbox[3]],
299
+ center,
300
+ ]).transform('EPSG:4326', 'EPSG:3857');
301
+ const southToCenter = new LineString([
302
+ [center[0], bbox[1]],
303
+ center,
304
+ ]).transform('EPSG:4326', 'EPSG:3857');
305
+ const westToCenter = new LineString([
306
+ [bbox[0], center[1]],
307
+ center,
308
+ ]).transform('EPSG:4326', 'EPSG:3857');
309
+ const eastToCenter = new LineString([
310
+ [bbox[2], center[1]],
311
+ center,
312
+ ]).transform('EPSG:4326', 'EPSG:3857');
313
+ // cutoff distance is the distance from where the boost will only be half of the max value
314
+ // it is an average of the "size" of the bounding box in every direction, in meters
315
+ const cutoffDistance = (getGeodesicLength(northToCenter) +
316
+ getGeodesicLength(southToCenter) +
317
+ getGeodesicLength(westToCenter) +
318
+ getGeodesicLength(eastToCenter)) /
319
+ 4;
320
+ should.push({
321
+ distance_feature: {
322
+ field: 'location',
323
+ pivot: `${Math.round(cutoffDistance).toFixed(0)}m`,
324
+ origin: center,
325
+ boost: 5.0,
282
326
  },
283
327
  });
284
328
  }
@@ -506,4 +550,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
506
550
  providedIn: 'root',
507
551
  }]
508
552
  }], ctorParameters: () => [{ type: i1.TranslateService }, { type: i0.Injector }] });
509
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxhc3RpY3NlYXJjaC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hcGkvcmVwb3NpdG9yeS9zcmMvbGliL2duNC9lbGFzdGljc2VhcmNoL2VsYXN0aWNzZWFyY2guc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUVwRCxPQUFPLEVBQ0wsd0JBQXdCLEVBQ3hCLGlCQUFpQixHQUVsQixNQUFNLFlBQVksQ0FBQTtBQVduQixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQTtBQVczRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQTtBQUMzRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBRTVELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFBOzs7QUFPdEQsTUFBTSxPQUFPLG9CQUFvQjtJQUsvQixxRUFBcUU7SUFDckUsSUFBWSxLQUFLO1FBQ2YsT0FBTyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxDQUFDLENBQUE7SUFDN0QsQ0FBQztJQUNELElBQVksWUFBWTtRQUN0QixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLGlCQUFpQixFQUFFLElBQUksQ0FBQyxDQUFBO0lBQ25ELENBQUM7SUFFRCxZQUNVLGdCQUFrQyxFQUNsQyxRQUFrQjtRQURsQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLGFBQVEsR0FBUixRQUFRLENBQVU7UUFkNUIsc0RBQXNEO1FBQ3RELG1HQUFtRztRQUMzRixrQkFBYSxHQUEyQixFQUFFLENBQUE7SUFhL0MsQ0FBQztJQUVKLG9CQUFvQixDQUNsQixlQUFvQixFQUFFLEVBQ3RCLElBQUksR0FBRyxDQUFDLEVBQ1IsSUFBSSxHQUFHLENBQUMsRUFDUixTQUFzQixJQUFJLEVBQzFCLGdCQUErQixJQUFJLEVBQ25DLGdCQUErQixFQUFFLEVBQ2pDLGdCQUErQixFQUFFLEVBQ2pDLEtBQWdCLEVBQ2hCLFFBQW1CO1FBRW5CLE1BQU0sT0FBTyxHQUFHO1lBQ2QsWUFBWTtZQUNaLElBQUk7WUFDSixJQUFJO1lBQ0osSUFBSSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUM7WUFDbkMsS0FBSyxFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FDM0IsYUFBYSxFQUNiLGFBQWEsRUFDYixLQUFLLEVBQ0wsUUFBUSxDQUNUO1lBQ0QsR0FBRyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUMvQyxHQUFHLENBQUMsYUFBYSxJQUFJLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxDQUFDO1NBQ2pELENBQUE7UUFDRCxJQUFJLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDbEMsT0FBTyxPQUFPLENBQUE7SUFDaEIsQ0FBQztJQUVELGlDQUFpQztJQUN6QixvQkFBb0IsQ0FBQyxPQUF1QjtRQUNsRCxNQUFNLFVBQVUsR0FBRyxDQUFDLFNBQWlCLEVBQUUsRUFBRTtZQUN2QyxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQjtnQkFBRSxPQUFPLENBQUMsZ0JBQWdCLEdBQUcsRUFBRSxDQUFBO1lBQzVELE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsR0FBRztnQkFDcEMsSUFBSSxFQUFFLFNBQVM7Z0JBQ2YsTUFBTSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDO2FBQ3RDLENBQUE7UUFDSCxDQUFDLENBQUE7UUFDRCxNQUFNLFlBQVksR0FBRyxDQUFDLElBQWEsRUFBRSxFQUFFO1lBQ3JDLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUN4QixJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFBO2dCQUMxQixPQUFNO1lBQ1IsQ0FBQztZQUNELElBQUksT0FBTyxJQUFJLEtBQUssUUFBUTtnQkFBRSxPQUFNO1lBQ3BDLElBQUksT0FBTyxJQUFJLElBQUksSUFBSSxPQUFPLElBQUksQ0FBQyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7Z0JBQ3RELElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7b0JBQ3JDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7Z0JBQ3hCLENBQUM7WUFDSCxDQUFDO1lBQ0QsS0FBSyxNQUFNLFlBQVksSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQzlDLElBQ0UsWUFBWSxJQUFJLElBQUk7b0JBQ3BCLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEtBQUssSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssTUFBTSxDQUFDLEVBQy9ELENBQUM7b0JBQ0QsVUFBVSxDQUFDLFlBQVksQ0FBQyxDQUFBO2dCQUMxQixDQUFDO2dCQUNELElBQ0UsT0FBTyxJQUFJLElBQUk7b0JBQ2YsT0FBTyxJQUFJLENBQUMsS0FBSyxLQUFLLFFBQVE7b0JBQzlCLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFlBQVksR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFDM0MsQ0FBQztvQkFDRCxVQUFVLENBQUMsWUFBWSxDQUFDLENBQUE7Z0JBQzFCLENBQUM7WUFDSCxDQUFDO1lBQ0QsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztnQkFDdkIsSUFBSSxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxRQUFRO29CQUFFLFlBQVksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQTtZQUM1RCxDQUFDO1FBQ0gsQ0FBQyxDQUFBO1FBQ0QsWUFBWSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQTtRQUNsQyxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQzFCLFlBQVksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDM0IsT0FBTyxPQUFPLENBQUE7SUFDaEIsQ0FBQztJQUVELG9CQUFvQixDQUFDLFNBQWlCLEVBQUUsVUFBa0I7UUFDeEQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsR0FBRyxVQUFVLENBQUE7SUFDNUMsQ0FBQztJQUVELHVCQUF1QixDQUFDLEtBQWU7UUFDckMsT0FBTztZQUNMLEtBQUssRUFBRTtnQkFDTCxHQUFHLEVBQUU7b0JBQ0gsTUFBTSxFQUFFLEtBQUs7aUJBQ2Q7YUFDRjtTQUNGLENBQUE7SUFDSCxDQUFDO0lBRUQsdUJBQXVCLENBQ3JCLE1BQXFCLEVBQ3JCLElBQUksR0FBRyxDQUFDLEVBQ1IsT0FBTyxHQUFHLENBQUMsR0FBRyxpQkFBaUIsRUFBRSxZQUFZLENBQUM7UUFFOUMsT0FBTztZQUNMLEtBQUssRUFBRTtnQkFDTCxJQUFJLEVBQUU7b0JBQ0osSUFBSSxFQUFFO3dCQUNKOzRCQUNFLGNBQWMsRUFBRTtnQ0FDZCxNQUFNLEVBQUU7b0NBQ04sNkJBQTZCO29DQUM3QixnQ0FBZ0M7b0NBQ2hDLGFBQWE7aUNBQ2Q7Z0NBQ0QsSUFBSSxFQUFFO29DQUNKO3dDQUNFLEdBQUcsRUFBRTs0Q0FDSCxtQkFBbUIsRUFBRTtnREFDbkIsT0FBTyxFQUFFLE1BQU0sQ0FBQyxLQUFLOzZDQUN0Qjs0Q0FDRCxzQkFBc0IsRUFBRTtnREFDdEIsT0FBTyxFQUFFLE1BQU0sQ0FBQyxRQUFROzZDQUN6Qjs0Q0FDRCxXQUFXLEVBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQzlCLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUMzQjt5Q0FDRjtxQ0FDRjtpQ0FDRjtnQ0FDRCxhQUFhLEVBQUUsQ0FBQztnQ0FDaEIsZUFBZSxFQUFFLEVBQUU7NkJBQ3BCO3lCQUNGO3dCQUNEOzRCQUNFLEtBQUssRUFBRTtnQ0FDTCxVQUFVLEVBQUUsQ0FBQyxHQUFHLENBQUM7NkJBQ2xCO3lCQUNGO3dCQUNEOzRCQUNFLEtBQUssRUFBRTtnQ0FDTCxLQUFLLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDOzZCQUNsQjt5QkFDRjtxQkFDRjtvQkFDRCxRQUFRLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsRUFBRSxDQUFDO2lCQUM1RDthQUNGO1lBQ0QsSUFBSTtZQUNKLE9BQU87U0FDUixDQUFBO0lBQ0gsQ0FBQztJQUVPLGdCQUFnQixDQUFDLE1BQW1CO1FBQzFDLElBQUksTUFBTSxLQUFLLElBQUk7WUFBRSxPQUFPLFNBQVMsQ0FBQTtRQUNyQyxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDM0QsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7SUFDMUQsQ0FBQztJQUVPLDZCQUE2QixDQUNuQyxtQkFBOEM7UUFFOUMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFBO1FBQ3JDLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUM5RCxNQUFNLGVBQWUsR0FBRyxtQkFBbUIsQ0FBQTtZQUMzQyxNQUFNLGdCQUFnQixHQUFHLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7WUFDcEQsTUFBTSxhQUFhLEdBQUcsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUE7WUFDaEQsT0FBTztnQkFDTCxHQUFHLEtBQUs7Z0JBQ1IsR0FBRyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxJQUFJLGdCQUFnQjtvQkFDaEQsQ0FBQyxDQUFDO3dCQUNFLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxlQUFlLEVBQUUsU0FBUyxDQUFDLElBQzFDLGFBQWEsR0FBRyxFQUNsQixFQUFFO3dCQUNGLEtBQUssQ0FBQyxPQUFPLENBQUMsZUFBZSxFQUFFLEdBQUcsQ0FBQzs0QkFDakMsQ0FBQyxhQUFhLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLGFBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7cUJBQ2pEO29CQUNILENBQUMsQ0FBQzt3QkFDRSxLQUFLLENBQUMsT0FBTyxDQUFDLGVBQWUsRUFBRSxTQUFTLENBQUM7NEJBQ3ZDLENBQUMsYUFBYSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxhQUFhLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO3FCQUNqRCxDQUFDO2FBQ1AsQ0FBQTtRQUNILENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQTtJQUNSLENBQUM7SUFFTyxZQUFZO1FBQ2xCLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3RCLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixFQUFFO2dCQUMvQixDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsS0FBSyxFQUFFO2dCQUNyQixDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUE7UUFDaEMsQ0FBQzs7WUFBTSxPQUFPLEdBQUcsQ0FBQTtJQUNuQixDQUFDO0lBQ08sbUJBQW1CO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLFlBQVksS0FBSyxTQUFTLENBQUE7SUFDeEMsQ0FBQztJQUVPLGNBQWMsQ0FDcEIsT0FBeUQ7UUFFekQsTUFBTSxRQUFRLEdBQUcsQ0FBQyxHQUFXLEVBQUUsRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUE7UUFDM0UsTUFBTSxTQUFTLEdBQUcsQ0FBQyxNQUFtQixFQUFVLEVBQUU7WUFDaEQsSUFBSSxPQUFPLE1BQU0sS0FBSyxRQUFRLEVBQUUsQ0FBQztnQkFDL0IsT0FBTyxNQUFNLENBQUE7WUFDZixDQUFDO1lBQ0QsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztpQkFDdkIsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQ1gsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7b0JBQ3pCLE9BQU8sUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFBO2dCQUN0QixDQUFDO2dCQUNELE9BQU8sSUFBSSxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQTtZQUM1QixDQUFDLENBQUM7aUJBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBQ2pCLENBQUMsQ0FBQTtRQUNELE1BQU0sV0FBVyxHQUNmLE9BQU8sT0FBTyxLQUFLLFFBQVE7WUFDekIsQ0FBQyxDQUFDLE9BQU87WUFDVCxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7aUJBQ2pCLE1BQU0sQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7aUJBQ3ZELE1BQU0sQ0FDTCxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQ1osT0FBTyxDQUFDLFNBQVMsQ0FBQztnQkFDbEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQzlDO2lCQUNBLEdBQUcsQ0FDRixDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsR0FBRyxTQUFTLEtBQUssU0FBUyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLENBQ2pFO2lCQUNBLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUN0QixNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQzthQUN2QyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUN6QyxHQUFHLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxTQUFTLENBQUMsRUFBRSxFQUFFO1lBQ2hDLE9BQU87Z0JBQ0wsV0FBVztnQkFDWCxTQUFTO2FBSVYsQ0FBQTtRQUNILENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQ1AsTUFBTSxVQUFVLEdBQUc7WUFDakIsV0FBVyxJQUFJO2dCQUNiLFlBQVksRUFBRTtvQkFDWixLQUFLLEVBQUUsV0FBVztpQkFDbkI7YUFDRjtZQUNELFVBQVU7Z0JBQ1IsVUFBVSxDQUFDLFNBQVMsSUFBSTtnQkFDdEIsS0FBSyxFQUFFO29CQUNMLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxFQUFFO3dCQUN4QixHQUFHLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxLQUFLLElBQUk7NEJBQ2hDLEdBQUcsRUFBRSxVQUFVLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUM7eUJBQzVDLENBQUM7d0JBQ0YsR0FBRyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsR0FBRyxJQUFJOzRCQUM5QixHQUFHLEVBQUUsVUFBVSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDO3lCQUMxQyxDQUFDO3dCQUNGLE1BQU0sRUFBRSxZQUFZO3FCQUNyQjtpQkFDRjthQUNGO1NBQ0osQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDakIsT0FBTyxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUUsVUFBMEIsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFBO0lBQ3hFLENBQUM7SUFFTyxjQUFjO1FBQ3BCLE9BQU87WUFDTDtnQkFDRSxZQUFZLEVBQUU7b0JBQ1osS0FBSyxFQUNILGlGQUFpRjtpQkFDcEY7YUFDRjtTQUNGLENBQUE7SUFDSCxDQUFDO0lBRU8saUJBQWlCLENBQ3ZCLEVBQUUsR0FBRyxFQUFFLEdBQUcsa0JBQWtCLEVBQWlCLEVBQzdDLGFBQTRCLEVBQzVCLEtBQWdCLEVBQ2hCLFFBQW1CO1FBRW5CLE1BQU0sSUFBSSxHQUFHLEVBQStCLENBQUE7UUFDNUMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFBO1FBQ3RDLE1BQU0sTUFBTSxHQUFHLEVBQStCLENBQUE7UUFDOUMsTUFBTSxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsWUFBWSxFQUFFLEdBQUcsQ0FBQyxDQUd4RCxDQUFBO1FBRUgsSUFBSSxHQUFHLEVBQUUsQ0FBQztZQUNSLElBQUksQ0FBQyxJQUFJLENBQUM7Z0JBQ1IsWUFBWSxFQUFFO29CQUNaLEtBQUssRUFBRSxJQUFJLENBQUMsdUJBQXVCLENBQUMsR0FBRyxDQUFDO29CQUN4QyxnQkFBZ0IsRUFBRSxLQUFLO29CQUN2QixNQUFNLEVBQUUsSUFBSSxDQUFDLDZCQUE2QixDQUFDLHdCQUF3QixDQUFDO2lCQUNyRTthQUNGLENBQUMsQ0FBQTtRQUNKLENBQUM7UUFDRCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGtCQUFrQixDQUFDLENBQUE7UUFDNUQsSUFBSSxZQUFZLEVBQUUsQ0FBQztZQUNqQixNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsWUFBWSxDQUFDLENBQUE7UUFDOUIsQ0FBQztRQUNELElBQUksS0FBSyxFQUFFLENBQUM7WUFDVixNQUFNLENBQUMsSUFBSSxDQUFDO2dCQUNWLEdBQUcsRUFBRTtvQkFDSCxNQUFNLEVBQUUsS0FBSztpQkFDZDthQUNGLENBQUMsQ0FBQTtRQUNKLENBQUM7UUFDRCxJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQ2IsTUFBTSxDQUFDLElBQUksQ0FDVDtnQkFDRSxTQUFTLEVBQUU7b0JBQ1QsSUFBSSxFQUFFO3dCQUNKLEtBQUssRUFBRSxRQUFRO3dCQUNmLFFBQVEsRUFBRSxRQUFRO3FCQUNuQjtvQkFDRCxLQUFLLEVBQUUsSUFBSTtpQkFDWjthQUNGLEVBQ0Q7Z0JBQ0UsU0FBUyxFQUFFO29CQUNULElBQUksRUFBRTt3QkFDSixLQUFLLEVBQUUsUUFBUTt3QkFDZixRQUFRLEVBQUUsWUFBWTtxQkFDdkI7b0JBQ0QsS0FBSyxFQUFFLEdBQUc7aUJBQ1g7YUFDRixDQUNGLENBQUE7UUFDSCxDQUFDO1FBRUQsT0FBTztZQUNMLElBQUksRUFBRTtnQkFDSixJQUFJO2dCQUNKLFFBQVE7Z0JBQ1IsTUFBTTtnQkFDTixNQUFNO2FBQ1A7U0FDRixDQUFBO0lBQ0gsQ0FBQztJQUVELDZCQUE2QixDQUMzQixZQUFpQixFQUNqQixHQUFXLEVBQ1gsYUFBNEIsRUFDNUIsYUFBNEI7UUFFNUIsT0FBTztZQUNMLFlBQVksRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsWUFBWSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQzFDLElBQUksRUFBRSxDQUFDO1lBQ1AsS0FBSyxFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLEVBQUUsYUFBYSxDQUFDO1NBQzVELENBQUE7SUFDSCxDQUFDO0lBRUQsbUJBQW1CLENBQUMsR0FBRyxFQUFFLE1BQU07UUFDN0IsT0FBTyxDQUFDLE1BQU0sSUFBSSxNQUFNLENBQUMsTUFBTSxJQUFJLENBQUM7WUFDbEMsQ0FBQyxDQUFDLEVBQUU7WUFDSixDQUFDLENBQUM7Z0JBQ0UsS0FBSyxFQUFFO29CQUNMLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQztpQkFDbkI7YUFDRixDQUFBO0lBQ1AsQ0FBQztJQUVELHdCQUF3QixDQUFDLEtBQWE7UUFDcEMsT0FBTztZQUNMLEtBQUssRUFBRTtnQkFDTCxJQUFJLEVBQUU7b0JBQ0osSUFBSSxFQUFFO3dCQUNKLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxZQUFZLEVBQUUsR0FBRyxDQUFDO3dCQUMzQzs0QkFDRSxXQUFXLEVBQUU7Z0NBQ1gsS0FBSztnQ0FDTCxJQUFJLEVBQUUsYUFBYTtnQ0FDbkIsTUFBTSxFQUFFLElBQUksQ0FBQyw2QkFBNkIsQ0FBQztvQ0FDekMsbUNBQW1DLEVBQUUsQ0FBQztvQ0FDdEMsc0NBQXNDLEVBQUUsQ0FBQztvQ0FDekMsR0FBRyxFQUFFLENBQUM7b0NBQ04sa0JBQWtCLEVBQUUsQ0FBQztpQ0FDdEIsQ0FBQzs2QkFDSDt5QkFDRjtxQkFDRjtvQkFFRCxRQUFRLEVBQUUsSUFBSSxDQUFDLGNBQWMsRUFBRTtpQkFDaEM7YUFDRjtZQUNELE9BQU8sRUFBRSxDQUFDLHFCQUFxQixFQUFFLE1BQU0sRUFBRSxjQUFjLENBQUM7WUFDeEQsSUFBSSxFQUFFLENBQUM7WUFDUCxJQUFJLEVBQUUsRUFBRTtTQUNULENBQUE7SUFDSCxDQUFDO0lBRUQsa0JBQWtCLENBQUMsV0FBVztRQUM1QixPQUFPLFdBQVcsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFBO0lBQzVELENBQUM7SUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQXlCRztJQUNILGtDQUFrQztJQUNsQyx5QkFBeUIsQ0FBQyxXQUFXO1FBQ25DLE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQTtRQUNoQixLQUFLLE1BQU0sUUFBUSxJQUFJLFdBQVcsRUFBRSxDQUFDO1lBQ25DLElBQUksUUFBUSxJQUFJLFdBQVcsRUFBRSxDQUFDO2dCQUM1QixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUNwQyxRQUFRLEVBQ1IsV0FBVyxDQUFDLFFBQVEsQ0FBQyxFQUNyQixTQUFTLENBQ1YsQ0FBQTtnQkFDRCxJQUFJLFVBQVUsRUFBRSxDQUFDO29CQUNmLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUE7Z0JBQ3hCLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ3ZDLENBQUM7SUFFRCxrQ0FBa0M7SUFDMUIsY0FBYyxDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsUUFBUTtRQUM3QyxJQUFJLFdBQVcsR0FBRyxFQUFFLENBQUE7UUFDcEIsSUFBSSxJQUFJLElBQUksT0FBTyxJQUFJLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDckMsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFBO1lBQ2pCLEtBQUssTUFBTSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQ3JCLFVBQVU7Z0JBQ1YsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssUUFBUSxFQUFFLENBQUM7b0JBQzNDLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7b0JBQzFDLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQTtvQkFDeEMsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO3dCQUNyQyxNQUFNLFlBQVksR0FBRyxDQUFDLFFBQVEsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQTt3QkFDckQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FDL0IsVUFBVSxFQUNWLFlBQVksRUFDWixVQUFVLENBQ1gsQ0FBQyxJQUFJLEVBQUUsQ0FBQTt3QkFDUixJQUFJLEtBQUssRUFBRSxDQUFDOzRCQUNWLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7d0JBQzFCLENBQUM7d0JBQ0QsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQTtvQkFDckQsQ0FBQztnQkFDSCxDQUFDO3FCQUFNLENBQUM7b0JBQ04sTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFBO29CQUM5RCxJQUFJLEtBQUssRUFBRSxDQUFDO3dCQUNWLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7b0JBQ3BCLENBQUM7Z0JBQ0gsQ0FBQztZQUNILENBQUM7WUFDRCxJQUFJLE1BQU0sSUFBSSxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQzVCLFdBQVcsSUFBSSxHQUFHLENBQUE7Z0JBQ2xCLFdBQVcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO2dCQUMvQixXQUFXLElBQUksR0FBRyxDQUFBO1lBQ3BCLENBQUM7UUFDSCxDQUFDO2FBQU0sSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUNwQyxXQUFXLElBQUksSUFBSSxDQUFBO1FBQ3JCLENBQUM7YUFBTSxJQUFJLElBQUksS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUN6QixXQUFXLElBQUksUUFBUSxHQUFHLElBQUksR0FBRyxRQUFRLEdBQUcsR0FBRyxDQUFBO1FBQ2pELENBQUM7YUFBTSxJQUFJLElBQUksS0FBSyxLQUFLLEVBQUUsQ0FBQztZQUMxQixXQUFXLElBQUksR0FBRyxHQUFHLFFBQVEsR0FBRyxJQUFJLEdBQUcsUUFBUSxHQUFHLEdBQUcsQ0FBQTtRQUN2RCxDQUFDO1FBQ0QsT0FBTyxXQUFXLENBQUE7SUFDcEIsQ0FBQztJQUVPLHVCQUF1QixDQUFDLFdBQVc7UUFDekMsT0FBTyxXQUFXLENBQUMsT0FBTyxDQUN4Qix1REFBdUQsRUFDdkQsTUFBTSxDQUNQLENBQUE7SUFDSCxDQUFDO0lBRUQsd0JBQXdCLENBQUMsWUFBZ0M7UUFDdkQsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLFdBQThCLEVBQUUsRUFBRTtZQUM1RCxRQUFRLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDekIsS0FBSyxTQUFTO29CQUNaLE9BQU87d0JBQ0wsT0FBTyxFQUFFOzRCQUNQLE9BQU8sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUU7Z0NBQzlELE1BQU0sTUFBTSxHQUFHLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUE7Z0NBQ3hDLE9BQU87b0NBQ0wsR0FBRyxJQUFJO29DQUNQLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7aUNBQ3ZDLENBQUE7NEJBQ0gsQ0FBQyxFQUFFLEVBQUUsQ0FBQzt5QkFDUDtxQkFDRixDQUFBO2dCQUNILEtBQUssT0FBTztvQkFDVixPQUFPO3dCQUNMLEtBQUssRUFBRTs0QkFDTCxJQUFJLEVBQUUsV0FBVyxDQUFDLEtBQUs7NEJBQ3ZCLEtBQUssRUFBRSxXQUFXLENBQUMsS0FBSzs0QkFDeEIsS0FBSyxFQUFFO2dDQUNMLENBQUMsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQzs2QkFDakQ7eUJBQ0Y7cUJBQ0YsQ0FBQTtnQkFDSCxLQUFLLFdBQVc7b0JBQ2QsT0FBTzt3QkFDTCxTQUFTLEVBQUU7NEJBQ1QsS0FBSyxFQUFFLFdBQVcsQ0FBQyxLQUFLOzRCQUN4QixRQUFRLEVBQUUsV0FBVyxDQUFDLFFBQVE7eUJBQy9CO3FCQUNGLENBQUE7WUFDTCxDQUFDO1FBQ0gsQ0FBQyxDQUFBO1FBQ0QsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLE1BQU0sQ0FDckMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ2YsR0FBRyxJQUFJO1lBQ1AsQ0FBQyxJQUFJLENBQUMsRUFBRSxrQkFBa0IsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDL0MsQ0FBQyxFQUNGLEVBQUUsQ0FDSCxDQUFBO0lBQ0gsQ0FBQztJQUVELHNCQUFzQixDQUNwQixNQUF5QixFQUN6QixZQUErQjtRQUUvQixRQUFRLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUMxQixLQUFLLFNBQVM7Z0JBQ1osT0FBTztvQkFDTCxPQUFPLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FDakIsTUFBbUMsQ0FBQyxPQUFPLENBQzdDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7d0JBQ1osTUFBTSxNQUFNLEdBQUksTUFBbUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUE7d0JBQ2hFLE9BQU87NEJBQ0wsSUFBSSxFQUFFLEdBQUc7NEJBQ1QsS0FBSyxFQUFFLE1BQU0sQ0FBQyxTQUFTO3lCQUN4QixDQUFBO29CQUNILENBQUMsQ0FBQztpQkFDSCxDQUFBO1lBQ0gsS0FBSyxPQUFPO2dCQUNWLE9BQU87b0JBQ0wsT0FBTyxFQUFHLE1BQWlDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQzt3QkFDbkUsSUFBSSxFQUFFLE1BQU0sQ0FBQyxHQUFHO3dCQUNoQixLQUFLLEVBQUUsTUFBTSxDQUFDLFNBQVM7cUJBQ3hCLENBQUMsQ0FBQztpQkFDSixDQUFBO1lBQ0gsS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFDO2dCQUNqQixNQUFNLGVBQWUsR0FBRyxNQUFvQyxDQUFBO2dCQUM1RCxJQUFJLE9BQU8sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUM7b0JBQ2xELENBQUMsQ0FBQyxlQUFlLENBQUMsT0FBTztvQkFDekIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FDdEMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQ3RDLENBQUE7Z0JBQ0wsT0FBTyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO29CQUN4QyxRQUFRLEVBQUUsTUFBTSxDQUFDLEdBQUc7b0JBQ3BCLFNBQVMsRUFBRSxPQUFPLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSx5RUFBeUU7b0JBQzdHLEtBQUssRUFBRSxNQUFNLENBQUMsU0FBUztpQkFDeEIsQ0FBQyxDQUFDLENBQUE7Z0JBQ0gsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFBLENBQUMsWUFBWTtnQkFDMUIsT0FBTztvQkFDTCxPQUFPO2lCQUNSLENBQUE7WUFDSCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7K0dBdmtCVSxvQkFBb0I7bUhBQXBCLG9CQUFvQixjQUZuQixNQUFNOzs0RkFFUCxvQkFBb0I7a0JBSGhDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgR2VvbWV0cnkgfSBmcm9tICdnZW9qc29uJ1xuaW1wb3J0IHtcbiAgRVNfUVVFUllfRklFTERTX1BSSU9SSVRZLFxuICBFU19TT1VSQ0VfU1VNTUFSWSxcbiAgRXNRdWVyeUZpZWxkc1ByaW9yaXR5VHlwZSxcbn0gZnJvbSAnLi9jb25zdGFudCdcbmltcG9ydCB7XG4gIEFnZ3JlZ2F0aW9uLFxuICBBZ2dyZWdhdGlvblBhcmFtcyxcbiAgQWdncmVnYXRpb25zUGFyYW1zLFxuICBGaWVsZEZpbHRlcixcbiAgRmllbGRGaWx0ZXJzLFxuICBGaWx0ZXJRdWVyeSxcbiAgRmlsdGVyc0FnZ3JlZ2F0aW9uUGFyYW1zLFxuICBTb3J0QnlGaWVsZCxcbn0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vZG9tYWluL3NyYy9saWIvbW9kZWwvc2VhcmNoJ1xuaW1wb3J0IHsgTUVUQURBVEFfTEFOR1VBR0UgfSBmcm9tICcuLi8uLi9tZXRhZGF0YS1sYW5ndWFnZSdcbmltcG9ydCB7XG4gIEFnZ3JlZ2F0aW9uUmVzdWx0LFxuICBFc1NlYXJjaFBhcmFtcyxcbiAgRmlsdGVyc0FnZ3JlZ2F0aW9uUmVzdWx0LFxuICBIaXN0b2dyYW1BZ2dyZWdhdGlvblJlc3VsdCxcbiAgUmVxdWVzdEZpZWxkcyxcbiAgU2VhcmNoRmlsdGVycyxcbiAgU29ydFBhcmFtcyxcbiAgVGVybXNBZ2dyZWdhdGlvblJlc3VsdCxcbn0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hcGkvbWV0YWRhdGEtY29udmVydGVyL3NyYydcbmltcG9ydCB7IGdldExhbmczRnJvbUxhbmcyIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy91dGlsL2kxOG4vc3JjJ1xuaW1wb3J0IHsgZm9ybWF0RGF0ZSwgaXNEYXRlUmFuZ2UgfSBmcm9tICcuL2RhdGUtcmFuZ2UudXRpbHMnXG5pbXBvcnQgeyBDYXRhbG9nUmVjb3JkIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vZG9tYWluL3NyYy9saWIvbW9kZWwvcmVjb3JkJ1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnXG5cbmV4cG9ydCB0eXBlIERhdGVSYW5nZSA9IHsgc3RhcnQ/OiBEYXRlOyBlbmQ/OiBEYXRlIH1cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEVsYXN0aWNzZWFyY2hTZXJ2aWNlIHtcbiAgLy8gcnVudGltZSBmaWVsZHMgYXJlIGNvbXB1dGVkIHVzaW5nIGEgUGFpbmxlc3Mgc2NyaXB0XG4gIC8vIHNlZTogaHR0cHM6Ly93d3cuZWxhc3RpYy5jby9ndWlkZS9lbi9lbGFzdGljc2VhcmNoL3JlZmVyZW5jZS9jdXJyZW50L3J1bnRpbWUtbWFwcGluZy1maWVsZHMuaHRtbFxuICBwcml2YXRlIHJ1bnRpbWVGaWVsZHM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fVxuXG4gIC8vIHdlJ3JlIHVzaW5nIGdldHRlcnMgaW4gY2FzZSB0aGUgZGVmaW5lZCBsYW5ndWFnZXMgY2hhbmdlIG92ZXIgdGltZVxuICBwcml2YXRlIGdldCBsYW5nMygpIHtcbiAgICByZXR1cm4gZ2V0TGFuZzNGcm9tTGFuZzIodGhpcy50cmFuc2xhdGVTZXJ2aWNlLmN1cnJlbnRMYW5nKVxuICB9XG4gIHByaXZhdGUgZ2V0IG1ldGFkYXRhTGFuZygpIHtcbiAgICByZXR1cm4gdGhpcy5pbmplY3Rvci5nZXQoTUVUQURBVEFfTEFOR1VBR0UsIG51bGwpXG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3JcbiAgKSB7fVxuXG4gIGdldFNlYXJjaFJlcXVlc3RCb2R5KFxuICAgIGFnZ3JlZ2F0aW9uczogYW55ID0ge30sXG4gICAgc2l6ZSA9IDAsXG4gICAgZnJvbSA9IDAsXG4gICAgc29ydEJ5OiBTb3J0QnlGaWVsZCA9IG51bGwsXG4gICAgcmVxdWVzdEZpZWxkczogUmVxdWVzdEZpZWxkcyA9IG51bGwsXG4gICAgc2VhcmNoRmlsdGVyczogU2VhcmNoRmlsdGVycyA9IHt9LFxuICAgIGNvbmZpZ0ZpbHRlcnM6IFNlYXJjaEZpbHRlcnMgPSB7fSxcbiAgICB1dWlkcz86IHN0cmluZ1tdLFxuICAgIGdlb21ldHJ5PzogR2VvbWV0cnlcbiAgKTogRXNTZWFyY2hQYXJhbXMge1xuICAgIGNvbnN0IHBheWxvYWQgPSB7XG4gICAgICBhZ2dyZWdhdGlvbnMsXG4gICAgICBmcm9tLFxuICAgICAgc2l6ZSxcbiAgICAgIHNvcnQ6IHRoaXMuYnVpbGRQYXlsb2FkU29ydChzb3J0QnkpLFxuICAgICAgcXVlcnk6IHRoaXMuYnVpbGRQYXlsb2FkUXVlcnkoXG4gICAgICAgIHNlYXJjaEZpbHRlcnMsXG4gICAgICAgIGNvbmZpZ0ZpbHRlcnMsXG4gICAgICAgIHV1aWRzLFxuICAgICAgICBnZW9tZXRyeVxuICAgICAgKSxcbiAgICAgIC4uLihzaXplID4gMCA/IHsgdHJhY2tfdG90YWxfaGl0czogdHJ1ZSB9IDoge30pLFxuICAgICAgLi4uKHJlcXVlc3RGaWVsZHMgJiYgeyBfc291cmNlOiByZXF1ZXN0RmllbGRzIH0pLFxuICAgIH1cbiAgICB0aGlzLnByb2Nlc3NSdW50aW1lRmllbGRzKHBheWxvYWQpXG4gICAgcmV0dXJuIHBheWxvYWRcbiAgfVxuXG4gIC8vIHBheWxvYWQgb2JqZWN0IHdpbGwgYmUgbXV0YXRlZFxuICBwcml2YXRlIHByb2Nlc3NSdW50aW1lRmllbGRzKHBheWxvYWQ6IEVzU2VhcmNoUGFyYW1zKTogRXNTZWFyY2hQYXJhbXMge1xuICAgIGNvbnN0IGFkZE1hcHBpbmcgPSAoZmllbGROYW1lOiBzdHJpbmcpID0+IHtcbiAgICAgIGlmICghcGF5bG9hZC5ydW50aW1lX21hcHBpbmdzKSBwYXlsb2FkLnJ1bnRpbWVfbWFwcGluZ3MgPSB7fVxuICAgICAgcGF5bG9hZC5ydW50aW1lX21hcHBpbmdzW2ZpZWxkTmFtZV0gPSB7XG4gICAgICAgIHR5cGU6ICdrZXl3b3JkJyxcbiAgICAgICAgc2NyaXB0OiB0aGlzLnJ1bnRpbWVGaWVsZHNbZmllbGROYW1lXSxcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgbG9va0ZvckZpZWxkID0gKG5vZGU6IHVua25vd24pID0+IHtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KG5vZGUpKSB7XG4gICAgICAgIG5vZGUuZm9yRWFjaChsb29rRm9yRmllbGQpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgaWYgKHR5cGVvZiBub2RlICE9PSAnb2JqZWN0JykgcmV0dXJuXG4gICAgICBpZiAoJ2ZpZWxkJyBpbiBub2RlICYmIHR5cGVvZiBub2RlLmZpZWxkID09PSAnc3RyaW5nJykge1xuICAgICAgICBpZiAobm9kZS5maWVsZCBpbiB0aGlzLnJ1bnRpbWVGaWVsZHMpIHtcbiAgICAgICAgICBhZGRNYXBwaW5nKG5vZGUuZmllbGQpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGZvciAoY29uc3QgcnVudGltZUZpZWxkIGluIHRoaXMucnVudGltZUZpZWxkcykge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgcnVudGltZUZpZWxkIGluIG5vZGUgJiZcbiAgICAgICAgICAobm9kZVtydW50aW1lRmllbGRdID09PSAnYXNjJyB8fCBub2RlW3J1bnRpbWVGaWVsZF0gPT09ICdkZXNjJylcbiAgICAgICAgKSB7XG4gICAgICAgICAgYWRkTWFwcGluZyhydW50aW1lRmllbGQpXG4gICAgICAgIH1cbiAgICAgICAgaWYgKFxuICAgICAgICAgICdxdWVyeScgaW4gbm9kZSAmJlxuICAgICAgICAgIHR5cGVvZiBub2RlLnF1ZXJ5ID09PSAnc3RyaW5nJyAmJlxuICAgICAgICAgIG5vZGUucXVlcnkuaW5kZXhPZihydW50aW1lRmllbGQgKyAnOicpID4gLTFcbiAgICAgICAgKSB7XG4gICAgICAgICAgYWRkTWFwcGluZyhydW50aW1lRmllbGQpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGZvciAoY29uc3Qga2V5IGluIG5vZGUpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBub2RlW2tleV0gPT09ICdvYmplY3QnKSBsb29rRm9yRmllbGQobm9kZVtrZXldKVxuICAgICAgfVxuICAgIH1cbiAgICBsb29rRm9yRmllbGQocGF5bG9hZC5hZ2dyZWdhdGlvbnMpXG4gICAgbG9va0ZvckZpZWxkKHBheWxvYWQuc29ydClcbiAgICBsb29rRm9yRmllbGQocGF5bG9hZC5xdWVyeSlcbiAgICByZXR1cm4gcGF5bG9hZFxuICB9XG5cbiAgcmVnaXN0ZXJSdW50aW1lRmllbGQoZmllbGROYW1lOiBzdHJpbmcsIGV4cHJlc3Npb246IHN0cmluZykge1xuICAgIHRoaXMucnVudGltZUZpZWxkc1tmaWVsZE5hbWVdID0gZXhwcmVzc2lvblxuICB9XG5cbiAgZ2V0TWV0YWRhdGFCeUlkc1BheWxvYWQodXVpZHM6IHN0cmluZ1tdKTogRXNTZWFyY2hQYXJhbXMge1xuICAgIHJldHVybiB7XG4gICAgICBxdWVyeToge1xuICAgICAgICBpZHM6IHtcbiAgICAgICAgICB2YWx1ZXM6IHV1aWRzLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9XG4gIH1cblxuICBnZXRSZWxhdGVkUmVjb3JkUGF5bG9hZChcbiAgICByZWNvcmQ6IENhdGFsb2dSZWNvcmQsXG4gICAgc2l6ZSA9IDYsXG4gICAgX3NvdXJjZSA9IFsuLi5FU19TT1VSQ0VfU1VNTUFSWSwgJ2NyZWF0ZURhdGUnXVxuICApOiBFc1NlYXJjaFBhcmFtcyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHF1ZXJ5OiB7XG4gICAgICAgIGJvb2w6IHtcbiAgICAgICAgICBtdXN0OiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG1vcmVfbGlrZV90aGlzOiB7XG4gICAgICAgICAgICAgICAgZmllbGRzOiBbXG4gICAgICAgICAgICAgICAgICAncmVzb3VyY2VUaXRsZU9iamVjdC5kZWZhdWx0JyxcbiAgICAgICAgICAgICAgICAgICdyZXNvdXJjZUFic3RyYWN0T2JqZWN0LmRlZmF1bHQnLFxuICAgICAgICAgICAgICAgICAgJ2FsbEtleXdvcmRzJyxcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIGxpa2U6IFtcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgZG9jOiB7XG4gICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VUaXRsZU9iamVjdDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDogcmVjb3JkLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VBYnN0cmFjdE9iamVjdDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDogcmVjb3JkLmFic3RyYWN0LFxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgYWxsS2V5d29yZHM6IHJlY29yZC5rZXl3b3Jkcy5tYXAoXG4gICAgICAgICAgICAgICAgICAgICAgICAoa2V5d29yZCkgPT4ga2V5d29yZC5sYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgbWluX3Rlcm1fZnJlcTogMSxcbiAgICAgICAgICAgICAgICBtYXhfcXVlcnlfdGVybXM6IDEyLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdGVybXM6IHtcbiAgICAgICAgICAgICAgICBpc1RlbXBsYXRlOiBbJ24nXSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHRlcm1zOiB7XG4gICAgICAgICAgICAgICAgZHJhZnQ6IFsnbicsICdlJ10sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgICAgbXVzdF9ub3Q6IFt7IHdpbGRjYXJkOiB7IHV1aWQ6IHJlY29yZC51bmlxdWVJZGVudGlmaWVyIH0gfV0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgc2l6ZSxcbiAgICAgIF9zb3VyY2UsXG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBidWlsZFBheWxvYWRTb3J0KHNvcnRCeTogU29ydEJ5RmllbGQpOiBTb3J0UGFyYW1zIHtcbiAgICBpZiAoc29ydEJ5ID09PSBudWxsKSByZXR1cm4gdW5kZWZpbmVkXG4gICAgY29uc3QgZmllbGRzID0gQXJyYXkuaXNBcnJheShzb3J0QnlbMF0pID8gc29ydEJ5IDogW3NvcnRCeV1cbiAgICByZXR1cm4gZmllbGRzLm1hcCgoZmllbGQpID0+ICh7IFtmaWVsZFsxXV06IGZpZWxkWzBdIH0pKVxuICB9XG5cbiAgcHJpdmF0ZSBpbmplY3RMYW5nSW5RdWVyeVN0cmluZ0ZpZWxkcyhcbiAgICBxdWVyeUZpZWxkc1ByaW9yaXR5OiBFc1F1ZXJ5RmllbGRzUHJpb3JpdHlUeXBlXG4gICkge1xuICAgIGNvbnN0IHF1ZXJ5TGFuZyA9IHRoaXMuZ2V0UXVlcnlMYW5nKClcbiAgICByZXR1cm4gT2JqZWN0LmtleXMocXVlcnlGaWVsZHNQcmlvcml0eSkucmVkdWNlKChxdWVyeSwgZmllbGQpID0+IHtcbiAgICAgIGNvbnN0IG11bHRpTGFuZ1JlZ0V4cCA9IC9cXCRcXHtzZWFyY2hMYW5nXFx9L2dcbiAgICAgIGNvbnN0IGlzTXVsdGlsYW5nRmllbGQgPSBtdWx0aUxhbmdSZWdFeHAudGVzdChmaWVsZClcbiAgICAgIGNvbnN0IGZpZWxkUHJpb3JpdHkgPSBxdWVyeUZpZWxkc1ByaW9yaXR5W2ZpZWxkXVxuICAgICAgcmV0dXJuIFtcbiAgICAgICAgLi4ucXVlcnksXG4gICAgICAgIC4uLih0aGlzLmlzQ3VycmVudFNlYXJjaExhbmcoKSAmJiBpc011bHRpbGFuZ0ZpZWxkXG4gICAgICAgICAgPyBbXG4gICAgICAgICAgICAgIGAke2ZpZWxkLnJlcGxhY2UobXVsdGlMYW5nUmVnRXhwLCBxdWVyeUxhbmcpfV4ke1xuICAgICAgICAgICAgICAgIGZpZWxkUHJpb3JpdHkgKyAxMFxuICAgICAgICAgICAgICB9YCxcbiAgICAgICAgICAgICAgZmllbGQucmVwbGFjZShtdWx0aUxhbmdSZWdFeHAsICcqJykgK1xuICAgICAgICAgICAgICAgIChmaWVsZFByaW9yaXR5ID4gMSA/IGBeJHtmaWVsZFByaW9yaXR5fWAgOiAnJyksXG4gICAgICAgICAgICBdXG4gICAgICAgICAgOiBbXG4gICAgICAgICAgICAgIGZpZWxkLnJlcGxhY2UobXVsdGlMYW5nUmVnRXhwLCBxdWVyeUxhbmcpICtcbiAgICAgICAgICAgICAgICAoZmllbGRQcmlvcml0eSA+IDEgPyBgXiR7ZmllbGRQcmlvcml0eX1gIDogJycpLFxuICAgICAgICAgICAgXSksXG4gICAgICBdXG4gICAgfSwgW10pXG4gIH1cblxuICBwcml2YXRlIGdldFF1ZXJ5TGFuZygpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLm1ldGFkYXRhTGFuZykge1xuICAgICAgcmV0dXJuIHRoaXMuaXNDdXJyZW50U2VhcmNoTGFuZygpXG4gICAgICAgID8gYGxhbmcke3RoaXMubGFuZzN9YFxuICAgICAgICA6IGBsYW5nJHt0aGlzLm1ldGFkYXRhTGFuZ31gXG4gICAgfSBlbHNlIHJldHVybiAnKidcbiAgfVxuICBwcml2YXRlIGlzQ3VycmVudFNlYXJjaExhbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMubWV0YWRhdGFMYW5nID09PSAnY3VycmVudCdcbiAgfVxuXG4gIHByaXZhdGUgZmlsdGVyc1RvUXVlcnkoXG4gICAgZmlsdGVyczogRmllbGRGaWx0ZXJzIHwgRmlsdGVyc0FnZ3JlZ2F0aW9uUGFyYW1zIHwgc3RyaW5nXG4gICk6IEZpbHRlclF1ZXJ5IHtcbiAgICBjb25zdCBhZGRRdW90ZSA9IChrZXk6IHN0cmluZykgPT4gKC9eXFwvLitcXC8kLy50ZXN0KGtleSkgPyBrZXkgOiBgXCIke2tleX1cImApXG4gICAgY29uc3QgbWFrZVF1ZXJ5ID0gKGZpbHRlcjogRmllbGRGaWx0ZXIpOiBzdHJpbmcgPT4ge1xuICAgICAgaWYgKHR5cGVvZiBmaWx0ZXIgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybiBmaWx0ZXJcbiAgICAgIH1cbiAgICAgIHJldHVybiBPYmplY3Qua2V5cyhmaWx0ZXIpXG4gICAgICAgIC5tYXAoKGtleSkgPT4ge1xuICAgICAgICAgIGlmIChmaWx0ZXJba2V5XSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgcmV0dXJuIGFkZFF1b3RlKGtleSlcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGAtJHthZGRRdW90ZShrZXkpfWBcbiAgICAgICAgfSlcbiAgICAgICAgLmpvaW4oJyBPUiAnKVxuICAgIH1cbiAgICBjb25zdCBxdWVyeVN0cmluZyA9XG4gICAgICB0eXBlb2YgZmlsdGVycyA9PT0gJ3N0cmluZydcbiAgICAgICAgPyBmaWx0ZXJzXG4gICAgICAgIDogT2JqZWN0LmtleXMoZmlsdGVycylcbiAgICAgICAgICAgIC5maWx0ZXIoKGZpZWxkbmFtZSkgPT4gIWlzRGF0ZVJhbmdlKGZpbHRlcnNbZmllbGRuYW1lXSkpXG4gICAgICAgICAgICAuZmlsdGVyKFxuICAgICAgICAgICAgICAoZmllbGRuYW1lKSA9PlxuICAgICAgICAgICAgICAgIGZpbHRlcnNbZmllbGRuYW1lXSAmJlxuICAgICAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KGZpbHRlcnNbZmllbGRuYW1lXSkgIT09ICd7fSdcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5tYXAoXG4gICAgICAgICAgICAgIChmaWVsZG5hbWUpID0+IGAke2ZpZWxkbmFtZX06KCR7bWFrZVF1ZXJ5KGZpbHRlcnNbZmllbGRuYW1lXSl9KWBcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5qb2luKCcgQU5EICcpXG4gICAgY29uc3QgcXVlcnlSYW5nZSA9IE9iamVjdC5lbnRyaWVzKGZpbHRlcnMpXG4gICAgICAuZmlsdGVyKChbLCB2YWx1ZV0pID0+IGlzRGF0ZVJhbmdlKHZhbHVlKSlcbiAgICAgIC5tYXAoKFtzZWFyY2hGaWVsZCwgZGF0ZVJhbmdlXSkgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHNlYXJjaEZpZWxkLFxuICAgICAgICAgIGRhdGVSYW5nZSxcbiAgICAgICAgfSBhcyB7XG4gICAgICAgICAgc2VhcmNoRmllbGQ6IHN0cmluZ1xuICAgICAgICAgIGRhdGVSYW5nZTogRGF0ZVJhbmdlXG4gICAgICAgIH1cbiAgICAgIH0pWzBdXG4gICAgY29uc3QgcXVlcnlQYXJ0cyA9IFtcbiAgICAgIHF1ZXJ5U3RyaW5nICYmIHtcbiAgICAgICAgcXVlcnlfc3RyaW5nOiB7XG4gICAgICAgICAgcXVlcnk6IHF1ZXJ5U3RyaW5nLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHF1ZXJ5UmFuZ2UgJiZcbiAgICAgICAgcXVlcnlSYW5nZS5kYXRlUmFuZ2UgJiYge1xuICAgICAgICAgIHJhbmdlOiB7XG4gICAgICAgICAgICBbcXVlcnlSYW5nZS5zZWFyY2hGaWVsZF06IHtcbiAgICAgICAgICAgICAgLi4uKHF1ZXJ5UmFuZ2UuZGF0ZVJhbmdlLnN0YXJ0ICYmIHtcbiAgICAgICAgICAgICAgICBndGU6IGZvcm1hdERhdGUocXVlcnlSYW5nZS5kYXRlUmFuZ2Uuc3RhcnQpLFxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgLi4uKHF1ZXJ5UmFuZ2UuZGF0ZVJhbmdlLmVuZCAmJiB7XG4gICAgICAgICAgICAgICAgbHRlOiBmb3JtYXREYXRlKHF1ZXJ5UmFuZ2UuZGF0ZVJhbmdlLmVuZCksXG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICBmb3JtYXQ6ICd5eXl5LU1NLWRkJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICBdLmZpbHRlcihCb29sZWFuKVxuICAgIHJldHVybiBxdWVyeVBhcnRzLmxlbmd0aCA+IDAgPyAocXVlcnlQYXJ0cyBhcyBGaWx0ZXJRdWVyeSkgOiB1bmRlZmluZWRcbiAgfVxuXG4gIHByaXZhdGUgbXVzdE5vdEZpbHRlcnMoKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj5bXSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIHtcbiAgICAgICAgcXVlcnlfc3RyaW5nOiB7XG4gICAgICAgICAgcXVlcnk6XG4gICAgICAgICAgICAncmVzb3VyY2VUeXBlOmZlYXR1cmVDYXRhbG9nIEFORCAhcmVzb3VyY2VUeXBlOmRhdGFzZXQgQU5EICFjbF9sZXZlbC5rZXk6ZGF0YXNldCcsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIF1cbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRQYXlsb2FkUXVlcnkoXG4gICAgeyBhbnksIC4uLmZpZWxkU2VhcmNoRmlsdGVycyB9OiBTZWFyY2hGaWx0ZXJzLFxuICAgIGNvbmZpZ0ZpbHRlcnM6IFNlYXJjaEZpbHRlcnMsXG4gICAgdXVpZHM/OiBzdHJpbmdbXSxcbiAgICBnZW9tZXRyeT86IEdlb21ldHJ5XG4gICkge1xuICAgIGNvbnN0IG11c3QgPSBbXSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdXG4gICAgY29uc3QgbXVzdF9ub3QgPSB0aGlzLm11c3ROb3RGaWx0ZXJzKClcbiAgICBjb25zdCBzaG91bGQgPSBbXSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdXG4gICAgY29uc3QgZmlsdGVyID0gW3RoaXMucXVlcnlGaWx0ZXJPblZhbHVlcygnaXNUZW1wbGF0ZScsICduJyldIGFzIFJlY29yZDxcbiAgICAgIHN0cmluZyxcbiAgICAgIHVua25vd25cbiAgICA+W11cblxuICAgIGlmIChhbnkpIHtcbiAgICAgIG11c3QucHVzaCh7XG4gICAgICAgIHF1ZXJ5X3N0cmluZzoge1xuICAgICAgICAgIHF1ZXJ5OiB0aGlzLmVzY2FwZVNwZWNpYWxDaGFyYWN0ZXJzKGFueSksXG4gICAgICAgICAgZGVmYXVsdF9vcGVyYXRvcjogJ0FORCcsXG4gICAgICAgICAgZmllbGRzOiB0aGlzLmluamVjdExhbmdJblF1ZXJ5U3RyaW5nRmllbGRzKEVTX1FVRVJZX0ZJRUxEU19QUklPUklUWSksXG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgIH1cbiAgICBjb25zdCBxdWVyeUZpbHRlcnMgPSB0aGlzLmZpbHRlcnNUb1F1ZXJ5KGZpZWxkU2VhcmNoRmlsdGVycylcbiAgICBpZiAocXVlcnlGaWx0ZXJzKSB7XG4gICAgICBmaWx0ZXIucHVzaCguLi5xdWVyeUZpbHRlcnMpXG4gICAgfVxuICAgIGlmICh1dWlkcykge1xuICAgICAgZmlsdGVyLnB1c2goe1xuICAgICAgICBpZHM6IHtcbiAgICAgICAgICB2YWx1ZXM6IHV1aWRzLFxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICB9XG4gICAgaWYgKGdlb21ldHJ5KSB7XG4gICAgICBzaG91bGQucHVzaChcbiAgICAgICAge1xuICAgICAgICAgIGdlb19zaGFwZToge1xuICAgICAgICAgICAgZ2VvbToge1xuICAgICAgICAgICAgICBzaGFwZTogZ2VvbWV0cnksXG4gICAgICAgICAgICAgIHJlbGF0aW9uOiAnd2l0aGluJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBib29zdDogMTAuMCxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgZ2VvX3NoYXBlOiB7XG4gICAgICAgICAgICBnZW9tOiB7XG4gICAgICAgICAgICAgIHNoYXBlOiBnZW9tZXRyeSxcbiAgICAgICAgICAgICAgcmVsYXRpb246ICdpbnRlcnNlY3RzJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBib29zdDogNy4wLFxuICAgICAgICAgIH0sXG4gICAgICAgIH1cbiAgICAgIClcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgYm9vbDoge1xuICAgICAgICBtdXN0LFxuICAgICAgICBtdXN0X25vdCxcbiAgICAgICAgc2hvdWxkLFxuICAgICAgICBmaWx0ZXIsXG4gICAgICB9LFxuICAgIH1cbiAgfVxuXG4gIGJ1aWxkTW9yZU9uQWdncmVnYXRpb25QYXlsb2FkKFxuICAgIGFnZ3JlZ2F0aW9uczogYW55LFxuICAgIGtleTogc3RyaW5nLFxuICAgIHNlYXJjaEZpbHRlcnM6IFNlYXJjaEZpbHRlcnMsXG4gICAgY29uZmlnRmlsdGVyczogU2VhcmNoRmlsdGVyc1xuICApOiBFc1NlYXJjaFBhcmFtcyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGFnZ3JlZ2F0aW9uczogeyBba2V5XTogYWdncmVnYXRpb25zW2tleV0gfSxcbiAgICAgIHNpemU6IDAsXG4gICAgICBxdWVyeTogdGhpcy5idWlsZFBheWxvYWRRdWVyeShzZWFyY2hGaWx0ZXJzLCBjb25maWdGaWx0ZXJzKSxcbiAgICB9XG4gIH1cblxuICBxdWVyeUZpbHRlck9uVmFsdWVzKGtleSwgdmFsdWVzKSB7XG4gICAgcmV0dXJuICF2YWx1ZXMgfHwgdmFsdWVzLmxlbmd0aCA8PSAwXG4gICAgICA/IHt9XG4gICAgICA6IHtcbiAgICAgICAgICB0ZXJtczoge1xuICAgICAgICAgICAgW2tleV06IFsuLi52YWx1ZXNdLFxuICAgICAgICAgIH0sXG4gICAgICAgIH1cbiAgfVxuXG4gIGJ1aWxkQXV0b2NvbXBsZXRlUGF5bG9hZChxdWVyeTogc3RyaW5nKTogRXNTZWFyY2hQYXJhbXMge1xuICAgIHJldHVybiB7XG4gICAgICBxdWVyeToge1xuICAgICAgICBib29sOiB7XG4gICAgICAgICAgbXVzdDogW1xuICAgICAgICAgICAgdGhpcy5xdWVyeUZpbHRlck9uVmFsdWVzKCdpc1RlbXBsYXRlJywgJ24nKSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbXVsdGlfbWF0Y2g6IHtcbiAgICAgICAgICAgICAgICBxdWVyeSxcbiAgICAgICAgICAgICAgICB0eXBlOiAnYm9vbF9wcmVmaXgnLFxuICAgICAgICAgICAgICAgIGZpZWxkczogdGhpcy5pbmplY3RMYW5nSW5RdWVyeVN0cmluZ0ZpZWxkcyh7XG4gICAgICAgICAgICAgICAgICAncmVzb3VyY2VUaXRsZU9iamVjdC4ke3NlYXJjaExhbmd9JzogNCxcbiAgICAgICAgICAgICAgICAgICdyZXNvdXJjZUFic3RyYWN0T2JqZWN0LiR7c2VhcmNoTGFuZ30nOiAzLFxuICAgICAgICAgICAgICAgICAgdGFnOiAyLFxuICAgICAgICAgICAgICAgICAgcmVzb3VyY2VJZGVudGlmaWVyOiAxLFxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuXG4gICAgICAgICAgbXVzdF9ub3Q6IHRoaXMubXVzdE5vdEZpbHRlcnMoKSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBfc291cmNlOiBbJ3Jlc291cmNlVGl0bGVPYmplY3QnLCAndXVpZCcsICdyZXNvdXJjZVR5cGUnXSxcbiAgICAgIGZyb206IDAsXG4gICAgICBzaXplOiAyMCxcbiAgICB9XG4gIH1cblxuICBjb21iaW5lUXVlcnlHcm91cHMocXVlcnlHcm91cHMpIHtcbiAgICByZXR1cm4gcXVlcnlHcm91cHMgPyBxdWVyeUdyb3Vwcy5qb2luKCcgQU5EICcpLnRyaW0oKSA6ICcnXG4gIH1cblxuICAvKipcbiAgICogRmFjZXRzIHN0YXRlIGlzIGFuIG9iamVjdCBsaWtlIHRoaXM6XG4gICAqXG4gICAqIHtcbiAgICogICAndGFnJzoge1xuICAgKiAgICAgJ3dvcmxkJzogdHJ1ZSxcbiAgICogICAgICd2ZWN0b3InOiB0cnVlXG4gICAqICAgfSxcbiAgICogICAnYXZhaWxhYmxlSW5TZXJ2aWNlJyA6IHtcbiAgICogICAgICdhdmFpbGFibGVJblZpZXdTZXJ2aWNlJzogJytsaW5rUHJvdG9jb2w6XFwvT0dDOldNUy4qXFwvJ1xuICAgKiAgIH0sXG4gICAqICAgJ3Jlc291cmNlVHlwZSc6IHtcbiAgICogICAgICdzZXJ2aWNlJzoge1xuICAgKiAgICAgICAnc2VydmljZVR5cGUnOiB7XG4gICAqICAgICAgICAgJ09HQzpXTVMnOiB0cnVlXG4gICAqICAgICAgICAgJ09HQzpXRlMnOiBmYWxzZVxuICAgKiAgICAgICB9XG4gICAqICAgICB9LFxuICAgKiAgICAgJ2Rvd25sb2FkJzoge1xuICAgKiAgICAgICAnc2VydmljZVR5cGUnOiB7XG4gICAqICAgICAgIH1cbiAgICogICAgIH0sXG4gICAqICAgICAnZGF0YXNldCc6IHRydWVcbiAgICogICB9XG4gICAqIH1cbiAgICovXG4gIC8vIEZJWE1FOiB0aGlzIGlzIG5vdCB1c2VkIGFueW1vcmVcbiAgc3RhdGVGaWx0ZXJzVG9RdWVyeVN0cmluZyhmYWNldHNTdGF0ZSkge1xuICAgIGNvbnN0IHF1ZXJ5ID0gW11cbiAgICBmb3IgKGNvbnN0IGluZGV4S2V5IGluIGZhY2V0c1N0YXRlKSB7XG4gICAgICBpZiAoaW5kZXhLZXkgaW4gZmFjZXRzU3RhdGUpIHtcbiAgICAgICAgY29uc3QgcXVlcnlDaHVuayA9IHRoaXMucGFyc2VTdGF0ZU5vZGUoXG4gICAgICAgICAgaW5kZXhLZXksXG4gICAgICAgICAgZmFjZXRzU3RhdGVbaW5kZXhLZXldLFxuICAgICAgICAgIHVuZGVmaW5lZFxuICAgICAgICApXG4gICAgICAgIGlmIChxdWVyeUNodW5rKSB7XG4gICAgICAgICAgcXVlcnkucHVzaChxdWVyeUNodW5rKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmNvbWJpbmVRdWVyeUdyb3VwcyhxdWVyeSlcbiAgfVxuXG4gIC8vIEZJWE1FOiB0aGlzIGlzIG5vdCB1c2VkIGFueW1vcmVcbiAgcHJpdmF0ZSBwYXJzZVN0YXRlTm9kZShub2RlTmFtZSwgbm9kZSwgaW5kZXhLZXkpIHtcbiAgICBsZXQgcXVlcnlTdHJpbmcgPSAnJ1xuICAgIGlmIChub2RlICYmIHR5cGVvZiBub2RlID09PSAnb2JqZWN0Jykge1xuICAgICAgY29uc3QgY2h1bmtzID0gW11cbiAgICAgIGZvciAoY29uc3QgcCBpbiBub2RlKSB7XG4gICAgICAgIC8vIG5lc3RpbmdcbiAgICAgICAgaWYgKG5vZGVbcF0gJiYgdHlwZW9mIG5vZGVbcF0gPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgY29uc3QgbmV4dEx2bEtleSA9IE9iamVjdC5rZXlzKG5vZGVbcF0pWzBdXG4gICAgICAgICAgY29uc3QgbmV4dEx2bFN0YXRlID0gbm9kZVtwXVtuZXh0THZsS2V5XVxuICAgICAgICAgIGlmIChPYmplY3Qua2V5cyhuZXh0THZsU3RhdGUpLmxlbmd0aCkge1xuICAgICAgICAgICAgY29uc3QgbmVzdGVkQ2h1bmtzID0gW25vZGVOYW1lICsgJzonICsgJ1wiJyArIHAgKyAnXCInXVxuICAgICAgICAgICAgY29uc3QgY2h1bmsgPSB0aGlzLnBhcnNlU3RhdGVOb2RlKFxuICAgICAgICAgICAgICBuZXh0THZsS2V5LFxuICAgICAgICAgICAgICBuZXh0THZsU3RhdGUsXG4gICAgICAgICAgICAgIG5leHRMdmxLZXlcbiAgICAgICAgICAgICkudHJpbSgpXG4gICAgICAgICAgICBpZiAoY2h1bmspIHtcbiAgICAgICAgICAgICAgbmVzdGVkQ2h1bmtzLnB1c2goY2h1bmspXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjaHVua3MucHVzaCgnKCcgKyBuZXN0ZWRDaHVua3Muam9pbignIEFORCAnKSArICcpJylcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgY2h1bmsgPSB0aGlzLnBhcnNlU3RhdGVOb2RlKHAsIG5vZGVbcF0sIG5vZGVOYW1lKS50cmltKClcbiAgICAgICAgICBpZiAoY2h1bmspIHtcbiAgICAgICAgICAgIGNodW5rcy5wdXNoKGNodW5rKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGNodW5rcyAmJiBjaHVua3MubGVuZ3RoKSB7XG4gICAgICAgIHF1ZXJ5U3RyaW5nICs9ICcoJ1xuICAgICAgICBxdWVyeVN0cmluZyArPSBjaHVua3Muam9pbignICcpXG4gICAgICAgIHF1ZXJ5U3RyaW5nICs9ICcpJ1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodHlwZW9mIG5vZGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICBxdWVyeVN0cmluZyArPSBub2RlXG4gICAgfSBlbHNlIGlmIChub2RlID09PSB0cnVlKSB7XG4gICAgICBxdWVyeVN0cmluZyArPSBpbmRleEtleSArICc6XCInICsgbm9kZU5hbWUgKyAnXCInXG4gICAgfSBlbHNlIGlmIChub2RlID09PSBmYWxzZSkge1xuICAgICAgcXVlcnlTdHJpbmcgKz0gJy0nICsgaW5kZXhLZXkgKyAnOlwiJyArIG5vZGVOYW1lICsgJ1wiJ1xuICAgIH1cbiAgICByZXR1cm4gcXVlcnlTdHJpbmdcbiAgfVxuXG4gIHByaXZhdGUgZXNjYXBlU3BlY2lhbENoYXJhY3RlcnMocXVlcnlzdHJpbmcpIHtcbiAgICByZXR1cm4gcXVlcnlzdHJpbmcucmVwbGFjZShcbiAgICAgIC8oXFwrfC18XFwvfCYmfFxcfFxcfHwhfFxce3xcXH18XFxbfFxcXVxcXnx+fFxcP3w6fFxcXFx7MX18XFwofFxcKSkvZyxcbiAgICAgICdcXFxcJDEnXG4gICAgKVxuICB9XG5cbiAgYnVpbGRBZ2dyZWdhdGlvbnNQYXlsb2FkKGFnZ3JlZ2F0aW9uczogQWdncmVnYXRpb25zUGFyYW1zKTogYW55IHtcbiAgICBjb25zdCBtYXBUb0VTQWdncmVnYXRpb24gPSAoYWdncmVnYXRpb246IEFnZ3JlZ2F0aW9uUGFyYW1zKSA9PiB7XG4gICAgICBzd2l0Y2ggKGFnZ3JlZ2F0aW9uLnR5cGUpIHtcbiAgICAgICAgY2FzZSAnZmlsdGVycyc6XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGZpbHRlcnM6IHtcbiAgICAgICAgICAgICAgZmlsdGVyczogT2JqZWN0LmtleXMoYWdncmVnYXRpb24uZmlsdGVycykucmVkdWNlKChwcmV2LCBjdXJyKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZmlsdGVyID0gYWdncmVnYXRpb24uZmlsdGVyc1tjdXJyXVxuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAuLi5wcmV2LFxuICAgICAgICAgICAgICAgICAgW2N1cnJdOiB0aGlzLmZpbHRlcnNUb1F1ZXJ5KGZpbHRlcilbMF0sXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9LCB7fSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH1cbiAgICAgICAgY2FzZSAndGVybXMnOlxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0ZXJtczoge1xuICAgICAgICAgICAgICBzaXplOiBhZ2dyZWdhdGlvbi5saW1pdCxcbiAgICAgICAgICAgICAgZmllbGQ6IGFnZ3JlZ2F0aW9uLmZpZWxkLFxuICAgICAgICAgICAgICBvcmRlcjoge1xuICAgICAgICAgICAgICAgIFtgXyR7YWdncmVnYXRpb24uc29ydFsxXX1gXTogYWdncmVnYXRpb24uc29ydFswXSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfVxuICAgICAgICBjYXNlICdoaXN0b2dyYW0nOlxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBoaXN0b2dyYW06IHtcbiAgICAgICAgICAgICAgZmllbGQ6IGFnZ3JlZ2F0aW9uLmZpZWxkLFxuICAgICAgICAgICAgICBpbnRlcnZhbDogYWdncmVnYXRpb24uaW50ZXJ2YWwsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKGFnZ3JlZ2F0aW9ucykucmVkdWNlKFxuICAgICAgKHByZXYsIGN1cnIpID0+ICh7XG4gICAgICAgIC4uLnByZXYsXG4gICAgICAgIFtjdXJyXTogbWFwVG9FU0FnZ3JlZ2F0aW9uKGFnZ3JlZ2F0aW9uc1tjdXJyXSksXG4gICAgICB9KSxcbiAgICAgIHt9XG4gICAgKVxuICB9XG5cbiAgcGFyc2VBZ2dyZWdhdGlvblJlc3VsdChcbiAgICByZXN1bHQ6IEFnZ3JlZ2F0aW9uUmVzdWx0LFxuICAgIHJlcXVlc3RQYXJhbTogQWdncmVnYXRpb25QYXJhbXNcbiAgKTogQWdncmVnYXRpb24ge1xuICAgIHN3aXRjaCAocmVxdWVzdFBhcmFtLnR5cGUpIHtcbiAgICAgIGNhc2UgJ2ZpbHRlcnMnOlxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGJ1Y2tldHM6IE9iamVjdC5rZXlzKFxuICAgICAgICAgICAgKHJlc3VsdCBhcyBGaWx0ZXJzQWdncmVnYXRpb25SZXN1bHQpLmJ1Y2tldHNcbiAgICAgICAgICApLm1hcCgoa2V5KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBidWNrZXQgPSAocmVzdWx0IGFzIEZpbHRlcnNBZ2dyZWdhdGlvblJlc3VsdCkuYnVja2V0c1trZXldXG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICB0ZXJtOiBrZXksXG4gICAgICAgICAgICAgIGNvdW50OiBidWNrZXQuZG9jX2NvdW50LFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pLFxuICAgICAgICB9XG4gICAgICBjYXNlICd0ZXJtcyc6XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgYnVja2V0czogKHJlc3VsdCBhcyBUZXJtc0FnZ3JlZ2F0aW9uUmVzdWx0KS5idWNrZXRzLm1hcCgoYnVja2V0KSA9PiAoe1xuICAgICAgICAgICAgdGVybTogYnVja2V0LmtleSxcbiAgICAgICAgICAgIGNvdW50OiBidWNrZXQuZG9jX2NvdW50LFxuICAgICAgICAgIH0pKSxcbiAgICAgICAgfVxuICAgICAgY2FzZSAnaGlzdG9ncmFtJzoge1xuICAgICAgICBjb25zdCBoaXN0b2dyYW1SZXN1bHQgPSByZXN1bHQgYXMgSGlzdG9ncmFtQWdncmVnYXRpb25SZXN1bHRcbiAgICAgICAgbGV0IGJ1Y2tldHMgPSBBcnJheS5pc0FycmF5KGhpc3RvZ3JhbVJlc3VsdC5idWNrZXRzKVxuICAgICAgICAgID8gaGlzdG9ncmFtUmVzdWx0LmJ1Y2tldHNcbiAgICAgICAgICA6IE9iamVjdC5rZXlzKGhpc3RvZ3JhbVJlc3VsdC5idWNrZXRzKS5tYXAoXG4gICAgICAgICAgICAgIChrZXkpID0+IGhpc3RvZ3JhbVJlc3VsdC5idWNrZXRzW2tleV1cbiAgICAgICAgICAgIClcbiAgICAgICAgYnVja2V0cyA9IGJ1Y2tldHMubWFwKChidWNrZXQsIGluZGV4KSA9PiAoe1xuICAgICAgICAgIGxvd1ZhbHVlOiBidWNrZXQua2V5LFxuICAgICAgICAgIGhpZ2hWYWx1ZTogYnVja2V0c1tpbmRleCArIDFdPy5rZXksIC8vIHRoaXMgd2lsbCByZXR1cm4gdW5kZWZpbmVkIG9uIHRoZSBsYXN0IGVsZW1lbnQgKHdoaWNoIHdlIHJlbW92ZSBsYXRlcilcbiAgICAgICAgICBjb3VudDogYnVja2V0LmRvY19jb3VudCxcbiAgICAgICAgfSkpXG4gICAgICAgIGJ1Y2tldHMucG9wKCkgLy8gc2VlIGFib3ZlXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgYnVja2V0cyxcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl19
553
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxhc3RpY3NlYXJjaC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hcGkvcmVwb3NpdG9yeS9zcmMvbGliL2duNC9lbGFzdGljc2VhcmNoL2VsYXN0aWNzZWFyY2guc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUVwRCxPQUFPLEVBQ0wsd0JBQXdCLEVBQ3hCLGlCQUFpQixHQUVsQixNQUFNLFlBQVksQ0FBQTtBQVduQixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQTtBQVczRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQTtBQUMzRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBRTVELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBQ3RELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFBO0FBQ2xGLE9BQU8sRUFBRSxTQUFTLElBQUksaUJBQWlCLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFDMUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFNBQVMsQ0FBQTs7O0FBT3BDLE1BQU0sT0FBTyxvQkFBb0I7SUFLL0IscUVBQXFFO0lBQ3JFLElBQVksS0FBSztRQUNmLE9BQU8saUJBQWlCLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxDQUFBO0lBQzdELENBQUM7SUFDRCxJQUFZLFlBQVk7UUFDdEIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsQ0FBQTtJQUNuRCxDQUFDO0lBRUQsWUFDVSxnQkFBa0MsRUFDbEMsUUFBa0I7UUFEbEIscUJBQWdCLEdBQWhCLGdC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QU87aUJBQ1IsQ0FBQTtZQUNILENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQzsrR0FubkJVLG9CQUFvQjttSEFBcEIsb0JBQW9CLGNBRm5CLE1BQU07OzRGQUVQLG9CQUFvQjtrQkFIaEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgdHlwZSB7IEdlb21ldHJ5IH0gZnJvbSAnZ2VvanNvbidcbmltcG9ydCB7XG4gIEVTX1FVRVJZX0ZJRUxEU19QUklPUklUWSxcbiAgRVNfU09VUkNFX1NVTU1BUlksXG4gIEVzUXVlcnlGaWVsZHNQcmlvcml0eVR5cGUsXG59IGZyb20gJy4vY29uc3RhbnQnXG5pbXBvcnQge1xuICBBZ2dyZWdhdGlvbixcbiAgQWdncmVnYXRpb25QYXJhbXMsXG4gIEFnZ3JlZ2F0aW9uc1BhcmFtcyxcbiAgRmllbGRGaWx0ZXIsXG4gIEZpZWxkRmlsdGVycyxcbiAgRmlsdGVyUXVlcnksXG4gIEZpbHRlcnNBZ2dyZWdhdGlvblBhcmFtcyxcbiAgU29ydEJ5RmllbGQsXG59IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL2RvbWFpbi9zcmMvbGliL21vZGVsL3NlYXJjaCdcbmltcG9ydCB7IE1FVEFEQVRBX0xBTkdVQUdFIH0gZnJvbSAnLi4vLi4vbWV0YWRhdGEtbGFuZ3VhZ2UnXG5pbXBvcnQge1xuICBBZ2dyZWdhdGlvblJlc3VsdCxcbiAgRXNTZWFyY2hQYXJhbXMsXG4gIEZpbHRlcnNBZ2dyZWdhdGlvblJlc3VsdCxcbiAgSGlzdG9ncmFtQWdncmVnYXRpb25SZXN1bHQsXG4gIFJlcXVlc3RGaWVsZHMsXG4gIFNlYXJjaEZpbHRlcnMsXG4gIFNvcnRQYXJhbXMsXG4gIFRlcm1zQWdncmVnYXRpb25SZXN1bHQsXG59IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYXBpL21ldGFkYXRhLWNvbnZlcnRlci9zcmMnXG5pbXBvcnQgeyBnZXRMYW5nM0Zyb21MYW5nMiB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdXRpbC9pMThuL3NyYydcbmltcG9ydCB7IGZvcm1hdERhdGUsIGlzRGF0ZVJhbmdlIH0gZnJvbSAnLi9kYXRlLXJhbmdlLnV0aWxzJ1xuaW1wb3J0IHsgQ2F0YWxvZ1JlY29yZCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL2RvbWFpbi9zcmMvbGliL21vZGVsL3JlY29yZCdcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJ1xuaW1wb3J0IHsgZ2V0R2VvbWV0cnlCb3VuZGluZ0JveCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdXRpbC9zaGFyZWQvc3JjJ1xuaW1wb3J0IHsgZ2V0TGVuZ3RoIGFzIGdldEdlb2Rlc2ljTGVuZ3RoIH0gZnJvbSAnb2wvc3BoZXJlJ1xuaW1wb3J0IHsgTGluZVN0cmluZyB9IGZyb20gJ29sL2dlb20nXG5cbmV4cG9ydCB0eXBlIERhdGVSYW5nZSA9IHsgc3RhcnQ/OiBEYXRlOyBlbmQ/OiBEYXRlIH1cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEVsYXN0aWNzZWFyY2hTZXJ2aWNlIHtcbiAgLy8gcnVudGltZSBmaWVsZHMgYXJlIGNvbXB1dGVkIHVzaW5nIGEgUGFpbmxlc3Mgc2NyaXB0XG4gIC8vIHNlZTogaHR0cHM6Ly93d3cuZWxhc3RpYy5jby9ndWlkZS9lbi9lbGFzdGljc2VhcmNoL3JlZmVyZW5jZS9jdXJyZW50L3J1bnRpbWUtbWFwcGluZy1maWVsZHMuaHRtbFxuICBwcml2YXRlIHJ1bnRpbWVGaWVsZHM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fVxuXG4gIC8vIHdlJ3JlIHVzaW5nIGdldHRlcnMgaW4gY2FzZSB0aGUgZGVmaW5lZCBsYW5ndWFnZXMgY2hhbmdlIG92ZXIgdGltZVxuICBwcml2YXRlIGdldCBsYW5nMygpIHtcbiAgICByZXR1cm4gZ2V0TGFuZzNGcm9tTGFuZzIodGhpcy50cmFuc2xhdGVTZXJ2aWNlLmN1cnJlbnRMYW5nKVxuICB9XG4gIHByaXZhdGUgZ2V0IG1ldGFkYXRhTGFuZygpIHtcbiAgICByZXR1cm4gdGhpcy5pbmplY3Rvci5nZXQoTUVUQURBVEFfTEFOR1VBR0UsIG51bGwpXG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3JcbiAgKSB7fVxuXG4gIGdldFNlYXJjaFJlcXVlc3RCb2R5KFxuICAgIGFnZ3JlZ2F0aW9uczogYW55ID0ge30sXG4gICAgc2l6ZSA9IDAsXG4gICAgZnJvbSA9IDAsXG4gICAgc29ydEJ5OiBTb3J0QnlGaWVsZCA9IG51bGwsXG4gICAgcmVxdWVzdEZpZWxkczogUmVxdWVzdEZpZWxkcyA9IG51bGwsXG4gICAgc2VhcmNoRmlsdGVyczogU2VhcmNoRmlsdGVycyA9IHt9LFxuICAgIGNvbmZpZ0ZpbHRlcnM6IFNlYXJjaEZpbHRlcnMgPSB7fSxcbiAgICB1dWlkcz86IHN0cmluZ1tdLFxuICAgIGdlb21ldHJ5PzogR2VvbWV0cnlcbiAgKTogRXNTZWFyY2hQYXJhbXMge1xuICAgIGNvbnN0IHBheWxvYWQgPSB7XG4gICAgICBhZ2dyZWdhdGlvbnMsXG4gICAgICBmcm9tLFxuICAgICAgc2l6ZSxcbiAgICAgIHNvcnQ6IHRoaXMuYnVpbGRQYXlsb2FkU29ydChzb3J0QnkpLFxuICAgICAgcXVlcnk6IHRoaXMuYnVpbGRQYXlsb2FkUXVlcnkoXG4gICAgICAgIHNlYXJjaEZpbHRlcnMsXG4gICAgICAgIGNvbmZpZ0ZpbHRlcnMsXG4gICAgICAgIHV1aWRzLFxuICAgICAgICBnZW9tZXRyeVxuICAgICAgKSxcbiAgICAgIC4uLihzaXplID4gMCA/IHsgdHJhY2tfdG90YWxfaGl0czogdHJ1ZSB9IDoge30pLFxuICAgICAgLi4uKHJlcXVlc3RGaWVsZHMgJiYgeyBfc291cmNlOiByZXF1ZXN0RmllbGRzIH0pLFxuICAgIH1cbiAgICB0aGlzLnByb2Nlc3NSdW50aW1lRmllbGRzKHBheWxvYWQpXG4gICAgcmV0dXJuIHBheWxvYWRcbiAgfVxuXG4gIC8vIHBheWxvYWQgb2JqZWN0IHdpbGwgYmUgbXV0YXRlZFxuICBwcml2YXRlIHByb2Nlc3NSdW50aW1lRmllbGRzKHBheWxvYWQ6IEVzU2VhcmNoUGFyYW1zKTogRXNTZWFyY2hQYXJhbXMge1xuICAgIGNvbnN0IGFkZE1hcHBpbmcgPSAoZmllbGROYW1lOiBzdHJpbmcpID0+IHtcbiAgICAgIGlmICghcGF5bG9hZC5ydW50aW1lX21hcHBpbmdzKSBwYXlsb2FkLnJ1bnRpbWVfbWFwcGluZ3MgPSB7fVxuICAgICAgcGF5bG9hZC5ydW50aW1lX21hcHBpbmdzW2ZpZWxkTmFtZV0gPSB7XG4gICAgICAgIHR5cGU6ICdrZXl3b3JkJyxcbiAgICAgICAgc2NyaXB0OiB0aGlzLnJ1bnRpbWVGaWVsZHNbZmllbGROYW1lXSxcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgbG9va0ZvckZpZWxkID0gKG5vZGU6IHVua25vd24pID0+IHtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KG5vZGUpKSB7XG4gICAgICAgIG5vZGUuZm9yRWFjaChsb29rRm9yRmllbGQpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgaWYgKHR5cGVvZiBub2RlICE9PSAnb2JqZWN0JykgcmV0dXJuXG4gICAgICBpZiAoJ2ZpZWxkJyBpbiBub2RlICYmIHR5cGVvZiBub2RlLmZpZWxkID09PSAnc3RyaW5nJykge1xuICAgICAgICBpZiAobm9kZS5maWVsZCBpbiB0aGlzLnJ1bnRpbWVGaWVsZHMpIHtcbiAgICAgICAgICBhZGRNYXBwaW5nKG5vZGUuZmllbGQpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGZvciAoY29uc3QgcnVudGltZUZpZWxkIGluIHRoaXMucnVudGltZUZpZWxkcykge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgcnVudGltZUZpZWxkIGluIG5vZGUgJiZcbiAgICAgICAgICAobm9kZVtydW50aW1lRmllbGRdID09PSAnYXNjJyB8fCBub2RlW3J1bnRpbWVGaWVsZF0gPT09ICdkZXNjJylcbiAgICAgICAgKSB7XG4gICAgICAgICAgYWRkTWFwcGluZyhydW50aW1lRmllbGQpXG4gICAgICAgIH1cbiAgICAgICAgaWYgKFxuICAgICAgICAgICdxdWVyeScgaW4gbm9kZSAmJlxuICAgICAgICAgIHR5cGVvZiBub2RlLnF1ZXJ5ID09PSAnc3RyaW5nJyAmJlxuICAgICAgICAgIG5vZGUucXVlcnkuaW5kZXhPZihydW50aW1lRmllbGQgKyAnOicpID4gLTFcbiAgICAgICAgKSB7XG4gICAgICAgICAgYWRkTWFwcGluZyhydW50aW1lRmllbGQpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGZvciAoY29uc3Qga2V5IGluIG5vZGUpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBub2RlW2tleV0gPT09ICdvYmplY3QnKSBsb29rRm9yRmllbGQobm9kZVtrZXldKVxuICAgICAgfVxuICAgIH1cbiAgICBsb29rRm9yRmllbGQocGF5bG9hZC5hZ2dyZWdhdGlvbnMpXG4gICAgbG9va0ZvckZpZWxkKHBheWxvYWQuc29ydClcbiAgICBsb29rRm9yRmllbGQocGF5bG9hZC5xdWVyeSlcbiAgICByZXR1cm4gcGF5bG9hZFxuICB9XG5cbiAgcmVnaXN0ZXJSdW50aW1lRmllbGQoZmllbGROYW1lOiBzdHJpbmcsIGV4cHJlc3Npb246IHN0cmluZykge1xuICAgIHRoaXMucnVudGltZUZpZWxkc1tmaWVsZE5hbWVdID0gZXhwcmVzc2lvblxuICB9XG5cbiAgZ2V0TWV0YWRhdGFCeUlkc1BheWxvYWQodXVpZHM6IHN0cmluZ1tdKTogRXNTZWFyY2hQYXJhbXMge1xuICAgIHJldHVybiB7XG4gICAgICBxdWVyeToge1xuICAgICAgICBpZHM6IHtcbiAgICAgICAgICB2YWx1ZXM6IHV1aWRzLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9XG4gIH1cblxuICBnZXRSZWxhdGVkUmVjb3JkUGF5bG9hZChcbiAgICByZWNvcmQ6IENhdGFsb2dSZWNvcmQsXG4gICAgc2l6ZSA9IDYsXG4gICAgX3NvdXJjZSA9IFsuLi5FU19TT1VSQ0VfU1VNTUFSWSwgJ2NyZWF0ZURhdGUnXVxuICApOiBFc1NlYXJjaFBhcmFtcyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHF1ZXJ5OiB7XG4gICAgICAgIGJvb2w6IHtcbiAgICAgICAgICBtdXN0OiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG1vcmVfbGlrZV90aGlzOiB7XG4gICAgICAgICAgICAgICAgZmllbGRzOiBbXG4gICAgICAgICAgICAgICAgICAncmVzb3VyY2VUaXRsZU9iamVjdC5kZWZhdWx0JyxcbiAgICAgICAgICAgICAgICAgICdyZXNvdXJjZUFic3RyYWN0T2JqZWN0LmRlZmF1bHQnLFxuICAgICAgICAgICAgICAgICAgJ2FsbEtleXdvcmRzJyxcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIGxpa2U6IFtcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgZG9jOiB7XG4gICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VUaXRsZU9iamVjdDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDogcmVjb3JkLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VBYnN0cmFjdE9iamVjdDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDogcmVjb3JkLmFic3RyYWN0LFxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgYWxsS2V5d29yZHM6IHJlY29yZC5rZXl3b3Jkcy5tYXAoXG4gICAgICAgICAgICAgICAgICAgICAgICAoa2V5d29yZCkgPT4ga2V5d29yZC5sYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgbWluX3Rlcm1fZnJlcTogMSxcbiAgICAgICAgICAgICAgICBtYXhfcXVlcnlfdGVybXM6IDEyLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdGVybXM6IHtcbiAgICAgICAgICAgICAgICBpc1RlbXBsYXRlOiBbJ24nXSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHRlcm1zOiB7XG4gICAgICAgICAgICAgICAgZHJhZnQ6IFsnbicsICdlJ10sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgICAgbXVzdF9ub3Q6IFt7IHdpbGRjYXJkOiB7IHV1aWQ6IHJlY29yZC51bmlxdWVJZGVudGlmaWVyIH0gfV0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgc2l6ZSxcbiAgICAgIF9zb3VyY2UsXG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBidWlsZFBheWxvYWRTb3J0KHNvcnRCeTogU29ydEJ5RmllbGQpOiBTb3J0UGFyYW1zIHtcbiAgICBpZiAoc29ydEJ5ID09PSBudWxsKSByZXR1cm4gdW5kZWZpbmVkXG4gICAgY29uc3QgZmllbGRzID0gQXJyYXkuaXNBcnJheShzb3J0QnlbMF0pID8gc29ydEJ5IDogW3NvcnRCeV1cbiAgICByZXR1cm4gZmllbGRzLm1hcCgoZmllbGQpID0+ICh7IFtmaWVsZFsxXV06IGZpZWxkWzBdIH0pKVxuICB9XG5cbiAgcHJpdmF0ZSBpbmplY3RMYW5nSW5RdWVyeVN0cmluZ0ZpZWxkcyhcbiAgICBxdWVyeUZpZWxkc1ByaW9yaXR5OiBFc1F1ZXJ5RmllbGRzUHJpb3JpdHlUeXBlXG4gICkge1xuICAgIGNvbnN0IHF1ZXJ5TGFuZyA9IHRoaXMuZ2V0UXVlcnlMYW5nKClcbiAgICByZXR1cm4gT2JqZWN0LmtleXMocXVlcnlGaWVsZHNQcmlvcml0eSkucmVkdWNlKChxdWVyeSwgZmllbGQpID0+IHtcbiAgICAgIGNvbnN0IG11bHRpTGFuZ1JlZ0V4cCA9IC9cXCRcXHtzZWFyY2hMYW5nXFx9L2dcbiAgICAgIGNvbnN0IGlzTXVsdGlsYW5nRmllbGQgPSBtdWx0aUxhbmdSZWdFeHAudGVzdChmaWVsZClcbiAgICAgIGNvbnN0IGZpZWxkUHJpb3JpdHkgPSBxdWVyeUZpZWxkc1ByaW9yaXR5W2ZpZWxkXVxuICAgICAgcmV0dXJuIFtcbiAgICAgICAgLi4ucXVlcnksXG4gICAgICAgIC4uLih0aGlzLmlzQ3VycmVudFNlYXJjaExhbmcoKSAmJiBpc011bHRpbGFuZ0ZpZWxkXG4gICAgICAgICAgPyBbXG4gICAgICAgICAgICAgIGAke2ZpZWxkLnJlcGxhY2UobXVsdGlMYW5nUmVnRXhwLCBxdWVyeUxhbmcpfV4ke1xuICAgICAgICAgICAgICAgIGZpZWxkUHJpb3JpdHkgKyAxMFxuICAgICAgICAgICAgICB9YCxcbiAgICAgICAgICAgICAgZmllbGQucmVwbGFjZShtdWx0aUxhbmdSZWdFeHAsICcqJykgK1xuICAgICAgICAgICAgICAgIChmaWVsZFByaW9yaXR5ID4gMSA/IGBeJHtmaWVsZFByaW9yaXR5fWAgOiAnJyksXG4gICAgICAgICAgICBdXG4gICAgICAgICAgOiBbXG4gICAgICAgICAgICAgIGZpZWxkLnJlcGxhY2UobXVsdGlMYW5nUmVnRXhwLCBxdWVyeUxhbmcpICtcbiAgICAgICAgICAgICAgICAoZmllbGRQcmlvcml0eSA+IDEgPyBgXiR7ZmllbGRQcmlvcml0eX1gIDogJycpLFxuICAgICAgICAgICAgXSksXG4gICAgICBdXG4gICAgfSwgW10pXG4gIH1cblxuICBwcml2YXRlIGdldFF1ZXJ5TGFuZygpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLm1ldGFkYXRhTGFuZykge1xuICAgICAgcmV0dXJuIHRoaXMuaXNDdXJyZW50U2VhcmNoTGFuZygpXG4gICAgICAgID8gYGxhbmcke3RoaXMubGFuZzN9YFxuICAgICAgICA6IGBsYW5nJHt0aGlzLm1ldGFkYXRhTGFuZ31gXG4gICAgfSBlbHNlIHJldHVybiAnKidcbiAgfVxuICBwcml2YXRlIGlzQ3VycmVudFNlYXJjaExhbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMubWV0YWRhdGFMYW5nID09PSAnY3VycmVudCdcbiAgfVxuXG4gIHByaXZhdGUgZmlsdGVyc1RvUXVlcnkoXG4gICAgZmlsdGVyczogRmllbGRGaWx0ZXJzIHwgRmlsdGVyc0FnZ3JlZ2F0aW9uUGFyYW1zIHwgc3RyaW5nXG4gICk6IEZpbHRlclF1ZXJ5IHtcbiAgICBjb25zdCBhZGRRdW90ZSA9IChrZXk6IHN0cmluZykgPT4gKC9eXFwvLitcXC8kLy50ZXN0KGtleSkgPyBrZXkgOiBgXCIke2tleX1cImApXG4gICAgY29uc3QgbWFrZVF1ZXJ5ID0gKGZpbHRlcjogRmllbGRGaWx0ZXIpOiBzdHJpbmcgPT4ge1xuICAgICAgaWYgKHR5cGVvZiBmaWx0ZXIgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybiBmaWx0ZXJcbiAgICAgIH1cbiAgICAgIHJldHVybiBPYmplY3Qua2V5cyhmaWx0ZXIpXG4gICAgICAgIC5tYXAoKGtleSkgPT4ge1xuICAgICAgICAgIGlmIChmaWx0ZXJba2V5XSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgcmV0dXJuIGFkZFF1b3RlKGtleSlcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGAtJHthZGRRdW90ZShrZXkpfWBcbiAgICAgICAgfSlcbiAgICAgICAgLmpvaW4oJyBPUiAnKVxuICAgIH1cbiAgICBjb25zdCBxdWVyeVN0cmluZyA9XG4gICAgICB0eXBlb2YgZmlsdGVycyA9PT0gJ3N0cmluZydcbiAgICAgICAgPyBmaWx0ZXJzXG4gICAgICAgIDogT2JqZWN0LmtleXMoZmlsdGVycylcbiAgICAgICAgICAgIC5maWx0ZXIoKGZpZWxkbmFtZSkgPT4gIWlzRGF0ZVJhbmdlKGZpbHRlcnNbZmllbGRuYW1lXSkpXG4gICAgICAgICAgICAuZmlsdGVyKFxuICAgICAgICAgICAgICAoZmllbGRuYW1lKSA9PlxuICAgICAgICAgICAgICAgIGZpbHRlcnNbZmllbGRuYW1lXSAmJlxuICAgICAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KGZpbHRlcnNbZmllbGRuYW1lXSkgIT09ICd7fSdcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5tYXAoXG4gICAgICAgICAgICAgIChmaWVsZG5hbWUpID0+IGAke2ZpZWxkbmFtZX06KCR7bWFrZVF1ZXJ5KGZpbHRlcnNbZmllbGRuYW1lXSl9KWBcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5qb2luKCcgQU5EICcpXG4gICAgY29uc3QgcXVlcnlSYW5nZSA9IE9iamVjdC5lbnRyaWVzKGZpbHRlcnMpXG4gICAgICAuZmlsdGVyKChbLCB2YWx1ZV0pID0+IGlzRGF0ZVJhbmdlKHZhbHVlKSlcbiAgICAgIC5tYXAoKFtzZWFyY2hGaWVsZCwgZGF0ZVJhbmdlXSkgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHNlYXJjaEZpZWxkLFxuICAgICAgICAgIGRhdGVSYW5nZSxcbiAgICAgICAgfSBhcyB7XG4gICAgICAgICAgc2VhcmNoRmllbGQ6IHN0cmluZ1xuICAgICAgICAgIGRhdGVSYW5nZTogRGF0ZVJhbmdlXG4gICAgICAgIH1cbiAgICAgIH0pWzBdXG4gICAgY29uc3QgcXVlcnlQYXJ0cyA9IFtcbiAgICAgIHF1ZXJ5U3RyaW5nICYmIHtcbiAgICAgICAgcXVlcnlfc3RyaW5nOiB7XG4gICAgICAgICAgcXVlcnk6IHF1ZXJ5U3RyaW5nLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHF1ZXJ5UmFuZ2UgJiZcbiAgICAgICAgcXVlcnlSYW5nZS5kYXRlUmFuZ2UgJiYge1xuICAgICAgICAgIHJhbmdlOiB7XG4gICAgICAgICAgICBbcXVlcnlSYW5nZS5zZWFyY2hGaWVsZF06IHtcbiAgICAgICAgICAgICAgLi4uKHF1ZXJ5UmFuZ2UuZGF0ZVJhbmdlLnN0YXJ0ICYmIHtcbiAgICAgICAgICAgICAgICBndGU6IGZvcm1hdERhdGUocXVlcnlSYW5nZS5kYXRlUmFuZ2Uuc3RhcnQpLFxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgLi4uKHF1ZXJ5UmFuZ2UuZGF0ZVJhbmdlLmVuZCAmJiB7XG4gICAgICAgICAgICAgICAgbHRlOiBmb3JtYXREYXRlKHF1ZXJ5UmFuZ2UuZGF0ZVJhbmdlLmVuZCksXG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICBmb3JtYXQ6ICd5eXl5LU1NLWRkJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICBdLmZpbHRlcihCb29sZWFuKVxuICAgIHJldHVybiBxdWVyeVBhcnRzLmxlbmd0aCA+IDAgPyAocXVlcnlQYXJ0cyBhcyBGaWx0ZXJRdWVyeSkgOiB1bmRlZmluZWRcbiAgfVxuXG4gIHByaXZhdGUgbXVzdE5vdEZpbHRlcnMoKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj5bXSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIHtcbiAgICAgICAgcXVlcnlfc3RyaW5nOiB7XG4gICAgICAgICAgcXVlcnk6XG4gICAgICAgICAgICAncmVzb3VyY2VUeXBlOmZlYXR1cmVDYXRhbG9nIEFORCAhcmVzb3VyY2VUeXBlOmRhdGFzZXQgQU5EICFjbF9sZXZlbC5rZXk6ZGF0YXNldCcsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIF1cbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRQYXlsb2FkUXVlcnkoXG4gICAgeyBhbnksIC4uLmZpZWxkU2VhcmNoRmlsdGVycyB9OiBTZWFyY2hGaWx0ZXJzLFxuICAgIGNvbmZpZ0ZpbHRlcnM6IFNlYXJjaEZpbHRlcnMsXG4gICAgdXVpZHM/OiBzdHJpbmdbXSxcbiAgICBnZW9tZXRyeT86IEdlb21ldHJ5XG4gICkge1xuICAgIGNvbnN0IG11c3QgPSBbXSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdXG4gICAgY29uc3QgbXVzdF9ub3QgPSB0aGlzLm11c3ROb3RGaWx0ZXJzKClcbiAgICBjb25zdCBzaG91bGQgPSBbXSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdXG4gICAgY29uc3QgZmlsdGVyID0gW3RoaXMucXVlcnlGaWx0ZXJPblZhbHVlcygnaXNUZW1wbGF0ZScsICduJyldIGFzIFJlY29yZDxcbiAgICAgIHN0cmluZyxcbiAgICAgIHVua25vd25cbiAgICA+W11cblxuICAgIGlmIChhbnkpIHtcbiAgICAgIG11c3QucHVzaCh7XG4gICAgICAgIHF1ZXJ5X3N0cmluZzoge1xuICAgICAgICAgIHF1ZXJ5OiB0aGlzLmVzY2FwZVNwZWNpYWxDaGFyYWN0ZXJzKGFueSksXG4gICAgICAgICAgZGVmYXVsdF9vcGVyYXRvcjogJ0FORCcsXG4gICAgICAgICAgZmllbGRzOiB0aGlzLmluamVjdExhbmdJblF1ZXJ5U3RyaW5nRmllbGRzKEVTX1FVRVJZX0ZJRUxEU19QUklPUklUWSksXG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgIH1cbiAgICBjb25zdCBxdWVyeUZpbHRlcnMgPSB0aGlzLmZpbHRlcnNUb1F1ZXJ5KGZpZWxkU2VhcmNoRmlsdGVycylcbiAgICBpZiAocXVlcnlGaWx0ZXJzKSB7XG4gICAgICBmaWx0ZXIucHVzaCguLi5xdWVyeUZpbHRlcnMpXG4gICAgfVxuICAgIGlmICh1dWlkcykge1xuICAgICAgZmlsdGVyLnB1c2goe1xuICAgICAgICBpZHM6IHtcbiAgICAgICAgICB2YWx1ZXM6IHV1aWRzLFxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICB9XG4gICAgaWYgKGdlb21ldHJ5KSB7XG4gICAgICAvLyBib29zdHMgYXBwbGllZCB1c2luZyB0aGUgZmlsdGVyIGdlb21ldHJ5OlxuICAgICAgLy8gKiByZWNvcmRzIGNvbXBsZXRlbHkgd2l0aGluIHRoZSBnZW9tZXRyeSByZWNlaXZlIGEgYm9vc3Qgb2YgNVxuICAgICAgLy8gKiByZWNvcmRzIGludGVyc2VjdGluZyB0aGUgZ2VvbWV0cnkgcmVjZWl2ZSBhIGJvb3N0IG9mIDJcbiAgICAgIC8vICogcmVjb3JkcyBjbG9zZSB0byB0aGUgZ2VvbWV0cnkgY2VudGVyIHJlY2VpdmUgYSBib29zdCBvZiA1IChiYXNlZCBvbiB0aGUgYGxvY2F0aW9uYCBmaWVsZClcbiAgICAgIC8vICogcmVjb3JkcyBvbiB0aGUgb3V0c2tpcnQgb2YgdGhlIGdlb21ldHJ5IHJlY2VpdmUgYSBib29zdCBvZiAyLjVcbiAgICAgIHNob3VsZC5wdXNoKFxuICAgICAgICB7XG4gICAgICAgICAgZ2VvX3NoYXBlOiB7XG4gICAgICAgICAgICBnZW9tOiB7XG4gICAgICAgICAgICAgIHNoYXBlOiBnZW9tZXRyeSxcbiAgICAgICAgICAgICAgcmVsYXRpb246ICd3aXRoaW4nLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGJvb3N0OiA1LjAsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGdlb19zaGFwZToge1xuICAgICAgICAgICAgZ2VvbToge1xuICAgICAgICAgICAgICBzaGFwZTogZ2VvbWV0cnksXG4gICAgICAgICAgICAgIHJlbGF0aW9uOiAnaW50ZXJzZWN0cycsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYm9vc3Q6IDIuMCxcbiAgICAgICAgICB9LFxuICAgICAgICB9XG4gICAgICApXG5cbiAgICAgIC8vIHRoaXMgd2lsbCBib29zdCB0aGUgcmVzdWx0cyB2YXJpYWJseSBkZXBlbmRpbmcgb24gdGhlaXIgZGlzdGFuY2UgZnJvbSB0aGUgZ2l2ZW4gZ2VvbWV0cnlcbiAgICAgIC8vIG5vdGU6IHRoaXMgdGFrZXMgaW50byBhY2NvdW50IHRoZSBgbG9jYXRpb25gIGZpZWxkIG9mIGEgcmVjb3JkOyB0aGlzIGlzIGdlbmVyYWxseSB0aGUgY2VudGVyIG9mIGFsbCBzcGF0aWFsIGV4dGVudHNcbiAgICAgIC8vIGNvbWJpbmVkLCBhbmQgdGh1cyB0aGUgYWN0dWFsIHNpemUvY292ZXJhZ2Ugb2YgdGhlIHJlY29yZCBzcGF0aWFsIGV4dGVudCBpc24ndCByZWxldmFudCBoZXJlXG4gICAgICBjb25zdCBiYm94ID0gZ2V0R2VvbWV0cnlCb3VuZGluZ0JveChnZW9tZXRyeSlcbiAgICAgIGNvbnN0IGNlbnRlciA9IFsoYmJveFswXSArIGJib3hbMl0pIC8gMiwgKGJib3hbMV0gKyBiYm94WzNdKSAvIDJdXG4gICAgICBjb25zdCBub3J0aFRvQ2VudGVyID0gbmV3IExpbmVTdHJpbmcoW1xuICAgICAgICBbY2VudGVyWzBdLCBiYm94WzNdXSxcbiAgICAgICAgY2VudGVyLFxuICAgICAgXSkudHJhbnNmb3JtKCdFUFNHOjQzMjYnLCAnRVBTRzozODU3JylcbiAgICAgIGNvbnN0IHNvdXRoVG9DZW50ZXIgPSBuZXcgTGluZVN0cmluZyhbXG4gICAgICAgIFtjZW50ZXJbMF0sIGJib3hbMV1dLFxuICAgICAgICBjZW50ZXIsXG4gICAgICBdKS50cmFuc2Zvcm0oJ0VQU0c6NDMyNicsICdFUFNHOjM4NTcnKVxuICAgICAgY29uc3Qgd2VzdFRvQ2VudGVyID0gbmV3IExpbmVTdHJpbmcoW1xuICAgICAgICBbYmJveFswXSwgY2VudGVyWzFdXSxcbiAgICAgICAgY2VudGVyLFxuICAgICAgXSkudHJhbnNmb3JtKCdFUFNHOjQzMjYnLCAnRVBTRzozODU3JylcbiAgICAgIGNvbnN0IGVhc3RUb0NlbnRlciA9IG5ldyBMaW5lU3RyaW5nKFtcbiAgICAgICAgW2Jib3hbMl0sIGNlbnRlclsxXV0sXG4gICAgICAgIGNlbnRlcixcbiAgICAgIF0pLnRyYW5zZm9ybSgnRVBTRzo0MzI2JywgJ0VQU0c6Mzg1NycpXG4gICAgICAvLyBjdXRvZmYgZGlzdGFuY2UgaXMgdGhlIGRpc3RhbmNlIGZyb20gd2hlcmUgdGhlIGJvb3N0IHdpbGwgb25seSBiZSBoYWxmIG9mIHRoZSBtYXggdmFsdWVcbiAgICAgIC8vIGl0IGlzIGFuIGF2ZXJhZ2Ugb2YgdGhlIFwic2l6ZVwiIG9mIHRoZSBib3VuZGluZyBib3ggaW4gZXZlcnkgZGlyZWN0aW9uLCBpbiBtZXRlcnNcbiAgICAgIGNvbnN0IGN1dG9mZkRpc3RhbmNlID1cbiAgICAgICAgKGdldEdlb2Rlc2ljTGVuZ3RoKG5vcnRoVG9DZW50ZXIpICtcbiAgICAgICAgICBnZXRHZW9kZXNpY0xlbmd0aChzb3V0aFRvQ2VudGVyKSArXG4gICAgICAgICAgZ2V0R2VvZGVzaWNMZW5ndGgod2VzdFRvQ2VudGVyKSArXG4gICAgICAgICAgZ2V0R2VvZGVzaWNMZW5ndGgoZWFzdFRvQ2VudGVyKSkgL1xuICAgICAgICA0XG5cbiAgICAgIHNob3VsZC5wdXNoKHtcbiAgICAgICAgZGlzdGFuY2VfZmVhdHVyZToge1xuICAgICAgICAgIGZpZWxkOiAnbG9jYXRpb24nLFxuICAgICAgICAgIHBpdm90OiBgJHtNYXRoLnJvdW5kKGN1dG9mZkRpc3RhbmNlKS50b0ZpeGVkKDApfW1gLFxuICAgICAgICAgIG9yaWdpbjogY2VudGVyLFxuICAgICAgICAgIGJvb3N0OiA1LjAsXG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBib29sOiB7XG4gICAgICAgIG11c3QsXG4gICAgICAgIG11c3Rfbm90LFxuICAgICAgICBzaG91bGQsXG4gICAgICAgIGZpbHRlcixcbiAgICAgIH0sXG4gICAgfVxuICB9XG5cbiAgYnVpbGRNb3JlT25BZ2dyZWdhdGlvblBheWxvYWQoXG4gICAgYWdncmVnYXRpb25zOiBhbnksXG4gICAga2V5OiBzdHJpbmcsXG4gICAgc2VhcmNoRmlsdGVyczogU2VhcmNoRmlsdGVycyxcbiAgICBjb25maWdGaWx0ZXJzOiBTZWFyY2hGaWx0ZXJzXG4gICk6IEVzU2VhcmNoUGFyYW1zIHtcbiAgICByZXR1cm4ge1xuICAgICAgYWdncmVnYXRpb25zOiB7IFtrZXldOiBhZ2dyZWdhdGlvbnNba2V5XSB9LFxuICAgICAgc2l6ZTogMCxcbiAgICAgIHF1ZXJ5OiB0aGlzLmJ1aWxkUGF5bG9hZFF1ZXJ5KHNlYXJjaEZpbHRlcnMsIGNvbmZpZ0ZpbHRlcnMpLFxuICAgIH1cbiAgfVxuXG4gIHF1ZXJ5RmlsdGVyT25WYWx1ZXMoa2V5LCB2YWx1ZXMpIHtcbiAgICByZXR1cm4gIXZhbHVlcyB8fCB2YWx1ZXMubGVuZ3RoIDw9IDBcbiAgICAgID8ge31cbiAgICAgIDoge1xuICAgICAgICAgIHRlcm1zOiB7XG4gICAgICAgICAgICBba2V5XTogWy4uLnZhbHVlc10sXG4gICAgICAgICAgfSxcbiAgICAgICAgfVxuICB9XG5cbiAgYnVpbGRBdXRvY29tcGxldGVQYXlsb2FkKHF1ZXJ5OiBzdHJpbmcpOiBFc1NlYXJjaFBhcmFtcyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHF1ZXJ5OiB7XG4gICAgICAgIGJvb2w6IHtcbiAgICAgICAgICBtdXN0OiBbXG4gICAgICAgICAgICB0aGlzLnF1ZXJ5RmlsdGVyT25WYWx1ZXMoJ2lzVGVtcGxhdGUnLCAnbicpLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBtdWx0aV9tYXRjaDoge1xuICAgICAgICAgICAgICAgIHF1ZXJ5LFxuICAgICAgICAgICAgICAgIHR5cGU6ICdib29sX3ByZWZpeCcsXG4gICAgICAgICAgICAgICAgZmllbGRzOiB0aGlzLmluamVjdExhbmdJblF1ZXJ5U3RyaW5nRmllbGRzKHtcbiAgICAgICAgICAgICAgICAgICdyZXNvdXJjZVRpdGxlT2JqZWN0LiR7c2VhcmNoTGFuZ30nOiA0LFxuICAgICAgICAgICAgICAgICAgJ3Jlc291cmNlQWJzdHJhY3RPYmplY3QuJHtzZWFyY2hMYW5nfSc6IDMsXG4gICAgICAgICAgICAgICAgICB0YWc6IDIsXG4gICAgICAgICAgICAgICAgICByZXNvdXJjZUlkZW50aWZpZXI6IDEsXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG5cbiAgICAgICAgICBtdXN0X25vdDogdGhpcy5tdXN0Tm90RmlsdGVycygpLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIF9zb3VyY2U6IFsncmVzb3VyY2VUaXRsZU9iamVjdCcsICd1dWlkJywgJ3Jlc291cmNlVHlwZSddLFxuICAgICAgZnJvbTogMCxcbiAgICAgIHNpemU6IDIwLFxuICAgIH1cbiAgfVxuXG4gIGNvbWJpbmVRdWVyeUdyb3VwcyhxdWVyeUdyb3Vwcykge1xuICAgIHJldHVybiBxdWVyeUdyb3VwcyA/IHF1ZXJ5R3JvdXBzLmpvaW4oJyBBTkQgJykudHJpbSgpIDogJydcbiAgfVxuXG4gIC8qKlxuICAgKiBGYWNldHMgc3RhdGUgaXMgYW4gb2JqZWN0IGxpa2UgdGhpczpcbiAgICpcbiAgICoge1xuICAgKiAgICd0YWcnOiB7XG4gICAqICAgICAnd29ybGQnOiB0cnVlLFxuICAgKiAgICAgJ3ZlY3Rvcic6IHRydWVcbiAgICogICB9LFxuICAgKiAgICdhdmFpbGFibGVJblNlcnZpY2UnIDoge1xuICAgKiAgICAgJ2F2YWlsYWJsZUluVmlld1NlcnZpY2UnOiAnK2xpbmtQcm90b2NvbDpcXC9PR0M6V01TLipcXC8nXG4gICAqICAgfSxcbiAgICogICAncmVzb3VyY2VUeXBlJzoge1xuICAgKiAgICAgJ3NlcnZpY2UnOiB7XG4gICAqICAgICAgICdzZXJ2aWNlVHlwZSc6IHtcbiAgICogICAgICAgICAnT0dDOldNUyc6IHRydWVcbiAgICogICAgICAgICAnT0dDOldGUyc6IGZhbHNlXG4gICAqICAgICAgIH1cbiAgICogICAgIH0sXG4gICAqICAgICAnZG93bmxvYWQnOiB7XG4gICAqICAgICAgICdzZXJ2aWNlVHlwZSc6IHtcbiAgICogICAgICAgfVxuICAgKiAgICAgfSxcbiAgICogICAgICdkYXRhc2V0JzogdHJ1ZVxuICAgKiAgIH1cbiAgICogfVxuICAgKi9cbiAgLy8gRklYTUU6IHRoaXMgaXMgbm90IHVzZWQgYW55bW9yZVxuICBzdGF0ZUZpbHRlcnNUb1F1ZXJ5U3RyaW5nKGZhY2V0c1N0YXRlKSB7XG4gICAgY29uc3QgcXVlcnkgPSBbXVxuICAgIGZvciAoY29uc3QgaW5kZXhLZXkgaW4gZmFjZXRzU3RhdGUpIHtcbiAgICAgIGlmIChpbmRleEtleSBpbiBmYWNldHNTdGF0ZSkge1xuICAgICAgICBjb25zdCBxdWVyeUNodW5rID0gdGhpcy5wYXJzZVN0YXRlTm9kZShcbiAgICAgICAgICBpbmRleEtleSxcbiAgICAgICAgICBmYWNldHNTdGF0ZVtpbmRleEtleV0sXG4gICAgICAgICAgdW5kZWZpbmVkXG4gICAgICAgIClcbiAgICAgICAgaWYgKHF1ZXJ5Q2h1bmspIHtcbiAgICAgICAgICBxdWVyeS5wdXNoKHF1ZXJ5Q2h1bmspXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY29tYmluZVF1ZXJ5R3JvdXBzKHF1ZXJ5KVxuICB9XG5cbiAgLy8gRklYTUU6IHRoaXMgaXMgbm90IHVzZWQgYW55bW9yZVxuICBwcml2YXRlIHBhcnNlU3RhdGVOb2RlKG5vZGVOYW1lLCBub2RlLCBpbmRleEtleSkge1xuICAgIGxldCBxdWVyeVN0cmluZyA9ICcnXG4gICAgaWYgKG5vZGUgJiYgdHlwZW9mIG5vZGUgPT09ICdvYmplY3QnKSB7XG4gICAgICBjb25zdCBjaHVua3MgPSBbXVxuICAgICAgZm9yIChjb25zdCBwIGluIG5vZGUpIHtcbiAgICAgICAgLy8gbmVzdGluZ1xuICAgICAgICBpZiAobm9kZVtwXSAmJiB0eXBlb2Ygbm9kZVtwXSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICBjb25zdCBuZXh0THZsS2V5ID0gT2JqZWN0LmtleXMobm9kZVtwXSlbMF1cbiAgICAgICAgICBjb25zdCBuZXh0THZsU3RhdGUgPSBub2RlW3BdW25leHRMdmxLZXldXG4gICAgICAgICAgaWYgKE9iamVjdC5rZXlzKG5leHRMdmxTdGF0ZSkubGVuZ3RoKSB7XG4gICAgICAgICAgICBjb25zdCBuZXN0ZWRDaHVua3MgPSBbbm9kZU5hbWUgKyAnOicgKyAnXCInICsgcCArICdcIiddXG4gICAgICAgICAgICBjb25zdCBjaHVuayA9IHRoaXMucGFyc2VTdGF0ZU5vZGUoXG4gICAgICAgICAgICAgIG5leHRMdmxLZXksXG4gICAgICAgICAgICAgIG5leHRMdmxTdGF0ZSxcbiAgICAgICAgICAgICAgbmV4dEx2bEtleVxuICAgICAgICAgICAgKS50cmltKClcbiAgICAgICAgICAgIGlmIChjaHVuaykge1xuICAgICAgICAgICAgICBuZXN0ZWRDaHVua3MucHVzaChjaHVuaylcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNodW5rcy5wdXNoKCcoJyArIG5lc3RlZENodW5rcy5qb2luKCcgQU5EICcpICsgJyknKVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBjaHVuayA9IHRoaXMucGFyc2VTdGF0ZU5vZGUocCwgbm9kZVtwXSwgbm9kZU5hbWUpLnRyaW0oKVxuICAgICAgICAgIGlmIChjaHVuaykge1xuICAgICAgICAgICAgY2h1bmtzLnB1c2goY2h1bmspXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoY2h1bmtzICYmIGNodW5rcy5sZW5ndGgpIHtcbiAgICAgICAgcXVlcnlTdHJpbmcgKz0gJygnXG4gICAgICAgIHF1ZXJ5U3RyaW5nICs9IGNodW5rcy5qb2luKCcgJylcbiAgICAgICAgcXVlcnlTdHJpbmcgKz0gJyknXG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0eXBlb2Ygbm9kZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHF1ZXJ5U3RyaW5nICs9IG5vZGVcbiAgICB9IGVsc2UgaWYgKG5vZGUgPT09IHRydWUpIHtcbiAgICAgIHF1ZXJ5U3RyaW5nICs9IGluZGV4S2V5ICsgJzpcIicgKyBub2RlTmFtZSArICdcIidcbiAgICB9IGVsc2UgaWYgKG5vZGUgPT09IGZhbHNlKSB7XG4gICAgICBxdWVyeVN0cmluZyArPSAnLScgKyBpbmRleEtleSArICc6XCInICsgbm9kZU5hbWUgKyAnXCInXG4gICAgfVxuICAgIHJldHVybiBxdWVyeVN0cmluZ1xuICB9XG5cbiAgcHJpdmF0ZSBlc2NhcGVTcGVjaWFsQ2hhcmFjdGVycyhxdWVyeXN0cmluZykge1xuICAgIHJldHVybiBxdWVyeXN0cmluZy5yZXBsYWNlKFxuICAgICAgLyhcXCt8LXxcXC98JiZ8XFx8XFx8fCF8XFx7fFxcfXxcXFt8XFxdXFxefH58XFw/fDp8XFxcXHsxfXxcXCh8XFwpKS9nLFxuICAgICAgJ1xcXFwkMSdcbiAgICApXG4gIH1cblxuICBidWlsZEFnZ3JlZ2F0aW9uc1BheWxvYWQoYWdncmVnYXRpb25zOiBBZ2dyZWdhdGlvbnNQYXJhbXMpOiBhbnkge1xuICAgIGNvbnN0IG1hcFRvRVNBZ2dyZWdhdGlvbiA9IChhZ2dyZWdhdGlvbjogQWdncmVnYXRpb25QYXJhbXMpID0+IHtcbiAgICAgIHN3aXRjaCAoYWdncmVnYXRpb24udHlwZSkge1xuICAgICAgICBjYXNlICdmaWx0ZXJzJzpcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZmlsdGVyczoge1xuICAgICAgICAgICAgICBmaWx0ZXJzOiBPYmplY3Qua2V5cyhhZ2dyZWdhdGlvbi5maWx0ZXJzKS5yZWR1Y2UoKHByZXYsIGN1cnIpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWx0ZXIgPSBhZ2dyZWdhdGlvbi5maWx0ZXJzW2N1cnJdXG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgIC4uLnByZXYsXG4gICAgICAgICAgICAgICAgICBbY3Vycl06IHRoaXMuZmlsdGVyc1RvUXVlcnkoZmlsdGVyKVswXSxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0sIHt9KSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfVxuICAgICAgICBjYXNlICd0ZXJtcyc6XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRlcm1zOiB7XG4gICAgICAgICAgICAgIHNpemU6IGFnZ3JlZ2F0aW9uLmxpbWl0LFxuICAgICAgICAgICAgICBmaWVsZDogYWdncmVnYXRpb24uZmllbGQsXG4gICAgICAgICAgICAgIG9yZGVyOiB7XG4gICAgICAgICAgICAgICAgW2BfJHthZ2dyZWdhdGlvbi5zb3J0WzFdfWBdOiBhZ2dyZWdhdGlvbi5zb3J0WzBdLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9XG4gICAgICAgIGNhc2UgJ2hpc3RvZ3JhbSc6XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGhpc3RvZ3JhbToge1xuICAgICAgICAgICAgICBmaWVsZDogYWdncmVnYXRpb24uZmllbGQsXG4gICAgICAgICAgICAgIGludGVydmFsOiBhZ2dyZWdhdGlvbi5pbnRlcnZhbCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gT2JqZWN0LmtleXMoYWdncmVnYXRpb25zKS5yZWR1Y2UoXG4gICAgICAocHJldiwgY3VycikgPT4gKHtcbiAgICAgICAgLi4ucHJldixcbiAgICAgICAgW2N1cnJdOiBtYXBUb0VTQWdncmVnYXRpb24oYWdncmVnYXRpb25zW2N1cnJdKSxcbiAgICAgIH0pLFxuICAgICAge31cbiAgICApXG4gIH1cblxuICBwYXJzZUFnZ3JlZ2F0aW9uUmVzdWx0KFxuICAgIHJlc3VsdDogQWdncmVnYXRpb25SZXN1bHQsXG4gICAgcmVxdWVzdFBhcmFtOiBBZ2dyZWdhdGlvblBhcmFtc1xuICApOiBBZ2dyZWdhdGlvbiB7XG4gICAgc3dpdGNoIChyZXF1ZXN0UGFyYW0udHlwZSkge1xuICAgICAgY2FzZSAnZmlsdGVycyc6XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgYnVja2V0czogT2JqZWN0LmtleXMoXG4gICAgICAgICAgICAocmVzdWx0IGFzIEZpbHRlcnNBZ2dyZWdhdGlvblJlc3VsdCkuYnVja2V0c1xuICAgICAgICAgICkubWFwKChrZXkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGJ1Y2tldCA9IChyZXN1bHQgYXMgRmlsdGVyc0FnZ3JlZ2F0aW9uUmVzdWx0KS5idWNrZXRzW2tleV1cbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIHRlcm06IGtleSxcbiAgICAgICAgICAgICAgY291bnQ6IGJ1Y2tldC5kb2NfY291bnQsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSksXG4gICAgICAgIH1cbiAgICAgIGNhc2UgJ3Rlcm1zJzpcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBidWNrZXRzOiAocmVzdWx0IGFzIFRlcm1zQWdncmVnYXRpb25SZXN1bHQpLmJ1Y2tldHMubWFwKChidWNrZXQpID0+ICh7XG4gICAgICAgICAgICB0ZXJtOiBidWNrZXQua2V5LFxuICAgICAgICAgICAgY291bnQ6IGJ1Y2tldC5kb2NfY291bnQsXG4gICAgICAgICAgfSkpLFxuICAgICAgICB9XG4gICAgICBjYXNlICdoaXN0b2dyYW0nOiB7XG4gICAgICAgIGNvbnN0IGhpc3RvZ3JhbVJlc3VsdCA9IHJlc3VsdCBhcyBIaXN0b2dyYW1BZ2dyZWdhdGlvblJlc3VsdFxuICAgICAgICBsZXQgYnVja2V0cyA9IEFycmF5LmlzQXJyYXkoaGlzdG9ncmFtUmVzdWx0LmJ1Y2tldHMpXG4gICAgICAgICAgPyBoaXN0b2dyYW1SZXN1bHQuYnVja2V0c1xuICAgICAgICAgIDogT2JqZWN0LmtleXMoaGlzdG9ncmFtUmVzdWx0LmJ1Y2tldHMpLm1hcChcbiAgICAgICAgICAgICAgKGtleSkgPT4gaGlzdG9ncmFtUmVzdWx0LmJ1Y2tldHNba2V5XVxuICAgICAgICAgICAgKVxuICAgICAgICBidWNrZXRzID0gYnVja2V0cy5tYXAoKGJ1Y2tldCwgaW5kZXgpID0+ICh7XG4gICAgICAgICAgbG93VmFsdWU6IGJ1Y2tldC5rZXksXG4gICAgICAgICAgaGlnaFZhbHVlOiBidWNrZXRzW2luZGV4ICsgMV0/LmtleSwgLy8gdGhpcyB3aWxsIHJldHVybiB1bmRlZmluZWQgb24gdGhlIGxhc3QgZWxlbWVudCAod2hpY2ggd2UgcmVtb3ZlIGxhdGVyKVxuICAgICAgICAgIGNvdW50OiBidWNrZXQuZG9jX2NvdW50LFxuICAgICAgICB9KSlcbiAgICAgICAgYnVja2V0cy5wb3AoKSAvLyBzZWUgYWJvdmVcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBidWNrZXRzLFxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -30,6 +30,7 @@ export class Gn4PlatformService {
30
30
  this.httpClient = httpClient;
31
31
  this.recordsApiService = recordsApiService;
32
32
  this.type = 'GeoNetwork';
33
+ this.gnParseVersion = '4.2.5';
33
34
  this.keyTranslations$ = this.toolsApiService
34
35
  .getTranslationsPackage1('gnui')
35
36
  .pipe(catchError(() => {
@@ -208,9 +209,12 @@ export class Gn4PlatformService {
208
209
  }));
209
210
  }
210
211
  getFileContent(url) {
211
- return this.httpClient.get(url.toString(), { responseType: 'text' }).pipe(map((text) => {
212
+ return combineLatest([
213
+ this.httpClient.get(url.toString(), { responseType: 'text' }),
214
+ this.getApiVersion(),
215
+ ]).pipe(map(([text, version]) => {
212
216
  const parsed = JSON.parse(text);
213
- if (typeof parsed === 'object') {
217
+ if (version > this.gnParseVersion) {
214
218
  return parsed;
215
219
  }
216
220
  const decoded = this.decodeBase64(parsed);
@@ -249,4 +253,4 @@ export class Gn4PlatformService {
249
253
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: Gn4PlatformService, decorators: [{
250
254
  type: Injectable
251
255
  }], ctorParameters: () => [{ type: i1.SiteApiService }, { type: i1.MeApiService }, { type: i1.UsersApiService }, { type: i2.Gn4PlatformMapper }, { type: i1.ToolsApiService }, { type: i1.RegistriesApiService }, { type: i3.TranslateService }, { type: i1.UserfeedbackApiService }, { type: i4.HttpClient }, { type: i1.RecordsApiService }] });
252
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ240LXBsYXRmb3JtLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FwaS9yZXBvc2l0b3J5L3NyYy9saWIvZ240L3BsYXRmb3JtL2duNC1wbGF0Zm9ybS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDMUMsT0FBTyxFQUNMLFVBQVUsRUFDVixNQUFNLEVBQ04sR0FBRyxFQUNILFFBQVEsRUFDUixXQUFXLEVBQ1gsR0FBRyxHQUNKLE1BQU0sZ0JBQWdCLENBQUE7QUFDdkIsT0FBTyxFQUNMLFlBQVksRUFDWixpQkFBaUIsRUFDakIsb0JBQW9CLEVBQ3BCLGNBQWMsRUFDZCxlQUFlLEVBQ2Ysc0JBQXNCLEVBQ3RCLGVBQWUsR0FDaEIsTUFBTSwrQ0FBK0MsQ0FBQTtBQVl0RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQTtBQUN6RCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sUUFBUSxDQUFBO0FBQzVCLE9BQU8sRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFNaEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMkNBQTJDLENBQUE7QUFDL0UsT0FBTyxFQUNMLGFBQWEsRUFDYixRQUFRLEVBRVIsRUFBRSxFQUNGLFNBQVMsRUFDVCxVQUFVLEdBQ1gsTUFBTSxNQUFNLENBQUE7QUFDYixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUN0RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQTs7Ozs7O0FBRzNFLE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQTtBQUc3QixNQUFNLE9BQU8sa0JBQWtCO0lBOEM3QixJQUFZLEtBQUs7UUFDZixPQUFPLGlCQUFpQixDQUFDLElBQUksQ0FBQyxn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LElBQUksU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDckQsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQ2xFLFNBQVMsQ0FBQyxHQUFHLEVBQUU7b0JBQ2IsTUFBTSxRQUFRLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxRQUFRLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUE7b0JBQ2hFLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUE7Z0JBQzlDLENBQUMsQ0FBQyxDQUNILENBQUE7WUFDSCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sTUFBTSxhQUFhLEdBQUcsbUJBQW1CLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFBO2dCQUM5RCxNQUFNLFFBQVEsR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLGFBQWEsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQTtnQkFDckUsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUMsQ0FBQTtZQUM5QyxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQ0gsQ0FBQTtJQUNILENBQUM7K0dBdFlVLGtCQUFrQjttSEFBbEIsa0JBQWtCOzs0RkFBbEIsa0JBQWtCO2tCQUQ5QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQge1xuICBjYXRjaEVycm9yLFxuICBmaWx0ZXIsXG4gIG1hcCxcbiAgbWVyZ2VNYXAsXG4gIHNoYXJlUmVwbGF5LFxuICB0YXAsXG59IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xuaW1wb3J0IHtcbiAgTWVBcGlTZXJ2aWNlLFxuICBSZWNvcmRzQXBpU2VydmljZSxcbiAgUmVnaXN0cmllc0FwaVNlcnZpY2UsXG4gIFNpdGVBcGlTZXJ2aWNlLFxuICBUb29sc0FwaVNlcnZpY2UsXG4gIFVzZXJmZWVkYmFja0FwaVNlcnZpY2UsXG4gIFVzZXJzQXBpU2VydmljZSxcbn0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kYXRhLWFjY2Vzcy9nbjQvc3JjJ1xuaW1wb3J0IHtcbiAgUGxhdGZvcm1TZXJ2aWNlSW50ZXJmYWNlLFxuICBVcGxvYWRFdmVudCxcbn0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vZG9tYWluL3NyYy9saWIvcGxhdGZvcm0uc2VydmljZS5pbnRlcmZhY2UnXG5pbXBvcnQgeyBVc2VyTW9kZWwgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9kb21haW4vc3JjL2xpYi9tb2RlbC91c2VyL3VzZXIubW9kZWwnXG5pbXBvcnQge1xuICBDYXRhbG9nUmVjb3JkLFxuICBLZXl3b3JkLFxuICBPcmdhbml6YXRpb24sXG4gIFVzZXJGZWVkYmFjayxcbn0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vZG9tYWluL3NyYy9saWIvbW9kZWwvcmVjb3JkJ1xuaW1wb3J0IHsgR240UGxhdGZvcm1NYXBwZXIgfSBmcm9tICcuL2duNC1wbGF0Zm9ybS5tYXBwZXInXG5pbXBvcnQgeyBsdHIgfSBmcm9tICdzZW12ZXInXG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwRXZlbnRUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnXG5pbXBvcnQge1xuICBLZXl3b3JkQXBpUmVzcG9uc2UsXG4gIFRoZXNhdXJ1c0FwaVJlc3BvbnNlLFxufSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FwaS9tZXRhZGF0YS1jb252ZXJ0ZXIvc3JjJ1xuaW1wb3J0IHsgS2V5d29yZFR5cGUgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9kb21haW4vc3JjL2xpYi9tb2RlbC90aGVzYXVydXMnXG5pbXBvcnQgeyBub0R1cGxpY2F0ZUZpbGVOYW1lIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy91dGlsL3NoYXJlZC9zcmMnXG5pbXBvcnQge1xuICBjb21iaW5lTGF0ZXN0LFxuICBmb3JrSm9pbixcbiAgT2JzZXJ2YWJsZSxcbiAgb2YsXG4gIHN3aXRjaE1hcCxcbiAgdGhyb3dFcnJvcixcbn0gZnJvbSAncnhqcydcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJ1xuaW1wb3J0IHsgZ2V0TGFuZzNGcm9tTGFuZzIgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3V0aWwvaTE4bi9zcmMnXG5pbXBvcnQgeyBEYXRhdml6Q29uZmlnTW9kZWwgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9kb21haW4vc3JjL2xpYi9tb2RlbC9kYXRhdml6L2RhdGF2aXotY29uZmlndXJhdGlvbi5tb2RlbCdcblxuY29uc3QgbWluQXBpVmVyc2lvbiA9ICc0LjIuMidcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEduNFBsYXRmb3JtU2VydmljZSBpbXBsZW1lbnRzIFBsYXRmb3JtU2VydmljZUludGVyZmFjZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgdHlwZSA9ICdHZW9OZXR3b3JrJ1xuICBwcml2YXRlIHJlYWRvbmx5IG1lJDogT2JzZXJ2YWJsZTxVc2VyTW9kZWw+XG4gIHByaXZhdGUgcmVhZG9ubHkgdXNlcnMkOiBPYnNlcnZhYmxlPFVzZXJNb2RlbFtdPlxuICBwcml2YXRlIHJlYWRvbmx5IGlzVXNlckFub255bW91cyQ6IE9ic2VydmFibGU8Ym9vbGVhbj5cblxuICBwcml2YXRlIGtleVRyYW5zbGF0aW9ucyQgPSB0aGlzLnRvb2xzQXBpU2VydmljZVxuICAgIC5nZXRUcmFuc2xhdGlvbnNQYWNrYWdlMSgnZ251aScpXG4gICAgLnBpcGUoXG4gICAgICBjYXRjaEVycm9yKCgpID0+IHtcbiAgICAgICAgY29uc29sZS53YXJuKCdFcnJvciB3aGlsZSBsb2FkaW5nIGdudWkgbGFuZ3VhZ2UgcGFja2FnZScpXG4gICAgICAgIHJldHVybiBvZih7fSlcbiAgICAgIH0pLFxuICAgICAgc2hhcmVSZXBsYXkoMSlcbiAgICApXG5cbiAgcHJpdmF0ZSBzZXR0aW5ncyQgPSBvZih0cnVlKS5waXBlKFxuICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLnNpdGVBcGlTZXJ2aWNlLmdldFNpdGVPclBvcnRhbERlc2NyaXB0aW9uKCkpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gIClcblxuICBwcml2YXRlIHJlYWRvbmx5IGFwaVZlcnNpb24kID0gdGhpcy5zZXR0aW5ncyQucGlwZShcbiAgICBtYXAoKGluZm8pID0+IGluZm9bJ3N5c3RlbS9wbGF0Zm9ybS92ZXJzaW9uJ10gYXMgc3RyaW5nKSxcbiAgICB0YXAoKHZlcnNpb24pID0+IHtcbiAgICAgIGlmIChsdHIodmVyc2lvbiwgbWluQXBpVmVyc2lvbikpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBHbjQgQVBJIHZlcnNpb24gaXMgbm90IGNvbXBhdGlibGUuXFxuTWluaW11bTogJHttaW5BcGlWZXJzaW9ufVxcbllvdXIgdmVyc2lvbjogJHt2ZXJzaW9ufWBcbiAgICAgICAgKVxuICAgICAgfVxuICAgIH0pLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gIClcblxuICBwcml2YXRlIHJlYWRvbmx5IGFsbG93RWRpdEhhcnZlc3RlZE1kJCA9IHRoaXMuc2V0dGluZ3MkLnBpcGUoXG4gICAgbWFwKChpbmZvKSA9PiB7XG4gICAgICByZXR1cm4gaW5mb1snc3lzdGVtL2hhcnZlc3Rlci9lbmFibGVFZGl0aW5nJ10gYXMgYm9vbGVhblxuICAgIH0pLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gIClcblxuICAvKipcbiAgICogQSBtYXAgb2YgYWxyZWFkeSBsb2FkZWQgdGhlc2F1cmkgKGdyb3VwcyBvZiBrZXl3b3Jkcyk7IHRoZSBrZXkgaXMgYSBVUklcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUga2V5d29yZHNCeVRoZXNhdXJpOiBSZWNvcmQ8c3RyaW5nLCBPYnNlcnZhYmxlPEtleXdvcmRbXT4+ID0ge31cblxuICBwcml2YXRlIGdldCBsYW5nMygpIHtcbiAgICByZXR1cm4gZ2V0TGFuZzNGcm9tTGFuZzIodGhpcy50cmFuc2xhdGVTZXJ2aWNlLmN1cnJlbnRMYW5nKVxuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBzaXRlQXBpU2VydmljZTogU2l0ZUFwaVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBtZUFwaTogTWVBcGlTZXJ2aWNlLFxuICAgIHByaXZhdGUgdXNlcnNBcGk6IFVzZXJzQXBpU2VydmljZSxcbiAgICBwcml2YXRlIG1hcHBlcjogR240UGxhdGZvcm1NYXBwZXIsXG4gICAgcHJpdmF0ZSB0b29sc0FwaVNlcnZpY2U6IFRvb2xzQXBpU2VydmljZSxcbiAgICBwcml2YXRlIHJlZ2lzdHJpZXNBcGlTZXJ2aWNlOiBSZWdpc3RyaWVzQXBpU2VydmljZSxcbiAgICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSB1c2VyZmVlZGJhY2tBcGlTZXJ2aWNlOiBVc2VyZmVlZGJhY2tBcGlTZXJ2aWNlLFxuICAgIHByaXZhdGUgaHR0cENsaWVudDogSHR0cENsaWVudCxcbiAgICBwcml2YXRlIHJlY29yZHNBcGlTZXJ2aWNlOiBSZWNvcmRzQXBpU2VydmljZVxuICApIHtcbiAgICB0aGlzLm1lJCA9IHRoaXMubWVBcGkuZ2V0TWUoKS5waXBlKFxuICAgICAgc3dpdGNoTWFwKChhcGlVc2VyKSA9PiB0aGlzLm1hcHBlci51c2VyRnJvbU1lQXBpKGFwaVVzZXIpKSxcbiAgICAgIHNoYXJlUmVwbGF5KHsgYnVmZmVyU2l6ZTogMSwgcmVmQ291bnQ6IHRydWUgfSlcbiAgICApXG5cbiAgICB0aGlzLmlzVXNlckFub255bW91cyQgPSB0aGlzLm1lJC5waXBlKFxuICAgICAgbWFwKCh1c2VyKSA9PiAhdXNlciB8fCAhKCdpZCcgaW4gdXNlcikpXG4gICAgKVxuXG4gICAgdGhpcy51c2VycyQgPSB0aGlzLnVzZXJzQXBpLmdldFVzZXJzKCkucGlwZShcbiAgICAgIG1hcCgodXNlcnMpID0+IHVzZXJzLm1hcCgodXNlcikgPT4gdGhpcy5tYXBwZXIudXNlckZyb21BcGkodXNlcikpKSxcbiAgICAgIHNoYXJlUmVwbGF5KClcbiAgICApXG4gIH1cblxuICBnZXRUeXBlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudHlwZVxuICB9XG5cbiAgZ2V0QXBpVmVyc2lvbigpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLmFwaVZlcnNpb24kXG4gIH1cblxuICBnZXRBbGxvd0VkaXRIYXJ2ZXN0ZWRNZCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5hbGxvd0VkaXRIYXJ2ZXN0ZWRNZCRcbiAgfVxuXG4gIGdldE1lKCk6IE9ic2VydmFibGU8VXNlck1vZGVsPiB7XG4gICAgcmV0dXJuIHRoaXMubWUkXG4gIH1cblxuICBpc0Fub255bW91cygpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5pc1VzZXJBbm9ueW1vdXMkXG4gIH1cblxuICBnZXRPcmdhbml6YXRpb25zKCk6IE9ic2VydmFibGU8T3JnYW5pemF0aW9uW10+IHtcbiAgICByZXR1cm4gdW5kZWZpbmVkXG4gIH1cblxuICBnZXRVc2Vyc0J5T3JnYW5pemF0aW9uKG9yZ2FuaXNhdGlvbjogT3JnYW5pemF0aW9uKTogT2JzZXJ2YWJsZTxVc2VyTW9kZWxbXT4ge1xuICAgIHJldHVybiB1bmRlZmluZWRcbiAgfVxuXG4gIGdldFVzZXJzKCk6IE9ic2VydmFibGU8VXNlck1vZGVsW10+IHtcbiAgICByZXR1cm4gdGhpcy51c2VycyRcbiAgfVxuXG4gIHRyYW5zbGF0ZUtleShrZXk6IHN0cmluZyk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgLy8gaWYgdGhlIGtleSBpcyBhIFVSSSwgdXNlIHRoZSByZWdpc3RyaWVzIEFQSSB0byBsb29rIGZvciB0aGUgdHJhbnNsYXRpb25cbiAgICBpZiAoa2V5Lm1hdGNoKC9eaHR0cHM/OlxcL1xcLy8pKSB7XG4gICAgICAvLyB0aGUgdGhlc2F1cnVzIFVSSSBpcyBpbmZlcnJlZCBieSByZW1vdmluZyBhIHBhcnQgb2YgdGhlIGtleXdvcmQgVVJJXG4gICAgICAvLyB0aGlzIGlzIG5vdCBleGFjdCBzY2llbmNlIGJ1dCBpdCdzIE9LLCB3ZSdsbCBzdGlsbCBlbmQgdXAgbG9hZGluZyBhIGJ1bmNoIG9mIGtleXdvcmRzIGF0IG9uY2UgYW55d2F5XG4gICAgICBjb25zdCB0aGVzYXVydXNVcmkgPSBrZXkucmVwbGFjZSgvXFwvKFteL10rKSQvLCAnLycpXG4gICAgICByZXR1cm4gdGhpcy5nZXRLZXl3b3Jkc0J5VXJpKHRoZXNhdXJ1c1VyaSkucGlwZShcbiAgICAgICAgbWFwKCh0aGVzYXVydXMpID0+IHtcbiAgICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgdGhlc2F1cnVzKSB7XG4gICAgICAgICAgICBpZiAoaXRlbS5rZXkgPT09IGtleSkgcmV0dXJuIGl0ZW0ubGFiZWxcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGtleVxuICAgICAgICB9KVxuICAgICAgKVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5rZXlUcmFuc2xhdGlvbnMkLnBpcGUobWFwKCh0cmFuc2xhdGlvbnMpID0+IHRyYW5zbGF0aW9uc1trZXldKSlcbiAgfVxuXG4gIHByaXZhdGUgYWxsVGhlc2F1cnVzJCA9IHRoaXMuaHR0cENsaWVudFxuICAgIC5nZXQoXG4gICAgICBgJHt0aGlzLnJlZ2lzdHJpZXNBcGlTZXJ2aWNlLmNvbmZpZ3VyYXRpb24uYmFzZVBhdGh9L3RoZXNhdXJ1cz9fY29udGVudF90eXBlPWpzb25gXG4gICAgKVxuICAgIC5waXBlKFxuICAgICAgbWFwKCh0aGVzYXVydXMpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoZXNhdXJ1c1swXSBhcyBUaGVzYXVydXNBcGlSZXNwb25zZVtdXG4gICAgICB9KSxcbiAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgKVxuXG4gIHNlYXJjaEtleXdvcmRzKFxuICAgIHF1ZXJ5OiBzdHJpbmcsXG4gICAga2V5d29yZFR5cGVzOiBLZXl3b3JkVHlwZVtdXG4gICk6IE9ic2VydmFibGU8S2V5d29yZFtdPiB7XG4gICAgY29uc3Qga2V5d29yZHMkOiBPYnNlcnZhYmxlPEtleXdvcmRBcGlSZXNwb25zZVtdPiA9IHRoaXMuYWxsVGhlc2F1cnVzJC5waXBlKFxuICAgICAgc3dpdGNoTWFwKCh0aGVzYXVydXMpID0+IHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRUaGVzYXVyaSA9IFtdXG4gICAgICAgIGtleXdvcmRUeXBlcy5tYXAoKGtleXdvcmRUeXBlKSA9PiB7XG4gICAgICAgICAgc2VsZWN0ZWRUaGVzYXVyaS5wdXNoKFxuICAgICAgICAgICAgLi4udGhlc2F1cnVzLmZpbHRlcigodGhlcykgPT4gdGhlcy5kbmFtZSA9PT0ga2V5d29yZFR5cGUpXG4gICAgICAgICAgKVxuICAgICAgICB9KVxuXG4gICAgICAgIHJldHVybiB0aGlzLnJlZ2lzdHJpZXNBcGlTZXJ2aWNlLnNlYXJjaEtleXdvcmRzKFxuICAgICAgICAgIHF1ZXJ5LFxuICAgICAgICAgIHRoaXMubGFuZzMsXG4gICAgICAgICAgMTAsXG4gICAgICAgICAgMCxcbiAgICAgICAgICBudWxsLFxuICAgICAgICAgIHNlbGVjdGVkVGhlc2F1cmkubWFwKCh0aGVzKSA9PiB0aGVzLmtleSksXG4gICAgICAgICAgbnVsbCxcbiAgICAgICAgICBgKiR7cXVlcnl9KmBcbiAgICAgICAgKSBhcyBPYnNlcnZhYmxlPEtleXdvcmRBcGlSZXNwb25zZVtdPlxuICAgICAgfSlcbiAgICApXG5cbiAgICByZXR1cm4gY29tYmluZUxhdGVzdChba2V5d29yZHMkLCB0aGlzLmFsbFRoZXNhdXJ1cyRdKS5waXBlKFxuICAgICAgbWFwKChba2V5d29yZHMsIHRoZXNhdXJ1c10pID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWFwcGVyLmtleXdvcmRzRnJvbUFwaShrZXl3b3JkcywgdGhlc2F1cnVzLCB0aGlzLmxhbmczKVxuICAgICAgfSlcbiAgICApXG4gIH1cblxuICBnZXRLZXl3b3Jkc0J5VXJpKHVyaTogc3RyaW5nKTogT2JzZXJ2YWJsZTxLZXl3b3JkW10+IHtcbiAgICBpZiAodGhpcy5rZXl3b3Jkc0J5VGhlc2F1cmlbdXJpXSkge1xuICAgICAgcmV0dXJuIHRoaXMua2V5d29yZHNCeVRoZXNhdXJpW3VyaV1cbiAgICB9XG4gICAgY29uc3Qga2V5d29yZHMkID0gdGhpcy5yZWdpc3RyaWVzQXBpU2VydmljZS5zZWFyY2hLZXl3b3JkcyhcbiAgICAgIG51bGwsXG4gICAgICB0aGlzLmxhbmczLFxuICAgICAgMTAwMCxcbiAgICAgIDAsXG4gICAgICBudWxsLFxuICAgICAgbnVsbCxcbiAgICAgIG51bGwsXG4gICAgICBgJHt1cml9KmBcbiAgICApIGFzIE9ic2VydmFibGU8S2V5d29yZEFwaVJlc3BvbnNlW10+XG5cbiAgICB0aGlzLmtleXdvcmRzQnlUaGVzYXVyaVt1cmldID0gY29tYmluZUxhdGVzdChbXG4gICAgICBrZXl3b3JkcyQsXG4gICAgICB0aGlzLmFsbFRoZXNhdXJ1cyQsXG4gICAgXSkucGlwZShcbiAgICAgIG1hcCgoW2tleXdvcmRzLCB0aGVzYXVydXNdKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLm1hcHBlci5rZXl3b3Jkc0Zyb21BcGkoa2V5d29yZHMsIHRoZXNhdXJ1cywgdGhpcy5sYW5nMylcbiAgICAgIH0pLFxuICAgICAgc2hhcmVSZXBsYXkoMSlcbiAgICApXG5cbiAgICByZXR1cm4gdGhpcy5rZXl3b3Jkc0J5VGhlc2F1cmlbdXJpXVxuICB9XG5cbiAgc2VhcmNoS2V5d29yZHNJblRoZXNhdXJ1cyhxdWVyeTogc3RyaW5nLCB0aGVzYXVydXNJZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuYWxsVGhlc2F1cnVzJC5waXBlKFxuICAgICAgc3dpdGNoTWFwKCh0aGVzYXVyaSkgPT4ge1xuICAgICAgICBjb25zdCBzdHJpcHBlZFRoZXNhdXJ1c0lkID0gdGhlc2F1cnVzSWQucmVwbGFjZShcbiAgICAgICAgICAnZ2VvbmV0d29yay50aGVzYXVydXMuJyxcbiAgICAgICAgICAnJ1xuICAgICAgICApXG4gICAgICAgIGlmICghdGhlc2F1cmkuZmluZCgodGhlcykgPT4gdGhlcy5rZXkgPT09IHN0cmlwcGVkVGhlc2F1cnVzSWQpKVxuICAgICAgICAgIHJldHVybiBvZihbXSlcbiAgICAgICAgcmV0dXJuIHRoaXMucmVnaXN0cmllc0FwaVNlcnZpY2VcbiAgICAgICAgICAuc2VhcmNoS2V5d29yZHMoXG4gICAgICAgICAgICBxdWVyeSxcbiAgICAgICAgICAgIHRoaXMubGFuZzMsXG4gICAgICAgICAgICAxMDAsXG4gICAgICAgICAgICAwLFxuICAgICAgICAgICAgbnVsbCxcbiAgICAgICAgICAgIFtzdHJpcHBlZFRoZXNhdXJ1c0lkXSxcbiAgICAgICAgICAgIG51bGxcbiAgICAgICAgICApXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICBtYXAoKGtleXdvcmRzOiBLZXl3b3JkQXBpUmVzcG9uc2VbXSkgPT5cbiAgICAgICAgICAgICAgdGhpcy5tYXBwZXIua2V5d29yZHNGcm9tQXBpKGtleXdvcmRzLCB0aGVzYXVyaSwgdGhpcy5sYW5nMylcbiAgICAgICAgICAgIClcbiAgICAgICAgICApXG4gICAgICB9KVxuICAgIClcbiAgfVxuXG4gIGdldFVzZXJGZWVkYmFja3ModXVpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxVc2VyRmVlZGJhY2tbXT4ge1xuICAgIHJldHVybiB0aGlzLnVzZXJmZWVkYmFja0FwaVNlcnZpY2UuZ2V0VXNlckNvbW1lbnRzKHV1aWQpLnBpcGUoXG4gICAgICBtYXAoKHVzZXJGZWVkYmFja3MpID0+XG4gICAgICAgIHVzZXJGZWVkYmFja3MubWFwKHRoaXMubWFwcGVyLnVzZXJGZWVkYmFja3NGcm9tQXBpKVxuICAgICAgKSxcbiAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGZldGNoaW5nIHVzZXIgZmVlZGJhY2tzOicsIGVycm9yKVxuICAgICAgICByZXR1cm4gb2YodW5kZWZpbmVkKVxuICAgICAgfSlcbiAgICApXG4gIH1cblxuICBwb3N0VXNlckZlZWRiYWNrcyh1c2VyRmVlZGJhY2s6IFVzZXJGZWVkYmFjayk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIGNvbnN0IG1hcHBlZFVzZXJGZWVkQmFjayA9IHRoaXMubWFwcGVyLnVzZXJGZWVkYmFja3NUb0FwaSh1c2VyRmVlZGJhY2spXG4gICAgcmV0dXJuIHRoaXMudXNlcmZlZWRiYWNrQXBpU2VydmljZS5uZXdVc2VyRmVlZGJhY2sobWFwcGVkVXNlckZlZWRCYWNrKS5waXBlKFxuICAgICAgbWFwKCgpID0+IHVuZGVmaW5lZCksXG4gICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBwb3N0aW5nIHVzZXIgZmVlZGJhY2s6JywgZXJyb3IpXG4gICAgICAgIHJldHVybiBvZih1bmRlZmluZWQpXG4gICAgICB9KVxuICAgIClcbiAgfVxuXG4gIGdldFJlY29yZEF0dGFjaG1lbnRzKHJlY29yZFV1aWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLnJlY29yZHNBcGlTZXJ2aWNlLmdldEFsbFJlc291cmNlcyhyZWNvcmRVdWlkKS5waXBlKFxuICAgICAgbWFwKChyZXNvdXJjZXMpID0+XG4gICAgICAgIHJlc291cmNlcy5tYXAoKHIpID0+ICh7XG4gICAgICAgICAgdXJsOiBuZXcgVVJMKHIudXJsKSxcbiAgICAgICAgICBmaWxlTmFtZTogci5maWxlbmFtZSxcbiAgICAgICAgfSkpXG4gICAgICApXG4gICAgKVxuICB9XG5cbiAgY2xlYW5SZWNvcmRBdHRhY2htZW50cyhyZWNvcmQ6IENhdGFsb2dSZWNvcmQpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICByZXR1cm4gY29tYmluZUxhdGVzdChbXG4gICAgICB0aGlzLnJlY29yZHNBcGlTZXJ2aWNlLmdldEFzc29jaWF0ZWRSZXNvdXJjZXMocmVjb3JkLnVuaXF1ZUlkZW50aWZpZXIpLFxuICAgICAgdGhpcy5yZWNvcmRzQXBpU2VydmljZS5nZXRBbGxSZXNvdXJjZXMocmVjb3JkLnVuaXF1ZUlkZW50aWZpZXIpLFxuICAgIF0pLnBpcGUoXG4gICAgICBtYXAoKFthc3NvY2lhdGVkLCBhdHRhY2htZW50c10pID0+IHtcbiAgICAgICAgY29uc3QgeyBvbmxpbmVzID0gW10sIHRodW1ibmFpbHMgPSBbXSB9ID0gYXNzb2NpYXRlZFxuXG4gICAgICAgIGNvbnN0IHVybHNUb0tlZXAgPSBbXG4gICAgICAgICAgLi4uKEFycmF5LmlzQXJyYXkob25saW5lcykgPyBvbmxpbmVzIDogW10pLFxuICAgICAgICAgIC4uLihBcnJheS5pc0FycmF5KHRodW1ibmFpbHMpID8gdGh1bWJuYWlscyA6IFtdKSxcbiAgICAgICAgXS5tYXAoKHJlc291cmNlKSA9PiBPYmplY3QudmFsdWVzKHJlc291cmNlLnVybClbMF0pXG4gICAgICAgIGNvbnN0IGZpbGVUb0RlbGV0ZSA9IGF0dGFjaG1lbnRzLnJlZHVjZTxzdHJpbmdbXT4oKGFjYywgYXR0YWNobWVudCkgPT4ge1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICF1cmxzVG9LZWVwLmluY2x1ZGVzKGF0dGFjaG1lbnQudXJsKSAmJlxuICAgICAgICAgICAgYXR0YWNobWVudC5maWxlbmFtZSAhPT0gJ2RhdGF2aXpDb25maWcuanNvbidcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGFjYy5wdXNoKGF0dGFjaG1lbnQuZmlsZW5hbWUpXG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBhY2NcbiAgICAgICAgfSwgW10pXG5cbiAgICAgICAgcmV0dXJuIGZpbGVUb0RlbGV0ZVxuICAgICAgfSksXG4gICAgICBtZXJnZU1hcCgoZmlsZXNUb0RlbGV0ZSkgPT5cbiAgICAgICAgZmlsZXNUb0RlbGV0ZS5sZW5ndGhcbiAgICAgICAgICA/IGZvcmtKb2luKFxuICAgICAgICAgICAgICBmaWxlc1RvRGVsZXRlLm1hcCgoZmlsZW5hbWUpID0+XG4gICAgICAgICAgICAgICAgdGhpcy5yZWNvcmRzQXBpU2VydmljZS5kZWxSZXNvdXJjZShcbiAgICAgICAgICAgICAgICAgIHJlY29yZC51bmlxdWVJZGVudGlmaWVyLFxuICAgICAgICAgICAgICAgICAgZmlsZW5hbWVcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICkucGlwZShtYXAoKCkgPT4gdW5kZWZpbmVkKSlcbiAgICAgICAgICA6IG9mKHVuZGVmaW5lZClcbiAgICAgICksXG4gICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciB3aGlsZSBjbGVhbmluZyBhdHRhY2htZW50czonLCBlcnJvcilcbiAgICAgICAgdGhyb3cgZXJyb3JcbiAgICAgIH0pXG4gICAgKVxuICB9XG5cbiAgcHJpdmF0ZSB1cGxvYWRGaWxlKHJlY29yZFV1aWQ6IHN0cmluZywgZmlsZTogRmlsZSk6IE9ic2VydmFibGU8VXBsb2FkRXZlbnQ+IHtcbiAgICBsZXQgc2l6ZUJ5dGVzID0gLTFcbiAgICByZXR1cm4gdGhpcy5yZWNvcmRzQXBpU2VydmljZVxuICAgICAgLnB1dFJlc291cmNlKHJlY29yZFV1aWQsIGZpbGUsICdwdWJsaWMnLCB1bmRlZmluZWQsICdldmVudHMnLCB0cnVlKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgoZXZlbnQpID0+IHtcbiAgICAgICAgICBpZiAoZXZlbnQudHlwZSA9PT0gSHR0cEV2ZW50VHlwZS5VcGxvYWRQcm9ncmVzcykge1xuICAgICAgICAgICAgc2l6ZUJ5dGVzID0gZXZlbnQudG90YWxcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIHR5cGU6ICdwcm9ncmVzcycsXG4gICAgICAgICAgICAgIHByb2dyZXNzOiBldmVudC50b3RhbFxuICAgICAgICAgICAgICAgID8gTWF0aC5yb3VuZCgoMTAwICogZXZlbnQubG9hZGVkKSAvIGV2ZW50LnRvdGFsKVxuICAgICAgICAgICAgICAgIDogMCxcbiAgICAgICAgICAgIH0gYXMgVXBsb2FkRXZlbnRcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGV2ZW50LnR5cGUgPT09IEh0dHBFdmVudFR5cGUuUmVzcG9uc2UpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIHR5cGU6ICdzdWNjZXNzJyxcbiAgICAgICAgICAgICAgYXR0YWNobWVudDoge1xuICAgICAgICAgICAgICAgIHVybDogbmV3IFVSTChldmVudC5ib2R5LnVybCksXG4gICAgICAgICAgICAgICAgZmlsZU5hbWU6IGV2ZW50LmJvZHkuZmlsZW5hbWUsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHNpemVCeXRlcyxcbiAgICAgICAgICAgIH0gYXMgVXBsb2FkRXZlbnRcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgICAgICB9KSxcbiAgICAgICAgZmlsdGVyKChldmVudCkgPT4gISFldmVudCksXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoXG4gICAgICAgICAgICAoKSA9PiBuZXcgRXJyb3IoZXJyb3IuZXJyb3I/Lm1lc3NhZ2UgPz8gZXJyb3IubWVzc2FnZSlcbiAgICAgICAgICApXG4gICAgICAgIH0pXG4gICAgICApXG4gIH1cblxuICBnZXRGaWxlQ29udGVudCh1cmw6IFVSTCB8IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQodXJsLnRvU3RyaW5nKCksIHsgcmVzcG9uc2VUeXBlOiAndGV4dCcgfSkucGlwZShcbiAgICAgIG1hcCgodGV4dCkgPT4ge1xuICAgICAgICBjb25zdCBwYXJzZWQgPSBKU09OLnBhcnNlKHRleHQpXG5cbiAgICAgICAgaWYgKHR5cGVvZiBwYXJzZWQgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgcmV0dXJuIHBhcnNlZFxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZGVjb2RlZCA9IHRoaXMuZGVjb2RlQmFzZTY0KHBhcnNlZClcbiAgICAgICAgcmV0dXJuIEpTT04ucGFyc2UoZGVjb2RlZClcbiAgICAgIH0pXG4gICAgKVxuICB9XG5cbiAgZGVjb2RlQmFzZTY0KGJhc2U2NCkge1xuICAgIGNvbnN0IHRleHQgPSBhdG9iKGJhc2U2NClcbiAgICBjb25zdCBsZW5ndGggPSB0ZXh0Lmxlbmd0aFxuICAgIGNvbnN0IGJ5dGVzID0gbmV3IFVpbnQ4QXJyYXkobGVuZ3RoKVxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgIGJ5dGVzW2ldID0gdGV4dC5jaGFyQ29kZUF0KGkpXG4gICAgfVxuICAgIGNvbnN0IGRlY29kZXIgPSBuZXcgVGV4dERlY29kZXIoKVxuICAgIHJldHVybiBkZWNvZGVyLmRlY29kZShieXRlcylcbiAgfVxuXG4gIGF0dGFjaEZpbGVUb1JlY29yZChcbiAgICByZWNvcmRVdWlkOiBzdHJpbmcsXG4gICAgZmlsZTogRmlsZSxcbiAgICByZW1vdmVEdXBsaWNhdGUgPSBmYWxzZVxuICApOiBPYnNlcnZhYmxlPFVwbG9hZEV2ZW50PiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0UmVjb3JkQXR0YWNobWVudHMocmVjb3JkVXVpZCkucGlwZShcbiAgICAgIG1hcCgocmVjb3JkQXR0YWNobWVudHMpID0+IHJlY29yZEF0dGFjaG1lbnRzLm1hcCgocikgPT4gci5maWxlTmFtZSkpLFxuICAgICAgc3dpdGNoTWFwKChmaWxlTmFtZXMpID0+IHtcbiAgICAgICAgY29uc3QgZmlsZU5hbWUgPSBmaWxlLm5hbWVcblxuICAgICAgICBpZiAocmVtb3ZlRHVwbGljYXRlICYmIGZpbGVOYW1lcy5pbmNsdWRlcyhmaWxlLm5hbWUpKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMucmVjb3Jkc0FwaVNlcnZpY2UuZGVsUmVzb3VyY2UocmVjb3JkVXVpZCwgZmlsZU5hbWUpLnBpcGUoXG4gICAgICAgICAgICBzd2l0Y2hNYXAoKCkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBmaWxlQ29weSA9IG5ldyBGaWxlKFtmaWxlXSwgZmlsZU5hbWUsIHsgdHlwZTogZmlsZS50eXBlIH0pXG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLnVwbG9hZEZpbGUocmVjb3JkVXVpZCwgZmlsZUNvcHkpXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBmaW5hbEZpbGVOYW1lID0gbm9EdXBsaWNhdGVGaWxlTmFtZShmaWxlTmFtZSwgZmlsZU5hbWVzKVxuICAgICAgICAgIGNvbnN0IGZpbGVDb3B5ID0gbmV3IEZpbGUoW2ZpbGVdLCBmaW5hbEZpbGVOYW1lLCB7IHR5cGU6IGZpbGUudHlwZSB9KVxuICAgICAgICAgIHJldHVybiB0aGlzLnVwbG9hZEZpbGUocmVjb3JkVXVpZCwgZmlsZUNvcHkpXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKVxuICB9XG59XG4iXX0=
256
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ240LXBsYXRmb3JtLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FwaS9yZXBvc2l0b3J5L3NyYy9saWIvZ240L3BsYXRmb3JtL2duNC1wbGF0Zm9ybS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDMUMsT0FBTyxFQUNMLFVBQVUsRUFDVixNQUFNLEVBQ04sR0FBRyxFQUNILFFBQVEsRUFDUixXQUFXLEVBQ1gsR0FBRyxHQUNKLE1BQU0sZ0JBQWdCLENBQUE7QUFDdkIsT0FBTyxFQUNMLFlBQVksRUFDWixpQkFBaUIsRUFDakIsb0JBQW9CLEVBQ3BCLGNBQWMsRUFDZCxlQUFlLEVBQ2Ysc0JBQXNCLEVBQ3RCLGVBQWUsR0FDaEIsTUFBTSwrQ0FBK0MsQ0FBQTtBQVl0RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQTtBQUN6RCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sUUFBUSxDQUFBO0FBQzVCLE9BQU8sRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFNaEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMkNBQTJDLENBQUE7QUFDL0UsT0FBTyxFQUNMLGFBQWEsRUFDYixRQUFRLEVBRVIsRUFBRSxFQUNGLFNBQVMsRUFDVCxVQUFVLEdBQ1gsTUFBTSxNQUFNLENBQUE7QUFDYixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUN0RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQTs7Ozs7O0FBRTNFLE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQTtBQUc3QixNQUFNLE9BQU8sa0JBQWtCO0lBK0M3QixJQUFZLEtBQUs7UUFDZixPQUFPLGlCQUFpQixDQUFDLElBQUksQ0FBQyxn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QVEsQ0FBQyxDQUFDLEVBQ3BFLFNBQVMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFO1lBQ3RCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUE7WUFFMUIsSUFBSSxlQUFlLElBQUksU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDckQsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQ2xFLFNBQVMsQ0FBQyxHQUFHLEVBQUU7b0JBQ2IsTUFBTSxRQUFRLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxRQUFRLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUE7b0JBQ2hFLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUE7Z0JBQzlDLENBQUMsQ0FBQyxDQUNILENBQUE7WUFDSCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sTUFBTSxhQUFhLEdBQUcsbUJBQW1CLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFBO2dCQUM5RCxNQUFNLFFBQVEsR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLGFBQWEsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQTtnQkFDckUsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUMsQ0FBQTtZQUM5QyxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQ0gsQ0FBQTtJQUNILENBQUM7K0dBellVLGtCQUFrQjttSEFBbEIsa0JBQWtCOzs0RkFBbEIsa0JBQWtCO2tCQUQ5QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQge1xuICBjYXRjaEVycm9yLFxuICBmaWx0ZXIsXG4gIG1hcCxcbiAgbWVyZ2VNYXAsXG4gIHNoYXJlUmVwbGF5LFxuICB0YXAsXG59IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xuaW1wb3J0IHtcbiAgTWVBcGlTZXJ2aWNlLFxuICBSZWNvcmRzQXBpU2VydmljZSxcbiAgUmVnaXN0cmllc0FwaVNlcnZpY2UsXG4gIFNpdGVBcGlTZXJ2aWNlLFxuICBUb29sc0FwaVNlcnZpY2UsXG4gIFVzZXJmZWVkYmFja0FwaVNlcnZpY2UsXG4gIFVzZXJzQXBpU2VydmljZSxcbn0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kYXRhLWFjY2Vzcy9nbjQvc3JjJ1xuaW1wb3J0IHtcbiAgUGxhdGZvcm1TZXJ2aWNlSW50ZXJmYWNlLFxuICBVcGxvYWRFdmVudCxcbn0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vZG9tYWluL3NyYy9saWIvcGxhdGZvcm0uc2VydmljZS5pbnRlcmZhY2UnXG5pbXBvcnQgeyBVc2VyTW9kZWwgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9kb21haW4vc3JjL2xpYi9tb2RlbC91c2VyL3VzZXIubW9kZWwnXG5pbXBvcnQge1xuICBDYXRhbG9nUmVjb3JkLFxuICBLZXl3b3JkLFxuICBPcmdhbml6YXRpb24sXG4gIFVzZXJGZWVkYmFjayxcbn0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vZG9tYWluL3NyYy9saWIvbW9kZWwvcmVjb3JkJ1xuaW1wb3J0IHsgR240UGxhdGZvcm1NYXBwZXIgfSBmcm9tICcuL2duNC1wbGF0Zm9ybS5tYXBwZXInXG5pbXBvcnQgeyBsdHIgfSBmcm9tICdzZW12ZXInXG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwRXZlbnRUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnXG5pbXBvcnQge1xuICBLZXl3b3JkQXBpUmVzcG9uc2UsXG4gIFRoZXNhdXJ1c0FwaVJlc3BvbnNlLFxufSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FwaS9tZXRhZGF0YS1jb252ZXJ0ZXIvc3JjJ1xuaW1wb3J0IHsgS2V5d29yZFR5cGUgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9kb21haW4vc3JjL2xpYi9tb2RlbC90aGVzYXVydXMnXG5pbXBvcnQgeyBub0R1cGxpY2F0ZUZpbGVOYW1lIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy91dGlsL3NoYXJlZC9zcmMnXG5pbXBvcnQge1xuICBjb21iaW5lTGF0ZXN0LFxuICBmb3JrSm9pbixcbiAgT2JzZXJ2YWJsZSxcbiAgb2YsXG4gIHN3aXRjaE1hcCxcbiAgdGhyb3dFcnJvcixcbn0gZnJvbSAncnhqcydcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJ1xuaW1wb3J0IHsgZ2V0TGFuZzNGcm9tTGFuZzIgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3V0aWwvaTE4bi9zcmMnXG5cbmNvbnN0IG1pbkFwaVZlcnNpb24gPSAnNC4yLjInXG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBHbjRQbGF0Zm9ybVNlcnZpY2UgaW1wbGVtZW50cyBQbGF0Zm9ybVNlcnZpY2VJbnRlcmZhY2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IHR5cGUgPSAnR2VvTmV0d29yaydcbiAgcHJpdmF0ZSByZWFkb25seSBtZSQ6IE9ic2VydmFibGU8VXNlck1vZGVsPlxuICBwcml2YXRlIHJlYWRvbmx5IHVzZXJzJDogT2JzZXJ2YWJsZTxVc2VyTW9kZWxbXT5cbiAgcHJpdmF0ZSByZWFkb25seSBpc1VzZXJBbm9ueW1vdXMkOiBPYnNlcnZhYmxlPGJvb2xlYW4+XG4gIHByaXZhdGUgcmVhZG9ubHkgZ25QYXJzZVZlcnNpb24gPSAnNC4yLjUnXG5cbiAgcHJpdmF0ZSBrZXlUcmFuc2xhdGlvbnMkID0gdGhpcy50b29sc0FwaVNlcnZpY2VcbiAgICAuZ2V0VHJhbnNsYXRpb25zUGFja2FnZTEoJ2dudWknKVxuICAgIC5waXBlKFxuICAgICAgY2F0Y2hFcnJvcigoKSA9PiB7XG4gICAgICAgIGNvbnNvbGUud2FybignRXJyb3Igd2hpbGUgbG9hZGluZyBnbnVpIGxhbmd1YWdlIHBhY2thZ2UnKVxuICAgICAgICByZXR1cm4gb2Yoe30pXG4gICAgICB9KSxcbiAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgKVxuXG4gIHByaXZhdGUgc2V0dGluZ3MkID0gb2YodHJ1ZSkucGlwZShcbiAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5zaXRlQXBpU2VydmljZS5nZXRTaXRlT3JQb3J0YWxEZXNjcmlwdGlvbigpKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApXG5cbiAgcHJpdmF0ZSByZWFkb25seSBhcGlWZXJzaW9uJCA9IHRoaXMuc2V0dGluZ3MkLnBpcGUoXG4gICAgbWFwKChpbmZvKSA9PiBpbmZvWydzeXN0ZW0vcGxhdGZvcm0vdmVyc2lvbiddIGFzIHN0cmluZyksXG4gICAgdGFwKCh2ZXJzaW9uKSA9PiB7XG4gICAgICBpZiAobHRyKHZlcnNpb24sIG1pbkFwaVZlcnNpb24pKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgR240IEFQSSB2ZXJzaW9uIGlzIG5vdCBjb21wYXRpYmxlLlxcbk1pbmltdW06ICR7bWluQXBpVmVyc2lvbn1cXG5Zb3VyIHZlcnNpb246ICR7dmVyc2lvbn1gXG4gICAgICAgIClcbiAgICAgIH1cbiAgICB9KSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApXG5cbiAgcHJpdmF0ZSByZWFkb25seSBhbGxvd0VkaXRIYXJ2ZXN0ZWRNZCQgPSB0aGlzLnNldHRpbmdzJC5waXBlKFxuICAgIG1hcCgoaW5mbykgPT4ge1xuICAgICAgcmV0dXJuIGluZm9bJ3N5c3RlbS9oYXJ2ZXN0ZXIvZW5hYmxlRWRpdGluZyddIGFzIGJvb2xlYW5cbiAgICB9KSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApXG5cbiAgLyoqXG4gICAqIEEgbWFwIG9mIGFscmVhZHkgbG9hZGVkIHRoZXNhdXJpIChncm91cHMgb2Yga2V5d29yZHMpOyB0aGUga2V5IGlzIGEgVVJJXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIGtleXdvcmRzQnlUaGVzYXVyaTogUmVjb3JkPHN0cmluZywgT2JzZXJ2YWJsZTxLZXl3b3JkW10+PiA9IHt9XG5cbiAgcHJpdmF0ZSBnZXQgbGFuZzMoKSB7XG4gICAgcmV0dXJuIGdldExhbmczRnJvbUxhbmcyKHRoaXMudHJhbnNsYXRlU2VydmljZS5jdXJyZW50TGFuZylcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgc2l0ZUFwaVNlcnZpY2U6IFNpdGVBcGlTZXJ2aWNlLFxuICAgIHByaXZhdGUgbWVBcGk6IE1lQXBpU2VydmljZSxcbiAgICBwcml2YXRlIHVzZXJzQXBpOiBVc2Vyc0FwaVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBtYXBwZXI6IEduNFBsYXRmb3JtTWFwcGVyLFxuICAgIHByaXZhdGUgdG9vbHNBcGlTZXJ2aWNlOiBUb29sc0FwaVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWdpc3RyaWVzQXBpU2VydmljZTogUmVnaXN0cmllc0FwaVNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgdXNlcmZlZWRiYWNrQXBpU2VydmljZTogVXNlcmZlZWRiYWNrQXBpU2VydmljZSxcbiAgICBwcml2YXRlIGh0dHBDbGllbnQ6IEh0dHBDbGllbnQsXG4gICAgcHJpdmF0ZSByZWNvcmRzQXBpU2VydmljZTogUmVjb3Jkc0FwaVNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5tZSQgPSB0aGlzLm1lQXBpLmdldE1lKCkucGlwZShcbiAgICAgIHN3aXRjaE1hcCgoYXBpVXNlcikgPT4gdGhpcy5tYXBwZXIudXNlckZyb21NZUFwaShhcGlVc2VyKSksXG4gICAgICBzaGFyZVJlcGxheSh7IGJ1ZmZlclNpemU6IDEsIHJlZkNvdW50OiB0cnVlIH0pXG4gICAgKVxuXG4gICAgdGhpcy5pc1VzZXJBbm9ueW1vdXMkID0gdGhpcy5tZSQucGlwZShcbiAgICAgIG1hcCgodXNlcikgPT4gIXVzZXIgfHwgISgnaWQnIGluIHVzZXIpKVxuICAgIClcblxuICAgIHRoaXMudXNlcnMkID0gdGhpcy51c2Vyc0FwaS5nZXRVc2VycygpLnBpcGUoXG4gICAgICBtYXAoKHVzZXJzKSA9PiB1c2Vycy5tYXAoKHVzZXIpID0+IHRoaXMubWFwcGVyLnVzZXJGcm9tQXBpKHVzZXIpKSksXG4gICAgICBzaGFyZVJlcGxheSgpXG4gICAgKVxuICB9XG5cbiAgZ2V0VHlwZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnR5cGVcbiAgfVxuXG4gIGdldEFwaVZlcnNpb24oKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5hcGlWZXJzaW9uJFxuICB9XG5cbiAgZ2V0QWxsb3dFZGl0SGFydmVzdGVkTWQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuYWxsb3dFZGl0SGFydmVzdGVkTWQkXG4gIH1cblxuICBnZXRNZSgpOiBPYnNlcnZhYmxlPFVzZXJNb2RlbD4ge1xuICAgIHJldHVybiB0aGlzLm1lJFxuICB9XG5cbiAgaXNBbm9ueW1vdXMoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuaXNVc2VyQW5vbnltb3VzJFxuICB9XG5cbiAgZ2V0T3JnYW5pemF0aW9ucygpOiBPYnNlcnZhYmxlPE9yZ2FuaXphdGlvbltdPiB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9XG5cbiAgZ2V0VXNlcnNCeU9yZ2FuaXphdGlvbihvcmdhbmlzYXRpb246IE9yZ2FuaXphdGlvbik6IE9ic2VydmFibGU8VXNlck1vZGVsW10+IHtcbiAgICByZXR1cm4gdW5kZWZpbmVkXG4gIH1cblxuICBnZXRVc2VycygpOiBPYnNlcnZhYmxlPFVzZXJNb2RlbFtdPiB7XG4gICAgcmV0dXJuIHRoaXMudXNlcnMkXG4gIH1cblxuICB0cmFuc2xhdGVLZXkoa2V5OiBzdHJpbmcpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIC8vIGlmIHRoZSBrZXkgaXMgYSBVUkksIHVzZSB0aGUgcmVnaXN0cmllcyBBUEkgdG8gbG9vayBmb3IgdGhlIHRyYW5zbGF0aW9uXG4gICAgaWYgKGtleS5tYXRjaCgvXmh0dHBzPzpcXC9cXC8vKSkge1xuICAgICAgLy8gdGhlIHRoZXNhdXJ1cyBVUkkgaXMgaW5mZXJyZWQgYnkgcmVtb3ZpbmcgYSBwYXJ0IG9mIHRoZSBrZXl3b3JkIFVSSVxuICAgICAgLy8gdGhpcyBpcyBub3QgZXhhY3Qgc2NpZW5jZSBidXQgaXQncyBPSywgd2UnbGwgc3RpbGwgZW5kIHVwIGxvYWRpbmcgYSBidW5jaCBvZiBrZXl3b3JkcyBhdCBvbmNlIGFueXdheVxuICAgICAgY29uc3QgdGhlc2F1cnVzVXJpID0ga2V5LnJlcGxhY2UoL1xcLyhbXi9dKykkLywgJy8nKVxuICAgICAgcmV0dXJuIHRoaXMuZ2V0S2V5d29yZHNCeVVyaSh0aGVzYXVydXNVcmkpLnBpcGUoXG4gICAgICAgIG1hcCgodGhlc2F1cnVzKSA9PiB7XG4gICAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIHRoZXNhdXJ1cykge1xuICAgICAgICAgICAgaWYgKGl0ZW0ua2V5ID09PSBrZXkpIHJldHVybiBpdGVtLmxhYmVsXG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBrZXlcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMua2V5VHJhbnNsYXRpb25zJC5waXBlKG1hcCgodHJhbnNsYXRpb25zKSA9PiB0cmFuc2xhdGlvbnNba2V5XSkpXG4gIH1cblxuICBwcml2YXRlIGFsbFRoZXNhdXJ1cyQgPSB0aGlzLmh0dHBDbGllbnRcbiAgICAuZ2V0KFxuICAgICAgYCR7dGhpcy5yZWdpc3RyaWVzQXBpU2VydmljZS5jb25maWd1cmF0aW9uLmJhc2VQYXRofS90aGVzYXVydXM/X2NvbnRlbnRfdHlwZT1qc29uYFxuICAgIClcbiAgICAucGlwZShcbiAgICAgIG1hcCgodGhlc2F1cnVzKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGVzYXVydXNbMF0gYXMgVGhlc2F1cnVzQXBpUmVzcG9uc2VbXVxuICAgICAgfSksXG4gICAgICBzaGFyZVJlcGxheSgxKVxuICAgIClcblxuICBzZWFyY2hLZXl3b3JkcyhcbiAgICBxdWVyeTogc3RyaW5nLFxuICAgIGtleXdvcmRUeXBlczogS2V5d29yZFR5cGVbXVxuICApOiBPYnNlcnZhYmxlPEtleXdvcmRbXT4ge1xuICAgIGNvbnN0IGtleXdvcmRzJDogT2JzZXJ2YWJsZTxLZXl3b3JkQXBpUmVzcG9uc2VbXT4gPSB0aGlzLmFsbFRoZXNhdXJ1cyQucGlwZShcbiAgICAgIHN3aXRjaE1hcCgodGhlc2F1cnVzKSA9PiB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkVGhlc2F1cmkgPSBbXVxuICAgICAgICBrZXl3b3JkVHlwZXMubWFwKChrZXl3b3JkVHlwZSkgPT4ge1xuICAgICAgICAgIHNlbGVjdGVkVGhlc2F1cmkucHVzaChcbiAgICAgICAgICAgIC4uLnRoZXNhdXJ1cy5maWx0ZXIoKHRoZXMpID0+IHRoZXMuZG5hbWUgPT09IGtleXdvcmRUeXBlKVxuICAgICAgICAgIClcbiAgICAgICAgfSlcblxuICAgICAgICByZXR1cm4gdGhpcy5yZWdpc3RyaWVzQXBpU2VydmljZS5zZWFyY2hLZXl3b3JkcyhcbiAgICAgICAgICBxdWVyeSxcbiAgICAgICAgICB0aGlzLmxhbmczLFxuICAgICAgICAgIDEwLFxuICAgICAgICAgIDAsXG4gICAgICAgICAgbnVsbCxcbiAgICAgICAgICBzZWxlY3RlZFRoZXNhdXJpLm1hcCgodGhlcykgPT4gdGhlcy5rZXkpLFxuICAgICAgICAgIG51bGwsXG4gICAgICAgICAgYCoke3F1ZXJ5fSpgXG4gICAgICAgICkgYXMgT2JzZXJ2YWJsZTxLZXl3b3JkQXBpUmVzcG9uc2VbXT5cbiAgICAgIH0pXG4gICAgKVxuXG4gICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QoW2tleXdvcmRzJCwgdGhpcy5hbGxUaGVzYXVydXMkXSkucGlwZShcbiAgICAgIG1hcCgoW2tleXdvcmRzLCB0aGVzYXVydXNdKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLm1hcHBlci5rZXl3b3Jkc0Zyb21BcGkoa2V5d29yZHMsIHRoZXNhdXJ1cywgdGhpcy5sYW5nMylcbiAgICAgIH0pXG4gICAgKVxuICB9XG5cbiAgZ2V0S2V5d29yZHNCeVVyaSh1cmk6IHN0cmluZyk6IE9ic2VydmFibGU8S2V5d29yZFtdPiB7XG4gICAgaWYgKHRoaXMua2V5d29yZHNCeVRoZXNhdXJpW3VyaV0pIHtcbiAgICAgIHJldHVybiB0aGlzLmtleXdvcmRzQnlUaGVzYXVyaVt1cmldXG4gICAgfVxuICAgIGNvbnN0IGtleXdvcmRzJCA9IHRoaXMucmVnaXN0cmllc0FwaVNlcnZpY2Uuc2VhcmNoS2V5d29yZHMoXG4gICAgICBudWxsLFxuICAgICAgdGhpcy5sYW5nMyxcbiAgICAgIDEwMDAsXG4gICAgICAwLFxuICAgICAgbnVsbCxcbiAgICAgIG51bGwsXG4gICAgICBudWxsLFxuICAgICAgYCR7dXJpfSpgXG4gICAgKSBhcyBPYnNlcnZhYmxlPEtleXdvcmRBcGlSZXNwb25zZVtdPlxuXG4gICAgdGhpcy5rZXl3b3Jkc0J5VGhlc2F1cmlbdXJpXSA9IGNvbWJpbmVMYXRlc3QoW1xuICAgICAga2V5d29yZHMkLFxuICAgICAgdGhpcy5hbGxUaGVzYXVydXMkLFxuICAgIF0pLnBpcGUoXG4gICAgICBtYXAoKFtrZXl3b3JkcywgdGhlc2F1cnVzXSkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5tYXBwZXIua2V5d29yZHNGcm9tQXBpKGtleXdvcmRzLCB0aGVzYXVydXMsIHRoaXMubGFuZzMpXG4gICAgICB9KSxcbiAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgKVxuXG4gICAgcmV0dXJuIHRoaXMua2V5d29yZHNCeVRoZXNhdXJpW3VyaV1cbiAgfVxuXG4gIHNlYXJjaEtleXdvcmRzSW5UaGVzYXVydXMocXVlcnk6IHN0cmluZywgdGhlc2F1cnVzSWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmFsbFRoZXNhdXJ1cyQucGlwZShcbiAgICAgIHN3aXRjaE1hcCgodGhlc2F1cmkpID0+IHtcbiAgICAgICAgY29uc3Qgc3RyaXBwZWRUaGVzYXVydXNJZCA9IHRoZXNhdXJ1c0lkLnJlcGxhY2UoXG4gICAgICAgICAgJ2dlb25ldHdvcmsudGhlc2F1cnVzLicsXG4gICAgICAgICAgJydcbiAgICAgICAgKVxuICAgICAgICBpZiAoIXRoZXNhdXJpLmZpbmQoKHRoZXMpID0+IHRoZXMua2V5ID09PSBzdHJpcHBlZFRoZXNhdXJ1c0lkKSlcbiAgICAgICAgICByZXR1cm4gb2YoW10pXG4gICAgICAgIHJldHVybiB0aGlzLnJlZ2lzdHJpZXNBcGlTZXJ2aWNlXG4gICAgICAgICAgLnNlYXJjaEtleXdvcmRzKFxuICAgICAgICAgICAgcXVlcnksXG4gICAgICAgICAgICB0aGlzLmxhbmczLFxuICAgICAgICAgICAgMTAwLFxuICAgICAgICAgICAgMCxcbiAgICAgICAgICAgIG51bGwsXG4gICAgICAgICAgICBbc3RyaXBwZWRUaGVzYXVydXNJZF0sXG4gICAgICAgICAgICBudWxsXG4gICAgICAgICAgKVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgbWFwKChrZXl3b3JkczogS2V5d29yZEFwaVJlc3BvbnNlW10pID0+XG4gICAgICAgICAgICAgIHRoaXMubWFwcGVyLmtleXdvcmRzRnJvbUFwaShrZXl3b3JkcywgdGhlc2F1cmksIHRoaXMubGFuZzMpXG4gICAgICAgICAgICApXG4gICAgICAgICAgKVxuICAgICAgfSlcbiAgICApXG4gIH1cblxuICBnZXRVc2VyRmVlZGJhY2tzKHV1aWQ6IHN0cmluZyk6IE9ic2VydmFibGU8VXNlckZlZWRiYWNrW10+IHtcbiAgICByZXR1cm4gdGhpcy51c2VyZmVlZGJhY2tBcGlTZXJ2aWNlLmdldFVzZXJDb21tZW50cyh1dWlkKS5waXBlKFxuICAgICAgbWFwKCh1c2VyRmVlZGJhY2tzKSA9PlxuICAgICAgICB1c2VyRmVlZGJhY2tzLm1hcCh0aGlzLm1hcHBlci51c2VyRmVlZGJhY2tzRnJvbUFwaSlcbiAgICAgICksXG4gICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBmZXRjaGluZyB1c2VyIGZlZWRiYWNrczonLCBlcnJvcilcbiAgICAgICAgcmV0dXJuIG9mKHVuZGVmaW5lZClcbiAgICAgIH0pXG4gICAgKVxuICB9XG5cbiAgcG9zdFVzZXJGZWVkYmFja3ModXNlckZlZWRiYWNrOiBVc2VyRmVlZGJhY2spOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICBjb25zdCBtYXBwZWRVc2VyRmVlZEJhY2sgPSB0aGlzLm1hcHBlci51c2VyRmVlZGJhY2tzVG9BcGkodXNlckZlZWRiYWNrKVxuICAgIHJldHVybiB0aGlzLnVzZXJmZWVkYmFja0FwaVNlcnZpY2UubmV3VXNlckZlZWRiYWNrKG1hcHBlZFVzZXJGZWVkQmFjaykucGlwZShcbiAgICAgIG1hcCgoKSA9PiB1bmRlZmluZWQpLFxuICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgcG9zdGluZyB1c2VyIGZlZWRiYWNrOicsIGVycm9yKVxuICAgICAgICByZXR1cm4gb2YodW5kZWZpbmVkKVxuICAgICAgfSlcbiAgICApXG4gIH1cblxuICBnZXRSZWNvcmRBdHRhY2htZW50cyhyZWNvcmRVdWlkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5yZWNvcmRzQXBpU2VydmljZS5nZXRBbGxSZXNvdXJjZXMocmVjb3JkVXVpZCkucGlwZShcbiAgICAgIG1hcCgocmVzb3VyY2VzKSA9PlxuICAgICAgICByZXNvdXJjZXMubWFwKChyKSA9PiAoe1xuICAgICAgICAgIHVybDogbmV3IFVSTChyLnVybCksXG4gICAgICAgICAgZmlsZU5hbWU6IHIuZmlsZW5hbWUsXG4gICAgICAgIH0pKVxuICAgICAgKVxuICAgIClcbiAgfVxuXG4gIGNsZWFuUmVjb3JkQXR0YWNobWVudHMocmVjb3JkOiBDYXRhbG9nUmVjb3JkKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy5yZWNvcmRzQXBpU2VydmljZS5nZXRBc3NvY2lhdGVkUmVzb3VyY2VzKHJlY29yZC51bmlxdWVJZGVudGlmaWVyKSxcbiAgICAgIHRoaXMucmVjb3Jkc0FwaVNlcnZpY2UuZ2V0QWxsUmVzb3VyY2VzKHJlY29yZC51bmlxdWVJZGVudGlmaWVyKSxcbiAgICBdKS5waXBlKFxuICAgICAgbWFwKChbYXNzb2NpYXRlZCwgYXR0YWNobWVudHNdKSA9PiB7XG4gICAgICAgIGNvbnN0IHsgb25saW5lcyA9IFtdLCB0aHVtYm5haWxzID0gW10gfSA9IGFzc29jaWF0ZWRcblxuICAgICAgICBjb25zdCB1cmxzVG9LZWVwID0gW1xuICAgICAgICAgIC4uLihBcnJheS5pc0FycmF5KG9ubGluZXMpID8gb25saW5lcyA6IFtdKSxcbiAgICAgICAgICAuLi4oQXJyYXkuaXNBcnJheSh0aHVtYm5haWxzKSA/IHRodW1ibmFpbHMgOiBbXSksXG4gICAgICAgIF0ubWFwKChyZXNvdXJjZSkgPT4gT2JqZWN0LnZhbHVlcyhyZXNvdXJjZS51cmwpWzBdKVxuICAgICAgICBjb25zdCBmaWxlVG9EZWxldGUgPSBhdHRhY2htZW50cy5yZWR1Y2U8c3RyaW5nW10+KChhY2MsIGF0dGFjaG1lbnQpID0+IHtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAhdXJsc1RvS2VlcC5pbmNsdWRlcyhhdHRhY2htZW50LnVybCkgJiZcbiAgICAgICAgICAgIGF0dGFjaG1lbnQuZmlsZW5hbWUgIT09ICdkYXRhdml6Q29uZmlnLmpzb24nXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBhY2MucHVzaChhdHRhY2htZW50LmZpbGVuYW1lKVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gYWNjXG4gICAgICAgIH0sIFtdKVxuXG4gICAgICAgIHJldHVybiBmaWxlVG9EZWxldGVcbiAgICAgIH0pLFxuICAgICAgbWVyZ2VNYXAoKGZpbGVzVG9EZWxldGUpID0+XG4gICAgICAgIGZpbGVzVG9EZWxldGUubGVuZ3RoXG4gICAgICAgICAgPyBmb3JrSm9pbihcbiAgICAgICAgICAgICAgZmlsZXNUb0RlbGV0ZS5tYXAoKGZpbGVuYW1lKSA9PlxuICAgICAgICAgICAgICAgIHRoaXMucmVjb3Jkc0FwaVNlcnZpY2UuZGVsUmVzb3VyY2UoXG4gICAgICAgICAgICAgICAgICByZWNvcmQudW5pcXVlSWRlbnRpZmllcixcbiAgICAgICAgICAgICAgICAgIGZpbGVuYW1lXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLnBpcGUobWFwKCgpID0+IHVuZGVmaW5lZCkpXG4gICAgICAgICAgOiBvZih1bmRlZmluZWQpXG4gICAgICApLFxuICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3Igd2hpbGUgY2xlYW5pbmcgYXR0YWNobWVudHM6JywgZXJyb3IpXG4gICAgICAgIHRocm93IGVycm9yXG4gICAgICB9KVxuICAgIClcbiAgfVxuXG4gIHByaXZhdGUgdXBsb2FkRmlsZShyZWNvcmRVdWlkOiBzdHJpbmcsIGZpbGU6IEZpbGUpOiBPYnNlcnZhYmxlPFVwbG9hZEV2ZW50PiB7XG4gICAgbGV0IHNpemVCeXRlcyA9IC0xXG4gICAgcmV0dXJuIHRoaXMucmVjb3Jkc0FwaVNlcnZpY2VcbiAgICAgIC5wdXRSZXNvdXJjZShyZWNvcmRVdWlkLCBmaWxlLCAncHVibGljJywgdW5kZWZpbmVkLCAnZXZlbnRzJywgdHJ1ZSlcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKGV2ZW50KSA9PiB7XG4gICAgICAgICAgaWYgKGV2ZW50LnR5cGUgPT09IEh0dHBFdmVudFR5cGUuVXBsb2FkUHJvZ3Jlc3MpIHtcbiAgICAgICAgICAgIHNpemVCeXRlcyA9IGV2ZW50LnRvdGFsXG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICB0eXBlOiAncHJvZ3Jlc3MnLFxuICAgICAgICAgICAgICBwcm9ncmVzczogZXZlbnQudG90YWxcbiAgICAgICAgICAgICAgICA/IE1hdGgucm91bmQoKDEwMCAqIGV2ZW50LmxvYWRlZCkgLyBldmVudC50b3RhbClcbiAgICAgICAgICAgICAgICA6IDAsXG4gICAgICAgICAgICB9IGFzIFVwbG9hZEV2ZW50XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChldmVudC50eXBlID09PSBIdHRwRXZlbnRUeXBlLlJlc3BvbnNlKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICB0eXBlOiAnc3VjY2VzcycsXG4gICAgICAgICAgICAgIGF0dGFjaG1lbnQ6IHtcbiAgICAgICAgICAgICAgICB1cmw6IG5ldyBVUkwoZXZlbnQuYm9keS51cmwpLFxuICAgICAgICAgICAgICAgIGZpbGVOYW1lOiBldmVudC5ib2R5LmZpbGVuYW1lLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBzaXplQnl0ZXMsXG4gICAgICAgICAgICB9IGFzIFVwbG9hZEV2ZW50XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICAgICAgfSksXG4gICAgICAgIGZpbHRlcigoZXZlbnQpID0+ICEhZXZlbnQpLFxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xuICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKFxuICAgICAgICAgICAgKCkgPT4gbmV3IEVycm9yKGVycm9yLmVycm9yPy5tZXNzYWdlID8/IGVycm9yLm1lc3NhZ2UpXG4gICAgICAgICAgKVxuICAgICAgICB9KVxuICAgICAgKVxuICB9XG4gIGdldEZpbGVDb250ZW50KHVybDogVVJMIHwgc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gY29tYmluZUxhdGVzdChbXG4gICAgICB0aGlzLmh0dHBDbGllbnQuZ2V0KHVybC50b1N0cmluZygpLCB7IHJlc3BvbnNlVHlwZTogJ3RleHQnIH0pLFxuICAgICAgdGhpcy5nZXRBcGlWZXJzaW9uKCksXG4gICAgXSkucGlwZShcbiAgICAgIG1hcCgoW3RleHQsIHZlcnNpb25dKSA9PiB7XG4gICAgICAgIGNvbnN0IHBhcnNlZCA9IEpTT04ucGFyc2UodGV4dClcblxuICAgICAgICBpZiAodmVyc2lvbiA+IHRoaXMuZ25QYXJzZVZlcnNpb24pIHtcbiAgICAgICAgICByZXR1cm4gcGFyc2VkXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBkZWNvZGVkID0gdGhpcy5kZWNvZGVCYXNlNjQocGFyc2VkKVxuICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShkZWNvZGVkKVxuICAgICAgfSlcbiAgICApXG4gIH1cblxuICBkZWNvZGVCYXNlNjQoYmFzZTY0KSB7XG4gICAgY29uc3QgdGV4dCA9IGF0b2IoYmFzZTY0KVxuICAgIGNvbnN0IGxlbmd0aCA9IHRleHQubGVuZ3RoXG4gICAgY29uc3QgYnl0ZXMgPSBuZXcgVWludDhBcnJheShsZW5ndGgpXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgYnl0ZXNbaV0gPSB0ZXh0LmNoYXJDb2RlQXQoaSlcbiAgICB9XG4gICAgY29uc3QgZGVjb2RlciA9IG5ldyBUZXh0RGVjb2RlcigpXG4gICAgcmV0dXJuIGRlY29kZXIuZGVjb2RlKGJ5dGVzKVxuICB9XG5cbiAgYXR0YWNoRmlsZVRvUmVjb3JkKFxuICAgIHJlY29yZFV1aWQ6IHN0cmluZyxcbiAgICBmaWxlOiBGaWxlLFxuICAgIHJlbW92ZUR1cGxpY2F0ZSA9IGZhbHNlXG4gICk6IE9ic2VydmFibGU8VXBsb2FkRXZlbnQ+IHtcbiAgICByZXR1cm4gdGhpcy5nZXRSZWNvcmRBdHRhY2htZW50cyhyZWNvcmRVdWlkKS5waXBlKFxuICAgICAgbWFwKChyZWNvcmRBdHRhY2htZW50cykgPT4gcmVjb3JkQXR0YWNobWVudHMubWFwKChyKSA9PiByLmZpbGVOYW1lKSksXG4gICAgICBzd2l0Y2hNYXAoKGZpbGVOYW1lcykgPT4ge1xuICAgICAgICBjb25zdCBmaWxlTmFtZSA9IGZpbGUubmFtZVxuXG4gICAgICAgIGlmIChyZW1vdmVEdXBsaWNhdGUgJiYgZmlsZU5hbWVzLmluY2x1ZGVzKGZpbGUubmFtZSkpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5yZWNvcmRzQXBpU2VydmljZS5kZWxSZXNvdXJjZShyZWNvcmRVdWlkLCBmaWxlTmFtZSkucGlwZShcbiAgICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IGZpbGVDb3B5ID0gbmV3IEZpbGUoW2ZpbGVdLCBmaWxlTmFtZSwgeyB0eXBlOiBmaWxlLnR5cGUgfSlcbiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudXBsb2FkRmlsZShyZWNvcmRVdWlkLCBmaWxlQ29weSlcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IGZpbmFsRmlsZU5hbWUgPSBub0R1cGxpY2F0ZUZpbGVOYW1lKGZpbGVOYW1lLCBmaWxlTmFtZXMpXG4gICAgICAgICAgY29uc3QgZmlsZUNvcHkgPSBuZXcgRmlsZShbZmlsZV0sIGZpbmFsRmlsZU5hbWUsIHsgdHlwZTogZmlsZS50eXBlIH0pXG4gICAgICAgICAgcmV0dXJuIHRoaXMudXBsb2FkRmlsZShyZWNvcmRVdWlkLCBmaWxlQ29weSlcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApXG4gIH1cbn1cbiJdfQ==
@@ -51,4 +51,14 @@ export const RecordStatusValues = [
51
51
  'planned',
52
52
  'required',
53
53
  ];
54
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0YWRhdGEubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9kb21haW4vc3JjL2xpYi9tb2RlbC9yZWNvcmQvbWV0YWRhdGEubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHlDQUF5QyxDQUFBO0FBZ0JoRSxNQUFNLENBQUMsdUNBQXVDLENBQUMsQ0FBQTtBQUMvQyxNQUFNLENBQUMsMENBQTBDLENBQUMsQ0FBQTtBQUNsRCxNQUFNLENBQUMsd0NBQXdDLENBQUMsQ0FBQTtBQUNoRCxNQUFNLENBQUMseUNBQXlDLENBQUMsQ0FBQTtBQUNqRCxNQUFNLENBQUMseUNBQXlDLENBQUMsQ0FBQTtBQUNqRCxNQUFNLENBQUMsd0NBQXdDLENBQUMsQ0FBQTtBQUVoRCxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRztJQUN2QyxTQUFTO0lBQ1QsWUFBWTtJQUNaLFVBQVU7SUFDVixXQUFXO0lBQ1gsV0FBVztJQUNYLFVBQVU7SUFDVixPQUFPO0lBQ1AsUUFBUTtJQUNSLGFBQWE7SUFDYixhQUFhO0lBQ2IsU0FBUztJQUNULFdBQVc7SUFDWCxZQUFZO0lBQ1osVUFBVTtJQUNWLFlBQVk7Q0FDSixDQUFBO0FBSVYsTUFBTSxDQUFDLG1DQUFtQyxDQUFDLENBQUE7QUFDM0MsTUFBTSxDQUFDLG9DQUFvQyxDQUFDLENBQUE7QUFDNUMsTUFBTSxDQUFDLHFDQUFxQyxDQUFDLENBQUE7QUFDN0MsTUFBTSxDQUFDLG9DQUFvQyxDQUFDLENBQUE7QUFFNUMsTUFBTSxDQUFDLHFDQUFxQyxDQUFDLENBQUE7QUFDN0MsTUFBTSxDQUFDLHNDQUFzQyxDQUFDLENBQUE7QUFDOUMsTUFBTSxDQUFDLDJDQUEyQyxDQUFDLENBQUE7QUFDbkQsTUFBTSxDQUFDLHVDQUF1QyxDQUFDLENBQUE7QUFDL0MsTUFBTSxDQUFDLHlDQUF5QyxDQUFDLENBQUE7QUFDakQsTUFBTSxDQUFDLDBDQUEwQyxDQUFDLENBQUE7QUFDbEQsTUFBTSxDQUFDLHdDQUF3QyxDQUFDLENBQUE7QUFDaEQsTUFBTSxDQUFDLDJDQUEyQyxDQUFDLENBQUE7QUFDbkQsTUFBTSxDQUFDLDBDQUEwQyxDQUFDLENBQUE7QUFVbEQsTUFBTSxDQUFDLGdDQUFnQyxDQUFDLENBQUE7QUFDeEMsTUFBTSxDQUFDLDhCQUE4QixDQUFDLENBQUE7QUFDdEMsTUFBTSxDQUFDLHdDQUF3QyxDQUFDLENBQUE7QUFDaEQsTUFBTSxDQUFDLGlDQUFpQyxDQUFDLENBQUE7QUFDekMsTUFBTSxDQUFDLDhCQUE4QixDQUFDLENBQUE7QUFDdEMsTUFBTSxDQUFDLDhCQUE4QixDQUFDLENBQUE7QUFDdEMsTUFBTSxDQUFDLCtCQUErQixDQUFDLENBQUE7QUFFdkMsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUc7SUFDaEMsV0FBVztJQUNYLFNBQVM7SUFDVCxtQkFBbUI7SUFDbkIsWUFBWTtJQUNaLFNBQVM7SUFDVCxTQUFTO0lBQ1QsVUFBVTtDQUNYLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBtYXJrZXIgfSBmcm9tICdAYmllc2JqZXJnL25neC10cmFuc2xhdGUtZXh0cmFjdC1tYXJrZXInXG5pbXBvcnQgdHlwZSB7IEluZGl2aWR1YWwgfSBmcm9tICcuL2NvbnRhY3QubW9kZWwnXG5pbXBvcnQgdHlwZSB7IE9yZ2FuaXphdGlvbiB9IGZyb20gJy4vb3JnYW5pemF0aW9uLm1vZGVsJ1xuaW1wb3J0IHR5cGUgeyBHZW9tZXRyeSB9IGZyb20gJ2dlb2pzb24nXG5pbXBvcnQgeyBLZXl3b3JkVHlwZSwgVGhlc2F1cnVzTW9kZWwgfSBmcm9tICcuLi90aGVzYXVydXMnXG5pbXBvcnQge1xuICBDb25zdHJhaW50VHJhbnNsYXRpb25zLFxuICBLZXl3b3JkVHJhbnNsYXRpb25zLFxuICBMYW5ndWFnZUNvZGUsXG4gIE9ubGluZVJlc291cmNlVHJhbnNsYXRpb25zLFxuICBSZWNvcmRUcmFuc2xhdGlvbnMsXG4gIFNwYXRpYWxFeHRlbnRUcmFuc2xhdGlvbnMsXG59IGZyb20gJy4vdHJhbnNsYXRpb24ubW9kZWwnXG5cbnR5cGUgVXVpZCA9IHN0cmluZ1xuXG5tYXJrZXIoJ2RvbWFpbi5yZWNvcmQudXBkYXRlRnJlcXVlbmN5LnVua25vd24nKVxubWFya2VyKCdkb21haW4ucmVjb3JkLnVwZGF0ZUZyZXF1ZW5jeS5ub3RQbGFubmVkJylcbm1hcmtlcignZG9tYWluLnJlY29yZC51cGRhdGVGcmVxdWVuY3kuYXNOZWVkZWQnKVxubWFya2VyKCdkb21haW4ucmVjb3JkLnVwZGF0ZUZyZXF1ZW5jeS5pcnJlZ3VsYXInKVxubWFya2VyKCdkb21haW4ucmVjb3JkLnVwZGF0ZUZyZXF1ZW5jeS5jb250aW51YWwnKVxubWFya2VyKCdkb21haW4ucmVjb3JkLnVwZGF0ZUZyZXF1ZW5jeS5wZXJpb2RpYycpXG5cbmV4cG9ydCBjb25zdCB1cGRhdGVGcmVxdWVuY3lDb2RlVmFsdWVzID0gW1xuICAndW5rbm93bicsXG4gICdub3RQbGFubmVkJyxcbiAgJ2FzTmVlZGVkJyxcbiAgJ2lycmVndWxhcicsXG4gICdjb250aW51YWwnLFxuICAncGVyaW9kaWMnLFxuICAnZGFpbHknLFxuICAnd2Vla2x5JyxcbiAgJ2ZvcnRuaWdodGx5JyxcbiAgJ3NlbWltb250aGx5JyxcbiAgJ21vbnRobHknLFxuICAncXVhcnRlcmx5JyxcbiAgJ2JpYW5udWFsbHknLFxuICAnYW5udWFsbHknLFxuICAnYmllbm5pYWxseScsXG5dIGFzIGNvbnN0XG5cbmV4cG9ydCB0eXBlIFVwZGF0ZUZyZXF1ZW5jeUNvZGUgPSAodHlwZW9mIHVwZGF0ZUZyZXF1ZW5jeUNvZGVWYWx1ZXMpW251bWJlcl1cblxubWFya2VyKCdkb21haW4ucmVjb3JkLnVwZGF0ZUZyZXF1ZW5jeS5kYXknKVxubWFya2VyKCdkb21haW4ucmVjb3JkLnVwZGF0ZUZyZXF1ZW5jeS53ZWVrJylcbm1hcmtlcignZG9tYWluLnJlY29yZC51cGRhdGVGcmVxdWVuY3kubW9udGgnKVxubWFya2VyKCdkb21haW4ucmVjb3JkLnVwZGF0ZUZyZXF1ZW5jeS55ZWFyJylcblxubWFya2VyKCdkb21haW4ucmVjb3JkLnVwZGF0ZUZyZXF1ZW5jeS5kYWlseScpXG5tYXJrZXIoJ2RvbWFpbi5yZWNvcmQudXBkYXRlRnJlcXVlbmN5LndlZWtseScpXG5tYXJrZXIoJ2RvbWFpbi5yZWNvcmQudXBkYXRlRnJlcXVlbmN5LmZvcnRuaWdodGx5Jylcbm1hcmtlcignZG9tYWluLnJlY29yZC51cGRhdGVGcmVxdWVuY3kubW9udGhseScpXG5tYXJrZXIoJ2RvbWFpbi5yZWNvcmQudXBkYXRlRnJlcXVlbmN5LnF1YXJ0ZXJseScpXG5tYXJrZXIoJ2RvbWFpbi5yZWNvcmQudXBkYXRlRnJlcXVlbmN5LmJpYW5udWFsbHknKVxubWFya2VyKCdkb21haW4ucmVjb3JkLnVwZGF0ZUZyZXF1ZW5jeS5hbm51YWxseScpXG5tYXJrZXIoJ2RvbWFpbi5yZWNvcmQudXBkYXRlRnJlcXVlbmN5LnNlbWltb250aGx5Jylcbm1hcmtlcignZG9tYWluLnJlY29yZC51cGRhdGVGcmVxdWVuY3kuYmllbm5pYWxseScpXG5cbmV4cG9ydCB0eXBlIFVwZGF0ZUZyZXF1ZW5jeUN1c3RvbSA9IHtcbiAgdXBkYXRlZFRpbWVzOiBudW1iZXIgLy8gdGhpcyBzaG91bGQgYmUgYW4gaW50ZWdlclxuICBwZXI6ICdkYXknIHwgJ3dlZWsnIHwgJ21vbnRoJyB8ICd5ZWFyJ1xufVxuZXhwb3J0IHR5cGUgVXBkYXRlRnJlcXVlbmN5ID0gVXBkYXRlRnJlcXVlbmN5Q29kZSB8IFVwZGF0ZUZyZXF1ZW5jeUN1c3RvbVxuXG5leHBvcnQgdHlwZSBSZWNvcmRLaW5kID0gJ2RhdGFzZXQnIHwgJ3NlcnZpY2UnIHwgJ3JldXNlJ1xuXG5tYXJrZXIoJ2RvbWFpbi5yZWNvcmQuc3RhdHVzLmNvbXBsZXRlZCcpXG5tYXJrZXIoJ2RvbWFpbi5yZWNvcmQuc3RhdHVzLm9uZ29pbmcnKVxubWFya2VyKCdkb21haW4ucmVjb3JkLnN0YXR1cy51bmRlcl9kZXZlbG9wbWVudCcpXG5tYXJrZXIoJ2RvbWFpbi5yZWNvcmQuc3RhdHVzLmRlcHJlY2F0ZWQnKVxubWFya2VyKCdkb21haW4ucmVjb3JkLnN0YXR1cy5yZW1vdmVkJylcbm1hcmtlcignZG9tYWluLnJlY29yZC5zdGF0dXMucGxhbm5lZCcpXG5tYXJrZXIoJ2RvbWFpbi5yZWNvcmQuc3RhdHVzLnJlcXVpcmVkJylcblxuZXhwb3J0IGNvbnN0IFJlY29yZFN0YXR1c1ZhbHVlcyA9IFtcbiAgJ2NvbXBsZXRlZCcsXG4gICdvbmdvaW5nJyxcbiAgJ3VuZGVyX2RldmVsb3BtZW50JyxcbiAgJ2RlcHJlY2F0ZWQnLFxuICAncmVtb3ZlZCcsXG4gICdwbGFubmVkJyxcbiAgJ3JlcXVpcmVkJyxcbl1cbmV4cG9ydCB0eXBlIFJlY29yZFN0YXR1cyA9ICh0eXBlb2YgUmVjb3JkU3RhdHVzVmFsdWVzKVtudW1iZXJdXG5cbmV4cG9ydCB0eXBlIENvbnN0cmFpbnQgPSB7XG4gIHRleHQ6IHN0cmluZ1xuICB1cmw/OiBVUkxcblxuICB0cmFuc2xhdGlvbnM/OiBDb25zdHJhaW50VHJhbnNsYXRpb25zXG59XG5cbmV4cG9ydCB0eXBlIFNwYXRpYWxSZXByZXNlbnRhdGlvblR5cGUgPVxuICB8ICdncmlkJ1xuICB8ICd2ZWN0b3InXG4gIHwgJ3RpbidcbiAgfCAndGFibGUnXG4gIHwgJ3BvaW50J1xuXG5leHBvcnQgaW50ZXJmYWNlIEtleXdvcmQge1xuICBrZXk/OiBzdHJpbmdcbiAgbGFiZWw6IHN0cmluZ1xuICBkZXNjcmlwdGlvbj86IHN0cmluZ1xuICB0eXBlOiBLZXl3b3JkVHlwZVxuICB0aGVzYXVydXM/OiBUaGVzYXVydXNNb2RlbFxuICBiYm94PzogW251bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlcl1cblxuICB0cmFuc2xhdGlvbnM/OiBLZXl3b3JkVHJhbnNsYXRpb25zXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQmFzZVJlY29yZCB7XG4gIHVuaXF1ZUlkZW50aWZpZXI6IFV1aWRcbiAgb3duZXJPcmdhbml6YXRpb246IE9yZ2FuaXphdGlvblxuICBjb250YWN0czogQXJyYXk8SW5kaXZpZHVhbD5cbiAgdGl0bGU6IHN0cmluZ1xuICBhYnN0cmFjdDogc3RyaW5nXG4gIHJlY29yZENyZWF0ZWQ/OiBEYXRlXG4gIHJlY29yZFB1Ymxpc2hlZD86IERhdGVcbiAgcmVjb3JkVXBkYXRlZDogRGF0ZVxuICBraW5kOiBSZWNvcmRLaW5kXG4gIHRvcGljczogQXJyYXk8c3RyaW5nPiAvLyBUT0RPOiBoYW5kbGUgY29kZWxpc3RzXG4gIGtleXdvcmRzOiBBcnJheTxLZXl3b3JkPlxuICBsaWNlbnNlczogQXJyYXk8Q29uc3RyYWludD5cbiAgbGVnYWxDb25zdHJhaW50czogQXJyYXk8Q29uc3RyYWludD5cbiAgc2VjdXJpdHlDb25zdHJhaW50czogQXJyYXk8Q29uc3RyYWludD5cbiAgb3RoZXJDb25zdHJhaW50czogQXJyYXk8Q29uc3RyYWludD5cbiAgb3ZlcnZpZXdzOiBBcnJheTxHcmFwaGljT3ZlcnZpZXc+XG4gIGV4dHJhcz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gIGxhbmRpbmdQYWdlPzogVVJMXG4gIHVwZGF0ZUZyZXF1ZW5jeT86IFVwZGF0ZUZyZXF1ZW5jeVxuXG4gIC8vIGluZm9ybWF0aW9uIHJlbGF0ZWQgdG8gdGhlIHJlc291cmNlIChkYXRhc2V0LCBzZXJ2aWNlKVxuICByZXNvdXJjZUlkZW50aWZpZXI/OiBzdHJpbmdcbiAgY29udGFjdHNGb3JSZXNvdXJjZTogQXJyYXk8SW5kaXZpZHVhbD5cbiAgcmVzb3VyY2VDcmVhdGVkPzogRGF0ZVxuICByZXNvdXJjZVB1Ymxpc2hlZD86IERhdGVcbiAgcmVzb3VyY2VVcGRhdGVkPzogRGF0ZVxuXG4gIC8vIG11bHRpbGluZ3VhbCBzdXBwb3J0XG4gIGRlZmF1bHRMYW5ndWFnZTogTGFuZ3VhZ2VDb2RlXG4gIG90aGVyTGFuZ3VhZ2VzOiBBcnJheTxMYW5ndWFnZUNvZGU+IC8vIHRoaXMgc2hvdWxkIGluY2x1ZGUgYWxsIG5vbi1kZWZhdWx0IGxhbmd1YWdlcyBwcmVzZW50IGluIHRoZSBtZXRhZGF0YSwgZXZlbiBpZiBpbmNvbXBsZXRlbHkgdHJhbnNsYXRlZFxuXG4gIHRyYW5zbGF0aW9ucz86IFJlY29yZFRyYW5zbGF0aW9uc1xuXG4gIC8vIHRvIGFkZDogY2Fub25pY2FsIHVybFxuICAvLyB0byBhZGQ6IHNvdXJjZSBjYXRhbG9nICg/PylcbiAgLy8gdG8gYWRkOiBpcyBvcGVuIGRhdGEgP1xufVxuXG4vLyBUT0RPOiBoYW5kbGUgYWN0dWFsIGNvZGVsaXN0c1xuZXhwb3J0IHR5cGUgU2VydmljZVByb3RvY29sID1cbiAgfCAnd21zJ1xuICB8ICd3ZnMnXG4gIHwgJ3dwcydcbiAgfCAnd210cydcbiAgfCAnZXNyaVJlc3QnXG4gIHwgJ29nY0ZlYXR1cmVzJ1xuICB8ICdHUEZETCdcbiAgfCAndG1zJ1xuICB8ICdtYXBsaWJyZS1zdHlsZSdcbiAgfCAnb3RoZXInXG5cbmV4cG9ydCB0eXBlIE9ubGluZVJlc291cmNlVHlwZSA9ICdzZXJ2aWNlJyB8ICdkb3dubG9hZCcgfCAnbGluaycgfCAnZW5kcG9pbnQnXG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YXNldFNlcnZpY2VEaXN0cmlidXRpb24ge1xuICB0eXBlOiAnc2VydmljZSdcbiAgdXJsOiBVUkxcbiAgYWNjZXNzU2VydmljZVByb3RvY29sOiBTZXJ2aWNlUHJvdG9jb2xcbiAgaWRlbnRpZmllckluU2VydmljZT86IHN0cmluZyAvLyBzaG91bGQgd2Uga2VlcCB0aGUgaWRlbnRpZmllckluU2VydmljZT8gcmVhZC13cml0ZSBkdXBsaWNhdGUgd2l0aCBuYW1lXG4gIG5hbWU/OiBzdHJpbmdcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmdcbiAgdHJhbnNsYXRpb25zPzogT25saW5lUmVzb3VyY2VUcmFuc2xhdGlvbnNcbiAgYWNjZXNzUmVzdHJpY3RlZD86IGJvb2xlYW5cbn1cblxuZXhwb3J0IGludGVyZmFjZSBEYXRhc2V0RG93bmxvYWREaXN0cmlidXRpb24ge1xuICB0eXBlOiAnZG93bmxvYWQnXG4gIHVybDogVVJMXG4gIG1pbWVUeXBlPzogc3RyaW5nXG4gIHNpemVCeXRlcz86IG51bWJlclxuICAvLyByZW1vdmVkIGJlY2F1c2Ugd2hhdCdzIHRoZSB1c2U/IGVuY29kaW5nIGNhbiBiZSBleHBvc2VkIGJ5IHRoZSBmaWxlIHNlcnZlciBvclxuICAvLyBldmVuIGZvdW5kIG91dCBieSB0cmlhbCBhbmQgZXJyb3I7IGJlc2lkZXMgd2UgY2FuIHJlYXNvbmFibHkgZXhwZWN0IHVuaWNvZGUgb3IgaXNvIG1vc3Qgb2YgdGhlIHRpbWVcbiAgLy8gdGV4dEVuY29kaW5nPzogc3RyaW5nXG4gIG5hbWU/OiBzdHJpbmdcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmdcbiAgYWNjZXNzU2VydmljZVByb3RvY29sPzogU2VydmljZVByb3RvY29sXG4gIHRyYW5zbGF0aW9ucz86IE9ubGluZVJlc291cmNlVHJhbnNsYXRpb25zXG4gIGFjY2Vzc1Jlc3RyaWN0ZWQ/OiBib29sZWFuXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgT25saW5lTGlua1Jlc291cmNlIHtcbiAgdHlwZTogJ2xpbmsnXG4gIHVybDogVVJMXG4gIG5hbWU/OiBzdHJpbmdcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmdcbiAgdHJhbnNsYXRpb25zPzogT25saW5lUmVzb3VyY2VUcmFuc2xhdGlvbnNcbiAgbWltZVR5cGU/OiBzdHJpbmdcbiAgYWNjZXNzUmVzdHJpY3RlZD86IGJvb2xlYW5cbn1cblxuZXhwb3J0IHR5cGUgRGF0YXNldE9ubGluZVJlc291cmNlID0gKFxuICB8IERhdGFzZXRTZXJ2aWNlRGlzdHJpYnV0aW9uXG4gIHwgRGF0YXNldERvd25sb2FkRGlzdHJpYnV0aW9uXG4gIHwgT25saW5lTGlua1Jlc291cmNlXG4pICYge1xuICB0eXBlOiBPbmxpbmVSZXNvdXJjZVR5cGVcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHcmFwaGljT3ZlcnZpZXcge1xuICB1cmw6IFVSTFxuICBkZXNjcmlwdGlvbj86IHN0cmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERhdGFzZXRTcGF0aWFsRXh0ZW50IHtcbiAgYmJveD86IFtudW1iZXIsIG51bWJlciwgbnVtYmVyLCBudW1iZXJdXG4gIGdlb21ldHJ5PzogR2VvbWV0cnlcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmdcbiAgdHJhbnNsYXRpb25zPzogU3BhdGlhbEV4dGVudFRyYW5zbGF0aW9uc1xufVxuXG4vKipcbiAqIFBlcmlvZCBpZiBib3RoIHN0YXJ0IGFuZCBlbmQgYXJlIHByb3ZpZGVkXG4gKiBJbnN0YW50IGlmIG9ubHkgc3RhcnQgaXMgcHJvdmlkZWRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEYXRhc2V0VGVtcG9yYWxFeHRlbnQge1xuICBzdGFydDogRGF0ZVxuICBlbmQ/OiBEYXRlXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YXNldFJlY29yZCBleHRlbmRzIEJhc2VSZWNvcmQge1xuICBraW5kOiAnZGF0YXNldCdcbiAgc3RhdHVzOiBSZWNvcmRTdGF0dXNcbiAgbGluZWFnZTogc3RyaW5nIC8vIEV4cGxhbmF0aW9uIG9mIHRoZSBvcmlnaW4gb2YgdGhpcyByZWNvcmQgKGUuZzogaG93LCB3aHkpXCJcbiAgb25saW5lUmVzb3VyY2VzOiBBcnJheTxEYXRhc2V0T25saW5lUmVzb3VyY2U+XG4gIHNwYXRpYWxFeHRlbnRzOiBBcnJheTxEYXRhc2V0U3BhdGlhbEV4dGVudD5cbiAgdGVtcG9yYWxFeHRlbnRzOiBBcnJheTxEYXRhc2V0VGVtcG9yYWxFeHRlbnQ+XG4gIHNwYXRpYWxSZXByZXNlbnRhdGlvbj86IFNwYXRpYWxSZXByZXNlbnRhdGlvblR5cGVcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTZXJ2aWNlRW5kcG9pbnQge1xuICB1cmw6IFVSTFxuICBhY2Nlc3NTZXJ2aWNlUHJvdG9jb2w6IFNlcnZpY2VQcm90b2NvbFxuICB0eXBlOiAnZW5kcG9pbnQnXG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nXG4gIHRyYW5zbGF0aW9ucz86IE9ubGluZVJlc291cmNlVHJhbnNsYXRpb25zXG59XG5cbmV4cG9ydCB0eXBlIFNlcnZpY2VPbmxpbmVSZXNvdXJjZSA9IChTZXJ2aWNlRW5kcG9pbnQgfCBPbmxpbmVMaW5rUmVzb3VyY2UpICYge1xuICB0eXBlOiBPbmxpbmVSZXNvdXJjZVR5cGVcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTZXJ2aWNlUmVjb3JkIGV4dGVuZHMgQmFzZVJlY29yZCB7XG4gIGtpbmQ6ICdzZXJ2aWNlJ1xuICBvbmxpbmVSZXNvdXJjZXM6IEFycmF5PFNlcnZpY2VPbmxpbmVSZXNvdXJjZT5cbiAgc3BhdGlhbEV4dGVudHM6IEFycmF5PERhdGFzZXRTcGF0aWFsRXh0ZW50PlxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJldXNlUmVjb3JkIGV4dGVuZHMgQmFzZVJlY29yZCB7XG4gIGtpbmQ6ICdyZXVzZSdcbiAgbGluZWFnZTogc3RyaW5nIC8vIEV4cGxhbmF0aW9uIG9mIHRoZSBvcmlnaW4gb2YgdGhpcyByZWNvcmQgKGUuZzogaG93LCB3aHkpXCJcbiAgb25saW5lUmVzb3VyY2VzOiBBcnJheTxPbmxpbmVMaW5rUmVzb3VyY2U+XG4gIHJldXNlVHlwZTogUmV1c2VUeXBlXG4gIHNwYXRpYWxFeHRlbnRzOiBBcnJheTxEYXRhc2V0U3BhdGlhbEV4dGVudD5cbiAgdGVtcG9yYWxFeHRlbnRzOiBBcnJheTxEYXRhc2V0VGVtcG9yYWxFeHRlbnQ+XG59XG5cbmV4cG9ydCB0eXBlIERhdGFzZXRGZWF0dXJlQ2F0YWxvZyA9IHtcbiAgZmVhdHVyZVR5cGVzOiBBcnJheTx7XG4gICAgbmFtZTogc3RyaW5nXG4gICAgZGVmaW5pdGlvbjogc3RyaW5nXG4gICAgYXR0cmlidXRlczogRGF0YXNldEZlYXR1cmVBdHRyaWJ1dGVbXVxuICB9PlxufVxuZXhwb3J0IGludGVyZmFjZSBEYXRhc2V0RmVhdHVyZUF0dHJpYnV0ZVZhbHVlIHtcbiAgY29kZT86IHN0cmluZ1xuICBkZWZpbml0aW9uPzogc3RyaW5nXG4gIGxhYmVsPzogc3RyaW5nXG59XG5leHBvcnQgaW50ZXJmYWNlIERhdGFzZXRGZWF0dXJlQXR0cmlidXRlIHtcbiAgbmFtZTogc3RyaW5nXG4gIGRlZmluaXRpb246IHN0cmluZ1xuICB0eXBlOiBzdHJpbmdcbiAgY29kZTogc3RyaW5nXG4gIHZhbHVlcz86IEFycmF5PERhdGFzZXRGZWF0dXJlQXR0cmlidXRlVmFsdWU+XG59XG5leHBvcnQgaW50ZXJmYWNlIERhdGFzZXRGZWF0dXJlVHlwZSB7XG4gIGFsaWFzZXM6IHN0cmluZ1xuICBjb2RlOiBzdHJpbmdcbiAgaXNBYnN0cmFjdDogc3RyaW5nXG4gIHR5cGVOYW1lOiBzdHJpbmdcbiAgZGVmaW5pdGlvbjogc3RyaW5nXG4gIGF0dHJpYnV0ZVRhYmxlOiBBcnJheTxEYXRhc2V0RmVhdHVyZUF0dHJpYnV0ZT5cbn1cblxuZXhwb3J0IHR5cGUgUmV1c2VUeXBlID0gJ2FwcGxpY2F0aW9uJyB8ICdtYXAnIHwgJ290aGVyJ1xuXG5leHBvcnQgdHlwZSBPbmxpbmVSZXNvdXJjZSA9IERhdGFzZXRPbmxpbmVSZXNvdXJjZSB8IFNlcnZpY2VPbmxpbmVSZXNvdXJjZVxuXG5leHBvcnQgdHlwZSBDYXRhbG9nUmVjb3JkID0gRGF0YXNldFJlY29yZCB8IFJldXNlUmVjb3JkIHwgU2VydmljZVJlY29yZFxuXG5leHBvcnQgdHlwZSBDYXRhbG9nUmVjb3JkS2V5cyA9XG4gIHwga2V5b2YgRGF0YXNldFJlY29yZFxuICB8IGtleW9mIFJldXNlUmVjb3JkXG4gIHwga2V5b2YgU2VydmljZVJlY29yZFxuIl19
54
+ marker('record.metadata.api.accessServiceProtocol.wms');
55
+ marker('record.metadata.api.accessServiceProtocol.wfs');
56
+ marker('record.metadata.api.accessServiceProtocol.wps');
57
+ marker('record.metadata.api.accessServiceProtocol.wmts');
58
+ marker('record.metadata.api.accessServiceProtocol.esriRest');
59
+ marker('record.metadata.api.accessServiceProtocol.ogcFeatures');
60
+ marker('record.metadata.api.accessServiceProtocol.GPFDL');
61
+ marker('record.metadata.api.accessServiceProtocol.tms');
62
+ marker('record.metadata.api.accessServiceProtocol.maplibre-style');
63
+ marker('record.metadata.api.accessServiceProtocol.other');
64
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0YWRhdGEubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9kb21haW4vc3JjL2xpYi9tb2RlbC9yZWNvcmQvbWV0YWRhdGEubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHlDQUF5QyxDQUFBO0FBZ0JoRSxNQUFNLENBQUMsdUNBQXVDLENBQUMsQ0FBQTtBQUMvQyxNQUFNLENBQUMsMENBQTBDLENBQUMsQ0FBQTtBQUNsRCxNQUFNLENBQUMsd0NBQXdDLENBQUMsQ0FBQTtBQUNoRCxNQUFNLENBQUMseUNBQXlDLENBQUMsQ0FBQTtBQUNqRCxNQUFNLENBQUMseUNBQXlDLENBQUMsQ0FBQTtBQUNqRCxNQUFNLENBQUMsd0NBQXdDLENBQUMsQ0FBQTtBQUVoRCxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRztJQUN2QyxTQUFTO0lBQ1QsWUFBWTtJQUNaLFVBQVU7SUFDVixXQUFXO0lBQ1gsV0FBVztJQUNYLFVBQVU7SUFDVixPQUFPO0lBQ1AsUUFBUTtJQUNSLGFBQWE7SUFDYixhQUFhO0lBQ2IsU0FBUztJQUNULFdBQVc7SUFDWCxZQUFZO0lBQ1osVUFBVTtJQUNWLFlBQVk7Q0FDSixDQUFBO0FBSVYsTUFBTSxDQUFDLG1DQUFtQyxDQUFDLENBQUE7QUFDM0MsTUFBTSxDQUFDLG9DQUFvQyxDQUFDLENBQUE7QUFDNUMsTUFBTSxDQUFDLHFDQUFxQyxDQUFDLENBQUE7QUFDN0MsTUFBTSxDQUFDLG9DQUFvQyxDQUFDLENBQUE7QUFFNUMsTUFBTSxDQUFDLHFDQUFxQyxDQUFDLENBQUE7QUFDN0MsTUFBTSxDQUFDLHNDQUFzQyxDQUFDLENBQUE7QUFDOUMsTUFBTSxDQUFDLDJDQUEyQyxDQUFDLENBQUE7QUFDbkQsTUFBTSxDQUFDLHVDQUF1QyxDQUFDLENBQUE7QUFDL0MsTUFBTSxDQUFDLHlDQUF5QyxDQUFDLENBQUE7QUFDakQsTUFBTSxDQUFDLDBDQUEwQyxDQUFDLENBQUE7QUFDbEQsTUFBTSxDQUFDLHdDQUF3QyxDQUFDLENBQUE7QUFDaEQsTUFBTSxDQUFDLDJDQUEyQyxDQUFDLENBQUE7QUFDbkQsTUFBTSxDQUFDLDBDQUEwQyxDQUFDLENBQUE7QUFVbEQsTUFBTSxDQUFDLGdDQUFnQyxDQUFDLENBQUE7QUFDeEMsTUFBTSxDQUFDLDhCQUE4QixDQUFDLENBQUE7QUFDdEMsTUFBTSxDQUFDLHdDQUF3QyxDQUFDLENBQUE7QUFDaEQsTUFBTSxDQUFDLGlDQUFpQyxDQUFDLENBQUE7QUFDekMsTUFBTSxDQUFDLDhCQUE4QixDQUFDLENBQUE7QUFDdEMsTUFBTSxDQUFDLDhCQUE4QixDQUFDLENBQUE7QUFDdEMsTUFBTSxDQUFDLCtCQUErQixDQUFDLENBQUE7QUFFdkMsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUc7SUFDaEMsV0FBVztJQUNYLFNBQVM7SUFDVCxtQkFBbUI7SUFDbkIsWUFBWTtJQUNaLFNBQVM7SUFDVCxTQUFTO0lBQ1QsVUFBVTtDQUNYLENBQUE7QUFnRkQsTUFBTSxDQUFDLCtDQUErQyxDQUFDLENBQUE7QUFDdkQsTUFBTSxDQUFDLCtDQUErQyxDQUFDLENBQUE7QUFDdkQsTUFBTSxDQUFDLCtDQUErQyxDQUFDLENBQUE7QUFDdkQsTUFBTSxDQUFDLGdEQUFnRCxDQUFDLENBQUE7QUFDeEQsTUFBTSxDQUFDLG9EQUFvRCxDQUFDLENBQUE7QUFDNUQsTUFBTSxDQUFDLHVEQUF1RCxDQUFDLENBQUE7QUFDL0QsTUFBTSxDQUFDLGlEQUFpRCxDQUFDLENBQUE7QUFDekQsTUFBTSxDQUFDLCtDQUErQyxDQUFDLENBQUE7QUFDdkQsTUFBTSxDQUFDLDBEQUEwRCxDQUFDLENBQUE7QUFDbEUsTUFBTSxDQUFDLGlEQUFpRCxDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBtYXJrZXIgfSBmcm9tICdAYmllc2JqZXJnL25neC10cmFuc2xhdGUtZXh0cmFjdC1tYXJrZXInXG5pbXBvcnQgdHlwZSB7IEluZGl2aWR1YWwgfSBmcm9tICcuL2NvbnRhY3QubW9kZWwnXG5pbXBvcnQgdHlwZSB7IE9yZ2FuaXphdGlvbiB9IGZyb20gJy4vb3JnYW5pemF0aW9uLm1vZGVsJ1xuaW1wb3J0IHR5cGUgeyBHZW9tZXRyeSB9IGZyb20gJ2dlb2pzb24nXG5pbXBvcnQgeyBLZXl3b3JkVHlwZSwgVGhlc2F1cnVzTW9kZWwgfSBmcm9tICcuLi90aGVzYXVydXMnXG5pbXBvcnQge1xuICBDb25zdHJhaW50VHJhbnNsYXRpb25zLFxuICBLZXl3b3JkVHJhbnNsYXRpb25zLFxuICBMYW5ndWFnZUNvZGUsXG4gIE9ubGluZVJlc291cmNlVHJhbnNsYXRpb25zLFxuICBSZWNvcmRUcmFuc2xhdGlvbnMsXG4gIFNwYXRpYWxFeHRlbnRUcmFuc2xhdGlvbnMsXG59IGZyb20gJy4vdHJhbnNsYXRpb24ubW9kZWwnXG5cbnR5cGUgVXVpZCA9IHN0cmluZ1xuXG5tYXJrZXIoJ2RvbWFpbi5yZWNvcmQudXBkYXRlRnJlcXVlbmN5LnVua25vd24nKVxubWFya2VyKCdkb21haW4ucmVjb3JkLnVwZGF0ZUZyZXF1ZW5jeS5ub3RQbGFubmVkJylcbm1hcmtlcignZG9tYWluLnJlY29yZC51cGRhdGVGcmVxdWVuY3kuYXNOZWVkZWQnKVxubWFya2VyKCdkb21haW4ucmVjb3JkLnVwZGF0ZUZyZXF1ZW5jeS5pcnJlZ3VsYXInKVxubWFya2VyKCdkb21haW4ucmVjb3JkLnVwZGF0ZUZyZXF1ZW5jeS5jb250aW51YWwnKVxubWFya2VyKCdkb21haW4ucmVjb3JkLnVwZGF0ZUZyZXF1ZW5jeS5wZXJpb2RpYycpXG5cbmV4cG9ydCBjb25zdCB1cGRhdGVGcmVxdWVuY3lDb2RlVmFsdWVzID0gW1xuICAndW5rbm93bicsXG4gICdub3RQbGFubmVkJyxcbiAgJ2FzTmVlZGVkJyxcbiAgJ2lycmVndWxhcicsXG4gICdjb250aW51YWwnLFxuICAncGVyaW9kaWMnLFxuICAnZGFpbHknLFxuICAnd2Vla2x5JyxcbiAgJ2ZvcnRuaWdodGx5JyxcbiAgJ3NlbWltb250aGx5JyxcbiAgJ21vbnRobHknLFxuICAncXVhcnRlcmx5JyxcbiAgJ2JpYW5udWFsbHknLFxuICAnYW5udWFsbHknLFxuICAnYmllbm5pYWxseScsXG5dIGFzIGNvbnN0XG5cbmV4cG9ydCB0eXBlIFVwZGF0ZUZyZXF1ZW5jeUNvZGUgPSAodHlwZW9mIHVwZGF0ZUZyZXF1ZW5jeUNvZGVWYWx1ZXMpW251bWJlcl1cblxubWFya2VyKCdkb21haW4ucmVjb3JkLnVwZGF0ZUZyZXF1ZW5jeS5kYXknKVxubWFya2VyKCdkb21haW4ucmVjb3JkLnVwZGF0ZUZyZXF1ZW5jeS53ZWVrJylcbm1hcmtlcignZG9tYWluLnJlY29yZC51cGRhdGVGcmVxdWVuY3kubW9udGgnKVxubWFya2VyKCdkb21haW4ucmVjb3JkLnVwZGF0ZUZyZXF1ZW5jeS55ZWFyJylcblxubWFya2VyKCdkb21haW4ucmVjb3JkLnVwZGF0ZUZyZXF1ZW5jeS5kYWlseScpXG5tYXJrZXIoJ2RvbWFpbi5yZWNvcmQudXBkYXRlRnJlcXVlbmN5LndlZWtseScpXG5tYXJrZXIoJ2RvbWFpbi5yZWNvcmQudXBkYXRlRnJlcXVlbmN5LmZvcnRuaWdodGx5Jylcbm1hcmtlcignZG9tYWluLnJlY29yZC51cGRhdGVGcmVxdWVuY3kubW9udGhseScpXG5tYXJrZXIoJ2RvbWFpbi5yZWNvcmQudXBkYXRlRnJlcXVlbmN5LnF1YXJ0ZXJseScpXG5tYXJrZXIoJ2RvbWFpbi5yZWNvcmQudXBkYXRlRnJlcXVlbmN5LmJpYW5udWFsbHknKVxubWFya2VyKCdkb21haW4ucmVjb3JkLnVwZGF0ZUZyZXF1ZW5jeS5hbm51YWxseScpXG5tYXJrZXIoJ2RvbWFpbi5yZWNvcmQudXBkYXRlRnJlcXVlbmN5LnNlbWltb250aGx5Jylcbm1hcmtlcignZG9tYWluLnJlY29yZC51cGRhdGVGcmVxdWVuY3kuYmllbm5pYWxseScpXG5cbmV4cG9ydCB0eXBlIFVwZGF0ZUZyZXF1ZW5jeUN1c3RvbSA9IHtcbiAgdXBkYXRlZFRpbWVzOiBudW1iZXIgLy8gdGhpcyBzaG91bGQgYmUgYW4gaW50ZWdlclxuICBwZXI6ICdkYXknIHwgJ3dlZWsnIHwgJ21vbnRoJyB8ICd5ZWFyJ1xufVxuZXhwb3J0IHR5cGUgVXBkYXRlRnJlcXVlbmN5ID0gVXBkYXRlRnJlcXVlbmN5Q29kZSB8IFVwZGF0ZUZyZXF1ZW5jeUN1c3RvbVxuXG5leHBvcnQgdHlwZSBSZWNvcmRLaW5kID0gJ2RhdGFzZXQnIHwgJ3NlcnZpY2UnIHwgJ3JldXNlJ1xuXG5tYXJrZXIoJ2RvbWFpbi5yZWNvcmQuc3RhdHVzLmNvbXBsZXRlZCcpXG5tYXJrZXIoJ2RvbWFpbi5yZWNvcmQuc3RhdHVzLm9uZ29pbmcnKVxubWFya2VyKCdkb21haW4ucmVjb3JkLnN0YXR1cy51bmRlcl9kZXZlbG9wbWVudCcpXG5tYXJrZXIoJ2RvbWFpbi5yZWNvcmQuc3RhdHVzLmRlcHJlY2F0ZWQnKVxubWFya2VyKCdkb21haW4ucmVjb3JkLnN0YXR1cy5yZW1vdmVkJylcbm1hcmtlcignZG9tYWluLnJlY29yZC5zdGF0dXMucGxhbm5lZCcpXG5tYXJrZXIoJ2RvbWFpbi5yZWNvcmQuc3RhdHVzLnJlcXVpcmVkJylcblxuZXhwb3J0IGNvbnN0IFJlY29yZFN0YXR1c1ZhbHVlcyA9IFtcbiAgJ2NvbXBsZXRlZCcsXG4gICdvbmdvaW5nJyxcbiAgJ3VuZGVyX2RldmVsb3BtZW50JyxcbiAgJ2RlcHJlY2F0ZWQnLFxuICAncmVtb3ZlZCcsXG4gICdwbGFubmVkJyxcbiAgJ3JlcXVpcmVkJyxcbl1cbmV4cG9ydCB0eXBlIFJlY29yZFN0YXR1cyA9ICh0eXBlb2YgUmVjb3JkU3RhdHVzVmFsdWVzKVtudW1iZXJdXG5cbmV4cG9ydCB0eXBlIENvbnN0cmFpbnQgPSB7XG4gIHRleHQ6IHN0cmluZ1xuICB1cmw/OiBVUkxcblxuICB0cmFuc2xhdGlvbnM/OiBDb25zdHJhaW50VHJhbnNsYXRpb25zXG59XG5cbmV4cG9ydCB0eXBlIFNwYXRpYWxSZXByZXNlbnRhdGlvblR5cGUgPVxuICB8ICdncmlkJ1xuICB8ICd2ZWN0b3InXG4gIHwgJ3RpbidcbiAgfCAndGFibGUnXG4gIHwgJ3BvaW50J1xuXG5leHBvcnQgaW50ZXJmYWNlIEtleXdvcmQge1xuICBrZXk/OiBzdHJpbmdcbiAgbGFiZWw6IHN0cmluZ1xuICBkZXNjcmlwdGlvbj86IHN0cmluZ1xuICB0eXBlOiBLZXl3b3JkVHlwZVxuICB0aGVzYXVydXM/OiBUaGVzYXVydXNNb2RlbFxuICBiYm94PzogW251bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlcl1cblxuICB0cmFuc2xhdGlvbnM/OiBLZXl3b3JkVHJhbnNsYXRpb25zXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQmFzZVJlY29yZCB7XG4gIHVuaXF1ZUlkZW50aWZpZXI6IFV1aWRcbiAgb3duZXJPcmdhbml6YXRpb246IE9yZ2FuaXphdGlvblxuICBjb250YWN0czogQXJyYXk8SW5kaXZpZHVhbD5cbiAgdGl0bGU6IHN0cmluZ1xuICBhYnN0cmFjdDogc3RyaW5nXG4gIHJlY29yZENyZWF0ZWQ/OiBEYXRlXG4gIHJlY29yZFB1Ymxpc2hlZD86IERhdGVcbiAgcmVjb3JkVXBkYXRlZDogRGF0ZVxuICBraW5kOiBSZWNvcmRLaW5kXG4gIHRvcGljczogQXJyYXk8c3RyaW5nPiAvLyBUT0RPOiBoYW5kbGUgY29kZWxpc3RzXG4gIGtleXdvcmRzOiBBcnJheTxLZXl3b3JkPlxuICBsaWNlbnNlczogQXJyYXk8Q29uc3RyYWludD5cbiAgbGVnYWxDb25zdHJhaW50czogQXJyYXk8Q29uc3RyYWludD5cbiAgc2VjdXJpdHlDb25zdHJhaW50czogQXJyYXk8Q29uc3RyYWludD5cbiAgb3RoZXJDb25zdHJhaW50czogQXJyYXk8Q29uc3RyYWludD5cbiAgb3ZlcnZpZXdzOiBBcnJheTxHcmFwaGljT3ZlcnZpZXc+XG4gIGV4dHJhcz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gIGxhbmRpbmdQYWdlPzogVVJMXG4gIHVwZGF0ZUZyZXF1ZW5jeT86IFVwZGF0ZUZyZXF1ZW5jeVxuXG4gIC8vIGluZm9ybWF0aW9uIHJlbGF0ZWQgdG8gdGhlIHJlc291cmNlIChkYXRhc2V0LCBzZXJ2aWNlKVxuICByZXNvdXJjZUlkZW50aWZpZXI/OiBzdHJpbmdcbiAgY29udGFjdHNGb3JSZXNvdXJjZTogQXJyYXk8SW5kaXZpZHVhbD5cbiAgcmVzb3VyY2VDcmVhdGVkPzogRGF0ZVxuICByZXNvdXJjZVB1Ymxpc2hlZD86IERhdGVcbiAgcmVzb3VyY2VVcGRhdGVkPzogRGF0ZVxuXG4gIC8vIG11bHRpbGluZ3VhbCBzdXBwb3J0XG4gIGRlZmF1bHRMYW5ndWFnZTogTGFuZ3VhZ2VDb2RlXG4gIG90aGVyTGFuZ3VhZ2VzOiBBcnJheTxMYW5ndWFnZUNvZGU+IC8vIHRoaXMgc2hvdWxkIGluY2x1ZGUgYWxsIG5vbi1kZWZhdWx0IGxhbmd1YWdlcyBwcmVzZW50IGluIHRoZSBtZXRhZGF0YSwgZXZlbiBpZiBpbmNvbXBsZXRlbHkgdHJhbnNsYXRlZFxuXG4gIHRyYW5zbGF0aW9ucz86IFJlY29yZFRyYW5zbGF0aW9uc1xuXG4gIC8vIHRvIGFkZDogY2Fub25pY2FsIHVybFxuICAvLyB0byBhZGQ6IHNvdXJjZSBjYXRhbG9nICg/PylcbiAgLy8gdG8gYWRkOiBpcyBvcGVuIGRhdGEgP1xufVxuXG4vLyBUT0RPOiBoYW5kbGUgYWN0dWFsIGNvZGVsaXN0c1xuZXhwb3J0IHR5cGUgU2VydmljZVByb3RvY29sID1cbiAgfCAnd21zJ1xuICB8ICd3ZnMnXG4gIHwgJ3dwcydcbiAgfCAnd210cydcbiAgfCAnZXNyaVJlc3QnXG4gIHwgJ29nY0ZlYXR1cmVzJ1xuICB8ICdHUEZETCdcbiAgfCAndG1zJ1xuICB8ICdtYXBsaWJyZS1zdHlsZSdcbiAgfCAnb3RoZXInXG5cbm1hcmtlcigncmVjb3JkLm1ldGFkYXRhLmFwaS5hY2Nlc3NTZXJ2aWNlUHJvdG9jb2wud21zJylcbm1hcmtlcigncmVjb3JkLm1ldGFkYXRhLmFwaS5hY2Nlc3NTZXJ2aWNlUHJvdG9jb2wud2ZzJylcbm1hcmtlcigncmVjb3JkLm1ldGFkYXRhLmFwaS5hY2Nlc3NTZXJ2aWNlUHJvdG9jb2wud3BzJylcbm1hcmtlcigncmVjb3JkLm1ldGFkYXRhLmFwaS5hY2Nlc3NTZXJ2aWNlUHJvdG9jb2wud210cycpXG5tYXJrZXIoJ3JlY29yZC5tZXRhZGF0YS5hcGkuYWNjZXNzU2VydmljZVByb3RvY29sLmVzcmlSZXN0Jylcbm1hcmtlcigncmVjb3JkLm1ldGFkYXRhLmFwaS5hY2Nlc3NTZXJ2aWNlUHJvdG9jb2wub2djRmVhdHVyZXMnKVxubWFya2VyKCdyZWNvcmQubWV0YWRhdGEuYXBpLmFjY2Vzc1NlcnZpY2VQcm90b2NvbC5HUEZETCcpXG5tYXJrZXIoJ3JlY29yZC5tZXRhZGF0YS5hcGkuYWNjZXNzU2VydmljZVByb3RvY29sLnRtcycpXG5tYXJrZXIoJ3JlY29yZC5tZXRhZGF0YS5hcGkuYWNjZXNzU2VydmljZVByb3RvY29sLm1hcGxpYnJlLXN0eWxlJylcbm1hcmtlcigncmVjb3JkLm1ldGFkYXRhLmFwaS5hY2Nlc3NTZXJ2aWNlUHJvdG9jb2wub3RoZXInKVxuXG5leHBvcnQgdHlwZSBPbmxpbmVSZXNvdXJjZVR5cGUgPSAnc2VydmljZScgfCAnZG93bmxvYWQnIHwgJ2xpbmsnIHwgJ2VuZHBvaW50J1xuXG5leHBvcnQgaW50ZXJmYWNlIERhdGFzZXRTZXJ2aWNlRGlzdHJpYnV0aW9uIHtcbiAgdHlwZTogJ3NlcnZpY2UnXG4gIHVybDogVVJMXG4gIGFjY2Vzc1NlcnZpY2VQcm90b2NvbDogU2VydmljZVByb3RvY29sXG4gIGlkZW50aWZpZXJJblNlcnZpY2U/OiBzdHJpbmcgLy8gc2hvdWxkIHdlIGtlZXAgdGhlIGlkZW50aWZpZXJJblNlcnZpY2U/IHJlYWQtd3JpdGUgZHVwbGljYXRlIHdpdGggbmFtZVxuICBuYW1lPzogc3RyaW5nXG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nXG4gIHRyYW5zbGF0aW9ucz86IE9ubGluZVJlc291cmNlVHJhbnNsYXRpb25zXG4gIGFjY2Vzc1Jlc3RyaWN0ZWQ/OiBib29sZWFuXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YXNldERvd25sb2FkRGlzdHJpYnV0aW9uIHtcbiAgdHlwZTogJ2Rvd25sb2FkJ1xuICB1cmw6IFVSTFxuICBtaW1lVHlwZT86IHN0cmluZ1xuICBzaXplQnl0ZXM/OiBudW1iZXJcbiAgLy8gcmVtb3ZlZCBiZWNhdXNlIHdoYXQncyB0aGUgdXNlPyBlbmNvZGluZyBjYW4gYmUgZXhwb3NlZCBieSB0aGUgZmlsZSBzZXJ2ZXIgb3JcbiAgLy8gZXZlbiBmb3VuZCBvdXQgYnkgdHJpYWwgYW5kIGVycm9yOyBiZXNpZGVzIHdlIGNhbiByZWFzb25hYmx5IGV4cGVjdCB1bmljb2RlIG9yIGlzbyBtb3N0IG9mIHRoZSB0aW1lXG4gIC8vIHRleHRFbmNvZGluZz86IHN0cmluZ1xuICBuYW1lPzogc3RyaW5nXG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nXG4gIGFjY2Vzc1NlcnZpY2VQcm90b2NvbD86IFNlcnZpY2VQcm90b2NvbFxuICB0cmFuc2xhdGlvbnM/OiBPbmxpbmVSZXNvdXJjZVRyYW5zbGF0aW9uc1xuICBhY2Nlc3NSZXN0cmljdGVkPzogYm9vbGVhblxufVxuXG5leHBvcnQgaW50ZXJmYWNlIE9ubGluZUxpbmtSZXNvdXJjZSB7XG4gIHR5cGU6ICdsaW5rJ1xuICB1cmw6IFVSTFxuICBuYW1lPzogc3RyaW5nXG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nXG4gIHRyYW5zbGF0aW9ucz86IE9ubGluZVJlc291cmNlVHJhbnNsYXRpb25zXG4gIG1pbWVUeXBlPzogc3RyaW5nXG4gIGFjY2Vzc1Jlc3RyaWN0ZWQ/OiBib29sZWFuXG59XG5cbmV4cG9ydCB0eXBlIERhdGFzZXRPbmxpbmVSZXNvdXJjZSA9IChcbiAgfCBEYXRhc2V0U2VydmljZURpc3RyaWJ1dGlvblxuICB8IERhdGFzZXREb3dubG9hZERpc3RyaWJ1dGlvblxuICB8IE9ubGluZUxpbmtSZXNvdXJjZVxuKSAmIHtcbiAgdHlwZTogT25saW5lUmVzb3VyY2VUeXBlXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR3JhcGhpY092ZXJ2aWV3IHtcbiAgdXJsOiBVUkxcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEYXRhc2V0U3BhdGlhbEV4dGVudCB7XG4gIGJib3g/OiBbbnVtYmVyLCBudW1iZXIsIG51bWJlciwgbnVtYmVyXVxuICBnZW9tZXRyeT86IEdlb21ldHJ5XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nXG4gIHRyYW5zbGF0aW9ucz86IFNwYXRpYWxFeHRlbnRUcmFuc2xhdGlvbnNcbn1cblxuLyoqXG4gKiBQZXJpb2QgaWYgYm90aCBzdGFydCBhbmQgZW5kIGFyZSBwcm92aWRlZFxuICogSW5zdGFudCBpZiBvbmx5IHN0YXJ0IGlzIHByb3ZpZGVkXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YXNldFRlbXBvcmFsRXh0ZW50IHtcbiAgc3RhcnQ6IERhdGVcbiAgZW5kPzogRGF0ZVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIERhdGFzZXRSZWNvcmQgZXh0ZW5kcyBCYXNlUmVjb3JkIHtcbiAga2luZDogJ2RhdGFzZXQnXG4gIHN0YXR1czogUmVjb3JkU3RhdHVzXG4gIGxpbmVhZ2U6IHN0cmluZyAvLyBFeHBsYW5hdGlvbiBvZiB0aGUgb3JpZ2luIG9mIHRoaXMgcmVjb3JkIChlLmc6IGhvdywgd2h5KVwiXG4gIG9ubGluZVJlc291cmNlczogQXJyYXk8RGF0YXNldE9ubGluZVJlc291cmNlPlxuICBzcGF0aWFsRXh0ZW50czogQXJyYXk8RGF0YXNldFNwYXRpYWxFeHRlbnQ+XG4gIHRlbXBvcmFsRXh0ZW50czogQXJyYXk8RGF0YXNldFRlbXBvcmFsRXh0ZW50PlxuICBzcGF0aWFsUmVwcmVzZW50YXRpb24/OiBTcGF0aWFsUmVwcmVzZW50YXRpb25UeXBlXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VydmljZUVuZHBvaW50IHtcbiAgdXJsOiBVUkxcbiAgYWNjZXNzU2VydmljZVByb3RvY29sOiBTZXJ2aWNlUHJvdG9jb2xcbiAgdHlwZTogJ2VuZHBvaW50J1xuICBkZXNjcmlwdGlvbj86IHN0cmluZ1xuICB0cmFuc2xhdGlvbnM/OiBPbmxpbmVSZXNvdXJjZVRyYW5zbGF0aW9uc1xufVxuXG5leHBvcnQgdHlwZSBTZXJ2aWNlT25saW5lUmVzb3VyY2UgPSAoU2VydmljZUVuZHBvaW50IHwgT25saW5lTGlua1Jlc291cmNlKSAmIHtcbiAgdHlwZTogT25saW5lUmVzb3VyY2VUeXBlXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VydmljZVJlY29yZCBleHRlbmRzIEJhc2VSZWNvcmQge1xuICBraW5kOiAnc2VydmljZSdcbiAgb25saW5lUmVzb3VyY2VzOiBBcnJheTxTZXJ2aWNlT25saW5lUmVzb3VyY2U+XG4gIHNwYXRpYWxFeHRlbnRzOiBBcnJheTxEYXRhc2V0U3BhdGlhbEV4dGVudD5cbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZXVzZVJlY29yZCBleHRlbmRzIEJhc2VSZWNvcmQge1xuICBraW5kOiAncmV1c2UnXG4gIGxpbmVhZ2U6IHN0cmluZyAvLyBFeHBsYW5hdGlvbiBvZiB0aGUgb3JpZ2luIG9mIHRoaXMgcmVjb3JkIChlLmc6IGhvdywgd2h5KVwiXG4gIG9ubGluZVJlc291cmNlczogQXJyYXk8T25saW5lTGlua1Jlc291cmNlPlxuICByZXVzZVR5cGU6IFJldXNlVHlwZVxuICBzcGF0aWFsRXh0ZW50czogQXJyYXk8RGF0YXNldFNwYXRpYWxFeHRlbnQ+XG4gIHRlbXBvcmFsRXh0ZW50czogQXJyYXk8RGF0YXNldFRlbXBvcmFsRXh0ZW50PlxufVxuXG5leHBvcnQgdHlwZSBEYXRhc2V0RmVhdHVyZUNhdGFsb2cgPSB7XG4gIGZlYXR1cmVUeXBlczogQXJyYXk8e1xuICAgIG5hbWU6IHN0cmluZ1xuICAgIGRlZmluaXRpb246IHN0cmluZ1xuICAgIGF0dHJpYnV0ZXM6IERhdGFzZXRGZWF0dXJlQXR0cmlidXRlW11cbiAgfT5cbn1cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YXNldEZlYXR1cmVBdHRyaWJ1dGVWYWx1ZSB7XG4gIGNvZGU/OiBzdHJpbmdcbiAgZGVmaW5pdGlvbj86IHN0cmluZ1xuICBsYWJlbD86IHN0cmluZ1xufVxuZXhwb3J0IGludGVyZmFjZSBEYXRhc2V0RmVhdHVyZUF0dHJpYnV0ZSB7XG4gIG5hbWU6IHN0cmluZ1xuICBkZWZpbml0aW9uOiBzdHJpbmdcbiAgdHlwZTogc3RyaW5nXG4gIGNvZGU6IHN0cmluZ1xuICB2YWx1ZXM/OiBBcnJheTxEYXRhc2V0RmVhdHVyZUF0dHJpYnV0ZVZhbHVlPlxufVxuZXhwb3J0IGludGVyZmFjZSBEYXRhc2V0RmVhdHVyZVR5cGUge1xuICBhbGlhc2VzOiBzdHJpbmdcbiAgY29kZTogc3RyaW5nXG4gIGlzQWJzdHJhY3Q6IHN0cmluZ1xuICB0eXBlTmFtZTogc3RyaW5nXG4gIGRlZmluaXRpb246IHN0cmluZ1xuICBhdHRyaWJ1dGVUYWJsZTogQXJyYXk8RGF0YXNldEZlYXR1cmVBdHRyaWJ1dGU+XG59XG5cbmV4cG9ydCB0eXBlIFJldXNlVHlwZSA9ICdhcHBsaWNhdGlvbicgfCAnbWFwJyB8ICdvdGhlcidcblxuZXhwb3J0IHR5cGUgT25saW5lUmVzb3VyY2UgPSBEYXRhc2V0T25saW5lUmVzb3VyY2UgfCBTZXJ2aWNlT25saW5lUmVzb3VyY2VcblxuZXhwb3J0IHR5cGUgQ2F0YWxvZ1JlY29yZCA9IERhdGFzZXRSZWNvcmQgfCBSZXVzZVJlY29yZCB8IFNlcnZpY2VSZWNvcmRcblxuZXhwb3J0IHR5cGUgQ2F0YWxvZ1JlY29yZEtleXMgPVxuICB8IGtleW9mIERhdGFzZXRSZWNvcmRcbiAgfCBrZXlvZiBSZXVzZVJlY29yZFxuICB8IGtleW9mIFNlcnZpY2VSZWNvcmRcbiJdfQ==