geonetwork-ui 2.8.0-dev.c06b26576 → 2.8.0-dev.cba2fd2eb

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 (160) hide show
  1. package/esm2022/index.mjs +2 -1
  2. package/esm2022/libs/api/metadata-converter/src/lib/common/distribution.mapper.mjs +5 -1
  3. package/esm2022/libs/api/metadata-converter/src/lib/dcat-ap/dcat-ap.converter.mjs +3 -3
  4. package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.mjs +26 -1
  5. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.mjs +7 -7
  6. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/read-parts.mjs +3 -2
  7. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/write-parts.mjs +4 -3
  8. package/esm2022/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.mjs +10 -10
  9. package/esm2022/libs/api/repository/src/lib/gn4/settings/gn4-settings.service.mjs +3 -2
  10. package/esm2022/libs/common/domain/src/index.mjs +3 -0
  11. package/esm2022/libs/common/domain/src/lib/model/dataviz/dataviz-configuration.model.mjs +1 -1
  12. package/esm2022/libs/common/domain/src/lib/model/record/metadata.model.mjs +3 -1
  13. package/esm2022/libs/common/domain/src/lib/model/search/sort-by.model.mjs +6 -1
  14. package/esm2022/libs/common/domain/src/lib/platform.service.interface.mjs +1 -1
  15. package/esm2022/libs/feature/dataviz/src/index.mjs +2 -1
  16. package/esm2022/libs/feature/dataviz/src/lib/chart-view/chart-view.component.mjs +3 -1
  17. package/esm2022/libs/feature/dataviz/src/lib/service/data.service.mjs +18 -7
  18. package/esm2022/libs/feature/dataviz/src/lib/stac-view/stac-view.component.mjs +51 -0
  19. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.mjs +23 -3
  20. package/esm2022/libs/feature/editor/src/lib/fields.config.mjs +2 -2
  21. package/esm2022/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.mjs +13 -4
  22. package/esm2022/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.mjs +23 -8
  23. package/esm2022/libs/feature/record/src/lib/state/mdview.facade.mjs +14 -1
  24. package/esm2022/libs/feature/router/src/lib/default/router.service.mjs +5 -1
  25. package/esm2022/libs/feature/router/src/lib/default/state/router.effects.mjs +9 -7
  26. package/esm2022/libs/feature/search/src/lib/sort-by/sort-by.component.mjs +8 -12
  27. package/esm2022/libs/ui/elements/src/index.mjs +2 -1
  28. package/esm2022/libs/ui/elements/src/lib/external-link-card/external-link-card.component.mjs +11 -4
  29. package/esm2022/libs/ui/elements/src/lib/metadata-doi/metadata-doi.component.mjs +37 -0
  30. package/esm2022/libs/ui/elements/src/lib/metadata-info/metadata-info.component.mjs +3 -3
  31. package/esm2022/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.mjs +2 -3
  32. package/esm2022/libs/util/shared/src/lib/links/link-classifier.service.mjs +5 -1
  33. package/esm2022/libs/util/shared/src/lib/links/link-utils.mjs +12 -1
  34. package/esm2022/libs/util/shared/src/lib/services/proxy.service.mjs +9 -11
  35. package/esm2022/libs/util/shared/src/lib/utils/sort-by.mjs +9 -6
  36. package/esm2022/translations/de.json +16 -3
  37. package/esm2022/translations/en.json +16 -4
  38. package/esm2022/translations/es.json +15 -2
  39. package/esm2022/translations/fr.json +16 -3
  40. package/esm2022/translations/it.json +17 -4
  41. package/esm2022/translations/nl.json +15 -2
  42. package/esm2022/translations/pt.json +15 -2
  43. package/esm2022/translations/sk.json +16 -3
  44. package/fesm2022/geonetwork-ui.mjs +397 -95
  45. package/fesm2022/geonetwork-ui.mjs.map +1 -1
  46. package/index.d.ts +1 -0
  47. package/index.d.ts.map +1 -1
  48. package/index.ts +1 -0
  49. package/libs/api/metadata-converter/src/lib/common/distribution.mapper.d.ts.map +1 -1
  50. package/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.d.ts.map +1 -1
  51. package/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.d.ts.map +1 -1
  52. package/libs/api/metadata-converter/src/lib/iso19139/read-parts.d.ts +5 -1
  53. package/libs/api/metadata-converter/src/lib/iso19139/read-parts.d.ts.map +1 -1
  54. package/libs/api/metadata-converter/src/lib/iso19139/write-parts.d.ts.map +1 -1
  55. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts +7 -7
  56. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts.map +1 -1
  57. package/libs/api/repository/src/lib/gn4/settings/gn4-settings.service.d.ts.map +1 -1
  58. package/libs/common/domain/src/index.d.ts +3 -0
  59. package/libs/common/domain/src/index.d.ts.map +1 -0
  60. package/libs/common/domain/src/lib/model/dataviz/dataviz-configuration.model.d.ts +1 -1
  61. package/libs/common/domain/src/lib/model/dataviz/dataviz-configuration.model.d.ts.map +1 -1
  62. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts +7 -2
  63. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts.map +1 -1
  64. package/libs/common/domain/src/lib/model/search/sort-by.model.d.ts.map +1 -1
  65. package/libs/common/domain/src/lib/platform.service.interface.d.ts +1 -1
  66. package/libs/common/domain/src/lib/platform.service.interface.d.ts.map +1 -1
  67. package/libs/feature/dataviz/src/index.d.ts +1 -0
  68. package/libs/feature/dataviz/src/index.d.ts.map +1 -1
  69. package/libs/feature/dataviz/src/lib/chart-view/chart-view.component.d.ts.map +1 -1
  70. package/libs/feature/dataviz/src/lib/service/data.service.d.ts.map +1 -1
  71. package/libs/feature/dataviz/src/lib/stac-view/stac-view.component.d.ts +16 -0
  72. package/libs/feature/dataviz/src/lib/stac-view/stac-view.component.d.ts.map +1 -0
  73. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.d.ts +2 -0
  74. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.d.ts.map +1 -1
  75. package/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.d.ts +3 -2
  76. package/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.d.ts.map +1 -1
  77. package/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.d.ts +3 -2
  78. package/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.d.ts.map +1 -1
  79. package/libs/feature/record/src/lib/state/mdview.facade.d.ts +28 -24
  80. package/libs/feature/record/src/lib/state/mdview.facade.d.ts.map +1 -1
  81. package/libs/feature/router/src/lib/default/router.service.d.ts +2 -0
  82. package/libs/feature/router/src/lib/default/router.service.d.ts.map +1 -1
  83. package/libs/feature/router/src/lib/default/state/router.effects.d.ts +3 -1
  84. package/libs/feature/router/src/lib/default/state/router.effects.d.ts.map +1 -1
  85. package/libs/feature/search/src/lib/sort-by/sort-by.component.d.ts +4 -3
  86. package/libs/feature/search/src/lib/sort-by/sort-by.component.d.ts.map +1 -1
  87. package/libs/ui/elements/src/index.d.ts +1 -0
  88. package/libs/ui/elements/src/index.d.ts.map +1 -1
  89. package/libs/ui/elements/src/lib/downloads-list/downloads-list.component.d.ts +1 -1
  90. package/libs/ui/elements/src/lib/external-link-card/external-link-card.component.d.ts +3 -2
  91. package/libs/ui/elements/src/lib/external-link-card/external-link-card.component.d.ts.map +1 -1
  92. package/libs/ui/elements/src/lib/metadata-doi/metadata-doi.component.d.ts +8 -0
  93. package/libs/ui/elements/src/lib/metadata-doi/metadata-doi.component.d.ts.map +1 -0
  94. package/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.d.ts.map +1 -1
  95. package/libs/util/shared/src/lib/links/link-classifier.service.d.ts.map +1 -1
  96. package/libs/util/shared/src/lib/links/link-utils.d.ts +6 -0
  97. package/libs/util/shared/src/lib/links/link-utils.d.ts.map +1 -1
  98. package/libs/util/shared/src/lib/services/proxy.service.d.ts +5 -4
  99. package/libs/util/shared/src/lib/services/proxy.service.d.ts.map +1 -1
  100. package/libs/util/shared/src/lib/utils/sort-by.d.ts.map +1 -1
  101. package/package.json +1 -1
  102. package/src/libs/api/metadata-converter/src/lib/common/distribution.mapper.ts +2 -0
  103. package/src/libs/api/metadata-converter/src/lib/dcat-ap/dcat-ap.converter.ts +2 -2
  104. package/src/libs/api/metadata-converter/src/lib/fixtures/generic.records.ts +1 -1
  105. package/src/libs/api/metadata-converter/src/lib/fixtures/geo2france.records.service+eaux-usees.ts +1 -1
  106. package/src/libs/api/metadata-converter/src/lib/fixtures/geo2france.records.ts +5 -2
  107. package/src/libs/api/metadata-converter/src/lib/fixtures/geocat-ch.records.ts +1 -1
  108. package/src/libs/api/metadata-converter/src/lib/fixtures/georhena.records.ts +1 -1
  109. package/src/libs/api/metadata-converter/src/lib/fixtures/metawal.records.ts +2 -2
  110. package/src/libs/api/metadata-converter/src/lib/fixtures/wallonie.records.reuse.ts +1 -1
  111. package/src/libs/api/metadata-converter/src/lib/fixtures/wallonie.records.service+napitswallonia.ts +1 -1
  112. package/src/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.ts +28 -0
  113. package/src/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.ts +13 -6
  114. package/src/libs/api/metadata-converter/src/lib/iso19139/read-parts.ts +6 -2
  115. package/src/libs/api/metadata-converter/src/lib/iso19139/write-parts.ts +4 -2
  116. package/src/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.ts +37 -36
  117. package/src/libs/api/repository/src/lib/gn4/settings/gn4-settings.service.ts +3 -2
  118. package/src/libs/common/domain/src/index.ts +2 -0
  119. package/src/libs/common/domain/src/lib/model/dataviz/dataviz-configuration.model.ts +1 -1
  120. package/src/libs/common/domain/src/lib/model/record/metadata.model.ts +12 -1
  121. package/src/libs/common/domain/src/lib/model/search/sort-by.model.ts +5 -0
  122. package/src/libs/common/domain/src/lib/platform.service.interface.ts +1 -1
  123. package/src/libs/common/fixtures/src/lib/elasticsearch/metadata-links.fixtures.ts +5 -0
  124. package/src/libs/common/fixtures/src/lib/link.fixtures.ts +19 -0
  125. package/src/libs/feature/dataviz/src/index.ts +1 -0
  126. package/src/libs/feature/dataviz/src/lib/chart-view/chart-view.component.ts +1 -0
  127. package/src/libs/feature/dataviz/src/lib/service/data.service.ts +16 -5
  128. package/src/libs/feature/dataviz/src/lib/stac-view/stac-view.component.css +0 -0
  129. package/src/libs/feature/dataviz/src/lib/stac-view/stac-view.component.html +40 -0
  130. package/src/libs/feature/dataviz/src/lib/stac-view/stac-view.component.ts +62 -0
  131. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.html +3 -3
  132. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.ts +30 -0
  133. package/src/libs/feature/editor/src/lib/fields.config.ts +1 -1
  134. package/src/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.ts +7 -1
  135. package/src/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.ts +23 -4
  136. package/src/libs/feature/record/src/lib/state/mdview.facade.ts +30 -1
  137. package/src/libs/feature/router/src/lib/default/router.service.ts +8 -0
  138. package/src/libs/feature/router/src/lib/default/state/router.effects.ts +6 -7
  139. package/src/libs/feature/search/src/lib/sort-by/sort-by.component.ts +8 -12
  140. package/src/libs/ui/elements/src/index.ts +1 -0
  141. package/src/libs/ui/elements/src/lib/external-link-card/external-link-card.component.html +43 -22
  142. package/src/libs/ui/elements/src/lib/external-link-card/external-link-card.component.ts +12 -3
  143. package/src/libs/ui/elements/src/lib/metadata-doi/metadata-doi.component.css +0 -0
  144. package/src/libs/ui/elements/src/lib/metadata-doi/metadata-doi.component.html +31 -0
  145. package/src/libs/ui/elements/src/lib/metadata-doi/metadata-doi.component.ts +30 -0
  146. package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.html +56 -14
  147. package/src/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.ts +4 -2
  148. package/src/libs/util/shared/src/lib/links/link-classifier.service.ts +4 -0
  149. package/src/libs/util/shared/src/lib/links/link-utils.ts +11 -0
  150. package/src/libs/util/shared/src/lib/services/proxy.service.ts +6 -2
  151. package/src/libs/util/shared/src/lib/utils/sort-by.ts +8 -5
  152. package/translations/de.json +16 -3
  153. package/translations/en.json +16 -4
  154. package/translations/es.json +15 -2
  155. package/translations/fr.json +16 -3
  156. package/translations/it.json +17 -4
  157. package/translations/nl.json +15 -2
  158. package/translations/pt.json +15 -2
  159. package/translations/sk.json +16 -3
  160. package/src/libs/common/domain/src/lib/index.ts +0 -2
package/esm2022/index.mjs CHANGED
@@ -21,4 +21,5 @@ export * from './libs/util/shared/src';
21
21
  export * from './libs/util/i18n/src';
22
22
  export * from './libs/util/app-config/src';
23
23
  export * from './libs/util/data-fetcher/src';
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwwRUFBMEU7QUFDMUUsY0FBYyxtQ0FBbUMsQ0FBQTtBQUNqRCxjQUFjLDJCQUEyQixDQUFBO0FBQ3pDLGNBQWMsd0JBQXdCLENBQUE7QUFDdEMsY0FBYyxrQ0FBa0MsQ0FBQTtBQUNoRCxjQUFjLDJCQUEyQixDQUFBO0FBQ3pDLGNBQWMsMkJBQTJCLENBQUE7QUFDekMsY0FBYyw0QkFBNEIsQ0FBQTtBQUMxQyxjQUFjLDRCQUE0QixDQUFBO0FBQzFDLGNBQWMsMkJBQTJCLENBQUE7QUFDekMsY0FBYywyQkFBMkIsQ0FBQTtBQUN6QyxjQUFjLG1CQUFtQixDQUFBO0FBQ2pDLGNBQWMsdUJBQXVCLENBQUE7QUFDckMsY0FBYyx1QkFBdUIsQ0FBQTtBQUNyQyxjQUFjLHNCQUFzQixDQUFBO0FBQ3BDLGNBQWMsdUJBQXVCLENBQUE7QUFDckMsY0FBYyxzQkFBc0IsQ0FBQTtBQUNwQyxjQUFjLHdCQUF3QixDQUFBO0FBQ3RDLGNBQWMsc0JBQXNCLENBQUE7QUFDcEMsY0FBYyx3QkFBd0IsQ0FBQTtBQUN0QyxjQUFjLHNCQUFzQixDQUFBO0FBQ3BDLGNBQWMsNEJBQTRCLENBQUE7QUFDMUMsY0FBYyw4QkFBOEIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8vIFRoaXMgZmlsZSBjb250YWlucyBldmVyeXRoaW5nIHRoYXQgd2lsbCBiZSBpbmNsdWRlZCBpbiB0aGUgTlBNIHBhY2thZ2UhXG5leHBvcnQgKiBmcm9tICcuL2xpYnMvYXBpL21ldGFkYXRhLWNvbnZlcnRlci9zcmMnXG5leHBvcnQgKiBmcm9tICcuL2xpYnMvYXBpL3JlcG9zaXRvcnkvc3JjJ1xuZXhwb3J0ICogZnJvbSAnLi9saWJzL2ZlYXR1cmUvbWFwL3NyYydcbmV4cG9ydCAqIGZyb20gJy4vbGlicy9mZWF0dXJlL25vdGlmaWNhdGlvbnMvc3JjJ1xuZXhwb3J0ICogZnJvbSAnLi9saWJzL2ZlYXR1cmUvc2VhcmNoL3NyYydcbmV4cG9ydCAqIGZyb20gJy4vbGlicy9mZWF0dXJlL3JlY29yZC9zcmMnXG5leHBvcnQgKiBmcm9tICcuL2xpYnMvZmVhdHVyZS9kYXRhdml6L3NyYydcbmV4cG9ydCAqIGZyb20gJy4vbGlicy9mZWF0dXJlL2NhdGFsb2cvc3JjJ1xuZXhwb3J0ICogZnJvbSAnLi9saWJzL2ZlYXR1cmUvZWRpdG9yL3NyYydcbmV4cG9ydCAqIGZyb20gJy4vbGlicy9mZWF0dXJlL3JvdXRlci9zcmMnXG5leHBvcnQgKiBmcm9tICcuL2xpYnMvdWkvbWFwL3NyYydcbmV4cG9ydCAqIGZyb20gJy4vbGlicy91aS9jYXRhbG9nL3NyYydcbmV4cG9ydCAqIGZyb20gJy4vbGlicy91aS9kYXRhdml6L3NyYydcbmV4cG9ydCAqIGZyb20gJy4vbGlicy91aS9zZWFyY2gvc3JjJ1xuZXhwb3J0ICogZnJvbSAnLi9saWJzL3VpL3dpZGdldHMvc3JjJ1xuZXhwb3J0ICogZnJvbSAnLi9saWJzL3VpL2lucHV0cy9zcmMnXG5leHBvcnQgKiBmcm9tICcuL2xpYnMvdWkvZWxlbWVudHMvc3JjJ1xuZXhwb3J0ICogZnJvbSAnLi9saWJzL3VpL2xheW91dC9zcmMnXG5leHBvcnQgKiBmcm9tICcuL2xpYnMvdXRpbC9zaGFyZWQvc3JjJ1xuZXhwb3J0ICogZnJvbSAnLi9saWJzL3V0aWwvaTE4bi9zcmMnXG5leHBvcnQgKiBmcm9tICcuL2xpYnMvdXRpbC9hcHAtY29uZmlnL3NyYydcbmV4cG9ydCAqIGZyb20gJy4vbGlicy91dGlsL2RhdGEtZmV0Y2hlci9zcmMnXG4iXX0=
24
+ export * from './libs/common/domain/src';
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwwRUFBMEU7QUFDMUUsY0FBYyxtQ0FBbUMsQ0FBQTtBQUNqRCxjQUFjLDJCQUEyQixDQUFBO0FBQ3pDLGNBQWMsd0JBQXdCLENBQUE7QUFDdEMsY0FBYyxrQ0FBa0MsQ0FBQTtBQUNoRCxjQUFjLDJCQUEyQixDQUFBO0FBQ3pDLGNBQWMsMkJBQTJCLENBQUE7QUFDekMsY0FBYyw0QkFBNEIsQ0FBQTtBQUMxQyxjQUFjLDRCQUE0QixDQUFBO0FBQzFDLGNBQWMsMkJBQTJCLENBQUE7QUFDekMsY0FBYywyQkFBMkIsQ0FBQTtBQUN6QyxjQUFjLG1CQUFtQixDQUFBO0FBQ2pDLGNBQWMsdUJBQXVCLENBQUE7QUFDckMsY0FBYyx1QkFBdUIsQ0FBQTtBQUNyQyxjQUFjLHNCQUFzQixDQUFBO0FBQ3BDLGNBQWMsdUJBQXVCLENBQUE7QUFDckMsY0FBYyxzQkFBc0IsQ0FBQTtBQUNwQyxjQUFjLHdCQUF3QixDQUFBO0FBQ3RDLGNBQWMsc0JBQXNCLENBQUE7QUFDcEMsY0FBYyx3QkFBd0IsQ0FBQTtBQUN0QyxjQUFjLHNCQUFzQixDQUFBO0FBQ3BDLGNBQWMsNEJBQTRCLENBQUE7QUFDMUMsY0FBYyw4QkFBOEIsQ0FBQTtBQUM1QyxjQUFjLDBCQUEwQixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLy8gVGhpcyBmaWxlIGNvbnRhaW5zIGV2ZXJ5dGhpbmcgdGhhdCB3aWxsIGJlIGluY2x1ZGVkIGluIHRoZSBOUE0gcGFja2FnZSFcbmV4cG9ydCAqIGZyb20gJy4vbGlicy9hcGkvbWV0YWRhdGEtY29udmVydGVyL3NyYydcbmV4cG9ydCAqIGZyb20gJy4vbGlicy9hcGkvcmVwb3NpdG9yeS9zcmMnXG5leHBvcnQgKiBmcm9tICcuL2xpYnMvZmVhdHVyZS9tYXAvc3JjJ1xuZXhwb3J0ICogZnJvbSAnLi9saWJzL2ZlYXR1cmUvbm90aWZpY2F0aW9ucy9zcmMnXG5leHBvcnQgKiBmcm9tICcuL2xpYnMvZmVhdHVyZS9zZWFyY2gvc3JjJ1xuZXhwb3J0ICogZnJvbSAnLi9saWJzL2ZlYXR1cmUvcmVjb3JkL3NyYydcbmV4cG9ydCAqIGZyb20gJy4vbGlicy9mZWF0dXJlL2RhdGF2aXovc3JjJ1xuZXhwb3J0ICogZnJvbSAnLi9saWJzL2ZlYXR1cmUvY2F0YWxvZy9zcmMnXG5leHBvcnQgKiBmcm9tICcuL2xpYnMvZmVhdHVyZS9lZGl0b3Ivc3JjJ1xuZXhwb3J0ICogZnJvbSAnLi9saWJzL2ZlYXR1cmUvcm91dGVyL3NyYydcbmV4cG9ydCAqIGZyb20gJy4vbGlicy91aS9tYXAvc3JjJ1xuZXhwb3J0ICogZnJvbSAnLi9saWJzL3VpL2NhdGFsb2cvc3JjJ1xuZXhwb3J0ICogZnJvbSAnLi9saWJzL3VpL2RhdGF2aXovc3JjJ1xuZXhwb3J0ICogZnJvbSAnLi9saWJzL3VpL3NlYXJjaC9zcmMnXG5leHBvcnQgKiBmcm9tICcuL2xpYnMvdWkvd2lkZ2V0cy9zcmMnXG5leHBvcnQgKiBmcm9tICcuL2xpYnMvdWkvaW5wdXRzL3NyYydcbmV4cG9ydCAqIGZyb20gJy4vbGlicy91aS9lbGVtZW50cy9zcmMnXG5leHBvcnQgKiBmcm9tICcuL2xpYnMvdWkvbGF5b3V0L3NyYydcbmV4cG9ydCAqIGZyb20gJy4vbGlicy91dGlsL3NoYXJlZC9zcmMnXG5leHBvcnQgKiBmcm9tICcuL2xpYnMvdXRpbC9pMThuL3NyYydcbmV4cG9ydCAqIGZyb20gJy4vbGlicy91dGlsL2FwcC1jb25maWcvc3JjJ1xuZXhwb3J0ICogZnJvbSAnLi9saWJzL3V0aWwvZGF0YS1mZXRjaGVyL3NyYydcbmV4cG9ydCAqIGZyb20gJy4vbGlicy9jb21tb24vZG9tYWluL3NyYydcbiJdfQ==
@@ -15,6 +15,10 @@ export function matchProtocol(protocol) {
15
15
  return 'esriRest';
16
16
  if (/DOWNLOAD-1/i.test(protocol))
17
17
  return 'GPFDL';
18
+ if (/DB:POSTGIS/i.test(protocol))
19
+ return 'postgis';
20
+ if (/stac\W*items/i.test(protocol))
21
+ return 'stac';
18
22
  return 'other';
19
23
  }
