@microsoft/windows-admin-center-sdk 4.123.0 → 4.232.0
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.
- package/angular/assets/strings/cs-CZ/strings.json +1 -1
- package/angular/assets/strings/de-DE/strings.json +1 -1
- package/angular/assets/strings/es-ES/strings.json +1 -1
- package/angular/assets/strings/fr-FR/strings.json +1 -1
- package/angular/assets/strings/hu-HU/strings.json +1 -1
- package/angular/assets/strings/id-ID/strings.json +1 -1
- package/angular/assets/strings/it-IT/strings.json +1 -1
- package/angular/assets/strings/ja-JP/strings.json +1 -1
- package/angular/assets/strings/ko-KR/strings.json +1 -1
- package/angular/assets/strings/nl-NL/strings.json +1 -1
- package/angular/assets/strings/pl-PL/strings.json +1 -1
- package/angular/assets/strings/pt-BR/strings.json +1 -1
- package/angular/assets/strings/pt-PT/strings.json +1 -1
- package/angular/assets/strings/ru-RU/strings.json +1 -1
- package/angular/assets/strings/strings.json +1 -1
- package/angular/assets/strings/sv-SE/strings.json +1 -1
- package/angular/assets/strings/tr-TR/strings.json +1 -1
- package/angular/assets/strings/zh-CN/strings.json +1 -1
- package/angular/assets/strings/zh-TW/strings.json +1 -1
- package/angular/esm2020/src/controls/accordion/accordion-panel/accordion-panel.component.mjs +36 -12
- package/angular/esm2020/src/controls/actions/containers/action-container.component.mjs +2 -3
- package/angular/esm2020/src/controls/alert-bar/alert-bar.component.mjs +2 -2
- package/angular/esm2020/src/controls/breadcrumb-header/breadcrumb-header.component.mjs +1 -1
- package/angular/esm2020/src/controls/common/base.component.mjs +1 -1
- package/angular/esm2020/src/controls/common/spacer-base.component.mjs +25 -1
- package/angular/esm2020/src/controls/context-menu/context-menu.component.mjs +2 -3
- package/angular/esm2020/src/controls/data-table/data-table.component.mjs +7 -7
- package/angular/esm2020/src/controls/dialog/base-dialog.component.mjs +2 -4
- package/angular/esm2020/src/controls/dialog/confirmation-list-dialog/confirmation-list-dialog.component.mjs +2 -2
- package/angular/esm2020/src/controls/dropdown/dropdown.component.mjs +1 -4
- package/angular/esm2020/src/controls/form/form-field/array/array-form-field-accessibility-manager.service.mjs +59 -0
- package/angular/esm2020/src/controls/form/form-field/array/array-form-field.component.mjs +24 -35
- package/angular/esm2020/src/controls/form/form-field/clock/clock-form-field.component.mjs +10 -7
- package/angular/esm2020/src/controls/form/form-field/form-field-accessibility-manager-base.service.mjs +105 -0
- package/angular/esm2020/src/controls/form/form-field/form-field.component.mjs +1 -1
- package/angular/esm2020/src/controls/form/form-field/list/list-form-field-accessibility-manager.service.mjs +38 -0
- package/angular/esm2020/src/controls/form/form-field/list/list-form-field.component.mjs +56 -38
- package/angular/esm2020/src/controls/form/form-field/number/number-form-field.component.mjs +22 -4
- package/angular/esm2020/src/controls/form/form-field/ordered-list/ordered-list-form-field-accessibility-manager.service.mjs +54 -0
- package/angular/esm2020/src/controls/form/form-field/ordered-list/ordered-list-form-field.component.mjs +67 -67
- package/angular/esm2020/src/controls/form/form-field/radio-group/classic/radio-group-form-field.component.mjs +5 -5
- package/angular/esm2020/src/controls/form/forms.module.mjs +19 -2
- package/angular/esm2020/src/controls/icon/icon-text/icon-text.component.mjs +6 -6
- package/angular/esm2020/src/controls/icon/layered-icon/status/status-icon.component.mjs +1 -1
- package/angular/esm2020/src/controls/layout/editable-layout.component.mjs +2 -3
- package/angular/esm2020/src/controls/node-credentials-form/node-credentials-form.component.mjs +2 -2
- package/angular/esm2020/src/controls/page-alert-bar/page-alert-bar.component.mjs +4 -4
- package/angular/esm2020/src/controls/property-grid/property-grid.component.mjs +33 -13
- package/angular/esm2020/src/controls/schema/tabbed-form-loader.component.mjs +2 -2
- package/angular/esm2020/src/controls/settings/common-settings/common-settings.component.mjs +5 -5
- package/angular/esm2020/src/controls/settings/settings-form.directive.mjs +3 -7
- package/angular/esm2020/src/controls/settings/settings-form.service.mjs +2 -4
- package/angular/esm2020/src/controls/snap-in-extension/snap-in-extension.component.mjs +1 -1
- package/angular/esm2020/src/controls/split-view/split-view.component.mjs +2 -2
- package/angular/esm2020/src/controls/wizard/models/wizard-step-snap-in-output.mjs +1 -1
- package/angular/esm2020/src/controls/wizard-lite/wizard-navigation-button/wizard-navigation-button.component.mjs +3 -3
- package/angular/esm2020/src/data/extension-broker/snap-in-listener.mjs +80 -0
- package/angular/esm2020/src/data/index.mjs +2 -1
- package/angular/esm2020/src/directives/router/router-link.directive.mjs +2 -2
- package/angular/esm2020/src/directives/svg/svg.directive.mjs +2 -3
- package/angular/esm2020/src/generated/strings.mjs +1 -1
- package/angular/esm2020/src/service/navigation.service.mjs +3 -8
- package/angular/esm2020/src/service/user-alive.service.mjs +2 -4
- package/angular/fesm2015/microsoft-windows-admin-center-sdk-angular.mjs +665 -239
- package/angular/fesm2015/microsoft-windows-admin-center-sdk-angular.mjs.map +1 -1
- package/angular/fesm2020/microsoft-windows-admin-center-sdk-angular.mjs +636 -237
- package/angular/fesm2020/microsoft-windows-admin-center-sdk-angular.mjs.map +1 -1
- package/angular/package.json +1 -1
- package/angular/src/controls/accordion/accordion-panel/accordion-panel.component.d.ts +13 -4
- package/angular/src/controls/common/spacer-base.component.d.ts +11 -2
- package/angular/src/controls/form/form-field/array/array-form-field-accessibility-manager.service.d.ts +38 -0
- package/angular/src/controls/form/form-field/array/array-form-field.component.d.ts +3 -1
- package/angular/src/controls/form/form-field/form-field-accessibility-manager-base.service.d.ts +37 -0
- package/angular/src/controls/form/form-field/list/list-form-field-accessibility-manager.service.d.ts +25 -0
- package/angular/src/controls/form/form-field/list/list-form-field.component.d.ts +12 -2
- package/angular/src/controls/form/form-field/number/number-form-field.component.d.ts +8 -0
- package/angular/src/controls/form/form-field/ordered-list/ordered-list-form-field-accessibility-manager.service.d.ts +37 -0
- package/angular/src/controls/form/form-field/ordered-list/ordered-list-form-field.component.d.ts +12 -8
- package/angular/src/controls/icon/icon-text/icon-text.component.d.ts +1 -1
- package/angular/src/controls/property-grid/property-grid.component.d.ts +2 -0
- package/angular/src/controls/wizard/models/wizard-step-snap-in-output.d.ts +1 -1
- package/{core → angular/src}/data/extension-broker/snap-in-listener.d.ts +49 -46
- package/angular/src/data/index.d.ts +1 -0
- package/angular/src/directives/svg/svg.directive.d.ts +1 -2
- package/angular/src/generated/strings.d.ts +12 -0
- package/core/async/cancellation.js +312 -0
- package/core/async/index.js +312 -0
- package/core/async/progress.js +312 -0
- package/core/azure/azure-constants.d.ts +2 -2
- package/core/azure/azure-constants.d.ts.map +1 -1
- package/core/azure/azure-constants.js +322 -3
- package/core/azure/azure-constants.js.map +1 -1
- package/core/azure/azure-logging.js +312 -0
- package/core/azure/azure-manager.js +312 -0
- package/core/azure/models/aadAppConfig-data.js +312 -0
- package/core/azure/models/azureArcStatusEnum.js +312 -0
- package/core/azure/models/azureTokenResult-data.js +312 -0
- package/core/azure/resources/deployment-operation-request-body.js +312 -0
- package/core/azure/resources/deployment-operation-response.js +312 -0
- package/core/azure/resources/location-data.js +315 -0
- package/core/azure/resources/resource-group-data.js +312 -0
- package/core/azure/resources/subscription-data.js +312 -0
- package/core/base/data-store/browser-storage-data-store.js +315 -0
- package/core/base/data-store/cached-data-store.js +312 -0
- package/core/base/data-store/data-store.js +312 -0
- package/core/base/data-store/local-data-store.js +312 -0
- package/core/base/data-store/memory-data-store.js +312 -0
- package/core/base/data-store/session-data-store.js +312 -0
- package/core/base/date/date-like.js +312 -0
- package/core/base/date/date-range.js +312 -0
- package/core/base/date/date-time.js +312 -0
- package/core/base/date/date-type.js +312 -0
- package/core/base/date/time-unit.js +312 -0
- package/core/base/decorators/base.js +312 -0
- package/core/base/decorators/debounce.decorators.js +312 -0
- package/core/base/decorators/delay.decorator.js +315 -0
- package/core/base/decorators/yield.decorator.js +312 -0
- package/core/base/environment.js +312 -0
- package/core/base/json.js +312 -0
- package/core/base/msft-sme.mock.js +316 -0
- package/core/base/polyfills/array.js +315 -0
- package/core/base/polyfills/string.js +312 -0
- package/core/base/rxjs-lifetime-manager.js +312 -0
- package/core/base/utilities.js +312 -0
- package/core/base/versioned-object.js +312 -0
- package/core/data/accessibility-manager.js +312 -0
- package/core/data/active-directory/active-directory.js +312 -0
- package/core/data/active-directory/models/account-info.js +312 -0
- package/core/data/active-directory/models/active-directory-search-options.js +312 -0
- package/core/data/active-directory/models/search-type.js +312 -0
- package/core/data/animation.js +312 -0
- package/core/data/app-context.js +312 -0
- package/core/data/asset-manager.js +315 -0
- package/core/data/base64-array-buffer.js +312 -0
- package/core/data/batch-connection.js +312 -0
- package/core/data/cim-connection.js +312 -0
- package/core/data/cim-stream.js +312 -0
- package/core/data/cim.js +312 -0
- package/core/data/column-picker.js +312 -0
- package/core/data/cookie.js +312 -0
- package/core/data/core-environment.js +315 -0
- package/core/data/crypto.js +312 -0
- package/core/data/deployment-share.js +312 -0
- package/core/data/disposable.js +312 -0
- package/core/data/electron.js +315 -0
- package/core/data/error-extended.js +312 -0
- package/core/data/extension-broker/dialog-listener.js +312 -0
- package/core/data/extension-broker/extension-broker.js +312 -0
- package/core/data/extension-broker/extension-listener.js +312 -0
- package/core/data/extension-broker/model/extension-broker-request-payload.js +312 -0
- package/core/data/extension-broker/model/extension-broker-response-error.js +312 -0
- package/core/data/extension-broker/model/extension-broker-response-payload.js +312 -0
- package/core/data/extension-broker/model/extension-entries.js +315 -0
- package/core/data/extension-broker/model/extension-instance.js +315 -0
- package/core/data/extension-broker/model/extension-rect.js +312 -0
- package/core/data/extension-broker/model/extension-search-options.js +312 -0
- package/core/data/extension-broker/service-listener.js +312 -0
- package/core/data/extension-broker/worker-listener.js +312 -0
- package/core/data/extension-broker/worker-set.js +312 -0
- package/core/data/file-transfer.js +312 -0
- package/core/data/gateway-connection.js +312 -0
- package/core/data/gateway-status.js +312 -0
- package/core/data/gateway-url-builder.js +312 -0
- package/core/data/gateway-url-translator.d.ts +1 -0
- package/core/data/gateway-url-translator.d.ts.map +1 -1
- package/core/data/gateway-url-translator.js +337 -6
- package/core/data/gateway-url-translator.js.map +1 -1
- package/core/data/gateway-urls.js +312 -0
- package/core/data/globalization.js +315 -0
- package/core/data/http-constants.js +315 -0
- package/core/data/http.js +312 -0
- package/core/data/jobs/jobs-manager.js +312 -0
- package/core/data/jobs/models/job-credentials.js +312 -0
- package/core/data/jobs/models/job-node.js +312 -0
- package/core/data/jobs/models/job-paginated-response.js +315 -0
- package/core/data/jobs/models/job-pagination-options.js +315 -0
- package/core/data/jobs/models/job.js +312 -0
- package/core/data/jobs/models/node-job.js +312 -0
- package/core/data/jobs/models/powershell-job.js +312 -0
- package/core/data/language.js +315 -0
- package/core/data/lifetime-data.js +312 -0
- package/core/data/localization-manager.js +312 -0
- package/core/data/native-q.js +312 -0
- package/core/data/net.d.ts.map +1 -1
- package/core/data/net.js +313 -1
- package/core/data/net.js.map +1 -1
- package/core/data/node-connection.d.ts.map +1 -1
- package/core/data/node-connection.js +312 -2
- package/core/data/node-connection.js.map +1 -1
- package/core/data/node-extension-install.js +312 -0
- package/core/data/powershell-alternate.js +312 -0
- package/core/data/powershell-batch.js +312 -0
- package/core/data/powershell-connection.js +312 -0
- package/core/data/powershell-crypto.js +312 -0
- package/core/data/powershell-stream.js +312 -0
- package/core/data/powershell.js +312 -0
- package/core/data/query-cache.js +312 -0
- package/core/data/resource-cache.js +312 -0
- package/core/data/schedule-reboot.js +312 -0
- package/core/data/settings-manager.js +312 -0
- package/core/data/settings-manger.mock.js +312 -0
- package/core/data/sme-extension.js +312 -0
- package/core/data/ssh-stream.js +312 -0
- package/core/data/units.js +312 -0
- package/core/data/uri-builder.js +315 -0
- package/core/data/wdac-operations.js +312 -0
- package/core/data/websocket-stream.js +312 -0
- package/core/diagnostics/error-monitor.js +312 -0
- package/core/diagnostics/log-level.js +312 -0
- package/core/diagnostics/log-record.js +312 -0
- package/core/diagnostics/logging-constants.js +312 -0
- package/core/diagnostics/logging.js +312 -0
- package/core/diagnostics/logging.mock.js +312 -0
- package/core/diagnostics/sme-web-telemetry-models.js +312 -0
- package/core/diagnostics/sme-web-telemetry.d.ts +1 -2
- package/core/diagnostics/sme-web-telemetry.d.ts.map +1 -1
- package/core/diagnostics/sme-web-telemetry.js +336 -15
- package/core/diagnostics/sme-web-telemetry.js.map +1 -1
- package/core/diagnostics/telemetry-control-type.js +312 -0
- package/core/diagnostics/telemetry-options.js +312 -0
- package/core/diagnostics/telemetry-record.js +312 -0
- package/core/dom/dom.js +312 -0
- package/core/frame/frame-connection.js +312 -0
- package/core/frame/frame-connection.mock.js +312 -0
- package/core/frame/shell-navigation-connection.js +312 -0
- package/core/generated/powershell-scripts.d.ts.map +1 -1
- package/core/generated/powershell-scripts.js +313 -1
- package/core/generated/powershell-scripts.js.map +1 -1
- package/core/generated/strings.js +312 -0
- package/core/host/host-core-manager.js +312 -0
- package/core/host/host-core-message-type.js +312 -0
- package/core/host/host-core-messages.js +312 -0
- package/core/index.d.ts +0 -1
- package/core/index.d.ts.map +1 -1
- package/core/index.js +312 -1
- package/core/index.js.map +1 -1
- package/core/manifest/environment-modules.js +312 -0
- package/core/manifest/manifest-loader.js +312 -0
- package/core/notification/client-notification-instance.js +312 -0
- package/core/notification/client-notification.js +312 -0
- package/core/notification/notification-connection.js +312 -0
- package/core/notification/notification-link-type.js +312 -0
- package/core/notification/notification-manager.js +312 -0
- package/core/notification/notification-message.js +312 -0
- package/core/notification/notification-state.js +312 -0
- package/core/notification/notification.js +312 -0
- package/core/notification/powershell-notification.js +312 -0
- package/core/notification/socket-signalr.js +312 -0
- package/core/notification/work-item-connection.js +312 -0
- package/core/notification/work-item-manager.js +312 -0
- package/core/notification/work-item-request.js +312 -0
- package/core/performance/performance-profile-data-type.js +312 -0
- package/core/performance/performance-profile-data.js +312 -0
- package/core/performance/performance-profile-database.js +312 -0
- package/core/performance/performance-profile-record.js +312 -0
- package/core/performance/performance-profile.d.ts.map +1 -1
- package/core/performance/performance-profile.js +321 -9
- package/core/performance/performance-profile.js.map +1 -1
- package/core/performance/performance-tracker.js +312 -0
- package/core/polyfills.js +312 -0
- package/core/resources/scripts/public/crypto/Get-DecryptedDataFromNode.ps1 +216 -0
- package/core/resources/scripts/public/crypto/Get-EncryptionJWKOnNode.ps1 +216 -0
- package/core/resources/scripts/public/inventory/Get-CimWin32LogicalDisk.ps1 +218 -0
- package/core/resources/scripts/public/inventory/Get-CimWin32NetworkAdapter.ps1 +216 -0
- package/core/resources/scripts/public/inventory/Get-CimWin32PhysicalMemory.ps1 +216 -0
- package/core/resources/scripts/public/inventory/Get-CimWin32Processor.ps1 +216 -0
- package/core/resources/scripts/public/inventory/Get-ClusterInventory.ps1 +216 -0
- package/core/resources/scripts/public/inventory/Get-ClusterNodes.ps1 +216 -0
- package/core/resources/scripts/public/inventory/Get-ServerInventory.ps1 +246 -8
- package/core/rpc/alive/rpc-alive-client.js +312 -0
- package/core/rpc/alive/rpc-alive-handler.js +312 -0
- package/core/rpc/alive/rpc-alive-model.js +315 -0
- package/core/rpc/alive/rpc-alive-subject-server.js +312 -0
- package/core/rpc/alive/rpc-observable-alive-client.js +312 -0
- package/core/rpc/alive/rpc-observable-alive-model.js +312 -0
- package/core/rpc/alive/rpc-observable-alive-server.js +312 -0
- package/core/rpc/azure/rpc-azure-model.js +312 -0
- package/core/rpc/azure/rpc-azure-request-client.js +312 -0
- package/core/rpc/azure/rpc-azure-request-handler.js +312 -0
- package/core/rpc/azure/rpc-azure-request-subject-server.js +312 -0
- package/core/rpc/azure/rpc-azure-response-client.js +312 -0
- package/core/rpc/azure/rpc-azure-response-handler.js +315 -0
- package/core/rpc/credssp/rpc-credssp-model.js +312 -0
- package/core/rpc/credssp/rpc-credssp-request-client.js +312 -0
- package/core/rpc/credssp/rpc-credssp-request-handler.js +315 -0
- package/core/rpc/credssp/rpc-credssp-request-subject-server.js +312 -0
- package/core/rpc/credssp/rpc-credssp-response-client.js +312 -0
- package/core/rpc/credssp/rpc-credssp-response-handler.js +315 -0
- package/core/rpc/dialog/rpc-dialog-client.js +312 -0
- package/core/rpc/dialog/rpc-dialog-handler.js +312 -0
- package/core/rpc/dialog/rpc-dialog-model.js +312 -0
- package/core/rpc/dialog/rpc-dialog-subject-server.js +315 -0
- package/core/rpc/electron/rpc-electron-model.js +312 -0
- package/core/rpc/electron/rpc-electron-request-client.js +312 -0
- package/core/rpc/electron/rpc-electron-request-handler.js +312 -0
- package/core/rpc/electron/rpc-electron-request-subject-server.js +312 -0
- package/core/rpc/electron/rpc-electron-response-client.js +312 -0
- package/core/rpc/electron/rpc-electron-response-handler.js +312 -0
- package/core/rpc/elevate/rpc-observable-elevate-client.js +312 -0
- package/core/rpc/elevate/rpc-observable-elevate-model.js +312 -0
- package/core/rpc/elevate/rpc-observable-elevate-server.js +312 -0
- package/core/rpc/error-monitor/rpc-observable-error-monitor-client.js +312 -0
- package/core/rpc/error-monitor/rpc-observable-error-monitor-model.js +315 -0
- package/core/rpc/error-monitor/rpc-observable-error-monitor-server.js +312 -0
- package/core/rpc/extension-broker/rpc-extension-broker-model.js +315 -0
- package/core/rpc/extension-broker/rpc-extension-broker-module-request-subject-server.js +315 -0
- package/core/rpc/extension-broker/rpc-extension-broker-request-client.js +312 -0
- package/core/rpc/extension-broker/rpc-extension-broker-request-handler.js +312 -0
- package/core/rpc/extension-broker/rpc-extension-broker-request-subject-server.js +312 -0
- package/core/rpc/extension-broker/rpc-extension-broker-response-client.js +312 -0
- package/core/rpc/extension-broker/rpc-extension-broker-response-handler.js +312 -0
- package/core/rpc/extension-data/rpc-observable-extension-data-client.js +312 -0
- package/core/rpc/extension-data/rpc-observable-extension-data-model.js +312 -0
- package/core/rpc/extension-data/rpc-observable-extension-data-server.js +312 -0
- package/core/rpc/forward/rpc-forward-auto-client.js +312 -0
- package/core/rpc/forward/rpc-forward-down-client.js +315 -0
- package/core/rpc/forward/rpc-forward-down-handler.js +312 -0
- package/core/rpc/forward/rpc-forward-model.js +312 -0
- package/core/rpc/forward/rpc-forward-up-client.js +312 -0
- package/core/rpc/forward/rpc-forward-up-handler.js +312 -0
- package/core/rpc/forward/rpc-forward-up-subject-server.js +312 -0
- package/core/rpc/log/rpc-log-client.js +312 -0
- package/core/rpc/log/rpc-log-handler.js +312 -0
- package/core/rpc/log/rpc-log-model.js +312 -0
- package/core/rpc/log/rpc-log-subject-server.js +312 -0
- package/core/rpc/notification/rpc-notification-client.js +312 -0
- package/core/rpc/notification/rpc-notification-handler.js +312 -0
- package/core/rpc/notification/rpc-notification-model.js +312 -0
- package/core/rpc/notification/rpc-notification-subject-server.js +312 -0
- package/core/rpc/overlay/rpc-overlay-close-client.js +312 -0
- package/core/rpc/overlay/rpc-overlay-close-handler.js +312 -0
- package/core/rpc/overlay/rpc-overlay-model.js +312 -0
- package/core/rpc/overlay/rpc-overlay-open-client.js +315 -0
- package/core/rpc/overlay/rpc-overlay-open-handler.js +312 -0
- package/core/rpc/overlay/rpc-overlay-open-subject-server.js +312 -0
- package/core/rpc/performance/rpc-observable-performance-client.js +312 -0
- package/core/rpc/performance/rpc-observable-performance-config-client.js +312 -0
- package/core/rpc/performance/rpc-observable-performance-config-server.js +312 -0
- package/core/rpc/performance/rpc-observable-performance-model.js +312 -0
- package/core/rpc/performance/rpc-observable-performance-server.js +312 -0
- package/core/rpc/report/rpc-report-client.js +312 -0
- package/core/rpc/report/rpc-report-handler.js +312 -0
- package/core/rpc/report/rpc-report-model.js +312 -0
- package/core/rpc/report/rpc-report-subject-server.js +315 -0
- package/core/rpc/rpc-base.js +312 -0
- package/core/rpc/rpc-channel.js +312 -0
- package/core/rpc/rpc-forwarder.js +312 -0
- package/core/rpc/rpc-inbound-client.js +312 -0
- package/core/rpc/rpc-inbound.js +312 -0
- package/core/rpc/rpc-manager.js +312 -0
- package/core/rpc/rpc-module-subject-server.js +315 -0
- package/core/rpc/rpc-observable-client.js +312 -0
- package/core/rpc/rpc-observable-request.js +312 -0
- package/core/rpc/rpc-observable-result.js +312 -0
- package/core/rpc/rpc-observable-server.js +312 -0
- package/core/rpc/rpc-outbound-client.js +312 -0
- package/core/rpc/rpc-outbound.js +312 -0
- package/core/rpc/rpc-subject-server.js +312 -0
- package/core/rpc/rpc.js +312 -0
- package/core/rpc/seek/rpc-seek-client.js +312 -0
- package/core/rpc/seek/rpc-seek-handler.js +315 -0
- package/core/rpc/seek/rpc-seek-model.js +312 -0
- package/core/rpc/settings/rpc-settings-client.js +315 -0
- package/core/rpc/settings/rpc-settings-handler.js +312 -0
- package/core/rpc/settings/rpc-settings-model.js +312 -0
- package/core/rpc/settings/rpc-settings-subject-server.js +312 -0
- package/core/rpc/shell-navigate/rpc-shell-navigate-client.js +312 -0
- package/core/rpc/shell-navigate/rpc-shell-navigate-handler.js +312 -0
- package/core/rpc/shell-navigate/rpc-shell-navigate-model.js +312 -0
- package/core/rpc/shell-navigate/rpc-shell-navigate-subject-server.js +312 -0
- package/core/rpc/sme-extension/rpc-sme-extension-model.js +315 -0
- package/core/rpc/sme-extension/rpc-sme-extension-request-client.js +312 -0
- package/core/rpc/sme-extension/rpc-sme-extension-request-handler.js +312 -0
- package/core/rpc/sme-extension/rpc-sme-extension-request-subject-server.js +312 -0
- package/core/rpc/sme-extension/rpc-sme-extension-response-client.js +312 -0
- package/core/rpc/sme-extension/rpc-sme-extension-response-handler.js +312 -0
- package/core/rpc/telemetry/rpc-telemetry-client.js +312 -0
- package/core/rpc/telemetry/rpc-telemetry-handler.js +315 -0
- package/core/rpc/telemetry/rpc-telemetry-model.js +312 -0
- package/core/rpc/telemetry/rpc-telemetry-subject-server.js +312 -0
- package/core/rpc/update-data/rpc-update-data-client.js +312 -0
- package/core/rpc/update-data/rpc-update-data-handler.js +312 -0
- package/core/rpc/update-data/rpc-update-data-model.js +312 -0
- package/core/rpc/update-data/rpc-update-data-subject-server.js +312 -0
- package/core/rpc/update-theme/rpc-observable-update-theme-client.js +312 -0
- package/core/rpc/update-theme/rpc-observable-update-theme-model.js +312 -0
- package/core/rpc/update-theme/rpc-observable-update-theme-server.js +312 -0
- package/core/rpc/work-item/rpc-work-item-client.js +312 -0
- package/core/rpc/work-item/rpc-work-item-handler.js +312 -0
- package/core/rpc/work-item/rpc-work-item-model.js +312 -0
- package/core/rpc/work-item/rpc-work-item-subject-server.js +312 -0
- package/core/rpc/work-item-find/rpc-work-item-find-client.js +312 -0
- package/core/rpc/work-item-find/rpc-work-item-find-handler.js +312 -0
- package/core/rpc/work-item-find/rpc-work-item-find-model.js +312 -0
- package/core/rpc/work-item-find/rpc-work-item-find-subject-server.js +312 -0
- package/core/security/active-connection.js +312 -0
- package/core/security/authorization-manager.js +312 -0
- package/core/security/connection-manager-settings/common-connection-settings.js +315 -0
- package/core/security/connection-manager-settings/connection-settings.js +312 -0
- package/core/security/connection-manager.js +312 -0
- package/core/security/connection-stream.js +312 -0
- package/core/security/connection.js +312 -0
- package/core/security/credssp-manager.js +312 -0
- package/core/security/sign-on-manager.js +312 -0
- package/core/security/tag-manager.js +312 -0
- package/core/security/tool-condition-validator.js +312 -0
- package/core/security/tool-connection-query.js +312 -0
- package/core/security/user-principal.js +312 -0
- package/core/shared/cluster-inventory/cluster-inventory-cache.js +312 -0
- package/core/shared/cluster-inventory/cluster-inventory.js +312 -0
- package/core/shared/cluster-inventory/cluster-node-inventory.js +312 -0
- package/core/shared/gateway-inventory/gateway-inventory-cache.js +312 -0
- package/core/shared/gateway-inventory/gateway-inventory-detail-cache.js +312 -0
- package/core/shared/gateway-inventory/gateway-inventory-detail.js +312 -0
- package/core/shared/gateway-inventory/gateway-inventory.js +312 -0
- package/core/shared/inventory-query-caches.js +312 -0
- package/core/shared/server-inventory/server-inventory-cache.js +312 -0
- package/core/shared/server-inventory/server-inventory-detail-cache.js +312 -0
- package/core/shared/server-inventory/server-inventory-detail.js +315 -0
- package/core/shared/server-inventory/server-inventory.js +312 -0
- package/core/shared/shared-cache.js +312 -0
- package/core/shared/tool-inventory/tool-inventory-cache.js +312 -0
- package/core/shared/tool-inventory/tool-inventory.js +312 -0
- package/core/special.js +315 -0
- package/core/test-utilities/accessibility-tester.js +312 -0
- package/core/test-utilities/console.mock.js +312 -0
- package/core/test-utilities/jasmine-axe-matcher.js +312 -0
- package/core/test-utilities/wait-async.js +312 -0
- package/core/test.js +312 -0
- package/core/testing.js +312 -0
- package/core/workflow/persistent-local-storage.js +312 -0
- package/core/workflow/persistent-work-item-apply-state.js +316 -0
- package/core/workflow/persistent-work-item-state.js +312 -0
- package/core/workflow/persistent-work-item.js +315 -0
- package/core/workflow/persistent-workflow-builder.js +312 -0
- package/core/workflow/persistent-workflow-context.js +312 -0
- package/core/workflow/persistent-workflow-runner.js +312 -0
- package/core/workflow/persistent-workflow-snapshot.js +312 -0
- package/core/workflow/persistent-workflow-store.js +312 -0
- package/core/workflow/persistent-workflow.js +312 -0
- package/package.json +11 -9
- package/styles/css/main-v2.css +1 -1
- package/styles/fonts/SegoeUI/Bold/SegoeUIBold-5.27.woff +0 -0
- package/styles/fonts/SegoeUI/Light/SegoeUILight-5.27.woff +0 -0
- package/styles/fonts/SegoeUI/Normal/SegoeUI-5.27.woff +0 -0
- package/styles/fonts/SegoeUI/SemiBold/SegoeUISemiBold-5.27.woff +0 -0
- package/styles/fonts/SegoeUI/SemiLight/SegoeUISemiLight-5.27.woff +0 -0
- package/styles/fonts/ServMDL2/ServMDL2-4.66.woff +0 -0
- package/tools/build/webpack/index-html.transform.js +312 -0
- package/tools/build/webpack/shell.index-html.transform.js +312 -0
- package/tools/build/webpack/shell.webpack.config.js +312 -0
- package/tools/build/webpack/webpack.config.js +312 -0
- package/tools/code-formatter/.eslintrc.base.json +3 -1
- package/tools/code-formatter/lint.d.ts.map +1 -1
- package/tools/code-formatter/lint.js +319 -1
- package/tools/code-formatter/lint.js.map +1 -1
- package/tools/code-formatter/utilities.d.ts +7 -0
- package/tools/code-formatter/utilities.d.ts.map +1 -0
- package/tools/code-formatter/utilities.js +395 -0
- package/tools/code-formatter/utilities.js.map +1 -0
- package/tools/gulp-doc-generator/index.js +312 -0
- package/tools/gulp-manifest-resource/index.js +312 -0
- package/tools/gulp-manifest-validator/index.js +312 -0
- package/tools/gulp-merge-json-in-folders/index.js +312 -0
- package/tools/gulp-merge-json-in-folders/json-merge.js +312 -0
- package/tools/gulp-ps-cim/index.js +315 -0
- package/tools/gulp-ps-code/index.d.ts.map +1 -1
- package/tools/gulp-ps-code/index.js +323 -2
- package/tools/gulp-ps-code/index.js.map +1 -1
- package/tools/gulp-ps-code/ps-code-convert.js +312 -0
- package/tools/gulp-ps-manifest/index.js +312 -0
- package/tools/gulp-ps-module/index.d.ts.map +1 -1
- package/tools/gulp-ps-module/index.js +327 -3
- package/tools/gulp-ps-module/index.js.map +1 -1
- package/tools/gulp-ps-resjson/index.js +315 -0
- package/tools/gulp-resjson/index.js +315 -0
- package/tools/gulp-resjson/resjson-convert.js +312 -0
- package/tools/gulp-schema-form/index.js +312 -0
- package/tools/gulp-svg-code/index.js +312 -0
- package/tools/gulp-svg-code/svg-code-convert.js +312 -0
- package/tools/gulp-update-notes-resource/index.d.ts.map +1 -1
- package/tools/gulp-update-notes-resource/index.js +316 -4
- package/tools/gulp-update-notes-resource/index.js.map +1 -1
- package/tools/module-template/.eslintrc.json +3 -0
- package/tools/module-template/build/increment-package-version.ps1 +216 -0
- package/tools/module-template/build/push-incremented-version.ps1 +216 -1
- package/tools/module-template/build/update-powershell-code.ps1 +216 -0
- package/tools/module-template/gulpfile.ts/common/clean.ts +2 -0
- package/tools/module-template/gulpfile.ts/common/pack.ts +17 -5
- package/tools/module-template/gulpfile.ts/common/powershell.ts +40 -2
- package/tools/module-template/gulpfile.ts/common/utilities.ts +1 -0
- package/tools/pack-nuget/index.d.ts.map +1 -1
- package/tools/pack-nuget/index.js +321 -3
- package/tools/pack-nuget/index.js.map +1 -1
- package/tools/scripts/Invoke-PesterTest.ps1 +216 -0
- package/tools/scripts/New-ExtensionPackage.ps1 +373 -6
- package/tools/scripts/Search-NonAsciiText.ps1 +216 -0
- package/tools/scripts/package-information/README.md +3 -0
- package/tools/scripts/package-information/ms-logo.png +0 -0
- package/tools/test-runner/index.js +312 -0
- package/tools/utilities/index.js +312 -0
- package/tools/wac-cli/src/angular15/configs/angular-json-config.js +312 -0
- package/tools/wac-cli/src/angular15/configs/ci-build-yml-config.js +315 -0
- package/tools/wac-cli/src/angular15/configs/config.js +312 -0
- package/tools/wac-cli/src/angular15/configs/eslint-auto-fix-config.d.ts +9 -0
- package/tools/wac-cli/src/angular15/configs/eslint-auto-fix-config.d.ts.map +1 -0
- package/tools/wac-cli/src/angular15/configs/eslint-auto-fix-config.js +328 -0
- package/tools/wac-cli/src/angular15/configs/eslint-auto-fix-config.js.map +1 -0
- package/tools/wac-cli/src/angular15/configs/git-ignore-config.js +312 -0
- package/tools/wac-cli/src/angular15/configs/jasmine-test-config.js +315 -0
- package/tools/wac-cli/src/angular15/configs/package-json-config.js +312 -0
- package/tools/wac-cli/src/angular15/configs/replace-config.js +315 -0
- package/tools/wac-cli/src/angular15/configs/tsconfig-config.js +312 -0
- package/tools/wac-cli/src/angular15/configs/ui-test-automation-lagacy-config.js +312 -0
- package/tools/wac-cli/src/angular15/main.d.ts +19 -3
- package/tools/wac-cli/src/angular15/main.d.ts.map +1 -1
- package/tools/wac-cli/src/angular15/main.js +353 -7
- package/tools/wac-cli/src/angular15/main.js.map +1 -1
- package/tools/wac-cli/src/angular15/upgrader/angular-json-upgrader.js +316 -0
- package/tools/wac-cli/src/angular15/upgrader/audit/ajax-response-updater.js +312 -0
- package/tools/wac-cli/src/angular15/upgrader/audit/css-syntax-error-updater.js +312 -0
- package/tools/wac-cli/src/angular15/upgrader/audit/declare-override-updater.js +312 -0
- package/tools/wac-cli/src/angular15/upgrader/audit/error-updater-angular15.js +312 -0
- package/tools/wac-cli/src/angular15/upgrader/audit/form-control-updater.js +312 -0
- package/tools/wac-cli/src/angular15/upgrader/audit/iif-updater-util.js +312 -0
- package/tools/wac-cli/src/angular15/upgrader/audit/load-children-callback-updater.js +315 -0
- package/tools/wac-cli/src/angular15/upgrader/audit/log-parser.js +312 -0
- package/tools/wac-cli/src/angular15/upgrader/audit/observable-throw-updater.js +312 -0
- package/tools/wac-cli/src/angular15/upgrader/audit/parameter-count-violation-updater.js +312 -0
- package/tools/wac-cli/src/angular15/upgrader/audit/string-replace-updater.js +312 -0
- package/tools/wac-cli/src/angular15/upgrader/audit/subjuct-next-updater-util.js +312 -0
- package/tools/wac-cli/src/angular15/upgrader/ci-build-yml-upgrader.js +312 -0
- package/tools/wac-cli/src/angular15/upgrader/eslint-auto-fix-upgrader.d.ts +18 -0
- package/tools/wac-cli/src/angular15/upgrader/eslint-auto-fix-upgrader.d.ts.map +1 -0
- package/tools/wac-cli/src/angular15/upgrader/eslint-auto-fix-upgrader.js +361 -0
- package/tools/wac-cli/src/angular15/upgrader/eslint-auto-fix-upgrader.js.map +1 -0
- package/tools/wac-cli/src/angular15/upgrader/file-replacement-upgrader.js +312 -0
- package/tools/wac-cli/src/angular15/upgrader/git-ignore-upgrader.js +312 -0
- package/tools/wac-cli/src/angular15/upgrader/jasmine-test-upgrader.js +312 -0
- package/tools/wac-cli/src/angular15/upgrader/package-json-upgrader.js +312 -0
- package/tools/wac-cli/src/angular15/upgrader/remove-upgrader.js +315 -0
- package/tools/wac-cli/src/angular15/upgrader/replace-upgrader.js +312 -0
- package/tools/wac-cli/src/angular15/upgrader/tsconfig-upgrader.js +312 -0
- package/tools/wac-cli/src/angular15/upgrader/ui-test-automation-legacy-upgrader.js +312 -0
- package/tools/wac-cli/src/angular15/upgrader/version-json-upgrader.js +312 -0
- package/tools/wac-cli/src/angular15/utils/add-item.js +312 -0
- package/tools/wac-cli/src/angular15/utils/command-runner.js +312 -0
- package/tools/wac-cli/src/angular15/utils/file-comparison.js +315 -0
- package/tools/wac-cli/src/angular15/utils/file-replacement.js +312 -0
- package/tools/wac-cli/src/angular15/utils/file-writer.js +312 -0
- package/tools/wac-cli/src/angular15/utils/logger.js +312 -0
- package/tools/wac-cli/src/angular15/utils/main-debugger.js +312 -0
- package/tools/wac-cli/src/angular15/utils/relative-path.js +312 -0
- package/tools/wac-cli/src/angular15/utils/remove-item.js +312 -0
- package/tools/wac-cli/src/angular15/utils/space-generator.js +312 -0
- package/tools/wac-cli/src/angular15/utils/update-shell-references.js +316 -0
- package/tools/wac-cli/src/common.js +312 -0
- package/tools/wac-cli/src/create/main.js +312 -0
- package/tools/wac-cli/src/eslint/main.js +312 -0
- package/tools/wac-cli/src/index.js +312 -0
- package/tools/wac-cli/src/upgrade/error-updater.js +312 -0
- package/tools/wac-cli/src/upgrade/error-updaters/component-selector-updater.js +315 -0
- package/tools/wac-cli/src/upgrade/error-updaters/only-arrow-functions-updater.js +315 -0
- package/tools/wac-cli/src/upgrade/error-updaters/updater-lookup.js +312 -0
- package/tools/wac-cli/src/upgrade/file-updater.js +312 -0
- package/tools/wac-cli/src/upgrade/get-files.js +312 -0
- package/tools/wac-cli/src/upgrade/main.js +312 -0
- package/tools/wac-cli/src/upgrade/models/error-result.js +312 -0
- package/tools/wac-cli/src/upgrade/models/updater-interface.js +312 -0
- package/tools/wac-cli/src/upgrade/package-updater.js +312 -0
- package/tools/wac-cli/templates/wac-template/src/favicon.ico +0 -0
- package/tools/wac-cli/templates/wac-template/src/karma.conf.js +312 -0
- package/tools/wac-cli/templates/wac-template/src/resources/scripts/Get-Error.ps1 +216 -0
- package/tools/wac-cli/templates/wac-template/src/resources/scripts/Get-Exception.ps1 +216 -0
- package/tools/wac-cli/templates/wac-template/src/resources/scripts/Get-Process.ps1 +216 -1
- package/tools/wac-cli/templates/wac-template/src/resources/scripts/Get-Service.ps1 +216 -1
- package/tools/wac-cli/templates/wac-template/src/resources/scripts/Get-WinRmState.ps1 +216 -1
- package/core/data/extension-broker/snap-in-listener.d.ts.map +0 -1
- package/core/data/extension-broker/snap-in-listener.js +0 -73
- package/core/data/extension-broker/snap-in-listener.js.map +0 -1
- package/microsoft-windows-admin-center-sdk-4.123.0.tgz +0 -0
|
@@ -163,6 +163,9 @@ function PropertyGridComponent_ng_template_10_Template(rf, ctx) { if (rf & 1) {
|
|
|
163
163
|
i0.ɵɵtemplate(2, PropertyGridComponent_ng_template_10_span_2_Template, 2, 1, "span", 25);
|
|
164
164
|
i0.ɵɵelementStart(3, "a", 28);
|
|
165
165
|
i0.ɵɵtext(4);
|
|
166
|
+
i0.ɵɵelementEnd();
|
|
167
|
+
i0.ɵɵelementStart(5, "span", 29);
|
|
168
|
+
i0.ɵɵtext(6);
|
|
166
169
|
i0.ɵɵelementEnd()();
|
|
167
170
|
} if (rf & 2) {
|
|
168
171
|
const item_r35 = ctx.$implicit;
|
|
@@ -170,14 +173,18 @@ function PropertyGridComponent_ng_template_10_Template(rf, ctx) { if (rf & 1) {
|
|
|
170
173
|
const ctx_r9 = i0.ɵɵnextContext();
|
|
171
174
|
const _r12 = i0.ɵɵreference(15);
|
|
172
175
|
i0.ɵɵadvance(1);
|
|
173
|
-
i0.ɵɵproperty("ngTemplateOutlet", _r12)("ngTemplateOutletContext", i0.ɵɵpureFunction2(
|
|
176
|
+
i0.ɵɵproperty("ngTemplateOutlet", _r12)("ngTemplateOutletContext", i0.ɵɵpureFunction2(8, _c4, item_r35, i_r36));
|
|
174
177
|
i0.ɵɵadvance(1);
|
|
175
178
|
i0.ɵɵproperty("ngIf", item_r35.prefixString);
|
|
176
179
|
i0.ɵɵadvance(1);
|
|
177
180
|
i0.ɵɵproperty("routerLink", item_r35.link);
|
|
178
|
-
i0.ɵɵattribute("aria-
|
|
181
|
+
i0.ɵɵattribute("aria-describedby", ctx_r9.idBag.detailsSpan + i_r36);
|
|
179
182
|
i0.ɵɵadvance(1);
|
|
180
183
|
i0.ɵɵtextInterpolate(item_r35.value);
|
|
184
|
+
i0.ɵɵadvance(1);
|
|
185
|
+
i0.ɵɵproperty("id", ctx_r9.idBag.detailsSpan + i_r36);
|
|
186
|
+
i0.ɵɵadvance(1);
|
|
187
|
+
i0.ɵɵtextInterpolate(ctx_r9.getInternalLinkDescription(item_r35));
|
|
181
188
|
} }
|
|
182
189
|
function PropertyGridComponent_ng_template_12_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
183
190
|
i0.ɵɵelementContainer(0);
|
|
@@ -195,8 +202,11 @@ function PropertyGridComponent_ng_template_12_Template(rf, ctx) { if (rf & 1) {
|
|
|
195
202
|
i0.ɵɵelementStart(0, "p");
|
|
196
203
|
i0.ɵɵtemplate(1, PropertyGridComponent_ng_template_12_ng_container_1_Template, 1, 0, "ng-container", 19);
|
|
197
204
|
i0.ɵɵtemplate(2, PropertyGridComponent_ng_template_12_span_2_Template, 2, 1, "span", 25);
|
|
198
|
-
i0.ɵɵelementStart(3, "a",
|
|
205
|
+
i0.ɵɵelementStart(3, "a", 30);
|
|
199
206
|
i0.ɵɵtext(4);
|
|
207
|
+
i0.ɵɵelementEnd();
|
|
208
|
+
i0.ɵɵelementStart(5, "span", 29);
|
|
209
|
+
i0.ɵɵtext(6);
|
|
200
210
|
i0.ɵɵelementEnd()();
|
|
201
211
|
} if (rf & 2) {
|
|
202
212
|
const item_r40 = ctx.$implicit;
|
|
@@ -204,14 +214,18 @@ function PropertyGridComponent_ng_template_12_Template(rf, ctx) { if (rf & 1) {
|
|
|
204
214
|
const ctx_r11 = i0.ɵɵnextContext();
|
|
205
215
|
const _r12 = i0.ɵɵreference(15);
|
|
206
216
|
i0.ɵɵadvance(1);
|
|
207
|
-
i0.ɵɵproperty("ngTemplateOutlet", _r12)("ngTemplateOutletContext", i0.ɵɵpureFunction2(
|
|
217
|
+
i0.ɵɵproperty("ngTemplateOutlet", _r12)("ngTemplateOutletContext", i0.ɵɵpureFunction2(8, _c4, item_r40, i_r41));
|
|
208
218
|
i0.ɵɵadvance(1);
|
|
209
219
|
i0.ɵɵproperty("ngIf", item_r40.prefixString);
|
|
210
220
|
i0.ɵɵadvance(1);
|
|
211
221
|
i0.ɵɵproperty("href", item_r40.link, i0.ɵɵsanitizeUrl);
|
|
212
|
-
i0.ɵɵattribute("aria-
|
|
222
|
+
i0.ɵɵattribute("aria-describedby", ctx_r11.idBag.detailsSpan + i_r41);
|
|
213
223
|
i0.ɵɵadvance(1);
|
|
214
224
|
i0.ɵɵtextInterpolate(item_r40.value);
|
|
225
|
+
i0.ɵɵadvance(1);
|
|
226
|
+
i0.ɵɵproperty("id", ctx_r11.idBag.detailsSpan + i_r41);
|
|
227
|
+
i0.ɵɵadvance(1);
|
|
228
|
+
i0.ɵɵtextInterpolate(ctx_r11.getExternalLinkDescription(item_r40));
|
|
215
229
|
} }
|
|
216
230
|
function PropertyGridComponent_ng_template_14_span_0_Template(rf, ctx) { if (rf & 1) {
|
|
217
231
|
i0.ɵɵelement(0, "span");
|
|
@@ -220,14 +234,14 @@ function PropertyGridComponent_ng_template_14_span_0_Template(rf, ctx) { if (rf
|
|
|
220
234
|
i0.ɵɵclassMapInterpolate1("sme-margin-right-xs sme-icon ", item_r45.iconClass, "");
|
|
221
235
|
} }
|
|
222
236
|
function PropertyGridComponent_ng_template_14_sme_status_icon_1_Template(rf, ctx) { if (rf & 1) {
|
|
223
|
-
i0.ɵɵelement(0, "sme-status-icon",
|
|
237
|
+
i0.ɵɵelement(0, "sme-status-icon", 33);
|
|
224
238
|
} if (rf & 2) {
|
|
225
239
|
const item_r45 = i0.ɵɵnextContext().$implicit;
|
|
226
240
|
i0.ɵɵproperty("status", item_r45.status);
|
|
227
241
|
} }
|
|
228
242
|
function PropertyGridComponent_ng_template_14_Template(rf, ctx) { if (rf & 1) {
|
|
229
|
-
i0.ɵɵtemplate(0, PropertyGridComponent_ng_template_14_span_0_Template, 1, 3, "span",
|
|
230
|
-
i0.ɵɵtemplate(1, PropertyGridComponent_ng_template_14_sme_status_icon_1_Template, 1, 1, "sme-status-icon",
|
|
243
|
+
i0.ɵɵtemplate(0, PropertyGridComponent_ng_template_14_span_0_Template, 1, 3, "span", 31);
|
|
244
|
+
i0.ɵɵtemplate(1, PropertyGridComponent_ng_template_14_sme_status_icon_1_Template, 1, 1, "sme-status-icon", 32);
|
|
231
245
|
} if (rf & 2) {
|
|
232
246
|
const item_r45 = ctx.$implicit;
|
|
233
247
|
i0.ɵɵproperty("ngIf", !!item_r45.iconClass);
|
|
@@ -363,6 +377,12 @@ export class PropertyGridComponent extends CoreBaseComponent {
|
|
|
363
377
|
item.loading = false;
|
|
364
378
|
}
|
|
365
379
|
}
|
|
380
|
+
getInternalLinkDescription(item) {
|
|
381
|
+
return this.strings.MsftSmeShell.Angular.PropertyGrid.InternalLink.label.format(item.link);
|
|
382
|
+
}
|
|
383
|
+
getExternalLinkDescription(item) {
|
|
384
|
+
return this.strings.MsftSmeShell.Angular.PropertyGrid.ExternalLink.label.format(item.link);
|
|
385
|
+
}
|
|
366
386
|
/**
|
|
367
387
|
* Creates the idBag used by this component to store unique element ids.
|
|
368
388
|
* id values will be assigned be the @see BaseComponent super class.
|
|
@@ -404,7 +424,7 @@ export class PropertyGridComponent extends CoreBaseComponent {
|
|
|
404
424
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.externalLinkTemplate = _t.first);
|
|
405
425
|
} }, inputs: { orientation: "orientation" }, outputs: { layoutChanged: "layoutChanged", windowBreakpointChanged: "windowBreakpointChanged" }, features: [i0.ɵɵProvidersFeature([
|
|
406
426
|
{ provide: SME_LAYOUT_PROVIDER, useExisting: forwardRef((() => PropertyGridComponent)) }
|
|
407
|
-
]), i0.ɵɵInheritDefinitionFeature, i0.ɵɵNgOnChangesFeature], decls: 16, vars: 7, consts: [[1, "sme-position-inset-none", "sme-position-stretch-h", 3, "padLastItem", "oneColumn"], ["layout", ""], ["name", "narrow", 3, "until", "columns"], ["name", "medium", 3, "until", "columns", 4, "ngIf"], ["name", "wide", 3, "columns", 4, "ngIf"], [3, "columnSpan", "maxWidth", 4, "ngFor", "ngForOf"], ["readonlyTemplate", ""], ["actionLinkTemplate", ""], ["internalLinkTemplate", ""], ["externalLinkTemplate", ""], ["iconTemplate", ""], ["name", "medium", 3, "until", "columns"], ["name", "wide", 3, "columns"], [3, "columnSpan", "maxWidth"], ["tabindex", "0", "aria-live", "polite", "aria-atomic", "true", "smeTooltipZone", "", 1, "sme-property-grid-item"], ["zone", "smeTooltipZone"], [1, "sme-arrange-stack-h"], ["class", "sme-position-flex-none sme-icon sme-icon-info sme-info-bubble sme-margin-left-xs", "aria-hidden", "true", "tabindex", "0", 3, "title", "tooltipZone", 4, "ngIf"], [1, "sme-screen-reader"], [4, "ngTemplateOutlet", "ngTemplateOutletContext"], ["aria-hidden", "true", "tabindex", "0", 1, "sme-position-flex-none", "sme-icon", "sme-icon-info", "sme-info-bubble", "sme-margin-left-xs", 3, "title", "tooltipZone"], ["size", "extra-small", 3, "inline", "isBackgroundTransparent", 4, "ngIf"], [4, "ngIf"], ["size", "extra-small", 3, "inline", "isBackgroundTransparent"], [1, "sme-read-only-template"], ["class", "sme-padding-right-xs", 4, "ngIf"], ["tabindex", "0", "role", "link", 1, "sme-link", "sme-focus-zone", "sme-action-link-template", 3, "click"], [1, "sme-padding-right-xs"], ["role", "link", 1, "sme-link", "sme-focus-zone", 3, "routerLink"], ["role", "link", "target", "_blank", 1, "sme-link", "sme-focus-zone", "sme-icon", "sme-icon-after", "sme-icon-openInNewWindow", 3, "href"], [3, "class", 4, "ngIf"], ["class", "sme-layout-inline-block sme-margin-right-xs ", "size", "16px", 3, "status", 4, "ngIf"], ["size", "16px", 1, "sme-layout-inline-block", "sme-margin-right-xs", 3, "status"]], template: function PropertyGridComponent_Template(rf, ctx) { if (rf & 1) {
|
|
427
|
+
]), i0.ɵɵInheritDefinitionFeature, i0.ɵɵNgOnChangesFeature], decls: 16, vars: 7, consts: [[1, "sme-position-inset-none", "sme-position-stretch-h", 3, "padLastItem", "oneColumn"], ["layout", ""], ["name", "narrow", 3, "until", "columns"], ["name", "medium", 3, "until", "columns", 4, "ngIf"], ["name", "wide", 3, "columns", 4, "ngIf"], [3, "columnSpan", "maxWidth", 4, "ngFor", "ngForOf"], ["readonlyTemplate", ""], ["actionLinkTemplate", ""], ["internalLinkTemplate", ""], ["externalLinkTemplate", ""], ["iconTemplate", ""], ["name", "medium", 3, "until", "columns"], ["name", "wide", 3, "columns"], [3, "columnSpan", "maxWidth"], ["tabindex", "0", "aria-live", "polite", "aria-atomic", "true", "smeTooltipZone", "", 1, "sme-property-grid-item"], ["zone", "smeTooltipZone"], [1, "sme-arrange-stack-h"], ["class", "sme-position-flex-none sme-icon sme-icon-info sme-info-bubble sme-margin-left-xs", "aria-hidden", "true", "tabindex", "0", 3, "title", "tooltipZone", 4, "ngIf"], [1, "sme-screen-reader"], [4, "ngTemplateOutlet", "ngTemplateOutletContext"], ["aria-hidden", "true", "tabindex", "0", 1, "sme-position-flex-none", "sme-icon", "sme-icon-info", "sme-info-bubble", "sme-margin-left-xs", 3, "title", "tooltipZone"], ["size", "extra-small", 3, "inline", "isBackgroundTransparent", 4, "ngIf"], [4, "ngIf"], ["size", "extra-small", 3, "inline", "isBackgroundTransparent"], [1, "sme-read-only-template"], ["class", "sme-padding-right-xs", 4, "ngIf"], ["tabindex", "0", "role", "link", 1, "sme-link", "sme-focus-zone", "sme-action-link-template", 3, "click"], [1, "sme-padding-right-xs"], ["role", "link", 1, "sme-link", "sme-focus-zone", 3, "routerLink"], [1, "sme-screen-reader", 3, "id"], ["role", "link", "target", "_blank", 1, "sme-link", "sme-focus-zone", "sme-icon", "sme-icon-after", "sme-icon-openInNewWindow", 3, "href"], [3, "class", 4, "ngIf"], ["class", "sme-layout-inline-block sme-margin-right-xs ", "size", "16px", 3, "status", 4, "ngIf"], ["size", "16px", 1, "sme-layout-inline-block", "sme-margin-right-xs", 3, "status"]], template: function PropertyGridComponent_Template(rf, ctx) { if (rf & 1) {
|
|
408
428
|
i0.ɵɵelementStart(0, "sme-layout", 0, 1);
|
|
409
429
|
i0.ɵɵelement(2, "sme-layout-definition", 2);
|
|
410
430
|
i0.ɵɵtemplate(3, PropertyGridComponent_sme_layout_definition_3_Template, 1, 2, "sme-layout-definition", 3);
|
|
@@ -413,8 +433,8 @@ export class PropertyGridComponent extends CoreBaseComponent {
|
|
|
413
433
|
i0.ɵɵelementEnd();
|
|
414
434
|
i0.ɵɵtemplate(6, PropertyGridComponent_ng_template_6_Template, 2, 2, "ng-template", null, 6, i0.ɵɵtemplateRefExtractor);
|
|
415
435
|
i0.ɵɵtemplate(8, PropertyGridComponent_ng_template_8_Template, 5, 9, "ng-template", null, 7, i0.ɵɵtemplateRefExtractor);
|
|
416
|
-
i0.ɵɵtemplate(10, PropertyGridComponent_ng_template_10_Template,
|
|
417
|
-
i0.ɵɵtemplate(12, PropertyGridComponent_ng_template_12_Template,
|
|
436
|
+
i0.ɵɵtemplate(10, PropertyGridComponent_ng_template_10_Template, 7, 11, "ng-template", null, 8, i0.ɵɵtemplateRefExtractor);
|
|
437
|
+
i0.ɵɵtemplate(12, PropertyGridComponent_ng_template_12_Template, 7, 11, "ng-template", null, 9, i0.ɵɵtemplateRefExtractor);
|
|
418
438
|
i0.ɵɵtemplate(14, PropertyGridComponent_ng_template_14_Template, 2, 2, "ng-template", null, 10, i0.ɵɵtemplateRefExtractor);
|
|
419
439
|
} if (rf & 2) {
|
|
420
440
|
i0.ɵɵproperty("padLastItem", true)("oneColumn", ctx.orientation === "vertical");
|
|
@@ -431,7 +451,7 @@ export class PropertyGridComponent extends CoreBaseComponent {
|
|
|
431
451
|
type: Component,
|
|
432
452
|
args: [{ selector: 'sme-property-grid', providers: [
|
|
433
453
|
{ provide: SME_LAYOUT_PROVIDER, useExisting: forwardRef((() => PropertyGridComponent)) }
|
|
434
|
-
], template: "<sme-layout #layout [padLastItem]=\"true\" class=\"sme-position-inset-none sme-position-stretch-h\" [oneColumn]=\"orientation === 'vertical'\">\r\n <sme-layout-definition name=\"narrow\" [until]=\"layoutItemWidth\" [columns]=\"1\"></sme-layout-definition>\r\n <sme-layout-definition *ngIf=\"orientation !== 'vertical'\" name=\"medium\" [until]=\"layoutItemWidth*2\" [columns]=\"2\"></sme-layout-definition>\r\n <sme-layout-definition *ngIf=\"orientation !== 'vertical'\" name=\"wide\" [columns]=\"3\"></sme-layout-definition>\r\n <sme-layout-item *ngFor=\"let item of items; index as i\" [columnSpan]=\"item.columnSpan\"\r\n [maxWidth]=\"orientation === 'vertical' ? null : item.columnSpan * layoutItemWidth\">\r\n <div class=\"sme-property-grid-item\" tabindex=\"0\" aria-live=\"polite\" aria-atomic=\"true\" #zone=\"smeTooltipZone\" smeTooltipZone>\r\n <label class=\"sme-arrange-stack-h\">\r\n <span>{{ item.label }}</span>\r\n <span *ngIf=\"item.tooltip\" class=\"sme-position-flex-none sme-icon sme-icon-info sme-info-bubble sme-margin-left-xs\"\r\n [title]=\"item.tooltip\" [tooltipZone]=\"zone\" aria-hidden=\"true\" tabindex=\"0\"></span>\r\n <!-- in scan mode screen reader does not focus on the info icon properly to read the title -->\r\n <span class=\"sme-screen-reader\">{{ item.tooltip }}</span>\r\n </label>\r\n <ng-container *ngTemplateOutlet=\"getTemplate(item);context:{$implicit:item, index: i}\"></ng-container>\r\n </div>\r\n </sme-layout-item>\r\n</sme-layout>\r\n\r\n<!-- Read only -->\r\n<ng-template #readonlyTemplate let-item let-i=\"index\">\r\n <sme-loading-wheel *ngIf=\"item.loading && item.isAsync\" size=\"extra-small\" [inline]=\"true\" [isBackgroundTransparent]=\"true\"></sme-loading-wheel>\r\n <ng-container *ngIf=\"!item.loading || !item.isAsync\">\r\n <p class=\"sme-read-only-template\" [attr.aria-labelledby]=\"idBag.labelSpan + i\" [attr.aria-describedby]=\"idBag.detailsSpan + i\">\r\n <ng-container *ngTemplateOutlet=\"iconTemplate;context:{$implicit:item, index: i}\"></ng-container>\r\n <span *ngIf=\"!item.link && !item.action\">{{ stringifyValue(item.value) }}</span>\r\n </p>\r\n </ng-container>\r\n</ng-template>\r\n\r\n<!-- Action link (role button) -->\r\n<ng-template #actionLinkTemplate let-item let-i=\"index\">\r\n <p>\r\n <ng-container *ngTemplateOutlet=\"iconTemplate;context:{$implicit:item, index: i}\"></ng-container>\r\n <span *ngIf=\"item.prefixString\" class=\"sme-padding-right-xs\">{{ item.prefixString }}</span>\r\n <a tabindex=\"0\" class=\"sme-link sme-focus-zone sme-action-link-template\" role=\"link\" (click)=\"item.action(item)\"\r\n [attr.aria-labelledby]=\"(idBag.labelSpan + i) + ' ' + (idBag.valueSpan + i)\"\r\n [attr.aria-describedby]=\"idBag.detailsSpan + i\">{{ item.value }}</a>\r\n </p>\r\n</ng-template>\r\n\r\n<!-- Internal link -->\r\n<ng-template #internalLinkTemplate let-item let-i=\"index\">\r\n <p>\r\n <ng-container *ngTemplateOutlet=\"iconTemplate;context:{$implicit:item, index: i}\"></ng-container>\r\n <span *ngIf=\"item.prefixString\" class=\"sme-padding-right-xs\">{{ item.prefixString }}</span>\r\n <a class=\"sme-link sme-focus-zone\" role=\"link\" [routerLink]=\"item.link\"
|
|
454
|
+
], template: "<sme-layout #layout [padLastItem]=\"true\" class=\"sme-position-inset-none sme-position-stretch-h\" [oneColumn]=\"orientation === 'vertical'\">\r\n <sme-layout-definition name=\"narrow\" [until]=\"layoutItemWidth\" [columns]=\"1\"></sme-layout-definition>\r\n <sme-layout-definition *ngIf=\"orientation !== 'vertical'\" name=\"medium\" [until]=\"layoutItemWidth*2\" [columns]=\"2\"></sme-layout-definition>\r\n <sme-layout-definition *ngIf=\"orientation !== 'vertical'\" name=\"wide\" [columns]=\"3\"></sme-layout-definition>\r\n <sme-layout-item *ngFor=\"let item of items; index as i\" [columnSpan]=\"item.columnSpan\"\r\n [maxWidth]=\"orientation === 'vertical' ? null : item.columnSpan * layoutItemWidth\">\r\n <div class=\"sme-property-grid-item\" tabindex=\"0\" aria-live=\"polite\" aria-atomic=\"true\" #zone=\"smeTooltipZone\" smeTooltipZone>\r\n <label class=\"sme-arrange-stack-h\">\r\n <span>{{ item.label }}</span>\r\n <span *ngIf=\"item.tooltip\" class=\"sme-position-flex-none sme-icon sme-icon-info sme-info-bubble sme-margin-left-xs\"\r\n [title]=\"item.tooltip\" [tooltipZone]=\"zone\" aria-hidden=\"true\" tabindex=\"0\"></span>\r\n <!-- in scan mode screen reader does not focus on the info icon properly to read the title -->\r\n <span class=\"sme-screen-reader\">{{ item.tooltip }}</span>\r\n </label>\r\n <ng-container *ngTemplateOutlet=\"getTemplate(item);context:{$implicit:item, index: i}\"></ng-container>\r\n </div>\r\n </sme-layout-item>\r\n</sme-layout>\r\n\r\n<!-- Read only -->\r\n<ng-template #readonlyTemplate let-item let-i=\"index\">\r\n <sme-loading-wheel *ngIf=\"item.loading && item.isAsync\" size=\"extra-small\" [inline]=\"true\" [isBackgroundTransparent]=\"true\"></sme-loading-wheel>\r\n <ng-container *ngIf=\"!item.loading || !item.isAsync\">\r\n <p class=\"sme-read-only-template\" [attr.aria-labelledby]=\"idBag.labelSpan + i\" [attr.aria-describedby]=\"idBag.detailsSpan + i\">\r\n <ng-container *ngTemplateOutlet=\"iconTemplate;context:{$implicit:item, index: i}\"></ng-container>\r\n <span *ngIf=\"!item.link && !item.action\">{{ stringifyValue(item.value) }}</span>\r\n </p>\r\n </ng-container>\r\n</ng-template>\r\n\r\n<!-- Action link (role button) -->\r\n<ng-template #actionLinkTemplate let-item let-i=\"index\">\r\n <p>\r\n <ng-container *ngTemplateOutlet=\"iconTemplate;context:{$implicit:item, index: i}\"></ng-container>\r\n <span *ngIf=\"item.prefixString\" class=\"sme-padding-right-xs\">{{ item.prefixString }}</span>\r\n <a tabindex=\"0\" class=\"sme-link sme-focus-zone sme-action-link-template\" role=\"link\" (click)=\"item.action(item)\"\r\n [attr.aria-labelledby]=\"(idBag.labelSpan + i) + ' ' + (idBag.valueSpan + i)\"\r\n [attr.aria-describedby]=\"idBag.detailsSpan + i\">{{ item.value }}</a>\r\n </p>\r\n</ng-template>\r\n\r\n<!-- Internal link -->\r\n<ng-template #internalLinkTemplate let-item let-i=\"index\">\r\n <p>\r\n <ng-container *ngTemplateOutlet=\"iconTemplate;context:{$implicit:item, index: i}\"></ng-container>\r\n <span *ngIf=\"item.prefixString\" class=\"sme-padding-right-xs\">{{ item.prefixString }}</span>\r\n <a class=\"sme-link sme-focus-zone\" role=\"link\" [routerLink]=\"item.link\"\r\n [attr.aria-describedby]=\"idBag.detailsSpan + i\">{{ item.value }}</a>\r\n <span class=\"sme-screen-reader\" [id]=\"idBag.detailsSpan + i\">{{ getInternalLinkDescription(item) }}</span>\r\n </p>\r\n</ng-template>\r\n\r\n<!-- External link -->\r\n<ng-template #externalLinkTemplate let-item let-i=\"index\">\r\n <p>\r\n <ng-container *ngTemplateOutlet=\"iconTemplate;context:{$implicit:item, index: i}\"></ng-container>\r\n <span *ngIf=\"item.prefixString\" class=\"sme-padding-right-xs\">{{ item.prefixString }}</span>\r\n <a class=\"sme-link sme-focus-zone sme-icon sme-icon-after sme-icon-openInNewWindow\" role=\"link\" [href]=\"item.link\" target=\"_blank\"\r\n [attr.aria-describedby]=\"idBag.detailsSpan + i\">{{ item.value }}</a>\r\n <span class=\"sme-screen-reader\" [id]=\"idBag.detailsSpan + i\">{{ getExternalLinkDescription(item) }}</span>\r\n </p>\r\n</ng-template>\r\n\r\n<!-- Icon Template -->\r\n<ng-template #iconTemplate let-item let-i=\"index\">\r\n <span *ngIf=\"!!item.iconClass\" class=\"sme-margin-right-xs sme-icon {{item.iconClass}}\"></span>\r\n <sme-status-icon *ngIf=\"item.status !== undefined && item.status !== null && !item.iconClass\" class=\"sme-layout-inline-block sme-margin-right-xs \"\r\n [status]=\"item.status\" size=\"16px\"></sme-status-icon>\r\n</ng-template>\r\n" }]
|
|
435
455
|
}], function () { return [{ type: i0.Injector }, { type: undefined, decorators: [{
|
|
436
456
|
type: SkipSelf
|
|
437
457
|
}, {
|
|
@@ -461,4 +481,4 @@ export class PropertyGridComponent extends CoreBaseComponent {
|
|
|
461
481
|
}], windowBreakpointChanged: [{
|
|
462
482
|
type: Output
|
|
463
483
|
}] }); })();
|
|
464
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydHktZ3JpZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9hbmd1bGFyL3NyYy9jb250cm9scy9wcm9wZXJ0eS1ncmlkL3Byb3BlcnR5LWdyaWQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYW5ndWxhci9zcmMvY29udHJvbHMvcHJvcGVydHktZ3JpZC9wcm9wZXJ0eS1ncmlkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxTQUFTLEVBQ1QsZUFBZSxFQUNmLFlBQVksRUFDWixVQUFVLEVBQ1YsTUFBTSxFQUNOLFFBQVEsRUFDUixLQUFLLEVBRUwsUUFBUSxFQUNSLE1BQU0sRUFDTixTQUFTLEVBRVQsUUFBUSxFQUNSLFdBQVcsRUFDWCxTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDN0QsT0FBTyxFQUFVLG1CQUFtQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDL0QsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDM0UsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLE1BQU0sMkNBQTJDLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7SUNsQjlGLDRDQUEwSTs7O0lBQWxFLGtEQUEyQixjQUFBOzs7SUFDbkcsNENBQTRHOztJQUF0QywyQkFBYTs7O0lBTTdFLDJCQUNxRjs7OztJQUFuRix3Q0FBc0IscUJBQUE7OztJQUkxQix3QkFBc0c7Ozs7SUFWMUcsMkNBQ3FGLGtCQUFBLGdCQUFBLFdBQUE7SUFHekUsWUFBZ0I7SUFBQSxpQkFBTztJQUM3QiwyRkFDcUY7SUFFckYsZ0NBQWdDO0lBQUEsWUFBa0I7SUFBQSxpQkFBTyxFQUFBO0lBRTNELDJHQUFzRztJQUN4RyxpQkFBTSxFQUFBOzs7OztJQVhnRCxnREFB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LE1BQU07dUJBQUMsbUJBQW1CO3dCQXpDNUUsS0FBSztrQkFEWCxlQUFlO21CQUFDLHlCQUF5QjtZQUluQyxnQkFBZ0I7a0JBRHRCLFNBQVM7bUJBQUMsa0JBQWtCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO1lBSXhDLGtCQUFrQjtrQkFEeEIsU0FBUzttQkFBQyxvQkFBb0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7WUFJMUMsb0JBQW9CO2tCQUQxQixTQUFTO21CQUFDLHNCQUFzQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtZQUk1QyxvQkFBb0I7a0JBRDFCLFNBQVM7bUJBQUMsc0JBQXNCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO1lBYzVDLFdBQVc7a0JBRGpCLEtBQUs7WUFPQyxhQUFhO2tCQURuQixNQUFNO1lBT0EsdUJBQXVCO2tCQUQ3QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICAgIENvbXBvbmVudCxcclxuICAgIENvbnRlbnRDaGlsZHJlbixcclxuICAgIEV2ZW50RW1pdHRlcixcclxuICAgIGZvcndhcmRSZWYsXHJcbiAgICBJbmplY3QsXHJcbiAgICBJbmplY3RvcixcclxuICAgIElucHV0LFxyXG4gICAgT25DaGFuZ2VzLFxyXG4gICAgT3B0aW9uYWwsXHJcbiAgICBPdXRwdXQsXHJcbiAgICBRdWVyeUxpc3QsXHJcbiAgICBTaW1wbGVDaGFuZ2VzLFxyXG4gICAgU2tpcFNlbGYsXHJcbiAgICBUZW1wbGF0ZVJlZixcclxuICAgIFZpZXdDaGlsZFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb3JlQmFzZUNvbXBvbmVudCB9IGZyb20gJy4uL2NvbW1vbi9iYXNlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IExheW91dCwgU01FX0xBWU9VVF9QUk9WSURFUiB9IGZyb20gJy4uL2NvbW1vbi9sYXlvdXQnO1xyXG5pbXBvcnQgeyBQcm9wZXJ0eUdyaWRJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi9wcm9wZXJ0eS1ncmlkLWl0ZW0uY29tcG9uZW50JztcclxuaW1wb3J0IHsgUHJvcGVydHlHcmlkUmVzcG9uc2l2ZVdpbmRvd01hbmFnZXIgfSBmcm9tICcuL3Byb3BlcnR5LWdyaWQtcmVzcG9uc2l2ZS13aW5kb3ctbWFuYWdlcic7XHJcblxyXG4vKipcclxuICogVGhlIHBhbmUgb3JpZW50YXRpb24gb2YgdGhlIHNwbGl0IHZpZXcuXHJcbiAqL1xyXG5leHBvcnQgdHlwZSBQcm9wZXJ0eUdyaWRPcmllbnRhdGlvbiA9ICd2ZXJ0aWNhbCcgfCAnaG9yaXpvbnRhbCc7XHJcblxyXG4vKipcclxuICpcclxuICogQHNtZURvYyB7QGxhYmVsIFByb3BlcnR5IEdyaWQgQGlkIHNtZS1wcm9wZXJ0eS1ncmlkLWNvbXBvbmVudH1cclxuICpcclxuICogQG92ZXJ2aWV3XHJcbiAqIEBmaWxlIHtAZmlsZXBhdGggLi9leGFtcGxlcy9vdmVydmlldy5tZH1cclxuICpcclxuICogQGV4YW1wbGUge0BsYWJlbCBCYXNpYyBVc2FnZSBAaWQgYmFzaWMtdXNhZ2V9XHJcbiAqIEBmaWxlIHtAZmlsZW5hbWUgY29tcG9uZW50Lmh0bWwgQGZpbGVwYXRoIC4vZXhhbXBsZXMvYmFzaWMtdXNhZ2UuY29tcG9uZW50Lmh0bWx9XHJcbiAqXHJcbiAqIEBleGFtcGxlIHtAbGFiZWwgVmVydGljYWwgT3JpZW50YXRpb24gQGlkIHZlcnRpY2FsLW9yaWVudGF0aW9ufVxyXG4gKiBAZmlsZSB7QGZpbGVuYW1lIGNvbXBvbmVudC5odG1sIEBmaWxlcGF0aCAuL2V4YW1wbGVzL3ZlcnRpY2FsLW9yaWVudGF0aW9uLmNvbXBvbmVudC5odG1sfVxyXG4gKlxyXG4gKiBAZXhhbXBsZSB7QGxhYmVsIEl0ZW0gd2l0aCBhIExpbmsgQGlkIGxpbmstaXRlbX1cclxuICogQGZpbGUge0BmaWxlbmFtZSBjb21wb25lbnQuaHRtbCBAZmlsZXBhdGggLi9leGFtcGxlcy9saW5rLWl0ZW0uY29tcG9uZW50Lmh0bWx9XHJcbiAqXHJcbiAqIEBleGFtcGxlIHtAbGFiZWwgSXRlbSB3aXRoIGEgVG9vbHRpcCBAaWQgdG9vbHRpcC1pdGVtfVxyXG4gKiBAZmlsZSB7QGZpbGVuYW1lIGNvbXBvbmVudC5odG1sIEBmaWxlcGF0aCAuL2V4YW1wbGVzL3Rvb2x0aXAtaXRlbS5jb21wb25lbnQuaHRtbH1cclxuICpcclxuICogQGV4YW1wbGUge0BsYWJlbCBJdGVtIHdpdGggYSBBY3Rpb24gQGlkIGFjdGlvbi1pdGVtfVxyXG4gKiBAZmlsZSB7QGZpbGVuYW1lIGNvbXBvbmVudC50cyBAZmlsZXBhdGggLi9leGFtcGxlcy9hY3Rpb24taXRlbS5jb21wb25lbnQudHN9XHJcbiAqIEBmaWxlIHtAZmlsZW5hbWUgY29tcG9uZW50Lmh0bWwgQGZpbGVwYXRoIC4vZXhhbXBsZXMvYWN0aW9uLWl0ZW0uY29tcG9uZW50Lmh0bWx9XHJcbiAqXHJcbiAqIEBleGFtcGxlIHtAbGFiZWwgSXRlbSBTcGFubmluZyBNdWx0aXBsZSBDb2x1bW5zIEBpZCBtdWx0aS1jb2x1bW59XHJcbiAqIEBmaWxlIHtAZmlsZW5hbWUgY29tcG9uZW50Lmh0bWwgQGZpbGVwYXRoIC4vZXhhbXBsZXMvbXVsdGktY29sdW1uLWl0ZW0uY29tcG9uZW50Lmh0bWx9XHJcbiAqXHJcbiAqIEBleGFtcGxlIHtAbGFiZWwgSXRlbXMgd2l0aCBTdGF0dXMgYW5kIEljb25zIEBpZCBzdGF0dXMtYW5kLWljb25zfVxyXG4gKiBAZmlsZSB7QGZpbGVuYW1lIGNvbXBvbmVudC5odG1sIEBmaWxlcGF0aCAuL2V4YW1wbGVzL3N0YXR1cy1pdGVtLmNvbXBvbmVudC5odG1sfVxyXG4gKlxyXG4gKiBAZXhhbXBsZSB7QGxhYmVsIEl0ZW1zIHdpdGggY29tcGxleCB2YWx1ZSB0eXBlcyBAaWQgY29tcGxleC12YWx1ZX1cclxuICogQGZpbGUge0BmaWxlbmFtZSBjb21wb25lbnQuaHRtbCBAZmlsZXBhdGggLi9leGFtcGxlcy9jb21wbGV4LXZhbHVlcy5jb21wb25lbnQuaHRtbH1cclxuICpcclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdzbWUtcHJvcGVydHktZ3JpZCcsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vcHJvcGVydHktZ3JpZC5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBwcm92aWRlcnM6IFtcclxuICAgICAgICB7IHByb3ZpZGU6IFNNRV9MQVlPVVRfUFJPVklERVIsIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFByb3BlcnR5R3JpZENvbXBvbmVudCkgfVxyXG4gICAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUHJvcGVydHlHcmlkQ29tcG9uZW50IGV4dGVuZHMgQ29yZUJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBMYXlvdXQsIE9uQ2hhbmdlcyB7XHJcbiAgICAvKipcclxuICAgICAqIFRoZSBiYXNpYyBjb2x1bW4gd2lkdGggZm9yIHRoZSBwcm9wZXJ0eSBncmlkIGl0ZW1zLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgbGF5b3V0SXRlbVdpZHRoID0gMzAwO1xyXG5cclxuICAgIEBDb250ZW50Q2hpbGRyZW4oUHJvcGVydHlHcmlkSXRlbUNvbXBvbmVudClcclxuICAgIHB1YmxpYyBpdGVtczogUXVlcnlMaXN0PFByb3BlcnR5R3JpZEl0ZW1Db21wb25lbnQ+O1xyXG5cclxuICAgIEBWaWV3Q2hpbGQoJ3JlYWRvbmx5VGVtcGxhdGUnLCB7IHN0YXRpYzogdHJ1ZSB9KVxyXG4gICAgcHVibGljIHJlYWRvbmx5VGVtcGxhdGU6IFRlbXBsYXRlUmVmPFByb3BlcnR5R3JpZEl0ZW1Db21wb25lbnQ+O1xyXG5cclxuICAgIEBWaWV3Q2hpbGQoJ2FjdGlvbkxpbmtUZW1wbGF0ZScsIHsgc3RhdGljOiB0cnVlIH0pXHJcbiAgICBwdWJsaWMgYWN0aW9uTGlua1RlbXBsYXRlOiBUZW1wbGF0ZVJlZjxQcm9wZXJ0eUdyaWRJdGVtQ29tcG9uZW50PjtcclxuXHJcbiAgICBAVmlld0NoaWxkKCdpbnRlcm5hbExpbmtUZW1wbGF0ZScsIHsgc3RhdGljOiB0cnVlIH0pXHJcbiAgICBwdWJsaWMgaW50ZXJuYWxMaW5rVGVtcGxhdGU6IFRlbXBsYXRlUmVmPFByb3BlcnR5R3JpZEl0ZW1Db21wb25lbnQ+O1xyXG5cclxuICAgIEBWaWV3Q2hpbGQoJ2V4dGVybmFsTGlua1RlbXBsYXRlJywgeyBzdGF0aWM6IHRydWUgfSlcclxuICAgIHB1YmxpYyBleHRlcm5hbExpbmtUZW1wbGF0ZTogVGVtcGxhdGVSZWY8UHJvcGVydHlHcmlkSXRlbUNvbXBvbmVudD47XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgc291cmNlIG5hbWUgdG8gdXNlIGZvciBsb2dnaW5nXHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCBnZXQgbG9nU291cmNlTmFtZSgpIHtcclxuICAgICAgICByZXR1cm4gJ1Byb3BlcnR5R3JpZENvbXBvbmVudCc7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgb3JpZW50YXRpb24gZm9yIHRoZSBwcm9wZXJ0eSBncmlkXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgb3JpZW50YXRpb246IFByb3BlcnR5R3JpZE9yaWVudGF0aW9uID0gJ2hvcml6b250YWwnO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW1wbGVtZW50YXRpb24gb2YgdGhlIExheW91dCBpbnRlcmZhY2VcclxuICAgICAqL1xyXG4gICAgQE91dHB1dCgpXHJcbiAgICBwdWJsaWMgbGF5b3V0Q2hhbmdlZDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW1wbGVtZW50YXRpb24gb2YgdGhlIExheW91dCBpbnRlcmZhY2VcclxuICAgICAqL1xyXG4gICAgQE91dHB1dCgpXHJcbiAgICBwdWJsaWMgd2luZG93QnJlYWtwb2ludENoYW5nZWQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuXHJcbiAgICBwcml2YXRlIHByb3BlcnR5R3JpZFJlc3BvbnNpdmVXaW5kb3dNYW5hZ2VyID0gbmV3IFByb3BlcnR5R3JpZFJlc3BvbnNpdmVXaW5kb3dNYW5hZ2VyKCk7XHJcblxyXG4gICAgY29uc3RydWN0b3IoaW5qZWN0b3I6IEluamVjdG9yLCBAU2tpcFNlbGYoKSBAT3B0aW9uYWwoKSBASW5qZWN0KFNNRV9MQVlPVVRfUFJPVklERVIpIGxheW91dDogTGF5b3V0KSB7XHJcbiAgICAgICAgc3VwZXIoaW5qZWN0b3IpO1xyXG4gICAgICAgIC8vIG9sZCBzdHlsZSBzdXBwb3J0ZWQgc21lLXByb3BlcnR5LWdyaWQtYXJyYW5nZS12ZXJ0aWNhbCBjbGFzcy4gZGVmYXVsdCB0byB2ZXJ0aWNhbCBvcmllbnRhdGlvbiBpZiB0aGlzIGNsYXNzIGlzIGFwcGxpZWQuXHJcbiAgICAgICAgY29uc3QgaGFzVmVydGljYWxDbGFzcyA9ICg8SFRNTEVsZW1lbnQ+dGhpcy5ob3N0RWxlbWVudC5uYXRpdmVFbGVtZW50KS5jbGFzc0xpc3QuY29udGFpbnMoJ3NtZS1wcm9wZXJ0eS1ncmlkLWFycmFuZ2UtdmVydGljYWwnKTtcclxuICAgICAgICB0aGlzLm9yaWVudGF0aW9uID0gaGFzVmVydGljYWxDbGFzcyA/ICd2ZXJ0aWNhbCcgOiAnaG9yaXpvbnRhbCc7XHJcblxyXG4gICAgICAgIC8vIG9uIHBhcmVudCBsYXlvdXQgY2hhbmdlcywgcmUtZW1pdCB0aGUgbGF5b3V0IGNoYW5nZSB0byBvdXIgZXZlbnRcclxuICAgICAgICBpZiAobGF5b3V0KSB7XHJcbiAgICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICAgICAgICAgICAgbGF5b3V0LmxheW91dENoYW5nZWQuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmxheW91dENoYW5nZWQuZW1pdCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BlcnR5R3JpZFJlc3BvbnNpdmVXaW5kb3dNYW5hZ2VyLm9uV2luZG93U2l6ZUNoYW5nZWQodGhpcy5ob3N0RWxlbWVudC5uYXRpdmVFbGVtZW50KTtcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdHJpbmdpZnlWYWx1ZSh2YWx1ZTogYW55KSB7XHJcbiAgICAgICAgaWYgKE1zZnRTbWUuaXNOdWxsT3JXaGl0ZVNwYWNlKHZhbHVlKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gJy0nO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHZhbHVlLm1hcCh2ID0+IHRoaXMuc3RyaW5naWZ5VmFsdWUodikpLmpvaW4oJyxcXG4nKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKE1zZnRTbWUuaXNPYmplY3QodmFsdWUpKSB7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodmFsdWUsIG51bGwsIDIpO1xyXG4gICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBgJHt2YWx1ZX1gO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXRUZW1wbGF0ZShpdGVtOiBQcm9wZXJ0eUdyaWRJdGVtQ29tcG9uZW50KSB7XHJcbiAgICAgICAgaWYgKGl0ZW0uYWN0aW9uKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmFjdGlvbkxpbmtUZW1wbGF0ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGl0ZW0ubGluaykge1xyXG4gICAgICAgICAgICBpZiAoaXRlbS5pc0V4dGVybmFsTGluaykge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXh0ZXJuYWxMaW5rVGVtcGxhdGU7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pbnRlcm5hbExpbmtUZW1wbGF0ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhpcy5yZWFkb25seVRlbXBsYXRlO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcbiAgICAgICAgc3VwZXIubmdPbkNoYW5nZXMoY2hhbmdlcyk7XHJcbiAgICAgICAgaWYgKGNoYW5nZXMub3JpZW50YXRpb24pIHtcclxuICAgICAgICAgICAgdGhpcy5sYXlvdXRDaGFuZ2VkLmVtaXQoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJdCBoYW5kbGVzIHRoZSB1bmRlZmluZWQgdmFsdWUgd29uJ3QgYmUgdXBkYXRlZCBzaXR1YXRpb24gZm9yIGFzeW5jIHByb3BlcnR5IGl0ZW0uXHJcbiAgICAgKiBBbmd1bGFyIGlzc3VlIHRoYXQgdGhlIHByb3BlcnR5IGl0ZW0gdmFsdWUgaW5pdGlhbGl6ZWQgd2l0aCB1bmRlZmluZWQsIGlmIGFmdGVyIGFzeW5jIHRpbWUsIHRoZSB2YWx1ZSBiZWluZyBzZXQgaXMgc3RpbGwgdW5kZWZpbmVkLFxyXG4gICAgICogQW5ndWxhciB3aWxsIG5vdCBiZSBhYmxlIHRvIHRyaWdnZXIgdGhlIHZhbHVlIG9uIGNoYW5nZWQgZXZlbnQuIFRodXMgd2UgaGF2ZSB0byBtYW51YWxseSBjYWxsIHRvIHJlZnJlc2ggaXQuXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIGluZGV4IFRoZSBpbmRleCB0aGF0IG5lZWRzIHRvIGhhcmQgcmVmcmVzaC5cclxuICAgICAqL1xyXG4gICAgcHVibGljIGhhcmRSZWZyZXNoSXRlbShpbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCF0aGlzLml0ZW1zKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IGl0ZW1zID0gdGhpcy5pdGVtcy50b0FycmF5KCk7XHJcbiAgICAgICAgaWYgKCFpdGVtc1tpbmRleF0pIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgaXRlbSA9IGl0ZW1zW2luZGV4XTtcclxuICAgICAgICBpZiAoaXRlbS5pc0FzeW5jICYmIGl0ZW0udmFsdWUgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICBpdGVtLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDcmVhdGVzIHRoZSBpZEJhZyB1c2VkIGJ5IHRoaXMgY29tcG9uZW50IHRvIHN0b3JlIHVuaXF1ZSBlbGVtZW50IGlkcy5cclxuICAgICAqIGlkIHZhbHVlcyB3aWxsIGJlIGFzc2lnbmVkIGJlIHRoZSBAc2VlIEJhc2VDb21wb25lbnQgc3VwZXIgY2xhc3MuXHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCBjcmVhdGVJZEJhZygpOiBNc2Z0U21lLlN0cmluZ01hcDxzdHJpbmc+IHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBkZXRhaWxzU3BhbjogJycsXHJcbiAgICAgICAgICAgIGxhYmVsU3BhbjogJycsXHJcbiAgICAgICAgICAgIHZhbHVlU3BhbjogJydcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0cyB0aGUgaW5pdGlhbCBob3N0IGNsYXNzZXMgdG8gYmUgYXBwbGllZCB0byB0aGlzIGVsZW1lbnRcclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIGdldEluaXRpYWxIb3N0Q2xhc3NlcygpIHtcclxuICAgICAgICByZXR1cm4gc3VwZXIuZ2V0SW5pdGlhbEhvc3RDbGFzc2VzKCkuY29uY2F0KFtcclxuICAgICAgICAgICAgJ3NtZS1wcm9wZXJ0eS1ncmlkJyxcclxuICAgICAgICAgICAgJ3NtZS1sYXlvdXQtcmVsYXRpdmUnLFxyXG4gICAgICAgICAgICAnc21lLWZvY3VzLXpvbmUnXHJcbiAgICAgICAgXSk7XHJcbiAgICB9XHJcbn1cclxuIiwiPHNtZS1sYXlvdXQgI2xheW91dCBbcGFkTGFzdEl0ZW1dPVwidHJ1ZVwiIGNsYXNzPVwic21lLXBvc2l0aW9uLWluc2V0LW5vbmUgc21lLXBvc2l0aW9uLXN0cmV0Y2gtaFwiIFtvbmVDb2x1bW5dPVwib3JpZW50YXRpb24gPT09ICd2ZXJ0aWNhbCdcIj5cclxuICA8c21lLWxheW91dC1kZWZpbml0aW9uIG5hbWU9XCJuYXJyb3dcIiBbdW50aWxdPVwibGF5b3V0SXRlbVdpZHRoXCIgW2NvbHVtbnNdPVwiMVwiPjwvc21lLWxheW91dC1kZWZpbml0aW9uPlxyXG4gIDxzbWUtbGF5b3V0LWRlZmluaXRpb24gKm5nSWY9XCJvcmllbnRhdGlvbiAhPT0gJ3ZlcnRpY2FsJ1wiIG5hbWU9XCJtZWRpdW1cIiBbdW50aWxdPVwibGF5b3V0SXRlbVdpZHRoKjJcIiBbY29sdW1uc109XCIyXCI+PC9zbWUtbGF5b3V0LWRlZmluaXRpb24+XHJcbiAgPHNtZS1sYXlvdXQtZGVmaW5pdGlvbiAqbmdJZj1cIm9yaWVudGF0aW9uICE9PSAndmVydGljYWwnXCIgbmFtZT1cIndpZGVcIiBbY29sdW1uc109XCIzXCI+PC9zbWUtbGF5b3V0LWRlZmluaXRpb24+XHJcbiAgPHNtZS1sYXlvdXQtaXRlbSAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpdGVtczsgaW5kZXggYXMgaVwiIFtjb2x1bW5TcGFuXT1cIml0ZW0uY29sdW1uU3BhblwiXHJcbiAgICBbbWF4V2lkdGhdPVwib3JpZW50YXRpb24gPT09ICd2ZXJ0aWNhbCcgPyBudWxsIDogaXRlbS5jb2x1bW5TcGFuICogbGF5b3V0SXRlbVdpZHRoXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwic21lLXByb3BlcnR5LWdyaWQtaXRlbVwiIHRhYmluZGV4PVwiMFwiIGFyaWEtbGl2ZT1cInBvbGl0ZVwiIGFyaWEtYXRvbWljPVwidHJ1ZVwiICN6b25lPVwic21lVG9vbHRpcFpvbmVcIiBzbWVUb29sdGlwWm9uZT5cclxuICAgICAgPGxhYmVsIGNsYXNzPVwic21lLWFycmFuZ2Utc3RhY2staFwiPlxyXG4gICAgICAgIDxzcGFuPnt7IGl0ZW0ubGFiZWwgfX08L3NwYW4+XHJcbiAgICAgICAgPHNwYW4gKm5nSWY9XCJpdGVtLnRvb2x0aXBcIiBjbGFzcz1cInNtZS1wb3NpdGlvbi1mbGV4LW5vbmUgc21lLWljb24gc21lLWljb24taW5mbyBzbWUtaW5mby1idWJibGUgc21lLW1hcmdpbi1sZWZ0LXhzXCJcclxuICAgICAgICAgIFt0aXRsZV09XCJpdGVtLnRvb2x0aXBcIiBbdG9vbHRpcFpvbmVdPVwiem9uZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIHRhYmluZGV4PVwiMFwiPjwvc3Bhbj5cclxuICAgICAgICA8IS0tIGluIHNjYW4gbW9kZSBzY3JlZW4gcmVhZGVyIGRvZXMgbm90IGZvY3VzIG9uIHRoZSBpbmZvIGljb24gcHJvcGVybHkgdG8gcmVhZCB0aGUgdGl0bGUgLS0+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJzbWUtc2NyZWVuLXJlYWRlclwiPnt7IGl0ZW0udG9vbHRpcCB9fTwvc3Bhbj5cclxuICAgICAgPC9sYWJlbD5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImdldFRlbXBsYXRlKGl0ZW0pO2NvbnRleHQ6eyRpbXBsaWNpdDppdGVtLCBpbmRleDogaX1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG4gIDwvc21lLWxheW91dC1pdGVtPlxyXG48L3NtZS1sYXlvdXQ+XHJcblxyXG48IS0tIFJlYWQgb25seSAtLT5cclxuPG5nLXRlbXBsYXRlICNyZWFkb25seVRlbXBsYXRlIGxldC1pdGVtIGxldC1pPVwiaW5kZXhcIj5cclxuICA8c21lLWxvYWRpbmctd2hlZWwgKm5nSWY9XCJpdGVtLmxvYWRpbmcgJiYgaXRlbS5pc0FzeW5jXCIgc2l6ZT1cImV4dHJhLXNtYWxsXCIgW2lubGluZV09XCJ0cnVlXCIgW2lzQmFja2dyb3VuZFRyYW5zcGFyZW50XT1cInRydWVcIj48L3NtZS1sb2FkaW5nLXdoZWVsPlxyXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXRlbS5sb2FkaW5nIHx8ICFpdGVtLmlzQXN5bmNcIj5cclxuICAgIDxwIGNsYXNzPVwic21lLXJlYWQtb25seS10ZW1wbGF0ZVwiIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJpZEJhZy5sYWJlbFNwYW4gKyBpXCIgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJpZEJhZy5kZXRhaWxzU3BhbiArIGlcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImljb25UZW1wbGF0ZTtjb250ZXh0OnskaW1wbGljaXQ6aXRlbSwgaW5kZXg6IGl9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgIDxzcGFuICpuZ0lmPVwiIWl0ZW0ubGluayAmJiAhaXRlbS5hY3Rpb25cIj57eyBzdHJpbmdpZnlWYWx1ZShpdGVtLnZhbHVlKSB9fTwvc3Bhbj5cclxuICAgIDwvcD5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjwhLS0gQWN0aW9uIGxpbmsgKHJvbGUgYnV0dG9uKSAtLT5cclxuPG5nLXRlbXBsYXRlICNhY3Rpb25MaW5rVGVtcGxhdGUgbGV0LWl0ZW0gbGV0LWk9XCJpbmRleFwiPlxyXG4gIDxwPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImljb25UZW1wbGF0ZTtjb250ZXh0OnskaW1wbGljaXQ6aXRlbSwgaW5kZXg6IGl9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICA8c3BhbiAqbmdJZj1cIml0ZW0ucHJlZml4U3RyaW5nXCIgY2xhc3M9XCJzbWUtcGFkZGluZy1yaWdodC14c1wiPnt7IGl0ZW0ucHJlZml4U3RyaW5nIH19PC9zcGFuPlxyXG4gICAgPGEgdGFiaW5kZXg9XCIwXCIgY2xhc3M9XCJzbWUtbGluayBzbWUtZm9jdXMtem9uZSBzbWUtYWN0aW9uLWxpbmstdGVtcGxhdGVcIiByb2xlPVwibGlua1wiIChjbGljayk9XCJpdGVtLmFjdGlvbihpdGVtKVwiXHJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCIoaWRCYWcubGFiZWxTcGFuICsgaSkgKyAnICcgKyAoaWRCYWcudmFsdWVTcGFuICsgaSlcIlxyXG4gICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cImlkQmFnLmRldGFpbHNTcGFuICsgaVwiPnt7IGl0ZW0udmFsdWUgfX08L2E+XHJcbiAgPC9wPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPCEtLSBJbnRlcm5hbCBsaW5rIC0tPlxyXG48bmctdGVtcGxhdGUgI2ludGVybmFsTGlua1RlbXBsYXRlIGxldC1pdGVtIGxldC1pPVwiaW5kZXhcIj5cclxuICA8cD5cclxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpY29uVGVtcGxhdGU7Y29udGV4dDp7JGltcGxpY2l0Oml0ZW0sIGluZGV4OiBpfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgPHNwYW4gKm5nSWY9XCJpdGVtLnByZWZpeFN0cmluZ1wiIGNsYXNzPVwic21lLXBhZGRpbmctcmlnaHQteHNcIj57eyBpdGVtLnByZWZpeFN0cmluZyB9fTwvc3Bhbj5cclxuICAgIDxhIGNsYXNzPVwic21lLWxpbmsgc21lLWZvY3VzLXpvbmVcIiByb2xlPVwibGlua1wiIFtyb3V0ZXJMaW5rXT1cIml0ZW0ubGlua1wiIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCIoaWRCYWcubGFiZWxTcGFuICsgaSkgKyAnICcgKyAoaWRCYWcudmFsdWVTcGFuICsgaSlcIlxyXG4gICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cImlkQmFnLmRldGFpbHNTcGFuICsgaVwiPnt7IGl0ZW0udmFsdWUgfX08L2E+XHJcbiAgPC9wPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPCEtLSBFeHRlcm5hbCBsaW5rIC0tPlxyXG48bmctdGVtcGxhdGUgI2V4dGVybmFsTGlua1RlbXBsYXRlIGxldC1pdGVtIGxldC1pPVwiaW5kZXhcIj5cclxuICA8cD5cclxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpY29uVGVtcGxhdGU7Y29udGV4dDp7JGltcGxpY2l0Oml0ZW0sIGluZGV4OiBpfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgPHNwYW4gKm5nSWY9XCJpdGVtLnByZWZpeFN0cmluZ1wiIGNsYXNzPVwic21lLXBhZGRpbmctcmlnaHQteHNcIj57eyBpdGVtLnByZWZpeFN0cmluZyB9fTwvc3Bhbj5cclxuICAgIDxhIGNsYXNzPVwic21lLWxpbmsgc21lLWZvY3VzLXpvbmUgc21lLWljb24gc21lLWljb24tYWZ0ZXIgc21lLWljb24tb3BlbkluTmV3V2luZG93XCIgcm9sZT1cImxpbmtcIiBbaHJlZl09XCJpdGVtLmxpbmtcIiB0YXJnZXQ9XCJfYmxhbmtcIlxyXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiKGlkQmFnLmxhYmVsU3BhbiArIGkpICsgJyAnICsgKGlkQmFnLnZhbHVlU3BhbiArIGkpXCIgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJpZEJhZy5kZXRhaWxzU3BhbiArIGlcIj57eyBpdGVtLnZhbHVlIH19PC9hPlxyXG4gIDwvcD5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjwhLS0gSWNvbiBUZW1wbGF0ZSAtLT5cclxuPG5nLXRlbXBsYXRlICNpY29uVGVtcGxhdGUgbGV0LWl0ZW0gbGV0LWk9XCJpbmRleFwiPlxyXG4gIDxzcGFuICpuZ0lmPVwiISFpdGVtLmljb25DbGFzc1wiIGNsYXNzPVwic21lLW1hcmdpbi1yaWdodC14cyBzbWUtaWNvbiB7e2l0ZW0uaWNvbkNsYXNzfX1cIj48L3NwYW4+XHJcbiAgPHNtZS1zdGF0dXMtaWNvbiAqbmdJZj1cIml0ZW0uc3RhdHVzICE9PSB1bmRlZmluZWQgJiYgaXRlbS5zdGF0dXMgIT09IG51bGwgJiYgIWl0ZW0uaWNvbkNsYXNzXCIgY2xhc3M9XCJzbWUtbGF5b3V0LWlubGluZS1ibG9jayBzbWUtbWFyZ2luLXJpZ2h0LXhzIFwiXHJcbiAgICBbc3RhdHVzXT1cIml0ZW0uc3RhdHVzXCIgc2l6ZT1cIjE2cHhcIj48L3NtZS1zdGF0dXMtaWNvbj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19
|
|
484
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydHktZ3JpZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9hbmd1bGFyL3NyYy9jb250cm9scy9wcm9wZXJ0eS1ncmlkL3Byb3BlcnR5LWdyaWQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYW5ndWxhci9zcmMvY29udHJvbHMvcHJvcGVydHktZ3JpZC9wcm9wZXJ0eS1ncmlkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxTQUFTLEVBQ1QsZUFBZSxFQUNmLFlBQVksRUFDWixVQUFVLEVBQ1YsTUFBTSxFQUNOLFFBQVEsRUFDUixLQUFLLEVBRUwsUUFBUSxFQUNSLE1BQU0sRUFDTixTQUFTLEVBRVQsUUFBUSxFQUNSLFdBQVcsRUFDWCxTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDN0QsT0FBTyxFQUFVLG1CQUFtQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDL0QsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDM0UsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLE1BQU0sMkNBQTJDLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7SUNsQjlGLDRDQUEwSTs7O0lBQWxFLGtEQUEyQixjQUFBOzs7SUFDbkcsNENBQTRHOztJQUF0QywyQkFBYTs7O0lBTTdFLDJCQUNxRjs7OztJQUFuRix3Q0FBc0IscUJBQUE7OztJQUkxQix3QkFBc0c7Ozs7SUFWMUcsMkNBQ3FGLGtCQUFBLGdCQUFBLFdBQUE7SUFHekUsWUFBZ0I7SUFBQSxpQkFBTztJQUM3QiwyRkFDcUY7SUFFckYsZ0NBQWdDO0lBQUEsWUFBa0I7SUFBQSxpQkFBTyxFQUFBO0lBRTNELDJHQUFzRztJQUN4RyxpQkFBTSxFQUFBOzs7OztJQVhnRCxnREFB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XG4gICAgQ29udGVudENoaWxkcmVuLFxyXG4gICAgRXZlbnRFbWl0dGVyLFxyXG4gICAgZm9yd2FyZFJlZixcclxuICAgIEluamVjdCxcclxuICAgIEluamVjdG9yLFxyXG4gICAgSW5wdXQsXHJcbiAgICBPbkNoYW5nZXMsXHJcbiAgICBPcHRpb25hbCxcclxuICAgIE91dHB1dCxcclxuICAgIFF1ZXJ5TGlzdCxcclxuICAgIFNpbXBsZUNoYW5nZXMsXHJcbiAgICBTa2lwU2VsZixcclxuICAgIFRlbXBsYXRlUmVmLFxyXG4gICAgVmlld0NoaWxkXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvcmVCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tbW9uL2Jhc2UuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTGF5b3V0LCBTTUVfTEFZT1VUX1BST1ZJREVSIH0gZnJvbSAnLi4vY29tbW9uL2xheW91dCc7XHJcbmltcG9ydCB7IFByb3BlcnR5R3JpZEl0ZW1Db21wb25lbnQgfSBmcm9tICcuL3Byb3BlcnR5LWdyaWQtaXRlbS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBQcm9wZXJ0eUdyaWRSZXNwb25zaXZlV2luZG93TWFuYWdlciB9IGZyb20gJy4vcHJvcGVydHktZ3JpZC1yZXNwb25zaXZlLXdpbmRvdy1tYW5hZ2VyJztcclxuXHJcbi8qKlxyXG4gKiBUaGUgcGFuZSBvcmllbnRhdGlvbiBvZiB0aGUgc3BsaXQgdmlldy5cclxuICovXHJcbmV4cG9ydCB0eXBlIFByb3BlcnR5R3JpZE9yaWVudGF0aW9uID0gJ3ZlcnRpY2FsJyB8ICdob3Jpem9udGFsJztcclxuXHJcbi8qKlxyXG4gKlxyXG4gKiBAc21lRG9jIHtAbGFiZWwgUHJvcGVydHkgR3JpZCBAaWQgc21lLXByb3BlcnR5LWdyaWQtY29tcG9uZW50fVxyXG4gKlxyXG4gKiBAb3ZlcnZpZXdcclxuICogQGZpbGUge0BmaWxlcGF0aCAuL2V4YW1wbGVzL292ZXJ2aWV3Lm1kfVxyXG4gKlxyXG4gKiBAZXhhbXBsZSB7QGxhYmVsIEJhc2ljIFVzYWdlIEBpZCBiYXNpYy11c2FnZX1cclxuICogQGZpbGUge0BmaWxlbmFtZSBjb21wb25lbnQuaHRtbCBAZmlsZXBhdGggLi9leGFtcGxlcy9iYXNpYy11c2FnZS5jb21wb25lbnQuaHRtbH1cclxuICpcclxuICogQGV4YW1wbGUge0BsYWJlbCBWZXJ0aWNhbCBPcmllbnRhdGlvbiBAaWQgdmVydGljYWwtb3JpZW50YXRpb259XHJcbiAqIEBmaWxlIHtAZmlsZW5hbWUgY29tcG9uZW50Lmh0bWwgQGZpbGVwYXRoIC4vZXhhbXBsZXMvdmVydGljYWwtb3JpZW50YXRpb24uY29tcG9uZW50Lmh0bWx9XHJcbiAqXHJcbiAqIEBleGFtcGxlIHtAbGFiZWwgSXRlbSB3aXRoIGEgTGluayBAaWQgbGluay1pdGVtfVxyXG4gKiBAZmlsZSB7QGZpbGVuYW1lIGNvbXBvbmVudC5odG1sIEBmaWxlcGF0aCAuL2V4YW1wbGVzL2xpbmstaXRlbS5jb21wb25lbnQuaHRtbH1cclxuICpcclxuICogQGV4YW1wbGUge0BsYWJlbCBJdGVtIHdpdGggYSBUb29sdGlwIEBpZCB0b29sdGlwLWl0ZW19XHJcbiAqIEBmaWxlIHtAZmlsZW5hbWUgY29tcG9uZW50Lmh0bWwgQGZpbGVwYXRoIC4vZXhhbXBsZXMvdG9vbHRpcC1pdGVtLmNvbXBvbmVudC5odG1sfVxyXG4gKlxyXG4gKiBAZXhhbXBsZSB7QGxhYmVsIEl0ZW0gd2l0aCBhIEFjdGlvbiBAaWQgYWN0aW9uLWl0ZW19XHJcbiAqIEBmaWxlIHtAZmlsZW5hbWUgY29tcG9uZW50LnRzIEBmaWxlcGF0aCAuL2V4YW1wbGVzL2FjdGlvbi1pdGVtLmNvbXBvbmVudC50c31cclxuICogQGZpbGUge0BmaWxlbmFtZSBjb21wb25lbnQuaHRtbCBAZmlsZXBhdGggLi9leGFtcGxlcy9hY3Rpb24taXRlbS5jb21wb25lbnQuaHRtbH1cclxuICpcclxuICogQGV4YW1wbGUge0BsYWJlbCBJdGVtIFNwYW5uaW5nIE11bHRpcGxlIENvbHVtbnMgQGlkIG11bHRpLWNvbHVtbn1cclxuICogQGZpbGUge0BmaWxlbmFtZSBjb21wb25lbnQuaHRtbCBAZmlsZXBhdGggLi9leGFtcGxlcy9tdWx0aS1jb2x1bW4taXRlbS5jb21wb25lbnQuaHRtbH1cclxuICpcclxuICogQGV4YW1wbGUge0BsYWJlbCBJdGVtcyB3aXRoIFN0YXR1cyBhbmQgSWNvbnMgQGlkIHN0YXR1cy1hbmQtaWNvbnN9XHJcbiAqIEBmaWxlIHtAZmlsZW5hbWUgY29tcG9uZW50Lmh0bWwgQGZpbGVwYXRoIC4vZXhhbXBsZXMvc3RhdHVzLWl0ZW0uY29tcG9uZW50Lmh0bWx9XHJcbiAqXHJcbiAqIEBleGFtcGxlIHtAbGFiZWwgSXRlbXMgd2l0aCBjb21wbGV4IHZhbHVlIHR5cGVzIEBpZCBjb21wbGV4LXZhbHVlfVxyXG4gKiBAZmlsZSB7QGZpbGVuYW1lIGNvbXBvbmVudC5odG1sIEBmaWxlcGF0aCAuL2V4YW1wbGVzL2NvbXBsZXgtdmFsdWVzLmNvbXBvbmVudC5odG1sfVxyXG4gKlxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ3NtZS1wcm9wZXJ0eS1ncmlkJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9wcm9wZXJ0eS1ncmlkLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHByb3ZpZGVyczogW1xyXG4gICAgICAgIHsgcHJvdmlkZTogU01FX0xBWU9VVF9QUk9WSURFUiwgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gUHJvcGVydHlHcmlkQ29tcG9uZW50KSB9XHJcbiAgICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQcm9wZXJ0eUdyaWRDb21wb25lbnQgZXh0ZW5kcyBDb3JlQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIExheW91dCwgT25DaGFuZ2VzIHtcclxuICAgIC8qKlxyXG4gICAgICogVGhlIGJhc2ljIGNvbHVtbiB3aWR0aCBmb3IgdGhlIHByb3BlcnR5IGdyaWQgaXRlbXMuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBsYXlvdXRJdGVtV2lkdGggPSAzMDA7XHJcblxyXG4gICAgQENvbnRlbnRDaGlsZHJlbihQcm9wZXJ0eUdyaWRJdGVtQ29tcG9uZW50KVxyXG4gICAgcHVibGljIGl0ZW1zOiBRdWVyeUxpc3Q8UHJvcGVydHlHcmlkSXRlbUNvbXBvbmVudD47XHJcblxyXG4gICAgQFZpZXdDaGlsZCgncmVhZG9ubHlUZW1wbGF0ZScsIHsgc3RhdGljOiB0cnVlIH0pXHJcbiAgICBwdWJsaWMgcmVhZG9ubHlUZW1wbGF0ZTogVGVtcGxhdGVSZWY8UHJvcGVydHlHcmlkSXRlbUNvbXBvbmVudD47XHJcblxyXG4gICAgQFZpZXdDaGlsZCgnYWN0aW9uTGlua1RlbXBsYXRlJywgeyBzdGF0aWM6IHRydWUgfSlcclxuICAgIHB1YmxpYyBhY3Rpb25MaW5rVGVtcGxhdGU6IFRlbXBsYXRlUmVmPFByb3BlcnR5R3JpZEl0ZW1Db21wb25lbnQ+O1xyXG5cclxuICAgIEBWaWV3Q2hpbGQoJ2ludGVybmFsTGlua1RlbXBsYXRlJywgeyBzdGF0aWM6IHRydWUgfSlcclxuICAgIHB1YmxpYyBpbnRlcm5hbExpbmtUZW1wbGF0ZTogVGVtcGxhdGVSZWY8UHJvcGVydHlHcmlkSXRlbUNvbXBvbmVudD47XHJcblxyXG4gICAgQFZpZXdDaGlsZCgnZXh0ZXJuYWxMaW5rVGVtcGxhdGUnLCB7IHN0YXRpYzogdHJ1ZSB9KVxyXG4gICAgcHVibGljIGV4dGVybmFsTGlua1RlbXBsYXRlOiBUZW1wbGF0ZVJlZjxQcm9wZXJ0eUdyaWRJdGVtQ29tcG9uZW50PjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBzb3VyY2UgbmFtZSB0byB1c2UgZm9yIGxvZ2dpbmdcclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIGdldCBsb2dTb3VyY2VOYW1lKCkge1xyXG4gICAgICAgIHJldHVybiAnUHJvcGVydHlHcmlkQ29tcG9uZW50JztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBvcmllbnRhdGlvbiBmb3IgdGhlIHByb3BlcnR5IGdyaWRcclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBvcmllbnRhdGlvbjogUHJvcGVydHlHcmlkT3JpZW50YXRpb24gPSAnaG9yaXpvbnRhbCc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgTGF5b3V0IGludGVyZmFjZVxyXG4gICAgICovXHJcbiAgICBAT3V0cHV0KClcclxuICAgIHB1YmxpYyBsYXlvdXRDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgTGF5b3V0IGludGVyZmFjZVxyXG4gICAgICovXHJcbiAgICBAT3V0cHV0KClcclxuICAgIHB1YmxpYyB3aW5kb3dCcmVha3BvaW50Q2hhbmdlZDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG5cclxuICAgIHByaXZhdGUgcHJvcGVydHlHcmlkUmVzcG9uc2l2ZVdpbmRvd01hbmFnZXIgPSBuZXcgUHJvcGVydHlHcmlkUmVzcG9uc2l2ZVdpbmRvd01hbmFnZXIoKTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihpbmplY3RvcjogSW5qZWN0b3IsIEBTa2lwU2VsZigpIEBPcHRpb25hbCgpIEBJbmplY3QoU01FX0xBWU9VVF9QUk9WSURFUikgbGF5b3V0OiBMYXlvdXQpIHtcclxuICAgICAgICBzdXBlcihpbmplY3Rvcik7XHJcbiAgICAgICAgLy8gb2xkIHN0eWxlIHN1cHBvcnRlZCBzbWUtcHJvcGVydHktZ3JpZC1hcnJhbmdlLXZlcnRpY2FsIGNsYXNzLiBkZWZhdWx0IHRvIHZlcnRpY2FsIG9yaWVudGF0aW9uIGlmIHRoaXMgY2xhc3MgaXMgYXBwbGllZC5cclxuICAgICAgICBjb25zdCBoYXNWZXJ0aWNhbENsYXNzID0gKDxIVE1MRWxlbWVudD50aGlzLmhvc3RFbGVtZW50Lm5hdGl2ZUVsZW1lbnQpLmNsYXNzTGlzdC5jb250YWlucygnc21lLXByb3BlcnR5LWdyaWQtYXJyYW5nZS12ZXJ0aWNhbCcpO1xyXG4gICAgICAgIHRoaXMub3JpZW50YXRpb24gPSBoYXNWZXJ0aWNhbENsYXNzID8gJ3ZlcnRpY2FsJyA6ICdob3Jpem9udGFsJztcclxuXHJcbiAgICAgICAgLy8gb24gcGFyZW50IGxheW91dCBjaGFuZ2VzLCByZS1lbWl0IHRoZSBsYXlvdXQgY2hhbmdlIHRvIG91ciBldmVudFxyXG4gICAgICAgIGlmIChsYXlvdXQpIHtcclxuICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgICAgICAgICAgICBsYXlvdXQubGF5b3V0Q2hhbmdlZC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubGF5b3V0Q2hhbmdlZC5lbWl0KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcGVydHlHcmlkUmVzcG9uc2l2ZVdpbmRvd01hbmFnZXIub25XaW5kb3dTaXplQ2hhbmdlZCh0aGlzLmhvc3RFbGVtZW50Lm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0cmluZ2lmeVZhbHVlKHZhbHVlOiBhbnkpIHtcclxuICAgICAgICBpZiAoTXNmdFNtZS5pc051bGxPcldoaXRlU3BhY2UodmFsdWUpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAnLSc7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdmFsdWUubWFwKHYgPT4gdGhpcy5zdHJpbmdpZnlWYWx1ZSh2KSkuam9pbignLFxcbicpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoTXNmdFNtZS5pc09iamVjdCh2YWx1ZSkpIHtcclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh2YWx1ZSwgbnVsbCwgMik7XHJcbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGAke3ZhbHVlfWA7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldFRlbXBsYXRlKGl0ZW06IFByb3BlcnR5R3JpZEl0ZW1Db21wb25lbnQpIHtcclxuICAgICAgICBpZiAoaXRlbS5hY3Rpb24pIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYWN0aW9uTGlua1RlbXBsYXRlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoaXRlbS5saW5rKSB7XHJcbiAgICAgICAgICAgIGlmIChpdGVtLmlzRXh0ZXJuYWxMaW5rKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5leHRlcm5hbExpbmtUZW1wbGF0ZTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmludGVybmFsTGlua1RlbXBsYXRlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzLnJlYWRvbmx5VGVtcGxhdGU7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgICAgICBzdXBlci5uZ09uQ2hhbmdlcyhjaGFuZ2VzKTtcclxuICAgICAgICBpZiAoY2hhbmdlcy5vcmllbnRhdGlvbikge1xyXG4gICAgICAgICAgICB0aGlzLmxheW91dENoYW5nZWQuZW1pdCgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEl0IGhhbmRsZXMgdGhlIHVuZGVmaW5lZCB2YWx1ZSB3b24ndCBiZSB1cGRhdGVkIHNpdHVhdGlvbiBmb3IgYXN5bmMgcHJvcGVydHkgaXRlbS5cclxuICAgICAqIEFuZ3VsYXIgaXNzdWUgdGhhdCB0aGUgcHJvcGVydHkgaXRlbSB2YWx1ZSBpbml0aWFsaXplZCB3aXRoIHVuZGVmaW5lZCwgaWYgYWZ0ZXIgYXN5bmMgdGltZSwgdGhlIHZhbHVlIGJlaW5nIHNldCBpcyBzdGlsbCB1bmRlZmluZWQsXHJcbiAgICAgKiBBbmd1bGFyIHdpbGwgbm90IGJlIGFibGUgdG8gdHJpZ2dlciB0aGUgdmFsdWUgb24gY2hhbmdlZCBldmVudC4gVGh1cyB3ZSBoYXZlIHRvIG1hbnVhbGx5IGNhbGwgdG8gcmVmcmVzaCBpdC5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gaW5kZXggVGhlIGluZGV4IHRoYXQgbmVlZHMgdG8gaGFyZCByZWZyZXNoLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgaGFyZFJlZnJlc2hJdGVtKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcclxuICAgICAgICBpZiAoIXRoaXMuaXRlbXMpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgaXRlbXMgPSB0aGlzLml0ZW1zLnRvQXJyYXkoKTtcclxuICAgICAgICBpZiAoIWl0ZW1zW2luZGV4XSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBpdGVtID0gaXRlbXNbaW5kZXhdO1xyXG4gICAgICAgIGlmIChpdGVtLmlzQXN5bmMgJiYgaXRlbS52YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIGl0ZW0ubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0SW50ZXJuYWxMaW5rRGVzY3JpcHRpb24oaXRlbTogUHJvcGVydHlHcmlkSXRlbUNvbXBvbmVudCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnN0cmluZ3MuTXNmdFNtZVNoZWxsLkFuZ3VsYXIuUHJvcGVydHlHcmlkLkludGVybmFsTGluay5sYWJlbC5mb3JtYXQoaXRlbS5saW5rKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0RXh0ZXJuYWxMaW5rRGVzY3JpcHRpb24oaXRlbTogUHJvcGVydHlHcmlkSXRlbUNvbXBvbmVudCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnN0cmluZ3MuTXNmdFNtZVNoZWxsLkFuZ3VsYXIuUHJvcGVydHlHcmlkLkV4dGVybmFsTGluay5sYWJlbC5mb3JtYXQoaXRlbS5saW5rKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENyZWF0ZXMgdGhlIGlkQmFnIHVzZWQgYnkgdGhpcyBjb21wb25lbnQgdG8gc3RvcmUgdW5pcXVlIGVsZW1lbnQgaWRzLlxyXG4gICAgICogaWQgdmFsdWVzIHdpbGwgYmUgYXNzaWduZWQgYmUgdGhlIEBzZWUgQmFzZUNvbXBvbmVudCBzdXBlciBjbGFzcy5cclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIGNyZWF0ZUlkQmFnKCk6IE1zZnRTbWUuU3RyaW5nTWFwPHN0cmluZz4ge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGRldGFpbHNTcGFuOiAnJyxcclxuICAgICAgICAgICAgbGFiZWxTcGFuOiAnJyxcclxuICAgICAgICAgICAgdmFsdWVTcGFuOiAnJ1xyXG4gICAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXRzIHRoZSBpbml0aWFsIGhvc3QgY2xhc3NlcyB0byBiZSBhcHBsaWVkIHRvIHRoaXMgZWxlbWVudFxyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgZ2V0SW5pdGlhbEhvc3RDbGFzc2VzKCkge1xyXG4gICAgICAgIHJldHVybiBzdXBlci5nZXRJbml0aWFsSG9zdENsYXNzZXMoKS5jb25jYXQoW1xyXG4gICAgICAgICAgICAnc21lLXByb3BlcnR5LWdyaWQnLFxyXG4gICAgICAgICAgICAnc21lLWxheW91dC1yZWxhdGl2ZScsXHJcbiAgICAgICAgICAgICdzbWUtZm9jdXMtem9uZSdcclxuICAgICAgICBdKTtcclxuICAgIH1cclxufVxyXG4iLCI8c21lLWxheW91dCAjbGF5b3V0IFtwYWRMYXN0SXRlbV09XCJ0cnVlXCIgY2xhc3M9XCJzbWUtcG9zaXRpb24taW5zZXQtbm9uZSBzbWUtcG9zaXRpb24tc3RyZXRjaC1oXCIgW29uZUNvbHVtbl09XCJvcmllbnRhdGlvbiA9PT0gJ3ZlcnRpY2FsJ1wiPlxyXG4gIDxzbWUtbGF5b3V0LWRlZmluaXRpb24gbmFtZT1cIm5hcnJvd1wiIFt1bnRpbF09XCJsYXlvdXRJdGVtV2lkdGhcIiBbY29sdW1uc109XCIxXCI+PC9zbWUtbGF5b3V0LWRlZmluaXRpb24+XHJcbiAgPHNtZS1sYXlvdXQtZGVmaW5pdGlvbiAqbmdJZj1cIm9yaWVudGF0aW9uICE9PSAndmVydGljYWwnXCIgbmFtZT1cIm1lZGl1bVwiIFt1bnRpbF09XCJsYXlvdXRJdGVtV2lkdGgqMlwiIFtjb2x1bW5zXT1cIjJcIj48L3NtZS1sYXlvdXQtZGVmaW5pdGlvbj5cclxuICA8c21lLWxheW91dC1kZWZpbml0aW9uICpuZ0lmPVwib3JpZW50YXRpb24gIT09ICd2ZXJ0aWNhbCdcIiBuYW1lPVwid2lkZVwiIFtjb2x1bW5zXT1cIjNcIj48L3NtZS1sYXlvdXQtZGVmaW5pdGlvbj5cclxuICA8c21lLWxheW91dC1pdGVtICpuZ0Zvcj1cImxldCBpdGVtIG9mIGl0ZW1zOyBpbmRleCBhcyBpXCIgW2NvbHVtblNwYW5dPVwiaXRlbS5jb2x1bW5TcGFuXCJcclxuICAgIFttYXhXaWR0aF09XCJvcmllbnRhdGlvbiA9PT0gJ3ZlcnRpY2FsJyA/IG51bGwgOiBpdGVtLmNvbHVtblNwYW4gKiBsYXlvdXRJdGVtV2lkdGhcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJzbWUtcHJvcGVydHktZ3JpZC1pdGVtXCIgdGFiaW5kZXg9XCIwXCIgYXJpYS1saXZlPVwicG9saXRlXCIgYXJpYS1hdG9taWM9XCJ0cnVlXCIgI3pvbmU9XCJzbWVUb29sdGlwWm9uZVwiIHNtZVRvb2x0aXBab25lPlxyXG4gICAgICA8bGFiZWwgY2xhc3M9XCJzbWUtYXJyYW5nZS1zdGFjay1oXCI+XHJcbiAgICAgICAgPHNwYW4+e3sgaXRlbS5sYWJlbCB9fTwvc3Bhbj5cclxuICAgICAgICA8c3BhbiAqbmdJZj1cIml0ZW0udG9vbHRpcFwiIGNsYXNzPVwic21lLXBvc2l0aW9uLWZsZXgtbm9uZSBzbWUtaWNvbiBzbWUtaWNvbi1pbmZvIHNtZS1pbmZvLWJ1YmJsZSBzbWUtbWFyZ2luLWxlZnQteHNcIlxyXG4gICAgICAgICAgW3RpdGxlXT1cIml0ZW0udG9vbHRpcFwiIFt0b29sdGlwWm9uZV09XCJ6b25lXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgdGFiaW5kZXg9XCIwXCI+PC9zcGFuPlxyXG4gICAgICAgIDwhLS0gaW4gc2NhbiBtb2RlIHNjcmVlbiByZWFkZXIgZG9lcyBub3QgZm9jdXMgb24gdGhlIGluZm8gaWNvbiBwcm9wZXJseSB0byByZWFkIHRoZSB0aXRsZSAtLT5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cInNtZS1zY3JlZW4tcmVhZGVyXCI+e3sgaXRlbS50b29sdGlwIH19PC9zcGFuPlxyXG4gICAgICA8L2xhYmVsPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZ2V0VGVtcGxhdGUoaXRlbSk7Y29udGV4dDp7JGltcGxpY2l0Oml0ZW0sIGluZGV4OiBpfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9zbWUtbGF5b3V0LWl0ZW0+XHJcbjwvc21lLWxheW91dD5cclxuXHJcbjwhLS0gUmVhZCBvbmx5IC0tPlxyXG48bmctdGVtcGxhdGUgI3JlYWRvbmx5VGVtcGxhdGUgbGV0LWl0ZW0gbGV0LWk9XCJpbmRleFwiPlxyXG4gIDxzbWUtbG9hZGluZy13aGVlbCAqbmdJZj1cIml0ZW0ubG9hZGluZyAmJiBpdGVtLmlzQXN5bmNcIiBzaXplPVwiZXh0cmEtc21hbGxcIiBbaW5saW5lXT1cInRydWVcIiBbaXNCYWNrZ3JvdW5kVHJhbnNwYXJlbnRdPVwidHJ1ZVwiPjwvc21lLWxvYWRpbmctd2hlZWw+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpdGVtLmxvYWRpbmcgfHwgIWl0ZW0uaXNBc3luY1wiPlxyXG4gICAgPHAgY2xhc3M9XCJzbWUtcmVhZC1vbmx5LXRlbXBsYXRlXCIgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImlkQmFnLmxhYmVsU3BhbiArIGlcIiBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cImlkQmFnLmRldGFpbHNTcGFuICsgaVwiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaWNvblRlbXBsYXRlO2NvbnRleHQ6eyRpbXBsaWNpdDppdGVtLCBpbmRleDogaX1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgPHNwYW4gKm5nSWY9XCIhaXRlbS5saW5rICYmICFpdGVtLmFjdGlvblwiPnt7IHN0cmluZ2lmeVZhbHVlKGl0ZW0udmFsdWUpIH19PC9zcGFuPlxyXG4gICAgPC9wPlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPCEtLSBBY3Rpb24gbGluayAocm9sZSBidXR0b24pIC0tPlxyXG48bmctdGVtcGxhdGUgI2FjdGlvbkxpbmtUZW1wbGF0ZSBsZXQtaXRlbSBsZXQtaT1cImluZGV4XCI+XHJcbiAgPHA+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaWNvblRlbXBsYXRlO2NvbnRleHQ6eyRpbXBsaWNpdDppdGVtLCBpbmRleDogaX1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgIDxzcGFuICpuZ0lmPVwiaXRlbS5wcmVmaXhTdHJpbmdcIiBjbGFzcz1cInNtZS1wYWRkaW5nLXJpZ2h0LXhzXCI+e3sgaXRlbS5wcmVmaXhTdHJpbmcgfX08L3NwYW4+XHJcbiAgICA8YSB0YWJpbmRleD1cIjBcIiBjbGFzcz1cInNtZS1saW5rIHNtZS1mb2N1cy16b25lIHNtZS1hY3Rpb24tbGluay10ZW1wbGF0ZVwiIHJvbGU9XCJsaW5rXCIgKGNsaWNrKT1cIml0ZW0uYWN0aW9uKGl0ZW0pXCJcclxuICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cIihpZEJhZy5sYWJlbFNwYW4gKyBpKSArICcgJyArIChpZEJhZy52YWx1ZVNwYW4gKyBpKVwiXHJcbiAgICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiaWRCYWcuZGV0YWlsc1NwYW4gKyBpXCI+e3sgaXRlbS52YWx1ZSB9fTwvYT5cclxuICA8L3A+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48IS0tIEludGVybmFsIGxpbmsgLS0+XHJcbjxuZy10ZW1wbGF0ZSAjaW50ZXJuYWxMaW5rVGVtcGxhdGUgbGV0LWl0ZW0gbGV0LWk9XCJpbmRleFwiPlxyXG4gIDxwPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImljb25UZW1wbGF0ZTtjb250ZXh0OnskaW1wbGljaXQ6aXRlbSwgaW5kZXg6IGl9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICA8c3BhbiAqbmdJZj1cIml0ZW0ucHJlZml4U3RyaW5nXCIgY2xhc3M9XCJzbWUtcGFkZGluZy1yaWdodC14c1wiPnt7IGl0ZW0ucHJlZml4U3RyaW5nIH19PC9zcGFuPlxyXG4gICAgPGEgY2xhc3M9XCJzbWUtbGluayBzbWUtZm9jdXMtem9uZVwiIHJvbGU9XCJsaW5rXCIgW3JvdXRlckxpbmtdPVwiaXRlbS5saW5rXCJcclxuICAgICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJpZEJhZy5kZXRhaWxzU3BhbiArIGlcIj57eyBpdGVtLnZhbHVlIH19PC9hPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJzbWUtc2NyZWVuLXJlYWRlclwiIFtpZF09XCJpZEJhZy5kZXRhaWxzU3BhbiArIGlcIj57eyBnZXRJbnRlcm5hbExpbmtEZXNjcmlwdGlvbihpdGVtKSB9fTwvc3Bhbj5cclxuICA8L3A+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48IS0tIEV4dGVybmFsIGxpbmsgLS0+XHJcbjxuZy10ZW1wbGF0ZSAjZXh0ZXJuYWxMaW5rVGVtcGxhdGUgbGV0LWl0ZW0gbGV0LWk9XCJpbmRleFwiPlxyXG4gIDxwPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImljb25UZW1wbGF0ZTtjb250ZXh0OnskaW1wbGljaXQ6aXRlbSwgaW5kZXg6IGl9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICA8c3BhbiAqbmdJZj1cIml0ZW0ucHJlZml4U3RyaW5nXCIgY2xhc3M9XCJzbWUtcGFkZGluZy1yaWdodC14c1wiPnt7IGl0ZW0ucHJlZml4U3RyaW5nIH19PC9zcGFuPlxyXG4gICAgPGEgY2xhc3M9XCJzbWUtbGluayBzbWUtZm9jdXMtem9uZSBzbWUtaWNvbiBzbWUtaWNvbi1hZnRlciBzbWUtaWNvbi1vcGVuSW5OZXdXaW5kb3dcIiByb2xlPVwibGlua1wiIFtocmVmXT1cIml0ZW0ubGlua1wiIHRhcmdldD1cIl9ibGFua1wiXHJcbiAgICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiaWRCYWcuZGV0YWlsc1NwYW4gKyBpXCI+e3sgaXRlbS52YWx1ZSB9fTwvYT5cclxuICAgIDxzcGFuIGNsYXNzPVwic21lLXNjcmVlbi1yZWFkZXJcIiBbaWRdPVwiaWRCYWcuZGV0YWlsc1NwYW4gKyBpXCI+e3sgZ2V0RXh0ZXJuYWxMaW5rRGVzY3JpcHRpb24oaXRlbSkgfX08L3NwYW4+XHJcbiAgPC9wPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPCEtLSBJY29uIFRlbXBsYXRlIC0tPlxyXG48bmctdGVtcGxhdGUgI2ljb25UZW1wbGF0ZSBsZXQtaXRlbSBsZXQtaT1cImluZGV4XCI+XHJcbiAgPHNwYW4gKm5nSWY9XCIhIWl0ZW0uaWNvbkNsYXNzXCIgY2xhc3M9XCJzbWUtbWFyZ2luLXJpZ2h0LXhzIHNtZS1pY29uIHt7aXRlbS5pY29uQ2xhc3N9fVwiPjwvc3Bhbj5cclxuICA8c21lLXN0YXR1cy1pY29uICpuZ0lmPVwiaXRlbS5zdGF0dXMgIT09IHVuZGVmaW5lZCAmJiBpdGVtLnN0YXR1cyAhPT0gbnVsbCAmJiAhaXRlbS5pY29uQ2xhc3NcIiBjbGFzcz1cInNtZS1sYXlvdXQtaW5saW5lLWJsb2NrIHNtZS1tYXJnaW4tcmlnaHQteHMgXCJcclxuICAgIFtzdGF0dXNdPVwiaXRlbS5zdGF0dXNcIiBzaXplPVwiMTZweFwiPjwvc21lLXN0YXR1cy1pY29uPlxyXG48L25nLXRlbXBsYXRlPlxyXG4iXX0=
|
|
@@ -372,7 +372,7 @@ export class TabbedFormLoaderComponent extends ObjectPropertySchemaFieldLoaderCo
|
|
|
372
372
|
});
|
|
373
373
|
}
|
|
374
374
|
ngOnDestroy() {
|
|
375
|
-
this.subscriptions.forEach(sub => sub
|
|
375
|
+
this.subscriptions.forEach(sub => sub?.unsubscribe());
|
|
376
376
|
}
|
|
377
377
|
setupSchema(schema) {
|
|
378
378
|
for (let i = 0; i < schema.properties.length; i++) {
|
|
@@ -600,4 +600,4 @@ export class TabbedFormItemController {
|
|
|
600
600
|
});
|
|
601
601
|
}
|
|
602
602
|
}
|
|
603
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiYmVkLWZvcm0tbG9hZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2FuZ3VsYXIvc3JjL2NvbnRyb2xzL3NjaGVtYS90YWJiZWQtZm9ybS1sb2FkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYW5ndWxhci9zcmMvY29udHJvbHMvc2NoZW1hL3RhYmJlZC1mb3JtLWxvYWRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFpQyxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xHLE9BQU8sRUFBRSxjQUFjLEVBQTBCLE1BQU0sRUFBdUIsTUFBTSxpQkFBaUIsQ0FBQztBQUV0RyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFdEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFBRSx3Q0FBd0MsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ25ILE9BQU8sRUFBeUQsbUJBQW1CLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM3RyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7Ozs7Ozs7Ozs7O0lDVG5ELGtDQUEyRixhQUFBO0lBQ3RELFlBQWtDO0lBQUEsaUJBQUssRUFBQTs7O0lBQXZDLGVBQWtDO0lBQWxDLGtFQUFrQzs7O0lBVXpELDhCQUN3QztJQUFBLFlBQStCO0lBQUEsaUJBQUs7Ozs7SUFBMUUsNkRBQXFDO0lBQUMsZUFBK0I7SUFBL0IsMkRBQStCOzs7SUFXWiw0QkFDcEI7SUFBQSxpQkFB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UUFDekIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQztRQUMvQixPQUFPLElBQUksT0FBTyxDQUFPLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ3pDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUU7Z0JBQzFCLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUM7Z0JBQ3ZFLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtvQkFDcEMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEtBQUssQ0FBQztvQkFDaEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQztvQkFDOUIsT0FBTyxFQUFFLENBQUM7Z0JBQ2QsQ0FBQyxFQUNHLE1BQU0sQ0FBQyxFQUFFO29CQUNMLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUM7b0JBQ2hDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBQ3pCLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDbkIsQ0FBQyxDQUFDLENBQUM7WUFDWCxDQUFDLENBQUMsQ0FBQztRQUNQLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBPbkRlc3Ryb3ksIE9uSW5pdCwgUXVlcnlMaXN0LCBWaWV3Q2hpbGRyZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIFJvdXRlciwgUm91dGVyU3RhdGVTbmFwc2hvdCB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IEFwcENvbnRleHRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZS9hcHAtY29udGV4dC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29uZmlybWF0aW9uRGlhbG9nT3B0aW9ucyB9IGZyb20gJy4uL2RpYWxvZy9jb25maXJtYXRpb24tZGlhbG9nL2NvbmZpcm1hdGlvbi1kaWFsb2cuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRGlhbG9nU2VydmljZSB9IGZyb20gJy4uL2RpYWxvZy9kaWFsb2cuc2VydmljZSc7XHJcbmltcG9ydCB7IE9iamVjdFByb3BlcnR5U2NoZW1hRmllbGRMb2FkZXJDb21wb25lbnQsIFNjaGVtYUZpZWxkSG9zdENvbXBvbmVudCB9IGZyb20gJy4vc2NoZW1hLWZpZWxkLWhvc3QuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRGF0YVNjaGVtYSwgU2NoZW1hQXJyYXlQcm9wZXJ0eSwgU2NoZW1hT2JqZWN0UHJvcGVydHksIFNjaGVtYVByaW1pdGl2ZVR5cGUgfSBmcm9tICcuL3NjaGVtYS1tb2RlbHMnO1xyXG5pbXBvcnQgeyBTY2hlbWFEYXRhVHlwZVN0b3JlIH0gZnJvbSAnLi9zY2hlbWEtc3RvcmUnO1xyXG5pbXBvcnQgeyBTY2hlbWFVdGlsaXRpZXMgfSBmcm9tICcuL3NjaGVtYS11dGlsaXRpZXMnO1xyXG5AQ29tcG9uZW50KHtcclxuICAgIHRlbXBsYXRlVXJsOiAnLi90YWJiZWQtZm9ybS1sb2FkZXIuY29tcG9uZW50Lmh0bWwnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUYWJiZWRGb3JtTG9hZGVyQ29tcG9uZW50IGV4dGVuZHMgT2JqZWN0UHJvcGVydHlTY2hlbWFGaWVsZExvYWRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICAgIHByaXZhdGUgY2FuY2VsTmV4dFJvdXRlR3VhcmQgPSBmYWxzZTtcclxuICAgIHByaXZhdGUgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcclxuICAgIHByaXZhdGUgb3JpZ2luYWxEYXRhOiBGb3JtRGF0YTtcclxuICAgIEBWaWV3Q2hpbGRyZW4oU2NoZW1hRmllbGRIb3N0Q29tcG9uZW50KVxyXG4gICAgZGVjbGFyZSBwcm90ZWN0ZWQgZmllbGRIb3N0Q29tcG9uZW50czogUXVlcnlMaXN0PFNjaGVtYUZpZWxkSG9zdENvbXBvbmVudD47XHJcbiAgICBAVmlld0NoaWxkcmVuKCduYXZMaW5rJylcclxuICAgIHByaXZhdGUgbmF2TGlua0VsZW1lbnRzOiBRdWVyeUxpc3Q8RWxlbWVudFJlZj47XHJcbiAgICBwdWJsaWMgYmFzZVVybDogc3RyaW5nO1xyXG4gICAgcHVibGljIGFjdGl2ZUZvcm1OYW1lOiBzdHJpbmc7XHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcml2YXRlIGFwcENvbnRleHRTZXJ2aWNlOiBBcHBDb250ZXh0U2VydmljZSxcclxuICAgICAgICBwcml2YXRlIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcclxuICAgICAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxyXG4gICAgICAgIHByaXZhdGUgZGlhbG9nU2VydmljZTogRGlhbG9nU2VydmljZSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyByZWdpc3RlckRhdGFUeXBlKCkge1xyXG4gICAgICAgIFNjaGVtYURhdGFUeXBlU3RvcmUucmVnaXN0ZXJEYXRhVHlwZSh7XHJcbiAgICAgICAgICAgIHR5cGU6IFNjaGVtYVByaW1pdGl2ZVR5cGUuT2JqZWN0LFxyXG4gICAgICAgICAgICBmb3JtYXQ6ICd0YWJiZWQtZm9ybScsXHJcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnSXRcXCdzIGEgc3BlY2lhbCBmb3JtIGZpZWxkIGNvbnRyb2wgdGhhdCByZWN1cnNpdmVseSByZW5kZXJzIGFsbCB0aGUgcHJvcGVydGllcyBhcyBmaWVsZHMuICdcclxuICAgICAgICAgICAgICAgICsgJ1RoaXMgaXMgbGlrZSBhIGNvbnRhaW5lciBvZiBvdGhlciBzY2hlbWEgaXRlbXMuJyxcclxuICAgICAgICAgICAgbG9hZGVyQ29tcG9uZW50OiBUYWJiZWRGb3JtTG9hZGVyQ29tcG9uZW50LFxyXG4gICAgICAgICAgICBvcHRpb25Qcm9wZXJ0aWVzOiBbXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogU2NoZW1hUHJpbWl0aXZlVHlwZS5Cb29sZWFuLFxyXG4gICAgICAgICAgICAgICAgICAgIGZvcm1hdDogJ2NoZWNrYm94JyxcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiAnc3VwcG9ydFJvdXRlJyxcclxuICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2FjdHVhbF9zdHJpbmc6U3VwcG9ydCBSb3V0ZScsXHJcbiAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IHtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgPFNjaGVtYUFycmF5UHJvcGVydHk+e1xyXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IFNjaGVtYVByaW1pdGl2ZVR5cGUuQXJyYXksXHJcbiAgICAgICAgICAgICAgICAgICAgZm9ybWF0OiAnc2ltcGxlLWxpc3QnLFxyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6ICdncm91cHMnLFxyXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnYWN0dWFsX3N0cmluZzpHcm91cHMnLFxyXG4gICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICBpdGVtOiA8U2NoZW1hT2JqZWN0UHJvcGVydHk+e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBTY2hlbWFQcmltaXRpdmVUeXBlLk9iamVjdCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0OiAnZGVmYXVsdCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uQ291bnQ6IDEsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaWRlSGVhZGVyOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbGxhcHNpYmxlOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeWVzOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZTogJ2NvbGxhcHNlZCdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydGllczogW1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFNjaGVtYVByaW1pdGl2ZVR5cGUuU3RyaW5nLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdDogJ3Jlc291cmNlLXN0cmluZy1waWNrZXInLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdkaXNwbGF5TmFtZScsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdhY3R1YWxfc3RyaW5nOkRpc3BsYXkgTmFtZScsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U2NoZW1hQXJyYXlQcm9wZXJ0eT57XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogU2NoZW1hUHJpbWl0aXZlVHlwZS5BcnJheSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQ6ICdzaW1wbGUtbGlzdCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2Zvcm1zJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2FjdHVhbF9zdHJpbmc6Rm9ybXMnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtOiA8U2NoZW1hT2JqZWN0UHJvcGVydHk+e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBTY2hlbWFQcmltaXRpdmVUeXBlLk9iamVjdCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0OiAnZGVmYXVsdCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uQ291bnQ6IDEsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaWRlSGVhZGVyOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbGxhcHNpYmxlOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeWVzOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZTogJ2NvbGxhcHNlZCdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydGllczogW1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFNjaGVtYVByaW1pdGl2ZVR5cGUuU3RyaW5nLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdDogJ3RleHRib3gnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICduYW1lJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2FjdHVhbF9zdHJpbmc6TmFtZScsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGVsaW5lOiBmYWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogU2NoZW1hUHJpbWl0aXZlVHlwZS5TdHJpbmcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0OiAncmVzb3VyY2Utc3RyaW5nLXBpY2tlcicsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2Rpc3BsYXlOYW1lJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2FjdHVhbF9zdHJpbmc6RGlzcGxheSBOYW1lJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogU2NoZW1hUHJpbWl0aXZlVHlwZS5TdHJpbmcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0OiAndGV4dGJveCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2ljb24nLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnYWN0dWFsX3N0cmluZzpJY29uJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdWx0aXBsZWxpbmU6IGZhbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBTY2hlbWFQcmltaXRpdmVUeXBlLlN0cmluZyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQ6ICdyZXNvdXJjZS1zdHJpbmctcGlja2VyJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnc2F2ZUJ1dHRvblRleHQnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnYWN0dWFsX3N0cmluZzpTYXZlIGJ1dHRvbiB0ZXh0JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiAncmVzb3VyY2VzOnN0cmluZ3M6TXNmdFNtZVNoZWxsLkFuZ3VsYXIuQ29tbW9uLnNhdmUnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGVsaW5lOiBmYWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogU2NoZW1hUHJpbWl0aXZlVHlwZS5TdHJpbmcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0OiAncmVzb3VyY2Utc3RyaW5nLXBpY2tlcicsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2Rpc2NhcmRCdXR0b25UZXh0JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2FjdHVhbF9zdHJpbmc6RGlzY2FyZCBCdXR0b24gVGV4dCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogJ3Jlc291cmNlczpzdHJpbmdzOk1zZnRTbWVTaGVsbC5Bbmd1bGFyLkNvbW1vbi5kaXNjYXJkJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxlbGluZTogZmFsc2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFNjaGVtYVByaW1pdGl2ZVR5cGUuU3RyaW5nLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdDogJ3Jlc291cmNlLXN0cmluZy1waWNrZXInLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdjbG9zZUJ1dHRvblRleHQnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnYWN0dWFsX3N0cmluZzpDYW5jZWwgQnV0dG9uIFRleHQnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWU6ICdyZXNvdXJjZXM6c3RyaW5nczpNc2Z0U21lU2hlbGwuQW5ndWxhci5Db21tb24uY2xvc2UnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGVsaW5lOiBmYWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogU2NoZW1hUHJpbWl0aXZlVHlwZS5Cb29sZWFuLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdDogJ3RvZ2dsZS1zd2l0Y2gnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdoaWRlRm9vdGVyQWN0aW9uQnV0dG9uJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2FjdHVhbF9zdHJpbmc6SGlkZSBhY3Rpb24gYnV0dG9ucyBpbiBmb290ZXInXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtcHR5QnlEZWZhdWx0OiBmYWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgXSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZW1wdHlCeURlZmF1bHQ6IGZhbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICBwcmVkZWZpbmVkT2JqZWN0UHJvcGVydGllczogW1xyXG4gICAgICAgICAgICAgICAgPFNjaGVtYU9iamVjdFByb3BlcnR5PntcclxuICAgICAgICAgICAgICAgICAgICB0eXBlOiBTY2hlbWFQcmltaXRpdmVUeXBlLk9iamVjdCxcclxuICAgICAgICAgICAgICAgICAgICBmb3JtYXQ6ICdkZWZhdWx0JyxcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiAnPGZvcm0gMT4nLFxyXG4gICAgICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6IFtdXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgPFNjaGVtYU9iamVjdFByb3BlcnR5PntcclxuICAgICAgICAgICAgICAgICAgICB0eXBlOiBTY2hlbWFQcmltaXRpdmVUeXBlLk9iamVjdCxcclxuICAgICAgICAgICAgICAgICAgICBmb3JtYXQ6ICdkZWZhdWx0JyxcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiAnPGZvcm0gMj4nLFxyXG4gICAgICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6IFtdXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgPFNjaGVtYU9iamVjdFByb3BlcnR5PntcclxuICAgICAgICAgICAgICAgICAgICB0eXBlOiBTY2hlbWFQcmltaXRpdmVUeXBlLk9iamVjdCxcclxuICAgICAgICAgICAgICAgICAgICBmb3JtYXQ6ICdkZWZhdWx0JyxcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiAnPGZvcm0gMz4nLFxyXG4gICAgICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6IFtdXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICAgIHRhZ3M6IFsnZm9ybS1jb250YWluZXInXVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmJhc2VVcmwgPSB0aGlzLmdldEJhc2VVcmwoKTtcclxuICAgICAgICBpZiAodGhpcy5iYXNlVXJsLmluZGV4T2YoJz8nKSAhPT0gLTEpIHtcclxuICAgICAgICAgICAgdGhpcy5iYXNlVXJsID0gdGhpcy5iYXNlVXJsLnNwbGl0KCc/JylbMF07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMuYWN0aXZhdGVkUm91dGUucGFyYW1zLnN1YnNjcmliZShwYXJhbXMgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmFjdGl2ZUZvcm1OYW1lID0gcGFyYW1zLm5hbWU7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmFjdGl2ZUZvcm1OYW1lKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmV4ZWN1dGVGb3JtQWN0aW9uKCdzd2l0Y2ggZm9ybScsIHRoaXMuYWN0aXZlRm9ybU5hbWUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSkpO1xyXG4gICAgICAgIHRoaXMub3JpZ2luYWxEYXRhID0gU2NoZW1hVXRpbGl0aWVzLmRlZXBDb3B5KHRoaXMuZGF0YSk7XHJcblxyXG4gICAgICAgIGZvciAoY29uc3QgZm9ybU5hbWUgaW4gdGhpcy5kYXRhKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmRhdGEuaGFzT3duUHJvcGVydHkoZm9ybU5hbWUpKSB7XHJcbiAgICAgICAgICAgICAgICAoKGN1cnJlbnRGb3JtTmFtZTogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5leGVjdXRlRm9ybUFjdGlvbignaW5pdGlhbGl6ZSBmb3JtJywge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtTmFtZTogY3VycmVudEZvcm1OYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvblN1Y2NlZWRlZDogKGZvcm1EYXRhKTogdm9pZCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGFbY3VycmVudEZvcm1OYW1lXSA9IGZvcm1EYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vcmlnaW5hbERhdGFbY3VycmVudEZvcm1OYW1lXSA9IFNjaGVtYVV0aWxpdGllcy5kZWVwQ29weShmb3JtRGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5maWVsZEhvc3RDb21wb25lbnRzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZmllbGRIb3N0Q29tcG9uZW50cyA9IHRoaXMuZmllbGRIb3N0Q29tcG9uZW50cy50b0FycmF5KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZmllbGRIb3N0Q29tcG9uZW50ID0gZmllbGRIb3N0Q29tcG9uZW50cy5maW5kKGl0ZW0gPT4gaXRlbS5wcm9wZXJ0eVNjaGVtYS5uYW1lID09PSBjdXJyZW50Rm9ybU5hbWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaWVsZEhvc3RDb21wb25lbnQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRIb3N0Q29tcG9uZW50Lm1hcmtBc1ByaXN0aW5lKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9KShmb3JtTmFtZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMuYWN0aXZlRm9ybU5hbWUpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubmF2TGlua0VsZW1lbnRzLmZpcnN0Lm5hdGl2ZUVsZW1lbnQuY2xpY2soKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgcHVibGljIG5nT25EZXN0cm95KCkge1xyXG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKHN1YiA9PiBzdWIudW5zdWJzY3JpYmUoKSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHNldHVwU2NoZW1hKHNjaGVtYTogRGF0YVNjaGVtYSk6IHZvaWQge1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2NoZW1hLnByb3BlcnRpZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgc2NoZW1hLnByb3BlcnRpZXNbaV0uZGlzYWJsZWRDb25kaXRpb24gPSAnZm9ybUNvbnRyb2xsZXIuY29udHJvbGxlci4nICsgc2NoZW1hLnByb3BlcnRpZXNbaV0ubmFtZSArICcuaXNEaXNhYmxlZCc7XHJcbiAgICAgICAgICAgIHNjaGVtYS5wcm9wZXJ0aWVzW2ldLm9wdGlvbnMuYnVzeUNvbmRpdGlvbiA9ICdmb3JtQ29udHJvbGxlci5jb250cm9sbGVyLicgKyBzY2hlbWEucHJvcGVydGllc1tpXS5uYW1lICsgJy5pc0J1c3knO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3dpdGNoRm9ybShmb3JtTmFtZTogc3RyaW5nKSB7XHJcbiAgICAgICAgdGhpcy5hY3RpdmVGb3JtTmFtZSA9IGZvcm1OYW1lO1xyXG4gICAgICAgIHRoaXMuZXhlY3V0ZUZvcm1BY3Rpb24oJ3N3aXRjaCBmb3JtJywgdGhpcy5hY3RpdmVGb3JtTmFtZSk7XHJcbiAgICAgICAgdGhpcy5jYW5jZWxOZXh0Um91dGVHdWFyZCA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHNldEZvcm1PcmlnaW5hbERhdGEoZm9ybU5hbWUsIGRhdGE6IGFueSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMub3JpZ2luYWxEYXRhW2Zvcm1OYW1lXSA9IFNjaGVtYVV0aWxpdGllcy5kZWVwQ29weShkYXRhKTtcclxuICAgIH1cclxuICAgIHB1YmxpYyBpc0Zvcm1CdXN5KGZvcm1OYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgICAgICBsZXQgcmVzdWx0ID0gZmFsc2U7XHJcbiAgICAgICAgY29uc3QgY3VycmVudEZvcm1TY2hlbWEgPSBTY2hlbWFVdGlsaXRpZXMuZ2V0UHJvcGVydHlTY2hlbWFCeU5hbWUodGhpcy5wcm9wZXJ0eVNjaGVtYSwgdGhpcy5hY3RpdmVGb3JtTmFtZSk7XHJcbiAgICAgICAgaWYgKGN1cnJlbnRGb3JtU2NoZW1hICYmIGN1cnJlbnRGb3JtU2NoZW1hLm9wdGlvbnMgJiYgY3VycmVudEZvcm1TY2hlbWEub3B0aW9ucy5idXN5Q29uZGl0aW9uKSB7XHJcbiAgICAgICAgICAgIHJlc3VsdCA9IHRoaXMuZXZhbEV4cHJlc3Npb24oY3VycmVudEZvcm1TY2hlbWEub3B0aW9ucy5idXN5Q29uZGl0aW9uKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCFyZXN1bHQpIHtcclxuICAgICAgICAgICAgcmVzdWx0ID0gdGhpcy5ldmFsRXhwcmVzc2lvbihjdXJyZW50Rm9ybVNjaGVtYS5kaXNhYmxlZENvbmRpdGlvbik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9XHJcbiAgICBwdWJsaWMgaXNGb3JtRGlydHkoZm9ybU5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGxldCByZXN1bHQgPSBmYWxzZTtcclxuICAgICAgICBpZiAodGhpcy5maWVsZEhvc3RDb21wb25lbnRzKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGZpZWxkSG9zdENvbXBvbmVudHMgPSB0aGlzLmZpZWxkSG9zdENvbXBvbmVudHMudG9BcnJheSgpO1xyXG4gICAgICAgICAgICBjb25zdCBmaWVsZEhvc3RDb21wb25lbnQgPSBmaWVsZEhvc3RDb21wb25lbnRzLmZpbmQoaXRlbSA9PiBpdGVtLnByb3BlcnR5U2NoZW1hLm5hbWUgPT09IGZvcm1OYW1lKTtcclxuICAgICAgICAgICAgaWYgKGZpZWxkSG9zdENvbXBvbmVudCkge1xyXG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gZmllbGRIb3N0Q29tcG9uZW50LmlzRGlydHkoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXRGb290ZXJCdXR0b25IaWRlT3B0aW9uKGZvcm1OYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgICAgICBsZXQgcmVzdWx0ID0gZmFsc2U7XHJcblxyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5wcm9wZXJ0eVNjaGVtYS5vcHRpb25zLmdyb3Vwcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMucHJvcGVydHlTY2hlbWEub3B0aW9ucy5ncm91cHNbaV0uZm9ybXMubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnByb3BlcnR5U2NoZW1hLm9wdGlvbnMuZ3JvdXBzW2ldLmZvcm1zW2pdLm5hbWUgPT09IGZvcm1OYW1lKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gdGhpcy5wcm9wZXJ0eVNjaGVtYS5vcHRpb25zLmdyb3Vwc1tpXS5mb3Jtc1tqXS5oaWRlRm9vdGVyQWN0aW9uQnV0dG9uO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfVxyXG4gICAgcHVibGljIGdldEZvb3RlckJ1dHRvblRleHQoZm9ybU5hbWU6IHN0cmluZywgYnV0dG9uOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgICAgIGxldCByZXN1bHQgPSAnJztcclxuXHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnByb3BlcnR5U2NoZW1hLm9wdGlvbnMuZ3JvdXBzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5wcm9wZXJ0eVNjaGVtYS5vcHRpb25zLmdyb3Vwc1tpXS5mb3Jtcy5sZW5ndGg7IGorKykge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMucHJvcGVydHlTY2hlbWEub3B0aW9ucy5ncm91cHNbaV0uZm9ybXNbal0ubmFtZSA9PT0gZm9ybU5hbWUpIHtcclxuICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGJ1dHRvbikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdzYXZlJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHRoaXMubG9jYWxpemUodGhpcy5wcm9wZXJ0eVNjaGVtYS5vcHRpb25zLmdyb3Vwc1tpXS5mb3Jtc1tqXS5zYXZlQnV0dG9uVGV4dCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZGlzY2FyZCc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSB0aGlzLmxvY2FsaXplKHRoaXMucHJvcGVydHlTY2hlbWEub3B0aW9ucy5ncm91cHNbaV0uZm9ybXNbal0uZGlzY2FyZEJ1dHRvblRleHQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2Nsb3NlJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHRoaXMubG9jYWxpemUodGhpcy5wcm9wZXJ0eVNjaGVtYS5vcHRpb25zLmdyb3Vwc1tpXS5mb3Jtc1tqXS5jbG9zZUJ1dHRvblRleHQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfVxyXG4gICAgcHVibGljIGlzRm9ybVZhbGlkKGZvcm1OYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgICAgICBsZXQgcmVzdWx0ID0gZmFsc2U7XHJcbiAgICAgICAgaWYgKHRoaXMuZmllbGRIb3N0Q29tcG9uZW50cykge1xyXG4gICAgICAgICAgICBjb25zdCBmaWVsZEhvc3RDb21wb25lbnRzID0gdGhpcy5maWVsZEhvc3RDb21wb25lbnRzLnRvQXJyYXkoKTtcclxuICAgICAgICAgICAgY29uc3QgZmllbGRIb3N0Q29tcG9uZW50ID0gZmllbGRIb3N0Q29tcG9uZW50cy5maW5kKGl0ZW0gPT4gaXRlbS5wcm9wZXJ0eVNjaGVtYS5uYW1lID09PSBmb3JtTmFtZSk7XHJcbiAgICAgICAgICAgIGlmIChmaWVsZEhvc3RDb21wb25lbnQpIHtcclxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IGZpZWxkSG9zdENvbXBvbmVudC5pc1ZhbGlkKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH1cclxuICAgIHB1YmxpYyBvblNhdmVDbGljayhmb3JtTmFtZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5leGVjdXRlRm9ybUFjdGlvbignc3VibWl0Jywge1xyXG4gICAgICAgICAgICBmb3JtTmFtZTogZm9ybU5hbWUsXHJcbiAgICAgICAgICAgIG9uU3VjY2VlZGVkOiAoKTogdm9pZCA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5maWVsZEhvc3RDb21wb25lbnRzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZmllbGRIb3N0Q29tcG9uZW50cyA9IHRoaXMuZmllbGRIb3N0Q29tcG9uZW50cy50b0FycmF5KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZmllbGRIb3N0Q29tcG9uZW50ID0gZmllbGRIb3N0Q29tcG9uZW50cy5maW5kKGl0ZW0gPT4gaXRlbS5wcm9wZXJ0eVNjaGVtYS5uYW1lID09PSBmb3JtTmFtZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpZWxkSG9zdENvbXBvbmVudCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZEhvc3RDb21wb25lbnQubWFya0FzUHJpc3RpbmUoKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIHB1YmxpYyBvbkRpc2NhcmRDbGljayhmb3JtTmFtZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICAgICAgbGV0IGZvcm1EYXRhT3ZlcnJpZGluZyA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5leGVjdXRlRm9ybUFjdGlvbigncmVzZXQgZm9ybScsIHtcclxuICAgICAgICAgICAgZm9ybU5hbWU6IGZvcm1OYW1lLFxyXG4gICAgICAgICAgICBvblN1Y2NlZWRlZDogKGZvcm1EYXRhKTogdm9pZCA9PiB7XHJcbiAgICAgICAgICAgICAgICBmb3JtRGF0YU92ZXJyaWRpbmcgPSBmb3JtRGF0YTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLmRhdGFbZm9ybU5hbWVdID0gZm9ybURhdGFPdmVycmlkaW5nIHx8IFNjaGVtYVV0aWxpdGllcy5kZWVwQ29weSh0aGlzLm9yaWdpbmFsRGF0YVtmb3JtTmFtZV0pO1xyXG4gICAgICAgIGlmICh0aGlzLmZpZWxkSG9zdENvbXBvbmVudHMpIHtcclxuICAgICAgICAgICAgY29uc3QgZmllbGRIb3N0Q29tcG9uZW50cyA9IHRoaXMuZmllbGRIb3N0Q29tcG9uZW50cy50b0FycmF5KCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGZpZWxkSG9zdENvbXBvbmVudCA9IGZpZWxkSG9zdENvbXBvbmVudHMuZmluZChpdGVtID0+IGl0ZW0ucHJvcGVydHlTY2hlbWEubmFtZSA9PT0gZm9ybU5hbWUpO1xyXG4gICAgICAgICAgICBpZiAoZmllbGRIb3N0Q29tcG9uZW50KSB7XHJcbiAgICAgICAgICAgICAgICBmaWVsZEhvc3RDb21wb25lbnQubWFya0FzUHJpc3RpbmUoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHB1YmxpYyBjYW5EZWFjdGl2YXRlKFxyXG4gICAgICAgIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LFxyXG4gICAgICAgIHN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90LFxyXG4gICAgICAgIGNvbmZpcm1hdGlvbkRpYWxvZ09wdGlvbnM6IENvbmZpcm1hdGlvbkRpYWxvZ09wdGlvbnNcclxuICAgICk6IE9ic2VydmFibGU8Ym9vbGVhbj4gfCBQcm9taXNlPGJvb2xlYW4+IHwgYm9vbGVhbiB7XHJcbiAgICAgICAgbGV0IGNvbnRpbnVlTmF2aWdhdGlvbjogT2JzZXJ2YWJsZTxib29sZWFuPiB8IFByb21pc2U8Ym9vbGVhbj4gfCBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLmNhbmNlbE5leHRSb3V0ZUd1YXJkKSB7XHJcbiAgICAgICAgICAgIGxldCBpc0Zvcm1EaXJ0eSA9IGZhbHNlO1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGZvcm1OYW1lIGluIHRoaXMuZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZGF0YS5oYXNPd25Qcm9wZXJ0eShmb3JtTmFtZSkpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5pc0Zvcm1EaXJ0eShmb3JtTmFtZSkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXNGb3JtRGlydHkgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGlzRm9ybURpcnR5KSB7XHJcbiAgICAgICAgICAgICAgICBjb250aW51ZU5hdmlnYXRpb24gPSB0aGlzLmRpYWxvZ1NlcnZpY2VcclxuICAgICAgICAgICAgICAgICAgICAuc2hvd0NvbmZpcm1hdGlvbihjb25maXJtYXRpb25EaWFsb2dPcHRpb25zKVxyXG4gICAgICAgICAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXAoKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIGRlZmF1bHQgaXMgdG8gY29udGludWUgZWRpdGluZ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZGlzY2FyZENoYW5nZXMgPSAhcmVzdWx0LmNvbmZpcm1lZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBkaXNjYXJkQ2hhbmdlcztcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSkpO1xyXG5cclxuICAgICAgICAgICAgICAgIHJldHVybiBjb250aW51ZU5hdmlnYXRpb247XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuY2FuY2VsTmV4dFJvdXRlR3VhcmQgPSBmYWxzZTtcclxuXHJcbiAgICAgICAgcmV0dXJuIGNvbnRpbnVlTmF2aWdhdGlvbjtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgb25DbG9zZUNsaWNrKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuZXhlY3V0ZUZvcm1BY3Rpb24oJ2Nsb3NlJyk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBnZXRCYXNlVXJsKCk6IHN0cmluZyB7XHJcbiAgICAgICAgbGV0IHJlc3VsdCA9IHRoaXMucm91dGVyLnVybDtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucHJvcGVydHlTY2hlbWEucHJvcGVydGllcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICByZXN1bHQgPSByZXN1bHQucmVwbGFjZSgnL2Zvcm0vJyArIHRoaXMucHJvcGVydHlTY2hlbWEucHJvcGVydGllc1tpXS5uYW1lLCAnJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBkZWNvZGVVUkkocmVzdWx0KTtcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFRhYmJlZEZvcm1Db250cm9sbGVyIHtcclxuICAgIHB1YmxpYyBjb250cm9sbGVyOiB7IFtmb3JtTmFtZTogc3RyaW5nXTogVGFiYmVkRm9ybUl0ZW1Db250cm9sbGVyPGFueSwgYW55PiB9ID0ge307XHJcbn1cclxuXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBUYWJiZWRGb3JtSXRlbUNvbnRyb2xsZXI8VERhdGFNb2RlbCwgVFZpZXdNb2RlbD4ge1xyXG4gICAgcHJpdmF0ZSBpc0J1c3lJbnRlcm5hbCA9IHRydWU7XHJcbiAgICBwcml2YXRlIGlzRGlzYWJsZWRJbnRlcm5hbCA9IGZhbHNlO1xyXG5cclxuICAgIHB1YmxpYyBhYnN0cmFjdCBsb2FkRGF0YSgpOiBQcm9taXNlPFREYXRhTW9kZWw+O1xyXG4gICAgcHVibGljIGFic3RyYWN0IGNvbnZlcnREYXRhTW9kZWxUb1ZpZXdNb2RlbChkYXRhTW9kZWw6IFREYXRhTW9kZWwpOiBUVmlld01vZGVsO1xyXG4gICAgcHVibGljIGFic3RyYWN0IG1lcmdlVmlld01vZGVsVG9EYXRhTW9kZWwodmlld01vZGVsOiBUVmlld01vZGVsLCBkYXRhTW9kZWw6IFREYXRhTW9kZWwpOiBURGF0YU1vZGVsO1xyXG4gICAgcHVibGljIGFic3RyYWN0IHN1Ym1pdERhdGEoZGF0YU1vZGVsOiBURGF0YU1vZGVsKTogUHJvbWlzZTx2b2lkPjtcclxuICAgIHB1YmxpYyBhYnN0cmFjdCBvblNhdmluZyh2aWV3TW9kZWw6IFRWaWV3TW9kZWwpOiB2b2lkO1xyXG4gICAgcHVibGljIGFic3RyYWN0IG9uRmV0Y2hFcnJvcihlcnJvcjogYW55KTogdm9pZDtcclxuICAgIHB1YmxpYyBhYnN0cmFjdCBvblNhdmVFcnJvcihlcnJvcjogYW55KTogdm9pZDtcclxuICAgIHB1YmxpYyBhYnN0cmFjdCBvblNhdmVTdWNjZXNzKHZpZXdNb2RlbDogVFZpZXdNb2RlbCk6IHZvaWQ7XHJcblxyXG4gICAgcHVibGljIGlzQnVzeSgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5pc0J1c3lJbnRlcm5hbDtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgaXNEaXNhYmxlZCgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5pc0Rpc2FibGVkSW50ZXJuYWw7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGluaXRpYWxpemUoKTogUHJvbWlzZTxUVmlld01vZGVsPiB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPFRWaWV3TW9kZWw+KChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5sb2FkRGF0YSgpLnRoZW4ocmVzdWx0ID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHZpZXdNb2RlbCA9IHRoaXMuY29udmVydERhdGFNb2RlbFRvVmlld01vZGVsKHJlc3VsdCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmlzQnVzeUludGVybmFsID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICByZXNvbHZlKHZpZXdNb2RlbCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzYXZlRGF0YSh2aWV3TW9kZWw6IFRWaWV3TW9kZWwpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgICAgICB0aGlzLm9uU2F2aW5nKHZpZXdNb2RlbCk7XHJcbiAgICAgICAgdGhpcy5pc0Rpc2FibGVkSW50ZXJuYWwgPSB0cnVlO1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubG9hZERhdGEoKS50aGVuKHJlc3VsdCA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdEYXRhTW9kZWwgPSB0aGlzLm1lcmdlVmlld01vZGVsVG9EYXRhTW9kZWwodmlld01vZGVsLCByZXN1bHQpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zdWJtaXREYXRhKG5ld0RhdGFNb2RlbCkudGhlbigoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0Rpc2FibGVkSW50ZXJuYWwgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uU2F2ZVN1Y2Nlc3Modmlld01vZGVsKTtcclxuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHJlYXNvbiA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaXNEaXNhYmxlZEludGVybmFsID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub25TYXZlRXJyb3IocmVhc29uKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KHJlYXNvbik7XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJzbWUtc2V0dGluZ3Mgc21lLWxheW91dC1hYnNvbHV0ZS1waG9uZS11cCBzbWUtcG9zaXRpb24taW5zZXQtbm9uZSBzbWUtYXJyYW5nZS1zdGFjay12IHNtZS1wYWRkaW5nLWJvdHRvbS1sZ1wiPlxyXG4gIDxoZWFkZXIgKm5nSWY9XCJwcm9wZXJ0eVNjaGVtYS5sYWJlbFwiIGNsYXNzPVwic21lLXBvc2l0aW9uLWZsZXgtbm9uZSBzbWUtbGF5b3V0LXRvb2wtaGVhZGVyXCI+XHJcbiAgICA8aDMgY2xhc3M9XCJzbWUtcG9zaXRpb24tZmxleC1ub25lXCI+e3tsb2NhbGl6ZShwcm9wZXJ0eVNjaGVtYS5sYWJlbCl9fTwvaDM+XHJcbiAgPC9oZWFkZXI+XHJcbiAgPGRpdiBjbGFzcz1cInNtZS1wb3NpdGlvbi1mbGV4LWF1dG8gc21lLWFycmFuZ2Utc3RhY2staCBzbWUtbGF5b3V0LXJlbGF0aXZlXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwic21lLWxheW91dC1hYnNvbHV0ZSBzbWUtcG9zaXRpb24taW5zZXQtbm9uZSBzbWUtYXJyYW5nZS1zdGFjay1oXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJzbWUtc2V0dGluZ3MtbmF2aWdhdGlvbiBzbWUtcG9zaXRpb24tZmxleC1ub25lXCI+XHJcbiAgICAgICAgPG5hdiByb2xlPVwidGFibGlzdFwiIGNsYXNzPVwic21lLXBhZGRpbmctaG9yaXpvbnRhbC1sZyBzbWUtYXJyYW5nZS1zdGFjay12XCI+XHJcbiAgICAgICAgICA8dWxcclxuICAgICAgICAgICAgY2xhc3M9XCJzbWUtcG9zaXRpb24tZmxleC1hdXRvIHNtZS1hcnJhbmdlLXN0YWNrLXYgc21lLWFycmFuZ2Utb3ZlcmZsb3ctaGlkZS14IHNtZS1hcnJhbmdlLW92ZXJmbG93LWF1dG8teVwiPlxyXG4gICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IGdyb3VwIG9mIHByb3BlcnR5U2NoZW1hLm9wdGlvbnMuZ3JvdXBzXCI+XHJcbiAgICAgICAgICAgICAgPG5hdj5cclxuICAgICAgICAgICAgICAgIDxoNSBjbGFzcz1cInNtZS1tYXJnaW4tdG9wLXhzIHNtZS1tYXJnaW4tYm90dG9tLXhzXCIgKm5nSWY9XCJncm91cC5kaXNwbGF5TmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCJsb2NhbGl6ZShncm91cC5kaXNwbGF5TmFtZSlcIj57e2xvY2FsaXplKGdyb3VwLmRpc3BsYXlOYW1lKX19PC9oNT5cclxuICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGZvcm0gb2YgZ3JvdXAuZm9ybXNcIj5cclxuICAgICAgICAgICAgICAgICAgPGEgKm5nSWY9XCIhY29udGV4dC5pc0VkaXRvck1vZGUgJiYgcHJvcGVydHlTY2hlbWEub3B0aW9ucy5zdXBwb3J0Um91dGVcIiAjbmF2TGlua1xyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic21lLXBhZGRpbmctc3F1aXNoLXYtc20gc21lLWFycmFuZ2Utc3RhY2staCBzbWUtc2NoZW1lLW5hdi1pdGVtXCJcclxuICAgICAgICAgICAgICAgICAgICByb2xlPVwidGFiXCIgW3RpdGxlXT1cImxvY2FsaXplKGZvcm0uZGlzcGxheU5hbWUpXCJcclxuICAgICAgICAgICAgICAgICAgICBbcm91dGVyTGlua109XCJiYXNlVXJsKycvZm9ybS8nK2Zvcm0ubmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLnNtZS1hY3RpdmVdPVwiZm9ybS5uYW1lPT09YWN0aXZlRm9ybU5hbWVcIiAoY2xpY2spPVwic3dpdGNoRm9ybShmb3JtLm5hbWUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNtZS1pY29uIHNtZS1tYXJnaW4tcmlnaHQteHMge3tmb3JtLmljb259fVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZWxsaXBzaXMgc21lLXBvc2l0aW9uLWZsZXgtYXV0b1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3tsb2NhbGl6ZShmb3JtLmRpc3BsYXlOYW1lKX19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzbWUtd2lkdGgtc20gc21lLXBvc2l0aW9uLWNlbnRlci1oLWlubGluZVwiPjxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaXNGb3JtRGlydHkoZm9ybS5uYW1lKVwiPio8L3NwYW4+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgICAgPGEgKm5nSWY9XCIhKCFjb250ZXh0LmlzRWRpdG9yTW9kZSAmJiBwcm9wZXJ0eVNjaGVtYS5vcHRpb25zLnN1cHBvcnRSb3V0ZSlcIiAjbmF2TGlua1xyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic21lLXBhZGRpbmctc3F1aXNoLXYtc20gc21lLWFycmFuZ2Utc3RhY2staCBzbWUtc2NoZW1lLW5hdi1pdGVtXCJcclxuICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwibG9jYWxpemUoZm9ybS5kaXNwbGF5TmFtZSlcIiByb2xlPVwidGFiXCIgKGNsaWNrKT1cInN3aXRjaEZvcm0oZm9ybS5uYW1lKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLnNtZS1hY3RpdmVdPVwiZm9ybS5uYW1lPT09YWN0aXZlRm9ybU5hbWVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic21lLWljb24gc21lLW1hcmdpbi1yaWdodC14cyB7e2Zvcm0uaWNvbn19XCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJlbGxpcHNpcyBzbWUtcG9zaXRpb24tZmxleC1hdXRvXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7e2xvY2FsaXplKGZvcm0uZGlzcGxheU5hbWUpfX1cclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNtZS13aWR0aC1zbSBzbWUtcG9zaXRpb24tY2VudGVyLWgtaW5saW5lXCI+PHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpc0Zvcm1EaXJ0eShmb3JtLm5hbWUpXCI+Kjwvc3Bhbj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9uYXY+XHJcbiAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICA8L3VsPlxyXG4gICAgICAgIDwvbmF2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInNtZS1wb3NpdGlvbi1mbGV4LWF1dG8gc21lLWxheW91dC1yZWxhdGl2ZVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzbWUtbGF5b3V0LWFic29sdXRlIHNtZS1wb3NpdGlvbi1pbnNldC1ub25lIHNtZS1hcnJhbmdlLW92ZXJmbG93LWF1dG9cIj5cclxuICAgICAgICAgIDxmb3JtICpuZ0Zvcj1cImxldCBwcm9wZXJ0eSBvZiBwcm9wZXJ0eVNjaGVtYS5wcm9wZXJ0aWVzOyBsZXQgaSA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgIDxkaXYgW2NsYXNzLnNtZS1sYXlvdXQtbm9uZV09XCJhY3RpdmVGb3JtTmFtZSE9PXByb3BlcnR5Lm5hbWVcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwic21lLWxheW91dC1hYnNvbHV0ZS1waG9uZS11cCBzbWUtcG9zaXRpb24taW5zZXQtbm9uZSBzbWUtYXJyYW5nZS1zdGFjay12XCI+XHJcbiAgICAgICAgICAgICAgPCEtLSA8c21lLXNjaGVtYS1maWVsZC1ob3N0ICNmaWVsZEhvc3QgW3Byb3BlcnR5U2NoZW1hXT1cInByb3BlcnR5XCIgWyhkYXRhKV09XCJkYXRhW3Byb3BlcnR5Lm5hbWVdXCJcclxuICAgICAgICAgIFtjb250ZXh0XT1cImNvbnRleHRcIiAoZGF0YU1hcmtlZEFzRGlydHkpPVwibWFya0RhdGFBc0RpcnR5KHByb3BlcnR5Lm5hbWUpXCIgY2xhc3M9XCJzbWUtcG9zaXRpb24tZmxleC1hdXRvXCI+XHJcbiAgICAgICAgPC9zbWUtc2NoZW1hLWZpZWxkLWhvc3Q+IC0tPlxyXG4gICAgICAgICAgICAgIDxzbWUtc2NoZW1hLWZpZWxkLWhvc3QgI2ZpZWxkSG9zdCBbcHJvcGVydHlTY2hlbWFdPVwicHJvcGVydHlcIiBbKGRhdGEpXT1cImRhdGFbcHJvcGVydHkubmFtZV1cIlxyXG4gICAgICAgICAgICAgICAgW2NvbnRleHRdPVwiY29udGV4dFwiIGNsYXNzPVwic21lLXBvc2l0aW9uLWZsZXgtYXV0b1wiPlxyXG4gICAgICAgICAgICAgIDwvc21lLXNjaGVtYS1maWVsZC1ob3N0PlxyXG4gICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhZ2V0Rm9vdGVyQnV0dG9uSGlkZU9wdGlvbihwcm9wZXJ0eS5uYW1lKVwiIGNsYXNzPVwic21lLXBvc2l0aW9uLWZsZXgtbm9uZSBzbWUtZm9jdXMtem9uZVwiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgY2xhc3M9XCJzbWUtYnV0dG9uLXByaW1hcnlcIlxyXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25TYXZlQ2xpY2socHJvcGVydHkubmFtZSk7JGV2ZW50LnByZXZlbnREZWZhdWx0KClcIlxyXG4gICAgICAgICAgICAgICAgICBbc21lRGlzYWJsZWRdPVwiIShpc0Zvcm1EaXJ0eShwcm9wZXJ0eS5uYW1lKSAmJiBpc0Zvcm1WYWxpZChwcm9wZXJ0eS5uYW1lKSAmJiAhaXNGb3JtQnVzeShwcm9wZXJ0eS5uYW1lKSlcIj57e2dldEZvb3RlckJ1dHRvblRleHQocHJvcGVydHkubmFtZSwnc2F2ZScpfX08L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJvbkRpc2NhcmRDbGljayhwcm9wZXJ0eS5uYW1lKVwiXHJcbiAgICAgICAgICAgICAgICAgIFtzbWVEaXNhYmxlZF09XCIhKGlzRm9ybURpcnR5KHByb3BlcnR5Lm5hbWUpICYmICFpc0Zvcm1CdXN5KHByb3BlcnR5Lm5hbWUpKVwiPnt7Z2V0Rm9vdGVyQnV0dG9uVGV4dChwcm9wZXJ0eS5uYW1lLCdkaXNjYXJkJyl9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uQ2xvc2VDbGljaygpXCI+e3tnZXRGb290ZXJCdXR0b25UZXh0KHByb3BlcnR5Lm5hbWUsJ2Nsb3NlJyl9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZm9ybT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
|
|
603
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiYmVkLWZvcm0tbG9hZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2FuZ3VsYXIvc3JjL2NvbnRyb2xzL3NjaGVtYS90YWJiZWQtZm9ybS1sb2FkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYW5ndWxhci9zcmMvY29udHJvbHMvc2NoZW1hL3RhYmJlZC1mb3JtLWxvYWRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFpQyxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xHLE9BQU8sRUFBRSxjQUFjLEVBQTBCLE1BQU0sRUFBdUIsTUFBTSxpQkFBaUIsQ0FBQztBQUV0RyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFdEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFBRSx3Q0FBd0MsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ25ILE9BQU8sRUFBeUQsbUJBQW1CLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM3RyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7Ozs7Ozs7Ozs7O0lDVG5ELGtDQUEyRixhQUFBO0lBQ3RELFlBQWtDO0lBQUEsaUJBQUssRUFBQTs7O0lBQXZDLGVBQWtDO0lBQWxDLGtFQUFrQzs7O0lBVXpELDhCQUN3QztJQUFBLFlBQStCO0lBQUEsaUJBQUs7Ozs7SUFBMUUsNkRBQXFDO0lBQUMsZUFBK0I7SUFBL0IsMkRBQStCOzs7SUFXWiw0QkFDcEI7SUFBQSxpQkFB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UUFDekIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQztRQUMvQixPQUFPLElBQUksT0FBTyxDQUFPLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ3pDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUU7Z0JBQzFCLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUM7Z0JBQ3ZFLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtvQkFDcEMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEtBQUssQ0FBQztvQkFDaEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQztvQkFDOUIsT0FBTyxFQUFFLENBQUM7Z0JBQ2QsQ0FBQyxFQUNHLE1BQU0sQ0FBQyxFQUFFO29CQUNMLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUM7b0JBQ2hDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBQ3pCLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDbkIsQ0FBQyxDQUFDLENBQUM7WUFDWCxDQUFDLENBQUMsQ0FBQztRQUNQLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBPbkRlc3Ryb3ksIE9uSW5pdCwgUXVlcnlMaXN0LCBWaWV3Q2hpbGRyZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIFJvdXRlciwgUm91dGVyU3RhdGVTbmFwc2hvdCB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IEFwcENvbnRleHRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZS9hcHAtY29udGV4dC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29uZmlybWF0aW9uRGlhbG9nT3B0aW9ucyB9IGZyb20gJy4uL2RpYWxvZy9jb25maXJtYXRpb24tZGlhbG9nL2NvbmZpcm1hdGlvbi1kaWFsb2cuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRGlhbG9nU2VydmljZSB9IGZyb20gJy4uL2RpYWxvZy9kaWFsb2cuc2VydmljZSc7XHJcbmltcG9ydCB7IE9iamVjdFByb3BlcnR5U2NoZW1hRmllbGRMb2FkZXJDb21wb25lbnQsIFNjaGVtYUZpZWxkSG9zdENvbXBvbmVudCB9IGZyb20gJy4vc2NoZW1hLWZpZWxkLWhvc3QuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRGF0YVNjaGVtYSwgU2NoZW1hQXJyYXlQcm9wZXJ0eSwgU2NoZW1hT2JqZWN0UHJvcGVydHksIFNjaGVtYVByaW1pdGl2ZVR5cGUgfSBmcm9tICcuL3NjaGVtYS1tb2RlbHMnO1xyXG5pbXBvcnQgeyBTY2hlbWFEYXRhVHlwZVN0b3JlIH0gZnJvbSAnLi9zY2hlbWEtc3RvcmUnO1xyXG5pbXBvcnQgeyBTY2hlbWFVdGlsaXRpZXMgfSBmcm9tICcuL3NjaGVtYS11dGlsaXRpZXMnO1xyXG5AQ29tcG9uZW50KHtcclxuICAgIHRlbXBsYXRlVXJsOiAnLi90YWJiZWQtZm9ybS1sb2FkZXIuY29tcG9uZW50Lmh0bWwnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUYWJiZWRGb3JtTG9hZGVyQ29tcG9uZW50IGV4dGVuZHMgT2JqZWN0UHJvcGVydHlTY2hlbWFGaWVsZExvYWRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICAgIHByaXZhdGUgY2FuY2VsTmV4dFJvdXRlR3VhcmQgPSBmYWxzZTtcclxuICAgIHByaXZhdGUgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcclxuICAgIHByaXZhdGUgb3JpZ2luYWxEYXRhOiBGb3JtRGF0YTtcclxuICAgIEBWaWV3Q2hpbGRyZW4oU2NoZW1hRmllbGRIb3N0Q29tcG9uZW50KVxyXG4gICAgZGVjbGFyZSBwcm90ZWN0ZWQgZmllbGRIb3N0Q29tcG9uZW50czogUXVlcnlMaXN0PFNjaGVtYUZpZWxkSG9zdENvbXBvbmVudD47XHJcbiAgICBAVmlld0NoaWxkcmVuKCduYXZMaW5rJylcclxuICAgIHByaXZhdGUgbmF2TGlua0VsZW1lbnRzOiBRdWVyeUxpc3Q8RWxlbWVudFJlZj47XHJcbiAgICBwdWJsaWMgYmFzZVVybDogc3RyaW5nO1xyXG4gICAgcHVibGljIGFjdGl2ZUZvcm1OYW1lOiBzdHJpbmc7XHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcml2YXRlIGFwcENvbnRleHRTZXJ2aWNlOiBBcHBDb250ZXh0U2VydmljZSxcclxuICAgICAgICBwcml2YXRlIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcclxuICAgICAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxyXG4gICAgICAgIHByaXZhdGUgZGlhbG9nU2VydmljZTogRGlhbG9nU2VydmljZSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyByZWdpc3RlckRhdGFUeXBlKCkge1xyXG4gICAgICAgIFNjaGVtYURhdGFUeXBlU3RvcmUucmVnaXN0ZXJEYXRhVHlwZSh7XHJcbiAgICAgICAgICAgIHR5cGU6IFNjaGVtYVByaW1pdGl2ZVR5cGUuT2JqZWN0LFxyXG4gICAgICAgICAgICBmb3JtYXQ6ICd0YWJiZWQtZm9ybScsXHJcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnSXRcXCdzIGEgc3BlY2lhbCBmb3JtIGZpZWxkIGNvbnRyb2wgdGhhdCByZWN1cnNpdmVseSByZW5kZXJzIGFsbCB0aGUgcHJvcGVydGllcyBhcyBmaWVsZHMuICdcclxuICAgICAgICAgICAgICAgICsgJ1RoaXMgaXMgbGlrZSBhIGNvbnRhaW5lciBvZiBvdGhlciBzY2hlbWEgaXRlbXMuJyxcclxuICAgICAgICAgICAgbG9hZGVyQ29tcG9uZW50OiBUYWJiZWRGb3JtTG9hZGVyQ29tcG9uZW50LFxyXG4gICAgICAgICAgICBvcHRpb25Qcm9wZXJ0aWVzOiBbXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogU2NoZW1hUHJpbWl0aXZlVHlwZS5Cb29sZWFuLFxyXG4gICAgICAgICAgICAgICAgICAgIGZvcm1hdDogJ2NoZWNrYm94JyxcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiAnc3VwcG9ydFJvdXRlJyxcclxuICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2FjdHVhbF9zdHJpbmc6U3VwcG9ydCBSb3V0ZScsXHJcbiAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IHtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgPFNjaGVtYUFycmF5UHJvcGVydHk+e1xyXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IFNjaGVtYVByaW1pdGl2ZVR5cGUuQXJyYXksXHJcbiAgICAgICAgICAgICAgICAgICAgZm9ybWF0OiAnc2ltcGxlLWxpc3QnLFxyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6ICdncm91cHMnLFxyXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnYWN0dWFsX3N0cmluZzpHcm91cHMnLFxyXG4gICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICBpdGVtOiA8U2NoZW1hT2JqZWN0UHJvcGVydHk+e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBTY2hlbWFQcmltaXRpdmVUeXBlLk9iamVjdCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0OiAnZGVmYXVsdCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uQ291bnQ6IDEsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaWRlSGVhZGVyOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbGxhcHNpYmxlOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeWVzOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZTogJ2NvbGxhcHNlZCdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydGllczogW1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFNjaGVtYVByaW1pdGl2ZVR5cGUuU3RyaW5nLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdDogJ3Jlc291cmNlLXN0cmluZy1waWNrZXInLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdkaXNwbGF5TmFtZScsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdhY3R1YWxfc3RyaW5nOkRpc3BsYXkgTmFtZScsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U2NoZW1hQXJyYXlQcm9wZXJ0eT57XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogU2NoZW1hUHJpbWl0aXZlVHlwZS5BcnJheSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQ6ICdzaW1wbGUtbGlzdCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2Zvcm1zJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2FjdHVhbF9zdHJpbmc6Rm9ybXMnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtOiA8U2NoZW1hT2JqZWN0UHJvcGVydHk+e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBTY2hlbWFQcmltaXRpdmVUeXBlLk9iamVjdCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0OiAnZGVmYXVsdCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uQ291bnQ6IDEsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaWRlSGVhZGVyOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbGxhcHNpYmxlOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeWVzOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZTogJ2NvbGxhcHNlZCdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydGllczogW1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFNjaGVtYVByaW1pdGl2ZVR5cGUuU3RyaW5nLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdDogJ3RleHRib3gnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICduYW1lJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2FjdHVhbF9zdHJpbmc6TmFtZScsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGVsaW5lOiBmYWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogU2NoZW1hUHJpbWl0aXZlVHlwZS5TdHJpbmcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0OiAncmVzb3VyY2Utc3RyaW5nLXBpY2tlcicsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2Rpc3BsYXlOYW1lJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2FjdHVhbF9zdHJpbmc6RGlzcGxheSBOYW1lJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogU2NoZW1hUHJpbWl0aXZlVHlwZS5TdHJpbmcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0OiAndGV4dGJveCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2ljb24nLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnYWN0dWFsX3N0cmluZzpJY29uJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdWx0aXBsZWxpbmU6IGZhbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBTY2hlbWFQcmltaXRpdmVUeXBlLlN0cmluZyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQ6ICdyZXNvdXJjZS1zdHJpbmctcGlja2VyJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnc2F2ZUJ1dHRvblRleHQnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnYWN0dWFsX3N0cmluZzpTYXZlIGJ1dHRvbiB0ZXh0JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiAncmVzb3VyY2VzOnN0cmluZ3M6TXNmdFNtZVNoZWxsLkFuZ3VsYXIuQ29tbW9uLnNhdmUnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGVsaW5lOiBmYWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogU2NoZW1hUHJpbWl0aXZlVHlwZS5TdHJpbmcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0OiAncmVzb3VyY2Utc3RyaW5nLXBpY2tlcicsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2Rpc2NhcmRCdXR0b25UZXh0JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2FjdHVhbF9zdHJpbmc6RGlzY2FyZCBCdXR0b24gVGV4dCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogJ3Jlc291cmNlczpzdHJpbmdzOk1zZnRTbWVTaGVsbC5Bbmd1bGFyLkNvbW1vbi5kaXNjYXJkJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxlbGluZTogZmFsc2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFNjaGVtYVByaW1pdGl2ZVR5cGUuU3RyaW5nLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdDogJ3Jlc291cmNlLXN0cmluZy1waWNrZXInLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdjbG9zZUJ1dHRvblRleHQnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnYWN0dWFsX3N0cmluZzpDYW5jZWwgQnV0dG9uIFRleHQnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWU6ICdyZXNvdXJjZXM6c3RyaW5nczpNc2Z0U21lU2hlbGwuQW5ndWxhci5Db21tb24uY2xvc2UnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGVsaW5lOiBmYWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogU2NoZW1hUHJpbWl0aXZlVHlwZS5Cb29sZWFuLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdDogJ3RvZ2dsZS1zd2l0Y2gnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdoaWRlRm9vdGVyQWN0aW9uQnV0dG9uJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2FjdHVhbF9zdHJpbmc6SGlkZSBhY3Rpb24gYnV0dG9ucyBpbiBmb290ZXInXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtcHR5QnlEZWZhdWx0OiBmYWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgXSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZW1wdHlCeURlZmF1bHQ6IGZhbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICBwcmVkZWZpbmVkT2JqZWN0UHJvcGVydGllczogW1xyXG4gICAgICAgICAgICAgICAgPFNjaGVtYU9iamVjdFByb3BlcnR5PntcclxuICAgICAgICAgICAgICAgICAgICB0eXBlOiBTY2hlbWFQcmltaXRpdmVUeXBlLk9iamVjdCxcclxuICAgICAgICAgICAgICAgICAgICBmb3JtYXQ6ICdkZWZhdWx0JyxcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiAnPGZvcm0gMT4nLFxyXG4gICAgICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6IFtdXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgPFNjaGVtYU9iamVjdFByb3BlcnR5PntcclxuICAgICAgICAgICAgICAgICAgICB0eXBlOiBTY2hlbWFQcmltaXRpdmVUeXBlLk9iamVjdCxcclxuICAgICAgICAgICAgICAgICAgICBmb3JtYXQ6ICdkZWZhdWx0JyxcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiAnPGZvcm0gMj4nLFxyXG4gICAgICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6IFtdXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgPFNjaGVtYU9iamVjdFByb3BlcnR5PntcclxuICAgICAgICAgICAgICAgICAgICB0eXBlOiBTY2hlbWFQcmltaXRpdmVUeXBlLk9iamVjdCxcclxuICAgICAgICAgICAgICAgICAgICBmb3JtYXQ6ICdkZWZhdWx0JyxcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiAnPGZvcm0gMz4nLFxyXG4gICAgICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6IFtdXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICAgIHRhZ3M6IFsnZm9ybS1jb250YWluZXInXVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmJhc2VVcmwgPSB0aGlzLmdldEJhc2VVcmwoKTtcclxuICAgICAgICBpZiAodGhpcy5iYXNlVXJsLmluZGV4T2YoJz8nKSAhPT0gLTEpIHtcclxuICAgICAgICAgICAgdGhpcy5iYXNlVXJsID0gdGhpcy5iYXNlVXJsLnNwbGl0KCc/JylbMF07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMuYWN0aXZhdGVkUm91dGUucGFyYW1zLnN1YnNjcmliZShwYXJhbXMgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmFjdGl2ZUZvcm1OYW1lID0gcGFyYW1zLm5hbWU7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmFjdGl2ZUZvcm1OYW1lKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmV4ZWN1dGVGb3JtQWN0aW9uKCdzd2l0Y2ggZm9ybScsIHRoaXMuYWN0aXZlRm9ybU5hbWUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSkpO1xyXG4gICAgICAgIHRoaXMub3JpZ2luYWxEYXRhID0gU2NoZW1hVXRpbGl0aWVzLmRlZXBDb3B5KHRoaXMuZGF0YSk7XHJcblxyXG4gICAgICAgIGZvciAoY29uc3QgZm9ybU5hbWUgaW4gdGhpcy5kYXRhKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmRhdGEuaGFzT3duUHJvcGVydHkoZm9ybU5hbWUpKSB7XHJcbiAgICAgICAgICAgICAgICAoKGN1cnJlbnRGb3JtTmFtZTogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5leGVjdXRlRm9ybUFjdGlvbignaW5pdGlhbGl6ZSBmb3JtJywge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtTmFtZTogY3VycmVudEZvcm1OYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvblN1Y2NlZWRlZDogKGZvcm1EYXRhKTogdm9pZCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGFbY3VycmVudEZvcm1OYW1lXSA9IGZvcm1EYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vcmlnaW5hbERhdGFbY3VycmVudEZvcm1OYW1lXSA9IFNjaGVtYVV0aWxpdGllcy5kZWVwQ29weShmb3JtRGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5maWVsZEhvc3RDb21wb25lbnRzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZmllbGRIb3N0Q29tcG9uZW50cyA9IHRoaXMuZmllbGRIb3N0Q29tcG9uZW50cy50b0FycmF5KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZmllbGRIb3N0Q29tcG9uZW50ID0gZmllbGRIb3N0Q29tcG9uZW50cy5maW5kKGl0ZW0gPT4gaXRlbS5wcm9wZXJ0eVNjaGVtYS5uYW1lID09PSBjdXJyZW50Rm9ybU5hbWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaWVsZEhvc3RDb21wb25lbnQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRIb3N0Q29tcG9uZW50Lm1hcmtBc1ByaXN0aW5lKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9KShmb3JtTmFtZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMuYWN0aXZlRm9ybU5hbWUpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubmF2TGlua0VsZW1lbnRzLmZpcnN0Lm5hdGl2ZUVsZW1lbnQuY2xpY2soKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgcHVibGljIG5nT25EZXN0cm95KCkge1xyXG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKHN1YiA9PiBzdWI/LnVuc3Vic2NyaWJlKCkpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzZXR1cFNjaGVtYShzY2hlbWE6IERhdGFTY2hlbWEpOiB2b2lkIHtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNjaGVtYS5wcm9wZXJ0aWVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIHNjaGVtYS5wcm9wZXJ0aWVzW2ldLmRpc2FibGVkQ29uZGl0aW9uID0gJ2Zvcm1Db250cm9sbGVyLmNvbnRyb2xsZXIuJyArIHNjaGVtYS5wcm9wZXJ0aWVzW2ldLm5hbWUgKyAnLmlzRGlzYWJsZWQnO1xyXG4gICAgICAgICAgICBzY2hlbWEucHJvcGVydGllc1tpXS5vcHRpb25zLmJ1c3lDb25kaXRpb24gPSAnZm9ybUNvbnRyb2xsZXIuY29udHJvbGxlci4nICsgc2NoZW1hLnByb3BlcnRpZXNbaV0ubmFtZSArICcuaXNCdXN5JztcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN3aXRjaEZvcm0oZm9ybU5hbWU6IHN0cmluZykge1xyXG4gICAgICAgIHRoaXMuYWN0aXZlRm9ybU5hbWUgPSBmb3JtTmFtZTtcclxuICAgICAgICB0aGlzLmV4ZWN1dGVGb3JtQWN0aW9uKCdzd2l0Y2ggZm9ybScsIHRoaXMuYWN0aXZlRm9ybU5hbWUpO1xyXG4gICAgICAgIHRoaXMuY2FuY2VsTmV4dFJvdXRlR3VhcmQgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzZXRGb3JtT3JpZ2luYWxEYXRhKGZvcm1OYW1lLCBkYXRhOiBhbnkpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLm9yaWdpbmFsRGF0YVtmb3JtTmFtZV0gPSBTY2hlbWFVdGlsaXRpZXMuZGVlcENvcHkoZGF0YSk7XHJcbiAgICB9XHJcbiAgICBwdWJsaWMgaXNGb3JtQnVzeShmb3JtTmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICAgICAgbGV0IHJlc3VsdCA9IGZhbHNlO1xyXG4gICAgICAgIGNvbnN0IGN1cnJlbnRGb3JtU2NoZW1hID0gU2NoZW1hVXRpbGl0aWVzLmdldFByb3BlcnR5U2NoZW1hQnlOYW1lKHRoaXMucHJvcGVydHlTY2hlbWEsIHRoaXMuYWN0aXZlRm9ybU5hbWUpO1xyXG4gICAgICAgIGlmIChjdXJyZW50Rm9ybVNjaGVtYSAmJiBjdXJyZW50Rm9ybVNjaGVtYS5vcHRpb25zICYmIGN1cnJlbnRGb3JtU2NoZW1hLm9wdGlvbnMuYnVzeUNvbmRpdGlvbikge1xyXG4gICAgICAgICAgICByZXN1bHQgPSB0aGlzLmV2YWxFeHByZXNzaW9uKGN1cnJlbnRGb3JtU2NoZW1hLm9wdGlvbnMuYnVzeUNvbmRpdGlvbik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghcmVzdWx0KSB7XHJcbiAgICAgICAgICAgIHJlc3VsdCA9IHRoaXMuZXZhbEV4cHJlc3Npb24oY3VycmVudEZvcm1TY2hlbWEuZGlzYWJsZWRDb25kaXRpb24pO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfVxyXG4gICAgcHVibGljIGlzRm9ybURpcnR5KGZvcm1OYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgICAgICBsZXQgcmVzdWx0ID0gZmFsc2U7XHJcbiAgICAgICAgaWYgKHRoaXMuZmllbGRIb3N0Q29tcG9uZW50cykge1xyXG4gICAgICAgICAgICBjb25zdCBmaWVsZEhvc3RDb21wb25lbnRzID0gdGhpcy5maWVsZEhvc3RDb21wb25lbnRzLnRvQXJyYXkoKTtcclxuICAgICAgICAgICAgY29uc3QgZmllbGRIb3N0Q29tcG9uZW50ID0gZmllbGRIb3N0Q29tcG9uZW50cy5maW5kKGl0ZW0gPT4gaXRlbS5wcm9wZXJ0eVNjaGVtYS5uYW1lID09PSBmb3JtTmFtZSk7XHJcbiAgICAgICAgICAgIGlmIChmaWVsZEhvc3RDb21wb25lbnQpIHtcclxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IGZpZWxkSG9zdENvbXBvbmVudC5pc0RpcnR5KCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0Rm9vdGVyQnV0dG9uSGlkZU9wdGlvbihmb3JtTmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICAgICAgbGV0IHJlc3VsdCA9IGZhbHNlO1xyXG5cclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucHJvcGVydHlTY2hlbWEub3B0aW9ucy5ncm91cHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLnByb3BlcnR5U2NoZW1hLm9wdGlvbnMuZ3JvdXBzW2ldLmZvcm1zLmxlbmd0aDsgaisrKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5wcm9wZXJ0eVNjaGVtYS5vcHRpb25zLmdyb3Vwc1tpXS5mb3Jtc1tqXS5uYW1lID09PSBmb3JtTmFtZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHRoaXMucHJvcGVydHlTY2hlbWEub3B0aW9ucy5ncm91cHNbaV0uZm9ybXNbal0uaGlkZUZvb3RlckFjdGlvbkJ1dHRvbjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH1cclxuICAgIHB1YmxpYyBnZXRGb290ZXJCdXR0b25UZXh0KGZvcm1OYW1lOiBzdHJpbmcsIGJ1dHRvbjogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgICAgICBsZXQgcmVzdWx0ID0gJyc7XHJcblxyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5wcm9wZXJ0eVNjaGVtYS5vcHRpb25zLmdyb3Vwcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMucHJvcGVydHlTY2hlbWEub3B0aW9ucy5ncm91cHNbaV0uZm9ybXMubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnByb3BlcnR5U2NoZW1hLm9wdGlvbnMuZ3JvdXBzW2ldLmZvcm1zW2pdLm5hbWUgPT09IGZvcm1OYW1lKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChidXR0b24pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnc2F2ZSc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSB0aGlzLmxvY2FsaXplKHRoaXMucHJvcGVydHlTY2hlbWEub3B0aW9ucy5ncm91cHNbaV0uZm9ybXNbal0uc2F2ZUJ1dHRvblRleHQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2Rpc2NhcmQnOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gdGhpcy5sb2NhbGl6ZSh0aGlzLnByb3BlcnR5U2NoZW1hLm9wdGlvbnMuZ3JvdXBzW2ldLmZvcm1zW2pdLmRpc2NhcmRCdXR0b25UZXh0KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdjbG9zZSc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSB0aGlzLmxvY2FsaXplKHRoaXMucHJvcGVydHlTY2hlbWEub3B0aW9ucy5ncm91cHNbaV0uZm9ybXNbal0uY2xvc2VCdXR0b25UZXh0KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH1cclxuICAgIHB1YmxpYyBpc0Zvcm1WYWxpZChmb3JtTmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICAgICAgbGV0IHJlc3VsdCA9IGZhbHNlO1xyXG4gICAgICAgIGlmICh0aGlzLmZpZWxkSG9zdENvbXBvbmVudHMpIHtcclxuICAgICAgICAgICAgY29uc3QgZmllbGRIb3N0Q29tcG9uZW50cyA9IHRoaXMuZmllbGRIb3N0Q29tcG9uZW50cy50b0FycmF5KCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGZpZWxkSG9zdENvbXBvbmVudCA9IGZpZWxkSG9zdENvbXBvbmVudHMuZmluZChpdGVtID0+IGl0ZW0ucHJvcGVydHlTY2hlbWEubmFtZSA9PT0gZm9ybU5hbWUpO1xyXG4gICAgICAgICAgICBpZiAoZmllbGRIb3N0Q29tcG9uZW50KSB7XHJcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBmaWVsZEhvc3RDb21wb25lbnQuaXNWYWxpZCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9XHJcbiAgICBwdWJsaWMgb25TYXZlQ2xpY2soZm9ybU5hbWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuZXhlY3V0ZUZvcm1BY3Rpb24oJ3N1Ym1pdCcsIHtcclxuICAgICAgICAgICAgZm9ybU5hbWU6IGZvcm1OYW1lLFxyXG4gICAgICAgICAgICBvblN1Y2NlZWRlZDogKCk6IHZvaWQgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZmllbGRIb3N0Q29tcG9uZW50cykge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZpZWxkSG9zdENvbXBvbmVudHMgPSB0aGlzLmZpZWxkSG9zdENvbXBvbmVudHMudG9BcnJheSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZpZWxkSG9zdENvbXBvbmVudCA9IGZpZWxkSG9zdENvbXBvbmVudHMuZmluZChpdGVtID0+IGl0ZW0ucHJvcGVydHlTY2hlbWEubmFtZSA9PT0gZm9ybU5hbWUpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChmaWVsZEhvc3RDb21wb25lbnQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRIb3N0Q29tcG9uZW50Lm1hcmtBc1ByaXN0aW5lKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBwdWJsaWMgb25EaXNjYXJkQ2xpY2soZm9ybU5hbWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIGxldCBmb3JtRGF0YU92ZXJyaWRpbmcgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuZXhlY3V0ZUZvcm1BY3Rpb24oJ3Jlc2V0IGZvcm0nLCB7XHJcbiAgICAgICAgICAgIGZvcm1OYW1lOiBmb3JtTmFtZSxcclxuICAgICAgICAgICAgb25TdWNjZWVkZWQ6IChmb3JtRGF0YSk6IHZvaWQgPT4ge1xyXG4gICAgICAgICAgICAgICAgZm9ybURhdGFPdmVycmlkaW5nID0gZm9ybURhdGE7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5kYXRhW2Zvcm1OYW1lXSA9IGZvcm1EYXRhT3ZlcnJpZGluZyB8fCBTY2hlbWFVdGlsaXRpZXMuZGVlcENvcHkodGhpcy5vcmlnaW5hbERhdGFbZm9ybU5hbWVdKTtcclxuICAgICAgICBpZiAodGhpcy5maWVsZEhvc3RDb21wb25lbnRzKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGZpZWxkSG9zdENvbXBvbmVudHMgPSB0aGlzLmZpZWxkSG9zdENvbXBvbmVudHMudG9BcnJheSgpO1xyXG4gICAgICAgICAgICBjb25zdCBmaWVsZEhvc3RDb21wb25lbnQgPSBmaWVsZEhvc3RDb21wb25lbnRzLmZpbmQoaXRlbSA9PiBpdGVtLnByb3BlcnR5U2NoZW1hLm5hbWUgPT09IGZvcm1OYW1lKTtcclxuICAgICAgICAgICAgaWYgKGZpZWxkSG9zdENvbXBvbmVudCkge1xyXG4gICAgICAgICAgICAgICAgZmllbGRIb3N0Q29tcG9uZW50Lm1hcmtBc1ByaXN0aW5lKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBwdWJsaWMgY2FuRGVhY3RpdmF0ZShcclxuICAgICAgICByb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcclxuICAgICAgICBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdCxcclxuICAgICAgICBjb25maXJtYXRpb25EaWFsb2dPcHRpb25zOiBDb25maXJtYXRpb25EaWFsb2dPcHRpb25zXHJcbiAgICApOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHwgUHJvbWlzZTxib29sZWFuPiB8IGJvb2xlYW4ge1xyXG4gICAgICAgIGxldCBjb250aW51ZU5hdmlnYXRpb246IE9ic2VydmFibGU8Ym9vbGVhbj4gfCBQcm9taXNlPGJvb2xlYW4+IHwgYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5jYW5jZWxOZXh0Um91dGVHdWFyZCkge1xyXG4gICAgICAgICAgICBsZXQgaXNGb3JtRGlydHkgPSBmYWxzZTtcclxuICAgICAgICAgICAgZm9yIChjb25zdCBmb3JtTmFtZSBpbiB0aGlzLmRhdGEpIHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmRhdGEuaGFzT3duUHJvcGVydHkoZm9ybU5hbWUpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNGb3JtRGlydHkoZm9ybU5hbWUpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzRm9ybURpcnR5ID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChpc0Zvcm1EaXJ0eSkge1xyXG4gICAgICAgICAgICAgICAgY29udGludWVOYXZpZ2F0aW9uID0gdGhpcy5kaWFsb2dTZXJ2aWNlXHJcbiAgICAgICAgICAgICAgICAgICAgLnNob3dDb25maXJtYXRpb24oY29uZmlybWF0aW9uRGlhbG9nT3B0aW9ucylcclxuICAgICAgICAgICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWFwKChyZXN1bHQpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSBkZWZhdWx0IGlzIHRvIGNvbnRpbnVlIGVkaXRpbmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRpc2NhcmRDaGFuZ2VzID0gIXJlc3VsdC5jb25maXJtZWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGlzY2FyZENoYW5nZXM7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pKTtcclxuXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY29udGludWVOYXZpZ2F0aW9uO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmNhbmNlbE5leHRSb3V0ZUd1YXJkID0gZmFsc2U7XHJcblxyXG4gICAgICAgIHJldHVybiBjb250aW51ZU5hdmlnYXRpb247XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG9uQ2xvc2VDbGljaygpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmV4ZWN1dGVGb3JtQWN0aW9uKCdjbG9zZScpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZ2V0QmFzZVVybCgpOiBzdHJpbmcge1xyXG4gICAgICAgIGxldCByZXN1bHQgPSB0aGlzLnJvdXRlci51cmw7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnByb3BlcnR5U2NoZW1hLnByb3BlcnRpZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LnJlcGxhY2UoJy9mb3JtLycgKyB0aGlzLnByb3BlcnR5U2NoZW1hLnByb3BlcnRpZXNbaV0ubmFtZSwgJycpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZGVjb2RlVVJJKHJlc3VsdCk7XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBUYWJiZWRGb3JtQ29udHJvbGxlciB7XHJcbiAgICBwdWJsaWMgY29udHJvbGxlcjogeyBbZm9ybU5hbWU6IHN0cmluZ106IFRhYmJlZEZvcm1JdGVtQ29udHJvbGxlcjxhbnksIGFueT4gfSA9IHt9O1xyXG59XHJcblxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVGFiYmVkRm9ybUl0ZW1Db250cm9sbGVyPFREYXRhTW9kZWwsIFRWaWV3TW9kZWw+IHtcclxuICAgIHByaXZhdGUgaXNCdXN5SW50ZXJuYWwgPSB0cnVlO1xyXG4gICAgcHJpdmF0ZSBpc0Rpc2FibGVkSW50ZXJuYWwgPSBmYWxzZTtcclxuXHJcbiAgICBwdWJsaWMgYWJzdHJhY3QgbG9hZERhdGEoKTogUHJvbWlzZTxURGF0YU1vZGVsPjtcclxuICAgIHB1YmxpYyBhYnN0cmFjdCBjb252ZXJ0RGF0YU1vZGVsVG9WaWV3TW9kZWwoZGF0YU1vZGVsOiBURGF0YU1vZGVsKTogVFZpZXdNb2RlbDtcclxuICAgIHB1YmxpYyBhYnN0cmFjdCBtZXJnZVZpZXdNb2RlbFRvRGF0YU1vZGVsKHZpZXdNb2RlbDogVFZpZXdNb2RlbCwgZGF0YU1vZGVsOiBURGF0YU1vZGVsKTogVERhdGFNb2RlbDtcclxuICAgIHB1YmxpYyBhYnN0cmFjdCBzdWJtaXREYXRhKGRhdGFNb2RlbDogVERhdGFNb2RlbCk6IFByb21pc2U8dm9pZD47XHJcbiAgICBwdWJsaWMgYWJzdHJhY3Qgb25TYXZpbmcodmlld01vZGVsOiBUVmlld01vZGVsKTogdm9pZDtcclxuICAgIHB1YmxpYyBhYnN0cmFjdCBvbkZldGNoRXJyb3IoZXJyb3I6IGFueSk6IHZvaWQ7XHJcbiAgICBwdWJsaWMgYWJzdHJhY3Qgb25TYXZlRXJyb3IoZXJyb3I6IGFueSk6IHZvaWQ7XHJcbiAgICBwdWJsaWMgYWJzdHJhY3Qgb25TYXZlU3VjY2Vzcyh2aWV3TW9kZWw6IFRWaWV3TW9kZWwpOiB2b2lkO1xyXG5cclxuICAgIHB1YmxpYyBpc0J1c3koKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNCdXN5SW50ZXJuYWw7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGlzRGlzYWJsZWQoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNEaXNhYmxlZEludGVybmFsO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBpbml0aWFsaXplKCk6IFByb21pc2U8VFZpZXdNb2RlbD4ge1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZTxUVmlld01vZGVsPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubG9hZERhdGEoKS50aGVuKHJlc3VsdCA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB2aWV3TW9kZWwgPSB0aGlzLmNvbnZlcnREYXRhTW9kZWxUb1ZpZXdNb2RlbChyZXN1bHQpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pc0J1c3lJbnRlcm5hbCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgcmVzb2x2ZSh2aWV3TW9kZWwpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc2F2ZURhdGEodmlld01vZGVsOiBUVmlld01vZGVsKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICAgICAgdGhpcy5vblNhdmluZyh2aWV3TW9kZWwpO1xyXG4gICAgICAgIHRoaXMuaXNEaXNhYmxlZEludGVybmFsID0gdHJ1ZTtcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmxvYWREYXRhKCkudGhlbihyZXN1bHQgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbmV3RGF0YU1vZGVsID0gdGhpcy5tZXJnZVZpZXdNb2RlbFRvRGF0YU1vZGVsKHZpZXdNb2RlbCwgcmVzdWx0KTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc3VibWl0RGF0YShuZXdEYXRhTW9kZWwpLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNEaXNhYmxlZEludGVybmFsID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vblNhdmVTdWNjZXNzKHZpZXdNb2RlbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICByZWFzb24gPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlzRGlzYWJsZWRJbnRlcm5hbCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9uU2F2ZUVycm9yKHJlYXNvbik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChyZWFzb24pO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwic21lLXNldHRpbmdzIHNtZS1sYXlvdXQtYWJzb2x1dGUtcGhvbmUtdXAgc21lLXBvc2l0aW9uLWluc2V0LW5vbmUgc21lLWFycmFuZ2Utc3RhY2stdiBzbWUtcGFkZGluZy1ib3R0b20tbGdcIj5cclxuICA8aGVhZGVyICpuZ0lmPVwicHJvcGVydHlTY2hlbWEubGFiZWxcIiBjbGFzcz1cInNtZS1wb3NpdGlvbi1mbGV4LW5vbmUgc21lLWxheW91dC10b29sLWhlYWRlclwiPlxyXG4gICAgPGgzIGNsYXNzPVwic21lLXBvc2l0aW9uLWZsZXgtbm9uZVwiPnt7bG9jYWxpemUocHJvcGVydHlTY2hlbWEubGFiZWwpfX08L2gzPlxyXG4gIDwvaGVhZGVyPlxyXG4gIDxkaXYgY2xhc3M9XCJzbWUtcG9zaXRpb24tZmxleC1hdXRvIHNtZS1hcnJhbmdlLXN0YWNrLWggc21lLWxheW91dC1yZWxhdGl2ZVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInNtZS1sYXlvdXQtYWJzb2x1dGUgc21lLXBvc2l0aW9uLWluc2V0LW5vbmUgc21lLWFycmFuZ2Utc3RhY2staFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwic21lLXNldHRpbmdzLW5hdmlnYXRpb24gc21lLXBvc2l0aW9uLWZsZXgtbm9uZVwiPlxyXG4gICAgICAgIDxuYXYgcm9sZT1cInRhYmxpc3RcIiBjbGFzcz1cInNtZS1wYWRkaW5nLWhvcml6b250YWwtbGcgc21lLWFycmFuZ2Utc3RhY2stdlwiPlxyXG4gICAgICAgICAgPHVsXHJcbiAgICAgICAgICAgIGNsYXNzPVwic21lLXBvc2l0aW9uLWZsZXgtYXV0byBzbWUtYXJyYW5nZS1zdGFjay12IHNtZS1hcnJhbmdlLW92ZXJmbG93LWhpZGUteCBzbWUtYXJyYW5nZS1vdmVyZmxvdy1hdXRvLXlcIj5cclxuICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBncm91cCBvZiBwcm9wZXJ0eVNjaGVtYS5vcHRpb25zLmdyb3Vwc1wiPlxyXG4gICAgICAgICAgICAgIDxuYXY+XHJcbiAgICAgICAgICAgICAgICA8aDUgY2xhc3M9XCJzbWUtbWFyZ2luLXRvcC14cyBzbWUtbWFyZ2luLWJvdHRvbS14c1wiICpuZ0lmPVwiZ3JvdXAuZGlzcGxheU5hbWVcIlxyXG4gICAgICAgICAgICAgICAgICBbdGl0bGVdPVwibG9jYWxpemUoZ3JvdXAuZGlzcGxheU5hbWUpXCI+e3tsb2NhbGl6ZShncm91cC5kaXNwbGF5TmFtZSl9fTwvaDU+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBmb3JtIG9mIGdyb3VwLmZvcm1zXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxhICpuZ0lmPVwiIWNvbnRleHQuaXNFZGl0b3JNb2RlICYmIHByb3BlcnR5U2NoZW1hLm9wdGlvbnMuc3VwcG9ydFJvdXRlXCIgI25hdkxpbmtcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNtZS1wYWRkaW5nLXNxdWlzaC12LXNtIHNtZS1hcnJhbmdlLXN0YWNrLWggc21lLXNjaGVtZS1uYXYtaXRlbVwiXHJcbiAgICAgICAgICAgICAgICAgICAgcm9sZT1cInRhYlwiIFt0aXRsZV09XCJsb2NhbGl6ZShmb3JtLmRpc3BsYXlOYW1lKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3JvdXRlckxpbmtdPVwiYmFzZVVybCsnL2Zvcm0vJytmb3JtLm5hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5zbWUtYWN0aXZlXT1cImZvcm0ubmFtZT09PWFjdGl2ZUZvcm1OYW1lXCIgKGNsaWNrKT1cInN3aXRjaEZvcm0oZm9ybS5uYW1lKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzbWUtaWNvbiBzbWUtbWFyZ2luLXJpZ2h0LXhzIHt7Zm9ybS5pY29ufX1cIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImVsbGlwc2lzIHNtZS1wb3NpdGlvbi1mbGV4LWF1dG9cIj5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7bG9jYWxpemUoZm9ybS5kaXNwbGF5TmFtZSl9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic21lLXdpZHRoLXNtIHNtZS1wb3NpdGlvbi1jZW50ZXItaC1pbmxpbmVcIj48c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImlzRm9ybURpcnR5KGZvcm0ubmFtZSlcIj4qPC9zcGFuPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICAgIDxhICpuZ0lmPVwiISghY29udGV4dC5pc0VkaXRvck1vZGUgJiYgcHJvcGVydHlTY2hlbWEub3B0aW9ucy5zdXBwb3J0Um91dGUpXCIgI25hdkxpbmtcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNtZS1wYWRkaW5nLXNxdWlzaC12LXNtIHNtZS1hcnJhbmdlLXN0YWNrLWggc21lLXNjaGVtZS1uYXYtaXRlbVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cImxvY2FsaXplKGZvcm0uZGlzcGxheU5hbWUpXCIgcm9sZT1cInRhYlwiIChjbGljayk9XCJzd2l0Y2hGb3JtKGZvcm0ubmFtZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5zbWUtYWN0aXZlXT1cImZvcm0ubmFtZT09PWFjdGl2ZUZvcm1OYW1lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNtZS1pY29uIHNtZS1tYXJnaW4tcmlnaHQteHMge3tmb3JtLmljb259fVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZWxsaXBzaXMgc21lLXBvc2l0aW9uLWZsZXgtYXV0b1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3tsb2NhbGl6ZShmb3JtLmRpc3BsYXlOYW1lKX19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzbWUtd2lkdGgtc20gc21lLXBvc2l0aW9uLWNlbnRlci1oLWlubGluZVwiPjxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaXNGb3JtRGlydHkoZm9ybS5uYW1lKVwiPio8L3NwYW4+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvbmF2PlxyXG4gICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgPC91bD5cclxuICAgICAgICA8L25hdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJzbWUtcG9zaXRpb24tZmxleC1hdXRvIHNtZS1sYXlvdXQtcmVsYXRpdmVcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic21lLWxheW91dC1hYnNvbHV0ZSBzbWUtcG9zaXRpb24taW5zZXQtbm9uZSBzbWUtYXJyYW5nZS1vdmVyZmxvdy1hdXRvXCI+XHJcbiAgICAgICAgICA8Zm9ybSAqbmdGb3I9XCJsZXQgcHJvcGVydHkgb2YgcHJvcGVydHlTY2hlbWEucHJvcGVydGllczsgbGV0IGkgPSBpbmRleFwiPlxyXG4gICAgICAgICAgICA8ZGl2IFtjbGFzcy5zbWUtbGF5b3V0LW5vbmVdPVwiYWN0aXZlRm9ybU5hbWUhPT1wcm9wZXJ0eS5uYW1lXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cInNtZS1sYXlvdXQtYWJzb2x1dGUtcGhvbmUtdXAgc21lLXBvc2l0aW9uLWluc2V0LW5vbmUgc21lLWFycmFuZ2Utc3RhY2stdlwiPlxyXG4gICAgICAgICAgICAgIDwhLS0gPHNtZS1zY2hlbWEtZmllbGQtaG9zdCAjZmllbGRIb3N0IFtwcm9wZXJ0eVNjaGVtYV09XCJwcm9wZXJ0eVwiIFsoZGF0YSldPVwiZGF0YVtwcm9wZXJ0eS5uYW1lXVwiXHJcbiAgICAgICAgICBbY29udGV4dF09XCJjb250ZXh0XCIgKGRhdGFNYXJrZWRBc0RpcnR5KT1cIm1hcmtEYXRhQXNEaXJ0eShwcm9wZXJ0eS5uYW1lKVwiIGNsYXNzPVwic21lLXBvc2l0aW9uLWZsZXgtYXV0b1wiPlxyXG4gICAgICAgIDwvc21lLXNjaGVtYS1maWVsZC1ob3N0PiAtLT5cclxuICAgICAgICAgICAgICA8c21lLXNjaGVtYS1maWVsZC1ob3N0ICNmaWVsZEhvc3QgW3Byb3BlcnR5U2NoZW1hXT1cInByb3BlcnR5XCIgWyhkYXRhKV09XCJkYXRhW3Byb3BlcnR5Lm5hbWVdXCJcclxuICAgICAgICAgICAgICAgIFtjb250ZXh0XT1cImNvbnRleHRcIiBjbGFzcz1cInNtZS1wb3NpdGlvbi1mbGV4LWF1dG9cIj5cclxuICAgICAgICAgICAgICA8L3NtZS1zY2hlbWEtZmllbGQtaG9zdD5cclxuICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWdldEZvb3RlckJ1dHRvbkhpZGVPcHRpb24ocHJvcGVydHkubmFtZSlcIiBjbGFzcz1cInNtZS1wb3NpdGlvbi1mbGV4LW5vbmUgc21lLWZvY3VzLXpvbmVcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIGNsYXNzPVwic21lLWJ1dHRvbi1wcmltYXJ5XCJcclxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uU2F2ZUNsaWNrKHByb3BlcnR5Lm5hbWUpOyRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCJcclxuICAgICAgICAgICAgICAgICAgW3NtZURpc2FibGVkXT1cIiEoaXNGb3JtRGlydHkocHJvcGVydHkubmFtZSkgJiYgaXNGb3JtVmFsaWQocHJvcGVydHkubmFtZSkgJiYgIWlzRm9ybUJ1c3kocHJvcGVydHkubmFtZSkpXCI+e3tnZXRGb290ZXJCdXR0b25UZXh0KHByb3BlcnR5Lm5hbWUsJ3NhdmUnKX19PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwib25EaXNjYXJkQ2xpY2socHJvcGVydHkubmFtZSlcIlxyXG4gICAgICAgICAgICAgICAgICBbc21lRGlzYWJsZWRdPVwiIShpc0Zvcm1EaXJ0eShwcm9wZXJ0eS5uYW1lKSAmJiAhaXNGb3JtQnVzeShwcm9wZXJ0eS5uYW1lKSlcIj57e2dldEZvb3RlckJ1dHRvblRleHQocHJvcGVydHkubmFtZSwnZGlzY2FyZCcpfX08L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkNsb3NlQ2xpY2soKVwiPnt7Z2V0Rm9vdGVyQnV0dG9uVGV4dChwcm9wZXJ0eS5uYW1lLCdjbG9zZScpfX08L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Zvcm0+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
|