@sd-angular/core 1.3.205 → 1.3.207
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/assets/img/file-types/eps/001-file.eps +143 -143
- package/assets/img/file-types/eps/002-file-1.eps +136 -136
- package/assets/img/file-types/eps/003-file-2.eps +130 -130
- package/assets/img/file-types/eps/004-file-3.eps +127 -127
- package/assets/img/file-types/eps/005-file-4.eps +120 -120
- package/assets/img/file-types/eps/006-file-5.eps +133 -133
- package/assets/img/file-types/eps/007-file-6.eps +133 -133
- package/assets/img/file-types/eps/008-file-7.eps +144 -144
- package/assets/img/file-types/eps/009-file-8.eps +150 -150
- package/assets/img/file-types/eps/010-file-9.eps +155 -155
- package/assets/img/file-types/eps/011-file-10.eps +124 -124
- package/assets/img/file-types/eps/012-file-11.eps +147 -147
- package/assets/img/file-types/eps/013-file-12.eps +125 -125
- package/assets/img/file-types/eps/014-file-13.eps +129 -129
- package/assets/img/file-types/eps/015-file-14.eps +143 -143
- package/assets/img/file-types/eps/016-file-15.eps +130 -130
- package/assets/img/file-types/eps/017-file-16.eps +197 -197
- package/assets/img/file-types/eps/018-file-17.eps +146 -146
- package/assets/img/file-types/eps/019-file-18.eps +131 -131
- package/assets/img/file-types/eps/020-file-19.eps +137 -137
- package/assets/img/file-types/eps/021-file-20.eps +134 -134
- package/assets/img/file-types/eps/022-file-21.eps +130 -130
- package/assets/img/file-types/eps/023-file-22.eps +161 -161
- package/assets/img/file-types/eps/024-file-23.eps +144 -144
- package/assets/img/file-types/eps/025-file-24.eps +164 -164
- package/assets/img/file-types/eps/026-file-25.eps +135 -135
- package/assets/img/file-types/eps/027-file-26.eps +124 -124
- package/assets/img/file-types/eps/028-file-27.eps +120 -120
- package/assets/img/file-types/eps/029-file-28.eps +141 -141
- package/assets/img/file-types/eps/030-file-29.eps +130 -130
- package/assets/img/file-types/eps/031-file-30.eps +157 -157
- package/assets/img/file-types/eps/032-file-31.eps +139 -139
- package/assets/img/file-types/eps/033-file-32.eps +139 -139
- package/assets/img/file-types/eps/034-file-33.eps +189 -189
- package/assets/img/file-types/eps/035-file-34.eps +162 -162
- package/assets/img/file-types/eps/036-file-35.eps +142 -142
- package/assets/img/file-types/eps/037-file-36.eps +123 -123
- package/assets/img/file-types/eps/038-file-37.eps +127 -127
- package/assets/img/file-types/eps/039-file-38.eps +146 -146
- package/assets/img/file-types/eps/040-file-39.eps +126 -126
- package/assets/img/file-types/eps/041-file-40.eps +117 -117
- package/assets/img/file-types/eps/042-file-41.eps +156 -156
- package/assets/img/file-types/eps/043-file-42.eps +118 -118
- package/assets/img/file-types/eps/044-file-43.eps +172 -172
- package/assets/img/file-types/eps/045-file-44.eps +201 -201
- package/assets/img/file-types/eps/046-file-45.eps +94 -94
- package/assets/img/file-types/eps/047-file-46.eps +176 -176
- package/assets/img/file-types/eps/048-file-47.eps +238 -238
- package/assets/img/file-types/eps/049-file-48.eps +187 -187
- package/assets/img/file-types/eps/050-file-49.eps +137 -137
- package/bundles/sd-angular-core-table.umd.js +91 -75
- package/bundles/sd-angular-core-table.umd.js.map +1 -1
- package/bundles/sd-angular-core-table.umd.min.js +1 -1
- package/bundles/sd-angular-core-table.umd.min.js.map +1 -1
- package/esm2015/api/index.js +1 -1
- package/esm2015/api/sd-angular-core-api.js +1 -1
- package/esm2015/api/src/lib/api.model.js +1 -1
- package/esm2015/api/src/lib/api.module.js +1 -1
- package/esm2015/api/src/lib/api.service.js +1 -1
- package/esm2015/api/src/lib/http.interceptor.js +1 -1
- package/esm2015/api/src/lib/http.service.js +1 -1
- package/esm2015/api/src/lib/token.service.js +1 -1
- package/esm2015/api/src/public-api.js +1 -1
- package/esm2015/autocomplete/index.js +1 -1
- package/esm2015/autocomplete/sd-angular-core-autocomplete.js +1 -1
- package/esm2015/autocomplete/src/lib/autocomplete-display-def.directive.js +1 -1
- package/esm2015/autocomplete/src/lib/autocomplete.component.js +1 -1
- package/esm2015/autocomplete/src/lib/autocomplete.module.js +1 -1
- package/esm2015/autocomplete/src/public-api.js +1 -1
- package/esm2015/badge/index.js +1 -1
- package/esm2015/badge/sd-angular-core-badge.js +1 -1
- package/esm2015/badge/src/lib/badge.component.js +1 -1
- package/esm2015/badge/src/lib/badge.module.js +1 -1
- package/esm2015/badge/src/public-api.js +1 -1
- package/esm2015/button/index.js +1 -1
- package/esm2015/button/sd-angular-core-button.js +1 -1
- package/esm2015/button/src/lib/button.component.js +1 -1
- package/esm2015/button/src/lib/button.module.js +1 -1
- package/esm2015/button/src/public-api.js +1 -1
- package/esm2015/cache/index.js +1 -1
- package/esm2015/cache/sd-angular-core-cache.js +1 -1
- package/esm2015/cache/src/lib/cache.model.js +1 -1
- package/esm2015/cache/src/lib/cache.service.js +1 -1
- package/esm2015/cache/src/public-api.js +1 -1
- package/esm2015/chart/index.js +1 -1
- package/esm2015/chart/sd-angular-core-chart.js +1 -1
- package/esm2015/chart/src/lib/chart.component.js +1 -1
- package/esm2015/chart/src/lib/chart.model.js +1 -1
- package/esm2015/chart/src/lib/chart.module.js +1 -1
- package/esm2015/chart/src/public-api.js +1 -1
- package/esm2015/checkbox/index.js +1 -1
- package/esm2015/checkbox/sd-angular-core-checkbox.js +1 -1
- package/esm2015/checkbox/src/lib/checkbox.component.js +1 -1
- package/esm2015/checkbox/src/lib/checkbox.module.js +1 -1
- package/esm2015/checkbox/src/public-api.js +1 -1
- package/esm2015/chip/index.js +1 -1
- package/esm2015/chip/sd-angular-core-chip.js +1 -1
- package/esm2015/chip/src/lib/chip.component.js +1 -1
- package/esm2015/chip/src/lib/chip.model.js +1 -1
- package/esm2015/chip/src/lib/chip.module.js +1 -1
- package/esm2015/chip/src/lib/directives/sd-chip-display-def.directive.js +1 -1
- package/esm2015/chip/src/lib/pipes/removable-chip.pipe.js +1 -1
- package/esm2015/chip/src/public-api.js +1 -1
- package/esm2015/comment/index.js +1 -1
- package/esm2015/comment/sd-angular-core-comment.js +1 -1
- package/esm2015/comment/src/lib/comment.component.js +1 -1
- package/esm2015/comment/src/lib/comment.model.js +1 -1
- package/esm2015/comment/src/lib/comment.module.js +1 -1
- package/esm2015/comment/src/public-api.js +1 -1
- package/esm2015/common/index.js +1 -1
- package/esm2015/common/sd-angular-core-common.js +1 -1
- package/esm2015/common/src/lib/common.module.js +1 -1
- package/esm2015/common/src/lib/configurations/firebase.configuration.js +1 -1
- package/esm2015/common/src/lib/configurations/form.configuration.js +1 -1
- package/esm2015/common/src/lib/directives/sd-for.directive.js +1 -1
- package/esm2015/common/src/lib/directives/sd-lable.directive.js +1 -1
- package/esm2015/common/src/lib/directives/sd-let.directive.js +1 -1
- package/esm2015/common/src/lib/directives/sd-scroll.directive.js +1 -1
- package/esm2015/common/src/lib/directives/sd-suffix.directive.js +1 -1
- package/esm2015/common/src/lib/directives/view-def.directive.js +1 -1
- package/esm2015/common/src/lib/models/sd-form-control.js +1 -1
- package/esm2015/common/src/lib/others/detectIncognito.js +1 -1
- package/esm2015/common/src/lib/services/browser.service.js +1 -1
- package/esm2015/common/src/lib/typings/array.extension.js +1 -1
- package/esm2015/common/src/lib/typings/date.extension.js +1 -1
- package/esm2015/common/src/lib/typings/index.js +1 -1
- package/esm2015/common/src/lib/typings/number.extension.js +1 -1
- package/esm2015/common/src/lib/typings/string.extension.js +1 -1
- package/esm2015/common/src/lib/typings/utility.extension.js +1 -1
- package/esm2015/common/src/public-api.js +1 -1
- package/esm2015/confirm/index.js +1 -1
- package/esm2015/confirm/sd-angular-core-confirm.js +1 -1
- package/esm2015/confirm/src/lib/components/dialog-confirm/dialog-confirm.component.js +1 -1
- package/esm2015/confirm/src/lib/confirm.module.js +1 -1
- package/esm2015/confirm/src/lib/confirm.service.js +1 -1
- package/esm2015/confirm/src/public-api.js +1 -1
- package/esm2015/date-month/index.js +1 -1
- package/esm2015/date-month/sd-angular-core-date-month.js +1 -1
- package/esm2015/date-month/src/lib/date-month.component.js +1 -1
- package/esm2015/date-month/src/lib/date-month.module.js +1 -1
- package/esm2015/date-month/src/public-api.js +1 -1
- package/esm2015/date-range/index.js +1 -1
- package/esm2015/date-range/sd-angular-core-date-range.js +1 -1
- package/esm2015/date-range/src/lib/date-range.component.js +1 -1
- package/esm2015/date-range/src/lib/date-range.module.js +1 -1
- package/esm2015/date-range/src/public-api.js +1 -1
- package/esm2015/date-time/index.js +1 -1
- package/esm2015/date-time/sd-angular-core-date-time.js +1 -1
- package/esm2015/date-time/src/lib/date-time.component.js +1 -1
- package/esm2015/date-time/src/lib/date-time.module.js +1 -1
- package/esm2015/date-time/src/public-api.js +1 -1
- package/esm2015/db/index.js +1 -1
- package/esm2015/db/sd-angular-core-db.js +1 -1
- package/esm2015/db/src/lib/db.model.js +1 -1
- package/esm2015/db/src/lib/db.service.js +1 -1
- package/esm2015/db/src/public-api.js +1 -1
- package/esm2015/dynamic-report/index.js +1 -1
- package/esm2015/dynamic-report/sd-angular-core-dynamic-report.js +1 -1
- package/esm2015/dynamic-report/src/lib/dynamic-report.component.js +1 -1
- package/esm2015/dynamic-report/src/lib/dynamic-report.module.js +1 -1
- package/esm2015/dynamic-report/src/public-api.js +1 -1
- package/esm2015/editor/index.js +1 -1
- package/esm2015/editor/sd-angular-core-editor.js +1 -1
- package/esm2015/editor/src/lib/constant.js +1 -1
- package/esm2015/editor/src/lib/editor.component.js +1 -1
- package/esm2015/editor/src/lib/editor.model.js +1 -1
- package/esm2015/editor/src/lib/editor.module.js +1 -1
- package/esm2015/editor/src/public-api.js +1 -1
- package/esm2015/export/index.js +1 -1
- package/esm2015/export/sd-angular-core-export.js +1 -1
- package/esm2015/export/src/lib/excel.model.js +1 -1
- package/esm2015/export/src/lib/export.model.js +1 -1
- package/esm2015/export/src/lib/export.service.js +1 -1
- package/esm2015/export/src/public-api.js +1 -1
- package/esm2015/filter/index.js +1 -1
- package/esm2015/filter/sd-angular-core-filter.js +1 -1
- package/esm2015/filter/src/lib/directives/sd-filter-def.directive.js +1 -1
- package/esm2015/filter/src/lib/filter.component.js +1 -1
- package/esm2015/filter/src/lib/filter.model.js +1 -1
- package/esm2015/filter/src/lib/filter.module.js +1 -1
- package/esm2015/filter/src/lib/filter.service.js +1 -1
- package/esm2015/filter/src/lib/pipes/values-local.pipe.js +1 -1
- package/esm2015/filter/src/lib/pipes/values-server.pipe.js +1 -1
- package/esm2015/filter/src/public-api.js +1 -1
- package/esm2015/form/index.js +1 -1
- package/esm2015/form/sd-angular-core-form.js +1 -1
- package/esm2015/form/src/lib/form.module.js +1 -1
- package/esm2015/form/src/public-api.js +1 -1
- package/esm2015/grid/index.js +1 -1
- package/esm2015/grid/sd-angular-core-grid.js +1 -1
- package/esm2015/grid/src/lib/components/grid-config/grid-config.component.js +1 -1
- package/esm2015/grid/src/lib/components/grid-config/grid-config.model.js +1 -1
- package/esm2015/grid/src/lib/components/grid-desktop-column-children-view/grid-desktop-column-children-view.component.js +1 -1
- package/esm2015/grid/src/lib/components/grid-desktop-column-edit/grid-desktop-column-edit.component.js +1 -1
- package/esm2015/grid/src/lib/components/grid-desktop-column-view/grid-desktop-column-view.component.js +1 -1
- package/esm2015/grid/src/lib/components/grid-desktop-inline-filter/grid-desktop-inline-filter.component.js +1 -1
- package/esm2015/grid/src/lib/components/grid-import-excel/grid-import-excel.component.js +1 -1
- package/esm2015/grid/src/lib/components/grid-mobile-item-view/grid-mobile-item-view.component.js +1 -1
- package/esm2015/grid/src/lib/components/grid-popup-editor/grid-popup-editor.component.js +1 -1
- package/esm2015/grid/src/lib/components/grid-popup-export-excel/grid-popup-export-excel.component.js +1 -1
- package/esm2015/grid/src/lib/components/grid-popup-export-excel/grid-popup-export-excel.model.js +1 -1
- package/esm2015/grid/src/lib/components/grid-popup-filter/grid-popup-filter.component.js +1 -1
- package/esm2015/grid/src/lib/components/grid-popup-filter/grid-popup-filter.model.js +1 -1
- package/esm2015/grid/src/lib/components/grid-popup-quick-filter-detail/grid-popup-quick-filter-detail.component.js +1 -1
- package/esm2015/grid/src/lib/components/grid-sub-information/grid-sub-information.component.js +1 -1
- package/esm2015/grid/src/lib/directives/cell-def.directive.js +1 -1
- package/esm2015/grid/src/lib/directives/cell-editor-def.directive.js +1 -1
- package/esm2015/grid/src/lib/directives/cell-footer-def.directive.js +1 -1
- package/esm2015/grid/src/lib/directives/sub-information-header-def.directive.js +1 -1
- package/esm2015/grid/src/lib/grid.component.js +1 -1
- package/esm2015/grid/src/lib/grid.model.js +1 -1
- package/esm2015/grid/src/lib/grid.module.js +1 -1
- package/esm2015/grid/src/lib/models/filter-info.model.js +1 -1
- package/esm2015/grid/src/lib/models/grid-configuration.model.js +1 -1
- package/esm2015/grid/src/lib/models/handler-dotnet.js +1 -1
- package/esm2015/grid/src/lib/models/handler-local.js +1 -1
- package/esm2015/grid/src/lib/models/handler.js +1 -1
- package/esm2015/grid/src/lib/pipes/cell-desktop-class-name.pipe.js +1 -1
- package/esm2015/grid/src/lib/pipes/cell-mobile-class-name.pipe.js +1 -1
- package/esm2015/grid/src/lib/pipes/column-command-filter.pipe.js +1 -1
- package/esm2015/grid/src/lib/pipes/column-html-template.pipe.js +1 -1
- package/esm2015/grid/src/lib/pipes/column-title.pipe.js +1 -1
- package/esm2015/grid/src/lib/pipes/column-values.pipe.js +1 -1
- package/esm2015/grid/src/lib/pipes/command-disabled.pipe.js +1 -1
- package/esm2015/grid/src/lib/pipes/command-filter.pipe.js +1 -1
- package/esm2015/grid/src/lib/pipes/command-hidden.pipe.js +1 -1
- package/esm2015/grid/src/lib/pipes/command-icon.pipe.js +1 -1
- package/esm2015/grid/src/lib/pipes/command-title.pipe.js +1 -1
- package/esm2015/grid/src/lib/pipes/dynamic-items.pipe.js +1 -1
- package/esm2015/grid/src/lib/pipes/editor-dynamic-item.pipe.js +1 -1
- package/esm2015/grid/src/lib/pipes/editor-handler.pipe.js +1 -1
- package/esm2015/grid/src/lib/pipes/editor-popup-visible.pipe.js +1 -1
- package/esm2015/grid/src/lib/pipes/editor-sub-information-handler.pipe.js +1 -1
- package/esm2015/grid/src/lib/pipes/editor-validate.pipe.js +1 -1
- package/esm2015/grid/src/lib/pipes/filter-mobile.pipe.js +1 -1
- package/esm2015/grid/src/lib/pipes/mobile-command-filter.js +1 -1
- package/esm2015/grid/src/lib/pipes/mobile-view-html-template.pipe.js +1 -1
- package/esm2015/grid/src/lib/pipes/value-transform.pipe.js +1 -1
- package/esm2015/grid/src/public-api.js +1 -1
- package/esm2015/grid-material/index.js +1 -1
- package/esm2015/grid-material/sd-angular-core-grid-material.js +1 -1
- package/esm2015/grid-material/src/lib/components/column-inline-filter/column-inline-filter.component.js +1 -1
- package/esm2015/grid-material/src/lib/components/desktop-cell/desktop-cell.component.js +1 -1
- package/esm2015/grid-material/src/lib/components/desktop-cell-children-view/desktop-cell-children-view.component.js +1 -1
- package/esm2015/grid-material/src/lib/components/desktop-cell-editor/desktop-cell-editor.component.js +1 -1
- package/esm2015/grid-material/src/lib/components/desktop-cell-view/desktop-cell-view.component.js +1 -1
- package/esm2015/grid-material/src/lib/components/desktop-command/desktop-command.component.js +1 -1
- package/esm2015/grid-material/src/lib/components/desktop-editor-validation/desktop-editor-validation.component.js +1 -1
- package/esm2015/grid-material/src/lib/components/dynamic-column/dynamic-column.component.js +1 -1
- package/esm2015/grid-material/src/lib/components/grid-filter/grid-filter.component.js +1 -1
- package/esm2015/grid-material/src/lib/components/popup-export/popup-export.component.js +1 -1
- package/esm2015/grid-material/src/lib/components/popup-filter/popup-filter.component.js +1 -1
- package/esm2015/grid-material/src/lib/components/popup-grid-configuration/popup-grid-configuration.component.js +1 -1
- package/esm2015/grid-material/src/lib/components/quick-action/quick-action.component.js +1 -1
- package/esm2015/grid-material/src/lib/directives/sd-material-cell-def.directive.js +1 -1
- package/esm2015/grid-material/src/lib/directives/sd-material-empty-data-def.directive.js +1 -1
- package/esm2015/grid-material/src/lib/directives/sd-material-filter-def.directive.js +1 -1
- package/esm2015/grid-material/src/lib/directives/sd-material-footer-def.directive.js +1 -1
- package/esm2015/grid-material/src/lib/directives/sd-material-sub-information-def.directive.js +1 -1
- package/esm2015/grid-material/src/lib/functions/calculate-sd-id.js +1 -1
- package/esm2015/grid-material/src/lib/grid-material.component.js +1 -1
- package/esm2015/grid-material/src/lib/grid-material.module.js +1 -1
- package/esm2015/grid-material/src/lib/models/grid-action.model.js +1 -1
- package/esm2015/grid-material/src/lib/models/grid-cell.model.js +1 -1
- package/esm2015/grid-material/src/lib/models/grid-column.model.js +1 -1
- package/esm2015/grid-material/src/lib/models/grid-command.model.js +1 -1
- package/esm2015/grid-material/src/lib/models/grid-config.model.js +1 -1
- package/esm2015/grid-material/src/lib/models/grid-configuration.model.js +1 -1
- package/esm2015/grid-material/src/lib/models/grid-editor.model.js +1 -1
- package/esm2015/grid-material/src/lib/models/grid-export.model.js +1 -1
- package/esm2015/grid-material/src/lib/models/grid-group.model.js +1 -1
- package/esm2015/grid-material/src/lib/models/grid-option.model.js +1 -1
- package/esm2015/grid-material/src/lib/models/grid-reload.model.js +1 -1
- package/esm2015/grid-material/src/lib/models/grid-selection.model.js +1 -1
- package/esm2015/grid-material/src/lib/models/grid-style.model.js +1 -1
- package/esm2015/grid-material/src/lib/models/grid-sub-information.model.js +1 -1
- package/esm2015/grid-material/src/lib/models/grid.model.js +1 -1
- package/esm2015/grid-material/src/lib/pipes/cell-view.pipe.js +1 -1
- package/esm2015/grid-material/src/lib/pipes/column-badge.pipe.js +1 -1
- package/esm2015/grid-material/src/lib/pipes/column-children-filter.pipe.js +1 -1
- package/esm2015/grid-material/src/lib/pipes/column-html-template.pipe.js +1 -1
- package/esm2015/grid-material/src/lib/pipes/column-title.pipe.js +1 -1
- package/esm2015/grid-material/src/lib/pipes/column-tooltip.pipe.js +1 -1
- package/esm2015/grid-material/src/lib/pipes/column-transform.pipe.js +1 -1
- package/esm2015/grid-material/src/lib/pipes/column-values.pipe.js +1 -1
- package/esm2015/grid-material/src/lib/pipes/command-disable.pipe.js +1 -1
- package/esm2015/grid-material/src/lib/pipes/command-filter.pipe.js +1 -1
- package/esm2015/grid-material/src/lib/pipes/command-icon.pipe.js +1 -1
- package/esm2015/grid-material/src/lib/pipes/command-title.pipe.js +1 -1
- package/esm2015/grid-material/src/lib/pipes/editor-handler-column.pipe.js +1 -1
- package/esm2015/grid-material/src/lib/pipes/editor-handler-row.pipe.js +1 -1
- package/esm2015/grid-material/src/lib/pipes/editor-validate.pipe.js +1 -1
- package/esm2015/grid-material/src/lib/pipes/filter-column.pipe.js +1 -1
- package/esm2015/grid-material/src/lib/pipes/filter-external.pipe.js +1 -1
- package/esm2015/grid-material/src/lib/pipes/grid-configuration-result.pipe.js +1 -1
- package/esm2015/grid-material/src/lib/pipes/sd-group.pipe.js +1 -1
- package/esm2015/grid-material/src/lib/pipes/selection-action-filter.pipe.js +1 -1
- package/esm2015/grid-material/src/lib/pipes/selection-disable.pipe.js +1 -1
- package/esm2015/grid-material/src/lib/pipes/selection-visible-select-all.pipe.js +1 -1
- package/esm2015/grid-material/src/lib/pipes/selection-visible.pipe.js +1 -1
- package/esm2015/grid-material/src/lib/pipes/style-row-css.pipe.js +1 -1
- package/esm2015/grid-material/src/lib/services/generated-column/generated-column.model.js +1 -1
- package/esm2015/grid-material/src/lib/services/generated-column/generated-column.service.js +1 -1
- package/esm2015/grid-material/src/lib/services/grid-configuration.service.js +1 -1
- package/esm2015/grid-material/src/lib/services/grid-filter/grid-filter.model.js +1 -1
- package/esm2015/grid-material/src/lib/services/grid-filter/grid-filter.service.js +1 -1
- package/esm2015/grid-material/src/public-api.js +1 -1
- package/esm2015/group/index.js +1 -1
- package/esm2015/group/sd-angular-core-group.js +1 -1
- package/esm2015/group/src/lib/group.component.js +1 -1
- package/esm2015/group/src/lib/group.module.js +1 -1
- package/esm2015/group/src/public-api.js +1 -1
- package/esm2015/header-title/index.js +1 -1
- package/esm2015/header-title/sd-angular-core-header-title.js +1 -1
- package/esm2015/header-title/src/lib/header-title.component.js +1 -1
- package/esm2015/header-title/src/lib/header-title.module.js +1 -1
- package/esm2015/header-title/src/public-api.js +1 -1
- package/esm2015/image-preview/index.js +1 -1
- package/esm2015/image-preview/sd-angular-core-image-preview.js +1 -1
- package/esm2015/image-preview/src/lib/directives/image-preview.directive.js +1 -1
- package/esm2015/image-preview/src/lib/image-preview/image-preview-sdmodal.component.js +1 -1
- package/esm2015/image-preview/src/lib/image-preview/image-preview.component.js +1 -1
- package/esm2015/image-preview/src/lib/image-preview/image-preview.module.js +1 -1
- package/esm2015/image-preview/src/lib/models/image-preview.model.js +1 -1
- package/esm2015/image-preview/src/public-api.js +1 -1
- package/esm2015/input/index.js +1 -1
- package/esm2015/input/sd-angular-core-input.js +1 -1
- package/esm2015/input/src/lib/directives/input-suffix.directive.js +1 -1
- package/esm2015/input/src/lib/directives/touch.directive.js +1 -1
- package/esm2015/input/src/lib/input-tooltip.pipe.js +1 -1
- package/esm2015/input/src/lib/input.component.js +1 -1
- package/esm2015/input/src/lib/input.module.js +1 -1
- package/esm2015/input/src/public-api.js +1 -1
- package/esm2015/input-currency/index.js +1 -1
- package/esm2015/input-currency/sd-angular-core-input-currency.js +1 -1
- package/esm2015/input-currency/src/lib/input-currency-tooltip.pipe.js +1 -1
- package/esm2015/input-currency/src/lib/input-currency.component.js +1 -1
- package/esm2015/input-currency/src/lib/input-currency.module.js +1 -1
- package/esm2015/input-currency/src/public-api.js +1 -1
- package/esm2015/input-dropdown/index.js +1 -1
- package/esm2015/input-dropdown/sd-angular-core-input-dropdown.js +1 -1
- package/esm2015/input-dropdown/src/lib/input-tooltip.pipe.js +1 -1
- package/esm2015/input-dropdown/src/lib/input.component.js +1 -1
- package/esm2015/input-dropdown/src/lib/input.module.js +1 -1
- package/esm2015/input-dropdown/src/public-api.js +1 -1
- package/esm2015/input-number/index.js +1 -1
- package/esm2015/input-number/sd-angular-core-input-number.js +1 -1
- package/esm2015/input-number/src/lib/input-number.component.js +1 -1
- package/esm2015/input-number/src/lib/input-number.module.js +1 -1
- package/esm2015/input-number/src/public-api.js +1 -1
- package/esm2015/input-upload-file/index.js +1 -1
- package/esm2015/input-upload-file/sd-angular-core-input-upload-file.js +1 -1
- package/esm2015/input-upload-file/src/lib/input-upload-file.component.js +1 -1
- package/esm2015/input-upload-file/src/lib/input-upload-file.module.js +1 -1
- package/esm2015/input-upload-file/src/public-api.js +1 -1
- package/esm2015/json-editor/index.js +1 -1
- package/esm2015/json-editor/sd-angular-core-json-editor.js +1 -1
- package/esm2015/json-editor/src/lib/json-editor.component.js +1 -1
- package/esm2015/json-editor/src/lib/json-editor.module.js +1 -1
- package/esm2015/json-editor/src/public-api.js +1 -1
- package/esm2015/konva/index.js +1 -1
- package/esm2015/konva/sd-angular-core-konva.js +1 -1
- package/esm2015/konva/src/lib/konva.module.js +1 -1
- package/esm2015/konva/src/lib/merge-images/merge-images.component.js +1 -1
- package/esm2015/konva/src/public-api.js +1 -1
- package/esm2015/label/index.js +1 -1
- package/esm2015/label/sd-angular-core-label.js +1 -1
- package/esm2015/label/src/lib/label.component.js +1 -1
- package/esm2015/label/src/lib/label.module.js +1 -1
- package/esm2015/label/src/public-api.js +1 -1
- package/esm2015/lib/core.module.js +1 -1
- package/esm2015/lib/material.module.js +1 -1
- package/esm2015/loading/index.js +1 -1
- package/esm2015/loading/sd-angular-core-loading.js +1 -1
- package/esm2015/loading/src/lib/loading.service.js +1 -1
- package/esm2015/loading/src/public-api.js +1 -1
- package/esm2015/modal/index.js +1 -1
- package/esm2015/modal/sd-angular-core-modal.js +1 -1
- package/esm2015/modal/src/lib/bottom-sheet/bottom-sheet-body/bottom-sheet-body.component.js +1 -1
- package/esm2015/modal/src/lib/bottom-sheet/bottom-sheet-footer/bottom-sheet-footer.component.js +1 -1
- package/esm2015/modal/src/lib/bottom-sheet/bottom-sheet-header/bottom-sheet-header.component.js +1 -1
- package/esm2015/modal/src/lib/bottom-sheet/bottom-sheet.component.js +1 -1
- package/esm2015/modal/src/lib/modal/modal-body/modal-body.component.js +1 -1
- package/esm2015/modal/src/lib/modal/modal-footer/modal-footer.component.js +1 -1
- package/esm2015/modal/src/lib/modal/modal-header/modal-header.component.js +1 -1
- package/esm2015/modal/src/lib/modal/modal.component.js +1 -1
- package/esm2015/modal/src/lib/modal.module.js +1 -1
- package/esm2015/modal/src/public-api.js +1 -1
- package/esm2015/modal-resizable/index.js +1 -1
- package/esm2015/modal-resizable/sd-angular-core-modal-resizable.js +1 -1
- package/esm2015/modal-resizable/src/lib/modal-resizable/modal-resizable.component.js +1 -1
- package/esm2015/modal-resizable/src/lib/modal-resizable.module.js +1 -1
- package/esm2015/modal-resizable/src/public-api.js +1 -1
- package/esm2015/notify/index.js +1 -1
- package/esm2015/notify/sd-angular-core-notify.js +1 -1
- package/esm2015/notify/src/lib/components/dialog-confirm/dialog-confirm.component.js +1 -1
- package/esm2015/notify/src/lib/configurations/notify.configuration.js +1 -1
- package/esm2015/notify/src/lib/notify.module.js +1 -1
- package/esm2015/notify/src/lib/notify.service.js +1 -1
- package/esm2015/notify/src/public-api.js +1 -1
- package/esm2015/pdf/index.js +1 -1
- package/esm2015/pdf/sd-angular-core-pdf.js +1 -1
- package/esm2015/pdf/src/lib/pdf.module.js +1 -1
- package/esm2015/pdf/src/lib/pdf.service.js +1 -1
- package/esm2015/pdf/src/public-api.js +1 -1
- package/esm2015/popover/index.js +1 -1
- package/esm2015/popover/sd-angular-core-popover.js +1 -1
- package/esm2015/popover/src/lib/directives/popover-content.directive.js +1 -1
- package/esm2015/popover/src/lib/directives/popover-trigger.directive.js +1 -1
- package/esm2015/popover/src/lib/popover/popover.component.js +1 -1
- package/esm2015/popover/src/lib/popover.model.js +1 -1
- package/esm2015/popover/src/lib/popover.module.js +1 -1
- package/esm2015/popover/src/public-api.js +1 -1
- package/esm2015/print/index.js +1 -1
- package/esm2015/print/sd-angular-core-print.js +1 -1
- package/esm2015/print/src/lib/fonts/times/bold-italic.js +1 -1
- package/esm2015/print/src/lib/fonts/times/bold.js +1 -1
- package/esm2015/print/src/lib/fonts/times/italic.js +1 -1
- package/esm2015/print/src/lib/fonts/times/normal.js +1 -1
- package/esm2015/print/src/lib/print.component.js +1 -1
- package/esm2015/print/src/lib/print.module.js +1 -1
- package/esm2015/print/src/public-api.js +1 -1
- package/esm2015/public-api.js +1 -1
- package/esm2015/quick-action/index.js +1 -1
- package/esm2015/quick-action/sd-angular-core-quick-action.js +1 -1
- package/esm2015/quick-action/src/lib/quick-action.component.js +1 -1
- package/esm2015/quick-action/src/lib/quick-action.module.js +1 -1
- package/esm2015/quick-action/src/public-api.js +1 -1
- package/esm2015/radio/index.js +1 -1
- package/esm2015/radio/sd-angular-core-radio.js +1 -1
- package/esm2015/radio/src/lib/radio.component.js +1 -1
- package/esm2015/radio/src/lib/radio.module.js +1 -1
- package/esm2015/radio/src/public-api.js +1 -1
- package/esm2015/sd-angular-core.js +1 -1
- package/esm2015/select/index.js +1 -1
- package/esm2015/select/sd-angular-core-select.js +1 -1
- package/esm2015/select/src/lib/select-display-def.directive.js +1 -1
- package/esm2015/select/src/lib/select.component.js +1 -1
- package/esm2015/select/src/lib/select.module.js +1 -1
- package/esm2015/select/src/public-api.js +1 -1
- package/esm2015/select-badge/index.js +1 -1
- package/esm2015/select-badge/sd-angular-core-select-badge.js +1 -1
- package/esm2015/select-badge/src/lib/select-badge-display-def.directive.js +1 -1
- package/esm2015/select-badge/src/lib/select-badge.component.js +1 -1
- package/esm2015/select-badge/src/lib/select-badge.module.js +1 -1
- package/esm2015/select-badge/src/public-api.js +1 -1
- package/esm2015/select-editor/index.js +1 -1
- package/esm2015/select-editor/sd-angular-core-select-editor.js +1 -1
- package/esm2015/select-editor/src/lib/select-editor.component.js +1 -1
- package/esm2015/select-editor/src/lib/select-editor.module.js +1 -1
- package/esm2015/select-editor/src/public-api.js +1 -1
- package/esm2015/service/index.js +1 -1
- package/esm2015/service/sd-angular-core-service.js +1 -1
- package/esm2015/service/src/lib/service.module.js +1 -1
- package/esm2015/service/src/public-api.js +1 -1
- package/esm2015/setting/index.js +1 -1
- package/esm2015/setting/sd-angular-core-setting.js +1 -1
- package/esm2015/setting/src/lib/setting.model.js +1 -1
- package/esm2015/setting/src/lib/setting.service.js +1 -1
- package/esm2015/setting/src/public-api.js +1 -1
- package/esm2015/side-drawer/index.js +1 -1
- package/esm2015/side-drawer/sd-angular-core-side-drawer.js +1 -1
- package/esm2015/side-drawer/src/lib/side-drawer/side-drawer.component.js +1 -1
- package/esm2015/side-drawer/src/lib/side-drawer.module.js +1 -1
- package/esm2015/side-drawer/src/public-api.js +1 -1
- package/esm2015/switch/index.js +1 -1
- package/esm2015/switch/sd-angular-core-switch.js +1 -1
- package/esm2015/switch/src/lib/switch.component.js +1 -1
- package/esm2015/switch/src/lib/switch.module.js +1 -1
- package/esm2015/switch/src/public-api.js +1 -1
- package/esm2015/tab-router/index.js +1 -1
- package/esm2015/tab-router/sd-angular-core-tab-router.js +1 -1
- package/esm2015/tab-router/src/lib/actions/tab-router.action.js +1 -1
- package/esm2015/tab-router/src/lib/components/tab-router-item/tab-router-item.component.js +1 -1
- package/esm2015/tab-router/src/lib/components/tab-router-nav/tab-router-nav.component.js +1 -1
- package/esm2015/tab-router/src/lib/components/tab-router-outlet/tab-router-outlet.component.js +1 -1
- package/esm2015/tab-router/src/lib/decorators/tab.decorator.js +1 -1
- package/esm2015/tab-router/src/lib/directives/router-link-mouse-down.directive.js +1 -1
- package/esm2015/tab-router/src/lib/events/tab-router.event.js +1 -1
- package/esm2015/tab-router/src/lib/models/tab-router.model.js +1 -1
- package/esm2015/tab-router/src/lib/pipes/tab-info.pipe.js +1 -1
- package/esm2015/tab-router/src/lib/services/tab-decorator.service.js +1 -1
- package/esm2015/tab-router/src/lib/services/tab-router.service.js +1 -1
- package/esm2015/tab-router/src/lib/tab-router.module.js +1 -1
- package/esm2015/tab-router/src/public-api.js +1 -1
- package/esm2015/table/index.js +1 -1
- package/esm2015/table/sd-angular-core-table.js +1 -1
- package/esm2015/table/src/lib/components/column-inline-filter/column-inline-filter.component.js +1 -1
- package/esm2015/table/src/lib/components/desktop-cell/desktop-cell.component.js +1 -1
- package/esm2015/table/src/lib/components/desktop-cell-view/desktop-cell-view.component.js +1 -1
- package/esm2015/table/src/lib/components/desktop-command/desktop-command.component.js +1 -1
- package/esm2015/table/src/lib/components/popup-configuration/popup-configuration.component.js +1 -1
- package/esm2015/table/src/lib/components/popup-filter/popup-filter.component.js +1 -1
- package/esm2015/table/src/lib/components/quick-action/quick-action.component.js +1 -1
- package/esm2015/table/src/lib/components/table-filter/table-filter.component.js +1 -1
- package/esm2015/table/src/lib/directives/sd-table-cell-def.directive.js +1 -1
- package/esm2015/table/src/lib/directives/sd-table-expand-def.directive.js +1 -1
- package/esm2015/table/src/lib/directives/sd-table-filter-def.directive.js +1 -1
- package/esm2015/table/src/lib/directives/sd-table-footer-def.directive.js +1 -1
- package/esm2015/table/src/lib/models/index.js +1 -1
- package/esm2015/table/src/lib/models/table-column.model.js +1 -1
- package/esm2015/table/src/lib/models/table-command.model.js +1 -1
- package/esm2015/table/src/lib/models/table-configuration.model.js +1 -1
- package/esm2015/table/src/lib/models/table-item.model.js +1 -1
- package/esm2015/table/src/lib/models/table-option-config.model.js +1 -1
- package/esm2015/table/src/lib/models/table-option-expand.model.js +1 -1
- package/esm2015/table/src/lib/models/table-option-export.model.js +1 -1
- package/esm2015/table/src/lib/models/table-option-group.model.js +1 -1
- package/esm2015/table/src/lib/models/table-option-paginate.model.js +1 -1
- package/esm2015/table/src/lib/models/table-option-reload.model.js +1 -1
- package/esm2015/table/src/lib/models/table-option-selector.model.js +1 -1
- package/esm2015/table/src/lib/models/table-option-sort.model.js +1 -1
- package/esm2015/table/src/lib/models/table-option-style.model.js +1 -1
- package/esm2015/table/src/lib/models/table-option.model.js +1 -1
- package/esm2015/table/src/lib/pipes/column-tooltip.pipe.js +1 -1
- package/esm2015/table/src/lib/pipes/command-disable.pipe.js +1 -1
- package/esm2015/table/src/lib/pipes/command-filter.pipe.js +1 -1
- package/esm2015/table/src/lib/pipes/command-icon.pipe.js +1 -1
- package/esm2015/table/src/lib/pipes/command-title.pipe.js +1 -1
- package/esm2015/table/src/lib/pipes/filter-column.pipe.js +1 -1
- package/esm2015/table/src/lib/pipes/filter-external.pipe.js +1 -1
- package/esm2015/table/src/lib/pipes/sd-group.pipe.js +1 -1
- package/esm2015/table/src/lib/pipes/selection-action-filter.pipe.js +1 -1
- package/esm2015/table/src/lib/pipes/selection-disable.pipe.js +1 -1
- package/esm2015/table/src/lib/pipes/selection-visible-select-all.pipe.js +1 -1
- package/esm2015/table/src/lib/pipes/selection-visible.pipe.js +1 -1
- package/esm2015/table/src/lib/services/table-configuration.service.js +1 -1
- package/esm2015/table/src/lib/services/table-filter/table-filter.model.js +1 -1
- package/esm2015/table/src/lib/services/table-filter/table-filter.service.js +1 -1
- package/esm2015/table/src/lib/table.component.js +17 -6
- package/esm2015/table/src/lib/table.module.js +1 -1
- package/esm2015/table/src/public-api.js +1 -1
- package/esm2015/textarea/index.js +1 -1
- package/esm2015/textarea/sd-angular-core-textarea.js +1 -1
- package/esm2015/textarea/src/lib/textarea.component.js +1 -1
- package/esm2015/textarea/src/lib/textarea.module.js +1 -1
- package/esm2015/textarea/src/public-api.js +1 -1
- package/esm2015/time/index.js +1 -1
- package/esm2015/time/sd-angular-core-time.js +1 -1
- package/esm2015/time/src/lib/time.component.js +1 -1
- package/esm2015/time/src/lib/time.module.js +1 -1
- package/esm2015/time/src/public-api.js +1 -1
- package/esm2015/timeline/index.js +1 -1
- package/esm2015/timeline/sd-angular-core-timeline.js +1 -1
- package/esm2015/timeline/src/lib/components/timeline.component.js +1 -1
- package/esm2015/timeline/src/lib/directives/timeline-def.directive.js +1 -1
- package/esm2015/timeline/src/lib/timeline.module.js +1 -1
- package/esm2015/timeline/src/public-api.js +1 -1
- package/esm2015/translate/index.js +1 -1
- package/esm2015/translate/sd-angular-core-translate.js +1 -1
- package/esm2015/translate/src/lib/translate.model.js +1 -1
- package/esm2015/translate/src/lib/translate.module.js +1 -1
- package/esm2015/translate/src/lib/translate.pipe.js +1 -1
- package/esm2015/translate/src/lib/translate.service.js +1 -1
- package/esm2015/upload-excel/index.js +1 -1
- package/esm2015/upload-excel/sd-angular-core-upload-excel.js +1 -1
- package/esm2015/upload-excel/src/lib/pipes/columm-hidden.pipe.js +1 -1
- package/esm2015/upload-excel/src/lib/pipes/column-transform.pipe.js +1 -1
- package/esm2015/upload-excel/src/lib/upload-excel.component.js +1 -1
- package/esm2015/upload-excel/src/lib/upload-excel.model.js +1 -1
- package/esm2015/upload-excel/src/lib/upload-excel.module.js +1 -1
- package/esm2015/upload-excel/src/public-api.js +1 -1
- package/esm2015/upload-file/index.js +1 -1
- package/esm2015/upload-file/sd-angular-core-upload-file.js +1 -1
- package/esm2015/upload-file/src/lib/upload-file.component.js +1 -1
- package/esm2015/upload-file/src/lib/upload-file.module.js +1 -1
- package/esm2015/upload-file/src/public-api.js +1 -1
- package/esm2015/utility/index.js +1 -1
- package/esm2015/utility/sd-angular-core-utility.js +1 -1
- package/esm2015/utility/src/lib/directives/desktop.directive.js +1 -1
- package/esm2015/utility/src/lib/directives/mobile-tablet.directive.js +1 -1
- package/esm2015/utility/src/lib/directives/mobile.directive.js +1 -1
- package/esm2015/utility/src/lib/directives/tablet.directive.js +1 -1
- package/esm2015/utility/src/lib/pipes/currency.pipe.js +1 -1
- package/esm2015/utility/src/lib/pipes/safe-html.pipe.js +1 -1
- package/esm2015/utility/src/lib/pipes/time-different.pipe.js +1 -1
- package/esm2015/utility/src/lib/utility.module.js +1 -1
- package/esm2015/utility/src/lib/utility.service.js +1 -1
- package/esm2015/utility/src/public-api.js +1 -1
- package/esm2015/view/index.js +1 -1
- package/esm2015/view/sd-angular-core-view.js +1 -1
- package/esm2015/view/src/lib/view.module.js +1 -1
- package/esm2015/view/src/public-api.js +1 -1
- package/esm2015/zip/index.js +1 -1
- package/esm2015/zip/sd-angular-core-zip.js +1 -1
- package/esm2015/zip/src/lib/zip.module.js +1 -1
- package/esm2015/zip/src/lib/zip.service.js +1 -1
- package/esm2015/zip/src/public-api.js +1 -1
- package/fesm2015/sd-angular-core-table.js +16 -5
- package/fesm2015/sd-angular-core-table.js.map +1 -1
- package/package.json +1 -1
- package/{sd-angular-core-1.3.205.tgz → sd-angular-core-1.3.207.tgz} +0 -0
|
@@ -1188,4 +1188,4 @@ SdGrid.propDecorators = {
|
|
|
1188
1188
|
paginator: [{ type: ViewChild, args: [MatPaginator,] }],
|
|
1189
1189
|
option: [{ type: Input }]
|
|
1190
1190
|
};
|
|
1191
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiQzovVXNlcnMvdXNlci9Eb2N1bWVudHMvbGliLWNvcmUtdWkvcHJvamVjdHMvc2QtY29yZS9ncmlkLyIsInNvdXJjZXMiOlsic3JjL2xpYi9ncmlkLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLFNBQVMsRUFFVCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFlBQVksRUFDWixTQUFTLEVBR1QsTUFBTSxFQUNOLFFBQVEsRUFDUixlQUFlLEVBQ2hCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM1RCxPQUFPLENBQUMsTUFBTSxRQUFRLENBQUM7QUFFdkIsT0FBTyxFQUNMLFlBQVksRUFDYixNQUFNLHNCQUFzQixDQUFDO0FBRTlCLE9BQU8sRUFDTCxlQUFlLEVBQ2hCLE1BQU0seUJBQXlCLENBQUM7QUFFakMsT0FBTyxFQUNMLGdCQUFnQixFQUNqQixNQUFNLDBCQUEwQixDQUFDO0FBRWxDLE9BQU8sRUFDTCxrQkFBa0IsRUFDbkIsTUFBTSw0QkFBNEIsQ0FBQztBQUVwQyxPQUFPLEVBQWdCLGlCQUFpQixFQUFnRCxNQUFNLGNBQWMsQ0FBQztBQUk3RyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUdoRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQU0zQyxPQUFPLEVBQXNCLFdBQVcsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNyRSxPQUFPLEVB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T0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDO29CQUM3RSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxLQUFLLEtBQUssRUFBRTt3QkFDcEMsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssSUFBSSxJQUFJLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxTQUFTLENBQUM7NkJBQ3JHLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxHQUFHLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO3dCQUNqRCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLElBQUksV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7d0JBQ2xJLE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7d0JBQ2hELE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQzt3QkFDdkQsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7d0JBQ25CLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO3FCQUNwQjt5QkFBTTt3QkFDTCxNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMs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ICBJbnB1dCxcclxuICBWaWV3Q2hpbGQsXHJcbiAgRWxlbWVudFJlZixcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBWaWV3Q2hpbGRyZW4sXHJcbiAgUXVlcnlMaXN0LFxyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgT25EZXN0cm95LFxyXG4gIEluamVjdCxcclxuICBPcHRpb25hbCxcclxuICBDb250ZW50Q2hpbGRyZW5cclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRGF0ZVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBEZXZpY2VEZXRlY3RvclNlcnZpY2UgfSBmcm9tICduZ3gtZGV2aWNlLWRldGVjdG9yJztcclxuaW1wb3J0ICQgZnJvbSAnanF1ZXJ5JztcclxuXHJcbmltcG9ydCB7XHJcbiAgU2RBcGlTZXJ2aWNlXHJcbn0gZnJvbSAnQHNkLWFuZ3VsYXIvY29yZS9hcGknO1xyXG5cclxuaW1wb3J0IHtcclxuICBTZE5vdGlmeVNlcnZpY2VcclxufSBmcm9tICdAc2QtYW5ndWxhci9jb3JlL25vdGlmeSc7XHJcblxyXG5pbXBvcnQge1xyXG4gIFNkTG9hZGluZ1NlcnZpY2VcclxufSBmcm9tICdAc2QtYW5ndWxhci9jb3JlL2xvYWRpbmcnO1xyXG5cclxuaW1wb3J0IHtcclxuICBTZFRyYW5zbGF0ZVNlcnZpY2VcclxufSBmcm9tICdAc2QtYW5ndWxhci9jb3JlL3RyYW5zbGF0ZSc7XHJcblxyXG5pbXBvcnQgeyBTZEdyaWRPcHRpb24sIGRlZmF1bHRHcmlkT3B0aW9uLCBHcmlkSXRlbSwgU2RHcmlkQ29sdW1uLCBTZEdyaWRFeHRlcm5hbEZpbHRlciB9IGZyb20gJy4vZ3JpZC5tb2RlbCc7XHJcblxyXG5pbXBvcnQgeyBDb25maWdSZXN1bHQgfSBmcm9tICcuL2NvbXBvbmVudHMvZ3JpZC1jb25maWcvZ3JpZC1jb25maWcubW9kZWwnO1xyXG5pbXBvcnQgeyBTZEdyaWRDb25maWcgfSBmcm9tICcuL2NvbXBvbmVudHMvZ3JpZC1jb25maWcvZ3JpZC1jb25maWcuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRWRpdG9ySGFuZGxlclBpcGUgfSBmcm9tICcuL3BpcGVzL2VkaXRvci1oYW5kbGVyLnBpcGUnO1xyXG5pbXBvcnQgeyBTZEdyaWRQb3B1cEVkaXRvciB9IGZyb20gJy4vY29tcG9uZW50cy9ncmlkLXBvcHVwLWVkaXRvci9ncmlkLXBvcHVwLWVkaXRvci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTZEdyaWRQb3B1cEZpbHRlciB9IGZyb20gJy4vY29tcG9uZW50cy9ncmlkLXBvcHVwLWZpbHRlci9ncmlkLXBvcHVwLWZpbHRlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBtZXJnZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFNkR3JpZFBvcHVwRXhwb3J0RXhjZWwgfSBmcm9tICcuL2NvbXBvbmVudHMvZ3JpZC1wb3B1cC1leHBvcnQtZXhjZWwvZ3JpZC1wb3B1cC1leHBvcnQtZXhjZWwuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUXVpY2tGaWx0ZXIsIEZpbHRlckNvbmZpZ3VyYXRpb24gfSBmcm9tICcuL2NvbXBvbmVudHMvZ3JpZC1wb3B1cC1maWx0ZXIvZ3JpZC1wb3B1cC1maWx0ZXIubW9kZWwnO1xyXG5pbXBvcnQgeyBNYXRTZWxlY3QgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zZWxlY3QnO1xyXG5pbXBvcnQgeyBTZEdyaWRGaWx0ZXJJbmZvIH0gZnJvbSAnLi9tb2RlbHMvZmlsdGVyLWluZm8ubW9kZWwnO1xyXG5cclxuaW1wb3J0IHsgSUdyaWRDb25maWd1cmF0aW9uLCBHUklEX0NPTkZJRyB9IGZyb20gJy4vbW9kZWxzL2dyaWQtY29uZmlndXJhdGlvbi5tb2RlbCc7XHJcbmltcG9ydCB7IE1hdFBhZ2luYXRvciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvcic7XHJcbmltcG9ydCB7IFNkQ2VsbERlZkRpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9jZWxsLWRlZi5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBTZENlbGxGb290ZXJEZXZEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvY2VsbC1mb290ZXItZGVmLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IHN0YXJ0V2l0aCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgU2RDZWxsRWRpdG9yRGVmRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL2NlbGwtZWRpdG9yLWRlZi5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBJSGFuZGxlclNlcnZlciwgSUhhbmRsZXJMb2NhbCB9IGZyb20gJy4vbW9kZWxzL2hhbmRsZXInO1xyXG5pbXBvcnQgeyBIYW5kbGVyTG9jYWwgfSBmcm9tICcuL21vZGVscy9oYW5kbGVyLWxvY2FsJztcclxuaW1wb3J0IHsgSGFuZGxlckRvdG5ldCB9IGZyb20gJy4vbW9kZWxzL2hhbmRsZXItZG90bmV0JztcclxuaW1wb3J0IHsgU2RHcmlkSW1wb3J0RXhjZWwgfSBmcm9tICcuL2NvbXBvbmVudHMvZ3JpZC1pbXBvcnQtZXhjZWwvZ3JpZC1pbXBvcnQtZXhjZWwuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU2RFeHBvcnRTZXJ2aWNlIH0gZnJvbSAnQHNkLWFuZ3VsYXIvY29yZS9leHBvcnQnO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc2QtZ3JpZCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2dyaWQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2dyaWQuY29tcG9uZW50LnNjc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2RHcmlkIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcclxuICBwcml2YXRlIGhhbmRsZXI6IElIYW5kbGVyU2VydmVyIHwgSUhhbmRsZXJMb2NhbDtcclxuICBpc01vYmlsZU9yVGFibGV0ID0gZmFsc2U7XHJcbiAgZGlzcGxheUtleSA9ICdTRENVU1RPTSc7XHJcbiAgZ3JpZE9wdGlvbjogU2RHcmlkT3B0aW9uO1xyXG4gIG9yZGVyQnk6IHN0cmluZztcclxuICBvcmRlckRpcmVjdGlvbjogJ0FTQycgfCAnREVTQyc7XHJcbiAgbG9jYWxJdGVtczogR3JpZEl0ZW1bXSA9IFtdO1xyXG4gIGl0ZW1zOiBHcmlkSXRlbVtdID0gW107XHJcbiAgdG90YWw6IG51bWJlcjtcclxuICBmaWx0ZXI6IHtcclxuICAgIFtrZXk6IHN0cmluZ106IGFueVxyXG4gIH0gPSB7fTtcclxuICBleHRlcm5hbEZpbHRlcjoge1xyXG4gICAgW2tleTogc3RyaW5nXTogYW55XHJcbiAgfSA9IHt9O1xyXG4gIGhpZGRlblBhZ2luYXRlID0gZmFsc2U7XHJcbiAgaW5saW5lRXh0ZXJuYWw6IHtcclxuICAgIFtrZXk6IHN0cmluZ106IGJvb2xlYW47XHJcbiAgfSA9IHt9O1xyXG4gIGlubGluZUNvbHVtbjoge1xyXG4gICAgW2tleTogc3RyaW5nXTogYm9vbGVhbjtcclxuICB9ID0ge307XHJcbiAgcXVpY2tGaWx0ZXJzOiBRdWlja0ZpbHRlcltdID0gW107XHJcbiAgc2VsZWN0ZWRRdWlja0ZpbHRlcjogc3RyaW5nO1xyXG4gIC8vIFBhZ2luYXRlXHJcbiAgcGFnZXMgPSBbMV07XHJcbiAgcGFnZUNvdW50ID0gNTtcclxuICB0b3RhbFBhZ2UgPSAxO1xyXG5cclxuICAvLyBMb2FkaW5nXHJcbiAgaXNMb2FkaW5nID0gZmFsc2U7XHJcblxyXG4gIHZpZXdJdGVtczogR3JpZEl0ZW1bXSA9IFtdO1xyXG4gIHN1bWFyaXplOiBzdHJpbmc7XHJcblxyXG4gIGZpeGVkQ29sdW1uczogU2RHcmlkQ29sdW1uW10gPSBbXTtcclxuICBub3JtYWxDb2x1bW5zOiBTZEdyaWRDb2x1bW5bXSA9IFtdO1xyXG4gIGNvbHVtbnM6IFNkR3JpZENvbHVtbltdID0gW107XHJcblxyXG4gIGlzQ2hlY2tlZEFsbCA9IGZhbHNlO1xyXG4gIHNlbGVjdGVkSXRlbXM6IGFueVtdID0gW107XHJcblxyXG4gIEBWaWV3Q2hpbGRyZW4oJ2ZpeGVkSGVhZGVyJykgcHJpdmF0ZSBmaXhlZEhlYWRlcnM6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPjtcclxuICBAVmlld0NoaWxkcmVuKCdmaXhlZEJvZHknKSBwcml2YXRlIGZpeGVkQm9kaWVzOiBRdWVyeUxpc3Q8RWxlbWVudFJlZj47XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2ZpeGVkR3JpZENvbnRhaW5lcicpIGZpeGVkR3JpZENvbnRhaW5lcjogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdncmlkRml4ZWRCb2R5JykgZ3JpZEZpeGVkQm9keTogRWxlbWVudFJlZjtcclxuXHJcbiAgQFZpZXdDaGlsZCgnZ3JpZENvbnRhaW5lcicpIGdyaWRDb250YWluZXI6IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZCgnZ3JpZEhlYWRlcicpIGdyaWRIZWFkZXI6IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZCgnZ3JpZEJvZHknKSBncmlkQm9keTogRWxlbWVudFJlZjtcclxuXHJcbiAgQFZpZXdDaGlsZCgnc2RHcmlkQ29uZmlnJywgeyBzdGF0aWM6IHRydWUgfSkgc2RHcmlkQ29uZmlnOiBTZEdyaWRDb25maWc7XHJcbiAgQFZpZXdDaGlsZCgnc2RHcmlkUG9wdXBFZGl0b3InKSBzZEdyaWRQb3B1cEVkaXRvcjogU2RHcmlkUG9wdXBFZGl0b3I7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ3NkR3JpZFBvcHVwRmlsdGVyJykgc2RHcmlkUG9wdXBGaWx0ZXI6IFNkR3JpZFBvcHVwRmlsdGVyO1xyXG4gIEBWaWV3Q2hpbGQoJ21hdFNlbGVjdCcpIG1hdFNlbGVjdDogTWF0U2VsZWN0O1xyXG5cclxuICBAVmlld0NoaWxkKCdzZEdyaWRQb3B1cEV4cG9ydEV4Y2VsJykgc2RHcmlkUG9wdXBFeHBvcnRFeGNlbDogU2RHcmlkUG9wdXBFeHBvcnRFeGNlbDtcclxuICBAVmlld0NoaWxkKCdzZEdyaWRJbXBvcnRFeGNlbCcpIHNkR3JpZEltcG9ydEV4Y2VsOiBTZEdyaWRJbXBvcnRFeGNlbDtcclxuXHJcbiAgQENvbnRlbnRDaGlsZHJlbihTZENlbGxEZWZEaXJlY3RpdmUpIGNlbGxEZWZzID0gbmV3IFF1ZXJ5TGlzdDxTZENlbGxEZWZEaXJlY3RpdmU+KCk7XHJcbiAgY2VsbERlZjoge1xyXG4gICAgW2NvbHVtbjogc3RyaW5nXTogU2RDZWxsRGVmRGlyZWN0aXZlXHJcbiAgfSA9IHt9O1xyXG5cclxuICBAQ29udGVudENoaWxkcmVuKFNkQ2VsbEVkaXRvckRlZkRpcmVjdGl2ZSkgY2VsbEVkaXRvckRlZnMgPSBuZXcgUXVlcnlMaXN0PFNkQ2VsbEVkaXRvckRlZkRpcmVjdGl2ZT4oKTtcclxuICBjZWxsRWRpdG9yRGVmOiB7XHJcbiAgICBbY29sdW1uOiBzdHJpbmddOiBTZENlbGxFZGl0b3JEZWZEaXJlY3RpdmVcclxuICB9ID0ge307XHJcblxyXG4gIEBDb250ZW50Q2hpbGRyZW4oU2RDZWxsRm9vdGVyRGV2RGlyZWN0aXZlKSBjZWxsRm9vdGVyRGVmcyA9IG5ldyBRdWVyeUxpc3Q8U2RDZWxsRm9vdGVyRGV2RGlyZWN0aXZlPigpO1xyXG4gIGNlbGxGb290ZXJEZWY6IHtcclxuICAgIFtjb2x1bW46IHN0cmluZ106IFNkQ2VsbEZvb3RlckRldkRpcmVjdGl2ZVtdO1xyXG4gIH0gPSB7fTtcclxuICAjbnVtYmVyT2ZGb290ZXJSb3dzID0gMDtcclxuICBmb290ZXJSb3dzOiBudW1iZXJbXSA9IFtdO1xyXG5cclxuICAjcGFnaW5hdG9yOiBNYXRQYWdpbmF0b3I7XHJcbiAgQFZpZXdDaGlsZChNYXRQYWdpbmF0b3IpIHNldCBwYWdpbmF0b3IocGFnaW5hdG9yOiBNYXRQYWdpbmF0b3IpIHtcclxuICAgIGlmIChwYWdpbmF0b3IgJiYgdGhpcy4jcGFnaW5hdG9yICE9PSBwYWdpbmF0b3IpIHtcclxuICAgICAgdGhpcy4jcGFnaW5hdG9yID0gcGFnaW5hdG9yO1xyXG4gICAgICB0aGlzLiNzdWJzY3JpcHRpb24uYWRkKHBhZ2luYXRvci5wYWdlLnN1YnNjcmliZSh0aGlzLnNlbGVjdFBhZ2UpKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBJbnB1dCgpIHNldCBvcHRpb24odmFsdWU6IFNkR3JpZE9wdGlvbikge1xyXG4gICAgdGhpcy5zZXRPcHRpb24odmFsdWUpO1xyXG4gIH1cclxuICBzZWxlY3RlZEl0ZW06IGFueSA9IG51bGw7XHJcbiAgI3N1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcclxuICByb3dIYW5kbGVyID0ge1xyXG4gICAgY2xpY2s6IChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW0gPSBpdGVtO1xyXG4gICAgICBpZiAodGhpcy5ncmlkT3B0aW9uLm9uQ2xpY2tSb3cpIHtcclxuICAgICAgICB0aGlzLmdyaWRPcHRpb24ub25DbGlja1JvdyhpdGVtKTtcclxuICAgICAgfVxyXG4gICAgfSxcclxuICAgIGRibENsaWNrOiAoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtID0gaXRlbTtcclxuICAgICAgaWYgKHRoaXMuZ3JpZE9wdGlvbi5vbkRibENsaWNrUm93KSB7XHJcbiAgICAgICAgdGhpcy5ncmlkT3B0aW9uLm9uRGJsQ2xpY2tSb3coaXRlbSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9O1xyXG5cclxuICBwcml2YXRlIHNldE9wdGlvbiA9IChvcHRpb246IFNkR3JpZE9wdGlvbikgPT4ge1xyXG4gICAgb3B0aW9uID0gdGhpcy5pbml0Q29uZmlndXJhdGlvbihvcHRpb24pO1xyXG4gICAgb3B0aW9uID0gdGhpcy5pbml0VHJhbnNsYXRlKG9wdGlvbik7XHJcbiAgICBkZWxldGUgdGhpcy5ncmlkT3B0aW9uO1xyXG4gICAgdGhpcy5ncmlkT3B0aW9uID0gb3B0aW9uO1xyXG4gICAgLy8gTG/huqFpIGLhu48gbmjhu69uZyBjb21tYW5kIGLhu4sg4bqpblxyXG4gICAgdGhpcy5ncmlkT3B0aW9uLmNvbW1hbmRzID0gdGhpcy5ncmlkT3B0aW9uLmNvbW1hbmRzLmZpbHRlcihjb21tYW5kID0+IHtcclxuICAgICAgY29uc3QgaGlkZGVuID0gY29tbWFuZC5oaWRkZW47XHJcbiAgICAgIGlmIChoaWRkZW4gIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIGlmICh0eXBlb2YgKGhpZGRlbikgPT09ICdib29sZWFuJykge1xyXG4gICAgICAgICAgcmV0dXJuICFoaWRkZW47XHJcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgKGhpZGRlbikgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgIHJldHVybiAhaGlkZGVuKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHRoaXMuc2RHcmlkQ29uZmlnLnNldE9wdGlvbih7XHJcbiAgICAgIGtleTogb3B0aW9uLmtleSxcclxuICAgICAgcGFnZVNpemU6IHRoaXMuZ3JpZE9wdGlvbi5wYWdpbmF0ZS5wYWdlU2l6ZSxcclxuICAgICAgY29sdW1uczogdGhpcy5ncmlkT3B0aW9uLmNvbHVtbnNcclxuICAgIH0pO1xyXG4gICAgdGhpcy5pbml0RXh0ZXJuYWxGaWx0ZXIoKTtcclxuICAgIHRoaXMucmVzaXplKCk7XHJcbiAgICB0aGlzLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaW5pdENvbmZpZ3VyYXRpb24gPSAob3B0aW9uOiBTZEdyaWRPcHRpb24pID0+IHtcclxuICAgIGNvbnN0IGdyaWRDb25maWd1cmF0aW9uID0gdGhpcy5jb25maWd1cmF0aW9uO1xyXG4gICAgLy8gRmlsdGVyXHJcbiAgICBpZiAoIW9wdGlvbi5maWx0ZXI/LnR5cGUgJiYgZ3JpZENvbmZpZ3VyYXRpb24/LmZpbHRlcj8udHlwZSkge1xyXG4gICAgICBpZiAoIW9wdGlvbi5maWx0ZXIpIHtcclxuICAgICAgICBvcHRpb24uZmlsdGVyID0ge1xyXG4gICAgICAgICAgdHlwZTogZ3JpZENvbmZpZ3VyYXRpb24uZmlsdGVyLnR5cGVcclxuICAgICAgICB9O1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIG9wdGlvbi5maWx0ZXIudHlwZSA9IGdyaWRDb25maWd1cmF0aW9uLmZpbHRlci50eXBlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoIW9wdGlvbi5maWx0ZXI/LmNvbHVtbklubGluZSAmJiBncmlkQ29uZmlndXJhdGlvbj8uZmlsdGVyPy5jb2x1bW5JbmxpbmUpIHtcclxuICAgICAgaWYgKCFvcHRpb24uZmlsdGVyKSB7XHJcbiAgICAgICAgb3B0aW9uLmZpbHRlciA9IHtcclxuICAgICAgICAgIGNvbHVtbklubGluZTogZ3JpZENvbmZpZ3VyYXRpb24uZmlsdGVyLmNvbHVtbklubGluZVxyXG4gICAgICAgIH07XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgb3B0aW9uLmZpbHRlci5jb2x1bW5JbmxpbmUgPSBncmlkQ29uZmlndXJhdGlvbi5maWx0ZXIuY29sdW1uSW5saW5lO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoIW9wdGlvbi5maWx0ZXI/LnF1aWNrRmlsdGVyVmlzaWJpbGl0eSAmJiBncmlkQ29uZmlndXJhdGlvbj8uZmlsdGVyPy5xdWlja0ZpbHRlclZpc2liaWxpdHkpIHtcclxuICAgICAgaWYgKCFvcHRpb24uZmlsdGVyKSB7XHJcbiAgICAgICAgb3B0aW9uLmZpbHRlciA9IHtcclxuICAgICAgICAgIHF1aWNrRmlsdGVyVmlzaWJpbGl0eTogZ3JpZENvbmZpZ3VyYXRpb24uZmlsdGVyLnF1aWNrRmlsdGVyVmlzaWJpbGl0eVxyXG4gICAgICAgIH07XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgb3B0aW9uLmZpbHRlci5xdWlja0ZpbHRlclZpc2liaWxpdHkgPSBncmlkQ29uZmlndXJhdGlvbi5maWx0ZXIucXVpY2tGaWx0ZXJWaXNpYmlsaXR5O1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICAvLyBUcmFuc2xhdGVcclxuICAgIG9wdGlvbi50cmFuc2xhdGUgPSBvcHRpb24udHJhbnNsYXRlID8/IGdyaWRDb25maWd1cmF0aW9uPy50cmFuc2xhdGU7XHJcbiAgICBzd2l0Y2ggKG9wdGlvbi50eXBlKSB7XHJcbiAgICAgIGNhc2UgJ2xvY2FsJzpcclxuICAgICAgICB0aGlzLmhhbmRsZXIgPSB0aGlzLmhhbmRsZXJMb2NhbDtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnZG90bmV0JzpcclxuICAgICAgICB0aGlzLmhhbmRsZXIgPSB0aGlzLmhhbmRsZXJEb3RuZXQ7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2N1c3RvbSc6XHJcbiAgICAgICAgdGhpcy5oYW5kbGVyID0gb3B0aW9uLmhhbmRsZXJDdXN0b20gfHwgZ3JpZENvbmZpZ3VyYXRpb24/LmhhbmRsZXJDdXN0b207XHJcbiAgICAgICAgaWYgKCF0aGlzLmhhbmRsZXIpIHtcclxuICAgICAgICAgIHRoaXMubm90aWZ5U2VydmljZS5ub3RpZnkud2FybmluZyhgSGFuZGxlciBjdXN0b20gd2FzIG5vdCBmb3VuZGApO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIHJldHVybiB7IC4uLmRlZmF1bHRHcmlkT3B0aW9uLCAuLi5vcHRpb24gfTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaW5pdFRyYW5zbGF0ZSA9IChvcHRpb246IFNkR3JpZE9wdGlvbikgPT4ge1xyXG4gICAgY29uc3QgeyB0cmFuc2xhdGUgfSA9IHRoaXMudHJhbnNsYXRlU2VydmljZTtcclxuICAgIG9wdGlvbi5jb21tYW5kcz8uZm9yRWFjaChjb21tYW5kID0+IHtcclxuICAgICAgaWYgKCFvcHRpb24udHJhbnNsYXRlKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0eXBlb2YgKGNvbW1hbmQudGl0bGUpID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgIGNvbW1hbmQudGl0bGUgPSB0cmFuc2xhdGUoY29tbWFuZC50aXRsZSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKCdjaGlsZHJlbicgaW4gY29tbWFuZCkge1xyXG4gICAgICAgIGNvbW1hbmQuY2hpbGRyZW4/LmZvckVhY2goY2hpbGRDb21tYW5kID0+IHtcclxuICAgICAgICAgIGlmICh0eXBlb2YgKGNoaWxkQ29tbWFuZC50aXRsZSkgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgIGNoaWxkQ29tbWFuZC50aXRsZSA9IHRyYW5zbGF0ZShjaGlsZENvbW1hbmQudGl0bGUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIG9wdGlvbi5jb2x1bW5zPy5mb3JFYWNoKGNvbHVtbiA9PiB7XHJcbiAgICAgIGlmIChjb2x1bW4udHJhbnNsYXRlID09PSBmYWxzZSkge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBpZiAob3B0aW9uLnRyYW5zbGF0ZSB8fCBjb2x1bW4udHJhbnNsYXRlKSB7XHJcbiAgICAgICAgY29sdW1uLnRpdGxlID0gdHJhbnNsYXRlKGNvbHVtbi50aXRsZSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGNvbHVtbi50eXBlID09PSAnY2hpbGRyZW4nKSB7XHJcbiAgICAgICAgY29sdW1uPy5jaGlsZHJlbj8uZm9yRWFjaChjaGlsZENvbHVtbiA9PiB7XHJcbiAgICAgICAgICBpZiAoY2hpbGRDb2x1bW4udHJhbnNsYXRlID09PSBmYWxzZSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAob3B0aW9uLnRyYW5zbGF0ZSB8fCBjaGlsZENvbHVtbi50cmFuc2xhdGUpIHtcclxuICAgICAgICAgICAgY2hpbGRDb2x1bW4udGl0bGUgPSB0cmFuc2xhdGUoY2hpbGRDb2x1bW4udGl0bGUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIG9wdGlvbi5maWx0ZXI/LmV4dGVybmFsRmlsdGVycz8uZm9yRWFjaChleHRlcm5hbEZpbHRlciA9PiB7XHJcbiAgICAgIGlmIChvcHRpb24udHJhbnNsYXRlKSB7XHJcbiAgICAgICAgZXh0ZXJuYWxGaWx0ZXIudGl0bGUgPSB0cmFuc2xhdGUoZXh0ZXJuYWxGaWx0ZXIudGl0bGUpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBvcHRpb247XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIEBJbmplY3QoR1JJRF9DT05GSUcpIEBPcHRpb25hbCgpIHB1YmxpYyBjb25maWd1cmF0aW9uOiBJR3JpZENvbmZpZ3VyYXRpb24sXHJcbiAgICBwcml2YXRlIHJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBkZXZpY2VTZXJ2aWNlOiBEZXZpY2VEZXRlY3RvclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGhhbmRsZXJMb2NhbDogSGFuZGxlckxvY2FsLFxyXG4gICAgcHJpdmF0ZSBoYW5kbGVyRG90bmV0OiBIYW5kbGVyRG90bmV0LFxyXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBTZFRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGRhdGVQaXBlOiBEYXRlUGlwZSxcclxuICAgIHByaXZhdGUgbG9hZGluZ1NlcnZpY2U6IFNkTG9hZGluZ1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIGFwaVNlcnZpY2U6IFNkQXBpU2VydmljZSxcclxuICAgIHByaXZhdGUgZXhwb3J0U2VydmljZTogU2RFeHBvcnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBub3RpZnlTZXJ2aWNlOiBTZE5vdGlmeVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGVkaXRvclZpc2libGVQaXBlOiBFZGl0b3JIYW5kbGVyUGlwZSkge1xyXG4gICAgdGhpcy5pc01vYmlsZU9yVGFibGV0ID0gIWRldmljZVNlcnZpY2UuaXNEZXNrdG9wKCk7XHJcbiAgICAvLyB0aGlzLnJlZi5kZXRhY2goKTtcclxuICAgIC8vIHNldEludGVydmFsKCgpID0+IHtcclxuICAgIC8vICAgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgICAvLyB9LCAxMDAwKTtcclxuICAgIC8vIHJlZi5kZXRhY2goKTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIHRoaXMuI3N1YnNjcmlwdGlvbi5hZGQodGhpcy5maXhlZEhlYWRlcnMuY2hhbmdlcy5waXBlKHN0YXJ0V2l0aChbXSkpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGZpeGVkSGVhZGVycyA9IHRoaXMuZml4ZWRIZWFkZXJzLnRvQXJyYXkoKTtcclxuICAgICAgICBpZiAoZml4ZWRIZWFkZXJzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgIGxldCBsZWZ0ID0gJChmaXhlZEhlYWRlcnNbMF0ubmF0aXZlRWxlbWVudCkub3V0ZXJXaWR0aCh0cnVlKTtcclxuICAgICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgZml4ZWRIZWFkZXJzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICQoZml4ZWRIZWFkZXJzW2ldLm5hdGl2ZUVsZW1lbnQpLmNzcyh7IGxlZnQgfSk7XHJcbiAgICAgICAgICAgIGxlZnQgKz0gJChmaXhlZEhlYWRlcnNbaV0ubmF0aXZlRWxlbWVudCkub3V0ZXJXaWR0aCh0cnVlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0sIDEwMCk7XHJcbiAgICB9KSk7XHJcbiAgICB0aGlzLiNzdWJzY3JpcHRpb24uYWRkKG1lcmdlKHRoaXMuZml4ZWRCb2RpZXMuY2hhbmdlcywgdGhpcy5jZWxsRm9vdGVyRGVmcy5jaGFuZ2VzKS5waXBlKHN0YXJ0V2l0aCh7fSkpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGZpeGVkQm9kaWVzID0gdGhpcy5maXhlZEJvZGllcy50b0FycmF5KCk7XHJcbiAgICAgICAgaWYgKGZpeGVkQm9kaWVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgIGNvbnN0IGZpeGVkUGVyUm93ID0gdGhpcy5maXhlZEJvZGllcy5sZW5ndGggLyAodGhpcy52aWV3SXRlbXMubGVuZ3RoICsgdGhpcy4jbnVtYmVyT2ZGb290ZXJSb3dzKTtcclxuICAgICAgICAgIGxldCBsZWZ0ID0gJChmaXhlZEJvZGllc1swXS5uYXRpdmVFbGVtZW50KS5vdXRlcldpZHRoKHRydWUpO1xyXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPCBmaXhlZEJvZGllcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpZiAoaSAlIGZpeGVkUGVyUm93ID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgbGVmdCA9IDA7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgJChmaXhlZEJvZGllc1tpXS5uYXRpdmVFbGVtZW50KS5jc3MoeyBsZWZ0IH0pO1xyXG4gICAgICAgICAgICBsZWZ0ICs9ICQoZml4ZWRCb2RpZXNbaV0ubmF0aXZlRWxlbWVudCkub3V0ZXJXaWR0aCh0cnVlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgZml4ZWRIZWFkZXJzID0gdGhpcy5maXhlZEhlYWRlcnMudG9BcnJheSgpO1xyXG4gICAgICAgIGlmIChmaXhlZEhlYWRlcnMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgbGV0IGxlZnQgPSAkKGZpeGVkSGVhZGVyc1swXS5uYXRpdmVFbGVtZW50KS5vdXRlcldpZHRoKHRydWUpO1xyXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPCBmaXhlZEhlYWRlcnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgJChmaXhlZEhlYWRlcnNbaV0ubmF0aXZlRWxlbWVudCkuY3NzKHsgbGVmdCB9KTtcclxuICAgICAgICAgICAgbGVmdCArPSAkKGZpeGVkSGVhZGVyc1tpXS5uYXRpdmVFbGVtZW50KS5vdXRlcldpZHRoKHRydWUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSwgMTAwKTtcclxuICAgIH0pKTtcclxuICAgIHRoaXMuI3N1YnNjcmlwdGlvbi5hZGQodGhpcy5jZWxsRGVmcy5jaGFuZ2VzLnBpcGUoc3RhcnRXaXRoKFtdKSkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgdGhpcy5jZWxsRGVmID0ge307XHJcbiAgICAgIGZvciAoY29uc3QgY2VsbERlZiBvZiB0aGlzLmNlbGxEZWZzKSB7XHJcbiAgICAgICAgaWYgKGNlbGxEZWYuc2RDZWxsRGVmKSB7XHJcbiAgICAgICAgICB0aGlzLmNlbGxEZWZbY2VsbERlZi5zZENlbGxEZWZdID0gY2VsbERlZjtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pKTtcclxuICAgIHRoaXMuI3N1YnNjcmlwdGlvbi5hZGQodGhpcy5jZWxsRWRpdG9yRGVmcy5jaGFuZ2VzLnBpcGUoc3RhcnRXaXRoKFtdKSkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgdGhpcy5jZWxsRWRpdG9yRGVmID0ge307XHJcbiAgICAgIGZvciAoY29uc3QgY2VsbEVkaXRvckRlZiBvZiB0aGlzLmNlbGxFZGl0b3JEZWZzKSB7XHJcbiAgICAgICAgaWYgKGNlbGxFZGl0b3JEZWYuc2RDZWxsRWRpdG9yRGVmKSB7XHJcbiAgICAgICAgICB0aGlzLmNlbGxFZGl0b3JEZWZbY2VsbEVkaXRvckRlZi5zZENlbGxFZGl0b3JEZWZdID0gY2VsbEVkaXRvckRlZjtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pKTtcclxuICAgIHRoaXMuI3N1YnNjcmlwdGlvbi5hZGQodGhpcy5jZWxsRm9vdGVyRGVmcy5jaGFuZ2VzLnBpcGUoc3RhcnRXaXRoKFtdKSkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgdGhpcy5jZWxsRm9vdGVyRGVmID0ge307XHJcbiAgICAgIHRoaXMuI251bWJlck9mRm9vdGVyUm93cyA9IDA7XHJcbiAgICAgIGZvciAoY29uc3QgY2VsbEZvb3RlckRlZiBvZiB0aGlzLmNlbGxGb290ZXJEZWZzKSB7XHJcbiAgICAgICAgaWYgKGNlbGxGb290ZXJEZWYuc2RDZWxsRm9vdGVyRGVmKSB7XHJcbiAgICAgICAgICBpZiAoIXRoaXMuY2VsbEZvb3RlckRlZltjZWxsRm9vdGVyRGVmLnNkQ2VsbEZvb3RlckRlZl0pIHtcclxuICAgICAgICAgICAgdGhpcy5jZWxsRm9vdGVyRGVmW2NlbGxGb290ZXJEZWYuc2RDZWxsRm9vdGVyRGVmXSA9IFtdO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5jZWxsRm9vdGVyRGVmW2NlbGxGb290ZXJEZWYuc2RDZWxsRm9vdGVyRGVmXS5wdXNoKGNlbGxGb290ZXJEZWYpO1xyXG4gICAgICAgICAgaWYgKHRoaXMuY2VsbEZvb3RlckRlZltjZWxsRm9vdGVyRGVmLnNkQ2VsbEZvb3RlckRlZl0ubGVuZ3RoID4gdGhpcy4jbnVtYmVyT2ZGb290ZXJSb3dzKSB7XHJcbiAgICAgICAgICAgIHRoaXMuI251bWJlck9mRm9vdGVyUm93cyA9IHRoaXMuY2VsbEZvb3RlckRlZltjZWxsRm9vdGVyRGVmLnNkQ2VsbEZvb3RlckRlZl0ubGVuZ3RoO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICB0aGlzLmZvb3RlclJvd3MgPSBBcnJheSh0aGlzLiNudW1iZXJPZkZvb3RlclJvd3MpLmZpbGwoMCkubWFwKCh2LCBpKSA9PiBpKTtcclxuICAgIH0pKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy4jc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICByZWxvYWQgPSBhc3luYyAoZ3JpZEl0ZW1zPzogYW55W10pID0+IHtcclxuICAgIGlmICh0aGlzLmlzTG9hZGluZykge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XHJcbiAgICBjb25zdCBjdXJyZW50UGFnZSA9ICh0aGlzLiNwYWdpbmF0b3I/LnBhZ2VJbmRleCB8fCAwKSArIDE7XHJcbiAgICBjb25zdCBwYWdlU2l6ZSA9IHRoaXMuI3BhZ2luYXRvcj8ucGFnZVNpemUgfHwgNTA7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAodGhpcy5ncmlkT3B0aW9uLnR5cGUgIT09ICdsb2NhbCcpIHtcclxuICAgICAgICBjb25zdCBoYW5kbGVyID0gdGhpcy5oYW5kbGVyIGFzIElIYW5kbGVyU2VydmVyO1xyXG4gICAgICAgIGNvbnN0IGZpbHRlciA9IGhhbmRsZXIubWFwUmVxdWVzdCh0aGlzLmdldEZpbHRlckluZm8oY3VycmVudFBhZ2UsIHBhZ2VTaXplKSk7XHJcbiAgICAgICAgaWYgKHRoaXMuZ3JpZE9wdGlvbi5tZXRob2QgPT09ICdHRVQnKSB7XHJcbiAgICAgICAgICBjb25zdCBxdWVyeVN0cmluZyA9IE9iamVjdC5rZXlzKGZpbHRlcikuZmlsdGVyKGtleSA9PiBmaWx0ZXJba2V5XSAhPT0gbnVsbCAmJiBmaWx0ZXJba2V5XSAhPT0gdW5kZWZpbmVkKVxyXG4gICAgICAgICAgICAubWFwKGtleSA9PiBrZXkgKyAnPScgKyBmaWx0ZXJba2V5XSkuam9pbignJicpO1xyXG4gICAgICAgICAgY29uc3QgdXJsID0gdGhpcy5ncmlkT3B0aW9uLnVybC5pbmNsdWRlcygnPycpID8gYCR7dGhpcy5ncmlkT3B0aW9uLnVybH0mJHtxdWVyeVN0cmluZ31gIDogYCR7dGhpcy5ncmlkT3B0aW9uLnVybH0/JHtxdWVyeVN0cmluZ31gO1xyXG4gICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmFwaVNlcnZpY2UuZ2V0KHVybCk7XHJcbiAgICAgICAgICBjb25zdCB7IGl0ZW1zLCB0b3RhbCB9ID0gaGFuZGxlci5tYXBSZXNwb25zZShyZXNwb25zZSk7XHJcbiAgICAgICAgICB0aGlzLml0ZW1zID0gaXRlbXM7XHJcbiAgICAgICAgICB0aGlzLnRvdGFsID0gdG90YWw7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5hcGlTZXJ2aWNlLnBvc3QodGhpcy5ncmlkT3B0aW9uLnVybCwgZmlsdGVyKTtcclxuICAgICAgICAgIGNvbnN0IHsgaXRlbXMsIHRvdGFsIH0gPSBoYW5kbGVyLm1hcFJlc3BvbnNlKHJlc3BvbnNlKTtcclxuICAgICAgICAgIHRoaXMuaXRlbXMgPSBpdGVtcztcclxuICAgICAgICAgIHRoaXMudG90YWwgPSB0b3RhbDtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29uc3QgaGFuZGxlciA9IHRoaXMuaGFuZGxlciBhcyBJSGFuZGxlckxvY2FsO1xyXG4gICAgICAgIGlmICh0eXBlb2YgKHRoaXMuZ3JpZE9wdGlvbi5pdGVtcykgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGdyaWRJdGVtcykpIHtcclxuICAgICAgICAgICAgdGhpcy5sb2NhbEl0ZW1zID0gZ3JpZEl0ZW1zO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY29uc3QgcmVzdWx0cyA9IHRoaXMuZ3JpZE9wdGlvbi5pdGVtcygpO1xyXG4gICAgICAgICAgICBpZiAocmVzdWx0cyBpbnN0YW5jZW9mIFByb21pc2UpIHtcclxuICAgICAgICAgICAgICB0aGlzLmxvY2FsSXRlbXMgPSBhd2FpdCByZXN1bHRzO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMubG9jYWxJdGVtcyA9IHJlc3VsdHM7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5ncmlkT3B0aW9uLml0ZW1zID0gZ3JpZEl0ZW1zIHx8IHRoaXMuZ3JpZE9wdGlvbi5pdGVtcztcclxuICAgICAgICAgIHRoaXMubG9jYWxJdGVtcyA9IHRoaXMuZ3JpZE9wdGlvbi5pdGVtcztcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBoYW5kbGVyLmZpbHRlcih0aGlzLmxvY2FsSXRlbXMsIHtcclxuICAgICAgICAgIGN1c3RvbUZpbHRlcjogdGhpcy5ncmlkT3B0aW9uLmZpbHRlci5jdXN0b21GaWx0ZXIsXHJcbiAgICAgICAgICByYXdGaWx0ZXI6IHRoaXMuZmlsdGVyLFxyXG4gICAgICAgICAgY29sdW1uczogdGhpcy5ncmlkT3B0aW9uLmNvbHVtbnMsXHJcbiAgICAgICAgICByYXdFeHRlcm5hbEZpbHRlcjogdGhpcy5leHRlcm5hbEZpbHRlcixcclxuICAgICAgICAgIGV4dGVybmFsRmlsdGVyczogdGhpcy5ncmlkT3B0aW9uLmZpbHRlcj8uZXh0ZXJuYWxGaWx0ZXJzLFxyXG4gICAgICAgICAgb3JkZXJCeTogdGhpcy5vcmRlckJ5LFxyXG4gICAgICAgICAgb3JkZXJEaXJlY3Rpb246IHRoaXMub3JkZXJEaXJlY3Rpb24sXHJcbiAgICAgICAgICBwYWdlTnVtYmVyOiBjdXJyZW50UGFnZSxcclxuICAgICAgICAgIHBhZ2VTaXplXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5pdGVtcyA9IHJlc3BvbnNlLml0ZW1zO1xyXG4gICAgICAgIHRoaXMudG90YWwgPSByZXNwb25zZS50b3RhbDtcclxuICAgICAgICBcclxuICAgICAgfVxyXG4gICAgICB0aGlzLml0ZW1zLmZvckVhY2goaXRlbSA9PiBpdGVtLm9yaWdpbkl0ZW0gPSB7IC4uLml0ZW0gfSk7XHJcbiAgICAgIHRoaXMuaXNDaGVja2VkQWxsID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuI3NldFNlbGVjdGVkSXRlbXMoKTtcclxuICAgICAgYXdhaXQgdGhpcy5ncmlkT3B0aW9uPy5vblJlbG9hZENvbXBsZXRlZD8uKHRoaXMuaXRlbXMpO1xyXG4gICAgICB0aGlzLmdlbmVyYXRlVmlld0l0ZW1zKCk7XHJcbiAgICAgIHRoaXMuZ2VuZXJhdGVFZGl0b3JIYW5kbGVycygpO1xyXG4gICAgICAkKHRoaXMuZ3JpZEJvZHkubmF0aXZlRWxlbWVudCkuc2Nyb2xsVG9wKDApO1xyXG4gICAgICBpZiAoY3VycmVudFBhZ2UgPiAxICYmICF0aGlzLnZpZXdJdGVtcz8ubGVuZ3RoKSB7XHJcbiAgICAgICAgdGhpcy4jcGFnaW5hdG9yLmZpcnN0UGFnZSgpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgdGhpcy5ub3RpZnlTZXJ2aWNlLmhhbmRsZS5lcnJvcihlcnJvcik7XHJcbiAgICB9IGZpbmFsbHkge1xyXG4gICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVsb2FkSXRlbShkYXRhOiB7IFtpZDogc3RyaW5nXTogYW55IH0pIHtcclxuICAgIE9iamVjdC5rZXlzKGRhdGEpLmZvckVhY2goaWQgPT4ge1xyXG4gICAgICBjb25zdCBpdGVtID0gdGhpcy5pdGVtcy5maW5kKGUgPT4gISFlLmlkICYmIGUuaWQgPT09IGlkKTtcclxuICAgICAgaWYgKGl0ZW0pIHtcclxuICAgICAgICB0aGlzLmdyaWRPcHRpb24uY29sdW1ucy5mb3JFYWNoKGNvbHVtbiA9PiB7XHJcbiAgICAgICAgICBpZiAoaXRlbVtjb2x1bW4uZmllbGRdICE9PSB1bmRlZmluZWQgJiYgZGF0YVtpZF1bY29sdW1uLmZpZWxkXSAhPT0gdW5kZWZpbmVkICYmIGl0ZW1bY29sdW1uLmZpZWxkXSAhPT0gZGF0YVtpZF1bY29sdW1uLmZpZWxkXSkge1xyXG4gICAgICAgICAgICB0aGlzLmJsaW5rKGl0ZW0sIGNvbHVtbi5maWVsZCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgT2JqZWN0LmFzc2lnbihpdGVtLCBkYXRhW2lkXSk7XHJcbiAgICAgICAgdGhpcy5nZW5lcmF0ZUVkaXRvckhhbmxkZXIoaXRlbSk7XHJcbiAgICAgICAgdGhpcy5zdG9wQmxpbmsoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGJsaW5rKGl0ZW06IEdyaWRJdGVtLCBmaWVsZDogc3RyaW5nKSB7XHJcbiAgICBpdGVtLmJsaW5rZXIgPSBpdGVtLmJsaW5rZXIgfHwge307XHJcbiAgICBpdGVtLmJsaW5rZXJbZmllbGRdID0gdHJ1ZTtcclxuICB9XHJcbiAgcHJpdmF0ZSBzdG9wQmxpbmsoKSB7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy52aWV3SXRlbXMuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICBpdGVtLmJsaW5rZXIgPSB7fTtcclxuICAgICAgfSk7XHJcbiAgICB9LCAxNTAwKTtcclxuICB9XHJcblxyXG4gIGRldGVjdENoYW5nZXMgPSAoKSA9PiB7XHJcbiAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2VuZXJhdGVWaWV3SXRlbXMoKSB7XHJcbiAgICBjb25zdCBjdXJyZW50UGFnZSA9ICh0aGlzLiNwYWdpbmF0b3I/LnBhZ2VJbmRleCB8fCAwKSArIDE7XHJcbiAgICBjb25zdCBwYWdlU2l6ZSA9IHRoaXMuI3BhZ2luYXRvcj8ucGFnZVNpemUgfHwgNTA7XHJcbiAgICBkZWxldGUgdGhpcy52aWV3SXRlbXM7XHJcbiAgICBpZiAodGhpcy5ncmlkT3B0aW9uLnR5cGUgPT09ICdsb2NhbCcpIHtcclxuICAgICAgdGhpcy52aWV3SXRlbXMgPSB0aGlzLml0ZW1zLmZpbHRlcigoaXRlbSwgaW5kZXgpID0+IHtcclxuICAgICAgICByZXR1cm4gaW5kZXggPj0gKGN1cnJlbnRQYWdlIC0gMSkgKiBwYWdlU2l6ZVxyXG4gICAgICAgICAgJiYgaW5kZXggPCBjdXJyZW50UGFnZSAqIHBhZ2VTaXplO1xyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMudmlld0l0ZW1zID0gdGhpcy5pdGVtcztcclxuICAgIH1cclxuICAgIHRoaXMudmlld0l0ZW1zLmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgIGl0ZW0uYmxpbmtlciA9IGl0ZW0uYmxpbmtlciB8fCB7fTtcclxuICAgICAgaXRlbS5zdWJJbmZvcm1hdGlvbiA9IGl0ZW0uc3ViSW5mb3JtYXRpb24gfHwge307XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldCBlZGl0ZWRJdGVtcygpIHtcclxuICAgIHJldHVybiB0aGlzLml0ZW1zLmZpbHRlcihpdGVtID0+IHtcclxuICAgICAgaWYgKCFpdGVtLm9yaWdpbkl0ZW0pIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoT2JqZWN0LmtleXMoaXRlbS5vcmlnaW5JdGVtKS5zb21lKGtleSA9PiBpdGVtLm9yaWdpbkl0ZW1ba2V5XSAhPT0gaXRlbVtrZXldKSkge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH0pLm1hcChpdGVtID0+IHtcclxuICAgICAgY29uc3QgeyB0ZW1wb3JhcnksXHJcbiAgICAgICAgb3JpZ2luSXRlbSxcclxuICAgICAgICBlZGl0b3JIYW5kbGVyLFxyXG4gICAgICAgIGVkaXRpbmdTdGF0dXMsXHJcbiAgICAgICAgaXNDaGVja2VkLFxyXG4gICAgICAgIHN1YkluZm9ybWF0aW9uLFxyXG4gICAgICAgIGJsaW5rZXIsXHJcbiAgICAgICAgLi4ucmVzdWx0IH0gPSBpdGVtO1xyXG4gICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBzZWxlY3RQYWdlID0gKCkgPT4ge1xyXG4gICAgaWYgKHRoaXMuZ3JpZE9wdGlvbi50eXBlID09PSAnbG9jYWwnKSB7XHJcbiAgICAgIHRoaXMucmVsb2FkKHRoaXMubG9jYWxJdGVtcyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnJlbG9hZCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdXBkYXRlRmlsdGVyID0gKHBhcmFtPzogeyBmaWx0ZXI6IGFueSwgZXh0ZXJuYWxGaWx0ZXI6IGFueSB9KSA9PiB7XHJcbiAgICB0aGlzLmZpbHRlciA9IHBhcmFtPy5maWx0ZXIgfHwgdGhpcy5maWx0ZXI7XHJcbiAgICB0aGlzLmV4dGVybmFsRmlsdGVyID0gcGFyYW0/LmV4dGVybmFsRmlsdGVyIHx8IHRoaXMuZXh0ZXJuYWxGaWx0ZXI7XHJcbiAgICB0aGlzLiNwYWdpbmF0b3IucGFnZUluZGV4ID0gMDtcclxuICAgIGlmICh0aGlzLmdyaWRPcHRpb24udHlwZSA9PT0gJ2xvY2FsJykge1xyXG4gICAgICB0aGlzLnJlbG9hZCh0aGlzLmxvY2FsSXRlbXMpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5yZWxvYWQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldEl0ZW1zKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuaXRlbXM7XHJcbiAgfVxyXG5cclxuICAvLyNyZWdpb24gQ2hlY2thYmxlXHJcblxyXG4gICNzZXRTZWxlY3RlZEl0ZW1zID0gKCkgPT4ge1xyXG4gICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gdGhpcy5pdGVtcy5maWx0ZXIoaXRlbSA9PiBpdGVtLmlzQ2hlY2tlZClcclxuICAgICAgLm1hcChpdGVtID0+IHtcclxuICAgICAgICBjb25zdCB7IHRlbXBvcmFyeSxcclxuICAgICAgICAgIG9yaWdpbkl0ZW0sXHJcbiAgICAgICAgICBlZGl0b3JIYW5kbGVyLFxyXG4gICAgICAgICAgZWRpdGluZ1N0YXR1cyxcclxuICAgICAgICAgIGlzQ2hlY2tlZCxcclxuICAgICAgICAgIHN1YkluZm9ybWF0aW9uLFxyXG4gICAgICAgICAgYmxpbmtlcixcclxuICAgICAgICAgIC4uLnJlc3VsdCB9ID0gaXRlbTtcclxuICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uQ2hlY2sgPSAoaXRlbTogR3JpZEl0ZW0sIGlzQ2hlY2tib3g/OiBib29sZWFuKSA9PiB7XHJcbiAgICBpZiAoIXRoaXMuZ3JpZE9wdGlvbi5jaGVja2FibGUpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKCFpc0NoZWNrYm94KSB7XHJcbiAgICAgIGl0ZW0uaXNDaGVja2VkID0gIWl0ZW0uaXNDaGVja2VkO1xyXG4gICAgfVxyXG4gICAgdGhpcy5pc0NoZWNrZWRBbGwgPSB0aGlzLml0ZW1zLmxlbmd0aCA9PT0gdGhpcy5pdGVtcy5maWx0ZXIoZSA9PiBlLmlzQ2hlY2tlZCkubGVuZ3RoO1xyXG4gICAgdGhpcy5ncmlkT3B0aW9uLm9uQ2hlY2s/Lih0aGlzLml0ZW1zLmZpbHRlcihlID0+IGUuaXNDaGVja2VkKSwgaXRlbSk7XHJcbiAgICB0aGlzLiNzZXRTZWxlY3RlZEl0ZW1zKCk7XHJcbiAgfVxyXG5cclxuICBjaGVja0FsbChpc0NoZWNrZWRBbGw6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuaXNDaGVja2VkQWxsID0gaXNDaGVja2VkQWxsO1xyXG4gICAgdGhpcy5pdGVtcy5mb3JFYWNoKGl0ZW0gPT4gaXRlbS5pc0NoZWNrZWQgPSB0aGlzLmlzQ2hlY2tlZEFsbCk7XHJcbiAgICBpZiAodGhpcy5ncmlkT3B0aW9uLm9uQ2hlY2spIHtcclxuICAgICAgdGhpcy5ncmlkT3B0aW9uLm9uQ2hlY2sodGhpcy5pdGVtcy5maWx0ZXIoaXRlbSA9PiBpdGVtLmlzQ2hlY2tlZCkpO1xyXG4gICAgfVxyXG4gICAgdGhpcy4jc2V0U2VsZWN0ZWRJdGVtcygpO1xyXG4gIH1cclxuXHJcbiAgLy8jZW5kcmVnaW9uXHJcblxyXG4gIC8vI3JlZ2lvbiBTb3J0XHJcbiAgc29ydCA9IChjb2x1bW46IFNkR3JpZENvbHVtbikgPT4ge1xyXG4gICAgaWYgKGNvbHVtbi50eXBlID09PSAnY2hpbGRyZW4nIHx8IGNvbHVtbi50eXBlID09PSAnaW1hZ2UnKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IHNvcnRhYmxlID0gdGhpcy5ncmlkT3B0aW9uLnNvcnRhYmxlID8/IHRydWU7XHJcbiAgICBjb25zdCBjb2x1bW5Tb3J0YWJsZSA9IGNvbHVtbi5zb3J0YWJsZSA/PyB0cnVlO1xyXG4gICAgaWYgKCFzb3J0YWJsZSB8fCAhY29sdW1uU29ydGFibGUpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMub3JkZXJCeSA9PT0gY29sdW1uLmZpZWxkKSB7XHJcbiAgICAgIHRoaXMub3JkZXJEaXJlY3Rpb24gPSB0aGlzLm9yZGVyRGlyZWN0aW9uID09PSAnQVNDJyA/ICdERVNDJyA6ICdBU0MnO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5vcmRlckJ5ID0gY29sdW1uLmZpZWxkO1xyXG4gICAgICB0aGlzLm9yZGVyRGlyZWN0aW9uID0gJ0FTQyc7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5ncmlkT3B0aW9uLnR5cGUgPT09ICdsb2NhbCcpIHtcclxuICAgICAgdGhpcy5yZWxvYWQodGhpcy5sb2NhbEl0ZW1zKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMucmVsb2FkKCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxuICAvLyAjcmVnaW9uIFJlc2l6ZSBHcmlkXHJcbiAgcHJpdmF0ZSByZXNpemUoKSB7XHJcbiAgICB0aGlzLmRldGVjdENoYW5nZXMoKTtcclxuICAgIGlmICh0aGlzLmdyaWRPcHRpb24uaGVpZ2h0KSB7XHJcbiAgICAgIHRoaXMuZ3JpZEJvZHkubmF0aXZlRWxlbWVudC5zdHlsZS5oZWlnaHQgPSB0aGlzLmdyaWRPcHRpb24uaGVpZ2h0O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5ncmlkQm9keS5uYXRpdmVFbGVtZW50LnN0eWxlLmhlaWdodCA9IGAke3dpbmRvdy5pbm5lckhlaWdodCAtIDMwMH1weGA7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIC8vIEzhuqV5IG9mZnNldCB0b3AgxJHhu4MgxJFp4buBdSBjaOG7iW5oIGvDrWNoIHRoxrDhu5tjIEdyaWQgduG7q2EgduG7m2kgbcOgbiBow6xuaFxyXG4gICAgICAgIGNvbnN0IHRvcCA9IHRoaXMuZ3JpZEJvZHkubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3A7XHJcbiAgICAgICAgLy8gY29uc3QgdG9wID0gJCh0aGlzLmdyaWRCb2R5Lm5hdGl2ZUVsZW1lbnQpLm9mZnNldCgpLnRvcDtcclxuICAgICAgICBjb25zdCBib3R0b20gPSB0aGlzLmdyaWRPcHRpb24uaGlkZUZvb3RlciA/IDAgOiAodGhpcy5pc01vYmlsZU9yVGFibGV0ID8gNDUgOiA1NSk7XHJcbiAgICAgICAgY29uc3QgaGVpZ2h0ID0gd2luZG93LmlubmVySGVpZ2h0IC0gdG9wIC0gYm90dG9tO1xyXG4gICAgICAgIHRoaXMuZ3JpZEJvZHkubmF0aXZlRWxlbWVudC5zdHlsZS5oZWlnaHQgPSBgJHtoZWlnaHR9cHhgO1xyXG4gICAgICB9LCAwKTtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgLy8gTOG6pXkgb2Zmc2V0IHRvcCDEkeG7gyDEkWnhu4F1IGNo4buJbmgga8OtY2ggdGjGsOG7m2MgR3JpZCB24burYSB24bubaSBtw6BuIGjDrG5oXHJcbiAgICAgICAgY29uc3QgdG9wID0gdGhpcy5ncmlkQm9keS5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcDtcclxuICAgICAgICAvLyBjb25zdCB0b3AgPSAkKHRoaXMuZ3JpZEJvZHkubmF0aXZlRWxlbWVudCkub2Zmc2V0KCkudG9wO1xyXG4gICAgICAgIGNvbnN0IGJvdHRvbSA9IHRoaXMuZ3JpZE9wdGlvbi5oaWRlRm9vdGVyID8gMCA6ICh0aGlzLmlzTW9iaWxlT3JUYWJsZXQgPyA0NSA6IDU1KTtcclxuICAgICAgICBjb25zdCBoZWlnaHQgPSB3aW5kb3cuaW5uZXJIZWlnaHQgLSB0b3AgLSBib3R0b207XHJcbiAgICAgICAgdGhpcy5ncmlkQm9keS5uYXRpdmVFbGVtZW50LnN0eWxlLmhlaWdodCA9IGAke2hlaWdodH1weGA7XHJcbiAgICAgIH0sIDIwMCk7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIC8vIEzhuqV5IG9mZnNldCB0b3AgxJHhu4MgxJFp4buBdSBjaOG7iW5oIGvDrWNoIHRoxrDhu5tjIEdyaWQgduG7q2EgduG7m2kgbcOgbiBow6xuaFxyXG4gICAgICAgIGNvbnN0IHRvcCA9IHRoaXMuZ3JpZEJvZHkubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3A7XHJcbiAgICAgICAgLy8gY29uc3QgdG9wID0gJCh0aGlzLmdyaWRCb2R5Lm5hdGl2ZUVsZW1lbnQpLm9mZnNldCgpLnRvcDtcclxuICAgICAgICBjb25zdCBib3R0b20gPSB0aGlzLmdyaWRPcHRpb24uaGlkZUZvb3RlciA/IDAgOiAodGhpcy5pc01vYmlsZU9yVGFibGV0ID8gNDUgOiA1NSk7XHJcbiAgICAgICAgY29uc3QgaGVpZ2h0ID0gd2luZG93LmlubmVySGVpZ2h0IC0gdG9wIC0gYm90dG9tO1xyXG4gICAgICAgIHRoaXMuZ3JpZEJvZHkubmF0aXZlRWxlbWVudC5zdHlsZS5oZWlnaHQgPSBgJHtoZWlnaHR9cHhgO1xyXG4gICAgICB9LCA1MDApO1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAvLyBM4bqleSBvZmZzZXQgdG9wIMSR4buDIMSRaeG7gXUgY2jhu4luaCBrw61jaCB0aMaw4bubYyBHcmlkIHbhu6thIHbhu5tpIG3DoG4gaMOsbmhcclxuICAgICAgICBjb25zdCB0b3AgPSB0aGlzLmdyaWRCb2R5Lm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wO1xyXG4gICAgICAgIC8vIGNvbnN0IHRvcCA9ICQodGhpcy5ncmlkQm9keS5uYXRpdmVFbGVtZW50KS5vZmZzZXQoKS50b3A7XHJcbiAgICAgICAgY29uc3QgYm90dG9tID0gdGhpcy5ncmlkT3B0aW9uLmhpZGVGb290ZXIgPyAwIDogKHRoaXMuaXNNb2JpbGVPclRhYmxldCA/IDQ1IDogNTUpO1xyXG4gICAgICAgIGNvbnN0IGhlaWdodCA9IHdpbmRvdy5pbm5lckhlaWdodCAtIHRvcCAtIGJvdHRvbTtcclxuICAgICAgICB0aGlzLmdyaWRCb2R5Lm5hdGl2ZUVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gYCR7aGVpZ2h0fXB4YDtcclxuICAgICAgfSwgMTAwMCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRIZWlnaHQoaGVpZ2h0Pzogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmdyaWRPcHRpb24uaGVpZ2h0ID0gaGVpZ2h0O1xyXG4gICAgdGhpcy5yZXNpemUoKTtcclxuICB9XHJcblxyXG4gIC8vICNlbmRyZWdpb25cclxuXHJcbiAgLy8jcmVnaW9uIEltcG9ydCwgRXhwb3J0LCBDb25maWdcclxuXHJcbiAgbG9hZENvbmZpZyhjb25maWdSZXN1bHQ6IENvbmZpZ1Jlc3VsdCkge1xyXG4gICAgdGhpcy5ncmlkT3B0aW9uLnBhZ2luYXRlLnBhZ2VTaXplID0gY29uZmlnUmVzdWx0LnBhZ2VTaXplO1xyXG4gICAgdGhpcy5ncmlkT3B0aW9uLmNvbHVtbnMgPSBjb25maWdSZXN1bHQuY29sdW1ucztcclxuICAgIHRoaXMuZml4ZWRDb2x1bW5zID0gY29uZmlnUmVzdWx0LmZpeGVkQ29sdW1ucztcclxuICAgIHRoaXMubm9ybWFsQ29sdW1ucyA9IGNvbmZpZ1Jlc3VsdC5ub3JtYWxDb2x1bW5zO1xyXG4gICAgdGhpcy5jb2x1bW5zID0gWy4uLnRoaXMuZml4ZWRDb2x1bW5zLCAuLi50aGlzLm5vcm1hbENvbHVtbnNdO1xyXG4gICAgdGhpcy5pbml0RmlsdGVyKCk7XHJcbiAgICB0aGlzLmluaXREaWN0aW9uYXJ5Q29sdW1uVmFsdWVzKCk7XHJcbiAgICB0aGlzLnJlbG9hZCgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpbml0RmlsdGVyKCkge1xyXG4gICAgdGhpcy5ncmlkT3B0aW9uLmNvbHVtbnMuZm9yRWFjaChjb2x1bW4gPT4ge1xyXG4gICAgICAvLyBHw6FuIGdpw6EgdHLhu4sgZmlsdGVyIG3hurdjIMSR4buLbmggY2hvIHThu6tuZyBj4buZdFxyXG4gICAgICB0aGlzLmZpbHRlcltjb2x1bW4uZmllbGRdID0gdGhpcy5maWx0ZXJbY29sdW1uLmZpZWxkXSA/PyAnJztcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpbml0RGljdGlvbmFyeUNvbHVtblZhbHVlcygpIHtcclxuICAgIHRoaXMuZ3JpZE9wdGlvbi5jb2x1bW5zLmZvckVhY2goY29sdW1uID0+IHtcclxuICAgICAgaWYgKGNvbHVtbi50eXBlID09PSAndmFsdWVzJykge1xyXG4gICAgICAgIGNvbHVtbi5kaWN0aW9uYXJ5ID0ge307XHJcbiAgICAgICAgaWYgKGNvbHVtbi52YWx1ZXMpIHtcclxuICAgICAgICAgIGNvbHVtbi52YWx1ZXMuZm9yRWFjaChlID0+IHtcclxuICAgICAgICAgICAgY29sdW1uLmRpY3Rpb25hcnlbZS52YWx1ZS50b1N0cmluZygpXSA9IHtcclxuICAgICAgICAgICAgICB0ZXh0OiBlLnRleHQsXHJcbiAgICAgICAgICAgICAgaWNvbjogZS5pY29uLFxyXG4gICAgICAgICAgICAgIGNvbG9yOiBlLmNvbG9yLFxyXG4gICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogZS5iYWNrZ3JvdW5kQ29sb3JcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBpZiAoY29sdW1uLnR5cGUgPT09ICdjaGlsZHJlbicpIHtcclxuICAgICAgICBjb2x1bW4uY2hpbGRyZW4uZm9yRWFjaChjaGlsZENvbHVtbiA9PiB7XHJcbiAgICAgICAgICBpZiAoY2hpbGRDb2x1bW4udHlwZSA9PT0gJ3ZhbHVlcycpIHtcclxuICAgICAgICAgICAgY2hpbGRDb2x1bW4uZGljdGlvbmFyeSA9IHt9O1xyXG4gICAgICAgICAgICBpZiAoY2hpbGRDb2x1bW4udmFsdWVzKSB7XHJcbiAgICAgICAgICAgICAgY2hpbGRDb2x1bW4udmFsdWVzLmZvckVhY2goZSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjaGlsZENvbHVtbi5kaWN0aW9uYXJ5W2UudmFsdWUudG9TdHJpbmcoKV0gPSB7XHJcbiAgICAgICAgICAgICAgICAgIHRleHQ6IGUudGV4dCxcclxuICAgICAgICAgICAgICAgICAgaWNvbjogZS5pY29uLFxyXG4gICAgICAgICAgICAgICAgICBjb2xvcjogZS5jb2xvcixcclxuICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBlLmJhY2tncm91bmRDb2xvclxyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxuICBwcml2YXRlIGdlbmVyYXRlRWRpdG9ySGFuZGxlcnMoKSB7XHJcbiAgICB0aGlzLnZpZXdJdGVtcy5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICB0aGlzLmdlbmVyYXRlRWRpdG9ySGFubGRlcihpdGVtKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZW5lcmF0ZUVkaXRvckhhbmxkZXIoaXRlbTogR3JpZEl0ZW0pIHtcclxuICAgIC8vIGl0ZW0uZWRpdG9ySGFuZGxlciA9IGl0ZW0uZWRpdG9ySGFuZGxlciB8fCB7fTtcclxuICAgIHRoaXMuZWRpdG9yVmlzaWJsZVBpcGUudHJhbnNmb3JtKG51bGwsIGl0ZW0sIHRoaXMuZ3JpZE9wdGlvbik7XHJcbiAgfVxyXG4gIHRyYWNrQnlJZChpbmRleCwgaXRlbSkge1xyXG4gICAgcmV0dXJuIGl0ZW0uaWQ7XHJcbiAgfVxyXG5cclxuICBnZXQgaXNGaWx0ZXJpbmcoKSB7XHJcbiAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyh0aGlzLmZpbHRlcikuc29tZSh2YWx1ZSA9PiAhIXZhbHVlKTtcclxuICB9XHJcblxyXG4gIG9uRmlsdGVyUG9wdXAoKSB7XHJcbiAgICBjb25zdCBmMSA9IEpTT04uc3RyaW5naWZ5KHRoaXMuZmlsdGVyKTtcclxuICAgIGNvbnN0IGYyID0gSlNPTi5zdHJpbmdpZnkodGhpcy5leHRlcm5hbEZpbHRlcik7XHJcbiAgICBjb25zdCBmaWx0ZXIgPSBKU09OLnBhcnNlKGYxKTtcclxuICAgIGNvbnN0IGV4dGVybmFsRmlsdGVyID0gSlNPTi5wYXJzZShmMik7XHJcbiAgICB0aGlzLnNkR3JpZFBvcHVwRmlsdGVyLm9wZW4odGhpcy5maXhlZENvbHVtbnMsIHRoaXMubm9ybWFsQ29sdW1ucywgZmlsdGVyLCBleHRlcm5hbEZpbHRlciwgdGhpcy5ncmlkT3B0aW9uLmZpbHRlcj8uZXh0ZXJuYWxGaWx0ZXJzKTtcclxuICB9XHJcblxyXG4gIGNsZWFyRmlsdGVyID0gKCkgPT4ge1xyXG4gICAgdGhpcy5maWx0ZXIgPSB7fTtcclxuICAgIHRoaXMuZXh0ZXJuYWxGaWx0ZXIgPSB7fTtcclxuICAgIHRoaXMuaW5pdEZpbHRlcigpO1xyXG4gICAgdGhpcy5pbml0RXh0ZXJuYWxGaWx0ZXIoKTtcclxuICAgIGlmICh0aGlzLnNkR3JpZFBvcHVwRmlsdGVyKSB7XHJcbiAgICAgIHRoaXMuc2RHcmlkUG9wdXBGaWx0ZXIuZmlsdGVyID0gdGhpcy5maWx0ZXI7XHJcbiAgICAgIHRoaXMuc2RHcmlkUG9wdXBGaWx0ZXIuZXh0ZXJuYWxGaWx0ZXIgPSB0aGlzLmV4dGVybmFsRmlsdGVyO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25DbGVhckZpbHRlciA9ICgpID0+IHtcclxuICAgIHRoaXMuY2xlYXJGaWx0ZXIoKTtcclxuICAgIHRoaXMucmVsb2FkKCk7XHJcbiAgfVxyXG5cclxuICBleHBhbmRPckNvbGxhcHNlID0gYXN5bmMgKGdyaWRJdGVtOiBHcmlkSXRlbSkgPT4ge1xyXG4gICAgY29uc3QgeyB0ZW1wb3JhcnksXHJcbiAgICAgIG9yaWdpbkl0ZW0sXHJcbiAgICAgIGVkaXRvckhhbmRsZXIsXHJcbiAgICAgIGVkaXRpbmdTdGF0dXMsXHJcbiAgICAgIGlzQ2hlY2tlZCxcclxuICAgICAgc3ViSW5mb3JtYXRpb24sXHJcbiAgICAgIC4uLml0ZW0gfSA9IGdyaWRJdGVtO1xyXG4gICAgaWYgKCF0aGlzLmdyaWRPcHRpb24uc3ViSW5mb3JtYXRpb24pIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKGdyaWRJdGVtLnN1YkluZm9ybWF0aW9uPy5pc09wZW5lZCkge1xyXG4gICAgICBncmlkSXRlbS5zdWJJbmZvcm1hdGlvbi5pc09wZW5lZCA9IGZhbHNlO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5ncmlkT3B0aW9uLnN1YkluZm9ybWF0aW9uLmxhenlMb2FkaW5nICYmICFncmlkSXRlbS5zdWJJbmZvcm1hdGlvbj8uaXNMb2FkZWQpIHtcclxuICAgICAgZ3JpZEl0ZW0uc3ViSW5mb3JtYXRpb24uaXNMb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgdHJ5IHtcclxuICAgICAgICBncmlkSXRlbS5zdWJJbmZvcm1hdGlvbi5zdWJJdGVtcyA9IGF3YWl0IHRoaXMuZ3JpZE9wdGlvbi5zdWJJbmZvcm1hdGlvbi5vbkxvYWQoaXRlbSk7XHJcbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGdyaWRJdGVtLnN1YkluZm9ybWF0aW9uLnN1Ykl0ZW1zKSkge1xyXG4gICAgICAgICAgdGhpcy5ub3RpZnlTZXJ2aWNlLmFsZXJ0Lndhcm5pbmcoYERhdGEgaXMgbm90IGFuIGFycmF5YCk7XHJcbiAgICAgICAgICBncmlkSXRlbS5zdWJJbmZvcm1hdGlvbi5zdWJJdGVtcyA9IFtdO1xyXG4gICAgICAgIH1cclxuICAgICAgICBncmlkSXRlbS5zdWJJbmZvcm1hdGlvbi5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICBncmlkSXRlbS5zdWJJbmZvcm1hdGlvbi5pc0xvYWRlZCA9IHRydWU7XHJcbiAgICAgICAgZ3JpZEl0ZW0uc3ViSW5mb3JtYXRpb24uaXNPcGVuZWQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfSBjYXRjaCAoZXJyKSB7XHJcbiAgICAgICAgdGhpcy5ub3RpZnlTZXJ2aWNlLmhhbmRsZS5lcnJvcihlcnIpO1xyXG4gICAgICAgIGdyaWRJdGVtLnN1YkluZm9ybWF0aW9uLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5ncmlkT3B0aW9uLnN1YkluZm9ybWF0aW9uLmxhenlMb2FkaW5nID09PSBmYWxzZSAmJiAhZ3JpZEl0ZW0uc3ViSW5mb3JtYXRpb24uaXNMb2FkZWQpIHtcclxuICAgICAgZ3JpZEl0ZW0uc3ViSW5mb3JtYXRpb24uc3ViSXRlbXMgPSBncmlkSXRlbVt0aGlzLmdyaWRPcHRpb24uc3ViSW5mb3JtYXRpb24uZmllbGRdO1xyXG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkoZ3JpZEl0ZW0uc3ViSW5mb3JtYXRpb24uc3ViSXRlbXMpKSB7XHJcbiAgICAgICAgdGhpcy5ub3RpZnlTZXJ2aWNlLmFsZXJ0Lndhcm5pbmcoYERhdGEgaXMgbm90IGFuIGFycmF5YCk7XHJcbiAgICAgICAgZ3JpZEl0ZW0uc3ViSW5mb3JtYXRpb24uc3ViSXRlbXMgPSBbXTtcclxuICAgICAgfVxyXG4gICAgICBncmlkSXRlbS5zdWJJbmZvcm1hdGlvbi5pc0xvYWRlZCA9IHRydWU7XHJcbiAgICAgIGdyaWRJdGVtLnN1YkluZm9ybWF0aW9uLmlzT3BlbmVkID0gdHJ1ZTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgZ3JpZEl0ZW0uc3ViSW5mb3JtYXRpb24uaXNPcGVuZWQgPSB0cnVlO1xyXG4gICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuICAvLyNyZWdpb24gRWRpdGFibGVcclxuICBvbkNyZWF0ZSA9ICgpID0+IHtcclxuICAgIGNvbnN0IHsgdHlwZSwgZWRpdG9yLCBjb2x1bW5zIH0gPSB0aGlzLmdyaWRPcHRpb247XHJcbiAgICBpZiAoIWVkaXRvcj8uYWRkYWJsZSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBpdGVtOiBHcmlkSXRlbSA9IHt9O1xyXG4gICAgLy8gR8OhbiBnacOhIHRy4buLIG3hurdjIMSR4buLbmhcclxuICAgIGNvbHVtbnMuZm9yRWFjaChjb2x1bW4gPT4ge1xyXG4gICAgICBpZiAoY29sdW1uLnR5cGUgPT09ICd2YWx1ZXMnKSB7XHJcbiAgICAgICAgaXRlbVtjb2x1bW4uZmllbGRdID0gJyc7XHJcbiAgICAgIH0gZWxzZSBpZiAoY29sdW1uLnR5cGUgPT09ICdib29sJykge1xyXG4gICAgICAgIGl0ZW1bY29sdW1uLmZpZWxkXSA9IHRydWU7XHJcbiAgICAgIH0gZWxzZSBpZiAoY29sdW1uLnR5cGUgPT09ICdudW1iZXInKSB7XHJcbiAgICAgICAgaXRlbVtjb2x1bW4uZmllbGRdID0gbnVsbDtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICBlZGl0b3Iub25BZGQ/LihpdGVtKTtcclxuICAgIC8vIMSQxrBhIGl0ZW0gbMOqbiBkw7JuZyDEkeG6p3UgdGnDqm4gbuG6v3UgdHlwZSBraMOhYyBwb3B1cFxyXG4gICAgaWYgKGVkaXRvci50eXBlICE9PSAncG9wdXAnKSB7XHJcbiAgICAgIGlmICh0eXBlID09PSAnbG9jYWwnKSB7XHJcbiAgICAgICAgdGhpcy5pdGVtcy5zcGxpY2UoMCwgMCwgaXRlbSk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy52aWV3SXRlbXMuc3BsaWNlKDAsIDAsIGl0ZW0pO1xyXG4gICAgfVxyXG4gICAgdGhpcy5vblVwZGF0ZShpdGVtLCBmYWxzZSk7XHJcbiAgfVxyXG4gIG9uVXBkYXRlID0gKGl0ZW06IEdyaWRJdGVtLCBpc01vZGlmaWVkPzogYm9vbGVhbikgPT4ge1xyXG4gICAgY29uc3QgeyBlZGl0b3IsIGNvbHVtbnMgfSA9IHRoaXMuZ3JpZE9wdGlvbjtcclxuICAgIGl0ZW0uZWRpdGluZ1N0YXR1cyA9IGlzTW9kaWZpZWQgPyAndXBkYXRlJyA6ICdjcmVhdGUnO1xyXG4gICAgaXRlbS50ZW1wb3JhcnkgPSB7IC4uLml0ZW0gfTtcclxuICAgIHRoaXMuZ2VuZXJhdGVFZGl0b3JIYW5sZGVyKGl0ZW0pO1xyXG4gICAgaWYgKGVkaXRvci50eXBlID09PSAncG9wdXAnKSB7XHJcbiAgICAgIHRoaXMuc2RHcmlkUG9wdXBFZGl0b3Iub3BlbihpdGVtLCBjb2x1bW5zLCBpc01vZGlmaWVkKTtcclxuICAgIH1cclxuICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcbiAgb25TYXZlID0gYXN5bmMgKGl0ZW06IEdyaWRJdGVtKSA9PiB7XHJcbiAgICBjb25zdCB7IGVkaXRvciB9ID0gdGhpcy5ncmlkT3B0aW9uO1xyXG4gICAgdHJ5IHtcclxuICAgICAgaXRlbS5lZGl0b3JIYW5kbGVyLnNhdmluZyA9IHRydWU7XHJcbiAgICAgIGlmIChlZGl0b3IudmFsaWRhdGUpIHtcclxuICAgICAgICBjb25zdCByZXN1bHQgPSBlZGl0b3IudmFsaWRhdGUoaXRlbSk7XHJcbiAgICAgICAgaWYgKHJlc3VsdCBpbnN0YW5jZW9mIFByb21pc2UpIHtcclxuICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBhd2FpdCByZXN1bHQ7XHJcbiAgICAgICAgICBpZiAobWVzc2FnZSkge1xyXG4gICAgICAgICAgICB0aHJvdyBtZXNzYWdlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgICAgICAgIHRocm93IHJlc3VsdDtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGVkaXRvci5vblNhdmUpIHtcclxuICAgICAgICBjb25zdCByZXN1bHQgPSBlZGl0b3Iub25TYXZlKGl0ZW0pO1xyXG4gICAgICAgIGlmIChyZXN1bHQgaW5zdGFuY2VvZiBQcm9taXNlKSB7XHJcbiAgICAgICAgICBhd2FpdCByZXN1bHQ7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoaXRlbS5lZGl0aW5nU3RhdHVzID09PSAnY3JlYXRlJyAmJiBlZGl0b3IudHlwZSA9PT0gJ3BvcHVwJykge1xyXG4gICAgICAgIGlmICh0aGlzLmdyaWRPcHRpb24udHlwZSA9PT0gJ2xvY2FsJykge1xyXG4gICAgICAgICAgdGhpcy5pdGVtcy5zcGxpY2UoMCwgMCwgaXRlbSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMudmlld0l0ZW1zLnNwbGljZSgwLCAwLCBpdGVtKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaXRlbS5lZGl0aW5nU3RhdHVzID0gdW5kZWZpbmVkO1xyXG4gICAgICB0aGlzLmdlbmVyYXRlRWRpdG9ySGFubGRlcihpdGVtKTtcclxuICAgIH0gY2F0Y2ggKGVycikge1xyXG4gICAgICB0aGlzLm5vdGlmeVNlcnZpY2Uubm90aWZ5Lndhcm5pbmcoZXJyKTtcclxuICAgIH0gZmluYWxseSB7XHJcbiAgICAgIGl0ZW0uZWRpdG9ySGFuZGxlci5zYXZpbmcgPSBmYWxzZTtcclxuICAgICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25DYW5jZWwgPSAoaXRlbTogR3JpZEl0ZW0pID0+IHtcclxuICAgIGNvbnN0IHsgZWRpdG9yIH0gPSB0aGlzLmdyaWRPcHRpb247XHJcbiAgICBpZiAoZWRpdG9yLnR5cGUgPT09ICdpbmxpbmUnKSB7XHJcbiAgICAgIGlmICh0aGlzLmdyaWRPcHRpb24udHlwZSA9PT0gJ2xvY2FsJykge1xyXG4gICAgICAgIGNvbnN0IGlkeDEgPSB0aGlzLml0ZW1zLmluZGV4T2YoaXRlbSk7XHJcbiAgICAgICAgdGhpcy5pdGVtcy5zcGxpY2UoaWR4MSwgMSk7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgaWR4MiA9IHRoaXMudmlld0l0ZW1zLmluZGV4T2YoaXRlbSk7XHJcbiAgICAgIHRoaXMudmlld0l0ZW1zLnNwbGljZShpZHgyLCAxKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKGl0ZW0uZWRpdGluZ1N0YXR1cyA9PT0gJ2NyZWF0ZScpIHtcclxuICAgICAgaWYgKGVkaXRvci50eXBlICE9PSAncG9wdXAnKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZ3JpZE9wdGlvbi50eXBlID09PSAnbG9jYWwnKSB7XHJcbiAgICAgICAgICB0aGlzLml0ZW1zLnNwbGljZSgwLCAxKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy52aWV3SXRlbXMuc3BsaWNlKDAsIDEpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBPYmplY3QuYXNzaWduKGl0ZW0sIGl0ZW0udGVtcG9yYXJ5KTtcclxuICAgICAgaXRlbS5lZGl0aW5nU3RhdHVzID0gdW5kZWZpbmVkO1xyXG4gICAgICB0aGlzLmdlbmVyYXRlRWRpdG9ySGFubGRlcihpdGVtKTtcclxuICAgICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpbml0RXh0ZXJuYWxGaWx0ZXIgPSAoKSA9PiB7XHJcbiAgICBpZiAodGhpcy5ncmlkT3B0aW9uLmZpbHRlcj8uZXh0ZXJuYWxGaWx0ZXJzPy5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5ncmlkT3B0aW9uLmZpbHRlci5leHRlcm5hbEZpbHRlcnMuZm9yRWFjaChleHRlcm5hbEZpbHRlciA9PiB7XHJcbiAgICAgICAgaWYgKGV4dGVybmFsRmlsdGVyLnR5cGUgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICBpZiAoZXh0ZXJuYWxGaWx0ZXIuZGVmYXVsdCkge1xyXG4gICAgICAgICAgICB0aGlzLmV4dGVybmFsRmlsdGVyW2V4dGVybmFsRmlsdGVyLmZpZWxkXSA9IGV4dGVybmFsRmlsdGVyLmRlZmF1bHQgPz8gJyc7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChleHRlcm5hbEZpbHRlci50eXBlID09PSAnbnVtYmVyJykge1xyXG4gICAgICAgICAgaWYgKGV4dGVybmFsRmlsdGVyLmRlZmF1bHQpIHtcclxuICAgICAgICAgICAgdGhpcy5leHRlcm5hbEZpbHRlcltleHRlcm5hbEZpbHRlci5maWVsZF0gPSBleHRlcm5hbEZpbHRlci5kZWZhdWx0ID8/IHVuZGVmaW5lZDtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGV4dGVybmFsRmlsdGVyLnR5cGUgPT09ICdkYXRlcmFuZ2UnKSB7XHJcbiAgICAgICAgICB0aGlzLmV4dGVybmFsRmlsdGVyW2V4dGVybmFsRmlsdGVyLmZpZWxkXSA9IHtcclxuICAgICAgICAgICAgZnJvbTogZXh0ZXJuYWxGaWx0ZXIuZGVmYXVsdEZyb20gPz8gdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICB0bzogZXh0ZXJuYWxGaWx0ZXIuZGVmYXVsdFRvID8/IHVuZGVmaW5lZFxyXG4gICAgICAgICAgfTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGV4dGVybmFsRmlsdGVyLnR5cGUgPT09ICdudW1iZXJyYW5nZScpIHtcclxuICAgICAgICAgIHRoaXMuZXh0ZXJuYWxGaWx0ZXJbZXh0ZXJuYWxGaWx0ZXIuZmllbGRdID0ge1xyXG4gICAgICAgICAgICBmcm9tOiBleHRlcm5hbEZpbHRlci5kZWZhdWx0RnJvbSA/PyB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgIHRvOiBleHRlcm5hbEZpbHRlci5kZWZhdWx0VG8gPz8gdW5kZWZpbmVkXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZXh0ZXJuYWxGaWx0ZXIudHlwZSA9PT0gJ2RhdGVyYW5nZWZ1bGwnKSB7XHJcbiAgICAgICAgICB0aGlzLmV4dGVybmFsRmlsdGVyW2V4dGVybmFsRmlsdGVyLmZpZWxkXSA9IHtcclxuICAgICAgICAgICAgZnJvbTogZXh0ZXJuYWxGaWx0ZXIuZGVmYXVsdEZyb20gPz8gdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICB0bzogZXh0ZXJuYWxGaWx0ZXIuZGVmYXVsdFRvID8/IHVuZGVmaW5lZFxyXG4gICAgICAgICAgfTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGV4dGVybmFsRmlsdGVyLnR5cGUgPT09ICd2YWx1ZXMnKSB7IC8vIGFuZG4xXHJcbiAgICAgICAgICBpZiAoZXh0ZXJuYWxGaWx0ZXIuZGVmYXVsdCkge1xyXG4gICAgICAgICAgICB0aGlzLmV4dGVybmFsRmlsdGVyW2V4dGVybmFsRmlsdGVyLmZpZWxkXSA9IGV4dGVybmFsRmlsdGVyLmRlZmF1bHQgPz8gJyc7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxuICBvblNlYXJjaCA9IChzZWFyY2hWYWx1ZTogc3RyaW5nLCBpdGVtOiBHcmlkSXRlbSwgY29sdW1uOiBTZEdyaWRDb2x1bW4pID0+IHtcclxuICAgIGl0ZW1bY29sdW1uLmZpZWxkXSA9IHNlYXJjaFZhbHVlO1xyXG4gIH1cclxuXHJcbiAgb25GaWx0ZXJDb25maWd1cmF0aW9uTG9hZGVkID0gKHBhcmFtOiBGaWx0ZXJDb25maWd1cmF0aW9uKSA9PiB7XHJcbiAgICB0aGlzLnF1aWNrRmlsdGVycyA9IHBhcmFtLnF1aWNrRmlsdGVycyB8fCBbXTtcclxuICAgIHRoaXMuc2VsZWN0ZWRRdWlja0ZpbHRlciA9IHBhcmFtLnNlbGVjdGVkUXVpY2tGaWx0ZXIgfHwgJyc7XHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZFF1aWNrRmlsdGVyKSB7XHJcbiAgICAgIGNvbnN0IHF1aWNrRmlsdGVyID0gdGhpcy5xdWlja0ZpbHRlcnMuZmluZChlID0+IGUuY29kZSA9PT0gdGhpcy5zZWxlY3RlZFF1aWNrRmlsdGVyKTtcclxuICAgICAgaWYgKHF1aWNrRmlsdGVyKSB7XHJcbiAgICAgICAgY29uc3QgZjEgPSBKU09OLnN0cmluZ2lmeShxdWlja0ZpbHRlci5maWx0ZXIpO1xyXG4gICAgICAgIGNvbnN0IGYyID0gSlNPTi5zdHJpbmdpZnkocXVpY2tGaWx0ZXIuZXh0ZXJuYWxGaWx0ZXIpO1xyXG4gICAgICAgIHRoaXMuZmlsdGVyID0gSlNPTi5wYXJzZShmMSk7XHJcbiAgICAgICAgdGhpcy5leHRlcm5hbEZpbHRlciA9IHRoaXMucmVmcmVzaEV4dGVybmFsRmlsdGVyKHRoaXMuZ3JpZE9wdGlvbj8uZmlsdGVyPy5leHRlcm5hbEZpbHRlcnMsIEpTT04ucGFyc2UoZjIpKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5pbmxpbmVFeHRlcm5hbCA9IHBhcmFtLmlubGluZUV4dGVybmFsIHx8IHt9O1xyXG4gICAgdGhpcy5pbmxpbmVDb2x1bW4gPSBwYXJhbS5pbmxpbmVDb2x1bW4gfHwge307XHJcbiAgICB0aGlzLnJlc2l6ZSgpO1xyXG4gIH1cclxuXHJcbiAgb25TZWxlY3RRdWlja0ZpbHRlciA9ICh2YWx1ZTogc3RyaW5nKSA9PiB7XHJcbiAgICBjb25zdCBxdWlja0ZpbHRlciA9IHRoaXMucXVpY2tGaWx0ZXJzLmZpbmQoZSA9PiBlLmNvZGUgPT09IHZhbHVlKTtcclxuICAgIGlmIChxdWlja0ZpbHRlcj8uY29kZSkge1xyXG4gICAgICBjb25zdCBmMSA9IEpTT04uc3RyaW5naWZ5KHF1aWNrRmlsdGVyLmZpbHRlcik7XHJcbiAgICAgIGNvbnN0IGYyID0gSlNPTi5zdHJpbmdpZnkocXVpY2tGaWx0ZXIuZXh0ZXJuYWxGaWx0ZXIpO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUXVpY2tGaWx0ZXIgPSBxdWlja0ZpbHRlcj8uY29kZTtcclxuICAgICAgdGhpcy5maWx0ZXIgPSBKU09OLnBhcnNlKGYxKTtcclxuICAgICAgdGhpcy5leHRlcm5hbEZpbHRlciA9IHRoaXMucmVmcmVzaEV4dGVybmFsRmlsdGVyKHRoaXMuZ3JpZE9wdGlvbj8uZmlsdGVyPy5leHRlcm5hbEZpbHRlcnMsIEpTT04ucGFyc2UoZjIpKTtcclxuICAgICAgdGhpcy51cGRhdGVGaWx0ZXIoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRRdWlja0ZpbHRlciA9ICcnO1xyXG4gICAgICB0aGlzLm9uQ2xlYXJGaWx0ZXIoKTtcclxuICAgIH1cclxuICAgIHRoaXMuc2RHcmlkUG9wdXBGaWx0ZXI/LnVwZGF0ZUNvbmZpZ3VyYXRpb24odGhpcy5zZWxlY3RlZFF1aWNrRmlsdGVyKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0RXhwb3J0SXRlbXMgPSBhc3luYyAocGFnZU51bWJlcjogbnVtYmVyID0gMSwgcGFnZVNpemU6IG51bWJlciA9IDEwMDAwKSA9PiB7XHJcbiAgICBpZiAodGhpcy5pc0xvYWRpbmcpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKHRoaXMuZ3JpZE9wdGlvbi50eXBlICE9PSAnbG9jYWwnKSB7XHJcbiAgICAgICAgY29uc3QgaGFuZGxlciA9IHRoaXMuaGFuZGxlciBhcyBJSGFuZGxlclNlcnZlcjtcclxuICAgICAgICBjb25zdCBmaWx0ZXIgPSBoYW5kbGVyLm1hcFJlcXVlc3QodGhpcy5nZXRGaWx0ZXJJbmZvKHBhZ2VOdW1iZXIsIHBhZ2VTaXplKSk7XHJcbiAgICAgICAgaWYgKHRoaXMuZ3JpZE9wdGlvbi5tZXRob2QgPT09ICdHRVQnKSB7XHJcbiAgICAgICAgICBjb25zdCBxdWVyeVN0cmluZyA9IE9iamVjdC5rZXlzKGZpbHRlcikuZmlsdGVyKGtleSA9PiBmaWx0ZXJba2V5XSAhPT0gbnVsbCAmJiBmaWx0ZXJba2V5XSAhPT0gdW5kZWZpbmVkKVxyXG4gICAgICAgICAgICAubWFwKGtleSA9PiBrZXkgKyAnPScgKyBmaWx0ZXJba2V5XSkuam9pbignJicpO1xyXG4gICAgICAgICAgY29uc3QgdXJsID0gdGhpcy5ncmlkT3B0aW9uLnVybC5pbmNsdWRlcygnPycpID8gYCR7dGhpcy5ncmlkT3B0aW9uLnVybH0mJHtxdWVyeVN0cmluZ31gIDogYCR7dGhpcy5ncmlkT3B0aW9uLnVybH0/JHtxdWVyeVN0cmluZ31gO1xyXG4gICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmFwaVNlcnZpY2UuZ2V0KHVybCk7XHJcbiAgICAgICAgICByZXR1cm4gaGFuZGxlci5tYXBSZXNwb25zZShyZXNwb25zZSkuaXRlbXM7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5hcGlTZXJ2aWNlLnBvc3QodGhpcy5ncmlkT3B0aW9uLnVybCwgZmlsdGVyKTtcclxuICAgICAgICAgIHJldHVybiBoYW5kbGVyLm1hcFJlc3BvbnNlKHJlc3BvbnNlKS5pdGVtcztcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgbGV0IGxvY2FsSXRlbXMgPSBbXTtcclxuICAgICAgICBjb25zdCBoYW5kbGVyID0gdGhpcy5oYW5kbGVyIGFzIElIYW5kbGVyTG9jYWw7XHJcbiAgICAgICAgaWYgKHR5cGVvZiAodGhpcy5ncmlkT3B0aW9uLml0ZW1zKSA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgY29uc3QgcmVzdWx0cyA9IHRoaXMuZ3JpZE9wdGlvbi5pdGVtcygpO1xyXG4gICAgICAgICAgaWYgKHJlc3VsdHMgaW5zdGFuY2VvZiBQcm9taXNlKSB7XHJcbiAgICAgICAgICAgIGxvY2FsSXRlbXMgPSBhd2FpdCByZXN1bHRzO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgbG9jYWxJdGVtcyA9IHJlc3VsdHM7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGxvY2FsSXRlbXMgPSB0aGlzLmdyaWRPcHRpb24uaXRlbXM7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gaGFuZGxlci5maWx0ZXIobG9jYWxJdGVtcywge1xyXG4gICAgICAgICAgY3VzdG9tRmlsdGVyOiB0aGlzLmdyaWRPcHRpb24uZmlsdGVyLmN1c3RvbUZpbHRlcixcclxuICAgICAgICAgIHJhd0ZpbHRlcjogdGhpcy5maWx0ZXIsXHJcbiAgICAgICAgICBjb2x1bW5zOiB0aGlzLmdyaWRPcHRpb24uY29sdW1ucyxcclxuICAgICAgICAgIHJhd0V4dGVybmFsRmlsdGVyOiB0aGlzLmV4dGVybmFsRmlsdGVyLFxyXG4gICAgICAgICAgZXh0ZXJuYWxGaWx0ZXJzOiB0aGlzLmdyaWRPcHRpb24uZmlsdGVyPy5leHRlcm5hbEZpbHRlcnMsXHJcbiAgICAgICAgICBvcmRlckJ5OiB0aGlzLm9yZGVyQnksXHJcbiAgICAgICAgICBvcmRlckRpcmVjdGlvbjogdGhpcy5vcmRlckRpcmVjdGlvbixcclxuICAgICAgICAgIHBhZ2VOdW1iZXIsXHJcbiAgICAgICAgICBwYWdlU2l6ZVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiByZXNwb25zZS5pdGVtcztcclxuICAgICAgfVxyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgdGhpcy5ub3RpZnlTZXJ2aWNlLmhhbmRsZS5lcnJvcihlcnJvcik7XHJcbiAgICB9IGZpbmFsbHkge1xyXG4gICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEZpbHRlckluZm8gPSAocGFnZU51bWJlcjogbnVtYmVyLCBwYWdlU2l6ZTogbnVtYmVyKTogU2RHcmlkRmlsdGVySW5mbyA9PiB7XHJcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyh0aGlzLmZpbHRlcikpIHtcclxuICAgICAgaWYgKHR5cGVvZiAodGhpcy5maWx0ZXJba2V5XSkgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgdGhpcy5maWx0ZXJba2V5XSA9IHRoaXMuZmlsdGVyW2tleV0udHJpbSgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyh0aGlzLmV4dGVybmFsRmlsdGVyKSkge1xyXG4gICAgICBpZiAodHlwZW9mICh0aGlzLmV4dGVybmFsRmlsdGVyW2tleV0pID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgIHRoaXMuZXh0ZXJuYWxGaWx0ZXJba2V5XSA9IHRoaXMuZXh0ZXJuYWxGaWx0ZXJba2V5XS50cmltKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB7XHJcbiAgICAgIGN1c3RvbUZpbHRlcjogdGhpcy5ncmlkT3B0aW9uLmZpbHRlci5jdXN0b21GaWx0ZXIsXHJcbiAgICAgIHJhd0ZpbHRlcjogdGhpcy5maWx0ZXIsXHJcbiAgICAgIGNvbHVtbnM6IHRoaXMuZ3JpZE9wdGlvbi5jb2x1bW5zLFxyXG4gICAgICByYXdFeHRlcm5hbEZpbHRlcjogdGhpcy5leHRlcm5hbEZpbHRlcixcclxuICAgICAgZXh0ZXJuYWxGaWx0ZXJzOiB0aGlzLmdyaWRPcHRpb24uZmlsdGVyPy5leHRlcm5hbEZpbHRlcnMsXHJcbiAgICAgIG9yZGVyQnk6IHRoaXMub3JkZXJCeSxcclxuICAgICAgb3JkZXJEaXJlY3Rpb246IHRoaXMub3JkZXJEaXJlY3Rpb24sXHJcbiAgICAgIHBhZ2VOdW1iZXIsXHJcbiAgICAgIHBhZ2VTaXplXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgb25FeHBvcnRCeVRlbXBsYXRlID0gYXN5bmMgKHBhcmFtczogeyBleGNlbENvbmZpZzogYW55LCBleGNlbENvbHVtbnM6IGFueVtdIH0pID0+IHtcclxuICAgIHRoaXMubG9hZGluZ1NlcnZpY2Uuc3RhcnQoKTtcclxuICAgIGxldCBleHBvcnRJdGVtcyA9IFtdO1xyXG4gICAgaWYgKHRoaXMuZ3JpZE9wdGlvbi5leHBvcnQ/Lml0ZW1zKSB7XHJcbiAgICAgIGV4cG9ydEl0ZW1zID0gYXdhaXQgdGhpcy5ncmlkT3B0aW9uLmV4cG9ydD8uaXRlbXModGhpcy5nZXRGaWx0ZXJJbmZvKDEsIDEwMDAwKSkuZmluYWxseSh0aGlzLmxvYWRpbmdTZXJ2aWNlLnN0b3ApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgZXhwb3J0SXRlbXMgPSBhd2FpdCB0aGlzLmdldEV4cG9ydEl0ZW1zKCkuZmluYWxseSh0aGlzLmxvYWRpbmdTZXJ2aWNlLnN0b3ApO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuZ3JpZE9wdGlvbi5leHBvcnQ/Lm1hcHBpbmcpIHtcclxuICAgICAgY29uc3QgcmVzdWx0cyA9IHRoaXMuZ3JpZE9wdGlvbi5leHBvcnQubWFwcGluZyhleHBvcnRJdGVtcywgcGFyYW1zLmV4Y2VsQ29uZmlnLm5hbWUpO1xyXG4gICAgICBpZiAocmVzdWx0cyBpbnN0YW5jZW9mIFByb21pc2UpIHtcclxuICAgICAgICBleHBvcnRJdGVtcyA9IGF3YWl0IHJlc3VsdHM7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgZXhwb3J0SXRlbXMgPSByZXN1bHRzO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjb25zdCBjb2x1bW5zID0gWy4uLnRoaXMuZ3JpZE9wdGlvbi5jb2x1bW5zLCAuLi4odGhpcy5ncmlkT3B0aW9uLmV4cG9ydD8uY29sdW1ucyB8fCBbXSldO1xyXG4gICAgY29uc3QgaXRlbXMgPSBleHBvcnRJdGVtcy5tYXAoaXRlbSA9PiB7XHJcbiAgICAgIGNvbnN0IG9iajogYW55ID0ge307XHJcbiAgICAgIGNvbnN0IGhhbmRsZSA9IChjb2x1bW46IFNkR3JpZENvbHVtbikgPT4ge1xyXG4gICAgICAgIGlmIChjb2x1bW4udHlwZSA9PT0gJ2NoaWxkcmVuJykge1xyXG4gICAgICAgICAgY29sdW1uLmNoaWxkcmVuLmZvckVhY2goaGFuZGxlKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGNvbHVtbi50cmFuc2Zvcm0pIHtcclxuICAgICAgICAgIG9ialtjb2x1bW4uZmllbGRdID0gY29sdW1uLnRyYW5zZm9ybShpdGVtW2NvbHVtbi5maWVsZF0sIGl0ZW0pO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoaXRlbVtjb2x1bW4uZmllbGRdID09PSB1bmRlZmluZWQgfHwgaXRlbVtjb2x1bW4uZmllbGRdID09PSBudWxsIHx8IGl0ZW1bY29sdW1uLmZpZWxkXSA9PT0gJycpIHtcclxuICAgICAgICAgIG9ialtjb2x1bW4uZmllbGRdID0gJyc7XHJcbiAgICAgICAgfSBlbHNlIGlmIChjb2x1bW4udHlwZSA9PT0gJ3N0cmluZycgfHwgY29sdW1uLnR5cGUgPT09ICdudW1iZXInIHx8IGNvbHVtbi50eXBlID09PSAnY29sb3InKSB7XHJcbiAgICAgICAgICAvLyBO4bq/dSBjZWxsIGzDoCBzdHJpbmcgaG/hurdjIG51bWJlciB0aMOsIGfDoW4gYuG6sW5nIGNow61uaCBuw7NcclxuICAgICAgICAgIG9ialtjb2x1bW4uZmllbGRdID0gaXRlbVtjb2x1bW4uZmllbGRdO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoY29sdW1uLnR5cGUgPT09ICdib29sJykge1xyXG4gICAgICAgICAgLy8gTuG6v3UgbMOgIGJvb2wgdGjDrCBnw6FuIGLhurFuZyBnacOhIHRy4buLIHRydWVWYWx1ZSB2w6AgZmFsc2VWYWx1ZSAobuG6v3UgY8OzKSwgbeG6t2MgxJHhu4tuaCBsw6AgVFJVRS9GQUxTRVxyXG4gICAgICAgICAgaWYgKGl0ZW1bY29sdW1uLmZpZWxkXSkge1xyXG4gICAgICAgICAgICBvYmpbY29sdW1uLmZpZWxkXSA9IGNvbHVtbi50cnVlVmFsdWUgfHwgJ1RydWUnO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgb2JqW2NvbHVtbi5maWVsZF0gPSBjb2x1bW4uZmFsc2VWYWx1ZSB8fCAnRmFsc2UnO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSBpZiAoY29sdW1uLnR5cGUgPT09ICdkYXRlJykge1xyXG4gICAgICAgICAgLy8gTuG6v3UgbMOgIGRhdGUgdGjDrCBjb252ZXJ0IHRoZW8gxJHDum5nIGZvcm1hdFxyXG4gICAgICAgICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKGl0ZW1bY29sdW1uLmZpZWxkXSk7XHJcbiAgICAgICAgICBvYmpbY29sdW1uLmZpZWxkXSA9IHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKGRhdGUsICdkZC9NTS95eXl5Jyk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChjb2x1bW4udHlwZSA9PT0gJ2RhdGV0aW1lJykge1xyXG4gICAgICAgICAgLy8gTuG6v3UgbMOgIGRhdGV0aW1lIHRow6wgY29udmVydCB0aGVvIMSRw7puZyBmb3JtYXRcclxuICAgICAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZShpdGVtW2NvbHVtbi5maWVsZF0pO1xyXG4gICAgICAgICAgb2JqW2NvbHVtbi5maWVsZF0gPSB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybShkYXRlLCAnZGQvTU0veXl5eSBISDptbTpzcycpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoY29sdW1uLnR5cGUgPT09ICd0aW1lJykge1xyXG4gICAgICAgICAgLy8gTuG6v3UgbMOgIHRpbWUgdGjDrCBjb252ZXJ0IHRoZW8gxJHDum5nIGZvcm1hdFxyXG4gICAgICAgICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKGl0ZW1bY29sdW1uLmZpZWxkXSk7XHJcbiAgICAgICAgICBvYmpbY29sdW1uLmZpZWxkXSA9IHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKGRhdGUsICdISDptbTpzcycpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoY29sdW1uLnR5cGUgPT09ICd2YWx1ZXMnKSB7XHJcbiAgICAgICAgICAvLyBO4bq/dSBsw6AgdmFsdWVzIHRow6wgbOG6pXkgZ2nDoSB0cuG7iyBj4bunYSB2YWx1ZSDEkcaw4bujYyBjaOG7jW5cclxuICAgICAgICAgIGNvbnN0IGRhdGEgPSBjb2x1bW4udmFsdWVzLmZpbmQoZSA9PiBlLnZhbHVlID09PSBpdGVtW2NvbHVtbi5maWVsZF0pO1xyXG4gICAgICAgICAgaWYgKGRhdGEpIHtcclxuICAgICAgICAgICAgb2JqW2NvbHVtbi5maWVsZF0gPSBkYXRhLnRleHQ7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBvYmpbY29sdW1uLmZpZWxkXSA9IGl0ZW1bY29sdW1uLmZpZWxkXTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2UgaWYgKGNvbHVtbi50eXBlID09PSAncmFkaW8nKSB7XHJcbiAgICAgICAgICBjb25zdCBkYXRhID0gY29sdW1uLnZhbHVlcy5maW5kKGUgPT4gZVtjb2x1bW4udmFsdWVGaWVsZF0gPT09IGl0ZW1bY29sdW1uLmZpZWxkXSk7XHJcbiAgICAgICAgICBpZiAoZGF0YSkge1xyXG4gICAgICAgICAgICBvYmpbY29sdW1uLmZpZWxkXSA9IGRhdGFbY29sdW1uLmRpc3BsYXlGaWVsZF07XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBvYmpbY29sdW1uLmZpZWxkXSA9IGl0ZW1bY29sdW1uLmZpZWxkXTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH07XHJcbiAgICAgIGNvbHVtbnMuZm9yRWFjaChoYW5kbGUpO1xyXG4gICAgICByZXR1cm4gb2JqO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLmV4cG9ydFNlcnZpY2UuZXhwb3J0QnlUZW1wbGF0ZSh7XHJcbiAgICAgIGZpbGVQYXRoOiBwYXJhbXMuZXhjZWxDb25maWcuZnVsbFBhdGgsXHJcbiAgICAgIGNvbHVtbnM6IHBhcmFtcy5leGNlbENvbHVtbnMsXHJcbiAgICAgIGl0ZW1zXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldCBpbnZhbGlkSXRlbXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5pdGVtcy5maWx0ZXIoZSA9PiBlLmVkaXRvckhhbmRsZXI/LmVycm9yTWVzc2FnZSkubWFwKGUgPT4ge1xyXG4gICAgICBjb25zdCB7IHRlbXBvcmFyeSxcclxuICAgICAgICBvcmlnaW5JdGVtLFxyXG4gICAgICAgIGVkaXRvckhhbmRsZXIsXHJcbiAgICAgICAgZWRpdGluZ1N0YXR1cyxcclxuICAgICAgICBpc0NoZWNrZWQsXHJcbiAgICAgICAgc3ViSW5mb3JtYXRpb24sXHJcbiAgICAgICAgYmxpbmtlcixcclxuICAgICAgICAuLi5pdGVtIH0gPSBlO1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIGl0ZW0sXHJcbiAgICAgICAgbWVzc2FnZTogZS5lZGl0b3JIYW5kbGVyLmVycm9yTWVzc2FnZVxyXG4gICAgICB9O1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXQgZ3JpZEl0ZW1zKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuaXRlbXMubWFwKGUgPT4ge1xyXG4gICAgICBjb25zdCB7IHRlbXBvcmFyeSxcclxuICAgICAgICBvcmlnaW5JdGVtLFxyXG4gICAgICAgIGVkaXRvckhhbmRsZXIsXHJcbiAgICAgICAgZWRpdGluZ1N0YXR1cyxcclxuICAgICAgICBpc0NoZWNrZWQsXHJcbiAgICAgICAgc3ViSW5mb3JtYXRpb24sXHJcbiAgICAgICAgYmxpbmtlcixcclxuICAgICAgICAuLi5pdGVtIH0gPSBlO1xyXG4gICAgICByZXR1cm4gaXRlbTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb25FZGl0b3JDaGFuZ2UgPSAoKSA9PiB7XHJcbiAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG4gIG9uU2VsZWN0UGFnZVNpemUgPSAoKSA9PiB7XHJcbiAgICB0aGlzLnJlbG9hZCgpO1xyXG4gIH1cclxuICBwcml2YXRlIHJlZnJlc2hFeHRlcm5hbEZpbHRlciA9IChleHRlcm5hbEZpbHRlcnM6IFNkR3JpZEV4dGVybmFsRmlsdGVyW10sIGV4dGVybmFsRmlsdGVyOiBhbnkpID0+IHtcclxuICAgIGV4dGVybmFsRmlsdGVyID0gZXh0ZXJuYWxGaWx0ZXIgfHwge307XHJcbiAgICBleHRlcm5hbEZpbHRlcnMgPSBleHRlcm5hbEZpbHRlcnMgfHwgW107XHJcbiAgICBleHRlcm5hbEZpbHRlcnMuZm9yRWFjaChlID0+IHtcclxuICAgICAgaWYgKGUudHlwZSA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICBleHRlcm5hbEZpbHRlcltlLmZpZWxkXSA9IGV4dGVybmFsRmlsdGVyW2UuZmllbGRdID8/IGUuZGVmYXVsdCA/PyAnJztcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGUudHlwZSA9PT0gJ251bWJlcicpIHtcclxuICAgICAgICBleHRlcm5hbEZpbHRlcltlLmZpZWxkXSA9IGV4dGVybmFsRmlsdGVyW2UuZmllbGRdID8/IGUuZGVmYXVsdCA/PyB1bmRlZmluZWQ7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChlLnR5cGUgPT09ICdkYXRlcmFuZ2UnKSB7XHJcbiAgICAgICAgZXh0ZXJuYWxGaWx0ZXJbZS5maWVsZF0gPSB7XHJcbiAgICAgICAgICBmcm9tOiBleHRlcm5hbEZpbHRlcltlLmZpZWxkXT8uZnJvbSA/PyBlLmRlZmF1bHRGcm9tID8/IHVuZGVmaW5lZCxcclxuICAgICAgICAgIHRvOiBleHRlcm5hbEZpbHRlcltlLmZpZWxkXT8udG8gPz8gZS5kZWZhdWx0VG8gPz8gdW5kZWZpbmVkXHJcbiAgICAgICAgfTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGUudHlwZSA9PT0gJ251bWJlcnJhbmdlJykge1xyXG4gICAgICAgIGV4dGVybmFsRmlsdGVyW2UuZmllbGRdID0ge1xyXG4gICAgICAgICAgZnJvbTogZXh0ZXJuYWxGaWx0ZXJbZS5maWVsZF0/LmZyb20gPz8gZS5kZWZhdWx0RnJvbSA/PyB1bmRlZmluZWQsXHJcbiAgICAgICAgICB0bzogZXh0ZXJuYWxGaWx0ZXJbZS5maWVsZF0/LnRvID8/IGUuZGVmYXVsdFRvID8/IHVuZGVmaW5lZFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChlLnR5cGUgPT09ICdkYXRlcmFuZ2VmdWxsJykge1xyXG4gICAgICAgIGV4dGVybmFsRmlsdGVyW2UuZmllbGRdID0ge1xyXG4gICAgICAgICAgZnJvbTogZXh0ZXJuYWxGaWx0ZXJbZS5maWVsZF0/LmZyb20gPz8gZS5kZWZhdWx0RnJvbSA/PyB1bmRlZmluZWQsXHJcbiAgICAgICAgICB0bzogZXh0ZXJuYWxGaWx0ZXJbZS5maWVsZF0/LnRvID8/IGUuZGVmYXVsdFRvID8/IHVuZGVmaW5lZFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChlLnR5cGUgPT09ICd2YWx1ZXMnKSB7IC8vIGFuZG4xXHJcbiAgICAgICAgZXh0ZXJuYWxGaWx0ZXJbZS5maWVsZF0gPSAoZXh0ZXJuYWxGaWx0ZXJbZS5maWVsZF0gfHwgZS5kZWZhdWx0KSA/PyAnJztcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGV4dGVybmFsRmlsdGVyO1xyXG4gIH1cclxuXHJcbiAgb25DcmVhdGVRdWlja0ZpbHRlciA9IChldj86IEV2ZW50KSA9PiB7XHJcbiAgICB0aGlzLm1hdFNlbGVjdD8uY2xvc2UoKTtcclxuICAgIHRoaXMub25GaWx0ZXJQb3B1cCgpO1xyXG4gICAgdGhpcy5zZEdyaWRQb3B1cEZpbHRlcj8uY2xvc2UoKTtcclxuICAgIHRoaXMuc2RHcmlkUG9wdXBGaWx0ZXI/Lm9uQ3JlYXRlUXVpY2tGaWx0ZXIoZXYpO1xyXG4gIH1cclxuXHJcbiAgb25FZGl0UXVpY2tGaWx0ZXIgPSAoZXY6IEV2ZW50LCBxdWlja0ZpbHRlcj86IFF1aWNrRmlsdGVyKSA9PiB7XHJcbiAgICB0aGlzLm1hdFNlbGVjdD8uY2xvc2UoKTtcclxuICAgIHRoaXMub25GaWx0ZXJQb3B1cCgpO1xyXG4gICAgdGhpcy5zZEdyaWRQb3B1cEZpbHRlcj8uY2xvc2UoKTtcclxuICAgIHRoaXMuc2RHcmlkUG9wdXBGaWx0ZXI/Lm9uRWRpdFF1aWNrRmlsdGVyKGV2LCBxdWlja0ZpbHRlcik7XHJcbiAgfVxyXG5cclxuICBvbkRlbGV0ZVF1aWNrRmlsdGVyID0gKGV2OiBFdmVudCwgcXVpY2tGaWx0ZXI/OiBRdWlja0ZpbHRlcikgPT4ge1xyXG4gICAgdGhpcy5tYXRTZWxlY3Q/LmNsb3NlKCk7XHJcbiAgICB0aGlzLm9uRmlsdGVyUG9wdXAoKTtcclxuICAgIHRoaXMuc2RHcmlkUG9wdXBGaWx0ZXI/LmNsb3NlKCk7XHJcbiAgICB0aGlzLnNkR3JpZFBvcHVwRmlsdGVyPy5vbkRlbGV0ZVF1aWNrRmlsdGVyKGV2LCBxdWlja0ZpbHRlcik7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
1191
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiQzovVXNlcnMvbmdoaWF0dDE1X29uZW1vdW50L0RvY3VtZW50cy9saWItY29yZS11aS9wcm9qZWN0cy9zZC1jb3JlL2dyaWQvIiwic291cmNlcyI6WyJzcmMvbGliL2dyaWQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsU0FBUyxFQUVULHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsWUFBWSxFQUNaLFNBQVMsRUFHVCxNQUFNLEVBQ04sUUFBUSxFQUNSLGVBQWUsRUFDaEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzVELE9BQU8sQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUV2QixPQUFPLEVBQ0wsWUFBWSxFQUNiLE1BQU0sc0JBQXNCLENBQUM7QUFFOUIsT0FBTyxFQUNMLGVBQWUsRUFDaEIsTUFBTSx5QkFBeUIsQ0FBQztBQUVqQyxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2pCLE1BQU0sMEJBQTBCLENBQUM7QUFFbEMsT0FBTyxFQUNMLGtCQUFrQixFQUNuQixNQUFNLDRCQUE0QixDQUFDO0FBRXBDLE9BQU8sRUFBZ0IsaUJBQWlCLEVBQWdELE1BQU0sY0FBYyxDQUFDO0FBSTdHLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBR2hFLE9BQU8sRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBTTNDLE9BQU8sRUFBc0IsV0FBVyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDcEYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzNELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFD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QUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUM7b0JBQzdFLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEtBQUssS0FBSyxFQUFFO3dCQUNwQyxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxJQUFJLElBQUksTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLFNBQVMsQ0FBQzs2QkFDckcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLEdBQUcsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7d0JBQ2pELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQzt3QkFDbEksTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQzt3QkFDaEQsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO3dCQUN2RCxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQzt3QkFDbkIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7cUJBQ3BCO3lCQUFNO3dCQUNMLE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxD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Q29tcG9uZW50LFxyXG4gIElucHV0LFxyXG4gIFZpZXdDaGlsZCxcclxuICBFbGVtZW50UmVmLFxyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIFZpZXdDaGlsZHJlbixcclxuICBRdWVyeUxpc3QsXHJcbiAgQWZ0ZXJWaWV3SW5pdCxcclxuICBPbkRlc3Ryb3ksXHJcbiAgSW5qZWN0LFxyXG4gIE9wdGlvbmFsLFxyXG4gIENvbnRlbnRDaGlsZHJlblxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBEYXRlUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IERldmljZURldGVjdG9yU2VydmljZSB9IGZyb20gJ25neC1kZXZpY2UtZGV0ZWN0b3InO1xyXG5pbXBvcnQgJCBmcm9tICdqcXVlcnknO1xyXG5cclxuaW1wb3J0IHtcclxuICBTZEFwaVNlcnZpY2VcclxufSBmcm9tICdAc2QtYW5ndWxhci9jb3JlL2FwaSc7XHJcblxyXG5pbXBvcnQge1xyXG4gIFNkTm90aWZ5U2VydmljZVxyXG59IGZyb20gJ0BzZC1hbmd1bGFyL2NvcmUvbm90aWZ5JztcclxuXHJcbmltcG9ydCB7XHJcbiAgU2RMb2FkaW5nU2VydmljZVxyXG59IGZyb20gJ0BzZC1hbmd1bGFyL2NvcmUvbG9hZGluZyc7XHJcblxyXG5pbXBvcnQge1xyXG4gIFNkVHJhbnNsYXRlU2VydmljZVxyXG59IGZyb20gJ0BzZC1hbmd1bGFyL2NvcmUvdHJhbnNsYXRlJztcclxuXHJcbmltcG9ydCB7IFNkR3JpZE9wdGlvbiwgZGVmYXVsdEdyaWRPcHRpb24sIEdyaWRJdGVtLCBTZEdyaWRDb2x1bW4sIFNkR3JpZEV4dGVybmFsRmlsdGVyIH0gZnJvbSAnLi9ncmlkLm1vZGVsJztcclxuXHJcbmltcG9ydCB7IENvbmZpZ1Jlc3VsdCB9IGZyb20gJy4vY29tcG9uZW50cy9ncmlkLWNvbmZpZy9ncmlkLWNvbmZpZy5tb2RlbCc7XHJcbmltcG9ydCB7IFNkR3JpZENvbmZpZyB9IGZyb20gJy4vY29tcG9uZW50cy9ncmlkLWNvbmZpZy9ncmlkLWNvbmZpZy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBFZGl0b3JIYW5kbGVyUGlwZSB9IGZyb20gJy4vcGlwZXMvZWRpdG9yLWhhbmRsZXIucGlwZSc7XHJcbmltcG9ydCB7IFNkR3JpZFBvcHVwRWRpdG9yIH0gZnJvbSAnLi9jb21wb25lbnRzL2dyaWQtcG9wdXAtZWRpdG9yL2dyaWQtcG9wdXAtZWRpdG9yLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFNkR3JpZFBvcHVwRmlsdGVyIH0gZnJvbSAnLi9jb21wb25lbnRzL2dyaWQtcG9wdXAtZmlsdGVyL2dyaWQtcG9wdXAtZmlsdGVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IG1lcmdlLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgU2RHcmlkUG9wdXBFeHBvcnRFeGNlbCB9IGZyb20gJy4vY29tcG9uZW50cy9ncmlkLXBvcHVwLWV4cG9ydC1leGNlbC9ncmlkLXBvcHVwLWV4cG9ydC1leGNlbC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBRdWlja0ZpbHRlciwgRmlsdGVyQ29uZmlndXJhdGlvbiB9IGZyb20gJy4vY29tcG9uZW50cy9ncmlkLXBvcHVwLWZpbHRlci9ncmlkLXBvcHVwLWZpbHRlci5tb2RlbCc7XHJcbmltcG9ydCB7IE1hdFNlbGVjdCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NlbGVjdCc7XHJcbmltcG9ydCB7IFNkR3JpZEZpbHRlckluZm8gfSBmcm9tICcuL21vZGVscy9maWx0ZXItaW5mby5tb2RlbCc7XHJcblxyXG5pbXBvcnQgeyBJR3JpZENvbmZpZ3VyYXRpb24sIEdSSURfQ09ORklHIH0gZnJvbSAnLi9tb2RlbHMvZ3JpZC1jb25maWd1cmF0aW9uLm1vZGVsJztcclxuaW1wb3J0IHsgTWF0UGFnaW5hdG9yIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcGFnaW5hdG9yJztcclxuaW1wb3J0IHsgU2RDZWxsRGVmRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL2NlbGwtZGVmLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFNkQ2VsbEZvb3RlckRldkRpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9jZWxsLWZvb3Rlci1kZWYuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgc3RhcnRXaXRoIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBTZENlbGxFZGl0b3JEZWZEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvY2VsbC1lZGl0b3ItZGVmLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IElIYW5kbGVyU2VydmVyLCBJSGFuZGxlckxvY2FsIH0gZnJvbSAnLi9tb2RlbHMvaGFuZGxlcic7XHJcbmltcG9ydCB7IEhhbmRsZXJMb2NhbCB9IGZyb20gJy4vbW9kZWxzL2hhbmRsZXItbG9jYWwnO1xyXG5pbXBvcnQgeyBIYW5kbGVyRG90bmV0IH0gZnJvbSAnLi9tb2RlbHMvaGFuZGxlci1kb3RuZXQnO1xyXG5pbXBvcnQgeyBTZEdyaWRJbXBvcnRFeGNlbCB9IGZyb20gJy4vY29tcG9uZW50cy9ncmlkLWltcG9ydC1leGNlbC9ncmlkLWltcG9ydC1leGNlbC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTZEV4cG9ydFNlcnZpY2UgfSBmcm9tICdAc2QtYW5ndWxhci9jb3JlL2V4cG9ydCc7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdzZC1ncmlkJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZ3JpZC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZ3JpZC5jb21wb25lbnQuc2NzcyddLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTZEdyaWQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG4gIHByaXZhdGUgaGFuZGxlcjogSUhhbmRsZXJTZXJ2ZXIgfCBJSGFuZGxlckxvY2FsO1xyXG4gIGlzTW9iaWxlT3JUYWJsZXQgPSBmYWxzZTtcclxuICBkaXNwbGF5S2V5ID0gJ1NEQ1VTVE9NJztcclxuICBncmlkT3B0aW9uOiBTZEdyaWRPcHRpb247XHJcbiAgb3JkZXJCeTogc3RyaW5nO1xyXG4gIG9yZGVyRGlyZWN0aW9uOiAnQVNDJyB8ICdERVNDJztcclxuICBsb2NhbEl0ZW1zOiBHcmlkSXRlbVtdID0gW107XHJcbiAgaXRlbXM6IEdyaWRJdGVtW10gPSBbXTtcclxuICB0b3RhbDogbnVtYmVyO1xyXG4gIGZpbHRlcjoge1xyXG4gICAgW2tleTogc3RyaW5nXTogYW55XHJcbiAgfSA9IHt9O1xyXG4gIGV4dGVybmFsRmlsdGVyOiB7XHJcbiAgICBba2V5OiBzdHJpbmddOiBhbnlcclxuICB9ID0ge307XHJcbiAgaGlkZGVuUGFnaW5hdGUgPSBmYWxzZTtcclxuICBpbmxpbmVFeHRlcm5hbDoge1xyXG4gICAgW2tleTogc3RyaW5nXTogYm9vbGVhbjtcclxuICB9ID0ge307XHJcbiAgaW5saW5lQ29sdW1uOiB7XHJcbiAgICBba2V5OiBzdHJpbmddOiBib29sZWFuO1xyXG4gIH0gPSB7fTtcclxuICBxdWlja0ZpbHRlcnM6IFF1aWNrRmlsdGVyW10gPSBbXTtcclxuICBzZWxlY3RlZFF1aWNrRmlsdGVyOiBzdHJpbmc7XHJcbiAgLy8gUGFnaW5hdGVcclxuICBwYWdlcyA9IFsxXTtcclxuICBwYWdlQ291bnQgPSA1O1xyXG4gIHRvdGFsUGFnZSA9IDE7XHJcblxyXG4gIC8vIExvYWRpbmdcclxuICBpc0xvYWRpbmcgPSBmYWxzZTtcclxuXHJcbiAgdmlld0l0ZW1zOiBHcmlkSXRlbVtdID0gW107XHJcbiAgc3VtYXJpemU6IHN0cmluZztcclxuXHJcbiAgZml4ZWRDb2x1bW5zOiBTZEdyaWRDb2x1bW5bXSA9IFtdO1xyXG4gIG5vcm1hbENvbHVtbnM6IFNkR3JpZENvbHVtbltdID0gW107XHJcbiAgY29sdW1uczogU2RHcmlkQ29sdW1uW10gPSBbXTtcclxuXHJcbiAgaXNDaGVja2VkQWxsID0gZmFsc2U7XHJcbiAgc2VsZWN0ZWRJdGVtczogYW55W10gPSBbXTtcclxuXHJcbiAgQFZpZXdDaGlsZHJlbignZml4ZWRIZWFkZXInKSBwcml2YXRlIGZpeGVkSGVhZGVyczogUXVlcnlMaXN0PEVsZW1lbnRSZWY+O1xyXG4gIEBWaWV3Q2hpbGRyZW4oJ2ZpeGVkQm9keScpIHByaXZhdGUgZml4ZWRCb2RpZXM6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPjtcclxuXHJcbiAgQFZpZXdDaGlsZCgnZml4ZWRHcmlkQ29udGFpbmVyJykgZml4ZWRHcmlkQ29udGFpbmVyOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ2dyaWRGaXhlZEJvZHknKSBncmlkRml4ZWRCb2R5OiBFbGVtZW50UmVmO1xyXG5cclxuICBAVmlld0NoaWxkKCdncmlkQ29udGFpbmVyJykgZ3JpZENvbnRhaW5lcjogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdncmlkSGVhZGVyJykgZ3JpZEhlYWRlcjogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdncmlkQm9keScpIGdyaWRCb2R5OiBFbGVtZW50UmVmO1xyXG5cclxuICBAVmlld0NoaWxkKCdzZEdyaWRDb25maWcnLCB7IHN0YXRpYzogdHJ1ZSB9KSBzZEdyaWRDb25maWc6IFNkR3JpZENvbmZpZztcclxuICBAVmlld0NoaWxkKCdzZEdyaWRQb3B1cEVkaXRvcicpIHNkR3JpZFBvcHVwRWRpdG9yOiBTZEdyaWRQb3B1cEVkaXRvcjtcclxuXHJcbiAgQFZpZXdDaGlsZCgnc2RHcmlkUG9wdXBGaWx0ZXInKSBzZEdyaWRQb3B1cEZpbHRlcjogU2RHcmlkUG9wdXBGaWx0ZXI7XHJcbiAgQFZpZXdDaGlsZCgnbWF0U2VsZWN0JykgbWF0U2VsZWN0OiBNYXRTZWxlY3Q7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ3NkR3JpZFBvcHVwRXhwb3J0RXhjZWwnKSBzZEdyaWRQb3B1cEV4cG9ydEV4Y2VsOiBTZEdyaWRQb3B1cEV4cG9ydEV4Y2VsO1xyXG4gIEBWaWV3Q2hpbGQoJ3NkR3JpZEltcG9ydEV4Y2VsJykgc2RHcmlkSW1wb3J0RXhjZWw6IFNkR3JpZEltcG9ydEV4Y2VsO1xyXG5cclxuICBAQ29udGVudENoaWxkcmVuKFNkQ2VsbERlZkRpcmVjdGl2ZSkgY2VsbERlZnMgPSBuZXcgUXVlcnlMaXN0PFNkQ2VsbERlZkRpcmVjdGl2ZT4oKTtcclxuICBjZWxsRGVmOiB7XHJcbiAgICBbY29sdW1uOiBzdHJpbmddOiBTZENlbGxEZWZEaXJlY3RpdmVcclxuICB9ID0ge307XHJcblxyXG4gIEBDb250ZW50Q2hpbGRyZW4oU2RDZWxsRWRpdG9yRGVmRGlyZWN0aXZlKSBjZWxsRWRpdG9yRGVmcyA9IG5ldyBRdWVyeUxpc3Q8U2RDZWxsRWRpdG9yRGVmRGlyZWN0aXZlPigpO1xyXG4gIGNlbGxFZGl0b3JEZWY6IHtcclxuICAgIFtjb2x1bW46IHN0cmluZ106IFNkQ2VsbEVkaXRvckRlZkRpcmVjdGl2ZVxyXG4gIH0gPSB7fTtcclxuXHJcbiAgQENvbnRlbnRDaGlsZHJlbihTZENlbGxGb290ZXJEZXZEaXJlY3RpdmUpIGNlbGxGb290ZXJEZWZzID0gbmV3IFF1ZXJ5TGlzdDxTZENlbGxGb290ZXJEZXZEaXJlY3RpdmU+KCk7XHJcbiAgY2VsbEZvb3RlckRlZjoge1xyXG4gICAgW2NvbHVtbjogc3RyaW5nXTogU2RDZWxsRm9vdGVyRGV2RGlyZWN0aXZlW107XHJcbiAgfSA9IHt9O1xyXG4gICNudW1iZXJPZkZvb3RlclJvd3MgPSAwO1xyXG4gIGZvb3RlclJvd3M6IG51bWJlcltdID0gW107XHJcblxyXG4gICNwYWdpbmF0b3I6IE1hdFBhZ2luYXRvcjtcclxuICBAVmlld0NoaWxkKE1hdFBhZ2luYXRvcikgc2V0IHBhZ2luYXRvcihwYWdpbmF0b3I6IE1hdFBhZ2luYXRvcikge1xyXG4gICAgaWYgKHBhZ2luYXRvciAmJiB0aGlzLiNwYWdpbmF0b3IgIT09IHBhZ2luYXRvcikge1xyXG4gICAgICB0aGlzLiNwYWdpbmF0b3IgPSBwYWdpbmF0b3I7XHJcbiAgICAgIHRoaXMuI3N1YnNjcmlwdGlvbi5hZGQocGFnaW5hdG9yLnBhZ2Uuc3Vic2NyaWJlKHRoaXMuc2VsZWN0UGFnZSkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQElucHV0KCkgc2V0IG9wdGlvbih2YWx1ZTogU2RHcmlkT3B0aW9uKSB7XHJcbiAgICB0aGlzLnNldE9wdGlvbih2YWx1ZSk7XHJcbiAgfVxyXG4gIHNlbGVjdGVkSXRlbTogYW55ID0gbnVsbDtcclxuICAjc3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xyXG4gIHJvd0hhbmRsZXIgPSB7XHJcbiAgICBjbGljazogKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbSA9IGl0ZW07XHJcbiAgICAgIGlmICh0aGlzLmdyaWRPcHRpb24ub25DbGlja1Jvdykge1xyXG4gICAgICAgIHRoaXMuZ3JpZE9wdGlvbi5vbkNsaWNrUm93KGl0ZW0pO1xyXG4gICAgICB9XHJcbiAgICB9LFxyXG4gICAgZGJsQ2xpY2s6IChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW0gPSBpdGVtO1xyXG4gICAgICBpZiAodGhpcy5ncmlkT3B0aW9uLm9uRGJsQ2xpY2tSb3cpIHtcclxuICAgICAgICB0aGlzLmdyaWRPcHRpb24ub25EYmxDbGlja1JvdyhpdGVtKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gIHByaXZhdGUgc2V0T3B0aW9uID0gKG9wdGlvbjogU2RHcmlkT3B0aW9uKSA9PiB7XHJcbiAgICBvcHRpb24gPSB0aGlzLmluaXRDb25maWd1cmF0aW9uKG9wdGlvbik7XHJcbiAgICBvcHRpb24gPSB0aGlzLmluaXRUcmFuc2xhdGUob3B0aW9uKTtcclxuICAgIGRlbGV0ZSB0aGlzLmdyaWRPcHRpb247XHJcbiAgICB0aGlzLmdyaWRPcHRpb24gPSBvcHRpb247XHJcbiAgICAvLyBMb+G6oWkgYuG7jyBuaOG7r25nIGNvbW1hbmQgYuG7iyDhuqluXHJcbiAgICB0aGlzLmdyaWRPcHRpb24uY29tbWFuZHMgPSB0aGlzLmdyaWRPcHRpb24uY29tbWFuZHMuZmlsdGVyKGNvbW1hbmQgPT4ge1xyXG4gICAgICBjb25zdCBoaWRkZW4gPSBjb21tYW5kLmhpZGRlbjtcclxuICAgICAgaWYgKGhpZGRlbiAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiAoaGlkZGVuKSA9PT0gJ2Jvb2xlYW4nKSB7XHJcbiAgICAgICAgICByZXR1cm4gIWhpZGRlbjtcclxuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiAoaGlkZGVuKSA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgcmV0dXJuICFoaWRkZW4oKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgdGhpcy5zZEdyaWRDb25maWcuc2V0T3B0aW9uKHtcclxuICAgICAga2V5OiBvcHRpb24ua2V5LFxyXG4gICAgICBwYWdlU2l6ZTogdGhpcy5ncmlkT3B0aW9uLnBhZ2luYXRlLnBhZ2VTaXplLFxyXG4gICAgICBjb2x1bW5zOiB0aGlzLmdyaWRPcHRpb24uY29sdW1uc1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLmluaXRFeHRlcm5hbEZpbHRlcigpO1xyXG4gICAgdGhpcy5yZXNpemUoKTtcclxuICAgIHRoaXMuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpbml0Q29uZmlndXJhdGlvbiA9IChvcHRpb246IFNkR3JpZE9wdGlvbikgPT4ge1xyXG4gICAgY29uc3QgZ3JpZENvbmZpZ3VyYXRpb24gPSB0aGlzLmNvbmZpZ3VyYXRpb247XHJcbiAgICAvLyBGaWx0ZXJcclxuICAgIGlmICghb3B0aW9uLmZpbHRlcj8udHlwZSAmJiBncmlkQ29uZmlndXJhdGlvbj8uZmlsdGVyPy50eXBlKSB7XHJcbiAgICAgIGlmICghb3B0aW9uLmZpbHRlcikge1xyXG4gICAgICAgIG9wdGlvbi5maWx0ZXIgPSB7XHJcbiAgICAgICAgICB0eXBlOiBncmlkQ29uZmlndXJhdGlvbi5maWx0ZXIudHlwZVxyXG4gICAgICAgIH07XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgb3B0aW9uLmZpbHRlci50eXBlID0gZ3JpZENvbmZpZ3VyYXRpb24uZmlsdGVyLnR5cGU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICghb3B0aW9uLmZpbHRlcj8uY29sdW1uSW5saW5lICYmIGdyaWRDb25maWd1cmF0aW9uPy5maWx0ZXI/LmNvbHVtbklubGluZSkge1xyXG4gICAgICBpZiAoIW9wdGlvbi5maWx0ZXIpIHtcclxuICAgICAgICBvcHRpb24uZmlsdGVyID0ge1xyXG4gICAgICAgICAgY29sdW1uSW5saW5lOiBncmlkQ29uZmlndXJhdGlvbi5maWx0ZXIuY29sdW1uSW5saW5lXHJcbiAgICAgICAgfTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBvcHRpb24uZmlsdGVyLmNvbHVtbklubGluZSA9IGdyaWRDb25maWd1cmF0aW9uLmZpbHRlci5jb2x1bW5JbmxpbmU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICghb3B0aW9uLmZpbHRlcj8ucXVpY2tGaWx0ZXJWaXNpYmlsaXR5ICYmIGdyaWRDb25maWd1cmF0aW9uPy5maWx0ZXI/LnF1aWNrRmlsdGVyVmlzaWJpbGl0eSkge1xyXG4gICAgICBpZiAoIW9wdGlvbi5maWx0ZXIpIHtcclxuICAgICAgICBvcHRpb24uZmlsdGVyID0ge1xyXG4gICAgICAgICAgcXVpY2tGaWx0ZXJWaXNpYmlsaXR5OiBncmlkQ29uZmlndXJhdGlvbi5maWx0ZXIucXVpY2tGaWx0ZXJWaXNpYmlsaXR5XHJcbiAgICAgICAgfTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBvcHRpb24uZmlsdGVyLnF1aWNrRmlsdGVyVmlzaWJpbGl0eSA9IGdyaWRDb25maWd1cmF0aW9uLmZpbHRlci5xdWlja0ZpbHRlclZpc2liaWxpdHk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIC8vIFRyYW5zbGF0ZVxyXG4gICAgb3B0aW9uLnRyYW5zbGF0ZSA9IG9wdGlvbi50cmFuc2xhdGUgPz8gZ3JpZENvbmZpZ3VyYXRpb24/LnRyYW5zbGF0ZTtcclxuICAgIHN3aXRjaCAob3B0aW9uLnR5cGUpIHtcclxuICAgICAgY2FzZSAnbG9jYWwnOlxyXG4gICAgICAgIHRoaXMuaGFuZGxlciA9IHRoaXMuaGFuZGxlckxvY2FsO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdkb3RuZXQnOlxyXG4gICAgICAgIHRoaXMuaGFuZGxlciA9IHRoaXMuaGFuZGxlckRvdG5ldDtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnY3VzdG9tJzpcclxuICAgICAgICB0aGlzLmhhbmRsZXIgPSBvcHRpb24uaGFuZGxlckN1c3RvbSB8fCBncmlkQ29uZmlndXJhdGlvbj8uaGFuZGxlckN1c3RvbTtcclxuICAgICAgICBpZiAoIXRoaXMuaGFuZGxlcikge1xyXG4gICAgICAgICAgdGhpcy5ub3RpZnlTZXJ2aWNlLm5vdGlmeS53YXJuaW5nKGBIYW5kbGVyIGN1c3RvbSB3YXMgbm90IGZvdW5kYCk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHsgLi4uZGVmYXVsdEdyaWRPcHRpb24sIC4uLm9wdGlvbiB9O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpbml0VHJhbnNsYXRlID0gKG9wdGlvbjogU2RHcmlkT3B0aW9uKSA9PiB7XHJcbiAgICBjb25zdCB7IHRyYW5zbGF0ZSB9ID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlO1xyXG4gICAgb3B0aW9uLmNvbW1hbmRzPy5mb3JFYWNoKGNvbW1hbmQgPT4ge1xyXG4gICAgICBpZiAoIW9wdGlvbi50cmFuc2xhdGUpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHR5cGVvZiAoY29tbWFuZC50aXRsZSkgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgY29tbWFuZC50aXRsZSA9IHRyYW5zbGF0ZShjb21tYW5kLnRpdGxlKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoJ2NoaWxkcmVuJyBpbiBjb21tYW5kKSB7XHJcbiAgICAgICAgY29tbWFuZC5jaGlsZHJlbj8uZm9yRWFjaChjaGlsZENvbW1hbmQgPT4ge1xyXG4gICAgICAgICAgaWYgKHR5cGVvZiAoY2hpbGRDb21tYW5kLnRpdGxlKSA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgICAgY2hpbGRDb21tYW5kLnRpdGxlID0gdHJhbnNsYXRlKGNoaWxkQ29tbWFuZC50aXRsZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgb3B0aW9uLmNvbHVtbnM/LmZvckVhY2goY29sdW1uID0+IHtcclxuICAgICAgaWYgKGNvbHVtbi50cmFuc2xhdGUgPT09IGZhbHNlKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChvcHRpb24udHJhbnNsYXRlIHx8IGNvbHVtbi50cmFuc2xhdGUpIHtcclxuICAgICAgICBjb2x1bW4udGl0bGUgPSB0cmFuc2xhdGUoY29sdW1uLnRpdGxlKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoY29sdW1uLnR5cGUgPT09ICdjaGlsZHJlbicpIHtcclxuICAgICAgICBjb2x1bW4/LmNoaWxkcmVuPy5mb3JFYWNoKGNoaWxkQ29sdW1uID0+IHtcclxuICAgICAgICAgIGlmIChjaGlsZENvbHVtbi50cmFuc2xhdGUgPT09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChvcHRpb24udHJhbnNsYXRlIHx8IGNoaWxkQ29sdW1uLnRyYW5zbGF0ZSkge1xyXG4gICAgICAgICAgICBjaGlsZENvbHVtbi50aXRsZSA9IHRyYW5zbGF0ZShjaGlsZENvbHVtbi50aXRsZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgb3B0aW9uLmZpbHRlcj8uZXh0ZXJuYWxGaWx0ZXJzPy5mb3JFYWNoKGV4dGVybmFsRmlsdGVyID0+IHtcclxuICAgICAgaWYgKG9wdGlvbi50cmFuc2xhdGUpIHtcclxuICAgICAgICBleHRlcm5hbEZpbHRlci50aXRsZSA9IHRyYW5zbGF0ZShleHRlcm5hbEZpbHRlci50aXRsZSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIG9wdGlvbjtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgQEluamVjdChHUklEX0NPTkZJRykgQE9wdGlvbmFsKCkgcHVibGljIGNvbmZpZ3VyYXRpb246IElHcmlkQ29uZmlndXJhdGlvbixcclxuICAgIHByaXZhdGUgcmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIGRldmljZVNlcnZpY2U6IERldmljZURldGVjdG9yU2VydmljZSxcclxuICAgIHByaXZhdGUgaGFuZGxlckxvY2FsOiBIYW5kbGVyTG9jYWwsXHJcbiAgICBwcml2YXRlIGhhbmRsZXJEb3RuZXQ6IEhhbmRsZXJEb3RuZXQsXHJcbiAgICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFNkVHJhbnNsYXRlU2VydmljZSxcclxuICAgIHByaXZhdGUgZGF0ZVBpcGU6IERhdGVQaXBlLFxyXG4gICAgcHJpdmF0ZSBsb2FkaW5nU2VydmljZTogU2RMb2FkaW5nU2VydmljZSxcclxuICAgIHByaXZhdGUgYXBpU2VydmljZTogU2RBcGlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBleHBvcnRTZXJ2aWNlOiBTZEV4cG9ydFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG5vdGlmeVNlcnZpY2U6IFNkTm90aWZ5U2VydmljZSxcclxuICAgIHByaXZhdGUgZWRpdG9yVmlzaWJsZVBpcGU6IEVkaXRvckhhbmRsZXJQaXBlKSB7XHJcbiAgICB0aGlzLmlzTW9iaWxlT3JUYWJsZXQgPSAhZGV2aWNlU2VydmljZS5pc0Rlc2t0b3AoKTtcclxuICAgIC8vIHRoaXMucmVmLmRldGFjaCgpO1xyXG4gICAgLy8gc2V0SW50ZXJ2YWwoKCkgPT4ge1xyXG4gICAgLy8gICB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICAgIC8vIH0sIDEwMDApO1xyXG4gICAgLy8gcmVmLmRldGFjaCgpO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgdGhpcy4jc3Vic2NyaXB0aW9uLmFkZCh0aGlzLmZpeGVkSGVhZGVycy5jaGFuZ2VzLnBpcGUoc3RhcnRXaXRoKFtdKSkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgY29uc3QgZml4ZWRIZWFkZXJzID0gdGhpcy5maXhlZEhlYWRlcnMudG9BcnJheSgpO1xyXG4gICAgICAgIGlmIChmaXhlZEhlYWRlcnMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgbGV0IGxlZnQgPSAkKGZpeGVkSGVhZGVyc1swXS5uYXRpdmVFbGVtZW50KS5vdXRlcldpZHRoKHRydWUpO1xyXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPCBmaXhlZEhlYWRlcnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgJChmaXhlZEhlYWRlcnNbaV0ubmF0aXZlRWxlbWVudCkuY3NzKHsgbGVmdCB9KTtcclxuICAgICAgICAgICAgbGVmdCArPSAkKGZpeGVkSGVhZGVyc1tpXS5uYXRpdmVFbGVtZW50KS5vdXRlcldpZHRoKHRydWUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSwgMTAwKTtcclxuICAgIH0pKTtcclxuICAgIHRoaXMuI3N1YnNjcmlwdGlvbi5hZGQobWVyZ2UodGhpcy5maXhlZEJvZGllcy5jaGFuZ2VzLCB0aGlzLmNlbGxGb290ZXJEZWZzLmNoYW5nZXMpLnBpcGUoc3RhcnRXaXRoKHt9KSkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgY29uc3QgZml4ZWRCb2RpZXMgPSB0aGlzLmZpeGVkQm9kaWVzLnRvQXJyYXkoKTtcclxuICAgICAgICBpZiAoZml4ZWRCb2RpZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgY29uc3QgZml4ZWRQZXJSb3cgPSB0aGlzLmZpeGVkQm9kaWVzLmxlbmd0aCAvICh0aGlzLnZpZXdJdGVtcy5sZW5ndGggKyB0aGlzLiNudW1iZXJPZkZvb3RlclJvd3MpO1xyXG4gICAgICAgICAgbGV0IGxlZnQgPSAkKGZpeGVkQm9kaWVzWzBdLm5hdGl2ZUVsZW1lbnQpLm91dGVyV2lkdGgodHJ1ZSk7XHJcbiAgICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8IGZpeGVkQm9kaWVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmIChpICUgZml4ZWRQZXJSb3cgPT09IDApIHtcclxuICAgICAgICAgICAgICBsZWZ0ID0gMDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAkKGZpeGVkQm9kaWVzW2ldLm5hdGl2ZUVsZW1lbnQpLmNzcyh7IGxlZnQgfSk7XHJcbiAgICAgICAgICAgIGxlZnQgKz0gJChmaXhlZEJvZGllc1tpXS5uYXRpdmVFbGVtZW50KS5vdXRlcldpZHRoKHRydWUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBmaXhlZEhlYWRlcnMgPSB0aGlzLmZpeGVkSGVhZGVycy50b0FycmF5KCk7XHJcbiAgICAgICAgaWYgKGZpeGVkSGVhZGVycy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICBsZXQgbGVmdCA9ICQoZml4ZWRIZWFkZXJzWzBdLm5hdGl2ZUVsZW1lbnQpLm91dGVyV2lkdGgodHJ1ZSk7XHJcbiAgICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8IGZpeGVkSGVhZGVycy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAkKGZpeGVkSGVhZGVyc1tpXS5uYXRpdmVFbGVtZW50KS5jc3MoeyBsZWZ0IH0pO1xyXG4gICAgICAgICAgICBsZWZ0ICs9ICQoZml4ZWRIZWFkZXJzW2ldLm5hdGl2ZUVsZW1lbnQpLm91dGVyV2lkdGgodHJ1ZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9LCAxMDApO1xyXG4gICAgfSkpO1xyXG4gICAgdGhpcy4jc3Vic2NyaXB0aW9uLmFkZCh0aGlzLmNlbGxEZWZzLmNoYW5nZXMucGlwZShzdGFydFdpdGgoW10pKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICB0aGlzLmNlbGxEZWYgPSB7fTtcclxuICAgICAgZm9yIChjb25zdCBjZWxsRGVmIG9mIHRoaXMuY2VsbERlZnMpIHtcclxuICAgICAgICBpZiAoY2VsbERlZi5zZENlbGxEZWYpIHtcclxuICAgICAgICAgIHRoaXMuY2VsbERlZltjZWxsRGVmLnNkQ2VsbERlZl0gPSBjZWxsRGVmO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSkpO1xyXG4gICAgdGhpcy4jc3Vic2NyaXB0aW9uLmFkZCh0aGlzLmNlbGxFZGl0b3JEZWZzLmNoYW5nZXMucGlwZShzdGFydFdpdGgoW10pKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICB0aGlzLmNlbGxFZGl0b3JEZWYgPSB7fTtcclxuICAgICAgZm9yIChjb25zdCBjZWxsRWRpdG9yRGVmIG9mIHRoaXMuY2VsbEVkaXRvckRlZnMpIHtcclxuICAgICAgICBpZiAoY2VsbEVkaXRvckRlZi5zZENlbGxFZGl0b3JEZWYpIHtcclxuICAgICAgICAgIHRoaXMuY2VsbEVkaXRvckRlZltjZWxsRWRpdG9yRGVmLnNkQ2VsbEVkaXRvckRlZl0gPSBjZWxsRWRpdG9yRGVmO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSkpO1xyXG4gICAgdGhpcy4jc3Vic2NyaXB0aW9uLmFkZCh0aGlzLmNlbGxGb290ZXJEZWZzLmNoYW5nZXMucGlwZShzdGFydFdpdGgoW10pKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICB0aGlzLmNlbGxGb290ZXJEZWYgPSB7fTtcclxuICAgICAgdGhpcy4jbnVtYmVyT2ZGb290ZXJSb3dzID0gMDtcclxuICAgICAgZm9yIChjb25zdCBjZWxsRm9vdGVyRGVmIG9mIHRoaXMuY2VsbEZvb3RlckRlZnMpIHtcclxuICAgICAgICBpZiAoY2VsbEZvb3RlckRlZi5zZENlbGxGb290ZXJEZWYpIHtcclxuICAgICAgICAgIGlmICghdGhpcy5jZWxsRm9vdGVyRGVmW2NlbGxGb290ZXJEZWYuc2RDZWxsRm9vdGVyRGVmXSkge1xyXG4gICAgICAgICAgICB0aGlzLmNlbGxGb290ZXJEZWZbY2VsbEZvb3RlckRlZi5zZENlbGxGb290ZXJEZWZdID0gW107XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmNlbGxGb290ZXJEZWZbY2VsbEZvb3RlckRlZi5zZENlbGxGb290ZXJEZWZdLnB1c2goY2VsbEZvb3RlckRlZik7XHJcbiAgICAgICAgICBpZiAodGhpcy5jZWxsRm9vdGVyRGVmW2NlbGxGb290ZXJEZWYuc2RDZWxsRm9vdGVyRGVmXS5sZW5ndGggPiB0aGlzLiNudW1iZXJPZkZvb3RlclJvd3MpIHtcclxuICAgICAgICAgICAgdGhpcy4jbnVtYmVyT2ZGb290ZXJSb3dzID0gdGhpcy5jZWxsRm9vdGVyRGVmW2NlbGxGb290ZXJEZWYuc2RDZWxsRm9vdGVyRGVmXS5sZW5ndGg7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZm9vdGVyUm93cyA9IEFycmF5KHRoaXMuI251bWJlck9mRm9vdGVyUm93cykuZmlsbCgwKS5tYXAoKHYsIGkpID0+IGkpO1xyXG4gICAgfSkpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLiNzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIHJlbG9hZCA9IGFzeW5jIChncmlkSXRlbXM/OiBhbnlbXSkgPT4ge1xyXG4gICAgaWYgKHRoaXMuaXNMb2FkaW5nKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcclxuICAgIGNvbnN0IGN1cnJlbnRQYWdlID0gKHRoaXMuI3BhZ2luYXRvcj8ucGFnZUluZGV4IHx8IDApICsgMTtcclxuICAgIGNvbnN0IHBhZ2VTaXplID0gdGhpcy4jcGFnaW5hdG9yPy5wYWdlU2l6ZSB8fCA1MDtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmICh0aGlzLmdyaWRPcHRpb24udHlwZSAhPT0gJ2xvY2FsJykge1xyXG4gICAgICAgIGNvbnN0IGhhbmRsZXIgPSB0aGlzLmhhbmRsZXIgYXMgSUhhbmRsZXJTZXJ2ZXI7XHJcbiAgICAgICAgY29uc3QgZmlsdGVyID0gaGFuZGxlci5tYXBSZXF1ZXN0KHRoaXMuZ2V0RmlsdGVySW5mbyhjdXJyZW50UGFnZSwgcGFnZVNpemUpKTtcclxuICAgICAgICBpZiAodGhpcy5ncmlkT3B0aW9uLm1ldGhvZCA9PT0gJ0dFVCcpIHtcclxuICAgICAgICAgIGNvbnN0IHF1ZXJ5U3RyaW5nID0gT2JqZWN0LmtleXMoZmlsdGVyKS5maWx0ZXIoa2V5ID0+IGZpbHRlcltrZXldICE9PSBudWxsICYmIGZpbHRlcltrZXldICE9PSB1bmRlZmluZWQpXHJcbiAgICAgICAgICAgIC5tYXAoa2V5ID0+IGtleSArICc9JyArIGZpbHRlcltrZXldKS5qb2luKCcmJyk7XHJcbiAgICAgICAgICBjb25zdCB1cmwgPSB0aGlzLmdyaWRPcHRpb24udXJsLmluY2x1ZGVzKCc/JykgPyBgJHt0aGlzLmdyaWRPcHRpb24udXJsfSYke3F1ZXJ5U3RyaW5nfWAgOiBgJHt0aGlzLmdyaWRPcHRpb24udXJsfT8ke3F1ZXJ5U3RyaW5nfWA7XHJcbiAgICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuYXBpU2VydmljZS5nZXQodXJsKTtcclxuICAgICAgICAgIGNvbnN0IHsgaXRlbXMsIHRvdGFsIH0gPSBoYW5kbGVyLm1hcFJlc3BvbnNlKHJlc3BvbnNlKTtcclxuICAgICAgICAgIHRoaXMuaXRlbXMgPSBpdGVtcztcclxuICAgICAgICAgIHRoaXMudG90YWwgPSB0b3RhbDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmFwaVNlcnZpY2UucG9zdCh0aGlzLmdyaWRPcHRpb24udXJsLCBmaWx0ZXIpO1xyXG4gICAgICAgICAgY29uc3QgeyBpdGVtcywgdG90YWwgfSA9IGhhbmRsZXIubWFwUmVzcG9uc2UocmVzcG9uc2UpO1xyXG4gICAgICAgICAgdGhpcy5pdGVtcyA9IGl0ZW1zO1xyXG4gICAgICAgICAgdGhpcy50b3RhbCA9IHRvdGFsO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBjb25zdCBoYW5kbGVyID0gdGhpcy5oYW5kbGVyIGFzIElIYW5kbGVyTG9jYWw7XHJcbiAgICAgICAgaWYgKHR5cGVvZiAodGhpcy5ncmlkT3B0aW9uLml0ZW1zKSA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZ3JpZEl0ZW1zKSkge1xyXG4gICAgICAgICAgICB0aGlzLmxvY2FsSXRlbXMgPSBncmlkSXRlbXM7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjb25zdCByZXN1bHRzID0gdGhpcy5ncmlkT3B0aW9uLml0ZW1zKCk7XHJcbiAgICAgICAgICAgIGlmIChyZXN1bHRzIGluc3RhbmNlb2YgUHJvbWlzZSkge1xyXG4gICAgICAgICAgICAgIHRoaXMubG9jYWxJdGVtcyA9IGF3YWl0IHJlc3VsdHM7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5sb2NhbEl0ZW1zID0gcmVzdWx0cztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmdyaWRPcHRpb24uaXRlbXMgPSBncmlkSXRlbXMgfHwgdGhpcy5ncmlkT3B0aW9uLml0ZW1zO1xyXG4gICAgICAgICAgdGhpcy5sb2NhbEl0ZW1zID0gdGhpcy5ncmlkT3B0aW9uLml0ZW1zO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCByZXNwb25zZSA9IGhhbmRsZXIuZmlsdGVyKHRoaXMubG9jYWxJdGVtcywge1xyXG4gICAgICAgICAgY3VzdG9tRmlsdGVyOiB0aGlzLmdyaWRPcHRpb24uZmlsdGVyLmN1c3RvbUZpbHRlcixcclxuICAgICAgICAgIHJhd0ZpbHRlcjogdGhpcy5maWx0ZXIsXHJcbiAgICAgICAgICBjb2x1bW5zOiB0aGlzLmdyaWRPcHRpb24uY29sdW1ucyxcclxuICAgICAgICAgIHJhd0V4dGVybmFsRmlsdGVyOiB0aGlzLmV4dGVybmFsRmlsdGVyLFxyXG4gICAgICAgICAgZXh0ZXJuYWxGaWx0ZXJzOiB0aGlzLmdyaWRPcHRpb24uZmlsdGVyPy5leHRlcm5hbEZpbHRlcnMsXHJcbiAgICAgICAgICBvcmRlckJ5OiB0aGlzLm9yZGVyQnksXHJcbiAgICAgICAgICBvcmRlckRpcmVjdGlvbjogdGhpcy5vcmRlckRpcmVjdGlvbixcclxuICAgICAgICAgIHBhZ2VOdW1iZXI6IGN1cnJlbnRQYWdlLFxyXG4gICAgICAgICAgcGFnZVNpemVcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLml0ZW1zID0gcmVzcG9uc2UuaXRlbXM7XHJcbiAgICAgICAgdGhpcy50b3RhbCA9IHJlc3BvbnNlLnRvdGFsO1xyXG4gICAgICAgIFxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuaXRlbXMuZm9yRWFjaChpdGVtID0+IGl0ZW0ub3JpZ2luSXRlbSA9IHsgLi4uaXRlbSB9KTtcclxuICAgICAgdGhpcy5pc0NoZWNrZWRBbGwgPSBmYWxzZTtcclxuICAgICAgdGhpcy4jc2V0U2VsZWN0ZWRJdGVtcygpO1xyXG4gICAgICBhd2FpdCB0aGlzLmdyaWRPcHRpb24/Lm9uUmVsb2FkQ29tcGxldGVkPy4odGhpcy5pdGVtcyk7XHJcbiAgICAgIHRoaXMuZ2VuZXJhdGVWaWV3SXRlbXMoKTtcclxuICAgICAgdGhpcy5nZW5lcmF0ZUVkaXRvckhhbmRsZXJzKCk7XHJcbiAgICAgICQodGhpcy5ncmlkQm9keS5uYXRpdmVFbGVtZW50KS5zY3JvbGxUb3AoMCk7XHJcbiAgICAgIGlmIChjdXJyZW50UGFnZSA+IDEgJiYgIXRoaXMudmlld0l0ZW1zPy5sZW5ndGgpIHtcclxuICAgICAgICB0aGlzLiNwYWdpbmF0b3IuZmlyc3RQYWdlKCk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICB0aGlzLm5vdGlmeVNlcnZpY2UuaGFuZGxlLmVycm9yKGVycm9yKTtcclxuICAgIH0gZmluYWxseSB7XHJcbiAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZWxvYWRJdGVtKGRhdGE6IHsgW2lkOiBzdHJpbmddOiBhbnkgfSkge1xyXG4gICAgT2JqZWN0LmtleXMoZGF0YSkuZm9yRWFjaChpZCA9PiB7XHJcbiAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLml0ZW1zLmZpbmQoZSA9PiAhIWUuaWQgJiYgZS5pZCA9PT0gaWQpO1xyXG4gICAgICBpZiAoaXRlbSkge1xyXG4gICAgICAgIHRoaXMuZ3JpZE9wdGlvbi5jb2x1bW5zLmZvckVhY2goY29sdW1uID0+IHtcclxuICAgICAgICAgIGlmIChpdGVtW2NvbHVtbi5maWVsZF0gIT09IHVuZGVmaW5lZCAmJiBkYXRhW2lkXVtjb2x1bW4uZmllbGRdICE9PSB1bmRlZmluZWQgJiYgaXRlbVtjb2x1bW4uZmllbGRdICE9PSBkYXRhW2lkXVtjb2x1bW4uZmllbGRdKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYmxpbmsoaXRlbSwgY29sdW1uLmZpZWxkKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICBPYmplY3QuYXNzaWduKGl0ZW0sIGRhdGFbaWRdKTtcclxuICAgICAgICB0aGlzLmdlbmVyYXRlRWRpdG9ySGFubGRlcihpdGVtKTtcclxuICAgICAgICB0aGlzLnN0b3BCbGluaygpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYmxpbmsoaXRlbTogR3JpZEl0ZW0sIGZpZWxkOiBzdHJpbmcpIHtcclxuICAgIGl0ZW0uYmxpbmtlciA9IGl0ZW0uYmxpbmtlciB8fCB7fTtcclxuICAgIGl0ZW0uYmxpbmtlcltmaWVsZF0gPSB0cnVlO1xyXG4gIH1cclxuICBwcml2YXRlIHN0b3BCbGluaygpIHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLnZpZXdJdGVtcy5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgIGl0ZW0uYmxpbmtlciA9IHt9O1xyXG4gICAgICB9KTtcclxuICAgIH0sIDE1MDApO1xyXG4gIH1cclxuXHJcbiAgZGV0ZWN0Q2hhbmdlcyA9ICgpID0+IHtcclxuICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZW5lcmF0ZVZpZXdJdGVtcygpIHtcclxuICAgIGNvbnN0IGN1cnJlbnRQYWdlID0gKHRoaXMuI3BhZ2luYXRvcj8ucGFnZUluZGV4IHx8IDApICsgMTtcclxuICAgIGNvbnN0IHBhZ2VTaXplID0gdGhpcy4jcGFnaW5hdG9yPy5wYWdlU2l6ZSB8fCA1MDtcclxuICAgIGRlbGV0ZSB0aGlzLnZpZXdJdGVtcztcclxuICAgIGlmICh0aGlzLmdyaWRPcHRpb24udHlwZSA9PT0gJ2xvY2FsJykge1xyXG4gICAgICB0aGlzLnZpZXdJdGVtcyA9IHRoaXMuaXRlbXMuZmlsdGVyKChpdGVtLCBpbmRleCkgPT4ge1xyXG4gICAgICAgIHJldHVybiBpbmRleCA+PSAoY3VycmVudFBhZ2UgLSAxKSAqIHBhZ2VTaXplXHJcbiAgICAgICAgICAmJiBpbmRleCA8IGN1cnJlbnRQYWdlICogcGFnZVNpemU7XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy52aWV3SXRlbXMgPSB0aGlzLml0ZW1zO1xyXG4gICAgfVxyXG4gICAgdGhpcy52aWV3SXRlbXMuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgaXRlbS5ibGlua2VyID0gaXRlbS5ibGlua2VyIHx8IHt9O1xyXG4gICAgICBpdGVtLnN1YkluZm9ybWF0aW9uID0gaXRlbS5zdWJJbmZvcm1hdGlvbiB8fCB7fTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGVkaXRlZEl0ZW1zKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuaXRlbXMuZmlsdGVyKGl0ZW0gPT4ge1xyXG4gICAgICBpZiAoIWl0ZW0ub3JpZ2luSXRlbSkge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChPYmplY3Qua2V5cyhpdGVtLm9yaWdpbkl0ZW0pLnNvbWUoa2V5ID0+IGl0ZW0ub3JpZ2luSXRlbVtrZXldICE9PSBpdGVtW2tleV0pKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfSkubWFwKGl0ZW0gPT4ge1xyXG4gICAgICBjb25zdCB7IHRlbXBvcmFyeSxcclxuICAgICAgICBvcmlnaW5JdGVtLFxyXG4gICAgICAgIGVkaXRvckhhbmRsZXIsXHJcbiAgICAgICAgZWRpdGluZ1N0YXR1cyxcclxuICAgICAgICBpc0NoZWNrZWQsXHJcbiAgICAgICAgc3ViSW5mb3JtYXRpb24sXHJcbiAgICAgICAgYmxpbmtlcixcclxuICAgICAgICAuLi5yZXN1bHQgfSA9IGl0ZW07XHJcbiAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHNlbGVjdFBhZ2UgPSAoKSA9PiB7XHJcbiAgICBpZiAodGhpcy5ncmlkT3B0aW9uLnR5cGUgPT09ICdsb2NhbCcpIHtcclxuICAgICAgdGhpcy5yZWxvYWQodGhpcy5sb2NhbEl0ZW1zKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMucmVsb2FkKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB1cGRhdGVGaWx0ZXIgPSAocGFyYW0/OiB7IGZpbHRlcjogYW55LCBleHRlcm5hbEZpbHRlcjogYW55IH0pID0+IHtcclxuICAgIHRoaXMuZmlsdGVyID0gcGFyYW0/LmZpbHRlciB8fCB0aGlzLmZpbHRlcjtcclxuICAgIHRoaXMuZXh0ZXJuYWxGaWx0ZXIgPSBwYXJhbT8uZXh0ZXJuYWxGaWx0ZXIgfHwgdGhpcy5leHRlcm5hbEZpbHRlcjtcclxuICAgIHRoaXMuI3BhZ2luYXRvci5wYWdlSW5kZXggPSAwO1xyXG4gICAgaWYgKHRoaXMuZ3JpZE9wdGlvbi50eXBlID09PSAnbG9jYWwnKSB7XHJcbiAgICAgIHRoaXMucmVsb2FkKHRoaXMubG9jYWxJdGVtcyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnJlbG9hZCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0SXRlbXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5pdGVtcztcclxuICB9XHJcblxyXG4gIC8vI3JlZ2lvbiBDaGVja2FibGVcclxuXHJcbiAgI3NldFNlbGVjdGVkSXRlbXMgPSAoKSA9PiB7XHJcbiAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSB0aGlzLml0ZW1zLmZpbHRlcihpdGVtID0+IGl0ZW0uaXNDaGVja2VkKVxyXG4gICAgICAubWFwKGl0ZW0gPT4ge1xyXG4gICAgICAgIGNvbnN0IHsgdGVtcG9yYXJ5LFxyXG4gICAgICAgICAgb3JpZ2luSXRlbSxcclxuICAgICAgICAgIGVkaXRvckhhbmRsZXIsXHJcbiAgICAgICAgICBlZGl0aW5nU3RhdHVzLFxyXG4gICAgICAgICAgaXNDaGVja2VkLFxyXG4gICAgICAgICAgc3ViSW5mb3JtYXRpb24sXHJcbiAgICAgICAgICBibGlua2VyLFxyXG4gICAgICAgICAgLi4ucmVzdWx0IH0gPSBpdGVtO1xyXG4gICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb25DaGVjayA9IChpdGVtOiBHcmlkSXRlbSwgaXNDaGVja2JveD86IGJvb2xlYW4pID0+IHtcclxuICAgIGlmICghdGhpcy5ncmlkT3B0aW9uLmNoZWNrYWJsZSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAoIWlzQ2hlY2tib3gpIHtcclxuICAgICAgaXRlbS5pc0NoZWNrZWQgPSAhaXRlbS5pc0NoZWNrZWQ7XHJcbiAgICB9XHJcbiAgICB0aGlzLmlzQ2hlY2tlZEFsbCA9IHRoaXMuaXRlbXMubGVuZ3RoID09PSB0aGlzLml0ZW1zLmZpbHRlcihlID0+IGUuaXNDaGVja2VkKS5sZW5ndGg7XHJcbiAgICB0aGlzLmdyaWRPcHRpb24ub25DaGVjaz8uKHRoaXMuaXRlbXMuZmlsdGVyKGUgPT4gZS5pc0NoZWNrZWQpLCBpdGVtKTtcclxuICAgIHRoaXMuI3NldFNlbGVjdGVkSXRlbXMoKTtcclxuICB9XHJcblxyXG4gIGNoZWNrQWxsKGlzQ2hlY2tlZEFsbDogYm9vbGVhbikge1xyXG4gICAgdGhpcy5pc0NoZWNrZWRBbGwgPSBpc0NoZWNrZWRBbGw7XHJcbiAgICB0aGlzLml0ZW1zLmZvckVhY2goaXRlbSA9PiBpdGVtLmlzQ2hlY2tlZCA9IHRoaXMuaXNDaGVja2VkQWxsKTtcclxuICAgIGlmICh0aGlzLmdyaWRPcHRpb24ub25DaGVjaykge1xyXG4gICAgICB0aGlzLmdyaWRPcHRpb24ub25DaGVjayh0aGlzLml0ZW1zLmZpbHRlcihpdGVtID0+IGl0ZW0uaXNDaGVja2VkKSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLiNzZXRTZWxlY3RlZEl0ZW1zKCk7XHJcbiAgfVxyXG5cclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgLy8jcmVnaW9uIFNvcnRcclxuICBzb3J0ID0gKGNvbHVtbjogU2RHcmlkQ29sdW1uKSA9PiB7XHJcbiAgICBpZiAoY29sdW1uLnR5cGUgPT09ICdjaGlsZHJlbicgfHwgY29sdW1uLnR5cGUgPT09ICdpbWFnZScpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3Qgc29ydGFibGUgPSB0aGlzLmdyaWRPcHRpb24uc29ydGFibGUgPz8gdHJ1ZTtcclxuICAgIGNvbnN0IGNvbHVtblNvcnRhYmxlID0gY29sdW1uLnNvcnRhYmxlID8/IHRydWU7XHJcbiAgICBpZiAoIXNvcnRhYmxlIHx8ICFjb2x1bW5Tb3J0YWJsZSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5vcmRlckJ5ID09PSBjb2x1bW4uZmllbGQpIHtcclxuICAgICAgdGhpcy5vcmRlckRpcmVjdGlvbiA9IHRoaXMub3JkZXJEaXJlY3Rpb24gPT09ICdBU0MnID8gJ0RFU0MnIDogJ0FTQyc7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLm9yZGVyQnkgPSBjb2x1bW4uZmllbGQ7XHJcbiAgICAgIHRoaXMub3JkZXJEaXJlY3Rpb24gPSAnQVNDJztcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmdyaWRPcHRpb24udHlwZSA9PT0gJ2xvY2FsJykge1xyXG4gICAgICB0aGlzLnJlbG9hZCh0aGlzLmxvY2FsSXRlbXMpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5yZWxvYWQoKTtcclxuICAgIH1cclxuICB9XHJcbiAgLy8jZW5kcmVnaW9uXHJcblxyXG4gIC8vICNyZWdpb24gUmVzaXplIEdyaWRcclxuICBwcml2YXRlIHJlc2l6ZSgpIHtcclxuICAgIHRoaXMuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgaWYgKHRoaXMuZ3JpZE9wdGlvbi5oZWlnaHQpIHtcclxuICAgICAgdGhpcy5ncmlkQm9keS5uYXRpdmVFbGVtZW50LnN0eWxlLmhlaWdodCA9IHRoaXMuZ3JpZE9wdGlvbi5oZWlnaHQ7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmdyaWRCb2R5Lm5hdGl2ZUVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gYCR7d2luZG93LmlubmVySGVpZ2h0IC0gMzAwfXB4YDtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgLy8gTOG6pXkgb2Zmc2V0IHRvcCDEkeG7gyDEkWnhu4F1IGNo4buJbmgga8OtY2ggdGjGsOG7m2MgR3JpZCB24burYSB24bubaSBtw6BuIGjDrG5oXHJcbiAgICAgICAgY29uc3QgdG9wID0gdGhpcy5ncmlkQm9keS5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcDtcclxuICAgICAgICAvLyBjb25zdCB0b3AgPSAkKHRoaXMuZ3JpZEJvZHkubmF0aXZlRWxlbWVudCkub2Zmc2V0KCkudG9wO1xyXG4gICAgICAgIGNvbnN0IGJvdHRvbSA9IHRoaXMuZ3JpZE9wdGlvbi5oaWRlRm9vdGVyID8gMCA6ICh0aGlzLmlzTW9iaWxlT3JUYWJsZXQgPyA0NSA6IDU1KTtcclxuICAgICAgICBjb25zdCBoZWlnaHQgPSB3aW5kb3cuaW5uZXJIZWlnaHQgLSB0b3AgLSBib3R0b207XHJcbiAgICAgICAgdGhpcy5ncmlkQm9keS5uYXRpdmVFbGVtZW50LnN0eWxlLmhlaWdodCA9IGAke2hlaWdodH1weGA7XHJcbiAgICAgIH0sIDApO1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAvLyBM4bqleSBvZmZzZXQgdG9wIMSR4buDIMSRaeG7gXUgY2jhu4luaCBrw61jaCB0aMaw4bubYyBHcmlkIHbhu6thIHbhu5tpIG3DoG4gaMOsbmhcclxuICAgICAgICBjb25zdCB0b3AgPSB0aGlzLmdyaWRCb2R5Lm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wO1xyXG4gICAgICAgIC8vIGNvbnN0IHRvcCA9ICQodGhpcy5ncmlkQm9keS5uYXRpdmVFbGVtZW50KS5vZmZzZXQoKS50b3A7XHJcbiAgICAgICAgY29uc3QgYm90dG9tID0gdGhpcy5ncmlkT3B0aW9uLmhpZGVGb290ZXIgPyAwIDogKHRoaXMuaXNNb2JpbGVPclRhYmxldCA/IDQ1IDogNTUpO1xyXG4gICAgICAgIGNvbnN0IGhlaWdodCA9IHdpbmRvdy5pbm5lckhlaWdodCAtIHRvcCAtIGJvdHRvbTtcclxuICAgICAgICB0aGlzLmdyaWRCb2R5Lm5hdGl2ZUVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gYCR7aGVpZ2h0fXB4YDtcclxuICAgICAgfSwgMjAwKTtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgLy8gTOG6pXkgb2Zmc2V0IHRvcCDEkeG7gyDEkWnhu4F1IGNo4buJbmgga8OtY2ggdGjGsOG7m2MgR3JpZCB24burYSB24bubaSBtw6BuIGjDrG5oXHJcbiAgICAgICAgY29uc3QgdG9wID0gdGhpcy5ncmlkQm9keS5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcDtcclxuICAgICAgICAvLyBjb25zdCB0b3AgPSAkKHRoaXMuZ3JpZEJvZHkubmF0aXZlRWxlbWVudCkub2Zmc2V0KCkudG9wO1xyXG4gICAgICAgIGNvbnN0IGJvdHRvbSA9IHRoaXMuZ3JpZE9wdGlvbi5oaWRlRm9vdGVyID8gMCA6ICh0aGlzLmlzTW9iaWxlT3JUYWJsZXQgPyA0NSA6IDU1KTtcclxuICAgICAgICBjb25zdCBoZWlnaHQgPSB3aW5kb3cuaW5uZXJIZWlnaHQgLSB0b3AgLSBib3R0b207XHJcbiAgICAgICAgdGhpcy5ncmlkQm9keS5uYXRpdmVFbGVtZW50LnN0eWxlLmhlaWdodCA9IGAke2hlaWdodH1weGA7XHJcbiAgICAgIH0sIDUwMCk7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIC8vIEzhuqV5IG9mZnNldCB0b3AgxJHhu4MgxJFp4buBdSBjaOG7iW5oIGvDrWNoIHRoxrDhu5tjIEdyaWQgduG7q2EgduG7m2kgbcOgbiBow6xuaFxyXG4gICAgICAgIGNvbnN0IHRvcCA9IHRoaXMuZ3JpZEJvZHkubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3A7XHJcbiAgICAgICAgLy8gY29uc3QgdG9wID0gJCh0aGlzLmdyaWRCb2R5Lm5hdGl2ZUVsZW1lbnQpLm9mZnNldCgpLnRvcDtcclxuICAgICAgICBjb25zdCBib3R0b20gPSB0aGlzLmdyaWRPcHRpb24uaGlkZUZvb3RlciA/IDAgOiAodGhpcy5pc01vYmlsZU9yVGFibGV0ID8gNDUgOiA1NSk7XHJcbiAgICAgICAgY29uc3QgaGVpZ2h0ID0gd2luZG93LmlubmVySGVpZ2h0IC0gdG9wIC0gYm90dG9tO1xyXG4gICAgICAgIHRoaXMuZ3JpZEJvZHkubmF0aXZlRWxlbWVudC5zdHlsZS5oZWlnaHQgPSBgJHtoZWlnaHR9cHhgO1xyXG4gICAgICB9LCAxMDAwKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldEhlaWdodChoZWlnaHQ/OiBzdHJpbmcpIHtcclxuICAgIHRoaXMuZ3JpZE9wdGlvbi5oZWlnaHQgPSBoZWlnaHQ7XHJcbiAgICB0aGlzLnJlc2l6ZSgpO1xyXG4gIH1cclxuXHJcbiAgLy8gI2VuZHJlZ2lvblxyXG5cclxuICAvLyNyZWdpb24gSW1wb3J0LCBFeHBvcnQsIENvbmZpZ1xyXG5cclxuICBsb2FkQ29uZmlnKGNvbmZpZ1Jlc3VsdDogQ29uZmlnUmVzdWx0KSB7XHJcbiAgICB0aGlzLmdyaWRPcHRpb24ucGFnaW5hdGUucGFnZVNpemUgPSBjb25maWdSZXN1bHQucGFnZVNpemU7XHJcbiAgICB0aGlzLmdyaWRPcHRpb24uY29sdW1ucyA9IGNvbmZpZ1Jlc3VsdC5jb2x1bW5zO1xyXG4gICAgdGhpcy5maXhlZENvbHVtbnMgPSBjb25maWdSZXN1bHQuZml4ZWRDb2x1bW5zO1xyXG4gICAgdGhpcy5ub3JtYWxDb2x1bW5zID0gY29uZmlnUmVzdWx0Lm5vcm1hbENvbHVtbnM7XHJcbiAgICB0aGlzLmNvbHVtbnMgPSBbLi4udGhpcy5maXhlZENvbHVtbnMsIC4uLnRoaXMubm9ybWFsQ29sdW1uc107XHJcbiAgICB0aGlzLmluaXRGaWx0ZXIoKTtcclxuICAgIHRoaXMuaW5pdERpY3Rpb25hcnlDb2x1bW5WYWx1ZXMoKTtcclxuICAgIHRoaXMucmVsb2FkKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGluaXRGaWx0ZXIoKSB7XHJcbiAgICB0aGlzLmdyaWRPcHRpb24uY29sdW1ucy5mb3JFYWNoKGNvbHVtbiA9PiB7XHJcbiAgICAgIC8vIEfDoW4gZ2nDoSB0cuG7iyBmaWx0ZXIgbeG6t2MgxJHhu4tuaCBjaG8gdOG7q25nIGPhu5l0XHJcbiAgICAgIHRoaXMuZmlsdGVyW2NvbHVtbi5maWVsZF0gPSB0aGlzLmZpbHRlcltjb2x1bW4uZmllbGRdID8/ICcnO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGluaXREaWN0aW9uYXJ5Q29sdW1uVmFsdWVzKCkge1xyXG4gICAgdGhpcy5ncmlkT3B0aW9uLmNvbHVtbnMuZm9yRWFjaChjb2x1bW4gPT4ge1xyXG4gICAgICBpZiAoY29sdW1uLnR5cGUgPT09ICd2YWx1ZXMnKSB7XHJcbiAgICAgICAgY29sdW1uLmRpY3Rpb25hcnkgPSB7fTtcclxuICAgICAgICBpZiAoY29sdW1uLnZhbHVlcykge1xyXG4gICAgICAgICAgY29sdW1uLnZhbHVlcy5mb3JFYWNoKGUgPT4ge1xyXG4gICAgICAgICAgICBjb2x1bW4uZGljdGlvbmFyeVtlLnZhbHVlLnRvU3RyaW5nKCldID0ge1xyXG4gICAgICAgICAgICAgIHRleHQ6IGUudGV4dCxcclxuICAgICAgICAgICAgICBpY29uOiBlLmljb24sXHJcbiAgICAgICAgICAgICAgY29sb3I6IGUuY29sb3IsXHJcbiAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBlLmJhY2tncm91bmRDb2xvclxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmIChjb2x1bW4udHlwZSA9PT0gJ2NoaWxkcmVuJykge1xyXG4gICAgICAgIGNvbHVtbi5jaGlsZHJlbi5mb3JFYWNoKGNoaWxkQ29sdW1uID0+IHtcclxuICAgICAgICAgIGlmIChjaGlsZENvbHVtbi50eXBlID09PSAndmFsdWVzJykge1xyXG4gICAgICAgICAgICBjaGlsZENvbHVtbi5kaWN0aW9uYXJ5ID0ge307XHJcbiAgICAgICAgICAgIGlmIChjaGlsZENvbHVtbi52YWx1ZXMpIHtcclxuICAgICAgICAgICAgICBjaGlsZENvbHVtbi52YWx1ZXMuZm9yRWFjaChlID0+IHtcclxuICAgICAgICAgICAgICAgIGNoaWxkQ29sdW1uLmRpY3Rpb25hcnlbZS52YWx1ZS50b1N0cmluZygpXSA9IHtcclxuICAgICAgICAgICAgICAgICAgdGV4dDogZS50ZXh0LFxyXG4gICAgICAgICAgICAgICAgICBpY29uOiBlLmljb24sXHJcbiAgICAgICAgICAgICAgICAgIGNvbG9yOiBlLmNvbG9yLFxyXG4gICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IGUuYmFja2dyb3VuZENvbG9yXHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLy8jZW5kcmVnaW9uXHJcblxyXG4gIHByaXZhdGUgZ2VuZXJhdGVFZGl0b3JIYW5kbGVycygpIHtcclxuICAgIHRoaXMudmlld0l0ZW1zLmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgIHRoaXMuZ2VuZXJhdGVFZGl0b3JIYW5sZGVyKGl0ZW0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdlbmVyYXRlRWRpdG9ySGFubGRlcihpdGVtOiBHcmlkSXRlbSkge1xyXG4gICAgLy8gaXRlbS5lZGl0b3JIYW5kbGVyID0gaXRlbS5lZGl0b3JIYW5kbGVyIHx8IHt9O1xyXG4gICAgdGhpcy5lZGl0b3JWaXNpYmxlUGlwZS50cmFuc2Zvcm0obnVsbCwgaXRlbSwgdGhpcy5ncmlkT3B0aW9uKTtcclxuICB9XHJcbiAgdHJhY2tCeUlkKGluZGV4LCBpdGVtKSB7XHJcbiAgICByZXR1cm4gaXRlbS5pZDtcclxuICB9XHJcblxyXG4gIGdldCBpc0ZpbHRlcmluZygpIHtcclxuICAgIHJldHVybiBPYmplY3QudmFsdWVzKHRoaXMuZmlsdGVyKS5zb21lKHZhbHVlID0+ICEhdmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgb25GaWx0ZXJQb3B1cCgpIHtcclxuICAgIGNvbnN0IGYxID0gSlNPTi5zdHJpbmdpZnkodGhpcy5maWx0ZXIpO1xyXG4gICAgY29uc3QgZjIgPSBKU09OLnN0cmluZ2lmeSh0aGlzLmV4dGVybmFsRmlsdGVyKTtcclxuICAgIGNvbnN0IGZpbHRlciA9IEpTT04ucGFyc2UoZjEpO1xyXG4gICAgY29uc3QgZXh0ZXJuYWxGaWx0ZXIgPSBKU09OLnBhcnNlKGYyKTtcclxuICAgIHRoaXMuc2RHcmlkUG9wdXBGaWx0ZXIub3Blbih0aGlzLmZpeGVkQ29sdW1ucywgdGhpcy5ub3JtYWxDb2x1bW5zLCBmaWx0ZXIsIGV4dGVybmFsRmlsdGVyLCB0aGlzLmdyaWRPcHRpb24uZmlsdGVyPy5leHRlcm5hbEZpbHRlcnMpO1xyXG4gIH1cclxuXHJcbiAgY2xlYXJGaWx0ZXIgPSAoKSA9PiB7XHJcbiAgICB0aGlzLmZpbHRlciA9IHt9O1xyXG4gICAgdGhpcy5leHRlcm5hbEZpbHRlciA9IHt9O1xyXG4gICAgdGhpcy5pbml0RmlsdGVyKCk7XHJcbiAgICB0aGlzLmluaXRFeHRlcm5hbEZpbHRlcigpO1xyXG4gICAgaWYgKHRoaXMuc2RHcmlkUG9wdXBGaWx0ZXIpIHtcclxuICAgICAgdGhpcy5zZEdyaWRQb3B1cEZpbHRlci5maWx0ZXIgPSB0aGlzLmZpbHRlcjtcclxuICAgICAgdGhpcy5zZEdyaWRQb3B1cEZpbHRlci5leHRlcm5hbEZpbHRlciA9IHRoaXMuZXh0ZXJuYWxGaWx0ZXI7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkNsZWFyRmlsdGVyID0gKCkgPT4ge1xyXG4gICAgdGhpcy5jbGVhckZpbHRlcigpO1xyXG4gICAgdGhpcy5yZWxvYWQoKTtcclxuICB9XHJcblxyXG4gIGV4cGFuZE9yQ29sbGFwc2UgPSBhc3luYyAoZ3JpZEl0ZW06IEdyaWRJdGVtKSA9PiB7XHJcbiAgICBjb25zdCB7IHRlbXBvcmFyeSxcclxuICAgICAgb3JpZ2luSXRlbSxcclxuICAgICAgZWRpdG9ySGFuZGxlcixcclxuICAgICAgZWRpdGluZ1N0YXR1cyxcclxuICAgICAgaXNDaGVja2VkLFxyXG4gICAgICBzdWJJbmZvcm1hdGlvbixcclxuICAgICAgLi4uaXRlbSB9ID0gZ3JpZEl0ZW07XHJcbiAgICBpZiAoIXRoaXMuZ3JpZE9wdGlvbi5zdWJJbmZvcm1hdGlvbikge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAoZ3JpZEl0ZW0uc3ViSW5mb3JtYXRpb24/LmlzT3BlbmVkKSB7XHJcbiAgICAgIGdyaWRJdGVtLnN1YkluZm9ybWF0aW9uLmlzT3BlbmVkID0gZmFsc2U7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmdyaWRPcHRpb24uc3ViSW5mb3JtYXRpb24ubGF6eUxvYWRpbmcgJiYgIWdyaWRJdGVtLnN1YkluZm9ybWF0aW9uPy5pc0xvYWRlZCkge1xyXG4gICAgICBncmlkSXRlbS5zdWJJbmZvcm1hdGlvbi5pc0xvYWRpbmcgPSB0cnVlO1xyXG4gICAgICB0cnkge1xyXG4gICAgICAgIGdyaWRJdGVtLnN1YkluZm9ybWF0aW9uLnN1Ykl0ZW1zID0gYXdhaXQgdGhpcy5ncmlkT3B0aW9uLnN1YkluZm9ybWF0aW9uLm9uTG9hZChpdGVtKTtcclxuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoZ3JpZEl0ZW0uc3ViSW5mb3JtYXRpb24uc3ViSXRlbXMpKSB7XHJcbiAgICAgICAgICB0aGlzLm5vdGlmeVNlcnZpY2UuYWxlcnQud2FybmluZyhgRGF0YSBpcyBub3QgYW4gYXJyYXlgKTtcclxuICAgICAgICAgIGdyaWRJdGVtLnN1YkluZm9ybWF0aW9uLnN1Ykl0ZW1zID0gW107XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGdyaWRJdGVtLnN1YkluZm9ybWF0aW9uLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIGdyaWRJdGVtLnN1YkluZm9ybWF0aW9uLmlzTG9hZGVkID0gdHJ1ZTtcclxuICAgICAgICBncmlkSXRlbS5zdWJJbmZvcm1hdGlvbi5pc09wZW5lZCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9IGNhdGNoIChlcnIpIHtcclxuICAgICAgICB0aGlzLm5vdGlmeVNlcnZpY2UuaGFuZGxlLmVycm9yKGVycik7XHJcbiAgICAgICAgZ3JpZEl0ZW0uc3ViSW5mb3JtYXRpb24uaXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmdyaWRPcHRpb24uc3ViSW5mb3JtYXRpb24ubGF6eUxvYWRpbmcgPT09IGZhbHNlICYmICFncmlkSXRlbS5zdWJJbmZvcm1hdGlvbi5pc0xvYWRlZCkge1xyXG4gICAgICBncmlkSXRlbS5zdWJJbmZvcm1hdGlvbi5zdWJJdGVtcyA9IGdyaWRJdGVtW3RoaXMuZ3JpZE9wdGlvbi5zdWJJbmZvcm1hdGlvbi5maWVsZF07XHJcbiAgICAgIGlmICghQXJyYXkuaXNBcnJheShncmlkSXRlbS5zdWJJbmZvcm1hdGlvbi5zdWJJdGVtcykpIHtcclxuICAgICAgICB0aGlzLm5vdGlmeVNlcnZpY2UuYWxlcnQud2FybmluZyhgRGF0YSBpcyBub3QgYW4gYXJyYXlgKTtcclxuICAgICAgICBncmlkSXRlbS5zdWJJbmZvcm1hdGlvbi5zdWJJdGVtcyA9IFtdO1xyXG4gICAgICB9XHJcbiAgICAgIGdyaWRJdGVtLnN1YkluZm9ybWF0aW9uLmlzTG9hZGVkID0gdHJ1ZTtcclxuICAgICAgZ3JpZEl0ZW0uc3ViSW5mb3JtYXRpb24uaXNPcGVuZWQgPSB0cnVlO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBncmlkSXRlbS5zdWJJbmZvcm1hdGlvbi5pc09wZW5lZCA9IHRydWU7XHJcbiAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG4gIC8vI3JlZ2lvbiBFZGl0YWJsZVxyXG4gIG9uQ3JlYXRlID0gKCkgPT4ge1xyXG4gICAgY29uc3QgeyB0eXBlLCBlZGl0b3IsIGNvbHVtbnMgfSA9IHRoaXMuZ3JpZE9wdGlvbjtcclxuICAgIGlmICghZWRpdG9yPy5hZGRhYmxlKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IGl0ZW06IEdyaWRJdGVtID0ge307XHJcbiAgICAvLyBHw6FuIGdpw6EgdHLhu4sgbeG6t2MgxJHhu4tuaFxyXG4gICAgY29sdW1ucy5mb3JFYWNoKGNvbHVtbiA9PiB7XHJcbiAgICAgIGlmIChjb2x1bW4udHlwZSA9PT0gJ3ZhbHVlcycpIHtcclxuICAgICAgICBpdGVtW2NvbHVtbi5maWVsZF0gPSAnJztcclxuICAgICAgfSBlbHNlIGlmIChjb2x1bW4udHlwZSA9PT0gJ2Jvb2wnKSB7XHJcbiAgICAgICAgaXRlbVtjb2x1bW4uZmllbGRdID0gdHJ1ZTtcclxuICAgICAgfSBlbHNlIGlmIChjb2x1bW4udHlwZSA9PT0gJ251bWJlcicpIHtcclxuICAgICAgICBpdGVtW2NvbHVtbi5maWVsZF0gPSBudWxsO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIGVkaXRvci5vbkFkZD8uKGl0ZW0pO1xyXG4gICAgLy8gxJDGsGEgaXRlbSBsw6puIGTDsm5nIMSR4bqndSB0acOqbiBu4bq/dSB0eXBlIGtow6FjIHBvcHVwXHJcbiAgICBpZiAoZWRpdG9yLnR5cGUgIT09ICdwb3B1cCcpIHtcclxuICAgICAgaWYgKHR5cGUgPT09ICdsb2NhbCcpIHtcclxuICAgICAgICB0aGlzLml0ZW1zLnNwbGljZSgwLCAwLCBpdGVtKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnZpZXdJdGVtcy5zcGxpY2UoMCwgMCwgaXRlbSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLm9uVXBkYXRlKGl0ZW0sIGZhbHNlKTtcclxuICB9XHJcbiAgb25VcGRhdGUgPSAoaXRlbTogR3JpZEl0ZW0sIGlzTW9kaWZpZWQ/OiBib29sZWFuKSA9PiB7XHJcbiAgICBjb25zdCB7IGVkaXRvciwgY29sdW1ucyB9ID0gdGhpcy5ncmlkT3B0aW9uO1xyXG4gICAgaXRlbS5lZGl0aW5nU3RhdHVzID0gaXNNb2RpZmllZCA/ICd1cGRhdGUnIDogJ2NyZWF0ZSc7XHJcbiAgICBpdGVtLnRlbXBvcmFyeSA9IHsgLi4uaXRlbSB9O1xyXG4gICAgdGhpcy5nZW5lcmF0ZUVkaXRvckhhbmxkZXIoaXRlbSk7XHJcbiAgICBpZiAoZWRpdG9yLnR5cGUgPT09ICdwb3B1cCcpIHtcclxuICAgICAgdGhpcy5zZEdyaWRQb3B1cEVkaXRvci5vcGVuKGl0ZW0sIGNvbHVtbnMsIGlzTW9kaWZpZWQpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuICBvblNhdmUgPSBhc3luYyAoaXRlbTogR3JpZEl0ZW0pID0+IHtcclxuICAgIGNvbnN0IHsgZWRpdG9yIH0gPSB0aGlzLmdyaWRPcHRpb247XHJcbiAgICB0cnkge1xyXG4gICAgICBpdGVtLmVkaXRvckhhbmRsZXIuc2F2aW5nID0gdHJ1ZTtcclxuICAgICAgaWYgKGVkaXRvci52YWxpZGF0ZSkge1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGVkaXRvci52YWxpZGF0ZShpdGVtKTtcclxuICAgICAgICBpZiAocmVzdWx0IGluc3RhbmNlb2YgUHJvbWlzZSkge1xyXG4gICAgICAgICAgY29uc3QgbWVzc2FnZSA9IGF3YWl0IHJlc3VsdDtcclxuICAgICAgICAgIGlmIChtZXNzYWdlKSB7XHJcbiAgICAgICAgICAgIHRocm93IG1lc3NhZ2U7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgICAgICAgdGhyb3cgcmVzdWx0O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBpZiAoZWRpdG9yLm9uU2F2ZSkge1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGVkaXRvci5vblNhdmUoaXRlbSk7XHJcbiAgICAgICAgaWYgKHJlc3VsdCBpbnN0YW5jZW9mIFByb21pc2UpIHtcclxuICAgICAgICAgIGF3YWl0IHJlc3VsdDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChpdGVtLmVkaXRpbmdTdGF0dXMgPT09ICdjcmVhdGUnICYmIGVkaXRvci50eXBlID09PSAncG9wdXAnKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZ3JpZE9wdGlvbi50eXBlID09PSAnbG9jYWwnKSB7XHJcbiAgICAgICAgICB0aGlzLml0ZW1zLnNwbGljZSgwLCAwLCBpdGVtKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy52aWV3SXRlbXMuc3BsaWNlKDAsIDAsIGl0ZW0pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpdGVtLmVkaXRpbmdTdGF0dXMgPSB1bmRlZmluZWQ7XHJcbiAgICAgIHRoaXMuZ2VuZXJhdGVFZGl0b3JIYW5sZGVyKGl0ZW0pO1xyXG4gICAgfSBjYXRjaCAoZXJyKSB7XHJcbiAgICAgIHRoaXMubm90aWZ5U2VydmljZS5ub3RpZnkud2FybmluZyhlcnIpO1xyXG4gICAgfSBmaW5hbGx5IHtcclxuICAgICAgaXRlbS5lZGl0b3JIYW5kbGVyLnNhdmluZyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkNhbmNlbCA9IChpdGVtOiBHcmlkSXRlbSkgPT4ge1xyXG4gICAgY29uc3QgeyBlZGl0b3IgfSA9IHRoaXMuZ3JpZE9wdGlvbjtcclxuICAgIGlmIChlZGl0b3IudHlwZSA9PT0gJ2lubGluZScpIHtcclxuICAgICAgaWYgKHRoaXMuZ3JpZE9wdGlvbi50eXBlID09PSAnbG9jYWwnKSB7XHJcbiAgICAgICAgY29uc3QgaWR4MSA9IHRoaXMuaXRlbXMuaW5kZXhPZihpdGVtKTtcclxuICAgICAgICB0aGlzLml0ZW1zLnNwbGljZShpZHgxLCAxKTtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBpZHgyID0gdGhpcy52aWV3SXRlbXMuaW5kZXhPZihpdGVtKTtcclxuICAgICAgdGhpcy52aWV3SXRlbXMuc3BsaWNlKGlkeDIsIDEpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAoaXRlbS5lZGl0aW5nU3RhdHVzID09PSAnY3JlYXRlJykge1xyXG4gICAgICBpZiAoZWRpdG9yLnR5cGUgIT09ICdwb3B1cCcpIHtcclxuICAgICAgICBpZiAodGhpcy5ncmlkT3B0aW9uLnR5cGUgPT09ICdsb2NhbCcpIHtcclxuICAgICAgICAgIHRoaXMuaXRlbXMuc3BsaWNlKDAsIDEpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnZpZXdJdGVtcy5zcGxpY2UoMCwgMSk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIE9iamVjdC5hc3NpZ24oaXRlbSwgaXRlbS50ZW1wb3JhcnkpO1xyXG4gICAgICBpdGVtLmVkaXRpbmdTdGF0dXMgPSB1bmRlZmluZWQ7XHJcbiAgICAgIHRoaXMuZ2VuZXJhdGVFZGl0b3JIYW5sZGVyKGl0ZW0pO1xyXG4gICAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGluaXRFeHRlcm5hbEZpbHRlciA9ICgpID0+IHtcclxuICAgIGlmICh0aGlzLmdyaWRPcHRpb24uZmlsdGVyPy5leHRlcm5hbEZpbHRlcnM/Lmxlbmd0aCkge1xyXG4gICAgICB0aGlzLmdyaWRPcHRpb24uZmlsdGVyLmV4dGVybmFsRmlsdGVycy5mb3JFYWNoKGV4dGVybmFsRmlsdGVyID0+IHtcclxuICAgICAgICBpZiAoZXh0ZXJuYWxGaWx0ZXIudHlwZSA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgIGlmIChleHRlcm5hbEZpbHRlci5kZWZhdWx0KSB7XHJcbiAgICAgICAgICAgIHRoaXMuZXh0ZXJuYWxGaWx0ZXJbZXh0ZXJuYWxGaWx0ZXIuZmllbGRdID0gZXh0ZXJuYWxGaWx0ZXIuZGVmYXVsdCA/PyAnJztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGV4dGVybmFsRmlsdGVyLnR5cGUgPT09ICdudW1iZXInKSB7XHJcbiAgICAgICAgICBpZiAoZXh0ZXJuYWxGaWx0ZXIuZGVmYXVsdCkge1xyXG4gICAgICAgICAgICB0aGlzLmV4dGVybmFsRmlsdGVyW2V4dGVybmFsRmlsdGVyLmZpZWxkXSA9IGV4dGVybmFsRmlsdGVyLmRlZmF1bHQgPz8gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZXh0ZXJuYWxGaWx0ZXIudHlwZSA9PT0gJ2RhdGVyYW5nZScpIHtcclxuICAgICAgICAgIHRoaXMuZXh0ZXJuYWxGaWx0ZXJbZXh0ZXJuYWxGaWx0ZXIuZmllbGRdID0ge1xyXG4gICAgICAgICAgICBmcm9tOiBleHRlcm5hbEZpbHRlci5kZWZhdWx0RnJvbSA/PyB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgIHRvOiBleHRlcm5hbEZpbHRlci5kZWZhdWx0VG8gPz8gdW5kZWZpbmVkXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZXh0ZXJuYWxGaWx0ZXIudHlwZSA9PT0gJ251bWJlcnJhbmdlJykge1xyXG4gICAgICAgICAgdGhpcy5leHRlcm5hbEZpbHRlcltleHRlcm5hbEZpbHRlci5maWVsZF0gPSB7XHJcbiAgICAgICAgICAgIGZyb206IGV4dGVybmFsRmlsdGVyLmRlZmF1bHRGcm9tID8/IHVuZGVmaW5lZCxcclxuICAgICAgICAgICAgdG86IGV4dGVybmFsRmlsdGVyLmRlZmF1bHRUbyA/PyB1bmRlZmluZWRcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChleHRlcm5hbEZpbHRlci50eXBlID09PSAnZGF0ZXJhbmdlZnVsbCcpIHtcclxuICAgICAgICAgIHRoaXMuZXh0ZXJuYWxGaWx0ZXJbZXh0ZXJuYWxGaWx0ZXIuZmllbGRdID0ge1xyXG4gICAgICAgICAgICBmcm9tOiBleHRlcm5hbEZpbHRlci5kZWZhdWx0RnJvbSA/PyB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgIHRvOiBleHRlcm5hbEZpbHRlci5kZWZhdWx0VG8gPz8gdW5kZWZpbmVkXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZXh0ZXJuYWxGaWx0ZXIudHlwZSA9PT0gJ3ZhbHVlcycpIHsgLy8gYW5kbjFcclxuICAgICAgICAgIGlmIChleHRlcm5hbEZpbHRlci5kZWZhdWx0KSB7XHJcbiAgICAgICAgICAgIHRoaXMuZXh0ZXJuYWxGaWx0ZXJbZXh0ZXJuYWxGaWx0ZXIuZmllbGRdID0gZXh0ZXJuYWxGaWx0ZXIuZGVmYXVsdCA/PyAnJztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8jZW5kcmVnaW9uXHJcblxyXG4gIG9uU2VhcmNoID0gKHNlYXJjaFZhbHVlOiBzdHJpbmcsIGl0ZW06IEdyaWRJdGVtLCBjb2x1bW46IFNkR3JpZENvbHVtbikgPT4ge1xyXG4gICAgaXRlbVtjb2x1bW4uZmllbGRdID0gc2VhcmNoVmFsdWU7XHJcbiAgfVxyXG5cclxuICBvbkZpbHRlckNvbmZpZ3VyYXRpb25Mb2FkZWQgPSAocGFyYW06IEZpbHRlckNvbmZpZ3VyYXRpb24pID0+IHtcclxuICAgIHRoaXMucXVpY2tGaWx0ZXJzID0gcGFyYW0ucXVpY2tGaWx0ZXJzIHx8IFtdO1xyXG4gICAgdGhpcy5zZWxlY3RlZFF1aWNrRmlsdGVyID0gcGFyYW0uc2VsZWN0ZWRRdWlja0ZpbHRlciB8fCAnJztcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkUXVpY2tGaWx0ZXIpIHtcclxuICAgICAgY29uc3QgcXVpY2tGaWx0ZXIgPSB0aGlzLnF1aWNrRmlsdGVycy5maW5kKGUgPT4gZS5jb2RlID09PSB0aGlzLnNlbGVjdGVkUXVpY2tGaWx0ZXIpO1xyXG4gICAgICBpZiAocXVpY2tGaWx0ZXIpIHtcclxuICAgICAgICBjb25zdCBmMSA9IEpTT04uc3RyaW5naWZ5KHF1aWNrRmlsdGVyLmZpbHRlcik7XHJcbiAgICAgICAgY29uc3QgZjIgPSBKU09OLnN0cmluZ2lmeShxdWlja0ZpbHRlci5leHRlcm5hbEZpbHRlcik7XHJcbiAgICAgICAgdGhpcy5maWx0ZXIgPSBKU09OLnBhcnNlKGYxKTtcclxuICAgICAgICB0aGlzLmV4dGVybmFsRmlsdGVyID0gdGhpcy5yZWZyZXNoRXh0ZXJuYWxGaWx0ZXIodGhpcy5ncmlkT3B0aW9uPy5maWx0ZXI/LmV4dGVybmFsRmlsdGVycywgSlNPTi5wYXJzZShmMikpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLmlubGluZUV4dGVybmFsID0gcGFyYW0uaW5saW5lRXh0ZXJuYWwgfHwge307XHJcbiAgICB0aGlzLmlubGluZUNvbHVtbiA9IHBhcmFtLmlubGluZUNvbHVtbiB8fCB7fTtcclxuICAgIHRoaXMucmVzaXplKCk7XHJcbiAgfVxyXG5cclxuICBvblNlbGVjdFF1aWNrRmlsdGVyID0gKHZhbHVlOiBzdHJpbmcpID0+IHtcclxuICAgIGNvbnN0IHF1aWNrRmlsdGVyID0gdGhpcy5xdWlja0ZpbHRlcnMuZmluZChlID0+IGUuY29kZSA9PT0gdmFsdWUpO1xyXG4gICAgaWYgKHF1aWNrRmlsdGVyPy5jb2RlKSB7XHJcbiAgICAgIGNvbnN0IGYxID0gSlNPTi5zdHJpbmdpZnkocXVpY2tGaWx0ZXIuZmlsdGVyKTtcclxuICAgICAgY29uc3QgZjIgPSBKU09OLnN0cmluZ2lmeShxdWlja0ZpbHRlci5leHRlcm5hbEZpbHRlcik7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRRdWlja0ZpbHRlciA9IHF1aWNrRmlsdGVyPy5jb2RlO1xyXG4gICAgICB0aGlzLmZpbHRlciA9IEpTT04ucGFyc2UoZjEpO1xyXG4gICAgICB0aGlzLmV4dGVybmFsRmlsdGVyID0gdGhpcy5yZWZyZXNoRXh0ZXJuYWxGaWx0ZXIodGhpcy5ncmlkT3B0aW9uPy5maWx0ZXI/LmV4dGVybmFsRmlsdGVycywgSlNPTi5wYXJzZShmMikpO1xyXG4gICAgICB0aGlzLnVwZGF0ZUZpbHRlcigpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFF1aWNrRmlsdGVyID0gJyc7XHJcbiAgICAgIHRoaXMub25DbGVhckZpbHRlcigpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zZEdyaWRQb3B1cEZpbHRlcj8udXBkYXRlQ29uZmlndXJhdGlvbih0aGlzLnNlbGVjdGVkUXVpY2tGaWx0ZXIpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRFeHBvcnRJdGVtcyA9IGFzeW5jIChwYWdlTnVtYmVyOiBudW1iZXIgPSAxLCBwYWdlU2l6ZTogbnVtYmVyID0gMTAwMDApID0+IHtcclxuICAgIGlmICh0aGlzLmlzTG9hZGluZykge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAodGhpcy5ncmlkT3B0aW9uLnR5cGUgIT09ICdsb2NhbCcpIHtcclxuICAgICAgICBjb25zdCBoYW5kbGVyID0gdGhpcy5oYW5kbGVyIGFzIElIYW5kbGVyU2VydmVyO1xyXG4gICAgICAgIGNvbnN0IGZpbHRlciA9IGhhbmRsZXIubWFwUmVxdWVzdCh0aGlzLmdldEZpbHRlckluZm8ocGFnZU51bWJlciwgcGFnZVNpemUpKTtcclxuICAgICAgICBpZiAodGhpcy5ncmlkT3B0aW9uLm1ldGhvZCA9PT0gJ0dFVCcpIHtcclxuICAgICAgICAgIGNvbnN0IHF1ZXJ5U3RyaW5nID0gT2JqZWN0LmtleXMoZmlsdGVyKS5maWx0ZXIoa2V5ID0+IGZpbHRlcltrZXldICE9PSBudWxsICYmIGZpbHRlcltrZXldICE9PSB1bmRlZmluZWQpXHJcbiAgICAgICAgICAgIC5tYXAoa2V5ID0+IGtleSArICc9JyArIGZpbHRlcltrZXldKS5qb2luKCcmJyk7XHJcbiAgICAgICAgICBjb25zdCB1cmwgPSB0aGlzLmdyaWRPcHRpb24udXJsLmluY2x1ZGVzKCc/JykgPyBgJHt0aGlzLmdyaWRPcHRpb24udXJsfSYke3F1ZXJ5U3RyaW5nfWAgOiBgJHt0aGlzLmdyaWRPcHRpb24udXJsfT8ke3F1ZXJ5U3RyaW5nfWA7XHJcbiAgICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuYXBpU2VydmljZS5nZXQodXJsKTtcclxuICAgICAgICAgIHJldHVybiBoYW5kbGVyLm1hcFJlc3BvbnNlKHJlc3BvbnNlKS5pdGVtcztcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmFwaVNlcnZpY2UucG9zdCh0aGlzLmdyaWRPcHRpb24udXJsLCBmaWx0ZXIpO1xyXG4gICAgICAgICAgcmV0dXJuIGhhbmRsZXIubWFwUmVzcG9uc2UocmVzcG9uc2UpLml0ZW1zO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBsZXQgbG9jYWxJdGVtcyA9IFtdO1xyXG4gICAgICAgIGNvbnN0IGhhbmRsZXIgPSB0aGlzLmhhbmRsZXIgYXMgSUhhbmRsZXJMb2NhbDtcclxuICAgICAgICBpZiAodHlwZW9mICh0aGlzLmdyaWRPcHRpb24uaXRlbXMpID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICBjb25zdCByZXN1bHRzID0gdGhpcy5ncmlkT3B0aW9uLml0ZW1zKCk7XHJcbiAgICAgICAgICBpZiAocmVzdWx0cyBpbnN0YW5jZW9mIFByb21pc2UpIHtcclxuICAgICAgICAgICAgbG9jYWxJdGVtcyA9IGF3YWl0IHJlc3VsdHM7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBsb2NhbEl0ZW1zID0gcmVzdWx0cztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgbG9jYWxJdGVtcyA9IHRoaXMuZ3JpZE9wdGlvbi5pdGVtcztcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBoYW5kbGVyLmZpbHRlcihsb2NhbEl0ZW1zLCB7XHJcbiAgICAgICAgICBjdXN0b21GaWx0ZXI6IHRoaXMuZ3JpZE9wdGlvbi5maWx0ZXIuY3VzdG9tRmlsdGVyLFxyXG4gICAgICAgICAgcmF3RmlsdGVyOiB0aGlzLmZpbHRlcixcclxuICAgICAgICAgIGNvbHVtbnM6IHRoaXMuZ3JpZE9wdGlvbi5jb2x1bW5zLFxyXG4gICAgICAgICAgcmF3RXh0ZXJuYWxGaWx0ZXI6IHRoaXMuZXh0ZXJuYWxGaWx0ZXIsXHJcbiAgICAgICAgICBleHRlcm5hbEZpbHRlcnM6IHRoaXMuZ3JpZE9wdGlvbi5maWx0ZXI/LmV4dGVybmFsRmlsdGVycyxcclxuICAgICAgICAgIG9yZGVyQnk6IHRoaXMub3JkZXJCeSxcclxuICAgICAgICAgIG9yZGVyRGlyZWN0aW9uOiB0aGlzLm9yZGVyRGlyZWN0aW9uLFxyXG4gICAgICAgICAgcGFnZU51bWJlcixcclxuICAgICAgICAgIHBhZ2VTaXplXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlLml0ZW1zO1xyXG4gICAgICB9XHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICB0aGlzLm5vdGlmeVNlcnZpY2UuaGFuZGxlLmVycm9yKGVycm9yKTtcclxuICAgIH0gZmluYWxseSB7XHJcbiAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0RmlsdGVySW5mbyA9IChwYWdlTnVtYmVyOiBudW1iZXIsIHBhZ2VTaXplOiBudW1iZXIpOiBTZEdyaWRGaWx0ZXJJbmZvID0+IHtcclxuICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHRoaXMuZmlsdGVyKSkge1xyXG4gICAgICBpZiAodHlwZW9mICh0aGlzLmZpbHRlcltrZXldKSA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICB0aGlzLmZpbHRlcltrZXldID0gdGhpcy5maWx0ZXJba2V5XS50cmltKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHRoaXMuZXh0ZXJuYWxGaWx0ZXIpKSB7XHJcbiAgICAgIGlmICh0eXBlb2YgKHRoaXMuZXh0ZXJuYWxGaWx0ZXJba2V5XSkgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgdGhpcy5leHRlcm5hbEZpbHRlcltrZXldID0gdGhpcy5leHRlcm5hbEZpbHRlcltrZXldLnRyaW0oKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgY3VzdG9tRmlsdGVyOiB0aGlzLmdyaWRPcHRpb24uZmlsdGVyLmN1c3RvbUZpbHRlcixcclxuICAgICAgcmF3RmlsdGVyOiB0aGlzLmZpbHRlcixcclxuICAgICAgY29sdW1uczogdGhpcy5ncmlkT3B0aW9uLmNvbHVtbnMsXHJcbiAgICAgIHJhd0V4dGVybmFsRmlsdGVyOiB0aGlzLmV4dGVybmFsRmlsdGVyLFxyXG4gICAgICBleHRlcm5hbEZpbHRlcnM6IHRoaXMuZ3JpZE9wdGlvbi5maWx0ZXI/LmV4dGVybmFsRmlsdGVycyxcclxuICAgICAgb3JkZXJCeTogdGhpcy5vcmRlckJ5LFxyXG4gICAgICBvcmRlckRpcmVjdGlvbjogdGhpcy5vcmRlckRpcmVjdGlvbixcclxuICAgICAgcGFnZU51bWJlcixcclxuICAgICAgcGFnZVNpemVcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBvbkV4cG9ydEJ5VGVtcGxhdGUgPSBhc3luYyAocGFyYW1zOiB7IGV4Y2VsQ29uZmlnOiBhbnksIGV4Y2VsQ29sdW1uczogYW55W10gfSkgPT4ge1xyXG4gICAgdGhpcy5sb2FkaW5nU2VydmljZS5zdGFydCgpO1xyXG4gICAgbGV0IGV4cG9ydEl0ZW1zID0gW107XHJcbiAgICBpZiAodGhpcy5ncmlkT3B0aW9uLmV4cG9ydD8uaXRlbXMpIHtcclxuICAgICAgZXhwb3J0SXRlbXMgPSBhd2FpdCB0aGlzLmdyaWRPcHRpb24uZXhwb3J0Py5pdGVtcyh0aGlzLmdldEZpbHRlckluZm8oMSwgMTAwMDApKS5maW5hbGx5KHRoaXMubG9hZGluZ1NlcnZpY2Uuc3RvcCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBleHBvcnRJdGVtcyA9IGF3YWl0IHRoaXMuZ2V0RXhwb3J0SXRlbXMoKS5maW5hbGx5KHRoaXMubG9hZGluZ1NlcnZpY2Uuc3RvcCk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5ncmlkT3B0aW9uLmV4cG9ydD8ubWFwcGluZykge1xyXG4gICAgICBjb25zdCByZXN1bHRzID0gdGhpcy5ncmlkT3B0aW9uLmV4cG9ydC5tYXBwaW5nKGV4cG9ydEl0ZW1zLCBwYXJhbXMuZXhjZWxDb25maWcubmFtZSk7XHJcbiAgICAgIGlmIChyZXN1bHRzIGluc3RhbmNlb2YgUHJvbWlzZSkge1xyXG4gICAgICAgIGV4cG9ydEl0ZW1zID0gYXdhaXQgcmVzdWx0cztcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBleHBvcnRJdGVtcyA9IHJlc3VsdHM7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNvbnN0IGNvbHVtbnMgPSBbLi4udGhpcy5ncmlkT3B0aW9uLmNvbHVtbnMsIC4uLih0aGlzLmdyaWRPcHRpb24uZXhwb3J0Py5jb2x1bW5zIHx8IFtdKV07XHJcbiAgICBjb25zdCBpdGVtcyA9IGV4cG9ydEl0ZW1zLm1hcChpdGVtID0+IHtcclxuICAgICAgY29uc3Qgb2JqOiBhbnkgPSB7fTtcclxuICAgICAgY29uc3QgaGFuZGxlID0gKGNvbHVtbjogU2RHcmlkQ29sdW1uKSA9PiB7XHJcbiAgICAgICAgaWYgKGNvbHVtbi50eXBlID09PSAnY2hpbGRyZW4nKSB7XHJcbiAgICAgICAgICBjb2x1bW4uY2hpbGRyZW4uZm9yRWFjaChoYW5kbGUpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoY29sdW1uLnRyYW5zZm9ybSkge1xyXG4gICAgICAgICAgb2JqW2NvbHVtbi5maWVsZF0gPSBjb2x1bW4udHJhbnNmb3JtKGl0ZW1bY29sdW1uLmZpZWxkXSwgaXRlbSk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChpdGVtW2NvbHVtbi5maWVsZF0gPT09IHVuZGVmaW5lZCB8fCBpdGVtW2NvbHVtbi5maWVsZF0gPT09IG51bGwgfHwgaXRlbVtjb2x1bW4uZmllbGRdID09PSAnJykge1xyXG4gICAgICAgICAgb2JqW2NvbHVtbi5maWVsZF0gPSAnJztcclxuICAgICAgICB9IGVsc2UgaWYgKGNvbHVtbi50eXBlID09PSAnc3RyaW5nJyB8fCBjb2x1bW4udHlwZSA9PT0gJ251bWJlcicgfHwgY29sdW1uLnR5cGUgPT09ICdjb2xvcicpIHtcclxuICAgICAgICAgIC8vIE7hur91IGNlbGwgbMOgIHN0cmluZyBob+G6t2MgbnVtYmVyIHRow6wgZ8OhbiBi4bqxbmcgY2jDrW5oIG7Ds1xyXG4gICAgICAgICAgb2JqW2NvbHVtbi5maWVsZF0gPSBpdGVtW2NvbHVtbi5maWVsZF07XHJcbiAgICAgICAgfSBlbHNlIGlmIChjb2x1bW4udHlwZSA9PT0gJ2Jvb2wnKSB7XHJcbiAgICAgICAgICAvLyBO4bq/dSBsw6AgYm9vbCB0aMOsIGfDoW4gYuG6sW5nIGdpw6EgdHLhu4sgdHJ1ZVZhbHVlIHbDoCBmYWxzZVZhbHVlIChu4bq/dSBjw7MpLCBt4bq3YyDEkeG7i25oIGzDoCBUUlVFL0ZBTFNFXHJcbiAgICAgICAgICBpZiAoaXRlbVtjb2x1bW4uZmllbGRdKSB7XHJcbiAgICAgICAgICAgIG9ialtjb2x1bW4uZmllbGRdID0gY29sdW1uLnRydWVWYWx1ZSB8fCAnVHJ1ZSc7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBvYmpbY29sdW1uLmZpZWxkXSA9IGNvbHVtbi5mYWxzZVZhbHVlIHx8ICdGYWxzZSc7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIGlmIChjb2x1bW4udHlwZSA9PT0gJ2RhdGUnKSB7XHJcbiAgICAgICAgICAvLyBO4bq/dSBsw6AgZGF0ZSB0aMOsIGNvbnZlcnQgdGhlbyDEkcO6bmcgZm9ybWF0XHJcbiAgICAgICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoaXRlbVtjb2x1bW4uZmllbGRdKTtcclxuICAgICAgICAgIG9ialtjb2x1bW4uZmllbGRdID0gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0oZGF0ZSwgJ2RkL01NL3l5eXknKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGNvbHVtbi50eXBlID09PSAnZGF0ZXRpbWUnKSB7XHJcbiAgICAgICAgICAvLyBO4bq/dSBsw6AgZGF0ZXRpbWUgdGjDrCBjb252ZXJ0IHRoZW8gxJHDum5nIGZvcm1hdFxyXG4gICAgICAgICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKGl0ZW1bY29sdW1uLmZpZWxkXSk7XHJcbiAgICAgICAgICBvYmpbY29sdW1uLmZpZWxkXSA9IHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKGRhdGUsICdkZC9NTS95eXl5IEhIOm1tOnNzJyk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChjb2x1bW4udHlwZSA9PT0gJ3RpbWUnKSB7XHJcbiAgICAgICAgICAvLyBO4bq/dSBsw6AgdGltZSB0aMOsIGNvbnZlcnQgdGhlbyDEkcO6bmcgZm9ybWF0XHJcbiAgICAgICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoaXRlbVtjb2x1bW4uZmllbGRdKTtcclxuICAgICAgICAgIG9ialtjb2x1bW4uZmllbGRdID0gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0oZGF0ZSwgJ0hIOm1tOnNzJyk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChjb2x1bW4udHlwZSA9PT0gJ3ZhbHVlcycpIHtcclxuICAgICAgICAgIC8vIE7hur91IGzDoCB2YWx1ZXMgdGjDrCBs4bqleSBnacOhIHRy4buLIGPhu6dhIHZhbHVlIMSRxrDhu6NjIGNo4buNblxyXG4gICAgICAgICAgY29uc3QgZGF0YSA9IGNvbHVtbi52YWx1ZXMuZmluZChlID0+IGUudmFsdWUgPT09IGl0ZW1bY29sdW1uLmZpZWxkXSk7XHJcbiAgICAgICAgICBpZiAoZGF0YSkge1xyXG4gICAgICAgICAgICBvYmpbY29sdW1uLmZpZWxkXSA9IGRhdGEudGV4dDtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIG9ialtjb2x1bW4uZmllbGRdID0gaXRlbVtjb2x1bW4uZmllbGRdO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSBpZiAoY29sdW1uLnR5cGUgPT09ICdyYWRpbycpIHtcclxuICAgICAgICAgIGNvbnN0IGRhdGEgPSBjb2x1bW4udmFsdWVzLmZpbmQoZSA9PiBlW2NvbHVtbi52YWx1ZUZpZWxkXSA9PT0gaXRlbVtjb2x1bW4uZmllbGRdKTtcclxuICAgICAgICAgIGlmIChkYXRhKSB7XHJcbiAgICAgICAgICAgIG9ialtjb2x1bW4uZmllbGRdID0gZGF0YVtjb2x1bW4uZGlzcGxheUZpZWxkXTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIG9ialtjb2x1bW4uZmllbGRdID0gaXRlbVtjb2x1bW4uZmllbGRdO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfTtcclxuICAgICAgY29sdW1ucy5mb3JFYWNoKGhhbmRsZSk7XHJcbiAgICAgIHJldHVybiBvYmo7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuZXhwb3J0U2VydmljZS5leHBvcnRCeVRlbXBsYXRlKHtcclxuICAgICAgZmlsZVBhdGg6IHBhcmFtcy5leGNlbENvbmZpZy5mdWxsUGF0aCxcclxuICAgICAgY29sdW1uczogcGFyYW1zLmV4Y2VsQ29sdW1ucyxcclxuICAgICAgaXRlbXNcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGludmFsaWRJdGVtcygpIHtcclxuICAgIHJldHVybiB0aGlzLml0ZW1zLmZpbHRlcihlID0+IGUuZWRpdG9ySGFuZGxlcj8uZXJyb3JNZXNzYWdlKS5tYXAoZSA9PiB7XHJcbiAgICAgIGNvbnN0IHsgdGVtcG9yYXJ5LFxyXG4gICAgICAgIG9yaWdpbkl0ZW0sXHJcbiAgICAgICAgZWRpdG9ySGFuZGxlcixcclxuICAgICAgICBlZGl0aW5nU3RhdHVzLFxyXG4gICAgICAgIGlzQ2hlY2tlZCxcclxuICAgICAgICBzdWJJbmZvcm1hdGlvbixcclxuICAgICAgICBibGlua2VyLFxyXG4gICAgICAgIC4uLml0ZW0gfSA9IGU7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgaXRlbSxcclxuICAgICAgICBtZXNzYWdlOiBlLmVkaXRvckhhbmRsZXIuZXJyb3JNZXNzYWdlXHJcbiAgICAgIH07XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldCBncmlkSXRlbXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5pdGVtcy5tYXAoZSA9PiB7XHJcbiAgICAgIGNvbnN0IHsgdGVtcG9yYXJ5LFxyXG4gICAgICAgIG9yaWdpbkl0ZW0sXHJcbiAgICAgICAgZWRpdG9ySGFuZGxlcixcclxuICAgICAgICBlZGl0aW5nU3RhdHVzLFxyXG4gICAgICAgIGlzQ2hlY2tlZCxcclxuICAgICAgICBzdWJJbmZvcm1hdGlvbixcclxuICAgICAgICBibGlua2VyLFxyXG4gICAgICAgIC4uLml0ZW0gfSA9IGU7XHJcbiAgICAgIHJldHVybiBpdGVtO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvbkVkaXRvckNoYW5nZSA9ICgpID0+IHtcclxuICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcbiAgb25TZWxlY3RQYWdlU2l6ZSA9ICgpID0+IHtcclxuICAgIHRoaXMucmVsb2FkKCk7XHJcbiAgfVxyXG4gIHByaXZhdGUgcmVmcmVzaEV4dGVybmFsRmlsdGVyID0gKGV4dGVybmFsRmlsdGVyczogU2RHcmlkRXh0ZXJuYWxGaWx0ZXJbXSwgZXh0ZXJuYWxGaWx0ZXI6IGFueSkgPT4ge1xyXG4gICAgZXh0ZXJuYWxGaWx0ZXIgPSBleHRlcm5hbEZpbHRlciB8fCB7fTtcclxuICAgIGV4dGVybmFsRmlsdGVycyA9IGV4dGVybmFsRmlsdGVycyB8fCBbXTtcclxuICAgIGV4dGVybmFsRmlsdGVycy5mb3JFYWNoKGUgPT4ge1xyXG4gICAgICBpZiAoZS50eXBlID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgIGV4dGVybmFsRmlsdGVyW2UuZmllbGRdID0gZXh0ZXJuYWxGaWx0ZXJbZS5maWVsZF0gPz8gZS5kZWZhdWx0ID8/ICcnO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBpZiAoZS50eXBlID09PSAnbnVtYmVyJykge1xyXG4gICAgICAgIGV4dGVybmFsRmlsdGVyW2UuZmllbGRdID0gZXh0ZXJuYWxGaWx0ZXJbZS5maWVsZF0gPz8gZS5kZWZhdWx0ID8/IHVuZGVmaW5lZDtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGUudHlwZSA9PT0gJ2RhdGVyYW5nZScpIHtcclxuICAgICAgICBleHRlcm5hbEZpbHRlcltlLmZpZWxkXSA9IHtcclxuICAgICAgICAgIGZyb206IGV4dGVybmFsRmlsdGVyW2UuZmllbGRdPy5mcm9tID8/IGUuZGVmYXVsdEZyb20gPz8gdW5kZWZpbmVkLFxyXG4gICAgICAgICAgdG86IGV4dGVybmFsRmlsdGVyW2UuZmllbGRdPy50byA/PyBlLmRlZmF1bHRUbyA/PyB1bmRlZmluZWRcclxuICAgICAgICB9O1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBpZiAoZS50eXBlID09PSAnbnVtYmVycmFuZ2UnKSB7XHJcbiAgICAgICAgZXh0ZXJuYWxGaWx0ZXJbZS5maWVsZF0gPSB7XHJcbiAgICAgICAgICBmcm9tOiBleHRlcm5hbEZpbHRlcltlLmZpZWxkXT8uZnJvbSA/PyBlLmRlZmF1bHRGcm9tID8/IHVuZGVmaW5lZCxcclxuICAgICAgICAgIHRvOiBleHRlcm5hbEZpbHRlcltlLmZpZWxkXT8udG8gPz8gZS5kZWZhdWx0VG8gPz8gdW5kZWZpbmVkXHJcbiAgICAgICAgfTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGUudHlwZSA9PT0gJ2RhdGVyYW5nZWZ1bGwnKSB7XHJcbiAgICAgICAgZXh0ZXJuYWxGaWx0ZXJbZS5maWVsZF0gPSB7XHJcbiAgICAgICAgICBmcm9tOiBleHRlcm5hbEZpbHRlcltlLmZpZWxkXT8uZnJvbSA/PyBlLmRlZmF1bHRGcm9tID8/IHVuZGVmaW5lZCxcclxuICAgICAgICAgIHRvOiBleHRlcm5hbEZpbHRlcltlLmZpZWxkXT8udG8gPz8gZS5kZWZhdWx0VG8gPz8gdW5kZWZpbmVkXHJcbiAgICAgICAgfTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGUudHlwZSA9PT0gJ3ZhbHVlcycpIHsgLy8gYW5kbjFcclxuICAgICAgICBleHRlcm5hbEZpbHRlcltlLmZpZWxkXSA9IChleHRlcm5hbEZpbHRlcltlLmZpZWxkXSB8fCBlLmRlZmF1bHQpID8/ICcnO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gZXh0ZXJuYWxGaWx0ZXI7XHJcbiAgfVxyXG5cclxuICBvbkNyZWF0ZVF1aWNrRmlsdGVyID0gKGV2PzogRXZlbnQpID0+IHtcclxuICAgIHRoaXMubWF0U2VsZWN0Py5jbG9zZSgpO1xyXG4gICAgdGhpcy5vbkZpbHRlclBvcHVwKCk7XHJcbiAgICB0aGlzLnNkR3JpZFBvcHVwRmlsdGVyPy5jbG9zZSgpO1xyXG4gICAgdGhpcy5zZEdyaWRQb3B1cEZpbHRlcj8ub25DcmVhdGVRdWlja0ZpbHRlcihldik7XHJcbiAgfVxyXG5cclxuICBvbkVkaXRRdWlja0ZpbHRlciA9IChldjogRXZlbnQsIHF1aWNrRmlsdGVyPzogUXVpY2tGaWx0ZXIpID0+IHtcclxuICAgIHRoaXMubWF0U2VsZWN0Py5jbG9zZSgpO1xyXG4gICAgdGhpcy5vbkZpbHRlclBvcHVwKCk7XHJcbiAgICB0aGlzLnNkR3JpZFBvcHVwRmlsdGVyPy5jbG9zZSgpO1xyXG4gICAgdGhpcy5zZEdyaWRQb3B1cEZpbHRlcj8ub25FZGl0UXVpY2tGaWx0ZXIoZXYsIHF1aWNrRmlsdGVyKTtcclxuICB9XHJcblxyXG4gIG9uRGVsZXRlUXVpY2tGaWx0ZXIgPSAoZXY6IEV2ZW50LCBxdWlja0ZpbHRlcj86IFF1aWNrRmlsdGVyKSA9PiB7XHJcbiAgICB0aGlzLm1hdFNlbGVjdD8uY2xvc2UoKTtcclxuICAgIHRoaXMub25GaWx0ZXJQb3B1cCgpO1xyXG4gICAgdGhpcy5zZEdyaWRQb3B1cEZpbHRlcj8uY2xvc2UoKTtcclxuICAgIHRoaXMuc2RHcmlkUG9wdXBGaWx0ZXI/Lm9uRGVsZXRlUXVpY2tGaWx0ZXIoZXYsIHF1aWNrRmlsdGVyKTtcclxuICB9XHJcbn1cclxuIl19
|