20
24
  export function matchMimeType(format) {
@@ -23,4 +27,4 @@ export function matchMimeType(format) {
23
27
  // TODO: check whether the format is a valid mime type
24
28
  return format || null;
25
29
  }
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzdHJpYnV0aW9uLm1hcHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYXBpL21ldGFkYXRhLWNvbnZlcnRlci9zcmMvbGliL2NvbW1vbi9kaXN0cmlidXRpb24ubWFwcGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sVUFBVSxhQUFhLENBQUMsUUFBZ0I7SUFDNUMsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUFFLE9BQU8sS0FBSyxDQUFBO0lBQ3ZDLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7UUFBRSxPQUFPLEtBQUssQ0FBQTtJQUN2QyxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQUUsT0FBTyxNQUFNLENBQUE7SUFDekMsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUFFLE9BQU8sS0FBSyxDQUFBO0lBQ3ZDLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7UUFBRSxPQUFPLEtBQUssQ0FBQTtJQUN2QyxJQUFJLHVCQUF1QixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7UUFBRSxPQUFPLGFBQWEsQ0FBQTtJQUNoRSxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQUUsT0FBTyxVQUFVLENBQUE7SUFDN0MsSUFBSSxhQUFhLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUFFLE9BQU8sT0FBTyxDQUFBO0lBQ2hELE9BQU8sT0FBTyxDQUFBO0FBQ2hCLENBQUM7QUFFRCxNQUFNLFVBQVUsYUFBYSxDQUFDLE1BQWM7SUFDMUMsSUFBSSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQUUsT0FBTyxtQkFBbUIsQ0FBQTtJQUM3RCxzREFBc0Q7SUFDdEQsT0FBTyxNQUFNLElBQUksSUFBSSxDQUFBO0FBQ3ZCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTZXJ2aWNlUHJvdG9jb2wgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9kb21haW4vc3JjL2xpYi9tb2RlbC9yZWNvcmQnXG5cbmV4cG9ydCBmdW5jdGlvbiBtYXRjaFByb3RvY29sKHByb3RvY29sOiBzdHJpbmcpOiBTZXJ2aWNlUHJvdG9jb2wge1xuICBpZiAoL3dtcy9pLnRlc3QocHJvdG9jb2wpKSByZXR1cm4gJ3dtcydcbiAgaWYgKC93ZnMvaS50ZXN0KHByb3RvY29sKSkgcmV0dXJuICd3ZnMnXG4gIGlmICgvd210cy9pLnRlc3QocHJvdG9jb2wpKSByZXR1cm4gJ3dtdHMnXG4gIGlmICgvdG1zL2kudGVzdChwcm90b2NvbCkpIHJldHVybiAndG1zJ1xuICBpZiAoL3dwcy9pLnRlc3QocHJvdG9jb2wpKSByZXR1cm4gJ3dwcydcbiAgaWYgKC9vZ2NcXFcqYXBpXFxXKmZlYXR1cmVzL2kudGVzdChwcm90b2NvbCkpIHJldHVybiAnb2djRmVhdHVyZXMnXG4gIGlmICgvZXNyaS9pLnRlc3QocHJvdG9jb2wpKSByZXR1cm4gJ2VzcmlSZXN0J1xuICBpZiAoL0RPV05MT0FELTEvaS50ZXN0KHByb3RvY29sKSkgcmV0dXJuICdHUEZETCdcbiAgcmV0dXJuICdvdGhlcidcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1hdGNoTWltZVR5cGUoZm9ybWF0OiBzdHJpbmcpOiBzdHJpbmcge1xuICBpZiAoL3NocHxzaGFwZWZpbGUvaS50ZXN0KGZvcm1hdCkpIHJldHVybiAneC1naXMveC1zaGFwZWZpbGUnXG4gIC8vIFRPRE86IGNoZWNrIHdoZXRoZXIgdGhlIGZvcm1hdCBpcyBhIHZhbGlkIG1pbWUgdHlwZVxuICByZXR1cm4gZm9ybWF0IHx8IG51bGxcbn1cbiJdfQ==
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzdHJpYnV0aW9uLm1hcHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYXBpL21ldGFkYXRhLWNvbnZlcnRlci9zcmMvbGliL2NvbW1vbi9kaXN0cmlidXRpb24ubWFwcGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sVUFBVSxhQUFhLENBQUMsUUFBZ0I7SUFDNUMsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUFFLE9BQU8sS0FBSyxDQUFBO0lBQ3ZDLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7UUFBRSxPQUFPLEtBQUssQ0FBQTtJQUN2QyxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQUUsT0FBTyxNQUFNLENBQUE7SUFDekMsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUFFLE9BQU8sS0FBSyxDQUFBO0lBQ3ZDLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7UUFBRSxPQUFPLEtBQUssQ0FBQTtJQUN2QyxJQUFJLHVCQUF1QixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7UUFBRSxPQUFPLGFBQWEsQ0FBQTtJQUNoRSxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQUUsT0FBTyxVQUFVLENBQUE7SUFDN0MsSUFBSSxhQUFhLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUFFLE9BQU8sT0FBTyxDQUFBO0lBQ2hELElBQUksYUFBYSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7UUFBRSxPQUFPLFNBQVMsQ0FBQTtJQUNsRCxJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQUUsT0FBTyxNQUFNLENBQUE7SUFDakQsT0FBTyxPQUFPLENBQUE7QUFDaEIsQ0FBQztBQUVELE1BQU0sVUFBVSxhQUFhLENBQUMsTUFBYztJQUMxQyxJQUFJLGdCQUFnQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7UUFBRSxPQUFPLG1CQUFtQixDQUFBO0lBQzdELHNEQUFzRDtJQUN0RCxPQUFPLE1BQU0sSUFBSSxJQUFJLENBQUE7QUFDdkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNlcnZpY2VQcm90b2NvbCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL2RvbWFpbi9zcmMvbGliL21vZGVsL3JlY29yZCdcblxuZXhwb3J0IGZ1bmN0aW9uIG1hdGNoUHJvdG9jb2wocHJvdG9jb2w6IHN0cmluZyk6IFNlcnZpY2VQcm90b2NvbCB7XG4gIGlmICgvd21zL2kudGVzdChwcm90b2NvbCkpIHJldHVybiAnd21zJ1xuICBpZiAoL3dmcy9pLnRlc3QocHJvdG9jb2wpKSByZXR1cm4gJ3dmcydcbiAgaWYgKC93bXRzL2kudGVzdChwcm90b2NvbCkpIHJldHVybiAnd210cydcbiAgaWYgKC90bXMvaS50ZXN0KHByb3RvY29sKSkgcmV0dXJuICd0bXMnXG4gIGlmICgvd3BzL2kudGVzdChwcm90b2NvbCkpIHJldHVybiAnd3BzJ1xuICBpZiAoL29nY1xcVyphcGlcXFcqZmVhdHVyZXMvaS50ZXN0KHByb3RvY29sKSkgcmV0dXJuICdvZ2NGZWF0dXJlcydcbiAgaWYgKC9lc3JpL2kudGVzdChwcm90b2NvbCkpIHJldHVybiAnZXNyaVJlc3QnXG4gIGlmICgvRE9XTkxPQUQtMS9pLnRlc3QocHJvdG9jb2wpKSByZXR1cm4gJ0dQRkRMJ1xuICBpZiAoL0RCOlBPU1RHSVMvaS50ZXN0KHByb3RvY29sKSkgcmV0dXJuICdwb3N0Z2lzJ1xuICBpZiAoL3N0YWNcXFcqaXRlbXMvaS50ZXN0KHByb3RvY29sKSkgcmV0dXJuICdzdGFjJ1xuICByZXR1cm4gJ290aGVyJ1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWF0Y2hNaW1lVHlwZShmb3JtYXQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmICgvc2hwfHNoYXBlZmlsZS9pLnRlc3QoZm9ybWF0KSkgcmV0dXJuICd4LWdpcy94LXNoYXBlZmlsZSdcbiAgLy8gVE9ETzogY2hlY2sgd2hldGhlciB0aGUgZm9ybWF0IGlzIGEgdmFsaWQgbWltZSB0eXBlXG4gIHJldHVybiBmb3JtYXQgfHwgbnVsbFxufVxuIl19
@@ -23,7 +23,7 @@ export class DcatApConverter extends BaseConverter {
23
23
  spatialExtents: readSpatialExtents,
24
24
  keywords: readKeywords,
25
25
  topics: readTopics,
26
- resourceIdentifier: () => undefined,
26
+ resourceIdentifiers: () => undefined,
27
27
  recordUpdated: readRecordUpdated,
28
28
  recordCreated: readRecordCreated,
29
29
  resourceUpdated: readResourceUpdated,
@@ -59,7 +59,7 @@ export class DcatApConverter extends BaseConverter {
59
59
  recordUpdated: () => undefined,
60
60
  recordCreated: () => undefined,
61
61
  recordPublished: () => undefined,
62
- resourceIdentifier: () => undefined,
62
+ resourceIdentifiers: () => undefined,
63
63
  resourceUpdated: () => undefined,
64
64
  resourceCreated: () => undefined,
65
65
  resourcePublished: () => undefined,
@@ -276,4 +276,4 @@ export class DcatApConverter extends BaseConverter {
276
276
  return dataStore.serialize(undefined, this.contentType, null, {});
277
277
  }
278
278
  }
279
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGNhdC1hcC5jb252ZXJ0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FwaS9tZXRhZGF0YS1jb252ZXJ0ZXIvc3JjL2xpYi9kY2F0LWFwL2RjYXQtYXAuY29udmVydGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVFBLE9BQU8sRUFBRSxhQUFhLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUN4RSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFDMUMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0JBQW9CLENBQUE7QUFDeEQsT0FBTyxFQUNMLFlBQVksRUFDWixZQUFZLEVBQ1osdUJBQXVCLEVBQ3ZCLG1CQUFtQixFQUNuQixZQUFZLEVBQ1osZUFBZSxFQUNmLFlBQVksRUFDWixtQkFBbUIsRUFDbkIscUJBQXFCLEVBQ3JCLGlCQUFpQixFQUNqQixpQkFBaUIsRUFDakIsbUJBQW1CLEVBQ25CLG1CQUFtQixFQUNuQixrQkFBa0IsRUFDbEIsU0FBUyxFQUNULFVBQVUsRUFDVixvQkFBb0IsR0FDckIsTUFBTSxjQUFjLENBQUE7QUFDckIsT0FBTyxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDaEYsT0FBTyxFQUFFLEtBQUssRUFBK0IsR0FBRyxFQUFFLE1BQU0sUUFBUSxDQUFBO0FBQ2hFLE9BQU8sRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBQ3hDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFFdEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBQy9DLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDBCQUEwQixDQUFBO0FBRTNELE1BQU0sT0FBTyxlQUFnQixTQUFRLGFBQXFCO0lBd0Z4RCxZQUNVLGNB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UyxFQUFFLFVBQVUsQ0FBQyxDQUFBO1lBQzFELFlBQVksQ0FBQyxpQkFBaUIsQ0FBQztnQkFDN0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLE1BQU0sRUFBRSxTQUFTLEVBQUUsVUFBVSxDQUFDLENBQUE7WUFDaEUsWUFBWSxDQUFDLFNBQVMsQ0FBQztnQkFDckIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEVBQUUsU0FBUyxFQUFFLFVBQVUsQ0FBQyxDQUFBO1FBQzFELENBQUM7UUFDRCxZQUFZLENBQUMsZ0JBQWdCLENBQUM7WUFDNUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLE1BQU0sRUFBRSxTQUFTLEVBQUUsVUFBVSxDQUFDLENBQUE7UUFFL0QsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3JDLE9BQU8sZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUE7UUFDcEMsQ0FBQztRQUVELE9BQU8sU0FBUyxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUE7SUFDbkUsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2F0YWxvZ1JlY29yZCxcbiAgQ2F0YWxvZ1JlY29yZEtleXMsXG4gIERhdGFzZXRSZWNvcmQsXG4gIExhbmd1YWdlQ29kZSxcbiAgUmVjb3JkVHJhbnNsYXRpb25zLFxuICBTZXJ2aWNlUmVjb3JkLFxufSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9kb21haW4vc3JjL2xpYi9tb2RlbC9yZWNvcmQnXG5pbXBvcnQgeyBCYXNlQ29udmVydGVyLCBNZXRhZGF0YU1hcHBlckNvbnRleHQgfSBmcm9tICcuLi9iYXNlLmNvbnZlcnRlcidcbmltcG9ydCB7IGlzRXF1YWwgfSBmcm9tICcuLi9jb252ZXJ0LXV0aWxzJ1xuaW1wb3J0IHsgaXNGaWVsZFRyYW5zbGF0YWJsZSB9IGZyb20gJy4uL3RyYW5zbGF0ZS11dGlscydcbmltcG9ydCB7XG4gIHJlYWRBYnN0cmFjdCxcbiAgcmVhZENvbnRhY3RzLFxuICByZWFkQ29udGFjdHNGb3JSZXNvdXJjZSxcbiAgcmVhZERlZmF1bHRMYW5ndWFnZSxcbiAgcmVhZEtleXdvcmRzLFxuICByZWFkTGFuZGluZ1BhZ2UsXG4gIHJlYWRMaWNlbnNlcyxcbiAgcmVhZE9ubGluZVJlc291cmNlcyxcbiAgcmVhZE93bmVyT3JnYW5pemF0aW9uLFxuICByZWFkUmVjb3JkQ3JlYXRlZCxcbiAgcmVhZFJlY29yZFVwZGF0ZWQsXG4gIHJlYWRSZXNvdXJjZUNyZWF0ZWQsXG4gIHJlYWRSZXNvdXJjZVVwZGF0ZWQsXG4gIHJlYWRTcGF0aWFsRXh0ZW50cyxcbiAgcmVhZFRpdGxlLFxuICByZWFkVG9waWNzLFxuICByZWFkVW5pcXVlSWRlbnRpZmllcixcbn0gZnJvbSAnLi9yZWFkLXBhcnRzJ1xuaW1wb3J0IHsgd3JpdGVBYnN0cmFjdCwgd3JpdGVUaXRsZSwgd3JpdGVVbmlxdWVJZGVudGlmaWVyIH0gZnJvbSAnLi93cml0ZS1wYXJ0cydcbmltcG9ydCB7IGdyYXBoLCBOYW1lZE5vZGUsIFN0YXRlbWVudCwgU3RvcmUsIHN5bSB9IGZyb20gJ3JkZmxpYidcbmltcG9ydCB7IERDQVQsIFJERiB9IGZyb20gJy4vbmFtZXNwYWNlcydcbmltcG9ydCB7IEJBU0VfVVJJIH0gZnJvbSAnLi91dGlscy91cmknXG5pbXBvcnQgdHlwZSB7IENvbnRlbnRUeXBlIH0gZnJvbSAncmRmbGliL2xpYi90eXBlcydcbmltcG9ydCB7IGxvYWRHcmFwaCB9IGZyb20gJy4vdXRpbHMvZ3JhcGgtdXRpbHMnXG5pbXBvcnQgeyBleHBvcnRHcmFwaFRvWG1sIH0gZnJvbSAnLi91dGlscy9zZXJpYWxpemUtdG8teG1sJ1xuXG5leHBvcnQgY2xhc3MgRGNhdEFwQ29udmVydGVyIGV4dGVuZHMgQmFzZUNvbnZlcnRlcjxzdHJpbmc+IHtcbiAgcHJvdGVjdGVkIHJlYWRlcnM6IFJlY29yZDxcbiAgICBDYXRhbG9nUmVjb3JkS2V5cyxcbiAgICAoXG4gICAgICBkYXRhU3RvcmU6IFN0b3JlLFxuICAgICAgY2F0YWxvZ1JlY29yZDogTmFtZWROb2RlLFxuICAgICAgdHJhbnNsYXRpb25zOiBSZWNvcmRUcmFuc2xhdGlvbnMsXG4gICAgICBkZWZhdWx0TGFuZ3VhZ2U6IExhbmd1YWdlQ29kZVxuICAgICkgPT4gdW5rbm93blxuICA+ID0ge1xuICAgIHVuaXF1ZUlkZW50aWZpZXI6IHJlYWRVbmlxdWVJZGVudGlmaWVyLFxuICAgIHRpdGxlOiByZWFkVGl0bGUsXG4gICAgYWJzdHJhY3Q6IHJlYWRBYnN0cmFjdCxcbiAgICBjb250YWN0czogcmVhZENvbnRhY3RzLFxuICAgIGNvbnRhY3RzRm9yUmVzb3VyY2U6IHJlYWRDb250YWN0c0ZvclJlc291cmNlLFxuICAgIGxhbmRpbmdQYWdlOiByZWFkTGFuZGluZ1BhZ2UsXG4gICAgb25saW5lUmVzb3VyY2VzOiByZWFkT25saW5lUmVzb3VyY2VzLFxuICAgIHNwYXRpYWxFeHRlbnRzOiByZWFkU3BhdGlhbEV4dGVudHMsXG4gICAga2V5d29yZHM6IHJlYWRLZXl3b3JkcyxcbiAgICB0b3BpY3M6IHJlYWRUb3BpY3MsXG4gICAgcmVzb3VyY2VJZGVudGlmaWVyOiAoKSA9PiB1bmRlZmluZWQsXG4gICAgcmVjb3JkVXBkYXRlZDogcmVhZFJlY29yZFVwZGF0ZWQsXG4gICAgcmVjb3JkQ3JlYXRlZDogcmVhZFJlY29yZENyZWF0ZWQsXG4gICAgcmVzb3VyY2VVcGRhdGVkOiByZWFkUmVzb3VyY2VVcGRhdGVkLFxuICAgIHJlc291cmNlQ3JlYXRlZDogcmVhZFJlc291cmNlQ3JlYXRlZCxcbiAgICBvd25lck9yZ2FuaXphdGlvbjogcmVhZE93bmVyT3JnYW5pemF0aW9uLFxuICAgIGxpY2Vuc2VzOiByZWFkTGljZW5zZXMsXG4gICAgZGVmYXVsdExhbmd1YWdlOiByZWFkRGVmYXVsdExhbmd1YWdlLFxuICAgIG90aGVyTGFuZ3VhZ2VzOiAoKSA9PiBbXSwgLy8gbGFuZ3VhZ2VzIHdpbGwgYmUgaW5mZXJyZWQgZnJvbSBmb3VuZCB0cmFuc2xhdGlvbnNcbiAgICAvLyBUT0RPXG4gICAga2luZDogKCkgPT4gJ2RhdGFzZXQnLFxuICAgIHJlY29yZFB1Ymxpc2hlZDogKCkgPT4gdW5kZWZpbmVkLFxuICAgIHJlc291cmNlUHVibGlzaGVkOiAoKSA9PiB1bmRlZmluZWQsXG4gICAgcmV1c2VUeXBlOiAoKSA9PiB1bmRlZmluZWQsXG4gICAgbGVnYWxDb25zdHJhaW50czogKCkgPT4gW10sXG4gICAgc2VjdXJpdHlDb25zdHJhaW50czogKCkgPT4gW10sXG4gICAgb3RoZXJDb25zdHJhaW50czogKCkgPT4gW10sXG4gICAgc3RhdHVzOiAoKSA9PiAnY29tcGxldGVkJyxcbiAgICB1cGRhdGVGcmVxdWVuY3k6ICgpID0+ICd1bmtub3duJyxcbiAgICBvdmVydmlld3M6ICgpID0+IFtdLFxuICAgIGxpbmVhZ2U6ICgpID0+ICcnLFxuICAgIHRlbXBvcmFsRXh0ZW50czogKCkgPT4gW10sXG4gICAgc3BhdGlhbFJlcHJlc2VudGF0aW9uOiAoKSA9PiB1bmRlZmluZWQsXG4gICAgZXh0cmFzOiAoKSA9PiB1bmRlZmluZWQsXG4gICAgdHJhbnNsYXRpb25zOiAoKSA9PiB1bmRlZmluZWQsXG4gIH1cblxuICBwcm90ZWN0ZWQgd3JpdGVyczogUmVjb3JkPFxuICAgIENhdGFsb2dSZWNvcmRLZXlzLFxuICAgIChyZWNvcmQ6IENhdGFsb2dSZWNvcmQsIGRhdGFTdG9yZTogU3RvcmUsIGNhdGFsb2dSZWNvcmQ6IE5hbWVkTm9kZSkgPT4gdm9pZFxuICA+ID0ge1xuICAgIHVuaXF1ZUlkZW50aWZpZXI6IHdyaXRlVW5pcXVlSWRlbnRpZmllcixcbiAgICB0aXRsZTogd3JpdGVUaXRsZSxcbiAgICBhYnN0cmFjdDogd3JpdGVBYnN0cmFjdCxcbiAgICAvLyBUT0RPXG4gICAga2luZDogKCkgPT4gdW5kZWZpbmVkLFxuICAgIG93bmVyT3JnYW5pemF0aW9uOiAoKSA9PiB1bmRlZmluZWQsXG4gICAgcmVjb3JkVXBkYXRlZDogKCkgPT4gdW5kZWZpbmVkLFxuICAgIHJlY29yZENyZWF0ZWQ6ICgpID0+IHVuZGVmaW5lZCxcbiAgICByZWNvcmRQdWJsaXNoZWQ6ICgpID0+IHVuZGVmaW5lZCxcbiAgICByZXNvdXJjZUlkZW50aWZpZXI6ICgpID0+IHVuZGVmaW5lZCxcbiAgICByZXNvdXJjZVVwZGF0ZWQ6ICgpID0+IHVuZGVmaW5lZCxcbiAgICByZXNvdXJjZUNyZWF0ZWQ6ICgpID0+IHVuZGVmaW5lZCxcbiAgICByZXNvdXJjZVB1Ymxpc2hlZDogKCkgPT4gdW5kZWZpbmVkLFxuICAgIHJldXNlVHlwZTogKCkgPT4gdW5kZWZpbmVkLFxuICAgIGNvbnRhY3RzOiAoKSA9PiB1bmRlZmluZWQsXG4gICAgY29udGFjdHNGb3JSZXNvdXJjZTogKCkgPT4gdW5kZWZpbmVkLFxuICAgIGtleXdvcmRzOiAoKSA9PiB1bmRlZmluZWQsXG4gICAgdG9waWNzOiAoKSA9PiB1bmRlZmluZWQsXG4gICAgbGljZW5zZXM6ICgpID0+IHVuZGVmaW5lZCxcbiAgICBsZWdhbENvbnN0cmFpbnRzOiAoKSA9PiB1bmRlZmluZWQsXG4gICAgc2VjdXJpdHlDb25zdHJhaW50czogKCkgPT4gdW5kZWZpbmVkLFxuICAgIG90aGVyQ29uc3RyYWludHM6ICgpID0+IHVuZGVmaW5lZCxcbiAgICBzdGF0dXM6ICgpID0+IHVuZGVmaW5lZCxcbiAgICB1cGRhdGVGcmVxdWVuY3k6ICgpID0+IHVuZGVmaW5lZCxcbiAgICBzcGF0aWFsUmVwcmVzZW50YXRpb246ICgpID0+IHVuZGVmaW5lZCxcbiAgICBvdmVydmlld3M6ICgpID0+IHVuZGVmaW5lZCxcbiAgICBsaW5lYWdlOiAoKSA9PiB1bmRlZmluZWQsXG4gICAgb25saW5lUmVzb3VyY2VzOiAoKSA9PiB1bmRlZmluZWQsXG4gICAgdGVtcG9yYWxFeHRlbnRzOiAoKSA9PiB1bmRlZmluZWQsXG4gICAgc3BhdGlhbEV4dGVudHM6ICgpID0+IHVuZGVmaW5lZCxcbiAgICBleHRyYXM6ICgpID0+IHVuZGVmaW5lZCxcbiAgICBsYW5kaW5nUGFnZTogKCkgPT4gdW5kZWZpbmVkLFxuICAgIGRlZmF1bHRMYW5ndWFnZTogKCkgPT4gdW5kZWZpbmVkLFxuICAgIG90aGVyTGFuZ3VhZ2VzOiAoKSA9PiB1bmRlZmluZWQsXG4gICAgdHJhbnNsYXRpb25zOiAoKSA9PiB1bmRlZmluZWQsXG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNvbnRlbnRUeXBlOiBDb250ZW50VHlwZSA9ICdhcHBsaWNhdGlvbi9yZGYreG1sJyxcbiAgICBjdHg6IE1ldGFkYXRhTWFwcGVyQ29udGV4dCA9IG5ldyBNZXRhZGF0YU1hcHBlckNvbnRleHQoKVxuICApIHtcbiAgICBzdXBlcihjdHgpXG4gIH1cblxuICBhc3luYyByZWFkUmVjb3JkKGRvY3VtZW50OiBzdHJpbmcpOiBQcm9taXNlPENhdGFsb2dSZWNvcmQ+IHtcbiAgICBjb25zdCBkYXRhU3RvcmUgPSBncmFwaCgpXG4gICAgYXdhaXQgbG9hZEdyYXBoKGRhdGFTdG9yZSwgZG9jdW1lbnQsIHRoaXMuY29udGVudFR5cGUpXG5cbiAgICBjb25zdCBjYXRhbG9nUmVjb3JkID0gZGF0YVN0b3JlLnRoZShcbiAgICAgIG51bGwsXG4gICAgICBudWxsLFxuICAgICAgRENBVCgnQ2F0YWxvZ1JlY29yZCcpXG4gICAgKSBhcyBOYW1lZE5vZGVcblxuICAgIGNvbnN0IHRyOiBSZWNvcmRUcmFuc2xhdGlvbnMgPSB7fVxuXG4gICAgLy8gd2UgbmVlZCB0aGUgZGVmYXVsdCBsYW5ndWFnZSBmaXJzdCBmb3IgdGhlIG90aGVyIGZpZWxkc1xuICAgIGNvbnN0IGRlZmF1bHRMYW5ndWFnZSA9IHRoaXMucmVhZGVyc1snZGVmYXVsdExhbmd1YWdlJ10oXG4gICAgICBkYXRhU3RvcmUsXG4gICAgICBjYXRhbG9nUmVjb3JkLFxuICAgICAgdHIsXG4gICAgICBudWxsXG4gICAgKSBhcyBzdHJpbmdcbiAgICBjb25zdCB1bmlxdWVJZGVudGlmaWVyID0gdGhpcy5yZWFkZXJzWyd1bmlxdWVJZGVudGlmaWVyJ10oXG4gICAgICBkYXRhU3RvcmUsXG4gICAgICBjYXRhbG9nUmVjb3JkLFxuICAgICAgdHIsXG4gICAgICBkZWZhdWx0TGFuZ3VhZ2VcbiAgICApXG4gICAgY29uc3Qga2luZCA9IHRoaXMucmVhZGVyc1sna2luZCddKFxuICAgICAgZGF0YVN0b3JlLFxuICAgICAgY2F0YWxvZ1JlY29yZCxcbiAgICAgIHRyLFxuICAgICAgZGVmYXVsdExhbmd1YWdlXG4gICAgKVxuICAgIGNvbnN0IG93bmVyT3JnYW5pemF0aW9uID0gdGhpcy5yZWFkZXJzWydvd25lck9yZ2FuaXphdGlvbiddKFxuICAgICAgZGF0YVN0b3JlLFxuICAgICAgY2F0YWxvZ1JlY29yZCxcbiAgICAgIHRyLFxuICAgICAgZGVmYXVsdExhbmd1YWdlXG4gICAgKVxuICAgIGNvbnN0IHRpdGxlID0gdGhpcy5yZWFkZXJzWyd0aXRsZSddKFxuICAgICAgZGF0YVN0b3JlLFxuICAgICAgY2F0YWxvZ1JlY29yZCxcbiAgICAgIHRyLFxuICAgICAgZGVmYXVsdExhbmd1YWdlXG4gICAgKVxuICAgIGNvbnN0IGFic3RyYWN0ID0gdGhpcy5yZWFkZXJzWydhYnN0cmFjdCddKFxuICAgICAgZGF0YVN0b3JlLFxuICAgICAgY2F0YWxvZ1JlY29yZCxcbiAgICAgIHRyLFxuICAgICAgZGVmYXVsdExhbmd1YWdlXG4gICAgKVxuICAgIGNvbnN0IGNvbnRhY3RzID0gdGhpcy5yZWFkZXJzWydjb250YWN0cyddKFxuICAgICAgZGF0YVN0b3JlLFxuICAgICAgY2F0YWxvZ1JlY29yZCxcbiAgICAgIHRyLFxuICAgICAgZGVmYXVsdExhbmd1YWdlXG4gICAgKVxuICAgIGNvbnN0IGNvbnRhY3RzRm9yUmVzb3VyY2UgPSB0aGlzLnJlYWRlcnNbJ2NvbnRhY3RzRm9yUmVzb3VyY2UnXShcbiAgICAgIGRhdGFTdG9yZSxcbiAgICAgIGNhdGFsb2dSZWNvcmQsXG4gICAgICB0cixcbiAgICAgIGRlZmF1bHRMYW5ndWFnZVxuICAgIClcbiAgICBjb25zdCByZWNvcmRVcGRhdGVkID0gdGhpcy5yZWFkZXJzWydyZWNvcmRVcGRhdGVkJ10oXG4gICAgICBkYXRhU3RvcmUsXG4gICAgICBjYXRhbG9nUmVjb3JkLFxuICAgICAgdHIsXG4gICAgICBkZWZhdWx0TGFuZ3VhZ2VcbiAgICApXG4gICAgY29uc3QgcmVjb3JkQ3JlYXRlZCA9IHRoaXMucmVhZGVyc1sncmVjb3JkQ3JlYXRlZCddKFxuICAgICAgZGF0YVN0b3JlLFxuICAgICAgY2F0YWxvZ1JlY29yZCxcbiAgICAgIHRyLFxuICAgICAgZGVmYXVsdExhbmd1YWdlXG4gICAgKVxuICAgIGNvbnN0IHJlY29yZFB1Ymxpc2hlZCA9IHRoaXMucmVhZGVyc1sncmVjb3JkUHVibGlzaGVkJ10oXG4gICAgICBkYXRhU3RvcmUsXG4gICAgICBjYXRhbG9nUmVjb3JkLFxuICAgICAgdHIsXG4gICAgICBkZWZhdWx0TGFuZ3VhZ2VcbiAgICApXG4gICAgY29uc3QgcmVzb3VyY2VDcmVhdGVkID0gdGhpcy5yZWFkZXJzWydyZXNvdXJjZUNyZWF0ZWQnXShcbiAgICAgIGRhdGFTdG9yZSxcbiAgICAgIGNhdGFsb2dSZWNvcmQsXG4gICAgICB0cixcbiAgICAgIGRlZmF1bHRMYW5ndWFnZVxuICAgIClcbiAgICBjb25zdCByZXNvdXJjZVVwZGF0ZWQgPSB0aGlzLnJlYWRlcnNbJ3Jlc291cmNlVXBkYXRlZCddKFxuICAgICAgZGF0YVN0b3JlLFxuICAgICAgY2F0YWxvZ1JlY29yZCxcbiAgICAgIHRyLFxuICAgICAgZGVmYXVsdExhbmd1YWdlXG4gICAgKVxuICAgIGNvbnN0IHJlc291cmNlUHVibGlzaGVkID0gdGhpcy5yZWFkZXJzWydyZXNvdXJjZVB1Ymxpc2hlZCddKFxuICAgICAgZGF0YVN0b3JlLFxuICAgICAgY2F0YWxvZ1JlY29yZCxcbiAgICAgIHRyLFxuICAgICAgZGVmYXVsdExhbmd1YWdlXG4gICAgKVxuICAgIGNvbnN0IGtleXdvcmRzID0gdGhpcy5yZWFkZXJzWydrZXl3b3JkcyddKFxuICAgICAgZGF0YVN0b3JlLFxuICAgICAgY2F0YWxvZ1JlY29yZCxcbiAgICAgIHRyLFxuICAgICAgZGVmYXVsdExhbmd1YWdlXG4gICAgKVxuICAgIGNvbnN0IHRvcGljcyA9IHRoaXMucmVhZGVyc1sndG9waWNzJ10oXG4gICAgICBkYXRhU3RvcmUsXG4gICAgICBjYXRhbG9nUmVjb3JkLFxuICAgICAgdHIsXG4gICAgICBkZWZhdWx0TGFuZ3VhZ2VcbiAgICApXG4gICAgY29uc3QgbGVnYWxDb25zdHJhaW50cyA9IHRoaXMucmVhZGVyc1snbGVnYWxDb25zdHJhaW50cyddKFxuICAgICAgZGF0YVN0b3JlLFxuICAgICAgY2F0YWxvZ1JlY29yZCxcbiAgICAgIHRyLFxuICAgICAgZGVmYXVsdExhbmd1YWdlXG4gICAgKVxuICAgIGNvbnN0IG90aGVyQ29uc3RyYWludHMgPSB0aGlzLnJlYWRlcnNbJ290aGVyQ29uc3RyYWludHMnXShcbiAgICAgIGRhdGFTdG9yZSxcbiAgICAgIGNhdGFsb2dSZWNvcmQsXG4gICAgICB0cixcbiAgICAgIGRlZmF1bHRMYW5ndWFnZVxuICAgIClcbiAgICBjb25zdCBzZWN1cml0eUNvbnN0cmFpbnRzID0gdGhpcy5yZWFkZXJzWydzZWN1cml0eUNvbnN0cmFpbnRzJ10oXG4gICAgICBkYXRhU3RvcmUsXG4gICAgICBjYXRhbG9nUmVjb3JkLFxuICAgICAgdHIsXG4gICAgICBkZWZhdWx0TGFuZ3VhZ2VcbiAgICApXG4gICAgY29uc3QgbGljZW5zZXMgPSB0aGlzLnJlYWRlcnNbJ2xpY2Vuc2VzJ10oXG4gICAgICBkYXRhU3RvcmUsXG4gICAgICBjYXRhbG9nUmVjb3JkLFxuICAgICAgdHIsXG4gICAgICBkZWZhdWx0TGFuZ3VhZ2VcbiAgICApXG4gICAgY29uc3Qgb3ZlcnZpZXdzID0gdGhpcy5yZWFkZXJzWydvdmVydmlld3MnXShcbiAgICAgIGRhdGFTdG9yZSxcbiAgICAgIGNhdGFsb2dSZWNvcmQsXG4gICAgICB0cixcbiAgICAgIGRlZmF1bHRMYW5ndWFnZVxuICAgIClcbiAgICBjb25zdCBsYW5kaW5nUGFnZSA9IHRoaXMucmVhZGVyc1snbGFuZGluZ1BhZ2UnXShcbiAgICAgIGRhdGFTdG9yZSxcbiAgICAgIGNhdGFsb2dSZWNvcmQsXG4gICAgICB0cixcbiAgICAgIGRlZmF1bHRMYW5ndWFnZVxuICAgIClcbiAgICBjb25zdCBvdGhlckxhbmd1YWdlcyA9IHRoaXMucmVhZGVyc1snb3RoZXJMYW5ndWFnZXMnXShcbiAgICAgIGRhdGFTdG9yZSxcbiAgICAgIGNhdGFsb2dSZWNvcmQsXG4gICAgICB0cixcbiAgICAgIGRlZmF1bHRMYW5ndWFnZVxuICAgIClcblxuICAgIGlmIChraW5kID09PSAnZGF0YXNldCcpIHtcbiAgICAgIGNvbnN0IHN0YXR1cyA9IHRoaXMucmVhZGVyc1snc3RhdHVzJ10oXG4gICAgICAgIGRhdGFTdG9yZSxcbiAgICAgICAgY2F0YWxvZ1JlY29yZCxcbiAgICAgICAgdHIsXG4gICAgICAgIGRlZmF1bHRMYW5ndWFnZVxuICAgICAgKVxuICAgICAgY29uc3Qgc3BhdGlhbFJlcHJlc2VudGF0aW9uID0gdGhpcy5yZWFkZXJzWydzcGF0aWFsUmVwcmVzZW50YXRpb24nXShcbiAgICAgICAgZGF0YVN0b3JlLFxuICAgICAgICBjYXRhbG9nUmVjb3JkLFxuICAgICAgICB0cixcbiAgICAgICAgZGVmYXVsdExhbmd1YWdlXG4gICAgICApXG4gICAgICBjb25zdCBzcGF0aWFsRXh0ZW50cyA9IHRoaXMucmVhZGVyc1snc3BhdGlhbEV4dGVudHMnXShcbiAgICAgICAgZGF0YVN0b3JlLFxuICAgICAgICBjYXRhbG9nUmVjb3JkLFxuICAgICAgICB0cixcbiAgICAgICAgZGVmYXVsdExhbmd1YWdlXG4gICAgICApXG4gICAgICBjb25zdCB0ZW1wb3JhbEV4dGVudHMgPSB0aGlzLnJlYWRlcnNbJ3RlbXBvcmFsRXh0ZW50cyddKFxuICAgICAgICBkYXRhU3RvcmUsXG4gICAgICAgIGNhdGFsb2dSZWNvcmQsXG4gICAgICAgIHRyLFxuICAgICAgICBkZWZhdWx0TGFuZ3VhZ2VcbiAgICAgIClcbiAgICAgIGNvbnN0IGxpbmVhZ2UgPSB0aGlzLnJlYWRlcnNbJ2xpbmVhZ2UnXShcbiAgICAgICAgZGF0YVN0b3JlLFxuICAgICAgICBjYXRhbG9nUmVjb3JkLFxuICAgICAgICB0cixcbiAgICAgICAgZGVmYXVsdExhbmd1YWdlXG4gICAgICApXG4gICAgICBjb25zdCBvbmxpbmVSZXNvdXJjZXMgPSB0aGlzLnJlYWRlcnNbJ29ubGluZVJlc291cmNlcyddKFxuICAgICAgICBkYXRhU3RvcmUsXG4gICAgICAgIGNhdGFsb2dSZWNvcmQsXG4gICAgICAgIHRyLFxuICAgICAgICBkZWZhdWx0TGFuZ3VhZ2VcbiAgICAgIClcbiAgICAgIGNvbnN0IHVwZGF0ZUZyZXF1ZW5jeSA9IHRoaXMucmVhZGVyc1sndXBkYXRlRnJlcXVlbmN5J10oXG4gICAgICAgIGRhdGFTdG9yZSxcbiAgICAgICAgY2F0YWxvZ1JlY29yZCxcbiAgICAgICAgdHIsXG4gICAgICAgIGRlZmF1bHRMYW5ndWFnZVxuICAgICAgKVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICB1bmlxdWVJZGVudGlmaWVyLFxuICAgICAgICBraW5kLFxuICAgICAgICBkZWZhdWx0TGFuZ3VhZ2UsXG4gICAgICAgIG90aGVyTGFuZ3VhZ2VzLFxuICAgICAgICAuLi4ocmVjb3JkQ3JlYXRlZCAmJiB7IHJlY29yZENyZWF0ZWQgfSksXG4gICAgICAgIC4uLihyZWNvcmRQdWJsaXNoZWQgJiYgeyByZWNvcmRQdWJsaXNoZWQgfSksXG4gICAgICAgIHJlY29yZFVwZGF0ZWQsXG4gICAgICAgIC4uLihyZXNvdXJjZUNyZWF0ZWQgJiYgeyByZXNvdXJjZUNyZWF0ZWQgfSksXG4gICAgICAgIC4uLihyZXNvdXJjZVVwZGF0ZWQgJiYgeyByZXNvdXJjZVVwZGF0ZWQgfSksXG4gICAgICAgIC4uLihyZXNvdXJjZVB1Ymxpc2hlZCAmJiB7IHJlc291cmNlUHVibGlzaGVkIH0pLFxuICAgICAgICBzdGF0dXMsXG4gICAgICAgIHRpdGxlLFxuICAgICAgICBhYnN0cmFjdCxcbiAgICAgICAgb3duZXJPcmdhbml6YXRpb24sXG4gICAgICAgIGNvbnRhY3RzLFxuICAgICAgICBjb250YWN0c0ZvclJlc291cmNlLFxuICAgICAgICBrZXl3b3JkcyxcbiAgICAgICAgdG9waWNzLFxuICAgICAgICBsaWNlbnNlcyxcbiAgICAgICAgbGVnYWxDb25zdHJhaW50cyxcbiAgICAgICAgc2VjdXJpdHlDb25zdHJhaW50cyxcbiAgICAgICAgb3RoZXJDb25zdHJhaW50cyxcbiAgICAgICAgbGluZWFnZSxcbiAgICAgICAgLi4uKHNwYXRpYWxSZXByZXNlbnRhdGlvbiAmJiB7IHNwYXRpYWxSZXByZXNlbnRhdGlvbiB9KSxcbiAgICAgICAgb3ZlcnZpZXdzLFxuICAgICAgICBzcGF0aWFsRXh0ZW50cyxcbiAgICAgICAgdGVtcG9yYWxFeHRlbnRzLFxuICAgICAgICBvbmxpbmVSZXNvdXJjZXMsXG4gICAgICAgIHVwZGF0ZUZyZXF1ZW5jeSxcbiAgICAgICAgLi4uKGxhbmRpbmdQYWdlICYmIHsgbGFuZGluZ1BhZ2UgfSksXG4gICAgICAgIHRyYW5zbGF0aW9uczogdHIsXG4gICAgICB9IGFzIERhdGFzZXRSZWNvcmRcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qgb25saW5lUmVzb3VyY2VzID0gdGhpcy5yZWFkZXJzWydvbmxpbmVSZXNvdXJjZXMnXShcbiAgICAgICAgZGF0YVN0b3JlLFxuICAgICAgICBjYXRhbG9nUmVjb3JkLFxuICAgICAgICB0cixcbiAgICAgICAgZGVmYXVsdExhbmd1YWdlXG4gICAgICApXG4gICAgICByZXR1cm4ge1xuICAgICAgICB1bmlxdWVJZGVudGlmaWVyLFxuICAgICAgICBraW5kLFxuICAgICAgICBkZWZhdWx0TGFuZ3VhZ2UsXG4gICAgICAgIG90aGVyTGFuZ3VhZ2VzLFxuICAgICAgICAuLi4ocmVjb3JkQ3JlYXRlZCAmJiB7IHJlY29yZENyZWF0ZWQgfSksXG4gICAgICAgIC4uLihyZWNvcmRQdWJsaXNoZWQgJiYgeyByZWNvcmRQdWJsaXNoZWQgfSksXG4gICAgICAgIHJlY29yZFVwZGF0ZWQsXG4gICAgICAgIC4uLihyZXNvdXJjZUNyZWF0ZWQgJiYgeyByZXNvdXJjZUNyZWF0ZWQgfSksXG4gICAgICAgIC4uLihyZXNvdXJjZVVwZGF0ZWQgJiYgeyByZXNvdXJjZVVwZGF0ZWQgfSksXG4gICAgICAgIC4uLihyZXNvdXJjZVB1Ymxpc2hlZCAmJiB7IHJlc291cmNlUHVibGlzaGVkIH0pLFxuICAgICAgICB0aXRsZSxcbiAgICAgICAgYWJzdHJhY3QsXG4gICAgICAgIG93bmVyT3JnYW5pemF0aW9uLFxuICAgICAgICBjb250YWN0cyxcbiAgICAgICAgY29udGFjdHNGb3JSZXNvdXJjZSxcbiAgICAgICAga2V5d29yZHMsXG4gICAgICAgIHRvcGljcyxcbiAgICAgICAgbGljZW5zZXMsXG4gICAgICAgIGxlZ2FsQ29uc3RyYWludHMsXG4gICAgICAgIHNlY3VyaXR5Q29uc3RyYWludHMsXG4gICAgICAgIG90aGVyQ29uc3RyYWludHMsXG4gICAgICAgIG92ZXJ2aWV3cyxcbiAgICAgICAgb25saW5lUmVzb3VyY2VzLFxuICAgICAgICAuLi4obGFuZGluZ1BhZ2UgJiYgeyBsYW5kaW5nUGFnZSB9KSxcbiAgICAgICAgdHJhbnNsYXRpb25zOiB0cixcbiAgICAgIH0gYXMgU2VydmljZVJlY29yZFxuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHdyaXRlUmVjb3JkKFxuICAgIHJlY29yZDogQ2F0YWxvZ1JlY29yZCxcbiAgICByZWZlcmVuY2U/OiBzdHJpbmdcbiAgKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBjb25zdCBkYXRhU3RvcmUgPSBncmFwaCgpXG4gICAgbGV0IGZpZWxkQ2hhbmdlZDogKG5hbWU6IHN0cmluZykgPT4gYm9vbGVhblxuICAgIGlmIChyZWZlcmVuY2UpIHtcbiAgICAgIGNvbnN0IG9yaWdpbmFsUmVjb3JkID0gYXdhaXQgdGhpcy5yZWFkUmVjb3JkKHJlZmVyZW5jZSlcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmVmZXItY29uc3RcbiAgICAgIGxldCBsYW5ndWFnZXNDaGFuZ2VkOiBib29sZWFuXG4gICAgICBhd2FpdCBsb2FkR3JhcGgoXG4gICAgICAgIGRhdGFTdG9yZSxcbiAgICAgICAgcmVmZXJlbmNlLFxuICAgICAgICB0aGlzLmNvbnRlbnRUeXBlLFxuICAgICAgICBEQ0FUKCdDYXRhbG9nUmVjb3JkJykudmFsdWVcbiAgICAgIClcblxuICAgICAgZmllbGRDaGFuZ2VkID0gKG5hbWU6IHN0cmluZykgPT4ge1xuICAgICAgICByZXR1cm4gb3JpZ2luYWxSZWNvcmQgIT09IG51bGxcbiAgICAgICAgICA/ICFpc0VxdWFsKHJlY29yZFtuYW1lXSwgb3JpZ2luYWxSZWNvcmRbbmFtZV0pIHx8XG4gICAgICAgICAgICAgIChsYW5ndWFnZXNDaGFuZ2VkICYmIGlzRmllbGRUcmFuc2xhdGFibGUobmFtZSkpXG4gICAgICAgICAgOiB0cnVlXG4gICAgICB9XG4gICAgICBsYW5ndWFnZXNDaGFuZ2VkID0gZmllbGRDaGFuZ2VkKCdvdGhlckxhbmd1YWdlcycpXG4gICAgfSBlbHNlIHtcbiAgICAgIGZpZWxkQ2hhbmdlZCA9ICgpID0+IHRydWVcbiAgICB9XG5cbiAgICBsZXQgcmVjb3JkTm9kZSA9IGRhdGFTdG9yZS50aGUoXG4gICAgICBudWxsLFxuICAgICAgUkRGKCd0eXBlJyksXG4gICAgICBEQ0FUKCdDYXRhbG9nUmVjb3JkJylcbiAgICApIGFzIE5hbWVkTm9kZVxuICAgIGlmICghcmVjb3JkTm9kZSkge1xuICAgICAgY29uc3Qgc3RhdGVtZW50ID0gZGF0YVN0b3JlLmFkZChcbiAgICAgICAgc3ltKGAke0JBU0VfVVJJfXJlY29yZC8ke3JlY29yZC51bmlxdWVJZGVudGlmaWVyfWApLFxuICAgICAgICBSREYoJ3R5cGUnKSxcbiAgICAgICAgRENBVCgnQ2F0YWxvZ1JlY29yZCcpXG4gICAgICApIGFzIFN0YXRlbWVudFxuICAgICAgcmVjb3JkTm9kZSA9IHN0YXRlbWVudC5zdWJqZWN0IGFzIE5hbWVkTm9kZVxuICAgIH1cblxuICAgIGZpZWxkQ2hhbmdlZCgndW5pcXVlSWRlbnRpZmllcicpICYmXG4gICAgICB0aGlzLndyaXRlcnNbJ3VuaXF1ZUlkZW50aWZpZXInXShyZWNvcmQsIGRhdGFTdG9yZSwgcmVjb3JkTm9kZSlcbiAgICBmaWVsZENoYW5nZWQoJ2tpbmQnKSAmJiB0aGlzLndyaXRlcnNbJ2tpbmQnXShyZWNvcmQsIGRhdGFTdG9yZSwgcmVjb3JkTm9kZSlcbiAgICBmaWVsZENoYW5nZWQoJ2RlZmF1bHRMYW5ndWFnZScpICYmXG4gICAgICB0aGlzLndyaXRlcnNbJ2RlZmF1bHRMYW5ndWFnZSddKHJlY29yZCwgZGF0YVN0b3JlLCByZWNvcmROb2RlKVxuXG4gICAgZmllbGRDaGFuZ2VkKCdjb250YWN0cycpICYmXG4gICAgICB0aGlzLndyaXRlcnNbJ2NvbnRhY3RzJ10ocmVjb3JkLCBkYXRhU3RvcmUsIHJlY29yZE5vZGUpXG4gICAgZmllbGRDaGFuZ2VkKCdvd25lck9yZ2FuaXphdGlvbicpICYmXG4gICAgICB0aGlzLndyaXRlcnNbJ293bmVyT3JnYW5pemF0aW9uJ10ocmVjb3JkLCBkYXRhU3RvcmUsIHJlY29yZE5vZGUpXG5cbiAgICBmaWVsZENoYW5nZWQoJ3JlY29yZFVwZGF0ZWQnKSAmJlxuICAgICAgdGhpcy53cml0ZXJzWydyZWNvcmRVcGRhdGVkJ10ocmVjb3JkLCBkYXRhU3RvcmUsIHJlY29yZE5vZGUpXG4gICAgZmllbGRDaGFuZ2VkKCdyZWNvcmRDcmVhdGVkJykgJiZcbiAgICAgIHRoaXMud3JpdGVyc1sncmVjb3JkQ3JlYXRlZCddKHJlY29yZCwgZGF0YVN0b3JlLCByZWNvcmROb2RlKVxuICAgIGZpZWxkQ2hhbmdlZCgncmVjb3JkUHVibGlzaGVkJykgJiZcbiAgICAgIHRoaXMud3JpdGVyc1sncmVjb3JkUHVibGlzaGVkJ10ocmVjb3JkLCBkYXRhU3RvcmUsIHJlY29yZE5vZGUpXG5cbiAgICBmaWVsZENoYW5nZWQoJ3RpdGxlJykgJiZcbiAgICAgIHRoaXMud3JpdGVyc1sndGl0bGUnXShyZWNvcmQsIGRhdGFTdG9yZSwgcmVjb3JkTm9kZSlcbiAgICBmaWVsZENoYW5nZWQoJ2Fic3RyYWN0JykgJiZcbiAgICAgIHRoaXMud3JpdGVyc1snYWJzdHJhY3QnXShyZWNvcmQsIGRhdGFTdG9yZSwgcmVjb3JkTm9kZSlcblxuICAgIGZpZWxkQ2hhbmdlZCgncmVzb3VyY2VDcmVhdGVkJykgJiZcbiAgICAgIHRoaXMud3JpdGVyc1sncmVzb3VyY2VDcmVhdGVkJ10ocmVjb3JkLCBkYXRhU3RvcmUsIHJlY29yZE5vZGUpXG4gICAgZmllbGRDaGFuZ2VkKCdyZXNvdXJjZVB1Ymxpc2hlZCcpICYmXG4gICAgICB0aGlzLndyaXRlcnNbJ3Jlc291cmNlUHVibGlzaGVkJ10ocmVjb3JkLCBkYXRhU3RvcmUsIHJlY29yZE5vZGUpXG4gICAgZmllbGRDaGFuZ2VkKCdyZXNvdXJjZVVwZGF0ZWQnKSAmJlxuICAgICAgdGhpcy53cml0ZXJzWydyZXNvdXJjZVVwZGF0ZWQnXShyZWNvcmQsIGRhdGFTdG9yZSwgcmVjb3JkTm9kZSlcblxuICAgIGZpZWxkQ2hhbmdlZCgnY29udGFjdHNGb3JSZXNvdXJjZScpICYmXG4gICAgICB0aGlzLndyaXRlcnNbJ2NvbnRhY3RzRm9yUmVzb3VyY2UnXShyZWNvcmQsIGRhdGFTdG9yZSwgcmVjb3JkTm9kZSlcblxuICAgIGZpZWxkQ2hhbmdlZCgna2V5d29yZHMnKSAmJlxuICAgICAgdGhpcy53cml0ZXJzWydrZXl3b3JkcyddKHJlY29yZCwgZGF0YVN0b3JlLCByZWNvcmROb2RlKVxuICAgIGZpZWxkQ2hhbmdlZCgndG9waWNzJykgJiZcbiAgICAgIHRoaXMud3JpdGVyc1sndG9waWNzJ10ocmVjb3JkLCBkYXRhU3RvcmUsIHJlY29yZE5vZGUpXG4gICAgZmllbGRDaGFuZ2VkKCdsZWdhbENvbnN0cmFpbnRzJykgJiZcbiAgICAgIHRoaXMud3JpdGVyc1snbGVnYWxDb25zdHJhaW50cyddKHJlY29yZCwgZGF0YVN0b3JlLCByZWNvcmROb2RlKVxuICAgIGZpZWxkQ2hhbmdlZCgnc2VjdXJpdHlDb25zdHJhaW50cycpICYmXG4gICAgICB0aGlzLndyaXRlcnNbJ3NlY3VyaXR5Q29uc3RyYWludHMnXShyZWNvcmQsIGRhdGFTdG9yZSwgcmVjb3JkTm9kZSlcbiAgICBmaWVsZENoYW5nZWQoJ2xpY2Vuc2VzJykgJiZcbiAgICAgIHRoaXMud3JpdGVyc1snbGljZW5zZXMnXShyZWNvcmQsIGRhdGFTdG9yZSwgcmVjb3JkTm9kZSlcbiAgICBmaWVsZENoYW5nZWQoJ290aGVyQ29uc3RyYWludHMnKSAmJlxuICAgICAgdGhpcy53cml0ZXJzWydvdGhlckNvbnN0cmFpbnRzJ10ocmVjb3JkLCBkYXRhU3RvcmUsIHJlY29yZE5vZGUpXG4gICAgZmllbGRDaGFuZ2VkKCdvbmxpbmVSZXNvdXJjZXMnKSAmJlxuICAgICAgdGhpcy53cml0ZXJzWydvbmxpbmVSZXNvdXJjZXMnXShyZWNvcmQsIGRhdGFTdG9yZSwgcmVjb3JkTm9kZSlcblxuICAgIGlmIChyZWNvcmQua2luZCA9PT0gJ2RhdGFzZXQnKSB7XG4gICAgICBmaWVsZENoYW5nZWQoJ3N0YXR1cycpICYmXG4gICAgICAgIHRoaXMud3JpdGVyc1snc3RhdHVzJ10ocmVjb3JkLCBkYXRhU3RvcmUsIHJlY29yZE5vZGUpXG4gICAgICBmaWVsZENoYW5nZWQoJ3VwZGF0ZUZyZXF1ZW5jeScpICYmXG4gICAgICAgIHRoaXMud3JpdGVyc1sndXBkYXRlRnJlcXVlbmN5J10ocmVjb3JkLCBkYXRhU3RvcmUsIHJlY29yZE5vZGUpXG4gICAgICBmaWVsZENoYW5nZWQoJ3NwYXRpYWxSZXByZXNlbnRhdGlvbicpICYmXG4gICAgICAgIHRoaXMud3JpdGVyc1snc3BhdGlhbFJlcHJlc2VudGF0aW9uJ10ocmVjb3JkLCBkYXRhU3RvcmUsIHJlY29yZE5vZGUpXG4gICAgICBmaWVsZENoYW5nZWQoJ292ZXJ2aWV3cycpICYmXG4gICAgICAgIHRoaXMud3JpdGVyc1snb3ZlcnZpZXdzJ10ocmVjb3JkLCBkYXRhU3RvcmUsIHJlY29yZE5vZGUpXG4gICAgICBmaWVsZENoYW5nZWQoJ3RlbXBvcmFsRXh0ZW50cycpICYmXG4gICAgICAgIHRoaXMud3JpdGVyc1sndGVtcG9yYWxFeHRlbnRzJ10ocmVjb3JkLCBkYXRhU3RvcmUsIHJlY29yZE5vZGUpXG4gICAgICBmaWVsZENoYW5nZWQoJ2xpbmVhZ2UnKSAmJlxuICAgICAgICB0aGlzLndyaXRlcnNbJ2xpbmVhZ2UnXShyZWNvcmQsIGRhdGFTdG9yZSwgcmVjb3JkTm9kZSlcbiAgICB9XG4gICAgZmllbGRDaGFuZ2VkKCdvdGhlckxhbmd1YWdlcycpICYmXG4gICAgICB0aGlzLndyaXRlcnNbJ290aGVyTGFuZ3VhZ2VzJ10ocmVjb3JkLCBkYXRhU3RvcmUsIHJlY29yZE5vZGUpXG5cbiAgICBpZiAodGhpcy5jb250ZW50VHlwZS5pbmNsdWRlcygneG1sJykpIHtcbiAgICAgIHJldHVybiBleHBvcnRHcmFwaFRvWG1sKGRhdGFTdG9yZSlcbiAgICB9XG5cbiAgICByZXR1cm4gZGF0YVN0b3JlLnNlcmlhbGl6ZSh1bmRlZmluZWQsIHRoaXMuY29udGVudFR5cGUsIG51bGwsIHt9KVxuICB9XG59XG4iXX0=
279
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGNhdC1hcC5jb252ZXJ0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FwaS9tZXRhZGF0YS1jb252ZXJ0ZXIvc3JjL2xpYi9kY2F0LWFwL2RjYXQtYXAuY29udmVydGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVFBLE9BQU8sRUFBRSxhQUFhLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUN4RSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFDMUMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0JBQW9CLENBQUE7QUFDeEQsT0FBTyxFQUNMLFlBQVksRUFDWixZQUFZLEVBQ1osdUJBQXVCLEVBQ3ZCLG1CQUFtQixFQUNuQixZQUFZLEVBQ1osZUFBZSxFQUNmLFlBQVksRUFDWixtQkFBbUIsRUFDbkIscUJBQXFCLEVBQ3JCLGlCQUFpQixFQUNqQixpQkFBaUIsRUFDakIsbUJBQW1CLEVBQ25CLG1CQUFtQixFQUNuQixrQkFBa0IsRUFDbEIsU0FBUyxFQUNULFVBQVUsRUFDVixvQkFBb0IsR0FDckIsTUFBTSxjQUFjLENBQUE7QUFDckIsT0FBTyxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDaEYsT0FBTyxFQUFFLEtBQUssRUFBK0IsR0FBRyxFQUFFLE1BQU0sUUFBUSxDQUFBO0FBQ2hFLE9BQU8sRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBQ3hDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFFdEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBQy9DLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDBCQUEwQixDQUFBO0FBRTNELE1BQU0sT0FBTyxlQUFnQixTQUFRLGFBQXFCO0lBd0Z4RCxZQUNVLGNBQTJCLHFCQUFxQixFQUN4RCxNQUE2QixJQUFJLHFCQUFxQixFQUFFO1FBRXhELEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUhGLGdCQUFXLEdBQVgsV0FBVyxDQUFxQztRQXhGaEQsWUFBTyxHQVFiO1lBQ0YsZ0JBQWdCLEVBQUUsb0JBQW9CO1lBQ3RDLEtBQUssRUFBRSxTQUFTO1lBQ2hCLFFBQVEsRUFBRSxZQUFZO1lBQ3RCLFFBQVEsRUFBRSxZQUFZO1lBQ3RCLG1CQUFtQixFQUFFLHVCQUF1QjtZQUM1QyxXQUFXLEVBQUUsZUFBZTtZQUM1QixlQUFlLEVBQUUsbUJBQW1CO1lBQ3BDLGNBQWMsRUFBRSxrQkFBa0I7WUFDbEMsUUFBUSxFQUFFLFlBQVk7WUFDdEIsTUFBTSxFQUFFLFVBQVU7WUFDbEIsbUJBQW1CLEVBQUUsR0FBRyxFQUFFLENBQUMsU0FBUztZQUNwQyxhQUFhLEVBQUUsaUJBQWlCO1lBQ2hDLGFBQWEsRUFBRSxpQkFBaUI7WUFDaEMsZUFBZSxFQUFFLG1CQUFtQjtZQUNwQyxlQUFlLEVBQUUsbUJBQW1CO1lBQ3BDLGlCQUFpQixFQUFFLHFCQUFxQjtZQUN4QyxRQUFRLEVBQUUsWUFBWTtZQUN0QixlQUFlLEVBQUUsbUJBQW1CO1lBQ3BDLGNBQWMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUscURBQXFEO1lBQy9FLE9BQU87WUFDUCxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsU0FBUztZQUNyQixlQUFlLEVBQUUsR0FBRyxFQUFFLENBQUMsU0FBUztZQUNoQyxpQkFBaUIsRUFBRSxHQUFHLEVBQUUsQ0FBQyxTQUFTO1lBQ2xDLFNBQVMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxTQUFTO1lBQzFCLGdCQUFnQixFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7WUFDMUIsbUJBQW1CLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTtZQUM3QixnQkFBZ0IsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO1lBQzFCLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxXQUFXO1lBQ3pCLGVBQWUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxTQUFTO1lBQ2hDLFNBQVMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO1lBQ25CLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO1lBQ2pCLGVBQWUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO1lBQ3pCLHFCQUFxQixFQUFFLEdBQUcsRUFBRSxDQUFDLFNBQVM7WUFDdEMsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLFNBQVM7WUFDdkIsWUFBWSxFQUFFLEdBQUcsRUFBRSxDQUFDLFNBQVM7U0FDOUIsQ0FBQTtRQUVTLFlBQU8sR0FHYjtZQUNGLGdCQUFnQixFQUFFLHFCQUFxQjtZQUN2QyxLQUFLLEVBQUUsVUFBVTtZQUNqQixRQUFRLEVBQUUsYUFBYTtZQUN2QixPQUFPO1lBQ1AsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLFNBQVM7WUFDckIsaUJBQWlCLEVBQUUsR0FBRyxFQUFFLENBQUMsU0FBUztZQUNsQyxhQUFhLEVBQUUsR0FBRyxFQUFFLENBQUMsU0FBUztZQUM5QixhQUFhLEVBQUUsR0FBRyxFQUFFLENBQUMsU0FBUztZQUM5QixlQUFlLEVBQUUsR0FBRyxFQUFFLENBQUMsU0FBUztZQUNoQyxtQkFBbUIsRUFBRSxHQUFHLEVBQUUsQ0FBQyxTQUFTO1lBQ3BDLGVBQWUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxTQUFTO1lBQ2hDLGVBQWUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxTQUFTO1lBQ2hDLGlCQUFpQixFQUFFLEdBQUcsRUFBRSxDQUFDLFNBQVM7WUFDbEMsU0FBUyxFQUFFLEdBQUcsRUFBRSxDQUFDLFNBQVM7WUFDMUIsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLFNBQVM7WUFDekIsbUJBQW1CLEVBQUUsR0FBRyxFQUFFLENBQUMsU0FBUztZQUNwQyxRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsU0FBUztZQUN6QixNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsU0FBUztZQUN2QixRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsU0FBUztZQUN6QixnQkFBZ0IsRUFBRSxHQUFHLEVBQUUsQ0FBQyxTQUFTO1lBQ2pDLG1CQUFtQixFQUFFLEdBQUcsRUFBRSxDQUFDLFNBQVM7WUFDcEMsZ0JBQWdCLEVBQUUsR0FBRyxFQUFFLENBQUMsU0FBUztZQUNqQyxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsU0FBUztZQUN2QixlQUFlLEVBQUUsR0FBRyxFQUFFLENBQUMsU0FBUztZQUNoQyxxQkFBcUIsRUFBRSxHQUFHLEVBQUUsQ0FBQyxTQUFTO1lBQ3RDLFNBQVMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxTQUFTO1lBQzFCLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxTQUFTO1lBQ3hCLGVBQWUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxTQUFTO1lBQ2hDLGVBQWUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxTQUFTO1lBQ2hDLGNBQWMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxTQUFTO1lBQy9CLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxTQUFTO1lBQ3ZCLFdBQVcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxTQUFTO1lBQzVCLGVBQWUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxTQUFTO1lBQ2hDLGNBQWMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxTQUFTO1lBQy9CLFlBQVksRUFBRSxHQUFHLEVBQUUsQ0FBQyxTQUFTO1NBQzlCLENBQUE7SUFPRCxDQUFDO0lBRUQsS0FBSyxDQUFDLFVBQVUsQ0FBQyxRQUFnQjtRQUMvQixNQUFNLFNBQVMsR0FBRyxLQUFLLEVBQUUsQ0FBQTtRQUN6QixNQUFNLFNBQVMsQ0FBQyxTQUFTLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQTtRQUV0RCxNQUFNLGFBQWEsR0FBRyxTQUFTLENBQUMsR0FBRyxDQUNqQyxJQUFJLEVBQ0osSUFBSSxFQUNKLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FDVCxDQUFBO1FBRWQsTUFBTSxFQUFFLEdBQXVCLEVBQUUsQ0FBQTtRQUVqQywwREFBMEQ7UUFDMUQsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxDQUNyRCxTQUFTLEVBQ1QsYUFBYSxFQUNiLEVBQUUsRUFDRixJQUFJLENBQ0ssQ0FBQTtRQUNYLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQUN2RCxTQUFTLEVBQ1QsYUFBYSxFQUNiLEVBQUUsRUFDRixlQUFlLENBQ2hCLENBQUE7UUFDRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUMvQixTQUFTLEVBQ1QsYUFBYSxFQUNiLEVBQUUsRUFDRixlQUFlLENBQ2hCLENBQUE7UUFDRCxNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsbUJBQW1CLENBQUMsQ0FDekQsU0FBUyxFQUNULGFBQWEsRUFDYixFQUFFLEVBQ0YsZUFBZSxDQUNoQixDQUFBO1FBQ0QsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FDakMsU0FBUyxFQUNULGFBQWEsRUFDYixFQUFFLEVBQ0YsZUFBZSxDQUNoQixDQUFBO1FBQ0QsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FDdkMsU0FBUyxFQUNULGFBQWEsRUFDYixFQUFFLEVBQ0YsZUFBZSxDQUNoQixDQUFBO1FBQ0QsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FDdkMsU0FBUyxFQUNULGFBQWEsRUFDYixFQUFFLEVBQ0YsZUFBZSxDQUNoQixDQUFBO1FBQ0QsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLHFCQUFxQixDQUFDLENBQzdELFNBQVMsRUFDVCxhQUFhLEVBQ2IsRUFBRSxFQUNGLGVBQWUsQ0FDaEIsQ0FBQTtRQUNELE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLENBQ2pELFNBQVMsRUFDVCxhQUFhLEVBQ2IsRUFBRSxFQUNGLGVBQWUsQ0FDaEIsQ0FBQTtRQUNELE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLENBQ2pELFNBQVMsRUFDVCxhQUFhLEVBQ2IsRUFBRSxFQUNGLGVBQWUsQ0FDaEIsQ0FBQTtRQUNELE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FDckQsU0FBUyxFQUNULGFBQWEsRUFDYixFQUFFLEVBQ0YsZUFBZSxDQUNoQixDQUFBO1FBQ0QsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxDQUNyRCxTQUFTLEVBQ1QsYUFBYSxFQUNiLEVBQUUsRUFDRixlQUFlLENBQ2hCLENBQUE7UUFDRCxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLENBQ3JELFNBQVMsRUFDVCxhQUFhLEVBQ2IsRUFBRSxFQUNGLGVBQWUsQ0FDaEIsQ0FBQTtRQUNELE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxDQUN6RCxTQUFTLEVBQ1QsYUFBYSxFQUNiLEVBQUUsRUFDRixlQUFlLENBQ2hCLENBQUE7UUFDRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUN2QyxTQUFTLEVBQ1QsYUFBYSxFQUNiLEVBQUUsRUFDRixlQUFlLENBQ2hCLENBQUE7UUFDRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUNuQyxTQUFTLEVBQ1QsYUFBYSxFQUNiLEVBQUUsRUFDRixlQUFlLENBQ2hCLENBQUE7UUFDRCxNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FDdkQsU0FBUyxFQUNULGFBQWEsRUFDYixFQUFFLEVBQ0YsZUFBZSxDQUNoQixDQUFBO1FBQ0QsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBQ3ZELFNBQVMsRUFDVCxhQUFhLEVBQ2IsRUFBRSxFQUNGLGVBQWUsQ0FDaEIsQ0FBQTtRQUNELE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxDQUM3RCxTQUFTLEVBQ1QsYUFBYSxFQUNiLEVBQUUsRUFDRixlQUFlLENBQ2hCLENBQUE7UUFDRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUN2QyxTQUFTLEVBQ1QsYUFBYSxFQUNiLEVBQUUsRUFDRixlQUFlLENBQ2hCLENBQUE7UUFDRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUN6QyxTQUFTLEVBQ1QsYUFBYSxFQUNiLEVBQUUsRUFDRixlQUFlLENBQ2hCLENBQUE7UUFDRCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUM3QyxTQUFTLEVBQ1QsYUFBYSxFQUNiLEVBQUUsRUFDRixlQUFlLENBQ2hCLENBQUE7UUFDRCxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQ25ELFNBQVMsRUFDVCxhQUFhLEVBQ2IsRUFBRSxFQUNGLGVBQWUsQ0FDaEIsQ0FBQTtRQUVELElBQUksSUFBSSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3ZCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQ25DLFNBQVMsRUFDVCxhQUFhLEVBQ2IsRUFBRSxFQUNGLGVBQWUsQ0FDaEIsQ0FBQTtZQUNELE1BQU0scUJBQXFCLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBQyxDQUNqRSxTQUFTLEVBQ1QsYUFBYSxFQUNiLEVBQUUsRUFDRixlQUFlLENBQ2hCLENBQUE7WUFDRCxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQ25ELFNBQVMsRUFDVCxhQUFhLEVBQ2IsRUFBRSxFQUNGLGVBQWUsQ0FDaEIsQ0FBQTtZQUNELE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FDckQsU0FBUyxFQUNULGFBQWEsRUFDYixFQUFFLEVBQ0YsZUFBZSxDQUNoQixDQUFBO1lBQ0QsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FDckMsU0FBUyxFQUNULGFBQWEsRUFDYixFQUFFLEVBQ0YsZUFBZSxDQUNoQixDQUFBO1lBQ0QsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxDQUNyRCxTQUFTLEVBQ1QsYUFBYSxFQUNiLEVBQUUsRUFDRixlQUFlLENBQ2hCLENBQUE7WUFDRCxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLENBQ3JELFNBQVMsRUFDVCxhQUFhLEVBQ2IsRUFBRSxFQUNGLGVBQWUsQ0FDaEIsQ0FBQTtZQUVELE9BQU87Z0JBQ0wsZ0JBQWdCO2dCQUNoQixJQUFJO2dCQUNKLGVBQWU7Z0JBQ2YsY0FBYztnQkFDZCxHQUFHLENBQUMsYUFBYSxJQUFJLEVBQUUsYUFBYSxFQUFFLENBQUM7Z0JBQ3ZDLEdBQUcsQ0FBQyxlQUFlLElBQUksRUFBRSxlQUFlLEVBQUUsQ0FBQztnQkFDM0MsYUFBYTtnQkFDYixHQUFHLENBQUMsZUFBZSxJQUFJLEVBQUUsZUFBZSxFQUFFLENBQUM7Z0JBQzNDLEdBQUcsQ0FBQyxlQUFlLElBQUksRUFBRSxlQUFlLEVBQUUsQ0FBQztnQkFDM0MsR0FBRyxDQUFDLGlCQUFpQixJQUFJLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQztnQkFDL0MsTUFBTTtnQkFDTixLQUFLO2dCQUNMLFFBQVE7Z0JBQ1IsaUJBQWlCO2dCQUNqQixRQUFRO2dCQUNSLG1CQUFtQjtnQkFDbkIsUUFBUTtnQkFDUixNQUFNO2dCQUNOLFFBQVE7Z0JBQ1IsZ0JBQWdCO2dCQUNoQixtQkFBbUI7Z0JBQ25CLGdCQUFnQjtnQkFDaEIsT0FBTztnQkFDUCxHQUFHLENBQUMscUJBQXFCLElBQUksRUFBRSxxQkFBcUIsRUFBRSxDQUFDO2dCQUN2RCxTQUFTO2dCQUNULGNBQWM7Z0JBQ2QsZUFBZTtnQkFDZixlQUFlO2dCQUNmLGVBQWU7Z0JBQ2YsR0FBRyxDQUFDLFdBQVcsSUFBSSxFQUFFLFdBQVcsRUFBRSxDQUFDO2dCQUNuQyxZQUFZLEVBQUUsRUFBRTthQUNBLENBQUE7UUFDcEIsQ0FBQzthQUFNLENBQUM7WUFDTixNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLENBQ3JELFNBQVMsRUFDVCxhQUFhLEVBQ2IsRUFBRSxFQUNGLGVBQWUsQ0FDaEIsQ0FBQTtZQUNELE9BQU87Z0JBQ0wsZ0JBQWdCO2dCQUNoQixJQUFJO2dCQUNKLGVBQWU7Z0JBQ2YsY0FBYztnQkFDZCxHQUFHLENBQUMsYUFBYSxJQUFJLEVBQUUsYUFBYSxFQUFFLENBQUM7Z0JBQ3ZDLEdBQUcsQ0FBQyxlQUFlLElBQUksRUFBRSxlQUFlLEVBQUUsQ0FBQztnQkFDM0MsYUFBYTtnQkFDYixHQUFHLENBQUMsZUFBZSxJQUFJLEVBQUUsZUFBZSxFQUFFLENBQUM7Z0JBQzNDLEdBQUcsQ0FBQyxlQUFlLElBQUksRUFBRSxlQUFlLEVBQUUsQ0FBQztnQkFDM0MsR0FBRyxDQUFDLGlCQUFpQixJQUFJLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQztnQkFDL0MsS0FBSztnQkFDTCxRQUFRO2dCQUNSLGlCQUFpQjtnQkFDakIsUUFBUTtnQkFDUixtQkFBbUI7Z0JBQ25CLFFBQVE7Z0JBQ1IsTUFBTTtnQkFDTixRQUFRO2dCQUNSLGdCQUFnQjtnQkFDaEIsbUJBQW1CO2dCQUNuQixnQkFBZ0I7Z0JBQ2hCLFNBQVM7Z0JBQ1QsZUFBZTtnQkFDZixHQUFHLENBQUMsV0FBVyxJQUFJLEVBQUUsV0FBVyxFQUFFLENBQUM7Z0JBQ25DLFlBQVksRUFBRSxFQUFFO2FBQ0EsQ0FBQTtRQUNwQixDQUFDO0lBQ0gsQ0FBQztJQUVELEtBQUssQ0FBQyxXQUFXLENBQ2YsTUFBcUIsRUFDckIsU0FBa0I7UUFFbEIsTUFBTSxTQUFTLEdBQUcsS0FBSyxFQUFFLENBQUE7UUFDekIsSUFBSSxZQUF1QyxDQUFBO1FBQzNDLElBQUksU0FBUyxFQUFFLENBQUM7WUFDZCxNQUFNLGNBQWMsR0FBRyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUE7WUFDdkQsd0NBQXdDO1lBQ3hDLElBQUksZ0JBQXlCLENBQUE7WUFDN0IsTUFBTSxTQUFTLENBQ2IsU0FBUyxFQUNULFNBQVMsRUFDVCxJQUFJLENBQUMsV0FBVyxFQUNoQixJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsS0FBSyxDQUM1QixDQUFBO1lBRUQsWUFBWSxHQUFHLENBQUMsSUFBWSxFQUFFLEVBQUU7Z0JBQzlCLE9BQU8sY0FBYyxLQUFLLElBQUk7b0JBQzVCLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO3dCQUMxQyxDQUFDLGdCQUFnQixJQUFJLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDO29CQUNuRCxDQUFDLENBQUMsSUFBSSxDQUFBO1lBQ1YsQ0FBQyxDQUFBO1lBQ0QsZ0JBQWdCLEdBQUcsWUFBWSxDQUFDLGdCQUFnQixDQUFDLENBQUE7UUFDbkQsQ0FBQzthQUFNLENBQUM7WUFDTixZQUFZLEdBQUcsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFBO1FBQzNCLENBQUM7UUFFRCxJQUFJLFVBQVUsR0FBRyxTQUFTLENBQUMsR0FBRyxDQUM1QixJQUFJLEVBQ0osR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUNYLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FDVCxDQUFBO1FBQ2QsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2hCLE1BQU0sU0FBUyxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQzdCLEdBQUcsQ0FBQyxHQUFHLFFBQVEsVUFBVSxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxFQUNuRCxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQ1gsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUNULENBQUE7WUFDZCxVQUFVLEdBQUcsU0FBUyxDQUFDLE9BQW9CLENBQUE7UUFDN0MsQ0FBQztRQUVELFlBQVksQ0FBQyxrQkFBa0IsQ0FBQztZQUM5QixJQUFJLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRSxVQUFVLENBQUMsQ0FBQTtRQUNqRSxZQUFZLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEVBQUUsU0FBUyxFQUFFLFVBQVUsQ0FBQyxDQUFBO1FBQzNFLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQztZQUM3QixJQUFJLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLENBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRSxVQUFVLENBQUMsQ0FBQTtRQUVoRSxZQUFZLENBQUMsVUFBVSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRSxVQUFVLENBQUMsQ0FBQTtRQUN6RCxZQUFZLENBQUMsbUJBQW1CLENBQUM7WUFDL0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLE1BQU0sRUFBRSxTQUFTLEVBQUUsVUFBVSxDQUFDLENBQUE7UUFFbEUsWUFBWSxDQUFDLGVBQWUsQ0FBQztZQUMzQixJQUFJLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxTQUFTLEVBQUUsVUFBVSxDQUFDLENBQUE7UUFDOUQsWUFBWSxDQUFDLGVBQWUsQ0FBQztZQUMzQixJQUFJLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxTQUFTLEVBQUUsVUFBVSxDQUFDLENBQUE7UUFDOUQsWUFBWSxDQUFDLGlCQUFpQixDQUFDO1lBQzdCLElBQUksQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxNQUFNLEVBQUUsU0FBUyxFQUFFLFVBQVUsQ0FBQyxDQUFBO1FBRWhFLFlBQVksQ0FBQyxPQUFPLENBQUM7WUFDbkIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsU0FBUyxFQUFFLFVBQVUsQ0FBQyxDQUFBO1FBQ3RELFlBQVksQ0FBQyxVQUFVLENBQUM7WUFDdEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxNQUFNLEVBQUUsU0FBUyxFQUFFLFVBQVUsQ0FBQyxDQUFBO1FBRXpELFlBQVksQ0FBQyxpQkFBaUIsQ0FBQztZQUM3QixJQUFJLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLENBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRSxVQUFVLENBQUMsQ0FBQTtRQUNoRSxZQUFZLENBQUMsbUJBQW1CLENBQUM7WUFDL0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLE1BQU0sRUFBRSxTQUFTLEVBQUUsVUFBVSxDQUFDLENBQUE7UUFDbEUsWUFBWSxDQUFDLGlCQUFpQixDQUFDO1lBQzdCLElBQUksQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxNQUFNLEVBQUUsU0FBUyxFQUFFLFVBQVUsQ0FBQyxDQUFBO1FBRWhFLFlBQVksQ0FBQyxxQkFBcUIsQ0FBQztZQUNqQyxJQUFJLENBQUMsT0FBTyxDQUFDLHFCQUFxQixDQUFDLENBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRSxVQUFVLENBQUMsQ0FBQTtRQUVwRSxZQUFZLENBQUMsVUFBVSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRSxVQUFVLENBQUMsQ0FBQTtRQUN6RCxZQUFZLENBQUMsUUFBUSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRSxVQUFVLENBQUMsQ0FBQTtRQUN2RCxZQUFZLENBQUMsa0JBQWtCLENBQUM7WUFDOUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLE1BQU0sRUFBRSxTQUFTLEVBQUUsVUFBVSxDQUFDLENBQUE7UUFDakUsWUFBWSxDQUFDLHFCQUFxQixDQUFDO1lBQ2pDLElBQUksQ0FBQyxPQUFPLENBQUMscUJBQXFCLENBQUMsQ0FBQyxNQUFNLEVBQUUsU0FBUyxFQUFFLFVBQVUsQ0FBQyxDQUFBO1FBQ3BFLFlBQVksQ0FBQyxVQUFVLENBQUM7WUFDdEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxNQUFNLEVBQUUsU0FBUyxFQUFFLFVBQVUsQ0FBQyxDQUFBO1FBQ3pELFlBQVksQ0FBQyxrQkFBa0IsQ0FBQztZQUM5QixJQUFJLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRSxVQUFVLENBQUMsQ0FBQTtRQUNqRSxZQUFZLENBQUMsaUJBQWlCLENBQUM7WUFDN0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLE1BQU0sRUFBRSxTQUFTLEVBQUUsVUFBVSxDQUFDLENBQUE7UUFFaEUsSUFBSSxNQUFNLENBQUMsSUFBSSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQzlCLFlBQVksQ0FBQyxRQUFRLENBQUM7Z0JBQ3BCLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRSxVQUFVLENBQUMsQ0FBQTtZQUN2RCxZQUFZLENBQUMsaUJBQWlCLENBQUM7Z0JBQzdCLElBQUksQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxNQUFNLEVBQUUsU0FBUyxFQUFFLFVBQVUsQ0FBQyxDQUFBO1lBQ2hFLFlBQVksQ0FBQyx1QkFBdUIsQ0FBQztnQkFDbkMsSUFBSSxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLE1BQU0sRUFBRSxTQUFTLEVBQUUsVUFBVSxDQUFDLENBQUE7WUFDdEUsWUFBWSxDQUFDLFdBQVcsQ0FBQztnQkFDdkIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxNQUFNLEVBQUUsU0FBUyxFQUFFLFVBQVUsQ0FBQyxDQUFBO1lBQzFELFlBQVksQ0FBQyxpQkFBaUIsQ0FBQztnQkFDN0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLE1BQU0sRUFBRSxTQUFTLEVBQUUsVUFBVSxDQUFDLENBQUE7WUFDaEUsWUFBWSxDQUFDLFNBQVMsQ0FBQztnQkFDckIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEVBQUUsU0FBUyxFQUFFLFVBQVUsQ0FBQyxDQUFBO1FBQzFELENBQUM7UUFDRCxZQUFZLENBQUMsZ0JBQWdCLENBQUM7WUFDNUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLE1BQU0sRUFBRSxTQUFTLEVBQUUsVUFBVSxDQUFDLENBQUE7UUFFL0QsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3JDLE9BQU8sZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUE7UUFDcEMsQ0FBQztRQUVELE9BQU8sU0FBUyxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUE7SUFDbkUsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2F0YWxvZ1JlY29yZCxcbiAgQ2F0YWxvZ1JlY29yZEtleXMsXG4gIERhdGFzZXRSZWNvcmQsXG4gIExhbmd1YWdlQ29kZSxcbiAgUmVjb3JkVHJhbnNsYXRpb25zLFxuICBTZXJ2aWNlUmVjb3JkLFxufSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9kb21haW4vc3JjL2xpYi9tb2RlbC9yZWNvcmQnXG5pbXBvcnQgeyBCYXNlQ29udmVydGVyLCBNZXRhZGF0YU1hcHBlckNvbnRleHQgfSBmcm9tICcuLi9iYXNlLmNvbnZlcnRlcidcbmltcG9ydCB7IGlzRXF1YWwgfSBmcm9tICcuLi9jb252ZXJ0LXV0aWxzJ1xuaW1wb3J0IHsgaXNGaWVsZFRyYW5zbGF0YWJsZSB9IGZyb20gJy4uL3RyYW5zbGF0ZS11dGlscydcbmltcG9ydCB7XG4gIHJlYWRBYnN0cmFjdCxcbiAgcmVhZENvbnRhY3RzLFxuICByZWFkQ29udGFjdHNGb3JSZXNvdXJjZSxcbiAgcmVhZERlZmF1bHRMYW5ndWFnZSxcbiAgcmVhZEtleXdvcmRzLFxuICByZWFkTGFuZGluZ1BhZ2UsXG4gIHJlYWRMaWNlbnNlcyxcbiAgcmVhZE9ubGluZVJlc291cmNlcyxcbiAgcmVhZE93bmVyT3JnYW5pemF0aW9uLFxuICByZWFkUmVjb3JkQ3JlYXRlZCxcbiAgcmVhZFJlY29yZFVwZGF0ZWQsXG4gIHJlYWRSZXNvdXJjZUNyZWF0ZWQsXG4gIHJlYWRSZXNvdXJjZVVwZGF0ZWQsXG4gIHJlYWRTcGF0aWFsRXh0ZW50cyxcbiAgcmVhZFRpdGxlLFxuICByZWFkVG9waWNzLFxuICByZWFkVW5pcXVlSWRlbnRpZmllcixcbn0gZnJvbSAnLi9yZWFkLXBhcnRzJ1xuaW1wb3J0IHsgd3JpdGVBYnN0cmFjdCwgd3JpdGVUaXRsZSwgd3JpdGVVbmlxdWVJZGVudGlmaWVyIH0gZnJvbSAnLi93cml0ZS1wYXJ0cydcbmltcG9ydCB7IGdyYXBoLCBOYW1lZE5vZGUsIFN0YXRlbWVudCwgU3RvcmUsIHN5bSB9IGZyb20gJ3JkZmxpYidcbmltcG9ydCB7IERDQVQsIFJERiB9IGZyb20gJy4vbmFtZXNwYWNlcydcbmltcG9ydCB7IEJBU0VfVVJJIH0gZnJvbSAnLi91dGlscy91cmknXG5pbXBvcnQgdHlwZSB7IENvbnRlbnRUeXBlIH0gZnJvbSAncmRmbGliL2xpYi90eXBlcydcbmltcG9ydCB7IGxvYWRHcmFwaCB9IGZyb20gJy4vdXRpbHMvZ3JhcGgtdXRpbHMnXG5pbXBvcnQgeyBleHBvcnRHcmFwaFRvWG1sIH0gZnJvbSAnLi91dGlscy9zZXJpYWxpemUtdG8teG1sJ1xuXG5leHBvcnQgY2xhc3MgRGNhdEFwQ29udmVydGVyIGV4dGVuZHMgQmFzZUNvbnZlcnRlcjxzdHJpbmc+IHtcbiAgcHJvdGVjdGVkIHJlYWRlcnM6IFJlY29yZDxcbiAgICBDYXRhbG9nUmVjb3JkS2V5cyxcbiAgICAoXG4gICAgICBkYXRhU3RvcmU6IFN0b3JlLFxuICAgICAgY2F0YWxvZ1JlY29yZDogTmFtZWROb2RlLFxuICAgICAgdHJhbnNsYXRpb25zOiBSZWNvcmRUcmFuc2xhdGlvbnMsXG4gICAgICBkZWZhdWx0TGFuZ3VhZ2U6IExhbmd1YWdlQ29kZVxuICAgICkgPT4gdW5rbm93blxuICA+ID0ge1xuICAgIHVuaXF1ZUlkZW50aWZpZXI6IHJlYWRVbmlxdWVJZGVudGlmaWVyLFxuICAgIHRpdGxlOiByZWFkVGl0bGUsXG4gICAgYWJzdHJhY3Q6IHJlYWRBYnN0cmFjdCxcbiAgICBjb250YWN0czogcmVhZENvbnRhY3RzLFxuICAgIGNvbnRhY3RzRm9yUmVzb3VyY2U6IHJlYWRDb250YWN0c0ZvclJlc291cmNlLFxuICAgIGxhbmRpbmdQYWdlOiByZWFkTGFuZGluZ1BhZ2UsXG4gICAgb25saW5lUmVzb3VyY2VzOiByZWFkT25saW5lUmVzb3VyY2VzLFxuICAgIHNwYXRpYWxFeHRlbnRzOiByZWFkU3BhdGlhbEV4dGVudHMsXG4gICAga2V5d29yZHM6IHJlYWRLZXl3b3JkcyxcbiAgICB0b3BpY3M6IHJlYWRUb3BpY3MsXG4gICAgcmVzb3VyY2VJZGVudGlmaWVyczogKCkgPT4gdW5kZWZpbmVkLFxuICAgIHJlY29yZFVwZGF0ZWQ6IHJlYWRSZWNvcmRVcGRhdGVkLFxuICAgIHJlY29yZENyZWF0ZWQ6IHJlYWRSZWNvcmRDcmVhdGVkLFxuICAgIHJlc291cmNlVXBkYXRlZDogcmVhZFJlc291cmNlVXBkYXRlZCxcbiAgICByZXNvdXJjZUNyZWF0ZWQ6IHJlYWRSZXNvdXJjZUNyZWF0ZWQsXG4gICAgb3duZXJPcmdhbml6YXRpb246IHJlYWRPd25lck9yZ2FuaXphdGlvbixcbiAgICBsaWNlbnNlczogcmVhZExpY2Vuc2VzLFxuICAgIGRlZmF1bHRMYW5ndWFnZTogcmVhZERlZmF1bHRMYW5ndWFnZSxcbiAgICBvdGhlckxhbmd1YWdlczogKCkgPT4gW10sIC8vIGxhbmd1YWdlcyB3aWxsIGJlIGluZmVycmVkIGZyb20gZm91bmQgdHJhbnNsYXRpb25zXG4gICAgLy8gVE9ET1xuICAgIGtpbmQ6ICgpID0+ICdkYXRhc2V0JyxcbiAgICByZWNvcmRQdWJsaXNoZWQ6ICgpID0+IHVuZGVmaW5lZCxcbiAgICByZXNvdXJjZVB1Ymxpc2hlZDogKCkgPT4gdW5kZWZpbmVkLFxuICAgIHJldXNlVHlwZTogKCkgPT4gdW5kZWZpbmVkLFxuICAgIGxlZ2FsQ29uc3RyYWludHM6ICgpID0+IFtdLFxuICAgIHNlY3VyaXR5Q29uc3RyYWludHM6ICgpID0+IFtdLFxuICAgIG90aGVyQ29uc3RyYWludHM6ICgpID0+IFtdLFxuICAgIHN0YXR1czogKCkgPT4gJ2NvbXBsZXRlZCcsXG4gICAgdXBkYXRlRnJlcXVlbmN5OiAoKSA9PiAndW5rbm93bicsXG4gICAgb3ZlcnZpZXdzOiAoKSA9PiBbXSxcbiAgICBsaW5lYWdlOiAoKSA9PiAnJyxcbiAgICB0ZW1wb3JhbEV4dGVudHM6ICgpID0+IFtdLFxuICAgIHNwYXRpYWxSZXByZXNlbnRhdGlvbjogKCkgPT4gdW5kZWZpbmVkLFxuICAgIGV4dHJhczogKCkgPT4gdW5kZWZpbmVkLFxuICAgIHRyYW5zbGF0aW9uczogKCkgPT4gdW5kZWZpbmVkLFxuICB9XG5cbiAgcHJvdGVjdGVkIHdyaXRlcnM6IFJlY29yZDxcbiAgICBDYXRhbG9nUmVjb3JkS2V5cyxcbiAgICAocmVjb3JkOiBDYXRhbG9nUmVjb3JkLCBkYXRhU3RvcmU6IFN0b3JlLCBjYXRhbG9nUmVjb3JkOiBOYW1lZE5vZGUpID0+IHZvaWRcbiAgPiA9IHtcbiAgICB1bmlxdWVJZGVudGlmaWVyOiB3cml0ZVVuaXF1ZUlkZW50aWZpZXIsXG4gICAgdGl0bGU6IHdyaXRlVGl0bGUsXG4gICAgYWJzdHJhY3Q6IHdyaXRlQWJzdHJhY3QsXG4gICAgLy8gVE9ET1xuICAgIGtpbmQ6ICgpID0+IHVuZGVmaW5lZCxcbiAgICBvd25lck9yZ2FuaXphdGlvbjogKCkgPT4gdW5kZWZpbmVkLFxuICAgIHJlY29yZFVwZGF0ZWQ6ICgpID0+IHVuZGVmaW5lZCxcbiAgICByZWNvcmRDcmVhdGVkOiAoKSA9PiB1bmRlZmluZWQsXG4gICAgcmVjb3JkUHVibGlzaGVkOiAoKSA9PiB1bmRlZmluZWQsXG4gICAgcmVzb3VyY2VJZGVudGlmaWVyczogKCkgPT4gdW5kZWZpbmVkLFxuICAgIHJlc291cmNlVXBkYXRlZDogKCkgPT4gdW5kZWZpbmVkLFxuICAgIHJlc291cmNlQ3JlYXRlZDogKCkgPT4gdW5kZWZpbmVkLFxuICAgIHJlc291cmNlUHVibGlzaGVkOiAoKSA9PiB1bmRlZmluZWQsXG4gICAgcmV1c2VUeXBlOiAoKSA9PiB1bmRlZmluZWQsXG4gICAgY29udGFjdHM6ICgpID0+IHVuZGVmaW5lZCxcbiAgICBjb250YWN0c0ZvclJlc291cmNlOiAoKSA9PiB1bmRlZmluZWQsXG4gICAga2V5d29yZHM6ICgpID0+IHVuZGVmaW5lZCxcbiAgICB0b3BpY3M6ICgpID0+IHVuZGVmaW5lZCxcbiAgICBsaWNlbnNlczogKCkgPT4gdW5kZWZpbmVkLFxuICAgIGxlZ2FsQ29uc3RyYWludHM6ICgpID0+IHVuZGVmaW5lZCxcbiAgICBzZWN1cml0eUNvbnN0cmFpbnRzOiAoKSA9PiB1bmRlZmluZWQsXG4gICAgb3RoZXJDb25zdHJhaW50czogKCkgPT4gdW5kZWZpbmVkLFxuICAgIHN0YXR1czogKCkgPT4gdW5kZWZpbmVkLFxuICAgIHVwZGF0ZUZyZXF1ZW5jeTogKCkgPT4gdW5kZWZpbmVkLFxuICAgIHNwYXRpYWxSZXByZXNlbnRhdGlvbjogKCkgPT4gdW5kZWZpbmVkLFxuICAgIG92ZXJ2aWV3czogKCkgPT4gdW5kZWZpbmVkLFxuICAgIGxpbmVhZ2U6ICgpID0+IHVuZGVmaW5lZCxcbiAgICBvbmxpbmVSZXNvdXJjZXM6ICgpID0+IHVuZGVmaW5lZCxcbiAgICB0ZW1wb3JhbEV4dGVudHM6ICgpID0+IHVuZGVmaW5lZCxcbiAgICBzcGF0aWFsRXh0ZW50czogKCkgPT4gdW5kZWZpbmVkLFxuICAgIGV4dHJhczogKCkgPT4gdW5kZWZpbmVkLFxuICAgIGxhbmRpbmdQYWdlOiAoKSA9PiB1bmRlZmluZWQsXG4gICAgZGVmYXVsdExhbmd1YWdlOiAoKSA9PiB1bmRlZmluZWQsXG4gICAgb3RoZXJMYW5ndWFnZXM6ICgpID0+IHVuZGVmaW5lZCxcbiAgICB0cmFuc2xhdGlvbnM6ICgpID0+IHVuZGVmaW5lZCxcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY29udGVudFR5cGU6IENvbnRlbnRUeXBlID0gJ2FwcGxpY2F0aW9uL3JkZit4bWwnLFxuICAgIGN0eDogTWV0YWRhdGFNYXBwZXJDb250ZXh0ID0gbmV3IE1ldGFkYXRhTWFwcGVyQ29udGV4dCgpXG4gICkge1xuICAgIHN1cGVyKGN0eClcbiAgfVxuXG4gIGFzeW5jIHJlYWRSZWNvcmQoZG9jdW1lbnQ6IHN0cmluZyk6IFByb21pc2U8Q2F0YWxvZ1JlY29yZD4ge1xuICAgIGNvbnN0IGRhdGFTdG9yZSA9IGdyYXBoKClcbiAgICBhd2FpdCBsb2FkR3JhcGgoZGF0YVN0b3JlLCBkb2N1bWVudCwgdGhpcy5jb250ZW50VHlwZSlcblxuICAgIGNvbnN0IGNhdGFsb2dSZWNvcmQgPSBkYXRhU3RvcmUudGhlKFxuICAgICAgbnVsbCxcbiAgICAgIG51bGwsXG4gICAgICBEQ0FUKCdDYXRhbG9nUmVjb3JkJylcbiAgICApIGFzIE5hbWVkTm9kZVxuXG4gICAgY29uc3QgdHI6IFJlY29yZFRyYW5zbGF0aW9ucyA9IHt9XG5cbiAgICAvLyB3ZSBuZWVkIHRoZSBkZWZhdWx0IGxhbmd1YWdlIGZpcnN0IGZvciB0aGUgb3RoZXIgZmllbGRzXG4gICAgY29uc3QgZGVmYXVsdExhbmd1YWdlID0gdGhpcy5yZWFkZXJzWydkZWZhdWx0TGFuZ3VhZ2UnXShcbiAgICAgIGRhdGFTdG9yZSxcbiAgICAgIGNhdGFsb2dSZWNvcmQsXG4gICAgICB0cixcbiAgICAgIG51bGxcbiAgICApIGFzIHN0cmluZ1xuICAgIGNvbnN0IHVuaXF1ZUlkZW50aWZpZXIgPSB0aGlzLnJlYWRlcnNbJ3VuaXF1ZUlkZW50aWZpZXInXShcbiAgICAgIGRhdGFTdG9yZSxcbiAgICAgIGNhdGFsb2dSZWNvcmQsXG4gICAgICB0cixcbiAgICAgIGRlZmF1bHRMYW5ndWFnZVxuICAgIClcbiAgICBjb25zdCBraW5kID0gdGhpcy5yZWFkZXJzWydraW5kJ10oXG4gICAgICBkYXRhU3RvcmUsXG4gICAgICBjYXRhbG9nUmVjb3JkLFxuICAgICAgdHIsXG4gICAgICBkZWZhdWx0TGFuZ3VhZ2VcbiAgICApXG4gICAgY29uc3Qgb3duZXJPcmdhbml6YXRpb24gPSB0aGlzLnJlYWRlcnNbJ293bmVyT3JnYW5pemF0aW9uJ10oXG4gICAgICBkYXRhU3RvcmUsXG4gICAgICBjYXRhbG9nUmVjb3JkLFxuICAgICAgdHIsXG4gICAgICBkZWZhdWx0TGFuZ3VhZ2VcbiAgICApXG4gICAgY29uc3QgdGl0bGUgPSB0aGlzLnJlYWRlcnNbJ3RpdGxlJ10oXG4gICAgICBkYXRhU3RvcmUsXG4gICAgICBjYXRhbG9nUmVjb3JkLFxuICAgICAgdHIsXG4gICAgICBkZWZhdWx0TGFuZ3VhZ2VcbiAgICApXG4gICAgY29uc3QgYWJzdHJhY3QgPSB0aGlzLnJlYWRlcnNbJ2Fic3RyYWN0J10oXG4gICAgICBkYXRhU3RvcmUsXG4gICAgICBjYXRhbG9nUmVjb3JkLFxuICAgICAgdHIsXG4gICAgICBkZWZhdWx0TGFuZ3VhZ2VcbiAgICApXG4gICAgY29uc3QgY29udGFjdHMgPSB0aGlzLnJlYWRlcnNbJ2NvbnRhY3RzJ10oXG4gICAgICBkYXRhU3RvcmUsXG4gICAgICBjYXRhbG9nUmVjb3JkLFxuICAgICAgdHIsXG4gICAgICBkZWZhdWx0TGFuZ3VhZ2VcbiAgICApXG4gICAgY29uc3QgY29udGFjdHNGb3JSZXNvdXJjZSA9IHRoaXMucmVhZGVyc1snY29udGFjdHNGb3JSZXNvdXJjZSddKFxuICAgICAgZGF0YVN0b3JlLFxuICAgICAgY2F0YWxvZ1JlY29yZCxcbiAgICAgIHRyLFxuICAgICAgZGVmYXVsdExhbmd1YWdlXG4gICAgKVxuICAgIGNvbnN0IHJlY29yZFVwZGF0ZWQgPSB0aGlzLnJlYWRlcnNbJ3JlY29yZFVwZGF0ZWQnXShcbiAgICAgIGRhdGFTdG9yZSxcbiAgICAgIGNhdGFsb2dSZWNvcmQsXG4gICAgICB0cixcbiAgICAgIGRlZmF1bHRMYW5ndWFnZVxuICAgIClcbiAgICBjb25zdCByZWNvcmRDcmVhdGVkID0gdGhpcy5yZWFkZXJzWydyZWNvcmRDcmVhdGVkJ10oXG4gICAgICBkYXRhU3RvcmUsXG4gICAgICBjYXRhbG9nUmVjb3JkLFxuICAgICAgdHIsXG4gICAgICBkZWZhdWx0TGFuZ3VhZ2VcbiAgICApXG4gICAgY29uc3QgcmVjb3JkUHVibGlzaGVkID0gdGhpcy5yZWFkZXJzWydyZWNvcmRQdWJsaXNoZWQnXShcbiAgICAgIGRhdGFTdG9yZSxcbiAgICAgIGNhdGFsb2dSZWNvcmQsXG4gICAgICB0cixcbiAgICAgIGRlZmF1bHRMYW5ndWFnZVxuICAgIClcbiAgICBjb25zdCByZXNvdXJjZUNyZWF0ZWQgPSB0aGlzLnJlYWRlcnNbJ3Jlc291cmNlQ3JlYXRlZCddKFxuICAgICAgZGF0YVN0b3JlLFxuICAgICAgY2F0YWxvZ1JlY29yZCxcbiAgICAgIHRyLFxuICAgICAgZGVmYXVsdExhbmd1YWdlXG4gICAgKVxuICAgIGNvbnN0IHJlc291cmNlVXBkYXRlZCA9IHRoaXMucmVhZGVyc1sncmVzb3VyY2VVcGRhdGVkJ10oXG4gICAgICBkYXRhU3RvcmUsXG4gICAgICBjYXRhbG9nUmVjb3JkLFxuICAgICAgdHIsXG4gICAgICBkZWZhdWx0TGFuZ3VhZ2VcbiAgICApXG4gICAgY29uc3QgcmVzb3VyY2VQdWJsaXNoZWQgPSB0aGlzLnJlYWRlcnNbJ3Jlc291cmNlUHVibGlzaGVkJ10oXG4gICAgICBkYXRhU3RvcmUsXG4gICAgICBjYXRhbG9nUmVjb3JkLFxuICAgICAgdHIsXG4gICAgICBkZWZhdWx0TGFuZ3VhZ2VcbiAgICApXG4gICAgY29uc3Qga2V5d29yZHMgPSB0aGlzLnJlYWRlcnNbJ2tleXdvcmRzJ10oXG4gICAgICBkYXRhU3RvcmUsXG4gICAgICBjYXRhbG9nUmVjb3JkLFxuICAgICAgdHIsXG4gICAgICBkZWZhdWx0TGFuZ3VhZ2VcbiAgICApXG4gICAgY29uc3QgdG9waWNzID0gdGhpcy5yZWFkZXJzWyd0b3BpY3MnXShcbiAgICAgIGRhdGFTdG9yZSxcbiAgICAgIGNhdGFsb2dSZWNvcmQsXG4gICAgICB0cixcbiAgICAgIGRlZmF1bHRMYW5ndWFnZVxuICAgIClcbiAgICBjb25zdCBsZWdhbENvbnN0cmFpbnRzID0gdGhpcy5yZWFkZXJzWydsZWdhbENvbnN0cmFpbnRzJ10oXG4gICAgICBkYXRhU3RvcmUsXG4gICAgICBjYXRhbG9nUmVjb3JkLFxuICAgICAgdHIsXG4gICAgICBkZWZhdWx0TGFuZ3VhZ2VcbiAgICApXG4gICAgY29uc3Qgb3RoZXJDb25zdHJhaW50cyA9IHRoaXMucmVhZGVyc1snb3RoZXJDb25zdHJhaW50cyddKFxuICAgICAgZGF0YVN0b3JlLFxuICAgICAgY2F0YWxvZ1JlY29yZCxcbiAgICAgIHRyLFxuICAgICAgZGVmYXVsdExhbmd1YWdlXG4gICAgKVxuICAgIGNvbnN0IHNlY3VyaXR5Q29uc3RyYWludHMgPSB0aGlzLnJlYWRlcnNbJ3NlY3VyaXR5Q29uc3RyYWludHMnXShcbiAgICAgIGRhdGFTdG9yZSxcbiAgICAgIGNhdGFsb2dSZWNvcmQsXG4gICAgICB0cixcbiAgICAgIGRlZmF1bHRMYW5ndWFnZVxuICAgIClcbiAgICBjb25zdCBsaWNlbnNlcyA9IHRoaXMucmVhZGVyc1snbGljZW5zZXMnXShcbiAgICAgIGRhdGFTdG9yZSxcbiAgICAgIGNhdGFsb2dSZWNvcmQsXG4gICAgICB0cixcbiAgICAgIGRlZmF1bHRMYW5ndWFnZVxuICAgIClcbiAgICBjb25zdCBvdmVydmlld3MgPSB0aGlzLnJlYWRlcnNbJ292ZXJ2aWV3cyddKFxuICAgICAgZGF0YVN0b3JlLFxuICAgICAgY2F0YWxvZ1JlY29yZCxcbiAgICAgIHRyLFxuICAgICAgZGVmYXVsdExhbmd1YWdlXG4gICAgKVxuICAgIGNvbnN0IGxhbmRpbmdQYWdlID0gdGhpcy5yZWFkZXJzWydsYW5kaW5nUGFnZSddKFxuICAgICAgZGF0YVN0b3JlLFxuICAgICAgY2F0YWxvZ1JlY29yZCxcbiAgICAgIHRyLFxuICAgICAgZGVmYXVsdExhbmd1YWdlXG4gICAgKVxuICAgIGNvbnN0IG90aGVyTGFuZ3VhZ2VzID0gdGhpcy5yZWFkZXJzWydvdGhlckxhbmd1YWdlcyddKFxuICAgICAgZGF0YVN0b3JlLFxuICAgICAgY2F0YWxvZ1JlY29yZCxcbiAgICAgIHRyLFxuICAgICAgZGVmYXVsdExhbmd1YWdlXG4gICAgKVxuXG4gICAgaWYgKGtpbmQgPT09ICdkYXRhc2V0Jykge1xuICAgICAgY29uc3Qgc3RhdHVzID0gdGhpcy5yZWFkZXJzWydzdGF0dXMnXShcbiAgICAgICAgZGF0YVN0b3JlLFxuICAgICAgICBjYXRhbG9nUmVjb3JkLFxuICAgICAgICB0cixcbiAgICAgICAgZGVmYXVsdExhbmd1YWdlXG4gICAgICApXG4gICAgICBjb25zdCBzcGF0aWFsUmVwcmVzZW50YXRpb24gPSB0aGlzLnJlYWRlcnNbJ3NwYXRpYWxSZXByZXNlbnRhdGlvbiddKFxuICAgICAgICBkYXRhU3RvcmUsXG4gICAgICAgIGNhdGFsb2dSZWNvcmQsXG4gICAgICAgIHRyLFxuICAgICAgICBkZWZhdWx0TGFuZ3VhZ2VcbiAgICAgIClcbiAgICAgIGNvbnN0IHNwYXRpYWxFeHRlbnRzID0gdGhpcy5yZWFkZXJzWydzcGF0aWFsRXh0ZW50cyddKFxuICAgICAgICBkYXRhU3RvcmUsXG4gICAgICAgIGNhdGFsb2dSZWNvcmQsXG4gICAgICAgIHRyLFxuICAgICAgICBkZWZhdWx0TGFuZ3VhZ2VcbiAgICAgIClcbiAgICAgIGNvbnN0IHRlbXBvcmFsRXh0ZW50cyA9IHRoaXMucmVhZGVyc1sndGVtcG9yYWxFeHRlbnRzJ10oXG4gICAgICAgIGRhdGFTdG9yZSxcbiAgICAgICAgY2F0YWxvZ1JlY29yZCxcbiAgICAgICAgdHIsXG4gICAgICAgIGRlZmF1bHRMYW5ndWFnZVxuICAgICAgKVxuICAgICAgY29uc3QgbGluZWFnZSA9IHRoaXMucmVhZGVyc1snbGluZWFnZSddKFxuICAgICAgICBkYXRhU3RvcmUsXG4gICAgICAgIGNhdGFsb2dSZWNvcmQsXG4gICAgICAgIHRyLFxuICAgICAgICBkZWZhdWx0TGFuZ3VhZ2VcbiAgICAgIClcbiAgICAgIGNvbnN0IG9ubGluZVJlc291cmNlcyA9IHRoaXMucmVhZGVyc1snb25saW5lUmVzb3VyY2VzJ10oXG4gICAgICAgIGRhdGFTdG9yZSxcbiAgICAgICAgY2F0YWxvZ1JlY29yZCxcbiAgICAgICAgdHIsXG4gICAgICAgIGRlZmF1bHRMYW5ndWFnZVxuICAgICAgKVxuICAgICAgY29uc3QgdXBkYXRlRnJlcXVlbmN5ID0gdGhpcy5yZWFkZXJzWyd1cGRhdGVGcmVxdWVuY3knXShcbiAgICAgICAgZGF0YVN0b3JlLFxuICAgICAgICBjYXRhbG9nUmVjb3JkLFxuICAgICAgICB0cixcbiAgICAgICAgZGVmYXVsdExhbmd1YWdlXG4gICAgICApXG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHVuaXF1ZUlkZW50aWZpZXIsXG4gICAgICAgIGtpbmQsXG4gICAgICAgIGRlZmF1bHRMYW5ndWFnZSxcbiAgICAgICAgb3RoZXJMYW5ndWFnZXMsXG4gICAgICAgIC4uLihyZWNvcmRDcmVhdGVkICYmIHsgcmVjb3JkQ3JlYXRlZCB9KSxcbiAgICAgICAgLi4uKHJlY29yZFB1Ymxpc2hlZCAmJiB7IHJlY29yZFB1Ymxpc2hlZCB9KSxcbiAgICAgICAgcmVjb3JkVXBkYXRlZCxcbiAgICAgICAgLi4uKHJlc291cmNlQ3JlYXRlZCAmJiB7IHJlc291cmNlQ3JlYXRlZCB9KSxcbiAgICAgICAgLi4uKHJlc291cmNlVXBkYXRlZCAmJiB7IHJlc291cmNlVXBkYXRlZCB9KSxcbiAgICAgICAgLi4uKHJlc291cmNlUHVibGlzaGVkICYmIHsgcmVzb3VyY2VQdWJsaXNoZWQgfSksXG4gICAgICAgIHN0YXR1cyxcbiAgICAgICAgdGl0bGUsXG4gICAgICAgIGFic3RyYWN0LFxuICAgICAgICBvd25lck9yZ2FuaXphdGlvbixcbiAgICAgICAgY29udGFjdHMsXG4gICAgICAgIGNvbnRhY3RzRm9yUmVzb3VyY2UsXG4gICAgICAgIGtleXdvcmRzLFxuICAgICAgICB0b3BpY3MsXG4gICAgICAgIGxpY2Vuc2VzLFxuICAgICAgICBsZWdhbENvbnN0cmFpbnRzLFxuICAgICAgICBzZWN1cml0eUNvbnN0cmFpbnRzLFxuICAgICAgICBvdGhlckNvbnN0cmFpbnRzLFxuICAgICAgICBsaW5lYWdlLFxuICAgICAgICAuLi4oc3BhdGlhbFJlcHJlc2VudGF0aW9uICYmIHsgc3BhdGlhbFJlcHJlc2VudGF0aW9uIH0pLFxuICAgICAgICBvdmVydmlld3MsXG4gICAgICAgIHNwYXRpYWxFeHRlbnRzLFxuICAgICAgICB0ZW1wb3JhbEV4dGVudHMsXG4gICAgICAgIG9ubGluZVJlc291cmNlcyxcbiAgICAgICAgdXBkYXRlRnJlcXVlbmN5LFxuICAgICAgICAuLi4obGFuZGluZ1BhZ2UgJiYgeyBsYW5kaW5nUGFnZSB9KSxcbiAgICAgICAgdHJhbnNsYXRpb25zOiB0cixcbiAgICAgIH0gYXMgRGF0YXNldFJlY29yZFxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBvbmxpbmVSZXNvdXJjZXMgPSB0aGlzLnJlYWRlcnNbJ29ubGluZVJlc291cmNlcyddKFxuICAgICAgICBkYXRhU3RvcmUsXG4gICAgICAgIGNhdGFsb2dSZWNvcmQsXG4gICAgICAgIHRyLFxuICAgICAgICBkZWZhdWx0TGFuZ3VhZ2VcbiAgICAgIClcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHVuaXF1ZUlkZW50aWZpZXIsXG4gICAgICAgIGtpbmQsXG4gICAgICAgIGRlZmF1bHRMYW5ndWFnZSxcbiAgICAgICAgb3RoZXJMYW5ndWFnZXMsXG4gICAgICAgIC4uLihyZWNvcmRDcmVhdGVkICYmIHsgcmVjb3JkQ3JlYXRlZCB9KSxcbiAgICAgICAgLi4uKHJlY29yZFB1Ymxpc2hlZCAmJiB7IHJlY29yZFB1Ymxpc2hlZCB9KSxcbiAgICAgICAgcmVjb3JkVXBkYXRlZCxcbiAgICAgICAgLi4uKHJlc291cmNlQ3JlYXRlZCAmJiB7IHJlc291cmNlQ3JlYXRlZCB9KSxcbiAgICAgICAgLi4uKHJlc291cmNlVXBkYXRlZCAmJiB7IHJlc291cmNlVXBkYXRlZCB9KSxcbiAgICAgICAgLi4uKHJlc291cmNlUHVibGlzaGVkICYmIHsgcmVzb3VyY2VQdWJsaXNoZWQgfSksXG4gICAgICAgIHRpdGxlLFxuICAgICAgICBhYnN0cmFjdCxcbiAgICAgICAgb3duZXJPcmdhbml6YXRpb24sXG4gICAgICAgIGNvbnRhY3RzLFxuICAgICAgICBjb250YWN0c0ZvclJlc291cmNlLFxuICAgICAgICBrZXl3b3JkcyxcbiAgICAgICAgdG9waWNzLFxuICAgICAgICBsaWNlbnNlcyxcbiAgICAgICAgbGVnYWxDb25zdHJhaW50cyxcbiAgICAgICAgc2VjdXJpdHlDb25zdHJhaW50cyxcbiAgICAgICAgb3RoZXJDb25zdHJhaW50cyxcbiAgICAgICAgb3ZlcnZpZXdzLFxuICAgICAgICBvbmxpbmVSZXNvdXJjZXMsXG4gICAgICAgIC4uLihsYW5kaW5nUGFnZSAmJiB7IGxhbmRpbmdQYWdlIH0pLFxuICAgICAgICB0cmFuc2xhdGlvbnM6IHRyLFxuICAgICAgfSBhcyBTZXJ2aWNlUmVjb3JkXG4gICAgfVxuICB9XG5cbiAgYXN5bmMgd3JpdGVSZWNvcmQoXG4gICAgcmVjb3JkOiBDYXRhbG9nUmVjb3JkLFxuICAgIHJlZmVyZW5jZT86IHN0cmluZ1xuICApOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGNvbnN0IGRhdGFTdG9yZSA9IGdyYXBoKClcbiAgICBsZXQgZmllbGRDaGFuZ2VkOiAobmFtZTogc3RyaW5nKSA9PiBib29sZWFuXG4gICAgaWYgKHJlZmVyZW5jZSkge1xuICAgICAgY29uc3Qgb3JpZ2luYWxSZWNvcmQgPSBhd2FpdCB0aGlzLnJlYWRSZWNvcmQocmVmZXJlbmNlKVxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1jb25zdFxuICAgICAgbGV0IGxhbmd1YWdlc0NoYW5nZWQ6IGJvb2xlYW5cbiAgICAgIGF3YWl0IGxvYWRHcmFwaChcbiAgICAgICAgZGF0YVN0b3JlLFxuICAgICAgICByZWZlcmVuY2UsXG4gICAgICAgIHRoaXMuY29udGVudFR5cGUsXG4gICAgICAgIERDQVQoJ0NhdGFsb2dSZWNvcmQnKS52YWx1ZVxuICAgICAgKVxuXG4gICAgICBmaWVsZENoYW5nZWQgPSAobmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICAgIHJldHVybiBvcmlnaW5hbFJlY29yZCAhPT0gbnVsbFxuICAgICAgICAgID8gIWlzRXF1YWwocmVjb3JkW25hbWVdLCBvcmlnaW5hbFJlY29yZFtuYW1lXSkgfHxcbiAgICAgICAgICAgICAgKGxhbmd1YWdlc0NoYW5nZWQgJiYgaXNGaWVsZFRyYW5zbGF0YWJsZShuYW1lKSlcbiAgICAgICAgICA6IHRydWVcbiAgICAgIH1cbiAgICAgIGxhbmd1YWdlc0NoYW5nZWQgPSBmaWVsZENoYW5nZWQoJ290aGVyTGFuZ3VhZ2VzJylcbiAgICB9IGVsc2Uge1xuICAgICAgZmllbGRDaGFuZ2VkID0gKCkgPT4gdHJ1ZVxuICAgIH1cblxuICAgIGxldCByZWNvcmROb2RlID0gZGF0YVN0b3JlLnRoZShcbiAgICAgIG51bGwsXG4gICAgICBSREYoJ3R5cGUnKSxcbiAgICAgIERDQVQoJ0NhdGFsb2dSZWNvcmQnKVxuICAgICkgYXMgTmFtZWROb2RlXG4gICAgaWYgKCFyZWNvcmROb2RlKSB7XG4gICAgICBjb25zdCBzdGF0ZW1lbnQgPSBkYXRhU3RvcmUuYWRkKFxuICAgICAgICBzeW0oYCR7QkFTRV9VUkl9cmVjb3JkLyR7cmVjb3JkLnVuaXF1ZUlkZW50aWZpZXJ9YCksXG4gICAgICAgIFJERigndHlwZScpLFxuICAgICAgICBEQ0FUKCdDYXRhbG9nUmVjb3JkJylcbiAgICAgICkgYXMgU3RhdGVtZW50XG4gICAgICByZWNvcmROb2RlID0gc3RhdGVtZW50LnN1YmplY3QgYXMgTmFtZWROb2RlXG4gICAgfVxuXG4gICAgZmllbGRDaGFuZ2VkKCd1bmlxdWVJZGVudGlmaWVyJykgJiZcbiAgICAgIHRoaXMud3JpdGVyc1sndW5pcXVlSWRlbnRpZmllciddKHJlY29yZCwgZGF0YVN0b3JlLCByZWNvcmROb2RlKVxuICAgIGZpZWxkQ2hhbmdlZCgna2luZCcpICYmIHRoaXMud3JpdGVyc1sna2luZCddKHJlY29yZCwgZGF0YVN0b3JlLCByZWNvcmROb2RlKVxuICAgIGZpZWxkQ2hhbmdlZCgnZGVmYXVsdExhbmd1YWdlJykgJiZcbiAgICAgIHRoaXMud3JpdGVyc1snZGVmYXVsdExhbmd1YWdlJ10ocmVjb3JkLCBkYXRhU3RvcmUsIHJlY29yZE5vZGUpXG5cbiAgICBmaWVsZENoYW5nZWQoJ2NvbnRhY3RzJykgJiZcbiAgICAgIHRoaXMud3JpdGVyc1snY29udGFjdHMnXShyZWNvcmQsIGRhdGFTdG9yZSwgcmVjb3JkTm9kZSlcbiAgICBmaWVsZENoYW5nZWQoJ293bmVyT3JnYW5pemF0aW9uJykgJiZcbiAgICAgIHRoaXMud3JpdGVyc1snb3duZXJPcmdhbml6YXRpb24nXShyZWNvcmQsIGRhdGFTdG9yZSwgcmVjb3JkTm9kZSlcblxuICAgIGZpZWxkQ2hhbmdlZCgncmVjb3JkVXBkYXRlZCcpICYmXG4gICAgICB0aGlzLndyaXRlcnNbJ3JlY29yZFVwZGF0ZWQnXShyZWNvcmQsIGRhdGFTdG9yZSwgcmVjb3JkTm9kZSlcbiAgICBmaWVsZENoYW5nZWQoJ3JlY29yZENyZWF0ZWQnKSAmJlxuICAgICAgdGhpcy53cml0ZXJzWydyZWNvcmRDcmVhdGVkJ10ocmVjb3JkLCBkYXRhU3RvcmUsIHJlY29yZE5vZGUpXG4gICAgZmllbGRDaGFuZ2VkKCdyZWNvcmRQdWJsaXNoZWQnKSAmJlxuICAgICAgdGhpcy53cml0ZXJzWydyZWNvcmRQdWJsaXNoZWQnXShyZWNvcmQsIGRhdGFTdG9yZSwgcmVjb3JkTm9kZSlcblxuICAgIGZpZWxkQ2hhbmdlZCgndGl0bGUnKSAmJlxuICAgICAgdGhpcy53cml0ZXJzWyd0aXRsZSddKHJlY29yZCwgZGF0YVN0b3JlLCByZWNvcmROb2RlKVxuICAgIGZpZWxkQ2hhbmdlZCgnYWJzdHJhY3QnKSAmJlxuICAgICAgdGhpcy53cml0ZXJzWydhYnN0cmFjdCddKHJlY29yZCwgZGF0YVN0b3JlLCByZWNvcmROb2RlKVxuXG4gICAgZmllbGRDaGFuZ2VkKCdyZXNvdXJjZUNyZWF0ZWQnKSAmJlxuICAgICAgdGhpcy53cml0ZXJzWydyZXNvdXJjZUNyZWF0ZWQnXShyZWNvcmQsIGRhdGFTdG9yZSwgcmVjb3JkTm9kZSlcbiAgICBmaWVsZENoYW5nZWQoJ3Jlc291cmNlUHVibGlzaGVkJykgJiZcbiAgICAgIHRoaXMud3JpdGVyc1sncmVzb3VyY2VQdWJsaXNoZWQnXShyZWNvcmQsIGRhdGFTdG9yZSwgcmVjb3JkTm9kZSlcbiAgICBmaWVsZENoYW5nZWQoJ3Jlc291cmNlVXBkYXRlZCcpICYmXG4gICAgICB0aGlzLndyaXRlcnNbJ3Jlc291cmNlVXBkYXRlZCddKHJlY29yZCwgZGF0YVN0b3JlLCByZWNvcmROb2RlKVxuXG4gICAgZmllbGRDaGFuZ2VkKCdjb250YWN0c0ZvclJlc291cmNlJykgJiZcbiAgICAgIHRoaXMud3JpdGVyc1snY29udGFjdHNGb3JSZXNvdXJjZSddKHJlY29yZCwgZGF0YVN0b3JlLCByZWNvcmROb2RlKVxuXG4gICAgZmllbGRDaGFuZ2VkKCdrZXl3b3JkcycpICYmXG4gICAgICB0aGlzLndyaXRlcnNbJ2tleXdvcmRzJ10ocmVjb3JkLCBkYXRhU3RvcmUsIHJlY29yZE5vZGUpXG4gICAgZmllbGRDaGFuZ2VkKCd0b3BpY3MnKSAmJlxuICAgICAgdGhpcy53cml0ZXJzWyd0b3BpY3MnXShyZWNvcmQsIGRhdGFTdG9yZSwgcmVjb3JkTm9kZSlcbiAgICBmaWVsZENoYW5nZWQoJ2xlZ2FsQ29uc3RyYWludHMnKSAmJlxuICAgICAgdGhpcy53cml0ZXJzWydsZWdhbENvbnN0cmFpbnRzJ10ocmVjb3JkLCBkYXRhU3RvcmUsIHJlY29yZE5vZGUpXG4gICAgZmllbGRDaGFuZ2VkKCdzZWN1cml0eUNvbnN0cmFpbnRzJykgJiZcbiAgICAgIHRoaXMud3JpdGVyc1snc2VjdXJpdHlDb25zdHJhaW50cyddKHJlY29yZCwgZGF0YVN0b3JlLCByZWNvcmROb2RlKVxuICAgIGZpZWxkQ2hhbmdlZCgnbGljZW5zZXMnKSAmJlxuICAgICAgdGhpcy53cml0ZXJzWydsaWNlbnNlcyddKHJlY29yZCwgZGF0YVN0b3JlLCByZWNvcmROb2RlKVxuICAgIGZpZWxkQ2hhbmdlZCgnb3RoZXJDb25zdHJhaW50cycpICYmXG4gICAgICB0aGlzLndyaXRlcnNbJ290aGVyQ29uc3RyYWludHMnXShyZWNvcmQsIGRhdGFTdG9yZSwgcmVjb3JkTm9kZSlcbiAgICBmaWVsZENoYW5nZWQoJ29ubGluZVJlc291cmNlcycpICYmXG4gICAgICB0aGlzLndyaXRlcnNbJ29ubGluZVJlc291cmNlcyddKHJlY29yZCwgZGF0YVN0b3JlLCByZWNvcmROb2RlKVxuXG4gICAgaWYgKHJlY29yZC5raW5kID09PSAnZGF0YXNldCcpIHtcbiAgICAgIGZpZWxkQ2hhbmdlZCgnc3RhdHVzJykgJiZcbiAgICAgICAgdGhpcy53cml0ZXJzWydzdGF0dXMnXShyZWNvcmQsIGRhdGFTdG9yZSwgcmVjb3JkTm9kZSlcbiAgICAgIGZpZWxkQ2hhbmdlZCgndXBkYXRlRnJlcXVlbmN5JykgJiZcbiAgICAgICAgdGhpcy53cml0ZXJzWyd1cGRhdGVGcmVxdWVuY3knXShyZWNvcmQsIGRhdGFTdG9yZSwgcmVjb3JkTm9kZSlcbiAgICAgIGZpZWxkQ2hhbmdlZCgnc3BhdGlhbFJlcHJlc2VudGF0aW9uJykgJiZcbiAgICAgICAgdGhpcy53cml0ZXJzWydzcGF0aWFsUmVwcmVzZW50YXRpb24nXShyZWNvcmQsIGRhdGFTdG9yZSwgcmVjb3JkTm9kZSlcbiAgICAgIGZpZWxkQ2hhbmdlZCgnb3ZlcnZpZXdzJykgJiZcbiAgICAgICAgdGhpcy53cml0ZXJzWydvdmVydmlld3MnXShyZWNvcmQsIGRhdGFTdG9yZSwgcmVjb3JkTm9kZSlcbiAgICAgIGZpZWxkQ2hhbmdlZCgndGVtcG9yYWxFeHRlbnRzJykgJiZcbiAgICAgICAgdGhpcy53cml0ZXJzWyd0ZW1wb3JhbEV4dGVudHMnXShyZWNvcmQsIGRhdGFTdG9yZSwgcmVjb3JkTm9kZSlcbiAgICAgIGZpZWxkQ2hhbmdlZCgnbGluZWFnZScpICYmXG4gICAgICAgIHRoaXMud3JpdGVyc1snbGluZWFnZSddKHJlY29yZCwgZGF0YVN0b3JlLCByZWNvcmROb2RlKVxuICAgIH1cbiAgICBmaWVsZENoYW5nZWQoJ290aGVyTGFuZ3VhZ2VzJykgJiZcbiAgICAgIHRoaXMud3JpdGVyc1snb3RoZXJMYW5ndWFnZXMnXShyZWNvcmQsIGRhdGFTdG9yZSwgcmVjb3JkTm9kZSlcblxuICAgIGlmICh0aGlzLmNvbnRlbnRUeXBlLmluY2x1ZGVzKCd4bWwnKSkge1xuICAgICAgcmV0dXJuIGV4cG9ydEdyYXBoVG9YbWwoZGF0YVN0b3JlKVxuICAgIH1cblxuICAgIHJldHVybiBkYXRhU3RvcmUuc2VyaWFsaXplKHVuZGVmaW5lZCwgdGhpcy5jb250ZW50VHlwZSwgbnVsbCwge30pXG4gIH1cbn1cbiJdfQ==
@@ -255,6 +255,29 @@ export class Gn4FieldMapper {
255
255
  }),
256
256
  };
257
257
  },
258
+ resourceIdentifier: (output, source) => {
259
+ const identifiers = getAsArray(selectField(source, 'resourceIdentifier'));
260
+ if (!identifiers.length)
261
+ return output;
262
+ const mappedIdentifiers = identifiers
263
+ .map((id) => {
264
+ const code = selectField(id, 'code');
265
+ const codeSpace = selectField(id, 'codeSpace');
266
+ const link = selectField(id, 'link');
267
+ return {
268
+ code,
269
+ ...(codeSpace && { codeSpace }),
270
+ ...(link && { url: link }),
271
+ };
272
+ })
273
+ .filter((id) => id !== null);
274
+ if (!mappedIdentifiers.length)
275
+ return output;
276
+ return {
277
+ ...output,
278
+ resourceIdentifiers: mappedIdentifiers,
279
+ };
280
+ },
258
281
  };
259
282
  this.genericField = (output) => output;
260
283
  this.constraintField = (type, output, constraintArray) => {
@@ -363,6 +386,8 @@ export class Gn4FieldMapper {
363
386
  /^OGC:WMTS/.test(protocol) ||
364
387
  /TMS/i.test(protocol) ||
365
388
  /ogc\W*api\W*features/i.test(protocol) ||
389
+ /^DB:POSTGIS/i.test(protocol) ||
390
+ /stac\W*items/i.test(protocol) ||
366
391
  (/^WWW:DOWNLOAD-/.test(protocol) && /data.geopf.fr/.test(url)) // TO DO : change with the good protocol when decided
367
392
  ) {
368
393
  return 'service';
@@ -381,4 +406,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
381
406
  providedIn: 'root',
382
407
  }]
383
408
  }], ctorParameters: () => [{ type: i1.MetadataUrlService }, { type: i2.TranslateService }] });
384
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ240LmZpZWxkLm1hcHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYXBpL21ldGFkYXRhLWNvbnZlcnRlci9zcmMvbGliL2duNC9nbjQuZmllbGQubWFwcGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxZQUFZLEVBQ1osVUFBVSxFQUNWLFFBQVEsRUFDUixhQUFhLEVBQ2IsVUFBVSxFQUNWLFdBQVcsRUFDWCxjQUFjLEVBQ2Qsb0JBQW9CLEVBQ3BCLFdBQVcsRUFDWCxxQkFBcUIsRUFDckIscUJBQXFCLEVBRXJCLE1BQU0sR0FDUCxNQUFNLHFCQUFxQixDQUFBO0FBQzVCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFBO0FBQzNELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDMUMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0saUNBQWlDLENBQUE7QUFDekUsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLE1BQU0sMkNBQTJDLENBQUE7QUFRL0YsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLCtCQUErQixDQUFBO0FBRTdELE9BQU8sRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUE7QUFDeEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDdEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQTs7OztBQVl2RSxNQUFNLE9BQU8sY0FBYztJQUN6QixZQUNVLGtCQUFzQyxFQUN0QyxnQkFBa0M7UUFEbEMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUN0QyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBT2xDLFdBQU0sR0FBb0M7WUFDbEQsRUFBRSxFQUFFLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxFQUFFLENBQ3JCLElB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LENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQTtJQUM5RSxDQUFDO0lBRUQsV0FBVyxDQUFDLEdBQVcsRUFBRSxRQUFpQjtRQUN4QyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDZCxPQUFPLE1BQU0sQ0FBQTtRQUNmLENBQUM7UUFDRCxJQUNFLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzFELFVBQVUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1lBQ3pCLFVBQVUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1lBQ3pCLFdBQVcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1lBQzFCLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1lBQ3JCLHVCQUF1QixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7WUFDdEMsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksZUFBZSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLHFEQUFxRDtVQUNwSCxDQUFDO1lBQ0QsT0FBTyxTQUFTLENBQUE7UUFDbEIsQ0FBQztRQUNELElBQUksZUFBZSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1lBQ25DLE9BQU8sVUFBVSxDQUFBO1FBQ25CLENBQUM7UUFDRCxPQUFPLE1BQU0sQ0FBQTtJQUNmLENBQUM7K0dBaGVVLGNBQWM7bUhBQWQsY0FBYyxjQUZiLE1BQU07OzRGQUVQLGNBQWM7a0JBSDFCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgZ2V0QXJyYXlJdGVtLFxuICBnZXRBc0FycmF5LFxuICBnZXRBc1VybCxcbiAgZ2V0Rmlyc3RWYWx1ZSxcbiAgbWFwQ29udGFjdCxcbiAgbWFwS2V5d29yZHMsXG4gIHNlbGVjdEZhbGxiYWNrLFxuICBzZWxlY3RGYWxsYmFja0ZpZWxkcyxcbiAgc2VsZWN0RmllbGQsXG4gIHNlbGVjdFRyYW5zbGF0ZWRGaWVsZCxcbiAgc2VsZWN0VHJhbnNsYXRlZFZhbHVlLFxuICBTb3VyY2VXaXRoVW5rbm93blByb3BzLFxuICB0b0RhdGUsXG59IGZyb20gJy4vYXRvbWljLW9wZXJhdGlvbnMnXG5pbXBvcnQgeyBNZXRhZGF0YVVybFNlcnZpY2UgfSBmcm9tICcuL21ldGFkYXRhLXVybC5zZXJ2aWNlJ1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBnZXRTdGF0dXNGcm9tU3RhdHVzQ29kZSB9IGZyb20gJy4uL2lzbzE5MTM5L3V0aWxzL3N0YXR1cy5tYXBwZXInXG5pbXBvcnQgeyBnZXRVcGRhdGVGcmVxdWVuY3lGcm9tRnJlcXVlbmN5Q29kZSB9IGZyb20gJy4uL2lzbzE5MTM5L3V0aWxzL3VwZGF0ZS1mcmVxdWVuY3kubWFwcGVyJ1xuaW1wb3J0IHtcbiAgQ2F0YWxvZ1JlY29yZCxcbiAgQ29uc3RyYWludCxcbiAgRGF0YXNldFNwYXRpYWxFeHRlbnQsXG4gIE9ubGluZVJlc291cmNlLFxuICBPbmxpbmVSZXNvdXJjZVR5cGUsXG59IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL2RvbWFpbi9zcmMvbGliL21vZGVsL3JlY29yZCdcbmltcG9ydCB7IG1hdGNoUHJvdG9jb2wgfSBmcm9tICcuLi9jb21tb24vZGlzdHJpYnV0aW9uLm1hcHBlcidcbmltcG9ydCB7IFRoZXNhdXJ1cyB9IGZyb20gJy4vdHlwZXMnXG5pbXBvcnQgeyBnZXRSZXNvdXJjZVR5cGUsIGdldFJldXNlVHlwZSB9IGZyb20gJy4uL2NvbW1vbi9yZXNvdXJjZS10eXBlcydcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJ1xuaW1wb3J0IHsgdG9MYW5nMiwgdG9MYW5nMyB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdXRpbC9pMThuL3NyYydcblxudHlwZSBFU1Jlc3BvbnNlU291cmNlID0gU291cmNlV2l0aFVua25vd25Qcm9wc1xuXG50eXBlIEVzRmllbGRNYXBwZXJGbiA9IChcbiAgb3V0cHV0OiBQYXJ0aWFsPENhdGFsb2dSZWNvcmQ+LFxuICBzb3VyY2U6IEVTUmVzcG9uc2VTb3VyY2VcbikgPT4gUGFydGlhbDxDYXRhbG9nUmVjb3JkPlxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgR240RmllbGRNYXBwZXIge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIG1ldGFkYXRhVXJsU2VydmljZTogTWV0YWRhdGFVcmxTZXJ2aWNlLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZVxuICApIHt9XG5cbiAgcHJpdmF0ZSBnZXQgZ2V0TG9jYWxpemVkSW5kZXhLZXkoKSB7XG4gICAgcmV0dXJuIGBsYW5nJHt0b0xhbmczKHRoaXMudHJhbnNsYXRlU2VydmljZS5jdXJyZW50TGFuZyl9YFxuICB9XG5cbiAgcHJvdGVjdGVkIGZpZWxkczogUmVjb3JkPHN0cmluZywgRXNGaWVsZE1hcHBlckZuPiA9IHtcbiAgICBpZDogKG91dHB1dCwgc291cmNlKSA9PlxuICAgICAgdGhpcy5hZGRFeHRyYSh7IGlkOiBzZWxlY3RGaWVsZChzb3VyY2UsICdpZCcpIH0sIG91dHB1dCksXG4gICAgdXVpZDogKG91dHB1dCwgc291cmNlKSA9PiB7XG4gICAgICBjb25zdCB1dWlkID0gc2VsZWN0RmllbGQ8c3RyaW5nPihzb3VyY2UsICd1dWlkJylcbiAgICAgIGNvbnN0IGxhbmRpbmdQYWdlID0gZ2V0QXNVcmwodGhpcy5tZXRhZGF0YVVybFNlcnZpY2UuZ2V0VXJsKHV1aWQpKVxuICAgICAgcmV0dXJuIHsgLi4ub3V0cHV0LCB1bmlxdWVJZGVudGlmaWVyOiB1dWlkLCBsYW5kaW5nUGFnZSB9XG4gICAgfSxcbiAgICBxdWFsaXR5U2NvcmU6IChvdXRwdXQsIHNvdXJjZSkgPT5cbiAgICAgIHRoaXMuYWRkRXh0cmEoXG4gICAgICAgIHsgcXVhbGl0eVNjb3JlOiBzZWxlY3RGaWVsZChzb3VyY2UsICdxdWFsaXR5U2NvcmUnKSB9LFxuICAgICAgICBvdXRwdXRcbiAgICAgICksXG4gICAgcmVzb3VyY2VUaXRsZU9iamVjdDogKG91dHB1dCwgc291cmNlKSA9PiAoe1xuICAgICAgLi4ub3V0cHV0LFxuICAgICAgdGl0bGU6IHNlbGVjdEZhbGxiYWNrKFxuICAgICAgICBzZWxlY3RUcmFuc2xhdGVkRmllbGQoXG4gICAgICAgICAgc291cmNlLFxuICAgICAgICAgICdyZXNvdXJjZVRpdGxlT2JqZWN0JyxcbiAgICAgICAgICB0aGlzLmdldExvY2FsaXplZEluZGV4S2V5XG4gICAgICAgICksXG4gICAgICAgICdubyB0aXRsZSdcbiAgICAgICksXG4gICAgfSksXG4gICAgcmVzb3VyY2VBYnN0cmFjdE9iamVjdDogKG91dHB1dCwgc291cmNlKSA9PiAoe1xuICAgICAgLi4ub3V0cHV0LFxuICAgICAgYWJzdHJhY3Q6IHNlbGVjdEZhbGxiYWNrKFxuICAgICAgICBzZWxlY3RUcmFuc2xhdGVkRmllbGQoXG4gICAgICAgICAgc291cmNlLFxuICAgICAgICAgICdyZXNvdXJjZUFic3RyYWN0T2JqZWN0JyxcbiAgICAgICAgICB0aGlzLmdldExvY2FsaXplZEluZGV4S2V5XG4gICAgICAgICksXG4gICAgICAgICdubyB0aXRsZSdcbiAgICAgICksXG4gICAgfSksXG4gICAgb3ZlcnZpZXc6IChvdXRwdXQsIHNvdXJjZSkgPT4ge1xuICAgICAgY29uc3QgZmlyc3RPdmVydmlldyA9IGdldEZpcnN0VmFsdWUoc2VsZWN0RmllbGQoc291cmNlLCAnb3ZlcnZpZXcnKSlcbiAgICAgIGNvbnN0IGRlc2NyaXB0aW9uID0gc2VsZWN0VHJhbnNsYXRlZFZhbHVlPHN0cmluZz4oXG4gICAgICAgIHNlbGVjdEZpZWxkKGZpcnN0T3ZlcnZpZXcsICd0ZXh0JyksXG4gICAgICAgIHRoaXMuZ2V0TG9jYWxpemVkSW5kZXhLZXlcbiAgICAgIClcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLm91dHB1dCxcbiAgICAgICAgb3ZlcnZpZXdzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgdXJsOiBnZXRBc1VybChzZWxlY3RGYWxsYmFja0ZpZWxkcyhmaXJzdE92ZXJ2aWV3LCAndXJsJywgJ2RhdGEnKSksXG4gICAgICAgICAgICAuLi4oZGVzY3JpcHRpb24gPyB7IGRlc2NyaXB0aW9uIH0gOiB7fSksXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH1cbiAgICB9LFxuICAgIGNsX3RvcGljOiAob3V0cHV0LCBzb3VyY2UpID0+ICh7XG4gICAgICAuLi5vdXRwdXQsXG4gICAgICB0b3BpY3M6IFtcbiAgICAgICAgLi4uKG91dHB1dC50b3BpY3MgfHwgW10pLFxuICAgICAgICAuLi5nZXRBc0FycmF5KFxuICAgICAgICAgIHNlbGVjdEZpZWxkPFNvdXJjZVdpdGhVbmtub3duUHJvcHNbXT4oc291cmNlLCAnY2xfdG9waWMnKVxuICAgICAgICApLm1hcCgodG9waWMpID0+XG4gICAgICAgICAgc2VsZWN0VHJhbnNsYXRlZFZhbHVlPHN0cmluZz4odG9waWMsIHRoaXMuZ2V0TG9jYWxpemVkSW5kZXhLZXkpXG4gICAgICAgICksXG4gICAgICBdLFxuICAgIH0pLFxuICAgIGNsX3N0YXR1czogKG91dHB1dCwgc291cmNlKSA9PiAoe1xuICAgICAgLi4ub3V0cHV0LFxuICAgICAgc3RhdHVzOiBnZXRTdGF0dXNGcm9tU3RhdHVzQ29kZShcbiAgICAgICAgc2VsZWN0RmllbGQoZ2V0Rmlyc3RWYWx1ZShzZWxlY3RGaWVsZChzb3VyY2UsICdjbF9zdGF0dXMnKSksICdrZXknKVxuICAgICAgKSxcbiAgICB9KSxcbiAgICBjbF9tYWludGVuYW5jZUFuZFVwZGF0ZUZyZXF1ZW5jeTogKG91dHB1dCwgc291cmNlKSA9PiAoe1xuICAgICAgLi4ub3V0cHV0LFxuICAgICAgdXBkYXRlRnJlcXVlbmN5OiBnZXRVcGRhdGVGcmVxdWVuY3lGcm9tRnJlcXVlbmN5Q29kZShcbiAgICAgICAgc2VsZWN0RmllbGQoXG4gICAgICAgICAgZ2V0Rmlyc3RWYWx1ZShcbiAgICAgICAgICAgIHNlbGVjdEZpZWxkKHNvdXJjZSwgJ2NsX21haW50ZW5hbmNlQW5kVXBkYXRlRnJlcXVlbmN5JylcbiAgICAgICAgICApLFxuICAgICAgICAgICdrZXknXG4gICAgICAgIClcbiAgICAgICksXG4gICAgfSksXG4gICAgY3JlYXRpb25EYXRlRm9yUmVzb3VyY2U6IChvdXRwdXQsIHNvdXJjZSkgPT4gKHtcbiAgICAgIC4uLm91dHB1dCxcbiAgICAgIHJlc291cmNlQ3JlYXRlZDogdG9EYXRlKFxuICAgICAgICBnZXRGaXJzdFZhbHVlKHNlbGVjdEZpZWxkPHN0cmluZz4oc291cmNlLCAnY3JlYXRpb25EYXRlRm9yUmVzb3VyY2UnKSlcbiAgICAgICksXG4gICAgfSksXG4gICAgcmV2aXNpb25EYXRlRm9yUmVzb3VyY2U6IChvdXRwdXQsIHNvdXJjZSkgPT4gKHtcbiAgICAgIC4uLm91dHB1dCxcbiAgICAgIHJlc291cmNlVXBkYXRlZDogdG9EYXRlKFxuICAgICAgICBnZXRGaXJzdFZhbHVlKHNlbGVjdEZpZWxkPHN0cmluZz4oc291cmNlLCAncmV2aXNpb25EYXRlRm9yUmVzb3VyY2UnKSlcbiAgICAgICksXG4gICAgfSksXG4gICAgcHVibGljYXRpb25EYXRlRm9yUmVzb3VyY2U6IChvdXRwdXQsIHNvdXJjZSkgPT4gKHtcbiAgICAgIC4uLm91dHB1dCxcbiAgICAgIHJlc291cmNlUHVibGlzaGVkOiB0b0RhdGUoXG4gICAgICAgIHNlbGVjdEZpZWxkPHN0cmluZz4oc291cmNlLCAncHVibGljYXRpb25EYXRlRm9yUmVzb3VyY2UnKVxuICAgICAgKSxcbiAgICB9KSxcbiAgICBjcmVhdGVEYXRlOiAob3V0cHV0LCBzb3VyY2UpID0+ICh7XG4gICAgICAuLi5vdXRwdXQsXG4gICAgICByZWNvcmRDcmVhdGVkOiB0b0RhdGUoc2VsZWN0RmllbGQ8c3RyaW5nPihzb3VyY2UsICdjcmVhdGVEYXRlJykpLFxuICAgIH0pLFxuICAgIGNoYW5nZURhdGU6IChvdXRwdXQsIHNvdXJjZSkgPT4gKHtcbiAgICAgIC4uLm91dHB1dCxcbiAgICAgIHJlY29yZFVwZGF0ZWQ6IHRvRGF0ZShzZWxlY3RGaWVsZDxzdHJpbmc+KHNvdXJjZSwgJ2NoYW5nZURhdGUnKSksXG4gICAgfSksXG4gICAgcHVibGljYXRpb25EYXRlOiAob3V0cHV0LCBzb3VyY2UpID0+ICh7XG4gICAgICAuLi5vdXRwdXQsXG4gICAgICByZWNvcmRQdWJsaXNoZWQ6IHRvRGF0ZShzZWxlY3RGaWVsZDxzdHJpbmc+KHNvdXJjZSwgJ3B1YmxpY2F0aW9uRGF0ZScpKSxcbiAgICB9KSxcbiAgICByZXNvdXJjZUxhbmd1YWdlOiAob3V0cHV0LCBzb3VyY2UpID0+IHtcbiAgICAgIGNvbnN0IGxhbmdMaXN0ID0gZ2V0QXNBcnJheShcbiAgICAgICAgc2VsZWN0RmllbGQ8c3RyaW5nPihzb3VyY2UsICdyZXNvdXJjZUxhbmd1YWdlJylcbiAgICAgIClcbiAgICAgIGNvbnN0IGxhbmd1YWdlcyA9IGxhbmdMaXN0Lm1hcCh0b0xhbmcyKVxuICAgICAgY29uc3QgZGVmYXVsdExhbmd1YWdlID0gb3V0cHV0LmRlZmF1bHRMYW5ndWFnZSA/PyBsYW5ndWFnZXNbMF0gPz8gbnVsbCAvLyBzZXQgdGhlIGZpcnN0IGxhbmd1YWdlIGFzIG1haW4gb25lIGFzIGZhbGxiYWNrXG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLm91dHB1dCxcbiAgICAgICAgZGVmYXVsdExhbmd1YWdlLFxuICAgICAgfVxuICAgIH0sXG4gICAgb3RoZXJMYW5ndWFnZTogKG91dHB1dCwgc291cmNlKSA9PiB7XG4gICAgICBjb25zdCBsYW5nTGlzdCA9IGdldEFzQXJyYXkoc2VsZWN0RmllbGQ8c3RyaW5nPihzb3VyY2UsICdvdGhlckxhbmd1YWdlJykpXG4gICAgICBjb25zdCBsYW5ndWFnZXMgPSBsYW5nTGlzdC5tYXAodG9MYW5nMilcbiAgICAgIGNvbnN0IGRlZmF1bHRMYW5ndWFnZSA9IG91dHB1dC5kZWZhdWx0TGFuZ3VhZ2UgPz8gbGFuZ3VhZ2VzWzBdID8/IG51bGxcbiAgICAgIGNvbnN0IG90aGVyTGFuZ3VhZ2VzID0gbGFuZ3VhZ2VzLmZpbHRlcihcbiAgICAgICAgKGxhbmcpID0+IGxhbmcgIT09IGRlZmF1bHRMYW5ndWFnZVxuICAgICAgKVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5vdXRwdXQsXG4gICAgICAgIG90aGVyTGFuZ3VhZ2VzLFxuICAgICAgfVxuICAgIH0sXG4gICAgbWFpbkxhbmd1YWdlOiAob3V0cHV0LCBzb3VyY2UpID0+IHtcbiAgICAgIGNvbnN0IGxhbmd1YWdlID0gc2VsZWN0RmllbGQ8c3RyaW5nPihzb3VyY2UsICdtYWluTGFuZ3VhZ2UnKVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ub3V0cHV0LFxuICAgICAgICBkZWZhdWx0TGFuZ3VhZ2U6IGxhbmd1YWdlID8gdG9MYW5nMihsYW5ndWFnZSkgOiBudWxsLFxuICAgICAgfVxuICAgIH0sXG4gICAgbGluazogKG91dHB1dCwgc291cmNlKSA9PiB7XG4gICAgICBjb25zdCByYXdMaW5rcyA9IGdldEFzQXJyYXkoXG4gICAgICAgIHNlbGVjdEZpZWxkPFNvdXJjZVdpdGhVbmtub3duUHJvcHNbXT4oc291cmNlLCAnbGluaycpXG4gICAgICApXG4gICAgICBjb25zdCBvbmxpbmVSZXNvdXJjZXMgPSByYXdMaW5rc1xuICAgICAgICAubWFwKChsaW5rKSA9PiB0aGlzLm1hcExpbmsobGluaykpXG4gICAgICAgIC5maWx0ZXIoKHYpID0+IHYgIT09IG51bGwpXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5vdXRwdXQsXG4gICAgICAgIG9ubGluZVJlc291cmNlcyxcbiAgICAgIH0gYXMgQ2F0YWxvZ1JlY29yZFxuICAgIH0sXG4gICAgY29udGFjdDogKG91dHB1dCwgc291cmNlKSA9PiAoe1xuICAgICAgLi4ub3V0cHV0LFxuICAgICAgY29udGFjdHM6IFtcbiAgICAgICAgbWFwQ29udGFjdChcbiAgICAgICAgICBnZXRGaXJzdFZhbHVlKHNlbGVjdEZpZWxkKHNvdXJjZSwgJ2NvbnRhY3QnKSksXG4gICAgICAgICAgdGhpcy5nZXRMb2NhbGl6ZWRJbmRleEtleVxuICAgICAgICApLFxuICAgICAgXSxcbiAgICB9KSxcbiAgICBjb250YWN0Rm9yUmVzb3VyY2U6IChvdXRwdXQsIHNvdXJjZSkgPT4gKHtcbiAgICAgIC4uLm91dHB1dCxcbiAgICAgIGNvbnRhY3RzRm9yUmVzb3VyY2U6IFtcbiAgICAgICAgLi4uKCdjb250YWN0c0ZvclJlc291cmNlJyBpbiBvdXRwdXQgJiZcbiAgICAgICAgQXJyYXkuaXNBcnJheShvdXRwdXQuY29udGFjdHNGb3JSZXNvdXJjZSlcbiAgICAgICAgICA/IG91dHB1dC5jb250YWN0c0ZvclJlc291cmNlXG4gICAgICAgICAgOiBbXSksXG4gICAgICAgIC4uLmdldEFzQXJyYXkoc2VsZWN0RmllbGQoc291cmNlLCAnY29udGFjdEZvclJlc291cmNlJykpLm1hcChcbiAgICAgICAgICAoY29udGFjdCkgPT4gbWFwQ29udGFjdChjb250YWN0LCB0aGlzLmdldExvY2FsaXplZEluZGV4S2V5KVxuICAgICAgICApLFxuICAgICAgXSxcbiAgICB9KSxcbiAgICBzb3VyY2VDYXRhbG9ndWU6IChvdXRwdXQsIHNvdXJjZSkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuYWRkRXh0cmEoXG4gICAgICAgIHtcbiAgICAgICAgICBjYXRhbG9nVXVpZDogc2VsZWN0RmFsbGJhY2soXG4gICAgICAgICAgICBzZWxlY3RGaWVsZChzb3VyY2UsICdzb3VyY2VDYXRhbG9ndWUnKSxcbiAgICAgICAgICAgICdubyB0aXRsZSdcbiAgICAgICAgICApLFxuICAgICAgICB9LFxuICAgICAgICBvdXRwdXRcbiAgICAgIClcbiAgICB9LFxuICAgIGFsbEtleXdvcmRzOiAob3V0cHV0LCBzb3VyY2UpID0+ICh7XG4gICAgICAuLi5vdXRwdXQsXG4gICAgICBrZXl3b3JkczogbWFwS2V5d29yZHMoXG4gICAgICAgIHNlbGVjdEZpZWxkPFRoZXNhdXJ1c1tdPihzb3VyY2UsICdhbGxLZXl3b3JkcycpLFxuICAgICAgICB0aGlzLmdldExvY2FsaXplZEluZGV4S2V5XG4gICAgICApLFxuICAgIH0pLFxuICAgIGluc3BpcmVUaGVtZTogKG91dHB1dCwgc291cmNlKSA9PiAoe1xuICAgICAgLi4ub3V0cHV0LFxuICAgICAgdG9waWNzOiBbXG4gICAgICAgIC4uLihvdXRwdXQudG9waWNzIHx8IFtdKSxcbiAgICAgICAgLi4uZ2V0QXNBcnJheShzZWxlY3RGaWVsZChzb3VyY2UsICdpbnNwaXJlVGhlbWVfc3luJykpLFxuICAgICAgXSxcbiAgICB9KSxcbiAgICBNRF9Db25zdHJhaW50c1VzZUxpbWl0YXRpb25PYmplY3Q6IChvdXRwdXQsIHNvdXJjZSkgPT5cbiAgICAgIHRoaXMuY29uc3RyYWludEZpZWxkKFxuICAgICAgICAnb3RoZXInLFxuICAgICAgICBvdXRwdXQsXG4gICAgICAgIGdldEFzQXJyYXkoc2VsZWN0RmllbGQoc291cmNlLCAnTURfQ29uc3RyYWludHNVc2VMaW1pdGF0aW9uT2JqZWN0JykpXG4gICAgICApLFxuICAgIE1EX0xlZ2FsQ29uc3RyYWludHNVc2VMaW1pdGF0aW9uT2JqZWN0OiAob3V0cHV0LCBzb3VyY2UpID0+XG4gICAgICB0aGlzLmNvbnN0cmFpbnRGaWVsZChcbiAgICAgICAgJ2xlZ2FsJyxcbiAgICAgICAgb3V0cHV0LFxuICAgICAgICBnZXRBc0FycmF5KFxuICAgICAgICAgIHNlbGVjdEZpZWxkKHNvdXJjZSwgJ01EX0xlZ2FsQ29uc3RyYWludHNVc2VMaW1pdGF0aW9uT2JqZWN0JylcbiAgICAgICAgKVxuICAgICAgKSxcbiAgICBNRF9MZWdhbENvbnN0cmFpbnRzT3RoZXJDb25zdHJhaW50c09iamVjdDogKG91dHB1dCwgc291cmNlKSA9PlxuICAgICAgdGhpcy5jb25zdHJhaW50RmllbGQoXG4gICAgICAgICdsZWdhbCcsXG4gICAgICAgIG91dHB1dCxcbiAgICAgICAgZ2V0QXNBcnJheShcbiAgICAgICAgICBzZWxlY3RGaWVsZChzb3VyY2UsICdNRF9MZWdhbENvbnN0cmFpbnRzT3RoZXJDb25zdHJhaW50c09iamVjdCcpXG4gICAgICAgIClcbiAgICAgICksXG4gICAgTURfU2VjdXJpdHlDb25zdHJhaW50c1VzZUxpbWl0YXRpb25PYmplY3Q6IChvdXRwdXQsIHNvdXJjZSkgPT5cbiAgICAgIHRoaXMuY29uc3RyYWludEZpZWxkKFxuICAgICAgICAnc2VjdXJpdHknLFxuICAgICAgICBvdXRwdXQsXG4gICAgICAgIGdldEFzQXJyYXkoXG4gICAgICAgICAgc2VsZWN0RmllbGQoc291cmNlLCAnTURfU2VjdXJpdHlDb25zdHJhaW50c1VzZUxpbWl0YXRpb25PYmplY3QnKVxuICAgICAgICApXG4gICAgICApLFxuICAgIGxpY2Vuc2VPYmplY3Q6IChvdXRwdXQsIHNvdXJjZSkgPT5cbiAgICAgIHRoaXMuY29uc3RyYWludEZpZWxkKFxuICAgICAgICAnbGljZW5zZScsXG4gICAgICAgIG91dHB1dCxcbiAgICAgICAgZ2V0QXNBcnJheShzZWxlY3RGaWVsZChzb3VyY2UsICdsaWNlbnNlT2JqZWN0JykpXG4gICAgICApLFxuICAgIGxpbmVhZ2VPYmplY3Q6IChvdXRwdXQsIHNvdXJjZSkgPT4gKHtcbiAgICAgIC4uLm91dHB1dCxcbiAgICAgIGxpbmVhZ2U6IHNlbGVjdFRyYW5zbGF0ZWRGaWVsZChcbiAgICAgICAgc291cmNlLFxuICAgICAgICAnbGluZWFnZU9iamVjdCcsXG4gICAgICAgIHRoaXMuZ2V0TG9jYWxpemVkSW5kZXhLZXlcbiAgICAgICksXG4gICAgfSksXG4gICAgdXNlclNhdmVkQ291bnQ6IChvdXRwdXQsIHNvdXJjZSkgPT5cbiAgICAgIHRoaXMuYWRkRXh0cmEoXG4gICAgICAgIHtcbiAgICAgICAgICBmYXZvcml0ZUNvdW50OiBwYXJzZUludChzZWxlY3RGaWVsZChzb3VyY2UsICd1c2VyU2F2ZWRDb3VudCcpKSxcbiAgICAgICAgfSxcbiAgICAgICAgb3V0cHV0XG4gICAgICApLFxuICAgIGlzT3BlbkRhdGE6IChvdXRwdXQsIHNvdXJjZSkgPT5cbiAgICAgIHRoaXMuYWRkRXh0cmEoXG4gICAgICAgIHtcbiAgICAgICAgICBpc09wZW5EYXRhOiBzZWxlY3RGaWVsZChzb3VyY2UsICdpc09wZW5EYXRhJykgIT09ICdmYWxzZScsXG4gICAgICAgIH0sXG4gICAgICAgIG91dHB1dFxuICAgICAgKSxcbiAgICBmZWF0dXJlVHlwZXM6IChvdXRwdXQsIHNvdXJjZSkgPT5cbiAgICAgIHRoaXMuYWRkRXh0cmEoXG4gICAgICAgIHtcbiAgICAgICAgICBmZWF0dXJlVHlwZXM6IHNlbGVjdEZpZWxkKHNvdXJjZSwgJ2ZlYXR1cmVUeXBlcycpLFxuICAgICAgICB9LFxuICAgICAgICBvdXRwdXRcbiAgICAgICksXG4gICAgcmVsYXRlZDogKG91dHB1dCwgc291cmNlKSA9PiB7XG4gICAgICBjb25zdCBmY2F0U291cmNlID0gc2VsZWN0RmllbGQoXG4gICAgICAgIGdldEZpcnN0VmFsdWUoXG4gICAgICAgICAgc2VsZWN0RmllbGQoXG4gICAgICAgICAgICA8U291cmNlV2l0aFVua25vd25Qcm9wcz5zZWxlY3RGaWVsZChzb3VyY2UsICdyZWxhdGVkJyksXG4gICAgICAgICAgICAnZmNhdHMnXG4gICAgICAgICAgKVxuICAgICAgICApID8/IHt9LFxuICAgICAgICAnX3NvdXJjZSdcbiAgICAgIClcbiAgICAgIGNvbnN0IGZlYXR1cmVDYXRhbG9nSWRlbnRpZmllcjogc3RyaW5nID0gc2VsZWN0RmllbGQoXG4gICAgICAgIDxTb3VyY2VXaXRoVW5rbm93blByb3BzPmZjYXRTb3VyY2UsXG4gICAgICAgICd1dWlkJ1xuICAgICAgKVxuICAgICAgY29uc3Qgc291cmNlT2ZMaW5rcyA9IGdldEFzQXJyYXkoXG4gICAgICAgIHNlbGVjdEZpZWxkKFxuICAgICAgICAgIDxTb3VyY2VXaXRoVW5rbm93blByb3BzPnNlbGVjdEZpZWxkKHNvdXJjZSwgJ3JlbGF0ZWQnKSxcbiAgICAgICAgICAnaGFzc291cmNlcydcbiAgICAgICAgKVxuICAgICAgKVxuICAgICAgY29uc3Qgc291cmNlT2ZJZGVudGlmaWVyczogc3RyaW5nW10gPSBzb3VyY2VPZkxpbmtzXG4gICAgICAgIC5maWx0ZXIoKGxpbmspID0+IGxpbmtbJ29yaWdpbiddID09PSAnY2F0YWxvZycpXG4gICAgICAgIC5tYXAoKGxpbmspID0+IHtcbiAgICAgICAgICByZXR1cm4gc2VsZWN0RmllbGQoXG4gICAgICAgICAgICBzZWxlY3RGaWVsZCg8U291cmNlV2l0aFVua25vd25Qcm9wcz5saW5rLCAnX3NvdXJjZScpLFxuICAgICAgICAgICAgJ3V1aWQnXG4gICAgICAgICAgKVxuICAgICAgICB9KVxuICAgICAgY29uc3QgZXh0cmFWYWx1ZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IHN0cmluZ1tdPiA9IHt9XG4gICAgICBpZiAoZmVhdHVyZUNhdGFsb2dJZGVudGlmaWVyKSB7XG4gICAgICAgIGV4dHJhVmFsdWVzLmZlYXR1cmVDYXRhbG9nSWRlbnRpZmllciA9IGZlYXR1cmVDYXRhbG9nSWRlbnRpZmllclxuICAgICAgfVxuICAgICAgaWYgKHNvdXJjZU9mSWRlbnRpZmllcnMgJiYgc291cmNlT2ZJZGVudGlmaWVycy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGV4dHJhVmFsdWVzLnNvdXJjZU9mSWRlbnRpZmllcnMgPSBzb3VyY2VPZklkZW50aWZpZXJzXG4gICAgICB9XG4gICAgICByZXR1cm4gT2JqZWN0LmtleXMoZXh0cmFWYWx1ZXMpLmxlbmd0aCA+IDBcbiAgICAgICAgPyB0aGlzLmFkZEV4dHJhKGV4dHJhVmFsdWVzLCBvdXRwdXQpXG4gICAgICAgIDogb3V0cHV0XG4gICAgfSxcbiAgICByZWNvcmRMaW5rOiAob3V0cHV0LCBzb3VyY2UpID0+IHtcbiAgICAgIGNvbnN0IHJlY29yZExpbmtzID0gZ2V0QXNBcnJheShcbiAgICAgICAgc2VsZWN0RmllbGQ8U291cmNlV2l0aFVua25vd25Qcm9wc1tdPihzb3VyY2UsICdyZWNvcmRMaW5rJylcbiAgICAgIClcbiAgICAgIGNvbnN0IHNvdXJjZXNJZGVudGlmaWVyczogc3RyaW5nW10gPSByZWNvcmRMaW5rc1xuICAgICAgICAuZmlsdGVyKFxuICAgICAgICAgIChsaW5rKSA9PiBsaW5rWydvcmlnaW4nXSA9PT0gJ2NhdGFsb2cnICYmIGxpbmtbJ3R5cGUnXSA9PT0gJ3NvdXJjZXMnXG4gICAgICAgIClcbiAgICAgICAgLm1hcCgobGluaykgPT4gc2VsZWN0RmllbGQoPFNvdXJjZVdpdGhVbmtub3duUHJvcHM+bGluaywgJ3RvJykpXG5cbiAgICAgIHJldHVybiBzb3VyY2VzSWRlbnRpZmllcnMgJiYgc291cmNlc0lkZW50aWZpZXJzLmxlbmd0aCA+IDBcbiAgICAgICAgPyB0aGlzLmFkZEV4dHJhKFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBzb3VyY2VzSWRlbnRpZmllcnMsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgb3V0cHV0XG4gICAgICAgICAgKVxuICAgICAgICA6IG91dHB1dFxuICAgIH0sXG4gICAgaXNQdWJsaXNoZWRUb0FsbDogKG91dHB1dCwgc291cmNlKSA9PlxuICAgICAgdGhpcy5hZGRFeHRyYShcbiAgICAgICAge1xuICAgICAgICAgIGlzUHVibGlzaGVkVG9BbGw6IHNlbGVjdEZpZWxkKHNvdXJjZSwgJ2lzUHVibGlzaGVkVG9BbGwnKSxcbiAgICAgICAgfSxcbiAgICAgICAgb3V0cHV0XG4gICAgICApLFxuICAgIGlzSGFydmVzdGVkOiAob3V0cHV0LCBzb3VyY2UpID0+XG4gICAgICB0aGlzLmFkZEV4dHJhKFxuICAgICAgICB7XG4gICAgICAgICAgaXNIYXJ2ZXN0ZWQ6IHNlbGVjdEZpZWxkKHNvdXJjZSwgJ2lzSGFydmVzdGVkJykgIT09ICdmYWxzZScsXG4gICAgICAgIH0sXG4gICAgICAgIG91dHB1dFxuICAgICAgKSxcbiAgICBlZGl0OiAob3V0cHV0LCBzb3VyY2UpID0+XG4gICAgICB0aGlzLmFkZEV4dHJhKFxuICAgICAgICB7XG4gICAgICAgICAgZWRpdDogc2VsZWN0RmllbGQoc291cmNlLCAnZWRpdCcpLFxuICAgICAgICB9LFxuICAgICAgICBvdXRwdXRcbiAgICAgICksXG4gICAgdXNlcmluZm86IChvdXRwdXQsIHNvdXJjZSkgPT5cbiAgICAgIHRoaXMuYWRkRXh0cmEoXG4gICAgICAgIHtcbiAgICAgICAgICBvd25lckluZm86IHNlbGVjdEZpZWxkKHNvdXJjZSwgJ3VzZXJpbmZvJyksXG4gICAgICAgIH0sXG4gICAgICAgIG91dHB1dFxuICAgICAgKSxcbiAgICByZXNvdXJjZVR5cGU6IChvdXRwdXQsIHNvdXJjZSkgPT4ge1xuICAgICAgY29uc3QgcmVzb3VyY2VUeXBlID0gZ2V0Rmlyc3RWYWx1ZShzZWxlY3RGaWVsZChzb3VyY2UsICdyZXNvdXJjZVR5cGUnKSlcbiAgICAgIGNvbnN0IGtpbmQgPSBnZXRSZXNvdXJjZVR5cGUocmVzb3VyY2VUeXBlKVxuICAgICAgY29uc3QgcmV1c2VUeXBlID0gZ2V0UmV1c2VUeXBlKHJlc291cmNlVHlwZSlcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLm91dHB1dCxcbiAgICAgICAga2luZCxcbiAgICAgICAgLi4uKHJldXNlVHlwZSAmJiB7IHJldXNlVHlwZSB9KSxcbiAgICAgIH0gYXMgQ2F0YWxvZ1JlY29yZFxuICAgIH0sXG4gICAgZ2VvbTogKG91dHB1dCwgc291cmNlKSA9PiB7XG4gICAgICBjb25zdCBnZW9tcyA9IGdldEFzQXJyYXkoc2VsZWN0RmllbGQoc291cmNlLCAnZ2VvbScpKVxuICAgICAgY29uc3Qgc2hhcGVzID0gZ2V0QXNBcnJheShzZWxlY3RGaWVsZChzb3VyY2UsICdzaGFwZScpKVxuICAgICAgY29uc3QgZXh0ZW50RGVzY3JpcHRpb25zID0gZ2V0QXNBcnJheShcbiAgICAgICAgc2VsZWN0RmllbGQoc291cmNlLCAnZXh0ZW50RGVzY3JpcHRpb25PYmplY3QnKVxuICAgICAgKVxuICAgICAgY29uc3Qgc3BhdGlhbEV4dGVudHMgPSBnZXRBc0FycmF5KHNlbGVjdEZpZWxkKHNvdXJjZSwgJ3NwYXRpYWxFeHRlbnRzJykpXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5vdXRwdXQsXG4gICAgICAgIHNwYXRpYWxFeHRlbnRzOiBbXG4gICAgICAgICAgLi4uc3BhdGlhbEV4dGVudHMsXG4gICAgICAgICAgLi4uZ2VvbXMubWFwKChnZW9tLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZGVzY3JpcHRpb24gPSBzZWxlY3RUcmFuc2xhdGVkVmFsdWUoXG4gICAgICAgICAgICAgIGdldEFycmF5SXRlbShleHRlbnREZXNjcmlwdGlvbnMsIGluZGV4KSxcbiAgICAgICAgICAgICAgdGhpcy5nZXRMb2NhbGl6ZWRJbmRleEtleVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgY29uc3QgZ2VvbWV0cnkgPSBzaGFwZXNbaW5kZXhdID8/IGdlb21cbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIC4uLihkZXNjcmlwdGlvbiAhPT0gbnVsbCA/IHsgZGVzY3JpcHRpb24gfSA6IG51bGwpLFxuICAgICAgICAgICAgICBnZW9tZXRyeSxcbiAgICAgICAgICAgIH0gYXMgRGF0YXNldFNwYXRpYWxFeHRlbnRcbiAgICAgICAgICB9KSxcbiAgICAgICAgXSxcbiAgICAgIH1cbiAgICB9LFxuICAgIHJlc291cmNlVGVtcG9yYWxFeHRlbnREYXRlUmFuZ2U6IChvdXRwdXQsIHNvdXJjZSkgPT4ge1xuICAgICAgY29uc3QgcmFuZ2VzID0gZ2V0QXNBcnJheShcbiAgICAgICAgc2VsZWN0RmllbGQoc291cmNlLCAncmVzb3VyY2VUZW1wb3JhbEV4dGVudERhdGVSYW5nZScpXG4gICAgICApXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5vdXRwdXQsXG4gICAgICAgIHRlbXBvcmFsRXh0ZW50czogcmFuZ2VzLm1hcCgocmFuZ2UpID0+IHtcbiAgICAgICAgICBjb25zdCBzdGFydCA9IHNlbGVjdEZpZWxkKHJhbmdlLCAnZ3RlJylcbiAgICAgICAgICBjb25zdCBlbmQgPSBzZWxlY3RGaWVsZChyYW5nZSwgJ2x0ZScpXG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLihzdGFydCAhPT0gbnVsbCA/IHsgc3RhcnQ6IHRvRGF0ZShzdGFydCkgfSA6IG51bGwpLFxuICAgICAgICAgICAgLi4uKGVuZCAhPT0gbnVsbCA/IHsgZW5kOiB0b0RhdGUoZW5kKSB9IDogbnVsbCksXG4gICAgICAgICAgfVxuICAgICAgICB9KSxcbiAgICAgIH1cbiAgICB9LFxuICB9XG5cbiAgcHJpdmF0ZSBnZW5lcmljRmllbGQgPSAob3V0cHV0KSA9PiBvdXRwdXRcblxuICBwcml2YXRlIGNvbnN0cmFpbnRGaWVsZCA9IChcbiAgICB0eXBlOiAnbGljZW5zZScgfCAnbGVnYWwnIHwgJ3NlY3VyaXR5JyB8ICdvdGhlcicsXG4gICAgb3V0cHV0OiBQYXJ0aWFsPENhdGFsb2dSZWNvcmQ+LFxuICAgIGNvbnN0cmFpbnRBcnJheTogU291cmNlV2l0aFVua25vd25Qcm9wc1tdXG4gICkgPT4ge1xuICAgIGxldCBvdXRwdXRGaWVsZDogc3RyaW5nXG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlICdsaWNlbnNlJzpcbiAgICAgICAgb3V0cHV0RmllbGQgPSAnbGljZW5zZXMnXG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlICdsZWdhbCc6XG4gICAgICAgIG91dHB1dEZpZWxkID0gJ2xlZ2FsQ29uc3RyYWludHMnXG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlICdzZWN1cml0eSc6XG4gICAgICAgIG91dHB1dEZpZWxkID0gJ3NlY3VyaXR5Q29uc3RyYWludHMnXG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlICdvdGhlcic6XG4gICAgICAgIG91dHB1dEZpZWxkID0gJ290aGVyQ29uc3RyYWludHMnXG4gICAgICAgIGJyZWFrXG4gICAgfVxuICAgIGNvbnN0IG91dHB1dEFycmF5OiBDb25zdHJhaW50W10gPVxuICAgICAgb3V0cHV0RmllbGQgaW4gb3V0cHV0ID8gb3V0cHV0W291dHB1dEZpZWxkXSA6IFtdXG4gICAgb3V0cHV0QXJyYXkucHVzaChcbiAgICAgIC4uLmNvbnN0cmFpbnRBcnJheS5tYXAoKGl0ZW0pID0+IHtcbiAgICAgICAgY29uc3QgdGV4dCA9IHNlbGVjdFRyYW5zbGF0ZWRWYWx1ZShcbiAgICAgICAgICBpdGVtLFxuICAgICAgICAgIHRoaXMuZ2V0TG9jYWxpemVkSW5kZXhLZXlcbiAgICAgICAgKSBhcyBzdHJpbmdcbiAgICAgICAgY29uc3QgdXJsID0gZ2V0QXNVcmwoc2VsZWN0RmllbGQoaXRlbSwgJ2xpbmsnKSlcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0ZXh0LFxuICAgICAgICAgIC4uLih1cmwgPyB7IHVybCB9IDoge30pLFxuICAgICAgICB9XG4gICAgICB9KVxuICAgIClcbiAgICBjb25zdCByZXN1bHQgPSB7XG4gICAgICAuLi5vdXRwdXQsXG4gICAgICBbb3V0cHV0RmllbGRdOiBvdXRwdXRBcnJheSxcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdFxuICB9XG5cbiAgZ2V0TWFwcGluZ0ZuKGZpZWxkTmFtZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZpZWxkTmFtZSBpbiB0aGlzLmZpZWxkcyA/IHRoaXMuZmllbGRzW2ZpZWxkTmFtZV0gOiB0aGlzLmdlbmVyaWNGaWVsZFxuICB9XG5cbiAgZ2V0TGlua1R5cGUodXJsOiBzdHJpbmcsIHByb3RvY29sPzogc3RyaW5nKTogT25saW5lUmVzb3VyY2VUeXBlIHtcbiAgICBpZiAoIXByb3RvY29sKSB7XG4gICAgICByZXR1cm4gJ2xpbmsnXG4gICAgfVxuICAgIGlmIChcbiAgICAgICgvXkVTUkk6UkVTVC8udGVzdChwcm90b2NvbCkgJiYgL0ZlYXR1cmVTZXJ2ZXIvLnRlc3QodXJsKSkgfHxcbiAgICAgIC9eT0dDOldNUy8udGVzdChwcm90b2NvbCkgfHxcbiAgICAgIC9eT0dDOldGUy8udGVzdChwcm90b2NvbCkgfHxcbiAgICAgIC9eT0dDOldNVFMvLnRlc3QocHJvdG9jb2wpIHx8XG4gICAgICAvVE1TL2kudGVzdChwcm90b2NvbCkgfHxcbiAgICAgIC9vZ2NcXFcqYXBpXFxXKmZlYXR1cmVzL2kudGVzdChwcm90b2NvbCkgfHxcbiAgICAgICgvXldXVzpET1dOTE9BRC0vLnRlc3QocHJvdG9jb2wpICYmIC9kYXRhLmdlb3BmLmZyLy50ZXN0KHVybCkpIC8vIFRPIERPIDogY2hhbmdlIHdpdGggdGhlIGdvb2QgcHJvdG9jb2wgd2hlbiBkZWNpZGVkXG4gICAgKSB7XG4gICAgICByZXR1cm4gJ3NlcnZpY2UnXG4gICAgfVxuICAgIGlmICgvXldXVzpET1dOTE9BRC8udGVzdChwcm90b2NvbCkpIHtcbiAgICAgIHJldHVybiAnZG93bmxvYWQnXG4gICAgfVxuICAgIHJldHVybiAnbGluaydcbiAgfVxuXG4gIG1hcExpbmsgPSAoc291cmNlTGluazogU291cmNlV2l0aFVua25vd25Qcm9wcyk6IE9ubGluZVJlc291cmNlIHwgbnVsbCA9PiB7XG4gICAgY29uc3QgdXJsID0gZ2V0QXNVcmwoXG4gICAgICBzZWxlY3RGYWxsYmFjayhcbiAgICAgICAgc2VsZWN0VHJhbnNsYXRlZEZpZWxkPHN0cmluZz4oXG4gICAgICAgICAgc291cmNlTGluayxcbiAgICAgICAgICAndXJsT2JqZWN0JyxcbiAgICAgICAgICB0aGlzLmdldExvY2FsaXplZEluZGV4S2V5XG4gICAgICAgICksXG4gICAgICAgIHNlbGVjdEZpZWxkPHN0cmluZz4oc291cmNlTGluaywgJ3VybCcpXG4gICAgICApXG4gICAgKVxuICAgIGNvbnN0IG5hbWUgPSBzZWxlY3RGYWxsYmFjayhcbiAgICAgIHNlbGVjdFRyYW5zbGF0ZWRGaWVsZDxzdHJpbmc+KFxuICAgICAgICBzb3VyY2VMaW5rLFxuICAgICAgICAnbmFtZU9iamVjdCcsXG4gICAgICAgIHRoaXMuZ2V0TG9jYWxpemVkSW5kZXhLZXlcbiAgICAgICksXG4gICAgICBzZWxlY3RGaWVsZDxzdHJpbmc+KHNvdXJjZUxpbmssICduYW1lJylcbiAgICApXG4gICAgY29uc3QgZGVzY3JpcHRpb24gPSBzZWxlY3RGYWxsYmFjayhcbiAgICAgIHNlbGVjdFRyYW5zbGF0ZWRGaWVsZDxzdHJpbmc+KFxuICAgICAgICBzb3VyY2VMaW5rLFxuICAgICAgICAnZGVzY3JpcHRpb25PYmplY3QnLFxuICAgICAgICB0aGlzLmdldExvY2FsaXplZEluZGV4S2V5XG4gICAgICApLFxuICAgICAgc2VsZWN0RmllbGQ8c3RyaW5nPihzb3VyY2VMaW5rLCAnZGVzY3JpcHRpb24nKVxuICAgIClcbiAgICBjb25zdCBkZXNjcmlwdGlvbkxpbmsgPSBzZWxlY3RGaWVsZDxvYmplY3Q+KHNvdXJjZUxpbmssICdkZXNjcmlwdGlvbk9iamVjdCcpXG4gICAgY29uc3QgYWNjZXNzUmVzdHJpY3RlZCA9XG4gICAgICBkZXNjcmlwdGlvbkxpbmsgJiZcbiAgICAgICdsaW5rJyBpbiBkZXNjcmlwdGlvbkxpbmsgJiZcbiAgICAgIGRlc2NyaXB0aW9uTGluay5saW5rLnRvU3RyaW5nKCkuaW5jbHVkZXMoJyNNRF9SZXN0cmljdGlvbkNvZGVfcmVzdHJpY3RlZCcpXG4gICAgLy8gbm8gdXJsOiBmYWlsIGVhcmx5XG4gICAgaWYgKHVybCA9PT0gbnVsbCkge1xuICAgICAgLy8gVE9ETzogY29sbGVjdCBlcnJvcnMgYXQgdGhlIHJlY29yZCBsZXZlbD9cbiAgICAgIGNvbnNvbGUud2FybignQSBsaW5rIHdpdGhvdXQgdmFsaWQgVVJMIHdhcyBmb3VuZCcsIHNvdXJjZUxpbmspXG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cblxuICAgIGNvbnN0IHByb3RvY29sID0gc2VsZWN0RmllbGQ8c3RyaW5nPihzb3VyY2VMaW5rLCAncHJvdG9jb2wnKVxuICAgIGNvbnN0IHR5cGUgPSB0aGlzLmdldExpbmtUeXBlKHVybC50b1N0cmluZygpLCBwcm90b2NvbClcbiAgICBjb25zdCBhY2Nlc3NTZXJ2aWNlUHJvdG9jb2wgPSBtYXRjaFByb3RvY29sKHByb3RvY29sKVxuICAgIGNvbnN0IG1pbWVUeXBlTWF0Y2hlcyA9XG4gICAgICBwcm90b2NvbCAmJiBwcm90b2NvbC5tYXRjaCgvXldXVzpET1dOTE9BRDooLitcXC8uKykkLylcbiAgICBjb25zdCBtaW1lVHlwZSA9IG1pbWVUeXBlTWF0Y2hlcyAmJiBtaW1lVHlwZU1hdGNoZXNbMV1cblxuICAgIGNvbnN0IGRpc3RyaWJ1dGlvbiA9IHtcbiAgICAgIC4uLihuYW1lICYmIHsgbmFtZSB9KSxcbiAgICAgIC4uLihkZXNjcmlwdGlvbiAmJiB7IGRlc2NyaXB0aW9uIH0pLFxuICAgIH1cbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgIGNhc2UgJ3NlcnZpY2UnOlxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLmRpc3RyaWJ1dGlvbixcbiAgICAgICAgICB0eXBlLFxuICAgICAgICAgIHVybDogdXJsLFxuICAgICAgICAgIGFjY2Vzc1NlcnZpY2VQcm90b2NvbCxcbiAgICAgICAgICBhY2Nlc3NSZXN0cmljdGVkOiBhY2Nlc3NSZXN0cmljdGVkLFxuICAgICAgICB9XG4gICAgICBjYXNlICdsaW5rJzpcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5kaXN0cmlidXRpb24sXG4gICAgICAgICAgdHlwZSxcbiAgICAgICAgICB1cmw6IHVybCxcbiAgICAgICAgfVxuICAgICAgY2FzZSAnZG93bmxvYWQnOlxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLmRpc3RyaWJ1dGlvbixcbiAgICAgICAgICB0eXBlLFxuICAgICAgICAgIHVybDogdXJsLFxuICAgICAgICAgIC4uLihtaW1lVHlwZSAmJiB7IG1pbWVUeXBlIH0pLFxuICAgICAgICB9XG4gICAgICBjYXNlICdlbmRwb2ludCc6XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uZGlzdHJpYnV0aW9uLFxuICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgdXJsOiB1cmwsXG4gICAgICAgICAgYWNjZXNzU2VydmljZVByb3RvY29sOiBhY2Nlc3NTZXJ2aWNlUHJvdG9jb2wsXG4gICAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFkZEV4dHJhID0gKHZhbHVlOiBvYmplY3QsIG91dHB1dDogUGFydGlhbDxDYXRhbG9nUmVjb3JkPikgPT4gKHtcbiAgICAuLi5vdXRwdXQsXG4gICAgZXh0cmFzOiB7IC4uLihvdXRwdXQuZXh0cmFzIHx8IHt9KSwgLi4udmFsdWUgfSxcbiAgfSlcbn1cbiJdfQ==
409
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ240LmZpZWxkLm1hcHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYXBpL21ldGFkYXRhLWNvbnZlcnRlci9zcmMvbGliL2duNC9nbjQuZmllbGQubWFwcGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxZQUFZLEVBQ1osVUFBVSxFQUNWLFFBQVEsRUFDUixhQUFhLEVBQ2IsVUFBVSxFQUNWLFdBQVcsRUFDWCxjQUFjLEVBQ2Qsb0JBQW9CLEVBQ3BCLFdBQVcsRUFDWCxxQkFBcUIsRUFDckIscUJBQXFCLEVBRXJCLE1BQU0sR0FDUCxNQUFNLHFCQUFxQixDQUFBO0FBQzVCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFBO0FBQzNELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDMUMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0saUNBQWlDLENBQUE7QUFDekUsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLE1BQU0sMkNBQTJDLENBQUE7QUFRL0YsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLCtCQUErQixDQUFBO0FBRTdELE9BQU8sRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUE7QUFDeEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDdEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQTs7OztBQVl2RSxNQUFNLE9BQU8sY0FBYztJQUN6QixZQUNVLGtCQUFzQyxFQUN0QyxnQkFBa0M7UUFEbEMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUN0QyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBT2xDLFdBQU0sR0FBb0M7WUFDbEQsRUFBRSxFQUFFLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxFQUFFLENBQ3JCLElB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QUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksZUFBZSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUMxRCxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUN6QixVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUN6QixXQUFXLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUMxQixNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUNyQix1QkFBdUIsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1lBQ3RDLGNBQWMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1lBQzdCLGVBQWUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1lBQzlCLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxxREFBcUQ7VUFDcEgsQ0FBQztZQUNELE9BQU8sU0FBUyxDQUFBO1FBQ2xCLENBQUM7UUFDRCxJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUNuQyxPQUFPLFVBQVUsQ0FBQTtRQUNuQixDQUFDO1FBQ0QsT0FBTyxNQUFNLENBQUE7SUFDZixDQUFDOytHQTVmVSxjQUFjO21IQUFkLGNBQWMsY0FGYixNQUFNOzs0RkFFUCxjQUFjO2tCQUgxQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGdldEFycmF5SXRlbSxcbiAgZ2V0QXNBcnJheSxcbiAgZ2V0QXNVcmwsXG4gIGdldEZpcnN0VmFsdWUsXG4gIG1hcENvbnRhY3QsXG4gIG1hcEtleXdvcmRzLFxuICBzZWxlY3RGYWxsYmFjayxcbiAgc2VsZWN0RmFsbGJhY2tGaWVsZHMsXG4gIHNlbGVjdEZpZWxkLFxuICBzZWxlY3RUcmFuc2xhdGVkRmllbGQsXG4gIHNlbGVjdFRyYW5zbGF0ZWRWYWx1ZSxcbiAgU291cmNlV2l0aFVua25vd25Qcm9wcyxcbiAgdG9EYXRlLFxufSBmcm9tICcuL2F0b21pYy1vcGVyYXRpb25zJ1xuaW1wb3J0IHsgTWV0YWRhdGFVcmxTZXJ2aWNlIH0gZnJvbSAnLi9tZXRhZGF0YS11cmwuc2VydmljZSdcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgZ2V0U3RhdHVzRnJvbVN0YXR1c0NvZGUgfSBmcm9tICcuLi9pc28xOTEzOS91dGlscy9zdGF0dXMubWFwcGVyJ1xuaW1wb3J0IHsgZ2V0VXBkYXRlRnJlcXVlbmN5RnJvbUZyZXF1ZW5jeUNvZGUgfSBmcm9tICcuLi9pc28xOTEzOS91dGlscy91cGRhdGUtZnJlcXVlbmN5Lm1hcHBlcidcbmltcG9ydCB7XG4gIENhdGFsb2dSZWNvcmQsXG4gIENvbnN0cmFpbnQsXG4gIERhdGFzZXRTcGF0aWFsRXh0ZW50LFxuICBPbmxpbmVSZXNvdXJjZSxcbiAgT25saW5lUmVzb3VyY2VUeXBlLFxufSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9kb21haW4vc3JjL2xpYi9tb2RlbC9yZWNvcmQnXG5pbXBvcnQgeyBtYXRjaFByb3RvY29sIH0gZnJvbSAnLi4vY29tbW9uL2Rpc3RyaWJ1dGlvbi5tYXBwZXInXG5pbXBvcnQgeyBUaGVzYXVydXMgfSBmcm9tICcuL3R5cGVzJ1xuaW1wb3J0IHsgZ2V0UmVzb3VyY2VUeXBlLCBnZXRSZXVzZVR5cGUgfSBmcm9tICcuLi9jb21tb24vcmVzb3VyY2UtdHlwZXMnXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSdcbmltcG9ydCB7IHRvTGFuZzIsIHRvTGFuZzMgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3V0aWwvaTE4bi9zcmMnXG5cbnR5cGUgRVNSZXNwb25zZVNvdXJjZSA9IFNvdXJjZVdpdGhVbmtub3duUHJvcHNcblxudHlwZSBFc0ZpZWxkTWFwcGVyRm4gPSAoXG4gIG91dHB1dDogUGFydGlhbDxDYXRhbG9nUmVjb3JkPixcbiAgc291cmNlOiBFU1Jlc3BvbnNlU291cmNlXG4pID0+IFBhcnRpYWw8Q2F0YWxvZ1JlY29yZD5cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEduNEZpZWxkTWFwcGVyIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBtZXRhZGF0YVVybFNlcnZpY2U6IE1ldGFkYXRhVXJsU2VydmljZSxcbiAgICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2VcbiAgKSB7fVxuXG4gIHByaXZhdGUgZ2V0IGdldExvY2FsaXplZEluZGV4S2V5KCkge1xuICAgIHJldHVybiBgbGFuZyR7dG9MYW5nMyh0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuY3VycmVudExhbmcpfWBcbiAgfVxuXG4gIHByb3RlY3RlZCBmaWVsZHM6IFJlY29yZDxzdHJpbmcsIEVzRmllbGRNYXBwZXJGbj4gPSB7XG4gICAgaWQ6IChvdXRwdXQsIHNvdXJjZSkgPT5cbiAgICAgIHRoaXMuYWRkRXh0cmEoeyBpZDogc2VsZWN0RmllbGQoc291cmNlLCAnaWQnKSB9LCBvdXRwdXQpLFxuICAgIHV1aWQ6IChvdXRwdXQsIHNvdXJjZSkgPT4ge1xuICAgICAgY29uc3QgdXVpZCA9IHNlbGVjdEZpZWxkPHN0cmluZz4oc291cmNlLCAndXVpZCcpXG4gICAgICBjb25zdCBsYW5kaW5nUGFnZSA9IGdldEFzVXJsKHRoaXMubWV0YWRhdGFVcmxTZXJ2aWNlLmdldFVybCh1dWlkKSlcbiAgICAgIHJldHVybiB7IC4uLm91dHB1dCwgdW5pcXVlSWRlbnRpZmllcjogdXVpZCwgbGFuZGluZ1BhZ2UgfVxuICAgIH0sXG4gICAgcXVhbGl0eVNjb3JlOiAob3V0cHV0LCBzb3VyY2UpID0+XG4gICAgICB0aGlzLmFkZEV4dHJhKFxuICAgICAgICB7IHF1YWxpdHlTY29yZTogc2VsZWN0RmllbGQoc291cmNlLCAncXVhbGl0eVNjb3JlJykgfSxcbiAgICAgICAgb3V0cHV0XG4gICAgICApLFxuICAgIHJlc291cmNlVGl0bGVPYmplY3Q6IChvdXRwdXQsIHNvdXJjZSkgPT4gKHtcbiAgICAgIC4uLm91dHB1dCxcbiAgICAgIHRpdGxlOiBzZWxlY3RGYWxsYmFjayhcbiAgICAgICAgc2VsZWN0VHJhbnNsYXRlZEZpZWxkKFxuICAgICAgICAgIHNvdXJjZSxcbiAgICAgICAgICAncmVzb3VyY2VUaXRsZU9iamVjdCcsXG4gICAgICAgICAgdGhpcy5nZXRMb2NhbGl6ZWRJbmRleEtleVxuICAgICAgICApLFxuICAgICAgICAnbm8gdGl0bGUnXG4gICAgICApLFxuICAgIH0pLFxuICAgIHJlc291cmNlQWJzdHJhY3RPYmplY3Q6IChvdXRwdXQsIHNvdXJjZSkgPT4gKHtcbiAgICAgIC4uLm91dHB1dCxcbiAgICAgIGFic3RyYWN0OiBzZWxlY3RGYWxsYmFjayhcbiAgICAgICAgc2VsZWN0VHJhbnNsYXRlZEZpZWxkKFxuICAgICAgICAgIHNvdXJjZSxcbiAgICAgICAgICAncmVzb3VyY2VBYnN0cmFjdE9iamVjdCcsXG4gICAgICAgICAgdGhpcy5nZXRMb2NhbGl6ZWRJbmRleEtleVxuICAgICAgICApLFxuICAgICAgICAnbm8gdGl0bGUnXG4gICAgICApLFxuICAgIH0pLFxuICAgIG92ZXJ2aWV3OiAob3V0cHV0LCBzb3VyY2UpID0+IHtcbiAgICAgIGNvbnN0IGZpcnN0T3ZlcnZpZXcgPSBnZXRGaXJzdFZhbHVlKHNlbGVjdEZpZWxkKHNvdXJjZSwgJ292ZXJ2aWV3JykpXG4gICAgICBjb25zdCBkZXNjcmlwdGlvbiA9IHNlbGVjdFRyYW5zbGF0ZWRWYWx1ZTxzdHJpbmc+KFxuICAgICAgICBzZWxlY3RGaWVsZChmaXJzdE92ZXJ2aWV3LCAndGV4dCcpLFxuICAgICAgICB0aGlzLmdldExvY2FsaXplZEluZGV4S2V5XG4gICAgICApXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5vdXRwdXQsXG4gICAgICAgIG92ZXJ2aWV3czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHVybDogZ2V0QXNVcmwoc2VsZWN0RmFsbGJhY2tGaWVsZHMoZmlyc3RPdmVydmlldywgJ3VybCcsICdkYXRhJykpLFxuICAgICAgICAgICAgLi4uKGRlc2NyaXB0aW9uID8geyBkZXNjcmlwdGlvbiB9IDoge30pLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9XG4gICAgfSxcbiAgICBjbF90b3BpYzogKG91dHB1dCwgc291cmNlKSA9PiAoe1xuICAgICAgLi4ub3V0cHV0LFxuICAgICAgdG9waWNzOiBbXG4gICAgICAgIC4uLihvdXRwdXQudG9waWNzIHx8IFtdKSxcbiAgICAgICAgLi4uZ2V0QXNBcnJheShcbiAgICAgICAgICBzZWxlY3RGaWVsZDxTb3VyY2VXaXRoVW5rbm93blByb3BzW10+KHNvdXJjZSwgJ2NsX3RvcGljJylcbiAgICAgICAgKS5tYXAoKHRvcGljKSA9PlxuICAgICAgICAgIHNlbGVjdFRyYW5zbGF0ZWRWYWx1ZTxzdHJpbmc+KHRvcGljLCB0aGlzLmdldExvY2FsaXplZEluZGV4S2V5KVxuICAgICAgICApLFxuICAgICAgXSxcbiAgICB9KSxcbiAgICBjbF9zdGF0dXM6IChvdXRwdXQsIHNvdXJjZSkgPT4gKHtcbiAgICAgIC4uLm91dHB1dCxcbiAgICAgIHN0YXR1czogZ2V0U3RhdHVzRnJvbVN0YXR1c0NvZGUoXG4gICAgICAgIHNlbGVjdEZpZWxkKGdldEZpcnN0VmFsdWUoc2VsZWN0RmllbGQoc291cmNlLCAnY2xfc3RhdHVzJykpLCAna2V5JylcbiAgICAgICksXG4gICAgfSksXG4gICAgY2xfbWFpbnRlbmFuY2VBbmRVcGRhdGVGcmVxdWVuY3k6IChvdXRwdXQsIHNvdXJjZSkgPT4gKHtcbiAgICAgIC4uLm91dHB1dCxcbiAgICAgIHVwZGF0ZUZyZXF1ZW5jeTogZ2V0VXBkYXRlRnJlcXVlbmN5RnJvbUZyZXF1ZW5jeUNvZGUoXG4gICAgICAgIHNlbGVjdEZpZWxkKFxuICAgICAgICAgIGdldEZpcnN0VmFsdWUoXG4gICAgICAgICAgICBzZWxlY3RGaWVsZChzb3VyY2UsICdjbF9tYWludGVuYW5jZUFuZFVwZGF0ZUZyZXF1ZW5jeScpXG4gICAgICAgICAgKSxcbiAgICAgICAgICAna2V5J1xuICAgICAgICApXG4gICAgICApLFxuICAgIH0pLFxuICAgIGNyZWF0aW9uRGF0ZUZvclJlc291cmNlOiAob3V0cHV0LCBzb3VyY2UpID0+ICh7XG4gICAgICAuLi5vdXRwdXQsXG4gICAgICByZXNvdXJjZUNyZWF0ZWQ6IHRvRGF0ZShcbiAgICAgICAgZ2V0Rmlyc3RWYWx1ZShzZWxlY3RGaWVsZDxzdHJpbmc+KHNvdXJjZSwgJ2NyZWF0aW9uRGF0ZUZvclJlc291cmNlJykpXG4gICAgICApLFxuICAgIH0pLFxuICAgIHJldmlzaW9uRGF0ZUZvclJlc291cmNlOiAob3V0cHV0LCBzb3VyY2UpID0+ICh7XG4gICAgICAuLi5vdXRwdXQsXG4gICAgICByZXNvdXJjZVVwZGF0ZWQ6IHRvRGF0ZShcbiAgICAgICAgZ2V0Rmlyc3RWYWx1ZShzZWxlY3RGaWVsZDxzdHJpbmc+KHNvdXJjZSwgJ3JldmlzaW9uRGF0ZUZvclJlc291cmNlJykpXG4gICAgICApLFxuICAgIH0pLFxuICAgIHB1YmxpY2F0aW9uRGF0ZUZvclJlc291cmNlOiAob3V0cHV0LCBzb3VyY2UpID0+ICh7XG4gICAgICAuLi5vdXRwdXQsXG4gICAgICByZXNvdXJjZVB1Ymxpc2hlZDogdG9EYXRlKFxuICAgICAgICBzZWxlY3RGaWVsZDxzdHJpbmc+KHNvdXJjZSwgJ3B1YmxpY2F0aW9uRGF0ZUZvclJlc291cmNlJylcbiAgICAgICksXG4gICAgfSksXG4gICAgY3JlYXRlRGF0ZTogKG91dHB1dCwgc291cmNlKSA9PiAoe1xuICAgICAgLi4ub3V0cHV0LFxuICAgICAgcmVjb3JkQ3JlYXRlZDogdG9EYXRlKHNlbGVjdEZpZWxkPHN0cmluZz4oc291cmNlLCAnY3JlYXRlRGF0ZScpKSxcbiAgICB9KSxcbiAgICBjaGFuZ2VEYXRlOiAob3V0cHV0LCBzb3VyY2UpID0+ICh7XG4gICAgICAuLi5vdXRwdXQsXG4gICAgICByZWNvcmRVcGRhdGVkOiB0b0RhdGUoc2VsZWN0RmllbGQ8c3RyaW5nPihzb3VyY2UsICdjaGFuZ2VEYXRlJykpLFxuICAgIH0pLFxuICAgIHB1YmxpY2F0aW9uRGF0ZTogKG91dHB1dCwgc291cmNlKSA9PiAoe1xuICAgICAgLi4ub3V0cHV0LFxuICAgICAgcmVjb3JkUHVibGlzaGVkOiB0b0RhdGUoc2VsZWN0RmllbGQ8c3RyaW5nPihzb3VyY2UsICdwdWJsaWNhdGlvbkRhdGUnKSksXG4gICAgfSksXG4gICAgcmVzb3VyY2VMYW5ndWFnZTogKG91dHB1dCwgc291cmNlKSA9PiB7XG4gICAgICBjb25zdCBsYW5nTGlzdCA9IGdldEFzQXJyYXkoXG4gICAgICAgIHNlbGVjdEZpZWxkPHN0cmluZz4oc291cmNlLCAncmVzb3VyY2VMYW5ndWFnZScpXG4gICAgICApXG4gICAgICBjb25zdCBsYW5ndWFnZXMgPSBsYW5nTGlzdC5tYXAodG9MYW5nMilcbiAgICAgIGNvbnN0IGRlZmF1bHRMYW5ndWFnZSA9IG91dHB1dC5kZWZhdWx0TGFuZ3VhZ2UgPz8gbGFuZ3VhZ2VzWzBdID8/IG51bGwgLy8gc2V0IHRoZSBmaXJzdCBsYW5ndWFnZSBhcyBtYWluIG9uZSBhcyBmYWxsYmFja1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5vdXRwdXQsXG4gICAgICAgIGRlZmF1bHRMYW5ndWFnZSxcbiAgICAgIH1cbiAgICB9LFxuICAgIG90aGVyTGFuZ3VhZ2U6IChvdXRwdXQsIHNvdXJjZSkgPT4ge1xuICAgICAgY29uc3QgbGFuZ0xpc3QgPSBnZXRBc0FycmF5KHNlbGVjdEZpZWxkPHN0cmluZz4oc291cmNlLCAnb3RoZXJMYW5ndWFnZScpKVxuICAgICAgY29uc3QgbGFuZ3VhZ2VzID0gbGFuZ0xpc3QubWFwKHRvTGFuZzIpXG4gICAgICBjb25zdCBkZWZhdWx0TGFuZ3VhZ2UgPSBvdXRwdXQuZGVmYXVsdExhbmd1YWdlID8/IGxhbmd1YWdlc1swXSA/PyBudWxsXG4gICAgICBjb25zdCBvdGhlckxhbmd1YWdlcyA9IGxhbmd1YWdlcy5maWx0ZXIoXG4gICAgICAgIChsYW5nKSA9PiBsYW5nICE9PSBkZWZhdWx0TGFuZ3VhZ2VcbiAgICAgIClcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ub3V0cHV0LFxuICAgICAgICBvdGhlckxhbmd1YWdlcyxcbiAgICAgIH1cbiAgICB9LFxuICAgIG1haW5MYW5ndWFnZTogKG91dHB1dCwgc291cmNlKSA9PiB7XG4gICAgICBjb25zdCBsYW5ndWFnZSA9IHNlbGVjdEZpZWxkPHN0cmluZz4oc291cmNlLCAnbWFpbkxhbmd1YWdlJylcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLm91dHB1dCxcbiAgICAgICAgZGVmYXVsdExhbmd1YWdlOiBsYW5ndWFnZSA/IHRvTGFuZzIobGFuZ3VhZ2UpIDogbnVsbCxcbiAgICAgIH1cbiAgICB9LFxuICAgIGxpbms6IChvdXRwdXQsIHNvdXJjZSkgPT4ge1xuICAgICAgY29uc3QgcmF3TGlua3MgPSBnZXRBc0FycmF5KFxuICAgICAgICBzZWxlY3RGaWVsZDxTb3VyY2VXaXRoVW5rbm93blByb3BzW10+KHNvdXJjZSwgJ2xpbmsnKVxuICAgICAgKVxuICAgICAgY29uc3Qgb25saW5lUmVzb3VyY2VzID0gcmF3TGlua3NcbiAgICAgICAgLm1hcCgobGluaykgPT4gdGhpcy5tYXBMaW5rKGxpbmspKVxuICAgICAgICAuZmlsdGVyKCh2KSA9PiB2ICE9PSBudWxsKVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ub3V0cHV0LFxuICAgICAgICBvbmxpbmVSZXNvdXJjZXMsXG4gICAgICB9IGFzIENhdGFsb2dSZWNvcmRcbiAgICB9LFxuICAgIGNvbnRhY3Q6IChvdXRwdXQsIHNvdXJjZSkgPT4gKHtcbiAgICAgIC4uLm91dHB1dCxcbiAgICAgIGNvbnRhY3RzOiBbXG4gICAgICAgIG1hcENvbnRhY3QoXG4gICAgICAgICAgZ2V0Rmlyc3RWYWx1ZShzZWxlY3RGaWVsZChzb3VyY2UsICdjb250YWN0JykpLFxuICAgICAgICAgIHRoaXMuZ2V0TG9jYWxpemVkSW5kZXhLZXlcbiAgICAgICAgKSxcbiAgICAgIF0sXG4gICAgfSksXG4gICAgY29udGFjdEZvclJlc291cmNlOiAob3V0cHV0LCBzb3VyY2UpID0+ICh7XG4gICAgICAuLi5vdXRwdXQsXG4gICAgICBjb250YWN0c0ZvclJlc291cmNlOiBbXG4gICAgICAgIC4uLignY29udGFjdHNGb3JSZXNvdXJjZScgaW4gb3V0cHV0ICYmXG4gICAgICAgIEFycmF5LmlzQXJyYXkob3V0cHV0LmNvbnRhY3RzRm9yUmVzb3VyY2UpXG4gICAgICAgICAgPyBvdXRwdXQuY29udGFjdHNGb3JSZXNvdXJjZVxuICAgICAgICAgIDogW10pLFxuICAgICAgICAuLi5nZXRBc0FycmF5KHNlbGVjdEZpZWxkKHNvdXJjZSwgJ2NvbnRhY3RGb3JSZXNvdXJjZScpKS5tYXAoXG4gICAgICAgICAgKGNvbnRhY3QpID0+IG1hcENvbnRhY3QoY29udGFjdCwgdGhpcy5nZXRMb2NhbGl6ZWRJbmRleEtleSlcbiAgICAgICAgKSxcbiAgICAgIF0sXG4gICAgfSksXG4gICAgc291cmNlQ2F0YWxvZ3VlOiAob3V0cHV0LCBzb3VyY2UpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmFkZEV4dHJhKFxuICAgICAgICB7XG4gICAgICAgICAgY2F0YWxvZ1V1aWQ6IHNlbGVjdEZhbGxiYWNrKFxuICAgICAgICAgICAgc2VsZWN0RmllbGQoc291cmNlLCAnc291cmNlQ2F0YWxvZ3VlJyksXG4gICAgICAgICAgICAnbm8gdGl0bGUnXG4gICAgICAgICAgKSxcbiAgICAgICAgfSxcbiAgICAgICAgb3V0cHV0XG4gICAgICApXG4gICAgfSxcbiAgICBhbGxLZXl3b3JkczogKG91dHB1dCwgc291cmNlKSA9PiAoe1xuICAgICAgLi4ub3V0cHV0LFxuICAgICAga2V5d29yZHM6IG1hcEtleXdvcmRzKFxuICAgICAgICBzZWxlY3RGaWVsZDxUaGVzYXVydXNbXT4oc291cmNlLCAnYWxsS2V5d29yZHMnKSxcbiAgICAgICAgdGhpcy5nZXRMb2NhbGl6ZWRJbmRleEtleVxuICAgICAgKSxcbiAgICB9KSxcbiAgICBpbnNwaXJlVGhlbWU6IChvdXRwdXQsIHNvdXJjZSkgPT4gKHtcbiAgICAgIC4uLm91dHB1dCxcbiAgICAgIHRvcGljczogW1xuICAgICAgICAuLi4ob3V0cHV0LnRvcGljcyB8fCBbXSksXG4gICAgICAgIC4uLmdldEFzQXJyYXkoc2VsZWN0RmllbGQoc291cmNlLCAnaW5zcGlyZVRoZW1lX3N5bicpKSxcbiAgICAgIF0sXG4gICAgfSksXG4gICAgTURfQ29uc3RyYWludHNVc2VMaW1pdGF0aW9uT2JqZWN0OiAob3V0cHV0LCBzb3VyY2UpID0+XG4gICAgICB0aGlzLmNvbnN0cmFpbnRGaWVsZChcbiAgICAgICAgJ290aGVyJyxcbiAgICAgICAgb3V0cHV0LFxuICAgICAgICBnZXRBc0FycmF5KHNlbGVjdEZpZWxkKHNvdXJjZSwgJ01EX0NvbnN0cmFpbnRzVXNlTGltaXRhdGlvbk9iamVjdCcpKVxuICAgICAgKSxcbiAgICBNRF9MZWdhbENvbnN0cmFpbnRzVXNlTGltaXRhdGlvbk9iamVjdDogKG91dHB1dCwgc291cmNlKSA9PlxuICAgICAgdGhpcy5jb25zdHJhaW50RmllbGQoXG4gICAgICAgICdsZWdhbCcsXG4gICAgICAgIG91dHB1dCxcbiAgICAgICAgZ2V0QXNBcnJheShcbiAgICAgICAgICBzZWxlY3RGaWVsZChzb3VyY2UsICdNRF9MZWdhbENvbnN0cmFpbnRzVXNlTGltaXRhdGlvbk9iamVjdCcpXG4gICAgICAgIClcbiAgICAgICksXG4gICAgTURfTGVnYWxDb25zdHJhaW50c090aGVyQ29uc3RyYWludHNPYmplY3Q6IChvdXRwdXQsIHNvdXJjZSkgPT5cbiAgICAgIHRoaXMuY29uc3RyYWludEZpZWxkKFxuICAgICAgICAnbGVnYWwnLFxuICAgICAgICBvdXRwdXQsXG4gICAgICAgIGdldEFzQXJyYXkoXG4gICAgICAgICAgc2VsZWN0RmllbGQoc291cmNlLCAnTURfTGVnYWxDb25zdHJhaW50c090aGVyQ29uc3RyYWludHNPYmplY3QnKVxuICAgICAgICApXG4gICAgICApLFxuICAgIE1EX1NlY3VyaXR5Q29uc3RyYWludHNVc2VMaW1pdGF0aW9uT2JqZWN0OiAob3V0cHV0LCBzb3VyY2UpID0+XG4gICAgICB0aGlzLmNvbnN0cmFpbnRGaWVsZChcbiAgICAgICAgJ3NlY3VyaXR5JyxcbiAgICAgICAgb3V0cHV0LFxuICAgICAgICBnZXRBc0FycmF5KFxuICAgICAgICAgIHNlbGVjdEZpZWxkKHNvdXJjZSwgJ01EX1NlY3VyaXR5Q29uc3RyYWludHNVc2VMaW1pdGF0aW9uT2JqZWN0JylcbiAgICAgICAgKVxuICAgICAgKSxcbiAgICBsaWNlbnNlT2JqZWN0OiAob3V0cHV0LCBzb3VyY2UpID0+XG4gICAgICB0aGlzLmNvbnN0cmFpbnRGaWVsZChcbiAgICAgICAgJ2xpY2Vuc2UnLFxuICAgICAgICBvdXRwdXQsXG4gICAgICAgIGdldEFzQXJyYXkoc2VsZWN0RmllbGQoc291cmNlLCAnbGljZW5zZU9iamVjdCcpKVxuICAgICAgKSxcbiAgICBsaW5lYWdlT2JqZWN0OiAob3V0cHV0LCBzb3VyY2UpID0+ICh7XG4gICAgICAuLi5vdXRwdXQsXG4gICAgICBsaW5lYWdlOiBzZWxlY3RUcmFuc2xhdGVkRmllbGQoXG4gICAgICAgIHNvdXJjZSxcbiAgICAgICAgJ2xpbmVhZ2VPYmplY3QnLFxuICAgICAgICB0aGlzLmdldExvY2FsaXplZEluZGV4S2V5XG4gICAgICApLFxuICAgIH0pLFxuICAgIHVzZXJTYXZlZENvdW50OiAob3V0cHV0LCBzb3VyY2UpID0+XG4gICAgICB0aGlzLmFkZEV4dHJhKFxuICAgICAgICB7XG4gICAgICAgICAgZmF2b3JpdGVDb3VudDogcGFyc2VJbnQoc2VsZWN0RmllbGQoc291cmNlLCAndXNlclNhdmVkQ291bnQnKSksXG4gICAgICAgIH0sXG4gICAgICAgIG91dHB1dFxuICAgICAgKSxcbiAgICBpc09wZW5EYXRhOiAob3V0cHV0LCBzb3VyY2UpID0+XG4gICAgICB0aGlzLmFkZEV4dHJhKFxuICAgICAgICB7XG4gICAgICAgICAgaXNPcGVuRGF0YTogc2VsZWN0RmllbGQoc291cmNlLCAnaXNPcGVuRGF0YScpICE9PSAnZmFsc2UnLFxuICAgICAgICB9LFxuICAgICAgICBvdXRwdXRcbiAgICAgICksXG4gICAgZmVhdHVyZVR5cGVzOiAob3V0cHV0LCBzb3VyY2UpID0+XG4gICAgICB0aGlzLmFkZEV4dHJhKFxuICAgICAgICB7XG4gICAgICAgICAgZmVhdHVyZVR5cGVzOiBzZWxlY3RGaWVsZChzb3VyY2UsICdmZWF0dXJlVHlwZXMnKSxcbiAgICAgICAgfSxcbiAgICAgICAgb3V0cHV0XG4gICAgICApLFxuICAgIHJlbGF0ZWQ6IChvdXRwdXQsIHNvdXJjZSkgPT4ge1xuICAgICAgY29uc3QgZmNhdFNvdXJjZSA9IHNlbGVjdEZpZWxkKFxuICAgICAgICBnZXRGaXJzdFZhbHVlKFxuICAgICAgICAgIHNlbGVjdEZpZWxkKFxuICAgICAgICAgICAgPFNvdXJjZVdpdGhVbmtub3duUHJvcHM+c2VsZWN0RmllbGQoc291cmNlLCAncmVsYXRlZCcpLFxuICAgICAgICAgICAgJ2ZjYXRzJ1xuICAgICAgICAgIClcbiAgICAgICAgKSA/PyB7fSxcbiAgICAgICAgJ19zb3VyY2UnXG4gICAgICApXG4gICAgICBjb25zdCBmZWF0dXJlQ2F0YWxvZ0lkZW50aWZpZXI6IHN0cmluZyA9IHNlbGVjdEZpZWxkKFxuICAgICAgICA8U291cmNlV2l0aFVua25vd25Qcm9wcz5mY2F0U291cmNlLFxuICAgICAgICAndXVpZCdcbiAgICAgIClcbiAgICAgIGNvbnN0IHNvdXJjZU9mTGlua3MgPSBnZXRBc0FycmF5KFxuICAgICAgICBzZWxlY3RGaWVsZChcbiAgICAgICAgICA8U291cmNlV2l0aFVua25vd25Qcm9wcz5zZWxlY3RGaWVsZChzb3VyY2UsICdyZWxhdGVkJyksXG4gICAgICAgICAgJ2hhc3NvdXJjZXMnXG4gICAgICAgIClcbiAgICAgIClcbiAgICAgIGNvbnN0IHNvdXJjZU9mSWRlbnRpZmllcnM6IHN0cmluZ1tdID0gc291cmNlT2ZMaW5rc1xuICAgICAgICAuZmlsdGVyKChsaW5rKSA9PiBsaW5rWydvcmlnaW4nXSA9PT0gJ2NhdGFsb2cnKVxuICAgICAgICAubWFwKChsaW5rKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHNlbGVjdEZpZWxkKFxuICAgICAgICAgICAgc2VsZWN0RmllbGQoPFNvdXJjZVdpdGhVbmtub3duUHJvcHM+bGluaywgJ19zb3VyY2UnKSxcbiAgICAgICAgICAgICd1dWlkJ1xuICAgICAgICAgIClcbiAgICAgICAgfSlcbiAgICAgIGNvbnN0IGV4dHJhVmFsdWVzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBzdHJpbmdbXT4gPSB7fVxuICAgICAgaWYgKGZlYXR1cmVDYXRhbG9nSWRlbnRpZmllcikge1xuICAgICAgICBleHRyYVZhbHVlcy5mZWF0dXJlQ2F0YWxvZ0lkZW50aWZpZXIgPSBmZWF0dXJlQ2F0YWxvZ0lkZW50aWZpZXJcbiAgICAgIH1cbiAgICAgIGlmIChzb3VyY2VPZklkZW50aWZpZXJzICYmIHNvdXJjZU9mSWRlbnRpZmllcnMubGVuZ3RoID4gMCkge1xuICAgICAgICBleHRyYVZhbHVlcy5zb3VyY2VPZklkZW50aWZpZXJzID0gc291cmNlT2ZJZGVudGlmaWVyc1xuICAgICAgfVxuICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKGV4dHJhVmFsdWVzKS5sZW5ndGggPiAwXG4gICAgICAgID8gdGhpcy5hZGRFeHRyYShleHRyYVZhbHVlcywgb3V0cHV0KVxuICAgICAgICA6IG91dHB1dFxuICAgIH0sXG4gICAgcmVjb3JkTGluazogKG91dHB1dCwgc291cmNlKSA9PiB7XG4gICAgICBjb25zdCByZWNvcmRMaW5rcyA9IGdldEFzQXJyYXkoXG4gICAgICAgIHNlbGVjdEZpZWxkPFNvdXJjZVdpdGhVbmtub3duUHJvcHNbXT4oc291cmNlLCAncmVjb3JkTGluaycpXG4gICAgICApXG4gICAgICBjb25zdCBzb3VyY2VzSWRlbnRpZmllcnM6IHN0cmluZ1tdID0gcmVjb3JkTGlua3NcbiAgICAgICAgLmZpbHRlcihcbiAgICAgICAgICAobGluaykgPT4gbGlua1snb3JpZ2luJ10gPT09ICdjYXRhbG9nJyAmJiBsaW5rWyd0eXBlJ10gPT09ICdzb3VyY2VzJ1xuICAgICAgICApXG4gICAgICAgIC5tYXAoKGxpbmspID0+IHNlbGVjdEZpZWxkKDxTb3VyY2VXaXRoVW5rbm93blByb3BzPmxpbmssICd0bycpKVxuXG4gICAgICByZXR1cm4gc291cmNlc0lkZW50aWZpZXJzICYmIHNvdXJjZXNJZGVudGlmaWVycy5sZW5ndGggPiAwXG4gICAgICAgID8gdGhpcy5hZGRFeHRyYShcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgc291cmNlc0lkZW50aWZpZXJzLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG91dHB1dFxuICAgICAgICAgIClcbiAgICAgICAgOiBvdXRwdXRcbiAgICB9LFxuICAgIGlzUHVibGlzaGVkVG9BbGw6IChvdXRwdXQsIHNvdXJjZSkgPT5cbiAgICAgIHRoaXMuYWRkRXh0cmEoXG4gICAgICAgIHtcbiAgICAgICAgICBpc1B1Ymxpc2hlZFRvQWxsOiBzZWxlY3RGaWVsZChzb3VyY2UsICdpc1B1Ymxpc2hlZFRvQWxsJyksXG4gICAgICAgIH0sXG4gICAgICAgIG91dHB1dFxuICAgICAgKSxcbiAgICBpc0hhcnZlc3RlZDogKG91dHB1dCwgc291cmNlKSA9PlxuICAgICAgdGhpcy5hZGRFeHRyYShcbiAgICAgICAge1xuICAgICAgICAgIGlzSGFydmVzdGVkOiBzZWxlY3RGaWVsZChzb3VyY2UsICdpc0hhcnZlc3RlZCcpICE9PSAnZmFsc2UnLFxuICAgICAgICB9LFxuICAgICAgICBvdXRwdXRcbiAgICAgICksXG4gICAgZWRpdDogKG91dHB1dCwgc291cmNlKSA9PlxuICAgICAgdGhpcy5hZGRFeHRyYShcbiAgICAgICAge1xuICAgICAgICAgIGVkaXQ6IHNlbGVjdEZpZWxkKHNvdXJjZSwgJ2VkaXQnKSxcbiAgICAgICAgfSxcbiAgICAgICAgb3V0cHV0XG4gICAgICApLFxuICAgIHVzZXJpbmZvOiAob3V0cHV0LCBzb3VyY2UpID0+XG4gICAgICB0aGlzLmFkZEV4dHJhKFxuICAgICAgICB7XG4gICAgICAgICAgb3duZXJJbmZvOiBzZWxlY3RGaWVsZChzb3VyY2UsICd1c2VyaW5mbycpLFxuICAgICAgICB9LFxuICAgICAgICBvdXRwdXRcbiAgICAgICksXG4gICAgcmVzb3VyY2VUeXBlOiAob3V0cHV0LCBzb3VyY2UpID0+IHtcbiAgICAgIGNvbnN0IHJlc291cmNlVHlwZSA9IGdldEZpcnN0VmFsdWUoc2VsZWN0RmllbGQoc291cmNlLCAncmVzb3VyY2VUeXBlJykpXG4gICAgICBjb25zdCBraW5kID0gZ2V0UmVzb3VyY2VUeXBlKHJlc291cmNlVHlwZSlcbiAgICAgIGNvbnN0IHJldXNlVHlwZSA9IGdldFJldXNlVHlwZShyZXNvdXJjZVR5cGUpXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5vdXRwdXQsXG4gICAgICAgIGtpbmQsXG4gICAgICAgIC4uLihyZXVzZVR5cGUgJiYgeyByZXVzZVR5cGUgfSksXG4gICAgICB9IGFzIENhdGFsb2dSZWNvcmRcbiAgICB9LFxuICAgIGdlb206IChvdXRwdXQsIHNvdXJjZSkgPT4ge1xuICAgICAgY29uc3QgZ2VvbXMgPSBnZXRBc0FycmF5KHNlbGVjdEZpZWxkKHNvdXJjZSwgJ2dlb20nKSlcbiAgICAgIGNvbnN0IHNoYXBlcyA9IGdldEFzQXJyYXkoc2VsZWN0RmllbGQoc291cmNlLCAnc2hhcGUnKSlcbiAgICAgIGNvbnN0IGV4dGVudERlc2NyaXB0aW9ucyA9IGdldEFzQXJyYXkoXG4gICAgICAgIHNlbGVjdEZpZWxkKHNvdXJjZSwgJ2V4dGVudERlc2NyaXB0aW9uT2JqZWN0JylcbiAgICAgIClcbiAgICAgIGNvbnN0IHNwYXRpYWxFeHRlbnRzID0gZ2V0QXNBcnJheShzZWxlY3RGaWVsZChzb3VyY2UsICdzcGF0aWFsRXh0ZW50cycpKVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ub3V0cHV0LFxuICAgICAgICBzcGF0aWFsRXh0ZW50czogW1xuICAgICAgICAgIC4uLnNwYXRpYWxFeHRlbnRzLFxuICAgICAgICAgIC4uLmdlb21zLm1hcCgoZ2VvbSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGRlc2NyaXB0aW9uID0gc2VsZWN0VHJhbnNsYXRlZFZhbHVlKFxuICAgICAgICAgICAgICBnZXRBcnJheUl0ZW0oZXh0ZW50RGVzY3JpcHRpb25zLCBpbmRleCksXG4gICAgICAgICAgICAgIHRoaXMuZ2V0TG9jYWxpemVkSW5kZXhLZXlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGNvbnN0IGdlb21ldHJ5ID0gc2hhcGVzW2luZGV4XSA/PyBnZW9tXG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAuLi4oZGVzY3JpcHRpb24gIT09IG51bGwgPyB7IGRlc2NyaXB0aW9uIH0gOiBudWxsKSxcbiAgICAgICAgICAgICAgZ2VvbWV0cnksXG4gICAgICAgICAgICB9IGFzIERhdGFzZXRTcGF0aWFsRXh0ZW50XG4gICAgICAgICAgfSksXG4gICAgICAgIF0sXG4gICAgICB9XG4gICAgfSxcbiAgICByZXNvdXJjZVRlbXBvcmFsRXh0ZW50RGF0ZVJhbmdlOiAob3V0cHV0LCBzb3VyY2UpID0+IHtcbiAgICAgIGNvbnN0IHJhbmdlcyA9IGdldEFzQXJyYXkoXG4gICAgICAgIHNlbGVjdEZpZWxkKHNvdXJjZSwgJ3Jlc291cmNlVGVtcG9yYWxFeHRlbnREYXRlUmFuZ2UnKVxuICAgICAgKVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ub3V0cHV0LFxuICAgICAgICB0ZW1wb3JhbEV4dGVudHM6IHJhbmdlcy5tYXAoKHJhbmdlKSA9PiB7XG4gICAgICAgICAgY29uc3Qgc3RhcnQgPSBzZWxlY3RGaWVsZChyYW5nZSwgJ2d0ZScpXG4gICAgICAgICAgY29uc3QgZW5kID0gc2VsZWN0RmllbGQocmFuZ2UsICdsdGUnKVxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi4oc3RhcnQgIT09IG51bGwgPyB7IHN0YXJ0OiB0b0RhdGUoc3RhcnQpIH0gOiBudWxsKSxcbiAgICAgICAgICAgIC4uLihlbmQgIT09IG51bGwgPyB7IGVuZDogdG9EYXRlKGVuZCkgfSA6IG51bGwpLFxuICAgICAgICAgIH1cbiAgICAgICAgfSksXG4gICAgICB9XG4gICAgfSxcbiAgICByZXNvdXJjZUlkZW50aWZpZXI6IChvdXRwdXQsIHNvdXJjZSkgPT4ge1xuICAgICAgY29uc3QgaWRlbnRpZmllcnMgPSBnZXRBc0FycmF5KHNlbGVjdEZpZWxkKHNvdXJjZSwgJ3Jlc291cmNlSWRlbnRpZmllcicpKVxuXG4gICAgICBpZiAoIWlkZW50aWZpZXJzLmxlbmd0aCkgcmV0dXJuIG91dHB1dFxuXG4gICAgICBjb25zdCBtYXBwZWRJZGVudGlmaWVycyA9IGlkZW50aWZpZXJzXG4gICAgICAgIC5tYXAoKGlkKSA9PiB7XG4gICAgICAgICAgY29uc3QgY29kZSA9IHNlbGVjdEZpZWxkPHN0cmluZz4oaWQsICdjb2RlJylcbiAgICAgICAgICBjb25zdCBjb2RlU3BhY2UgPSBzZWxlY3RGaWVsZDxzdHJpbmc+KGlkLCAnY29kZVNwYWNlJylcbiAgICAgICAgICBjb25zdCBsaW5rID0gc2VsZWN0RmllbGQ8c3RyaW5nPihpZCwgJ2xpbmsnKVxuXG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNvZGUsXG4gICAgICAgICAgICAuLi4oY29kZVNwYWNlICYmIHsgY29kZVNwYWNlIH0pLFxuICAgICAgICAgICAgLi4uKGxpbmsgJiYgeyB1cmw6IGxpbmsgfSksXG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgICAuZmlsdGVyKChpZCkgPT4gaWQgIT09IG51bGwpXG5cbiAgICAgIGlmICghbWFwcGVkSWRlbnRpZmllcnMubGVuZ3RoKSByZXR1cm4gb3V0cHV0XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLm91dHB1dCxcbiAgICAgICAgcmVzb3VyY2VJZGVudGlmaWVyczogbWFwcGVkSWRlbnRpZmllcnMsXG4gICAgICB9XG4gICAgfSxcbiAgfVxuXG4gIHByaXZhdGUgZ2VuZXJpY0ZpZWxkID0gKG91dHB1dCkgPT4gb3V0cHV0XG5cbiAgcHJpdmF0ZSBjb25zdHJhaW50RmllbGQgPSAoXG4gICAgdHlwZTogJ2xpY2Vuc2UnIHwgJ2xlZ2FsJyB8ICdzZWN1cml0eScgfCAnb3RoZXInLFxuICAgIG91dHB1dDogUGFydGlhbDxDYXRhbG9nUmVjb3JkPixcbiAgICBjb25zdHJhaW50QXJyYXk6IFNvdXJjZVdpdGhVbmtub3duUHJvcHNbXVxuICApID0+IHtcbiAgICBsZXQgb3V0cHV0RmllbGQ6IHN0cmluZ1xuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSAnbGljZW5zZSc6XG4gICAgICAgIG91dHB1dEZpZWxkID0gJ2xpY2Vuc2VzJ1xuICAgICAgICBicmVha1xuICAgICAgY2FzZSAnbGVnYWwnOlxuICAgICAgICBvdXRwdXRGaWVsZCA9ICdsZWdhbENvbnN0cmFpbnRzJ1xuICAgICAgICBicmVha1xuICAgICAgY2FzZSAnc2VjdXJpdHknOlxuICAgICAgICBvdXRwdXRGaWVsZCA9ICdzZWN1cml0eUNvbnN0cmFpbnRzJ1xuICAgICAgICBicmVha1xuICAgICAgY2FzZSAnb3RoZXInOlxuICAgICAgICBvdXRwdXRGaWVsZCA9ICdvdGhlckNvbnN0cmFpbnRzJ1xuICAgICAgICBicmVha1xuICAgIH1cbiAgICBjb25zdCBvdXRwdXRBcnJheTogQ29uc3RyYWludFtdID1cbiAgICAgIG91dHB1dEZpZWxkIGluIG91dHB1dCA/IG91dHB1dFtvdXRwdXRGaWVsZF0gOiBbXVxuICAgIG91dHB1dEFycmF5LnB1c2goXG4gICAgICAuLi5jb25zdHJhaW50QXJyYXkubWFwKChpdGVtKSA9PiB7XG4gICAgICAgIGNvbnN0IHRleHQgPSBzZWxlY3RUcmFuc2xhdGVkVmFsdWUoXG4gICAgICAgICAgaXRlbSxcbiAgICAgICAgICB0aGlzLmdldExvY2FsaXplZEluZGV4S2V5XG4gICAgICAgICkgYXMgc3RyaW5nXG4gICAgICAgIGNvbnN0IHVybCA9IGdldEFzVXJsKHNlbGVjdEZpZWxkKGl0ZW0sICdsaW5rJykpXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdGV4dCxcbiAgICAgICAgICAuLi4odXJsID8geyB1cmwgfSA6IHt9KSxcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApXG4gICAgY29uc3QgcmVzdWx0ID0ge1xuICAgICAgLi4ub3V0cHV0LFxuICAgICAgW291dHB1dEZpZWxkXTogb3V0cHV0QXJyYXksXG4gICAgfVxuICAgIHJldHVybiByZXN1bHRcbiAgfVxuXG4gIGdldE1hcHBpbmdGbihmaWVsZE5hbWU6IHN0cmluZykge1xuICAgIHJldHVybiBmaWVsZE5hbWUgaW4gdGhpcy5maWVsZHMgPyB0aGlzLmZpZWxkc1tmaWVsZE5hbWVdIDogdGhpcy5nZW5lcmljRmllbGRcbiAgfVxuXG4gIGdldExpbmtUeXBlKHVybDogc3RyaW5nLCBwcm90b2NvbD86IHN0cmluZyk6IE9ubGluZVJlc291cmNlVHlwZSB7XG4gICAgaWYgKCFwcm90b2NvbCkge1xuICAgICAgcmV0dXJuICdsaW5rJ1xuICAgIH1cbiAgICBpZiAoXG4gICAgICAoL15FU1JJOlJFU1QvLnRlc3QocHJvdG9jb2wpICYmIC9GZWF0dXJlU2VydmVyLy50ZXN0KHVybCkpIHx8XG4gICAgICAvXk9HQzpXTVMvLnRlc3QocHJvdG9jb2wpIHx8XG4gICAgICAvXk9HQzpXRlMvLnRlc3QocHJvdG9jb2wpIHx8XG4gICAgICAvXk9HQzpXTVRTLy50ZXN0KHByb3RvY29sKSB8fFxuICAgICAgL1RNUy9pLnRlc3QocHJvdG9jb2wpIHx8XG4gICAgICAvb2djXFxXKmFwaVxcVypmZWF0dXJlcy9pLnRlc3QocHJvdG9jb2wpIHx8XG4gICAgICAvXkRCOlBPU1RHSVMvaS50ZXN0KHByb3RvY29sKSB8fFxuICAgICAgL3N0YWNcXFcqaXRlbXMvaS50ZXN0KHByb3RvY29sKSB8fFxuICAgICAgKC9eV1dXOkRPV05MT0FELS8udGVzdChwcm90b2NvbCkgJiYgL2RhdGEuZ2VvcGYuZnIvLnRlc3QodXJsKSkgLy8gVE8gRE8gOiBjaGFuZ2Ugd2l0aCB0aGUgZ29vZCBwcm90b2NvbCB3aGVuIGRlY2lkZWRcbiAgICApIHtcbiAgICAgIHJldHVybiAnc2VydmljZSdcbiAgICB9XG4gICAgaWYgKC9eV1dXOkRPV05MT0FELy50ZXN0KHByb3RvY29sKSkge1xuICAgICAgcmV0dXJuICdkb3dubG9hZCdcbiAgICB9XG4gICAgcmV0dXJuICdsaW5rJ1xuICB9XG5cbiAgbWFwTGluayA9IChzb3VyY2VMaW5rOiBTb3VyY2VXaXRoVW5rbm93blByb3BzKTogT25saW5lUmVzb3VyY2UgfCBudWxsID0+IHtcbiAgICBjb25zdCB1cmwgPSBnZXRBc1VybChcbiAgICAgIHNlbGVjdEZhbGxiYWNrKFxuICAgICAgICBzZWxlY3RUcmFuc2xhdGVkRmllbGQ8c3RyaW5nPihcbiAgICAgICAgICBzb3VyY2VMaW5rLFxuICAgICAgICAgICd1cmxPYmplY3QnLFxuICAgICAgICAgIHRoaXMuZ2V0TG9jYWxpemVkSW5kZXhLZXlcbiAgICAgICAgKSxcbiAgICAgICAgc2VsZWN0RmllbGQ8c3RyaW5nPihzb3VyY2VMaW5rLCAndXJsJylcbiAgICAgIClcbiAgICApXG4gICAgY29uc3QgbmFtZSA9IHNlbGVjdEZhbGxiYWNrKFxuICAgICAgc2VsZWN0VHJhbnNsYXRlZEZpZWxkPHN0cmluZz4oXG4gICAgICAgIHNvdXJjZUxpbmssXG4gICAgICAgICduYW1lT2JqZWN0JyxcbiAgICAgICAgdGhpcy5nZXRMb2NhbGl6ZWRJbmRleEtleVxuICAgICAgKSxcbiAgICAgIHNlbGVjdEZpZWxkPHN0cmluZz4oc291cmNlTGluaywgJ25hbWUnKVxuICAgIClcbiAgICBjb25zdCBkZXNjcmlwdGlvbiA9IHNlbGVjdEZhbGxiYWNrKFxuICAgICAgc2VsZWN0VHJhbnNsYXRlZEZpZWxkPHN0cmluZz4oXG4gICAgICAgIHNvdXJjZUxpbmssXG4gICAgICAgICdkZXNjcmlwdGlvbk9iamVjdCcsXG4gICAgICAgIHRoaXMuZ2V0TG9jYWxpemVkSW5kZXhLZXlcbiAgICAgICksXG4gICAgICBzZWxlY3RGaWVsZDxzdHJpbmc+KHNvdXJjZUxpbmssICdkZXNjcmlwdGlvbicpXG4gICAgKVxuICAgIGNvbnN0IGRlc2NyaXB0aW9uTGluayA9IHNlbGVjdEZpZWxkPG9iamVjdD4oc291cmNlTGluaywgJ2Rlc2NyaXB0aW9uT2JqZWN0JylcbiAgICBjb25zdCBhY2Nlc3NSZXN0cmljdGVkID1cbiAgICAgIGRlc2NyaXB0aW9uTGluayAmJlxuICAgICAgJ2xpbmsnIGluIGRlc2NyaXB0aW9uTGluayAmJlxuICAgICAgZGVzY3JpcHRpb25MaW5rLmxpbmsudG9TdHJpbmcoKS5pbmNsdWRlcygnI01EX1Jlc3RyaWN0aW9uQ29kZV9yZXN0cmljdGVkJylcbiAgICAvLyBubyB1cmw6IGZhaWwgZWFybHlcbiAgICBpZiAodXJsID09PSBudWxsKSB7XG4gICAgICAvLyBUT0RPOiBjb2xsZWN0IGVycm9ycyBhdCB0aGUgcmVjb3JkIGxldmVsP1xuICAgICAgY29uc29sZS53YXJuKCdBIGxpbmsgd2l0aG91dCB2YWxpZCBVUkwgd2FzIGZvdW5kJywgc291cmNlTGluaylcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuXG4gICAgY29uc3QgcHJvdG9jb2wgPSBzZWxlY3RGaWVsZDxzdHJpbmc+KHNvdXJjZUxpbmssICdwcm90b2NvbCcpXG4gICAgY29uc3QgdHlwZSA9IHRoaXMuZ2V0TGlua1R5cGUodXJsLnRvU3RyaW5nKCksIHByb3RvY29sKVxuICAgIGNvbnN0IGFjY2Vzc1NlcnZpY2VQcm90b2NvbCA9IG1hdGNoUHJvdG9jb2wocHJvdG9jb2wpXG4gICAgY29uc3QgbWltZVR5cGVNYXRjaGVzID1cbiAgICAgIHByb3RvY29sICYmIHByb3RvY29sLm1hdGNoKC9eV1dXOkRPV05MT0FEOiguK1xcLy4rKSQvKVxuICAgIGNvbnN0IG1pbWVUeXBlID0gbWltZVR5cGVNYXRjaGVzICYmIG1pbWVUeXBlTWF0Y2hlc1sxXVxuXG4gICAgY29uc3QgZGlzdHJpYnV0aW9uID0ge1xuICAgICAgLi4uKG5hbWUgJiYgeyBuYW1lIH0pLFxuICAgICAgLi4uKGRlc2NyaXB0aW9uICYmIHsgZGVzY3JpcHRpb24gfSksXG4gICAgfVxuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSAnc2VydmljZSc6XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uZGlzdHJpYnV0aW9uLFxuICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgdXJsOiB1cmwsXG4gICAgICAgICAgYWNjZXNzU2VydmljZVByb3RvY29sLFxuICAgICAgICAgIGFjY2Vzc1Jlc3RyaWN0ZWQ6IGFjY2Vzc1Jlc3RyaWN0ZWQsXG4gICAgICAgIH1cbiAgICAgIGNhc2UgJ2xpbmsnOlxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLmRpc3RyaWJ1dGlvbixcbiAgICAgICAgICB0eXBlLFxuICAgICAgICAgIHVybDogdXJsLFxuICAgICAgICB9XG4gICAgICBjYXNlICdkb3dubG9hZCc6XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uZGlzdHJpYnV0aW9uLFxuICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgdXJsOiB1cmwsXG4gICAgICAgICAgLi4uKG1pbWVUeXBlICYmIHsgbWltZVR5cGUgfSksXG4gICAgICAgIH1cbiAgICAgIGNhc2UgJ2VuZHBvaW50JzpcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5kaXN0cmlidXRpb24sXG4gICAgICAgICAgdHlwZSxcbiAgICAgICAgICB1cmw6IHVybCxcbiAgICAgICAgICBhY2Nlc3NTZXJ2aWNlUHJvdG9jb2w6IGFjY2Vzc1NlcnZpY2VQcm90b2NvbCxcbiAgICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYWRkRXh0cmEgPSAodmFsdWU6IG9iamVjdCwgb3V0cHV0OiBQYXJ0aWFsPENhdGFsb2dSZWNvcmQ+KSA9PiAoe1xuICAgIC4uLm91dHB1dCxcbiAgICBleHRyYXM6IHsgLi4uKG91dHB1dC5leHRyYXMgfHwge30pLCAuLi52YWx1ZSB9LFxuICB9KVxufVxuIl19