cmat 0.0.13 → 0.0.14
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/components/cascade/cascade-bottom-sheet/cascade-bottom-sheet.component.d.ts +0 -1
- package/components/cascade/cascade-menu/cascade-menu.component.d.ts +0 -1
- package/components/chip-input/chip-input.component.d.ts +0 -1
- package/components/custom-formly/public-api.d.ts +1 -0
- package/components/custom-formly/types/quill/quill.component.d.ts +42 -0
- package/components/custom-formly/types/repeat/repeat.component.d.ts +0 -1
- package/components/custom-formly/types/select/select.component.d.ts +0 -1
- package/components/custom-formly/types/stepper/horizontal/stepper.component.d.ts +0 -1
- package/components/custom-formly/types/stepper/vertical/stepper.component.d.ts +0 -1
- package/components/custom-formly/types/table/table.component.d.ts +0 -1
- package/components/custom-formly/types/tabs/tab.component.d.ts +0 -1
- package/components/custom-formly/types/tags/tags.component.d.ts +0 -1
- package/components/material-color-picker/material-color-picker.component.d.ts +0 -1
- package/components/material-datetimepicker/calendar-body.d.ts +0 -1
- package/components/material-datetimepicker/calendar.d.ts +3 -4
- package/components/material-datetimepicker/clock.d.ts +0 -1
- package/components/material-datetimepicker/datetimepicker.d.ts +3 -4
- package/components/material-datetimepicker/month-view.d.ts +0 -1
- package/components/pagination/pagination.component.d.ts +0 -1
- package/components/popover/popover.component.d.ts +3 -4
- package/components/popover/popover.interfaces.d.ts +1 -2
- package/components/select-tree/select-tree.component.d.ts +0 -1
- package/components/timeline/timeline.component.d.ts +3 -5
- package/components/transfer-picker/filter/filter.component.d.ts +0 -1
- package/components/transfer-picker/transfer-picker-target/transfer-picker-target.component.d.ts +0 -1
- package/esm2022/components/adapter/datetime-adapter.mjs +1 -1
- package/esm2022/components/adapter/dayjs-date-adapter.mjs +4 -4
- package/esm2022/components/adapter/dayjs-datetime-adapter.mjs +4 -4
- package/esm2022/components/adapter/native-datetime-adapter.mjs +4 -4
- package/esm2022/components/breadcrumb/breadcrumb-item.directive.mjs +3 -3
- package/esm2022/components/breadcrumb/breadcrumb.component.mjs +5 -5
- package/esm2022/components/breadcrumb/breadcrumb.service.mjs +4 -4
- package/esm2022/components/card/card.component.mjs +4 -4
- package/esm2022/components/cascade/cascade-bottom-sheet/cascade-bottom-sheet.component.mjs +5 -8
- package/esm2022/components/cascade/cascade-list/cascade-list.component.mjs +4 -4
- package/esm2022/components/cascade/cascade-menu/cascade-menu.component.mjs +5 -8
- package/esm2022/components/chip-input/chip-input.component.mjs +6 -9
- package/esm2022/components/custom-formly/extension/addons.extension.mjs +1 -1
- package/esm2022/components/custom-formly/public-api.mjs +2 -1
- package/esm2022/components/custom-formly/types/button/button.component.mjs +4 -4
- package/esm2022/components/custom-formly/types/cascade/cascade.component.mjs +4 -4
- package/esm2022/components/custom-formly/types/checklist/checklist.component.mjs +4 -4
- package/esm2022/components/custom-formly/types/chips/chips.component.mjs +4 -4
- package/esm2022/components/custom-formly/types/color-picker/color-picker.component.mjs +3 -3
- package/esm2022/components/custom-formly/types/date-range/date-range.component.mjs +3 -3
- package/esm2022/components/custom-formly/types/datepicker/datepicker.component.mjs +3 -3
- package/esm2022/components/custom-formly/types/multicheckbox/multicheckbox.component.mjs +4 -4
- package/esm2022/components/custom-formly/types/number/number.component.mjs +3 -3
- package/esm2022/components/custom-formly/types/quill/quill.component.mjs +171 -0
- package/esm2022/components/custom-formly/types/radio/radio.component.mjs +4 -4
- package/esm2022/components/custom-formly/types/rating/rating.component.mjs +3 -3
- package/esm2022/components/custom-formly/types/repeat/repeat.component.mjs +5 -8
- package/esm2022/components/custom-formly/types/select/select.component.mjs +5 -8
- package/esm2022/components/custom-formly/types/select-tree/select-tree.component.mjs +4 -4
- package/esm2022/components/custom-formly/types/stepper/horizontal/stepper.component.mjs +5 -8
- package/esm2022/components/custom-formly/types/stepper/vertical/stepper.component.mjs +5 -8
- package/esm2022/components/custom-formly/types/table/table.component.mjs +5 -8
- package/esm2022/components/custom-formly/types/tabs/tab.component.mjs +5 -8
- package/esm2022/components/custom-formly/types/tags/tags.component.mjs +5 -8
- package/esm2022/components/custom-formly/types/textarea/textarea.component.mjs +3 -3
- package/esm2022/components/custom-formly/types/upload/upload.component.mjs +4 -4
- package/esm2022/components/custom-formly/wrappers/addons/addons.component.mjs +4 -4
- package/esm2022/components/custom-formly/wrappers/card/card.component.mjs +3 -3
- package/esm2022/components/custom-formly/wrappers/expansion/expansion.component.mjs +3 -3
- package/esm2022/components/custom-formly/wrappers/panel/panel.component.mjs +3 -3
- package/esm2022/components/date-range/date-range.component.mjs +4 -4
- package/esm2022/components/drawer/drawer.component.mjs +4 -4
- package/esm2022/components/drawer/drawer.service.mjs +3 -3
- package/esm2022/components/fullscreen/fullscreen.component.mjs +4 -4
- package/esm2022/components/highlight/highlight.component.mjs +4 -4
- package/esm2022/components/highlight/highlight.service.mjs +4 -4
- package/esm2022/components/json-editor/json-editor.component.mjs +4 -4
- package/esm2022/components/masonry/masonry.component.mjs +4 -4
- package/esm2022/components/material-color-picker/material-color-picker.component.mjs +5 -8
- package/esm2022/components/material-datetimepicker/calendar-body.mjs +5 -8
- package/esm2022/components/material-datetimepicker/calendar.mjs +7 -13
- package/esm2022/components/material-datetimepicker/clock.mjs +5 -8
- package/esm2022/components/material-datetimepicker/datetimepicker-input.mjs +4 -4
- package/esm2022/components/material-datetimepicker/datetimepicker-intl.mjs +3 -3
- package/esm2022/components/material-datetimepicker/datetimepicker-toggle.mjs +7 -7
- package/esm2022/components/material-datetimepicker/datetimepicker.mjs +10 -11
- package/esm2022/components/material-datetimepicker/month-view.mjs +5 -8
- package/esm2022/components/material-datetimepicker/multi-year-view.mjs +4 -4
- package/esm2022/components/material-datetimepicker/time.mjs +7 -7
- package/esm2022/components/material-datetimepicker/year-view.mjs +4 -4
- package/esm2022/components/navigation/horizontal/components/basic/basic.component.mjs +3 -3
- package/esm2022/components/navigation/horizontal/components/branch/branch.component.mjs +5 -5
- package/esm2022/components/navigation/horizontal/components/divider/divider.component.mjs +3 -3
- package/esm2022/components/navigation/horizontal/components/spacer/spacer.component.mjs +3 -3
- package/esm2022/components/navigation/horizontal/horizontal.component.mjs +5 -5
- package/esm2022/components/navigation/navigation.service.mjs +4 -4
- package/esm2022/components/navigation/vertical/components/aside/aside.component.mjs +5 -5
- package/esm2022/components/navigation/vertical/components/basic/basic.component.mjs +3 -3
- package/esm2022/components/navigation/vertical/components/collapsable/collapsable.component.mjs +5 -5
- package/esm2022/components/navigation/vertical/components/divider/divider.component.mjs +3 -3
- package/esm2022/components/navigation/vertical/components/group/group.component.mjs +5 -5
- package/esm2022/components/navigation/vertical/components/spacer/spacer.component.mjs +3 -3
- package/esm2022/components/navigation/vertical/vertical.component.mjs +5 -5
- package/esm2022/components/pagination/pagination.component.mjs +5 -8
- package/esm2022/components/pagination/pagination.directive.mjs +4 -4
- package/esm2022/components/pagination/pagination.pipe.mjs +4 -4
- package/esm2022/components/pagination/pagination.service.mjs +4 -4
- package/esm2022/components/password-strength/mat-pass-toggle-visibility/mat-pass-toggle-visibility.component.mjs +3 -3
- package/esm2022/components/password-strength/mat-password-strength/mat-password-strength.component.mjs +4 -4
- package/esm2022/components/password-strength/mat-password-strength-info/mat-password-strength-info.component.mjs +4 -4
- package/esm2022/components/password-strength/mat-password-strength-validator.mjs +1 -1
- package/esm2022/components/popover/popover-trigger.mjs +6 -8
- package/esm2022/components/popover/popover.component.mjs +6 -7
- package/esm2022/components/popover/popover.interfaces.mjs +1 -1
- package/esm2022/components/popover/popover.target.mjs +3 -3
- package/esm2022/components/progress-bar/progress-bar.component.mjs +4 -4
- package/esm2022/components/rating/rating.component.mjs +5 -5
- package/esm2022/components/select-search/select-no-entries-found.directive.mjs +3 -3
- package/esm2022/components/select-search/select-search-clear.directive.mjs +3 -3
- package/esm2022/components/select-search/select-search.component.mjs +4 -4
- package/esm2022/components/select-tree/select-tree.component.mjs +5 -8
- package/esm2022/components/timeline/timeline-item/timeline-item.component.mjs +9 -9
- package/esm2022/components/timeline/timeline.component.mjs +7 -11
- package/esm2022/components/toast/toast-modal.component.mjs +4 -4
- package/esm2022/components/toast/toast.component.mjs +5 -5
- package/esm2022/components/toast/toast.service.mjs +4 -4
- package/esm2022/components/transfer-picker/filter/filter.component.mjs +5 -8
- package/esm2022/components/transfer-picker/search/search.component.mjs +3 -3
- package/esm2022/components/transfer-picker/transfer-picker-source/transfer-picker-source.component.mjs +4 -4
- package/esm2022/components/transfer-picker/transfer-picker-target/transfer-picker-target.component.mjs +5 -8
- package/esm2022/components/transfer-picker/transfer-picker.component.mjs +4 -4
- package/esm2022/components/transfer-picker/transfer-picker.service.mjs +4 -4
- package/esm2022/components/upload/files.util.service.mjs +4 -4
- package/esm2022/components/upload/upload-queue/upload-queue.component.mjs +4 -4
- package/esm2022/components/upload/upload.component.mjs +4 -4
- package/esm2022/directives/animate-on-scroll/animate-on-scroll.directive.mjs +4 -4
- package/esm2022/directives/animate-on-scroll/scroll.service.mjs +3 -3
- package/esm2022/directives/autofocus/autofocus.directive.mjs +3 -3
- package/esm2022/directives/debounce/abstract-debounce.directive.mjs +3 -3
- package/esm2022/directives/debounce/debounce-click.directive.mjs +3 -3
- package/esm2022/directives/debounce/debounce-keyup.directive.mjs +3 -3
- package/esm2022/directives/digit-only/digit-only.directive.mjs +4 -4
- package/esm2022/directives/digit-only/mask.directive.mjs +4 -4
- package/esm2022/directives/equal-validator/equal-validator.directive.mjs +4 -4
- package/esm2022/lib/mock-api/mock-api.interceptor.mjs +4 -4
- package/esm2022/lib/mock-api/mock-api.request-handler.mjs +1 -1
- package/esm2022/lib/mock-api/mock-api.service.mjs +4 -4
- package/esm2022/lib/mock-api/mock-api.utils.mjs +1 -1
- package/esm2022/pipes/bytes/bytes.pipe.mjs +4 -4
- package/esm2022/pipes/date-format/date-format.pipe.mjs +3 -3
- package/esm2022/pipes/find-by-key/find-by-key.pipe.mjs +4 -4
- package/esm2022/pipes/group-by/group-by.pipe.mjs +4 -4
- package/esm2022/pipes/keys/keys.pipe.mjs +4 -4
- package/esm2022/pipes/secure/secure-pipe.mjs +3 -3
- package/esm2022/pipes/uppercase/uppercase.pipe.mjs +3 -3
- package/esm2022/services/alert/alert.service.mjs +4 -4
- package/esm2022/services/config/config.service.mjs +3 -3
- package/esm2022/services/config/urlStateConfig.service.mjs +3 -3
- package/esm2022/services/confirmation/confirmation.service.mjs +3 -3
- package/esm2022/services/confirmation/dialog/dialog.component.mjs +3 -3
- package/esm2022/services/data/data.service.mjs +4 -4
- package/esm2022/services/loading/loading.interceptor.mjs +4 -4
- package/esm2022/services/loading/loading.service.mjs +4 -4
- package/esm2022/services/local-storage/local-storage.service.mjs +3 -3
- package/esm2022/services/media-watcher/media-watcher.service.mjs +4 -4
- package/esm2022/services/platform/platform.service.mjs +4 -4
- package/esm2022/services/splash-screen/splash-screen.service.mjs +3 -3
- package/esm2022/services/title/title.service.mjs +4 -4
- package/esm2022/services/translation/translation.service.mjs +4 -4
- package/esm2022/services/utils/utils.service.mjs +4 -4
- package/esm2022/validators/validators.mjs +1 -1
- package/fesm2022/cmat-animations.mjs +1 -1
- package/fesm2022/cmat-components-adapter.mjs +9 -9
- package/fesm2022/cmat-components-adapter.mjs.map +1 -1
- package/fesm2022/cmat-components-breadcrumb.mjs +10 -10
- package/fesm2022/cmat-components-breadcrumb.mjs.map +1 -1
- package/fesm2022/cmat-components-card.mjs +3 -3
- package/fesm2022/cmat-components-card.mjs.map +1 -1
- package/fesm2022/cmat-components-cascade.mjs +11 -17
- package/fesm2022/cmat-components-cascade.mjs.map +1 -1
- package/fesm2022/cmat-components-chip-input.mjs +5 -8
- package/fesm2022/cmat-components-chip-input.mjs.map +1 -1
- package/fesm2022/cmat-components-custom-formly.mjs +248 -104
- package/fesm2022/cmat-components-custom-formly.mjs.map +1 -1
- package/fesm2022/cmat-components-date-range.mjs +4 -4
- package/fesm2022/cmat-components-date-range.mjs.map +1 -1
- package/fesm2022/cmat-components-drawer.mjs +7 -7
- package/fesm2022/cmat-components-drawer.mjs.map +1 -1
- package/fesm2022/cmat-components-fullscreen.mjs +3 -3
- package/fesm2022/cmat-components-fullscreen.mjs.map +1 -1
- package/fesm2022/cmat-components-highlight.mjs +6 -6
- package/fesm2022/cmat-components-highlight.mjs.map +1 -1
- package/fesm2022/cmat-components-json-editor.mjs +3 -3
- package/fesm2022/cmat-components-json-editor.mjs.map +1 -1
- package/fesm2022/cmat-components-masonry.mjs +3 -3
- package/fesm2022/cmat-components-masonry.mjs.map +1 -1
- package/fesm2022/cmat-components-material-color-picker.mjs +4 -7
- package/fesm2022/cmat-components-material-color-picker.mjs.map +1 -1
- package/fesm2022/cmat-components-material-datetimepicker.mjs +53 -68
- package/fesm2022/cmat-components-material-datetimepicker.mjs.map +1 -1
- package/fesm2022/cmat-components-navigation.mjs +46 -46
- package/fesm2022/cmat-components-navigation.mjs.map +1 -1
- package/fesm2022/cmat-components-pagination.mjs +13 -16
- package/fesm2022/cmat-components-pagination.mjs.map +1 -1
- package/fesm2022/cmat-components-password-strength.mjs +10 -10
- package/fesm2022/cmat-components-password-strength.mjs.map +1 -1
- package/fesm2022/cmat-components-popover.mjs +13 -16
- package/fesm2022/cmat-components-popover.mjs.map +1 -1
- package/fesm2022/cmat-components-progress-bar.mjs +3 -3
- package/fesm2022/cmat-components-progress-bar.mjs.map +1 -1
- package/fesm2022/cmat-components-rating.mjs +4 -4
- package/fesm2022/cmat-components-rating.mjs.map +1 -1
- package/fesm2022/cmat-components-select-search.mjs +10 -10
- package/fesm2022/cmat-components-select-search.mjs.map +1 -1
- package/fesm2022/cmat-components-select-tree.mjs +4 -7
- package/fesm2022/cmat-components-select-tree.mjs.map +1 -1
- package/fesm2022/cmat-components-timeline.mjs +15 -19
- package/fesm2022/cmat-components-timeline.mjs.map +1 -1
- package/fesm2022/cmat-components-toast.mjs +10 -10
- package/fesm2022/cmat-components-toast.mjs.map +1 -1
- package/fesm2022/cmat-components-transfer-picker.mjs +20 -26
- package/fesm2022/cmat-components-transfer-picker.mjs.map +1 -1
- package/fesm2022/cmat-components-upload.mjs +9 -9
- package/fesm2022/cmat-components-upload.mjs.map +1 -1
- package/fesm2022/cmat-directives-animate-on-scroll.mjs +6 -6
- package/fesm2022/cmat-directives-animate-on-scroll.mjs.map +1 -1
- package/fesm2022/cmat-directives-autofocus.mjs +3 -3
- package/fesm2022/cmat-directives-debounce.mjs +9 -9
- package/fesm2022/cmat-directives-digit-only.mjs +6 -6
- package/fesm2022/cmat-directives-digit-only.mjs.map +1 -1
- package/fesm2022/cmat-directives-equal-validator.mjs +3 -3
- package/fesm2022/cmat-directives-equal-validator.mjs.map +1 -1
- package/fesm2022/cmat-lib-mock-api.mjs +7 -7
- package/fesm2022/cmat-lib-mock-api.mjs.map +1 -1
- package/fesm2022/cmat-pipes-bytes.mjs +3 -3
- package/fesm2022/cmat-pipes-bytes.mjs.map +1 -1
- package/fesm2022/cmat-pipes-date-format.mjs +3 -3
- package/fesm2022/cmat-pipes-find-by-key.mjs +3 -3
- package/fesm2022/cmat-pipes-find-by-key.mjs.map +1 -1
- package/fesm2022/cmat-pipes-group-by.mjs +3 -3
- package/fesm2022/cmat-pipes-group-by.mjs.map +1 -1
- package/fesm2022/cmat-pipes-keys.mjs +3 -3
- package/fesm2022/cmat-pipes-keys.mjs.map +1 -1
- package/fesm2022/cmat-pipes-secure.mjs +3 -3
- package/fesm2022/cmat-pipes-uppercase.mjs +3 -3
- package/fesm2022/cmat-services-alert.mjs +3 -3
- package/fesm2022/cmat-services-alert.mjs.map +1 -1
- package/fesm2022/cmat-services-config.mjs +6 -6
- package/fesm2022/cmat-services-confirmation.mjs +6 -6
- package/fesm2022/cmat-services-data.mjs +3 -3
- package/fesm2022/cmat-services-data.mjs.map +1 -1
- package/fesm2022/cmat-services-loading.mjs +6 -6
- package/fesm2022/cmat-services-loading.mjs.map +1 -1
- package/fesm2022/cmat-services-local-storage.mjs +3 -3
- package/fesm2022/cmat-services-media-watcher.mjs +3 -3
- package/fesm2022/cmat-services-media-watcher.mjs.map +1 -1
- package/fesm2022/cmat-services-platform.mjs +3 -3
- package/fesm2022/cmat-services-platform.mjs.map +1 -1
- package/fesm2022/cmat-services-splash-screen.mjs +3 -3
- package/fesm2022/cmat-services-title.mjs +3 -3
- package/fesm2022/cmat-services-title.mjs.map +1 -1
- package/fesm2022/cmat-services-translation.mjs +3 -3
- package/fesm2022/cmat-services-translation.mjs.map +1 -1
- package/fesm2022/cmat-services-utils.mjs +3 -3
- package/fesm2022/cmat-services-utils.mjs.map +1 -1
- package/fesm2022/cmat-validators.mjs.map +1 -1
- package/package.json +111 -102
- package/styles/overrides/angular-material.scss +0 -1
- package/styles/overrides/quill.scss +102 -0
- package/styles/themes.scss +19 -19
|
@@ -507,8 +507,8 @@ export class CmatDateRangeComponent {
|
|
|
507
507
|
// If meridiem doesn't exist, create a moment using 24-hours format and return in
|
|
508
508
|
return dayjs(value, 'HH:mm').second(0);
|
|
509
509
|
}
|
|
510
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
511
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
510
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: CmatDateRangeComponent, deps: [{ token: i1.Overlay }, { token: i0.ViewContainerRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
511
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.0", type: CmatDateRangeComponent, isStandalone: true, selector: "cmat-date-range", inputs: { readonly: "readonly", dateFormat: "dateFormat", timeFormat: "timeFormat", timeRange: "timeRange", range: "range" }, outputs: { rangeChanged: "rangeChanged" }, providers: [
|
|
512
512
|
{
|
|
513
513
|
provide: NG_VALUE_ACCESSOR,
|
|
514
514
|
useExisting: forwardRef(() => CmatDateRangeComponent),
|
|
@@ -516,7 +516,7 @@ export class CmatDateRangeComponent {
|
|
|
516
516
|
}
|
|
517
517
|
], viewQueries: [{ propertyName: "_matMonthView1", first: true, predicate: ["matMonthView1"], descendants: true }, { propertyName: "_matMonthView2", first: true, predicate: ["matMonthView2"], descendants: true }, { propertyName: "_pickerPanelOrigin", first: true, predicate: ["pickerPanelOrigin"], descendants: true, read: ElementRef }, { propertyName: "_pickerPanel", first: true, predicate: ["pickerPanel"], descendants: true }], exportAs: ["cmatDateRange"], ngImport: i0, template: "<div role=\"presentation\" class=\"range\" (click)=\"openPickerPanel()\" #pickerPanelOrigin>\n\n <div class=\"start\">\n <div class=\"date\">{{range.startDate}}</div>\n @if (range.startTime) {\n <div class=\"time\">{{range.startTime}}</div>\n }\n </div>\n\n <div class=\"separator\">-</div>\n\n <div class=\"end\">\n <div class=\"date\">{{range.endDate}}</div>\n @if (range.endTime) {\n <div class=\"time\">{{range.endTime}}</div>\n }\n </div>\n\n</div>\n\n<ng-template #pickerPanel>\n\n <!-- Start -->\n <div class=\"start\">\n\n <div class=\"month\">\n <div class=\"month-header\">\n <button type=\"button\" class=\"previous-button\" mat-icon-button (click)=\"prev()\" tabindex=\"1\">\n <mat-icon [svgIcon]=\"'heroicons_outline:chevron-left'\"></mat-icon>\n </button>\n <div class=\"month-label\">{{getMonthLabel(1)}}</div>\n </div>\n <mat-month-view [(activeDate)]=\"activeDates.month1\" [dateFilter]=\"dateFilter()\" [dateClass]=\"dateClass()\"\n (click)=\"$event.stopImmediatePropagation()\" (selectedChange)=\"onSelectedDateChange($event)\"\n #matMonthView1>\n </mat-month-view>\n </div>\n\n @if (timeRange) {\n <mat-form-field class=\"time start-time\">\n <input matInput [autocomplete]=\"'off'\" [formControl]=\"startTimeFormControl\" (blur)=\"updateStartTime($event)\"\n tabindex=\"3\">\n <mat-label>\u5F00\u59CB\u65F6\u95F4</mat-label>\n </mat-form-field>\n }\n\n </div>\n\n <!-- End -->\n <div class=\"end\">\n\n <div class=\"month\">\n <div class=\"month-header\">\n <div class=\"month-label\">{{getMonthLabel(2)}}</div>\n <button type=\"button\" class=\"next-button\" mat-icon-button (click)=\"next()\" tabindex=\"2\">\n <mat-icon [svgIcon]=\"'heroicons_outline:chevron-right'\"></mat-icon>\n </button>\n </div>\n <mat-month-view [(activeDate)]=\"activeDates.month2\" [dateFilter]=\"dateFilter()\" [dateClass]=\"dateClass()\"\n (click)=\"$event.stopImmediatePropagation()\" (selectedChange)=\"onSelectedDateChange($event)\"\n #matMonthView2>\n </mat-month-view>\n </div>\n\n @if (timeRange) {\n <mat-form-field class=\"time end-time\">\n <input matInput [formControl]=\"endTimeFormControl\" (blur)=\"updateEndTime($event)\" tabindex=\"4\">\n <mat-label>\u7ED3\u675F\u65F6\u95F4</mat-label>\n </mat-form-field>\n }\n\n </div>\n\n </ng-template>", styles: ["cmat-date-range{display:flex}cmat-date-range .range{display:flex;width:100%;align-items:center;height:48px;min-height:48px;max-height:48px;cursor:pointer}cmat-date-range .range .start,cmat-date-range .range .end{display:flex;align-items:center;height:100%;padding:0 16px;border-radius:6px;border-width:1px;line-height:1}cmat-date-range .range .date{white-space:nowrap}cmat-date-range .range .date+.time{margin-left:8px}cmat-date-range .range .time{white-space:nowrap}cmat-date-range .separator{margin:0 8px}.cmat-date-range-panel{border-radius:4px;padding:24px}.cmat-date-range-panel .start,.cmat-date-range-panel .end{display:flex;flex-direction:column}.cmat-date-range-panel .start .month,.cmat-date-range-panel .end .month{max-width:196px;min-width:196px;width:196px}.cmat-date-range-panel .start .month .month-header,.cmat-date-range-panel .end .month .month-header{position:relative;display:flex;align-items:center;justify-content:center;height:32px;margin-bottom:16px}.cmat-date-range-panel .start .month .month-header .previous-button,.cmat-date-range-panel .start .month .month-header .next-button,.cmat-date-range-panel .end .month .month-header .previous-button,.cmat-date-range-panel .end .month .month-header .next-button{position:absolute;width:24px!important;height:24px!important;min-height:24px!important;max-height:24px!important;line-height:24px!important}.cmat-date-range-panel .start .month .month-header .previous-button,.cmat-date-range-panel .end .month .month-header .previous-button{left:0}.cmat-date-range-panel .start .month .month-header .next-button,.cmat-date-range-panel .end .month .month-header .next-button{right:0}.cmat-date-range-panel .start .month .month-header .month-label,.cmat-date-range-panel .end .month .month-header .month-label{font-weight:500}.cmat-date-range-panel .start .month mat-month-view,.cmat-date-range-panel .end .month mat-month-view{display:flex;min-height:188px}.cmat-date-range-panel .start .month mat-month-view .mat-calendar-table,.cmat-date-range-panel .end .month mat-month-view .mat-calendar-table{width:100%;border-collapse:collapse}.cmat-date-range-panel .start .month mat-month-view .mat-calendar-table tbody tr[aria-hidden=true],.cmat-date-range-panel .end .month mat-month-view .mat-calendar-table tbody tr[aria-hidden=true]{display:none!important}.cmat-date-range-panel .start .month mat-month-view .mat-calendar-table tbody tr:first-child td:first-child[aria-hidden=true],.cmat-date-range-panel .end .month mat-month-view .mat-calendar-table tbody tr:first-child td:first-child[aria-hidden=true]{visibility:hidden;pointer-events:none;opacity:0}.cmat-date-range-panel .start .month mat-month-view .mat-calendar-table tbody tr td .mat-calendar-body-cell-content,.cmat-date-range-panel .end .month mat-month-view .mat-calendar-table tbody tr td .mat-calendar-body-cell-content{background-color:transparent!important}.cmat-date-range-panel .start .month mat-month-view .mat-calendar-table tbody .mat-calendar-body-today,.cmat-date-range-panel .end .month mat-month-view .mat-calendar-table tbody .mat-calendar-body-today{border:none!important}.cmat-date-range-panel .start .month mat-month-view .mat-calendar-table tbody .mat-calendar-body-cell,.cmat-date-range-panel .end .month mat-month-view .mat-calendar-table tbody .mat-calendar-body-cell{width:28px!important;height:28px!important;padding:2px!important}.cmat-date-range-panel .start .month mat-month-view .mat-calendar-table tbody .mat-calendar-body-cell.cmat-date-range:before,.cmat-date-range-panel .end .month mat-month-view .mat-calendar-table tbody .mat-calendar-body-cell.cmat-date-range:before{content:\"\";position:absolute;inset:2px 0}.cmat-date-range-panel .start .month mat-month-view .mat-calendar-table tbody .mat-calendar-body-cell.cmat-date-range.cmat-date-range-start:before,.cmat-date-range-panel .end .month mat-month-view .mat-calendar-table tbody .mat-calendar-body-cell.cmat-date-range.cmat-date-range-start:before{border-radius:999px 0 0 999px}.cmat-date-range-panel .start .month mat-month-view .mat-calendar-table tbody .mat-calendar-body-cell.cmat-date-range.cmat-date-range-start.cmat-date-range-end:before,.cmat-date-range-panel .end .month mat-month-view .mat-calendar-table tbody .mat-calendar-body-cell.cmat-date-range.cmat-date-range-start.cmat-date-range-end:before{right:2px;border-radius:999px}.cmat-date-range-panel .start .month mat-month-view .mat-calendar-table tbody .mat-calendar-body-cell.cmat-date-range.cmat-date-range-end:before,.cmat-date-range-panel .end .month mat-month-view .mat-calendar-table tbody .mat-calendar-body-cell.cmat-date-range.cmat-date-range-end:before{border-radius:0 999px 999px 0}.cmat-date-range-panel .start .month mat-month-view .mat-calendar-table tbody .mat-calendar-body-cell .mat-calendar-body-cell-content,.cmat-date-range-panel .end .month mat-month-view .mat-calendar-table tbody .mat-calendar-body-cell .mat-calendar-body-cell-content{position:relative;top:0;left:0;width:24px;height:24px;font-size:12px}.cmat-date-range-panel .time{width:100%;max-width:196px}.cmat-date-range-panel .start{align-items:flex-start;margin-right:20px}.cmat-date-range-panel .start .month .month-label{margin-left:8px}.cmat-date-range-panel .end{align-items:flex-end;margin-left:20px}.cmat-date-range-panel .end .month .month-label{margin-right:8px}\n"], dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i4.MatMonthView, selector: "mat-month-view", inputs: ["activeDate", "selected", "minDate", "maxDate", "dateFilter", "dateClass", "comparisonStart", "comparisonEnd", "startDateAccessibleName", "endDateAccessibleName", "activeDrag"], outputs: ["selectedChange", "_userSelection", "dragStarted", "dragEnded", "activeDateChange"], exportAs: ["matMonthView"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatLabel, selector: "mat-label" }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i6.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i7.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i7.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
518
518
|
}
|
|
519
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
519
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: CmatDateRangeComponent, decorators: [{
|
|
520
520
|
type: Component,
|
|
521
521
|
args: [{ selector: 'cmat-date-range', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, exportAs: 'cmatDateRange', providers: [
|
|
522
522
|
{
|
|
@@ -550,4 +550,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImpor
|
|
|
550
550
|
}], range: [{
|
|
551
551
|
type: Input
|
|
552
552
|
}] } });
|
|
553
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1yYW5nZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbWF0L2NvbXBvbmVudHMvZGF0ZS1yYW5nZS9kYXRlLXJhbmdlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NtYXQvY29tcG9uZW50cy9kYXRlLXJhbmdlL2RhdGUtcmFuZ2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFBRSx1QkFBdUIsRUFBcUIsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFlLFNBQVMsRUFBb0IsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM04sT0FBTyxFQUF3QixXQUFXLEVBQUUsaUJBQWlCLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BJLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQTJDLG1CQUFtQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDNUcsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEtBQWdCLE1BQU0sT0FBTyxDQUFDO0FBQ3JDLE9BQU8sU0FBUyxNQUFNLHdCQUF3QixDQUFDO0FBQy9DLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7OztBQW9CL0IsTUFBTSxPQUFPLHNCQUFzQjtJQTRCL0IsWUFDWSxRQUFpQixFQUNqQixpQkFBbUMs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Q1A7NEJBQ0ksT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsdUJBQXVCLENBQUM7NEJBQ3JELEtBQUssRUFBRSxJQUFJO3lCQUNkO3FCQUNKLGNBQ1csSUFBSSxXQUNQLENBQUMsZUFBZSxFQUFFLGFBQWEsRUFBRSxtQkFBbUIsRUFBRSxrQkFBa0IsRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixDQUFDOzJJQUdqSCxZQUFZO3NCQUE5QixNQUFNO2dCQUM2QixjQUFjO3NCQUFqRCxTQUFTO3VCQUFDLGVBQWU7Z0JBQ1UsY0FBYztzQkFBakQsU0FBUzt1QkFBQyxlQUFlO2dCQUNvQyxrQkFBa0I7c0JBQS9FLFNBQVM7dUJBQUMsbUJBQW1CLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUNsQixZQUFZO3NCQUE3QyxTQUFTO3VCQUFDLGFBQWE7Z0JBeUNwQixRQUFRO3NCQURYLEtBQUs7Z0JBVUYsVUFBVTtzQkFEYixLQUFLO2dCQWtCRixVQUFVO3NCQURiLEtBQUs7Z0JBb0JGLFNBQVM7c0JBRFosS0FBSztnQkF5Q0YsS0FBSztzQkFEUixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT3ZlcmxheSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcclxuaW1wb3J0IHsgVGVtcGxhdGVQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcclxuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgZm9yd2FyZFJlZiwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQsIFZpZXdDb250YWluZXJSZWYsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBGb3JtQ29udHJvbCwgTkdfVkFMVUVfQUNDRVNTT1IsIFZhbGlkYXRvcnMsIEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xyXG5pbXBvcnQgeyBNYXRDYWxlbmRhckNlbGxDc3NDbGFzc2VzLCBNYXRNb250aFZpZXcsIE1hdERhdGVwaWNrZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kYXRlcGlja2VyJztcclxuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XHJcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcclxuaW1wb3J0IHsgTWF0SW5wdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XHJcbmltcG9ydCBkYXlqcywgeyBEYXlqcyB9IGZyb20gJ2RheWpzJztcclxuaW1wb3J0IGlzQmV0d2VlbiBmcm9tICdkYXlqcy9wbHVnaW4vaXNCZXR3ZWVuJztcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdjbWF0LWRhdGUtcmFuZ2UnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2RhdGUtcmFuZ2UuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vZGF0ZS1yYW5nZS5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gICAgZXhwb3J0QXM6ICdjbWF0RGF0ZVJhbmdlJyxcclxuICAgIHByb3ZpZGVyczogW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IENtYXREYXRlUmFuZ2VDb21wb25lbnQpLFxyXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZVxyXG4gICAgICAgIH1cclxuICAgIF0sXHJcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gICAgaW1wb3J0czogW01hdEJ1dHRvbk1vZHVsZSwgTWF0SWNvbk1vZHVsZSwgTWF0RGF0ZXBpY2tlck1vZHVsZSwgTWF0Rm9ybUZpZWxkTW9kdWxlLCBNYXRJbnB1dE1vZHVsZSwgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGVdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDbWF0RGF0ZVJhbmdlQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gICAgQE91dHB1dCgpIHJlYWRvbmx5IHJhbmdlQ2hhbmdlZDogRXZlbnRFbWl0dGVyPHsgc3RhcnQ6IHN0cmluZzsgZW5kOiBzdHJpbmcgfT4gPSBuZXcgRXZlbnRFbWl0dGVyPHsgc3RhcnQ6IHN0cmluZzsgZW5kOiBzdHJpbmcgfT4oKTtcclxuICAgIEBWaWV3Q2hpbGQoJ21hdE1vbnRoVmlldzEnKSBwcml2YXRlIF9tYXRNb250aFZpZXcxOiBNYXRNb250aFZpZXc8YW55PjtcclxuICAgIEBWaWV3Q2hpbGQoJ21hdE1vbnRoVmlldzInKSBwcml2YXRlIF9tYXRNb250aFZpZXcyOiBNYXRNb250aFZpZXc8YW55PjtcclxuICAgIEBWaWV3Q2hpbGQoJ3BpY2tlclBhbmVsT3JpZ2luJywgeyByZWFkOiBFbGVtZW50UmVmIH0pIHByaXZhdGUgX3BpY2tlclBhbmVsT3JpZ2luOiBFbGVtZW50UmVmO1xyXG4gICAgQFZpZXdDaGlsZCgncGlja2VyUGFuZWwnKSBwcml2YXRlIF9waWNrZXJQYW5lbDogVGVtcGxhdGVSZWY8YW55PjtcclxuXHJcbiAgICBhY3RpdmVEYXRlczogeyBtb250aDE6IERheWpzIHwgbnVsbDsgbW9udGgyOiBEYXlqcyB8IG51bGwgfSA9IHtcclxuICAgICAgICBtb250aDE6IG51bGwsXHJcbiAgICAgICAgbW9udGgyOiBudWxsXHJcbiAgICB9O1xyXG4gICAgc2V0V2hpY2hEYXRlOiAnc3RhcnQnIHwgJ2VuZCcgPSAnc3RhcnQnO1xyXG4gICAgc3RhcnRUaW1lRm9ybUNvbnRyb2w6IEZvcm1Db250cm9sO1xyXG4gICAgZW5kVGltZUZvcm1Db250cm9sOiBGb3JtQ29udHJvbDtcclxuICAgIHByaXZhdGUgX2RhdGVGb3JtYXQ6IHN0cmluZztcclxuICAgIHByaXZhdGUgX29uQ2hhbmdlOiAodmFsdWU6IGFueSkgPT4gdm9pZDtcclxuICAgIHByaXZhdGUgX29uVG91Y2hlZDogKHZhbHVlOiBhbnkpID0+IHZvaWQ7XHJcbiAgICBwcml2YXRlIF9wcm9ncmFtbWF0aWNDaGFuZ2UhOiBib29sZWFuO1xyXG4gICAgcHJpdmF0ZSBfcmFuZ2U6IHsgc3RhcnQ6IERheWpzIHwgbnVsbDsgZW5kOiBEYXlqcyB8IG51bGwgfSA9IHtcclxuICAgICAgICBzdGFydDogbnVsbCxcclxuICAgICAgICBlbmQ6IG51bGxcclxuICAgIH07XHJcbiAgICBwcml2YXRlIF90aW1lRm9ybWF0OiBzdHJpbmc7XHJcbiAgICBwcml2YXRlIF90aW1lUmFuZ2U6IGJvb2xlYW47XHJcbiAgICBwcml2YXRlIF9yZWFkb25seTogYm9vbGVhbjtcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgX3RpbWVSZWdFeHA6IFJlZ0V4cCA9IG5ldyBSZWdFeHAoJ14oMFswLTldfDFbMC05XXwyWzAtNF18WzAtOV0pOihbMC01XVswLTldKShBfCg/OkFNKXxQfCg/OlBNKSk/JCcsICdpJyk7XHJcbiAgICBwcml2YXRlIF91bnN1YnNjcmliZUFsbDogU3ViamVjdDxhbnk+ID0gbmV3IFN1YmplY3Q8YW55PigpO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByaXZhdGUgX292ZXJsYXk6IE92ZXJsYXksXHJcbiAgICAgICAgcHJpdmF0ZSBfdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcclxuICAgICAgICBwcml2YXRlIF9jaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWZcclxuICAgICkge1xyXG4gICAgICAgIGRheWpzLmV4dGVuZChpc0JldHdlZW4pO1xyXG5cclxuICAgICAgICB0aGlzLl9vbkNoYW5nZSA9ICgpOiB2b2lkID0+IHsgfTtcclxuICAgICAgICB0aGlzLl9vblRvdWNoZWQgPSAoKTogdm9pZCA9PiB7IH07XHJcbiAgICAgICAgdGhpcy5kYXRlRm9ybWF0ID0gJ1lZWVkvTU0vREQnO1xyXG4gICAgICAgIHRoaXMudGltZUZvcm1hdCA9ICcxMic7ICAgICAgICBcclxuICAgIH1cclxuXHJcbiAgICBnZXQgcmVhZG9ubHkoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3JlYWRvbmx5O1xyXG4gICAgfVxyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBzZXQgcmVhZG9ubHkodmFsdWUpIHtcclxuICAgICAgICB0aGlzLl9yZWFkb25seSA9IHZhbHVlO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbWVtYmVyLW9yZGVyaW5nXHJcbiAgICBnZXQgZGF0ZUZvcm1hdCgpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9kYXRlRm9ybWF0O1xyXG4gICAgfVxyXG4gICAgQElucHV0KClcclxuICAgIHNldCBkYXRlRm9ybWF0KHZhbHVlOiBzdHJpbmcpIHtcclxuICAgICAgICAvLyBSZXR1cm4gaWYgdGhlIHZhbHVlcyBhcmUgdGhlIHNhbWVcclxuICAgICAgICBpZiAodGhpcy5fZGF0ZUZvcm1hdCA9PT0gdmFsdWUpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gU3RvcmUgdGhlIHZhbHVlXHJcbiAgICAgICAgdGhpcy5fZGF0ZUZvcm1hdCA9IHZhbHVlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2V0dGVyICYgZ2V0dGVyIGZvciB0aW1lRm9ybWF0IGlucHV0ICovXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L21lbWJlci1vcmRlcmluZ1xyXG4gICAgZ2V0IHRpbWVGb3JtYXQoKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fdGltZUZvcm1hdDtcclxuICAgIH1cclxuICAgIEBJbnB1dCgpXHJcbiAgICBzZXQgdGltZUZvcm1hdCh2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICAgICAgLy8gUmV0dXJuIGlmIHRoZSB2YWx1ZXMgYXJlIHRoZSBzYW1lXHJcbiAgICAgICAgaWYgKHRoaXMuX3RpbWVGb3JtYXQgPT09IHZhbHVlKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIFNldCBmb3JtYXQgYmFzZWQgb24gdGhlIHRpbWUgZm9ybWF0IGlucHV0XHJcbiAgICAgICAgdGhpcy5fdGltZUZvcm1hdCA9IHZhbHVlID09PSAnMTInID8gJ2hoOm1tQScgOiAnSEg6bW0nO1xyXG4gICAgfVxyXG5cclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTZXR0ZXIgJiBnZXR0ZXIgZm9yIHRpbWVSYW5nZSBpbnB1dCAqL1xyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9tZW1iZXItb3JkZXJpbmdcclxuICAgIGdldCB0aW1lUmFuZ2UoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RpbWVSYW5nZTtcclxuICAgIH1cclxuICAgIEBJbnB1dCgpXHJcbiAgICBzZXQgdGltZVJhbmdlKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICAgICAgLy8gUmV0dXJuIGlmIHRoZSB2YWx1ZXMgYXJlIHRoZSBzYW1lXHJcbiAgICAgICAgaWYgKHRoaXMuX3RpbWVSYW5nZSA9PT0gdmFsdWUpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gU3RvcmUgdGhlIHZhbHVlXHJcbiAgICAgICAgdGhpcy5fdGltZVJhbmdlID0gdmFsdWU7XHJcblxyXG4gICAgICAgIC8vIElmIHRoZSB0aW1lIHJhbmdlIHR1cm5lZCBvZmYuLi5cclxuICAgICAgICBpZiAoIXZhbHVlICYmIHRoaXMuX3JhbmdlLnN0YXJ0ICYmIHRoaXMuX3JhbmdlLmVuZCkge1xyXG4gICAgICAgICAgICB0aGlzLnJhbmdlID0ge1xyXG4gICAgICAgICAgICAgICAgc3RhcnQ6IHRoaXMuX3JhbmdlLnN0YXJ0LmNsb25lKCkuc3RhcnRPZignZGF5JyksXHJcbiAgICAgICAgICAgICAgICBlbmQ6IHRoaXMuX3JhbmdlLmVuZC5jbG9uZSgpLmVuZE9mKCdkYXknKVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNldHRlciAmIGdldHRlciBmb3IgcmFuZ2UgaW5wdXQgKi9cclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbWVtYmVyLW9yZGVyaW5nXHJcbiAgICBnZXQgcmFuZ2UoKTogYW55IHtcclxuICAgICAgICBpZiAodGhpcy5fcmFuZ2Uuc3RhcnQgJiYgdGhpcy5fcmFuZ2UuZW5kKSB7XHJcbiAgICAgICAgICAgIC8vIENsb25lIHRoZSByYW5nZSBzdGFydCBhbmQgZW5kXHJcbiAgICAgICAgICAgIGNvbnN0IHN0YXJ0ID0gdGhpcy5fcmFuZ2Uuc3RhcnQuY2xvbmUoKTtcclxuICAgICAgICAgICAgY29uc3QgZW5kID0gdGhpcy5fcmFuZ2UuZW5kLmNsb25lKCk7XHJcblxyXG4gICAgICAgICAgICAvLyBCdWlsZCBhbmQgcmV0dXJuIHRoZSByYW5nZSBvYmplY3RcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIHN0YXJ0RGF0ZTogc3RhcnQuY2xvbmUoKS5mb3JtYXQodGhpcy5kYXRlRm9ybWF0KSxcclxuICAgICAgICAgICAgICAgIHN0YXJ0VGltZTogdGhpcy50aW1lUmFuZ2UgPyBzdGFydC5jbG9uZSgpLmZvcm1hdCh0aGlzLnRpbWVGb3JtYXQpIDogbnVsbCxcclxuICAgICAgICAgICAgICAgIGVuZERhdGU6IGVuZC5jbG9uZSgpLmZvcm1hdCh0aGlzLmRhdGVGb3JtYXQpLFxyXG4gICAgICAgICAgICAgICAgZW5kVGltZTogdGhpcy50aW1lUmFuZ2UgPyBlbmQuY2xvbmUoKS5mb3JtYXQodGhpcy50aW1lRm9ybWF0KSA6IG51bGxcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB2b2lkIDA7XHJcbiAgICB9XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHNldCByYW5nZSh2YWx1ZSkge1xyXG4gICAgICAgIGlmICghdmFsdWUpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIHZhbHVlIGlzIGFuIG9iamVjdCBhbmQgaGFzICdzdGFydCcgYW5kICdlbmQnIHZhbHVlc1xyXG4gICAgICAgIGlmICghdmFsdWUuc3RhcnQgfHwgIXZhbHVlLmVuZCkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdSYW5nZSBpbnB1dCBtdXN0IGhhdmUgXCJzdGFydFwiIGFuZCBcImVuZFwiIHByb3BlcnRpZXMhJyk7XHJcblxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBDaGVjayBpZiB3ZSBhcmUgc2V0dGluZyBhbiBpbmRpdmlkdWFsIGRhdGUgb3IgYm90aCBvZiB0aGVtXHJcbiAgICAgICAgY29uc3Qgd2hpY2hEYXRlID0gdmFsdWUud2hpY2hEYXRlIHx8IG51bGw7XHJcblxyXG4gICAgICAgIC8vIEdldCB0aGUgc3RhcnQgYW5kIGVuZCBkYXRlcyBhcyBtb21lbnRcclxuICAgICAgICBjb25zdCBzdGFydCA9IGRheWpzKHZhbHVlLnN0YXJ0KTtcclxuICAgICAgICBjb25zdCBlbmQgPSBkYXlqcyh2YWx1ZS5lbmQpO1xyXG5cclxuICAgICAgICAvLyBJZiB3ZSBhcmUgb25seSBzZXR0aW5nIHRoZSBzdGFydCBkYXRlLi4uXHJcbiAgICAgICAgaWYgKHdoaWNoRGF0ZSA9PT0gJ3N0YXJ0Jykge1xyXG4gICAgICAgICAgICAvLyBTZXQgdGhlIHN0YXJ0IGRhdGVcclxuICAgICAgICAgICAgdGhpcy5fcmFuZ2Uuc3RhcnQgPSBzdGFydC5jbG9uZSgpO1xyXG5cclxuICAgICAgICAgICAgLy8gSWYgdGhlIHNlbGVjdGVkIHN0YXJ0IGRhdGUgaXMgYWZ0ZXIgdGhlIGVuZCBkYXRlLi4uXHJcbiAgICAgICAgICAgIGlmICh0aGlzLl9yYW5nZS5lbmQgJiYgdGhpcy5fcmFuZ2Uuc3RhcnQuaXNBZnRlcih0aGlzLl9yYW5nZS5lbmQpKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBTZXQgdGhlIGVuZCBkYXRlIHRvIHRoZSBzdGFydCBkYXRlIGJ1dCBrZWVwIHRoZSBlbmQgZGF0ZSdzIHRpbWVcclxuICAgICAgICAgICAgICAgIGNvbnN0IGVuZERhdGUgPSBzdGFydC5jbG9uZSgpLmhvdXIodGhpcy5fcmFuZ2UuZW5kLmhvdXIoKSkubWludXRlKHRoaXMuX3JhbmdlLmVuZC5taW51dGUoKSkuc2Vjb25kKHRoaXMuX3JhbmdlLmVuZC5zZWNvbmQoKSk7XHJcblxyXG4gICAgICAgICAgICAgICAgLy8gVGVzdCB0aGlzIG5ldyBlbmQgZGF0ZSB0byBzZWUgaWYgaXQncyBhaGVhZCBvZiB0aGUgc3RhcnQgZGF0ZVxyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuX3JhbmdlLnN0YXJ0LmlzQmVmb3JlKGVuZERhdGUpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gSWYgaXQncywgc2V0IHRoZSBuZXcgZW5kIGRhdGVcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9yYW5nZS5lbmQgPSBlbmREYXRlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gT3RoZXJ3aXNlLCBzZXQgdGhlIGVuZCBkYXRlIHNhbWUgYXMgdGhlIHN0YXJ0IGRhdGVcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9yYW5nZS5lbmQgPSBzdGFydC5jbG9uZSgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBJZiB3ZSBhcmUgb25seSBzZXR0aW5nIHRoZSBlbmQgZGF0ZS4uLlxyXG4gICAgICAgIGlmICh3aGljaERhdGUgPT09ICdlbmQnKSB7XHJcbiAgICAgICAgICAgIC8vIFNldCB0aGUgZW5kIGRhdGVcclxuICAgICAgICAgICAgdGhpcy5fcmFuZ2UuZW5kID0gZW5kLmNsb25lKCk7XHJcblxyXG4gICAgICAgICAgICAvLyBJZiB0aGUgc2VsZWN0ZWQgZW5kIGRhdGUgaXMgYmVmb3JlIHRoZSBzdGFydCBkYXRlLi4uXHJcbiAgICAgICAgICAgIGlmICh0aGlzLl9yYW5nZS5zdGFydCAmJiB0aGlzLl9yYW5nZS5zdGFydC5pc0FmdGVyKHRoaXMuX3JhbmdlLmVuZCkpIHtcclxuICAgICAgICAgICAgICAgIC8vIFNldCB0aGUgc3RhcnQgZGF0ZSB0byB0aGUgZW5kIGRhdGUgYnV0IGtlZXAgdGhlIHN0YXJ0IGRhdGUncyB0aW1lXHJcbiAgICAgICAgICAgICAgICBjb25zdCBzdGFydERhdGUgPSBlbmQuY2xvbmUoKS5ob3VyKHRoaXMuX3JhbmdlLnN0YXJ0LmhvdXIoKSkubWludXRlKHRoaXMuX3JhbmdlLnN0YXJ0Lm1pbnV0ZSgpKS5zZWNvbmQodGhpcy5fcmFuZ2Uuc3RhcnQuc2Vjb25kKCkpO1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIFRlc3QgdGhpcyBuZXcgZW5kIGRhdGUgdG8gc2VlIGlmIGl0J3MgYWhlYWQgb2YgdGhlIHN0YXJ0IGRhdGVcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLl9yYW5nZS5lbmQuaXNBZnRlcihzdGFydERhdGUpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gSWYgaXQncywgc2V0IHRoZSBuZXcgc3RhcnQgZGF0ZVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3JhbmdlLnN0YXJ0ID0gc3RhcnREYXRlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gT3RoZXJ3aXNlLCBzZXQgdGhlIHN0YXJ0IGRhdGUgc2FtZSBhcyB0aGUgZW5kIGRhdGVcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9yYW5nZS5zdGFydCA9IGVuZC5jbG9uZSgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBJZiB3ZSBhcmUgc2V0dGluZyBib3RoIGRhdGVzLi4uXHJcbiAgICAgICAgaWYgKCF3aGljaERhdGUpIHtcclxuICAgICAgICAgICAgLy8gU2V0IHRoZSBzdGFydCBkYXRlXHJcbiAgICAgICAgICAgIHRoaXMuX3JhbmdlLnN0YXJ0ID0gc3RhcnQuY2xvbmUoKTtcclxuXHJcbiAgICAgICAgICAgIC8vIElmIHRoZSBzdGFydCBkYXRlIGlzIGJlZm9yZSB0aGUgZW5kIGRhdGUsIHNldCB0aGUgZW5kIGRhdGUgYXMgbm9ybWFsLlxyXG4gICAgICAgICAgICAvLyBJZiB0aGUgc3RhcnQgZGF0ZSBpcyBhZnRlciB0aGUgZW5kIGRhdGUsIHNldCB0aGUgZW5kIGRhdGUgc2FtZSBhcyB0aGUgc3RhcnQgZGF0ZS5cclxuICAgICAgICAgICAgdGhpcy5fcmFuZ2UuZW5kID0gc3RhcnQuaXNCZWZvcmUoZW5kKSA/IGVuZC5jbG9uZSgpIDogc3RhcnQuY2xvbmUoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLl9yYW5nZS5zdGFydCAmJiB0aGlzLl9yYW5nZS5lbmQpIHtcclxuICAgICAgICAgICAgLy8gUHJlcGFyZSBhbm90aGVyIHJhbmdlIG9iamVjdCB0aGF0IGhvbGRzIHRoZSBJU08gZm9ybWF0dGVkIHJhbmdlIGRhdGVzXHJcbiAgICAgICAgICAgIGNvbnN0IHJhbmdlID0ge1xyXG4gICAgICAgICAgICAgICAgc3RhcnQ6IHRoaXMuX3JhbmdlLnN0YXJ0LmNsb25lKCkudG9JU09TdHJpbmcoKSxcclxuICAgICAgICAgICAgICAgIGVuZDogdGhpcy5fcmFuZ2UuZW5kLmNsb25lKCkudG9JU09TdHJpbmcoKVxyXG4gICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgLy8gRW1pdCB0aGUgcmFuZ2UgY2hhbmdlZCBldmVudCB3aXRoIHRoZSByYW5nZVxyXG4gICAgICAgICAgICB0aGlzLnJhbmdlQ2hhbmdlZC5lbWl0KHJhbmdlKTtcclxuXHJcbiAgICAgICAgICAgIC8vIFVwZGF0ZSB0aGUgbW9kZWwgd2l0aCB0aGUgcmFuZ2UgaWYgdGhlIGNoYW5nZSB3YXMgbm90IGEgcHJvZ3JhbW1hdGljIGNoYW5nZVxyXG4gICAgICAgICAgICAvLyBCZWNhdXNlIHByb2dyYW1tYXRpYyBjaGFuZ2VzIHRyaWdnZXIgd3JpdGVWYWx1ZSB3aGljaCB0cmlnZ2VycyBvbkNoYW5nZSBhbmQgb25Ub3VjaGVkXHJcbiAgICAgICAgICAgIC8vIGludGVybmFsbHkgY2F1c2luZyB0aGVtIHRvIHRyaWdnZXIgdHdpY2Ugd2hpY2ggYnJlYWtzIHRoZSBmb3JtJ3MgcHJpc3RpbmUgYW5kIHRvdWNoZWRcclxuICAgICAgICAgICAgLy8gc3RhdHVzZXMuXHJcbiAgICAgICAgICAgIGlmICghdGhpcy5fcHJvZ3JhbW1hdGljQ2hhbmdlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9vblRvdWNoZWQocmFuZ2UpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fb25DaGFuZ2UocmFuZ2UpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvLyBTZXQgdGhlIGFjdGl2ZSBkYXRlc1xyXG4gICAgICAgICAgICB0aGlzLmFjdGl2ZURhdGVzID0ge1xyXG4gICAgICAgICAgICAgICAgbW9udGgxOiB0aGlzLl9yYW5nZS5zdGFydC5jbG9uZSgpLFxyXG4gICAgICAgICAgICAgICAgbW9udGgyOiB0aGlzLl9yYW5nZS5zdGFydC5jbG9uZSgpLmFkZCgxLCAnbW9udGgnKVxyXG4gICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgLy8gU2V0IHRoZSB0aW1lIGZvcm0gY29udHJvbHNcclxuICAgICAgICAgICAgdGhpcy5zdGFydFRpbWVGb3JtQ29udHJvbC5zZXRWYWx1ZSh0aGlzLl9yYW5nZS5zdGFydC5jbG9uZSgpLmZvcm1hdCh0aGlzLl90aW1lRm9ybWF0KS50b1N0cmluZygpKTtcclxuICAgICAgICAgICAgdGhpcy5lbmRUaW1lRm9ybUNvbnRyb2wuc2V0VmFsdWUodGhpcy5fcmFuZ2UuZW5kLmNsb25lKCkuZm9ybWF0KHRoaXMuX3RpbWVGb3JtYXQpLnRvU3RyaW5nKCkpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gUnVuIG5nQWZ0ZXJDb250ZW50SW5pdCBvbiBtb250aCB2aWV3cyB0byB0cmlnZ2VyXHJcbiAgICAgICAgLy8gcmUtcmVuZGVyIG9uIG1vbnRoIHZpZXdzIGlmIHRoZXkgYXJlIGF2YWlsYWJsZVxyXG4gICAgICAgIGlmICh0aGlzLl9tYXRNb250aFZpZXcxICYmIHRoaXMuX21hdE1vbnRoVmlldzIpIHtcclxuICAgICAgICAgICAgdGhpcy5fbWF0TW9udGhWaWV3MS5uZ0FmdGVyQ29udGVudEluaXQoKTtcclxuICAgICAgICAgICAgdGhpcy5fbWF0TW9udGhWaWV3Mi5uZ0FmdGVyQ29udGVudEluaXQoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIFJlc2V0IHRoZSBwcm9ncmFtbWF0aWMgY2hhbmdlIHN0YXR1c1xyXG4gICAgICAgIHRoaXMuX3Byb2dyYW1tYXRpY0NoYW5nZSA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICAgIC8vIEAgQ29udHJvbCBWYWx1ZSBBY2Nlc3NvclxyXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFVwZGF0ZSB0aGUgZm9ybSBtb2RlbCBvbiBjaGFuZ2VcclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gZm5cclxuICAgICAqL1xyXG4gICAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fb25DaGFuZ2UgPSBmbjtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFVwZGF0ZSB0aGUgZm9ybSBtb2RlbCBvbiBibHVyXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIGZuXHJcbiAgICAgKi9cclxuICAgIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9vblRvdWNoZWQgPSBmbjtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFdyaXRlIHRvIHZpZXcgZnJvbSBtb2RlbCB3aGVuIHRoZSBmb3JtIG1vZGVsIGNoYW5nZXMgcHJvZ3JhbW1hdGljYWxseVxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSByYW5nZVxyXG4gICAgICovXHJcbiAgICB3cml0ZVZhbHVlKHJhbmdlOiB7IHN0YXJ0OiBzdHJpbmc7IGVuZDogc3RyaW5nIH0pOiB2b2lkIHtcclxuICAgICAgICAvLyBTZXQgdGhpcyBjaGFuZ2UgYXMgYSBwcm9ncmFtbWF0aWMgb25lXHJcbiAgICAgICAgdGhpcy5fcHJvZ3JhbW1hdGljQ2hhbmdlID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgLy8gU2V0IHRoZSByYW5nZVxyXG4gICAgICAgIHRoaXMucmFuZ2UgPSByYW5nZTtcclxuXHJcbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgLy8gSW5pdGlhbGl6ZSB0aGUgY29tcG9uZW50XHJcbiAgICAgICAgdGhpcy5faW5pdCgpO1xyXG4gICAgfVxyXG4gICAgLyoqXHJcbiAgICAgKiBPbiBkZXN0cm95XHJcbiAgICAgKi9cclxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX3Vuc3Vic2NyaWJlQWxsLm5leHQodm9pZCAwKTtcclxuICAgICAgICB0aGlzLl91bnN1YnNjcmliZUFsbC5jb21wbGV0ZSgpO1xyXG5cclxuICAgICAgICB0aGlzLndyaXRlVmFsdWUgPSAoKTogdm9pZCA9PiB7IH07XHJcbiAgICB9XHJcblxyXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICAgIC8vIEAgUHVibGljIG1ldGhvZHNcclxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBPcGVuIHRoZSBwaWNrZXIgcGFuZWxcclxuICAgICAqL1xyXG4gICAgb3BlblBpY2tlclBhbmVsKCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLnJlYWRvbmx5KVxyXG4gICAgICAgICAgICByZXR1cm47XHJcblxyXG4gICAgICAgIC8vIENyZWF0ZSB0aGUgb3ZlcmxheVxyXG4gICAgICAgIGNvbnN0IG92ZXJsYXlSZWYgPSB0aGlzLl9vdmVybGF5LmNyZWF0ZSh7XHJcbiAgICAgICAgICAgIHBhbmVsQ2xhc3M6ICdjbWF0LWRhdGUtcmFuZ2UtcGFuZWwnLFxyXG4gICAgICAgICAgICBiYWNrZHJvcENsYXNzOiAnJyxcclxuICAgICAgICAgICAgaGFzQmFja2Ryb3A6IHRydWUsXHJcbiAgICAgICAgICAgIHNjcm9sbFN0cmF0ZWd5OiB0aGlzLl9vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMucmVwb3NpdGlvbigpLFxyXG4gICAgICAgICAgICBwb3NpdGlvblN0cmF0ZWd5OiB0aGlzLl9vdmVybGF5LnBvc2l0aW9uKClcclxuICAgICAgICAgICAgICAgIC5mbGV4aWJsZUNvbm5lY3RlZFRvKHRoaXMuX3BpY2tlclBhbmVsT3JpZ2luKVxyXG4gICAgICAgICAgICAgICAgLndpdGhQb3NpdGlvbnMoW1xyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luWDogJ3N0YXJ0JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luWTogJ2JvdHRvbScsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJsYXlYOiAnc3RhcnQnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvdmVybGF5WTogJ3RvcCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldFk6IDhcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luWDogJ3N0YXJ0JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luWTogJ3RvcCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJsYXlYOiAnc3RhcnQnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvdmVybGF5WTogJ2JvdHRvbScsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldFk6IC04XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgXSlcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgLy8gQ3JlYXRlIGEgcG9ydGFsIGZyb20gdGhlIHRlbXBsYXRlXHJcbiAgICAgICAgY29uc3QgdGVtcGxhdGVQb3J0YWwgPSBuZXcgVGVtcGxhdGVQb3J0YWwodGhpcy5fcGlja2VyUGFuZWwsIHRoaXMuX3ZpZXdDb250YWluZXJSZWYpO1xyXG5cclxuICAgICAgICAvLyBPbiBiYWNrZHJvcCBjbGlja1xyXG4gICAgICAgIG92ZXJsYXlSZWYuYmFja2Ryb3BDbGljaygpLnN1YnNjcmliZSgoKSA9PiB7XHJcblxyXG4gICAgICAgICAgICAvLyBJZiB0ZW1wbGF0ZSBwb3J0YWwgZXhpc3RzIGFuZCBhdHRhY2hlZC4uLlxyXG4gICAgICAgICAgICBpZiAodGVtcGxhdGVQb3J0YWwgJiYgdGVtcGxhdGVQb3J0YWwuaXNBdHRhY2hlZCkge1xyXG4gICAgICAgICAgICAgICAgLy8gRGV0YWNoIGl0XHJcbiAgICAgICAgICAgICAgICB0ZW1wbGF0ZVBvcnRhbC5kZXRhY2goKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLy8gSWYgb3ZlcmxheSBleGlzdHMgYW5kIGF0dGFjaGVkLi4uXHJcbiAgICAgICAgICAgIGlmIChvdmVybGF5UmVmICYmIG92ZXJsYXlSZWYuaGFzQXR0YWNoZWQoKSkge1xyXG4gICAgICAgICAgICAgICAgLy8gRGV0YWNoIGl0XHJcbiAgICAgICAgICAgICAgICBvdmVybGF5UmVmLmRldGFjaCgpO1xyXG4gICAgICAgICAgICAgICAgb3ZlcmxheVJlZi5kaXNwb3NlKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgLy8gQXR0YWNoIHRoZSBwb3J0YWwgdG8gdGhlIG92ZXJsYXlcclxuICAgICAgICBvdmVybGF5UmVmLmF0dGFjaCh0ZW1wbGF0ZVBvcnRhbCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXQgbW9udGggbGFiZWxcclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gbW9udGhcclxuICAgICAqL1xyXG4gICAgZ2V0TW9udGhMYWJlbChtb250aDogbnVtYmVyKTogc3RyaW5nIHwgdm9pZCB7XHJcbiAgICAgICAgaWYgKG1vbnRoID09PSAxKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmFjdGl2ZURhdGVzLm1vbnRoMT8uY2xvbmUoKS5mb3JtYXQoJ1lZWVkgTU1NTScpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYWN0aXZlRGF0ZXMubW9udGgyPy5jbG9uZSgpLmZvcm1hdCgnWVlZWSBNTU1NJyk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBEYXRlIGNsYXNzIGZ1bmN0aW9uIHRvIGFkZC9yZW1vdmUgY2xhc3MgbmFtZXMgdG8gY2FsZW5kYXIgZGF5c1xyXG4gICAgICovXHJcbiAgICBkYXRlQ2xhc3MoKTogYW55IHtcclxuICAgICAgICByZXR1cm4gKGRhdGU6IERheWpzKTogTWF0Q2FsZW5kYXJDZWxsQ3NzQ2xhc3NlcyB8IHZvaWQgPT4ge1xyXG5cclxuICAgICAgICAgICAgLy8gSWYgdGhlIGRhdGUgaXMgYm90aCBzdGFydCBhbmQgZW5kIGRhdGUuLi5cclxuICAgICAgICAgICAgaWYgKGRhdGUuaXNTYW1lKHRoaXMuX3JhbmdlLnN0YXJ0LCAnZGF5JykgJiYgZGF0ZS5pc1NhbWUodGhpcy5fcmFuZ2UuZW5kLCAnZGF5JykpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBbJ2NtYXQtZGF0ZS1yYW5nZScsICdjbWF0LWRhdGUtcmFuZ2Utc3RhcnQnLCAnY21hdC1kYXRlLXJhbmdlLWVuZCddO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvLyBJZiB0aGUgZGF0ZSBpcyB0aGUgc3RhcnQgZGF0ZS4uLlxyXG4gICAgICAgICAgICBpZiAoZGF0ZS5pc1NhbWUodGhpcy5fcmFuZ2Uuc3RhcnQsICdkYXknKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnY21hdC1kYXRlLXJhbmdlJywgJ2NtYXQtZGF0ZS1yYW5nZS1zdGFydCddO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvLyBJZiB0aGUgZGF0ZSBpcyB0aGUgZW5kIGRhdGUuLi5cclxuICAgICAgICAgICAgaWYgKGRhdGUuaXNTYW1lKHRoaXMuX3JhbmdlLmVuZCwgJ2RheScpKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gWydjbWF0LWRhdGUtcmFuZ2UnLCAnY21hdC1kYXRlLXJhbmdlLWVuZCddO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvLyBJZiB0aGUgZGF0ZSBpcyBpbiBiZXR3ZWVuIHN0YXJ0IGFuZCBlbmQgZGF0ZXMuLi5cclxuICAgICAgICAgICAgaWYgKGRhdGUuaXNCZXR3ZWVuKHRoaXMuX3JhbmdlLnN0YXJ0LCB0aGlzLl9yYW5nZS5lbmQsICdkYXknKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnY21hdC1kYXRlLXJhbmdlJywgJ2NtYXQtZGF0ZS1yYW5nZS1taWQnXTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgcmV0dXJuIHZvaWQgMDtcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRGF0ZSBmaWx0ZXIgdG8gZW5hYmxlL2Rpc2FibGUgY2FsZW5kYXIgZGF5c1xyXG4gICAgICovXHJcbiAgICBkYXRlRmlsdGVyKCk6IGFueSB7XHJcbiAgICAgICAgLy8gSWYgd2UgYXJlIHNlbGVjdGluZyB0aGUgZW5kIGRhdGUsIGRpc2FibGUgYWxsIHRoZSBkYXRlcyB0aGF0IGNvbWVzIGJlZm9yZSB0aGUgc3RhcnQgZGF0ZVxyXG4gICAgICAgIHJldHVybiAoZGF0ZTogRGF5anMpOiBib29sZWFuID0+ICEodGhpcy5zZXRXaGljaERhdGUgPT09ICdlbmQnICYmIGRhdGUuaXNCZWZvcmUodGhpcy5fcmFuZ2Uuc3RhcnQsICdkYXknKSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBPbiBzZWxlY3RlZCBkYXRlIGNoYW5nZVxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBkYXRlXHJcbiAgICAgKi9cclxuICAgIG9uU2VsZWN0ZWREYXRlQ2hhbmdlKGRhdGU6IERheWpzKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuX3JhbmdlLnN0YXJ0ICYmIHRoaXMuX3JhbmdlLmVuZCkge1xyXG4gICAgICAgICAgICAvLyBDcmVhdGUgYSBuZXcgcmFuZ2Ugb2JqZWN0XHJcbiAgICAgICAgICAgIGNvbnN0IG5ld1JhbmdlID0ge1xyXG4gICAgICAgICAgICAgICAgc3RhcnQ6IHRoaXMuX3JhbmdlLnN0YXJ0LmNsb25lKCkudG9JU09TdHJpbmcoKSxcclxuICAgICAgICAgICAgICAgIGVuZDogdGhpcy5fcmFuZ2UuZW5kLmNsb25lKCkudG9JU09TdHJpbmcoKSxcclxuICAgICAgICAgICAgICAgIHdoaWNoRGF0ZTogJydcclxuICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgIC8vIFJlcGxhY2UgZWl0aGVyIHRoZSBzdGFydCBvciB0aGUgZW5kIGRhdGUgd2l0aCB0aGUgbmV3IG9uZVxyXG4gICAgICAgICAgICAvLyBkZXBlbmRpbmcgb24gd2hpY2ggZGF0ZSB3ZSBhcmUgc2V0dGluZ1xyXG4gICAgICAgICAgICBpZiAodGhpcy5zZXRXaGljaERhdGUgPT09ICdzdGFydCcpIHtcclxuICAgICAgICAgICAgICAgIG5ld1JhbmdlLnN0YXJ0ID0gZGF5anMobmV3UmFuZ2Uuc3RhcnQpLnllYXIoZGF0ZS55ZWFyKCkpLm1vbnRoKGRhdGUubW9udGgoKSkuZGF0ZShkYXRlLmRhdGUoKSkudG9JU09TdHJpbmcoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIG5ld1JhbmdlLmVuZCA9IGRheWpzKG5ld1JhbmdlLmVuZCkueWVhcihkYXRlLnllYXIoKSkubW9udGgoZGF0ZS5tb250aCgpKS5kYXRlKGRhdGUuZGF0ZSgpKS50b0lTT1N0cmluZygpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvLyBBcHBlbmQgdGhlIHdoaWNoIGRhdGUgdG8gdGhlIG5ldyByYW5nZSBvYmplY3RcclxuICAgICAgICAgICAgbmV3UmFuZ2Uud2hpY2hEYXRlID0gdGhpcy5zZXRXaGljaERhdGU7XHJcblxyXG4gICAgICAgICAgICAvLyBTd2l0Y2ggd2hpY2ggZGF0ZSB0byBzZXQgb24gdGhlIG5leHQgcnVuXHJcbiAgICAgICAgICAgIHRoaXMuc2V0V2hpY2hEYXRlID0gdGhpcy5zZXRXaGljaERhdGUgPT09ICdzdGFydCcgPyAnZW5kJyA6ICdzdGFydCc7XHJcblxyXG4gICAgICAgICAgICAvLyBTZXQgdGhlIHJhbmdlXHJcbiAgICAgICAgICAgIHRoaXMucmFuZ2UgPSBuZXdSYW5nZTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdvIHRvIHByZXZpb3VzIG1vbnRoIG9uIGJvdGggdmlld3NcclxuICAgICAqL1xyXG4gICAgcHJldigpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmFjdGl2ZURhdGVzLm1vbnRoMSA9IGRheWpzKHRoaXMuYWN0aXZlRGF0ZXMubW9udGgxKS5zdWJ0cmFjdCgxLCAnbW9udGgnKTtcclxuICAgICAgICB0aGlzLmFjdGl2ZURhdGVzLm1vbnRoMiA9IGRheWpzKHRoaXMuYWN0aXZlRGF0ZXMubW9udGgyKS5zdWJ0cmFjdCgxLCAnbW9udGgnKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdvIHRvIG5leHQgbW9udGggb24gYm90aCB2aWV3c1xyXG4gICAgICovXHJcbiAgICBuZXh0KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuYWN0aXZlRGF0ZXMubW9udGgxID0gZGF5anModGhpcy5hY3RpdmVEYXRlcy5tb250aDEpLmFkZCgxLCAnbW9udGgnKTtcclxuICAgICAgICB0aGlzLmFjdGl2ZURhdGVzLm1vbnRoMiA9IGRheWpzKHRoaXMuYWN0aXZlRGF0ZXMubW9udGgyKS5hZGQoMSwgJ21vbnRoJyk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBVcGRhdGUgdGhlIHN0YXJ0IHRpbWVcclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gZXZlbnRcclxuICAgICAqL1xyXG4gICAgdXBkYXRlU3RhcnRUaW1lKGV2ZW50OiBhbnkpOiB2b2lkIHtcclxuICAgICAgICAvLyBQYXJzZSB0aGUgdGltZVxyXG4gICAgICAgIGNvbnN0IHBhcnNlZFRpbWUgPSB0aGlzLl9wYXJzZVRpbWUoZXZlbnQudGFyZ2V0LnZhbHVlKTtcclxuXHJcbiAgICAgICAgLy8gR28gYmFjayB0byB0aGUgcHJldmlvdXMgdmFsdWUgaWYgdGhlIGZvcm0gY29udHJvbCBpcyBub3QgdmFsaWRcclxuICAgICAgICBpZiAodGhpcy5zdGFydFRpbWVGb3JtQ29udHJvbC5pbnZhbGlkKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLl9yYW5nZS5zdGFydCkge1xyXG4gICAgICAgICAgICAgICAgLy8gT3ZlcnJpZGUgdGhlIHRpbWUgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIGNvbnN0IHRpbWUgPSB0aGlzLl9yYW5nZS5zdGFydC5jbG9uZSgpLmZvcm1hdCh0aGlzLl90aW1lRm9ybWF0KTtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyBTZXQgdGhlIHRpbWVcclxuICAgICAgICAgICAgICAgIHRoaXMuc3RhcnRUaW1lRm9ybUNvbnRyb2wuc2V0VmFsdWUodGltZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gRG8gbm90IHVwZGF0ZSB0aGUgcmFuZ2VcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMuX3JhbmdlLnN0YXJ0ICYmIHRoaXMuX3JhbmdlLmVuZCkge1xyXG4gICAgICAgICAgICAvLyBBcHBlbmQgdGhlIG5ldyB0aW1lIHRvIHRoZSBzdGFydCBkYXRlXHJcbiAgICAgICAgICAgIGNvbnN0IHN0YXJ0RGF0ZSA9IHRoaXMuX3JhbmdlLnN0YXJ0LmNsb25lKCkuaG91cihwYXJzZWRUaW1lLmhvdXIoKSkubWludXRlKHBhcnNlZFRpbWUubWludXRlKCkpO1xyXG5cclxuICAgICAgICAgICAgLy8gSWYgdGhlIG5ldyBzdGFydCBkYXRlIGlzIGFmdGVyIHRoZSBjdXJyZW50IGVuZCBkYXRlLFxyXG4gICAgICAgICAgICAvLyB1c2UgdGhlIGVuZCBkYXRlJ3MgdGltZSBhbmQgc2V0IHRoZSBzdGFydCBkYXRlIGFnYWluXHJcbiAgICAgICAgICAgIGlmIChzdGFydERhdGUuaXNBZnRlcih0aGlzLl9yYW5nZS5lbmQpKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBlbmREYXRlSG91cnMgPSB0aGlzLl9yYW5nZS5lbmQuaG91cigpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZW5kRGF0ZU1pbnV0ZXMgPSB0aGlzLl9yYW5nZS5lbmQubWludXRlKCk7XHJcblxyXG4gICAgICAgICAgICAgICAgLy8gU2V0IHRoZSBzdGFydCBkYXRlXHJcbiAgICAgICAgICAgICAgICBzdGFydERhdGUuaG91cihlbmREYXRlSG91cnMpLm1pbnV0ZShlbmREYXRlTWludXRlcyk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8vIElmIGV2ZXJ5dGhpbmcgaXMgb2theSwgc2V0IHRoZSBuZXcgZGF0ZVxyXG4gICAgICAgICAgICB0aGlzLnJhbmdlID0ge1xyXG4gICAgICAgICAgICAgICAgc3RhcnQ6IHN0YXJ0RGF0ZS50b0lTT1N0cmluZygpLFxyXG4gICAgICAgICAgICAgICAgZW5kOiB0aGlzLl9yYW5nZS5lbmQuY2xvbmUoKS50b0lTT1N0cmluZygpLFxyXG4gICAgICAgICAgICAgICAgd2hpY2hEYXRlOiAnc3RhcnQnXHJcbiAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBVcGRhdGUgdGhlIGVuZCB0aW1lXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIGV2ZW50XHJcbiAgICAgKi9cclxuICAgIHVwZGF0ZUVuZFRpbWUoZXZlbnQ6IGFueSk6IHZvaWQge1xyXG4gICAgICAgIC8vIFBhcnNlIHRoZSB0aW1lXHJcbiAgICAgICAgY29uc3QgcGFyc2VkVGltZSA9IHRoaXMuX3BhcnNlVGltZShldmVudC50YXJnZXQudmFsdWUpO1xyXG5cclxuICAgICAgICAvLyBHbyBiYWNrIHRvIHRoZSBwcmV2aW91cyB2YWx1ZSBpZiB0aGUgZm9ybSBjb250cm9sIGlzIG5vdCB2YWxpZFxyXG4gICAgICAgIGlmICh0aGlzLmVuZFRpbWVGb3JtQ29udHJvbC5pbnZhbGlkKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLl9yYW5nZS5lbmQpIHtcclxuICAgICAgICAgICAgICAgIC8vIE92ZXJyaWRlIHRoZSB0aW1lXHJcbiAgICAgICAgICAgICAgICBjb25zdCB0aW1lID0gdGhpcy5fcmFuZ2UuZW5kLmNsb25lKCkuZm9ybWF0KHRoaXMuX3RpbWVGb3JtYXQpO1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIFNldCB0aGUgdGltZVxyXG4gICAgICAgICAgICAgICAgdGhpcy5lbmRUaW1lRm9ybUNvbnRyb2wuc2V0VmFsdWUodGltZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gRG8gbm90IHVwZGF0ZSB0aGUgcmFuZ2VcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMuX3JhbmdlLnN0YXJ0ICYmIHRoaXMuX3JhbmdlLmVuZCkge1xyXG4gICAgICAgICAgICAvLyBBcHBlbmQgdGhlIG5ldyB0aW1lIHRvIHRoZSBlbmQgZGF0ZVxyXG4gICAgICAgICAgICBjb25zdCBlbmREYXRlID0gdGhpcy5fcmFuZ2UuZW5kLmNsb25lKCkuaG91cihwYXJzZWRUaW1lLmhvdXIoKSkubWludXRlKHBhcnNlZFRpbWUubWludXRlKCkpO1xyXG5cclxuICAgICAgICAgICAgLy8gSWYgdGhlIG5ldyBlbmQgZGF0ZSBpcyBiZWZvcmUgdGhlIGN1cnJlbnQgc3RhcnQgZGF0ZSxcclxuICAgICAgICAgICAgLy8gdXNlIHRoZSBzdGFydCBkYXRlJ3MgdGltZSBhbmQgc2V0IHRoZSBlbmQgZGF0ZSBhZ2FpblxyXG4gICAgICAgICAgICBpZiAoZW5kRGF0ZS5pc0JlZm9yZSh0aGlzLl9yYW5nZS5zdGFydCkpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHN0YXJ0RGF0ZUhvdXJzID0gdGhpcy5fcmFuZ2Uuc3RhcnQuaG91cigpO1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgc3RhcnREYXRlTWludXRlcyA9IHRoaXMuX3JhbmdlLnN0YXJ0Lm1pbnV0ZSgpO1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIFNldCB0aGUgZW5kIGRhdGVcclxuICAgICAgICAgICAgICAgIGVuZERhdGUuaG91cihzdGFydERhdGVIb3VycykubWludXRlKHN0YXJ0RGF0ZU1pbnV0ZXMpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvLyBJZiBldmVyeXRoaW5nIGlzIG9rYXksIHNldCB0aGUgbmV3IGRhdGVcclxuICAgICAgICAgICAgdGhpcy5yYW5nZSA9IHtcclxuICAgICAgICAgICAgICAgIHN0YXJ0OiB0aGlzLl9yYW5nZS5zdGFydC5jbG9uZSgpLnRvSVNPU3RyaW5nKCksXHJcbiAgICAgICAgICAgICAgICBlbmQ6IGVuZERhdGUudG9JU09TdHJpbmcoKSxcclxuICAgICAgICAgICAgICAgIHdoaWNoRGF0ZTogJ2VuZCdcclxuICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gICAgLy8gQCBQcml2YXRlIG1ldGhvZHNcclxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbml0aWFsaXplXHJcbiAgICAgKlxyXG4gICAgICogQHByaXZhdGVcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfaW5pdCgpOiB2b2lkIHtcclxuICAgICAgICAvLyBTdGFydCBhbmQgZW5kIHRpbWUgZm9ybSBjb250cm9sc1xyXG4gICAgICAgIHRoaXMuc3RhcnRUaW1lRm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woJycsIFtWYWxpZGF0b3JzLnBhdHRlcm4odGhpcy5fdGltZVJlZ0V4cCldKTtcclxuICAgICAgICB0aGlzLmVuZFRpbWVGb3JtQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgnJywgW1ZhbGlkYXRvcnMucGF0dGVybih0aGlzLl90aW1lUmVnRXhwKV0pO1xyXG5cclxuICAgICAgICAvLyBTZXQgdGhlIGRlZmF1bHQgcmFuZ2VcclxuICAgICAgICB0aGlzLl9wcm9ncmFtbWF0aWNDaGFuZ2UgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMucmFuZ2UgPSB7XHJcbiAgICAgICAgICAgIHN0YXJ0OiBkYXlqcygpLnN0YXJ0T2YoJ2RheScpLnRvSVNPU3RyaW5nKCksXHJcbiAgICAgICAgICAgIGVuZDogZGF5anMoKS5hZGQoMSwgJ2RheScpLmVuZE9mKCdkYXknKS50b0lTT1N0cmluZygpXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgLy8gU2V0IHRoZSBkZWZhdWx0IHRpbWUgcmFuZ2VcclxuICAgICAgICB0aGlzLl9wcm9ncmFtbWF0aWNDaGFuZ2UgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMudGltZVJhbmdlID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQYXJzZSB0aGUgdGltZSBmcm9tIHRoZSBpbnB1dHNcclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gdmFsdWVcclxuICAgICAqIEBwcml2YXRlXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX3BhcnNlVGltZSh2YWx1ZTogc3RyaW5nKTogRGF5anMge1xyXG4gICAgICAgIC8vIFBhcnNlIHRoZSB0aW1lIHVzaW5nIHRoZSB0aW1lIHJlZ2V4cFxyXG4gICAgICAgIGNvbnN0IHRpbWVBcnIgPSB2YWx1ZS5zcGxpdCh0aGlzLl90aW1lUmVnRXhwKS5maWx0ZXIocGFydCA9PiBwYXJ0ICE9PSAnJyk7XHJcblxyXG4gICAgICAgIC8vIEdldCB0aGUgbWVyaWRpZW1cclxuICAgICAgICBjb25zdCBtZXJpZGllbSA9IHRpbWVBcnJbMl0gfHwgbnVsbDtcclxuXHJcbiAgICAgICAgLy8gSWYgbWVyaWRpZW0gZXhpc3RzLi4uXHJcbiAgICAgICAgaWYgKG1lcmlkaWVtKSB7XHJcbiAgICAgICAgICAgIC8vIENyZWF0ZSBhIG1vbWVudCB1c2luZyAxMi1ob3VycyBmb3JtYXQgYW5kIHJldHVybiBpdFxyXG4gICAgICAgICAgICByZXR1cm4gZGF5anModmFsdWUsICdoaDptbUEnKS5zZWNvbmQoMCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBJZiBtZXJpZGllbSBkb2Vzbid0IGV4aXN0LCBjcmVhdGUgYSBtb21lbnQgdXNpbmcgMjQtaG91cnMgZm9ybWF0IGFuZCByZXR1cm4gaW5cclxuICAgICAgICByZXR1cm4gZGF5anModmFsdWUsICdISDptbScpLnNlY29uZCgwKTtcclxuICAgIH1cclxufVxyXG4iLCI8ZGl2IHJvbGU9XCJwcmVzZW50YXRpb25cIiBjbGFzcz1cInJhbmdlXCIgKGNsaWNrKT1cIm9wZW5QaWNrZXJQYW5lbCgpXCIgI3BpY2tlclBhbmVsT3JpZ2luPlxuXG4gIDxkaXYgY2xhc3M9XCJzdGFydFwiPlxuICAgIDxkaXYgY2xhc3M9XCJkYXRlXCI+e3tyYW5nZS5zdGFydERhdGV9fTwvZGl2PlxuICAgIEBpZiAocmFuZ2Uuc3RhcnRUaW1lKSB7XG4gICAgICA8ZGl2IGNsYXNzPVwidGltZVwiPnt7cmFuZ2Uuc3RhcnRUaW1lfX08L2Rpdj5cbiAgICB9XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJzZXBhcmF0b3JcIj4tPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cImVuZFwiPlxuICAgIDxkaXYgY2xhc3M9XCJkYXRlXCI+e3tyYW5nZS5lbmREYXRlfX08L2Rpdj5cbiAgICBAaWYgKHJhbmdlLmVuZFRpbWUpIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJ0aW1lXCI+e3tyYW5nZS5lbmRUaW1lfX08L2Rpdj5cbiAgICB9XG4gIDwvZGl2PlxuXG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNwaWNrZXJQYW5lbD5cblxuICA8IS0tIFN0YXJ0IC0tPlxuICA8ZGl2IGNsYXNzPVwic3RhcnRcIj5cblxuICAgIDxkaXYgY2xhc3M9XCJtb250aFwiPlxuICAgICAgPGRpdiBjbGFzcz1cIm1vbnRoLWhlYWRlclwiPlxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cInByZXZpb3VzLWJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwicHJldigpXCIgdGFiaW5kZXg9XCIxXCI+XG4gICAgICAgICAgPG1hdC1pY29uIFtzdmdJY29uXT1cIidoZXJvaWNvbnNfb3V0bGluZTpjaGV2cm9uLWxlZnQnXCI+PC9tYXQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtb250aC1sYWJlbFwiPnt7Z2V0TW9udGhMYWJlbCgxKX19PC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxtYXQtbW9udGgtdmlldyBbKGFjdGl2ZURhdGUpXT1cImFjdGl2ZURhdGVzLm1vbnRoMVwiIFtkYXRlRmlsdGVyXT1cImRhdGVGaWx0ZXIoKVwiIFtkYXRlQ2xhc3NdPVwiZGF0ZUNsYXNzKClcIlxuICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpXCIgKHNlbGVjdGVkQ2hhbmdlKT1cIm9uU2VsZWN0ZWREYXRlQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAjbWF0TW9udGhWaWV3MT5cbiAgICAgIDwvbWF0LW1vbnRoLXZpZXc+XG4gICAgPC9kaXY+XG5cbiAgICBAaWYgKHRpbWVSYW5nZSkge1xuICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwidGltZSBzdGFydC10aW1lXCI+XG4gICAgICAgIDxpbnB1dCBtYXRJbnB1dCBbYXV0b2NvbXBsZXRlXT1cIidvZmYnXCIgW2Zvcm1Db250cm9sXT1cInN0YXJ0VGltZUZvcm1Db250cm9sXCIgKGJsdXIpPVwidXBkYXRlU3RhcnRUaW1lKCRldmVudClcIlxuICAgICAgICAgIHRhYmluZGV4PVwiM1wiPlxuICAgICAgICAgIDxtYXQtbGFiZWw+5byA5aeL5pe26Ze0PC9tYXQtbGFiZWw+XG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICB9XG5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gRW5kIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJlbmRcIj5cblxuICAgICAgPGRpdiBjbGFzcz1cIm1vbnRoXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtb250aC1oZWFkZXJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9udGgtbGFiZWxcIj57e2dldE1vbnRoTGFiZWwoMil9fTwvZGl2PlxuICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwibmV4dC1idXR0b25cIiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cIm5leHQoKVwiIHRhYmluZGV4PVwiMlwiPlxuICAgICAgICAgICAgPG1hdC1pY29uIFtzdmdJY29uXT1cIidoZXJvaWNvbnNfb3V0bGluZTpjaGV2cm9uLXJpZ2h0J1wiPjwvbWF0LWljb24+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8bWF0LW1vbnRoLXZpZXcgWyhhY3RpdmVEYXRlKV09XCJhY3RpdmVEYXRlcy5tb250aDJcIiBbZGF0ZUZpbHRlcl09XCJkYXRlRmlsdGVyKClcIiBbZGF0ZUNsYXNzXT1cImRhdGVDbGFzcygpXCJcbiAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpXCIgKHNlbGVjdGVkQ2hhbmdlKT1cIm9uU2VsZWN0ZWREYXRlQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICNtYXRNb250aFZpZXcyPlxuICAgICAgICA8L21hdC1tb250aC12aWV3PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIEBpZiAodGltZVJhbmdlKSB7XG4gICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInRpbWUgZW5kLXRpbWVcIj5cbiAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgW2Zvcm1Db250cm9sXT1cImVuZFRpbWVGb3JtQ29udHJvbFwiIChibHVyKT1cInVwZGF0ZUVuZFRpbWUoJGV2ZW50KVwiIHRhYmluZGV4PVwiNFwiPlxuICAgICAgICAgIDxtYXQtbGFiZWw+57uT5p2f5pe26Ze0PC9tYXQtbGFiZWw+XG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICB9XG5cbiAgICA8L2Rpdj5cblxuICA8L25nLXRlbXBsYXRlPiJdfQ==
|
|
553
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1yYW5nZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbWF0L2NvbXBvbmVudHMvZGF0ZS1yYW5nZS9kYXRlLXJhbmdlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NtYXQvY29tcG9uZW50cy9kYXRlLXJhbmdlL2RhdGUtcmFuZ2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFBRSx1QkFBdUIsRUFBcUIsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFlLFNBQVMsRUFBb0IsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM04sT0FBTyxFQUF3QixXQUFXLEVBQUUsaUJBQWlCLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BJLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQTJDLG1CQUFtQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDNUcsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEtBQWdCLE1BQU0sT0FBTyxDQUFDO0FBQ3JDLE9BQU8sU0FBUyxNQUFNLHdCQUF3QixDQUFDO0FBQy9DLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7OztBQW9CL0IsTUFBTSxPQUFPLHNCQUFzQjtJQTRCL0IsWUFDWSxRQUFpQixFQUNqQixpQkFBbUMs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b3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPdmVybGF5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xyXG5pbXBvcnQgeyBUZW1wbGF0ZVBvcnRhbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xyXG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBmb3J3YXJkUmVmLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCwgVmlld0NvbnRhaW5lclJlZiwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1Db250cm9sLCBOR19WQUxVRV9BQ0NFU1NPUiwgVmFsaWRhdG9ycywgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XHJcbmltcG9ydCB7IE1hdENhbGVuZGFyQ2VsbENzc0NsYXNzZXMsIE1hdE1vbnRoVmlldywgTWF0RGF0ZXBpY2tlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RhdGVwaWNrZXInO1xyXG5pbXBvcnQgeyBNYXRGb3JtRmllbGRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcclxuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xyXG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcclxuaW1wb3J0IGRheWpzLCB7IERheWpzIH0gZnJvbSAnZGF5anMnO1xyXG5pbXBvcnQgaXNCZXR3ZWVuIGZyb20gJ2RheWpzL3BsdWdpbi9pc0JldHdlZW4nO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2NtYXQtZGF0ZS1yYW5nZScsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vZGF0ZS1yYW5nZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9kYXRlLXJhbmdlLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgICBleHBvcnRBczogJ2NtYXREYXRlUmFuZ2UnLFxyXG4gICAgcHJvdmlkZXJzOiBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQ21hdERhdGVSYW5nZUNvbXBvbmVudCksXHJcbiAgICAgICAgICAgIG11bHRpOiB0cnVlXHJcbiAgICAgICAgfVxyXG4gICAgXSxcclxuICAgIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgICBpbXBvcnRzOiBbTWF0QnV0dG9uTW9kdWxlLCBNYXRJY29uTW9kdWxlLCBNYXREYXRlcGlja2VyTW9kdWxlLCBNYXRGb3JtRmllbGRNb2R1bGUsIE1hdElucHV0TW9kdWxlLCBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZV1cclxufSlcclxuZXhwb3J0IGNsYXNzIENtYXREYXRlUmFuZ2VDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvcixPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgICBAT3V0cHV0KCkgcmVhZG9ubHkgcmFuZ2VDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8eyBzdGFydDogc3RyaW5nOyBlbmQ6IHN0cmluZyB9PiA9IG5ldyBFdmVudEVtaXR0ZXI8eyBzdGFydDogc3RyaW5nOyBlbmQ6IHN0cmluZyB9PigpO1xyXG4gICAgQFZpZXdDaGlsZCgnbWF0TW9udGhWaWV3MScpIHByaXZhdGUgX21hdE1vbnRoVmlldzE6IE1hdE1vbnRoVmlldzxhbnk+O1xyXG4gICAgQFZpZXdDaGlsZCgnbWF0TW9udGhWaWV3MicpIHByaXZhdGUgX21hdE1vbnRoVmlldzI6IE1hdE1vbnRoVmlldzxhbnk+O1xyXG4gICAgQFZpZXdDaGlsZCgncGlja2VyUGFuZWxPcmlnaW4nLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSkgcHJpdmF0ZSBfcGlja2VyUGFuZWxPcmlnaW46IEVsZW1lbnRSZWY7XHJcbiAgICBAVmlld0NoaWxkKCdwaWNrZXJQYW5lbCcpIHByaXZhdGUgX3BpY2tlclBhbmVsOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICAgIGFjdGl2ZURhdGVzOiB7IG1vbnRoMTogRGF5anMgfCBudWxsOyBtb250aDI6IERheWpzIHwgbnVsbCB9ID0ge1xyXG4gICAgICAgIG1vbnRoMTogbnVsbCxcclxuICAgICAgICBtb250aDI6IG51bGxcclxuICAgIH07XHJcbiAgICBzZXRXaGljaERhdGU6ICdzdGFydCcgfCAnZW5kJyA9ICdzdGFydCc7XHJcbiAgICBzdGFydFRpbWVGb3JtQ29udHJvbDogRm9ybUNvbnRyb2w7XHJcbiAgICBlbmRUaW1lRm9ybUNvbnRyb2w6IEZvcm1Db250cm9sO1xyXG4gICAgcHJpdmF0ZSBfZGF0ZUZvcm1hdDogc3RyaW5nO1xyXG4gICAgcHJpdmF0ZSBfb25DaGFuZ2U6ICh2YWx1ZTogYW55KSA9PiB2b2lkO1xyXG4gICAgcHJpdmF0ZSBfb25Ub3VjaGVkOiAodmFsdWU6IGFueSkgPT4gdm9pZDtcclxuICAgIHByaXZhdGUgX3Byb2dyYW1tYXRpY0NoYW5nZSE6IGJvb2xlYW47XHJcbiAgICBwcml2YXRlIF9yYW5nZTogeyBzdGFydDogRGF5anMgfCBudWxsOyBlbmQ6IERheWpzIHwgbnVsbCB9ID0ge1xyXG4gICAgICAgIHN0YXJ0OiBudWxsLFxyXG4gICAgICAgIGVuZDogbnVsbFxyXG4gICAgfTtcclxuICAgIHByaXZhdGUgX3RpbWVGb3JtYXQ6IHN0cmluZztcclxuICAgIHByaXZhdGUgX3RpbWVSYW5nZTogYm9vbGVhbjtcclxuICAgIHByaXZhdGUgX3JlYWRvbmx5OiBib29sZWFuO1xyXG4gICAgcHJpdmF0ZSByZWFkb25seSBfdGltZVJlZ0V4cDogUmVnRXhwID0gbmV3IFJlZ0V4cCgnXigwWzAtOV18MVswLTldfDJbMC00XXxbMC05XSk6KFswLTVdWzAtOV0pKEF8KD86QU0pfFB8KD86UE0pKT8kJywgJ2knKTtcclxuICAgIHByaXZhdGUgX3Vuc3Vic2NyaWJlQWxsOiBTdWJqZWN0PGFueT4gPSBuZXcgU3ViamVjdDxhbnk+KCk7XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJpdmF0ZSBfb3ZlcmxheTogT3ZlcmxheSxcclxuICAgICAgICBwcml2YXRlIF92aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxyXG4gICAgICAgIHByaXZhdGUgX2NoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZlxyXG4gICAgKSB7XHJcbiAgICAgICAgZGF5anMuZXh0ZW5kKGlzQmV0d2Vlbik7XHJcblxyXG4gICAgICAgIHRoaXMuX29uQ2hhbmdlID0gKCk6IHZvaWQgPT4geyB9O1xyXG4gICAgICAgIHRoaXMuX29uVG91Y2hlZCA9ICgpOiB2b2lkID0+IHsgfTtcclxuICAgICAgICB0aGlzLmRhdGVGb3JtYXQgPSAnWVlZWS9NTS9ERCc7XHJcbiAgICAgICAgdGhpcy50aW1lRm9ybWF0ID0gJzEyJzsgICAgICAgIFxyXG4gICAgfVxyXG5cclxuICAgIGdldCByZWFkb25seSgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fcmVhZG9ubHk7XHJcbiAgICB9XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHNldCByZWFkb25seSh2YWx1ZSkge1xyXG4gICAgICAgIHRoaXMuX3JlYWRvbmx5ID0gdmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9tZW1iZXItb3JkZXJpbmdcclxuICAgIGdldCBkYXRlRm9ybWF0KCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGVGb3JtYXQ7XHJcbiAgICB9XHJcbiAgICBASW5wdXQoKVxyXG4gICAgc2V0IGRhdGVGb3JtYXQodmFsdWU6IHN0cmluZykge1xyXG4gICAgICAgIC8vIFJldHVybiBpZiB0aGUgdmFsdWVzIGFyZSB0aGUgc2FtZVxyXG4gICAgICAgIGlmICh0aGlzLl9kYXRlRm9ybWF0ID09PSB2YWx1ZSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBTdG9yZSB0aGUgdmFsdWVcclxuICAgICAgICB0aGlzLl9kYXRlRm9ybWF0ID0gdmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTZXR0ZXIgJiBnZXR0ZXIgZm9yIHRpbWVGb3JtYXQgaW5wdXQgKi9cclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbWVtYmVyLW9yZGVyaW5nXHJcbiAgICBnZXQgdGltZUZvcm1hdCgpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl90aW1lRm9ybWF0O1xyXG4gICAgfVxyXG4gICAgQElucHV0KClcclxuICAgIHNldCB0aW1lRm9ybWF0KHZhbHVlOiBzdHJpbmcpIHtcclxuICAgICAgICAvLyBSZXR1cm4gaWYgdGhlIHZhbHVlcyBhcmUgdGhlIHNhbWVcclxuICAgICAgICBpZiAodGhpcy5fdGltZUZvcm1hdCA9PT0gdmFsdWUpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gU2V0IGZvcm1hdCBiYXNlZCBvbiB0aGUgdGltZSBmb3JtYXQgaW5wdXRcclxuICAgICAgICB0aGlzLl90aW1lRm9ybWF0ID0gdmFsdWUgPT09ICcxMicgPyAnaGg6bW1BJyA6ICdISDptbSc7XHJcbiAgICB9XHJcblxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNldHRlciAmIGdldHRlciBmb3IgdGltZVJhbmdlIGlucHV0ICovXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L21lbWJlci1vcmRlcmluZ1xyXG4gICAgZ2V0IHRpbWVSYW5nZSgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fdGltZVJhbmdlO1xyXG4gICAgfVxyXG4gICAgQElucHV0KClcclxuICAgIHNldCB0aW1lUmFuZ2UodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgICAgICAvLyBSZXR1cm4gaWYgdGhlIHZhbHVlcyBhcmUgdGhlIHNhbWVcclxuICAgICAgICBpZiAodGhpcy5fdGltZVJhbmdlID09PSB2YWx1ZSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBTdG9yZSB0aGUgdmFsdWVcclxuICAgICAgICB0aGlzLl90aW1lUmFuZ2UgPSB2YWx1ZTtcclxuXHJcbiAgICAgICAgLy8gSWYgdGhlIHRpbWUgcmFuZ2UgdHVybmVkIG9mZi4uLlxyXG4gICAgICAgIGlmICghdmFsdWUgJiYgdGhpcy5fcmFuZ2Uuc3RhcnQgJiYgdGhpcy5fcmFuZ2UuZW5kKSB7XHJcbiAgICAgICAgICAgIHRoaXMucmFuZ2UgPSB7XHJcbiAgICAgICAgICAgICAgICBzdGFydDogdGhpcy5fcmFuZ2Uuc3RhcnQuY2xvbmUoKS5zdGFydE9mKCdkYXknKSxcclxuICAgICAgICAgICAgICAgIGVuZDogdGhpcy5fcmFuZ2UuZW5kLmNsb25lKCkuZW5kT2YoJ2RheScpXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2V0dGVyICYgZ2V0dGVyIGZvciByYW5nZSBpbnB1dCAqL1xyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9tZW1iZXItb3JkZXJpbmdcclxuICAgIGdldCByYW5nZSgpOiBhbnkge1xyXG4gICAgICAgIGlmICh0aGlzLl9yYW5nZS5zdGFydCAmJiB0aGlzLl9yYW5nZS5lbmQpIHtcclxuICAgICAgICAgICAgLy8gQ2xvbmUgdGhlIHJhbmdlIHN0YXJ0IGFuZCBlbmRcclxuICAgICAgICAgICAgY29uc3Qgc3RhcnQgPSB0aGlzLl9yYW5nZS5zdGFydC5jbG9uZSgpO1xyXG4gICAgICAgICAgICBjb25zdCBlbmQgPSB0aGlzLl9yYW5nZS5lbmQuY2xvbmUoKTtcclxuXHJcbiAgICAgICAgICAgIC8vIEJ1aWxkIGFuZCByZXR1cm4gdGhlIHJhbmdlIG9iamVjdFxyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgc3RhcnREYXRlOiBzdGFydC5jbG9uZSgpLmZvcm1hdCh0aGlzLmRhdGVGb3JtYXQpLFxyXG4gICAgICAgICAgICAgICAgc3RhcnRUaW1lOiB0aGlzLnRpbWVSYW5nZSA/IHN0YXJ0LmNsb25lKCkuZm9ybWF0KHRoaXMudGltZUZvcm1hdCkgOiBudWxsLFxyXG4gICAgICAgICAgICAgICAgZW5kRGF0ZTogZW5kLmNsb25lKCkuZm9ybWF0KHRoaXMuZGF0ZUZvcm1hdCksXHJcbiAgICAgICAgICAgICAgICBlbmRUaW1lOiB0aGlzLnRpbWVSYW5nZSA/IGVuZC5jbG9uZSgpLmZvcm1hdCh0aGlzLnRpbWVGb3JtYXQpIDogbnVsbFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHZvaWQgMDtcclxuICAgIH1cclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgc2V0IHJhbmdlKHZhbHVlKSB7XHJcbiAgICAgICAgaWYgKCF2YWx1ZSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBDaGVjayBpZiB0aGUgdmFsdWUgaXMgYW4gb2JqZWN0IGFuZCBoYXMgJ3N0YXJ0JyBhbmQgJ2VuZCcgdmFsdWVzXHJcbiAgICAgICAgaWYgKCF2YWx1ZS5zdGFydCB8fCAhdmFsdWUuZW5kKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1JhbmdlIGlucHV0IG11c3QgaGF2ZSBcInN0YXJ0XCIgYW5kIFwiZW5kXCIgcHJvcGVydGllcyEnKTtcclxuXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIENoZWNrIGlmIHdlIGFyZSBzZXR0aW5nIGFuIGluZGl2aWR1YWwgZGF0ZSBvciBib3RoIG9mIHRoZW1cclxuICAgICAgICBjb25zdCB3aGljaERhdGUgPSB2YWx1ZS53aGljaERhdGUgfHwgbnVsbDtcclxuXHJcbiAgICAgICAgLy8gR2V0IHRoZSBzdGFydCBhbmQgZW5kIGRhdGVzIGFzIG1vbWVudFxyXG4gICAgICAgIGNvbnN0IHN0YXJ0ID0gZGF5anModmFsdWUuc3RhcnQpO1xyXG4gICAgICAgIGNvbnN0IGVuZCA9IGRheWpzKHZhbHVlLmVuZCk7XHJcblxyXG4gICAgICAgIC8vIElmIHdlIGFyZSBvbmx5IHNldHRpbmcgdGhlIHN0YXJ0IGRhdGUuLi5cclxuICAgICAgICBpZiAod2hpY2hEYXRlID09PSAnc3RhcnQnKSB7XHJcbiAgICAgICAgICAgIC8vIFNldCB0aGUgc3RhcnQgZGF0ZVxyXG4gICAgICAgICAgICB0aGlzLl9yYW5nZS5zdGFydCA9IHN0YXJ0LmNsb25lKCk7XHJcblxyXG4gICAgICAgICAgICAvLyBJZiB0aGUgc2VsZWN0ZWQgc3RhcnQgZGF0ZSBpcyBhZnRlciB0aGUgZW5kIGRhdGUuLi5cclxuICAgICAgICAgICAgaWYgKHRoaXMuX3JhbmdlLmVuZCAmJiB0aGlzLl9yYW5nZS5zdGFydC5pc0FmdGVyKHRoaXMuX3JhbmdlLmVuZCkpIHtcclxuICAgICAgICAgICAgICAgIC8vIFNldCB0aGUgZW5kIGRhdGUgdG8gdGhlIHN0YXJ0IGRhdGUgYnV0IGtlZXAgdGhlIGVuZCBkYXRlJ3MgdGltZVxyXG4gICAgICAgICAgICAgICAgY29uc3QgZW5kRGF0ZSA9IHN0YXJ0LmNsb25lKCkuaG91cih0aGlzLl9yYW5nZS5lbmQuaG91cigpKS5taW51dGUodGhpcy5fcmFuZ2UuZW5kLm1pbnV0ZSgpKS5zZWNvbmQodGhpcy5fcmFuZ2UuZW5kLnNlY29uZCgpKTtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyBUZXN0IHRoaXMgbmV3IGVuZCBkYXRlIHRvIHNlZSBpZiBpdCdzIGFoZWFkIG9mIHRoZSBzdGFydCBkYXRlXHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fcmFuZ2Uuc3RhcnQuaXNCZWZvcmUoZW5kRGF0ZSkpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBJZiBpdCdzLCBzZXQgdGhlIG5ldyBlbmQgZGF0ZVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3JhbmdlLmVuZCA9IGVuZERhdGU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBPdGhlcndpc2UsIHNldCB0aGUgZW5kIGRhdGUgc2FtZSBhcyB0aGUgc3RhcnQgZGF0ZVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3JhbmdlLmVuZCA9IHN0YXJ0LmNsb25lKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIElmIHdlIGFyZSBvbmx5IHNldHRpbmcgdGhlIGVuZCBkYXRlLi4uXHJcbiAgICAgICAgaWYgKHdoaWNoRGF0ZSA9PT0gJ2VuZCcpIHtcclxuICAgICAgICAgICAgLy8gU2V0IHRoZSBlbmQgZGF0ZVxyXG4gICAgICAgICAgICB0aGlzLl9yYW5nZS5lbmQgPSBlbmQuY2xvbmUoKTtcclxuXHJcbiAgICAgICAgICAgIC8vIElmIHRoZSBzZWxlY3RlZCBlbmQgZGF0ZSBpcyBiZWZvcmUgdGhlIHN0YXJ0IGRhdGUuLi5cclxuICAgICAgICAgICAgaWYgKHRoaXMuX3JhbmdlLnN0YXJ0ICYmIHRoaXMuX3JhbmdlLnN0YXJ0LmlzQWZ0ZXIodGhpcy5fcmFuZ2UuZW5kKSkge1xyXG4gICAgICAgICAgICAgICAgLy8gU2V0IHRoZSBzdGFydCBkYXRlIHRvIHRoZSBlbmQgZGF0ZSBidXQga2VlcCB0aGUgc3RhcnQgZGF0ZSdzIHRpbWVcclxuICAgICAgICAgICAgICAgIGNvbnN0IHN0YXJ0RGF0ZSA9IGVuZC5jbG9uZSgpLmhvdXIodGhpcy5fcmFuZ2Uuc3RhcnQuaG91cigpKS5taW51dGUodGhpcy5fcmFuZ2Uuc3RhcnQubWludXRlKCkpLnNlY29uZCh0aGlzLl9yYW5nZS5zdGFydC5zZWNvbmQoKSk7XHJcblxyXG4gICAgICAgICAgICAgICAgLy8gVGVzdCB0aGlzIG5ldyBlbmQgZGF0ZSB0byBzZWUgaWYgaXQncyBhaGVhZCBvZiB0aGUgc3RhcnQgZGF0ZVxyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuX3JhbmdlLmVuZC5pc0FmdGVyKHN0YXJ0RGF0ZSkpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBJZiBpdCdzLCBzZXQgdGhlIG5ldyBzdGFydCBkYXRlXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fcmFuZ2Uuc3RhcnQgPSBzdGFydERhdGU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBPdGhlcndpc2UsIHNldCB0aGUgc3RhcnQgZGF0ZSBzYW1lIGFzIHRoZSBlbmQgZGF0ZVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3JhbmdlLnN0YXJ0ID0gZW5kLmNsb25lKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIElmIHdlIGFyZSBzZXR0aW5nIGJvdGggZGF0ZXMuLi5cclxuICAgICAgICBpZiAoIXdoaWNoRGF0ZSkge1xyXG4gICAgICAgICAgICAvLyBTZXQgdGhlIHN0YXJ0IGRhdGVcclxuICAgICAgICAgICAgdGhpcy5fcmFuZ2Uuc3RhcnQgPSBzdGFydC5jbG9uZSgpO1xyXG5cclxuICAgICAgICAgICAgLy8gSWYgdGhlIHN0YXJ0IGRhdGUgaXMgYmVmb3JlIHRoZSBlbmQgZGF0ZSwgc2V0IHRoZSBlbmQgZGF0ZSBhcyBub3JtYWwuXHJcbiAgICAgICAgICAgIC8vIElmIHRoZSBzdGFydCBkYXRlIGlzIGFmdGVyIHRoZSBlbmQgZGF0ZSwgc2V0IHRoZSBlbmQgZGF0ZSBzYW1lIGFzIHRoZSBzdGFydCBkYXRlLlxyXG4gICAgICAgICAgICB0aGlzLl9yYW5nZS5lbmQgPSBzdGFydC5pc0JlZm9yZShlbmQpID8gZW5kLmNsb25lKCkgOiBzdGFydC5jbG9uZSgpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMuX3JhbmdlLnN0YXJ0ICYmIHRoaXMuX3JhbmdlLmVuZCkge1xyXG4gICAgICAgICAgICAvLyBQcmVwYXJlIGFub3RoZXIgcmFuZ2Ugb2JqZWN0IHRoYXQgaG9sZHMgdGhlIElTTyBmb3JtYXR0ZWQgcmFuZ2UgZGF0ZXNcclxuICAgICAgICAgICAgY29uc3QgcmFuZ2UgPSB7XHJcbiAgICAgICAgICAgICAgICBzdGFydDogdGhpcy5fcmFuZ2Uuc3RhcnQuY2xvbmUoKS50b0lTT1N0cmluZygpLFxyXG4gICAgICAgICAgICAgICAgZW5kOiB0aGlzLl9yYW5nZS5lbmQuY2xvbmUoKS50b0lTT1N0cmluZygpXHJcbiAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICAvLyBFbWl0IHRoZSByYW5nZSBjaGFuZ2VkIGV2ZW50IHdpdGggdGhlIHJhbmdlXHJcbiAgICAgICAgICAgIHRoaXMucmFuZ2VDaGFuZ2VkLmVtaXQocmFuZ2UpO1xyXG5cclxuICAgICAgICAgICAgLy8gVXBkYXRlIHRoZSBtb2RlbCB3aXRoIHRoZSByYW5nZSBpZiB0aGUgY2hhbmdlIHdhcyBub3QgYSBwcm9ncmFtbWF0aWMgY2hhbmdlXHJcbiAgICAgICAgICAgIC8vIEJlY2F1c2UgcHJvZ3JhbW1hdGljIGNoYW5nZXMgdHJpZ2dlciB3cml0ZVZhbHVlIHdoaWNoIHRyaWdnZXJzIG9uQ2hhbmdlIGFuZCBvblRvdWNoZWRcclxuICAgICAgICAgICAgLy8gaW50ZXJuYWxseSBjYXVzaW5nIHRoZW0gdG8gdHJpZ2dlciB0d2ljZSB3aGljaCBicmVha3MgdGhlIGZvcm0ncyBwcmlzdGluZSBhbmQgdG91Y2hlZFxyXG4gICAgICAgICAgICAvLyBzdGF0dXNlcy5cclxuICAgICAgICAgICAgaWYgKCF0aGlzLl9wcm9ncmFtbWF0aWNDaGFuZ2UpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX29uVG91Y2hlZChyYW5nZSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9vbkNoYW5nZShyYW5nZSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8vIFNldCB0aGUgYWN0aXZlIGRhdGVzXHJcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlRGF0ZXMgPSB7XHJcbiAgICAgICAgICAgICAgICBtb250aDE6IHRoaXMuX3JhbmdlLnN0YXJ0LmNsb25lKCksXHJcbiAgICAgICAgICAgICAgICBtb250aDI6IHRoaXMuX3JhbmdlLnN0YXJ0LmNsb25lKCkuYWRkKDEsICdtb250aCcpXHJcbiAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICAvLyBTZXQgdGhlIHRpbWUgZm9ybSBjb250cm9sc1xyXG4gICAgICAgICAgICB0aGlzLnN0YXJ0VGltZUZvcm1Db250cm9sLnNldFZhbHVlKHRoaXMuX3JhbmdlLnN0YXJ0LmNsb25lKCkuZm9ybWF0KHRoaXMuX3RpbWVGb3JtYXQpLnRvU3RyaW5nKCkpO1xyXG4gICAgICAgICAgICB0aGlzLmVuZFRpbWVGb3JtQ29udHJvbC5zZXRWYWx1ZSh0aGlzLl9yYW5nZS5lbmQuY2xvbmUoKS5mb3JtYXQodGhpcy5fdGltZUZvcm1hdCkudG9TdHJpbmcoKSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBSdW4gbmdBZnRlckNvbnRlbnRJbml0IG9uIG1vbnRoIHZpZXdzIHRvIHRyaWdnZXJcclxuICAgICAgICAvLyByZS1yZW5kZXIgb24gbW9udGggdmlld3MgaWYgdGhleSBhcmUgYXZhaWxhYmxlXHJcbiAgICAgICAgaWYgKHRoaXMuX21hdE1vbnRoVmlldzEgJiYgdGhpcy5fbWF0TW9udGhWaWV3Mikge1xyXG4gICAgICAgICAgICB0aGlzLl9tYXRNb250aFZpZXcxLm5nQWZ0ZXJDb250ZW50SW5pdCgpO1xyXG4gICAgICAgICAgICB0aGlzLl9tYXRNb250aFZpZXcyLm5nQWZ0ZXJDb250ZW50SW5pdCgpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gUmVzZXQgdGhlIHByb2dyYW1tYXRpYyBjaGFuZ2Ugc3RhdHVzXHJcbiAgICAgICAgdGhpcy5fcHJvZ3JhbW1hdGljQ2hhbmdlID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gICAgLy8gQCBDb250cm9sIFZhbHVlIEFjY2Vzc29yXHJcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVXBkYXRlIHRoZSBmb3JtIG1vZGVsIG9uIGNoYW5nZVxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBmblxyXG4gICAgICovXHJcbiAgICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9vbkNoYW5nZSA9IGZuO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVXBkYXRlIHRoZSBmb3JtIG1vZGVsIG9uIGJsdXJcclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gZm5cclxuICAgICAqL1xyXG4gICAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX29uVG91Y2hlZCA9IGZuO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogV3JpdGUgdG8gdmlldyBmcm9tIG1vZGVsIHdoZW4gdGhlIGZvcm0gbW9kZWwgY2hhbmdlcyBwcm9ncmFtbWF0aWNhbGx5XHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIHJhbmdlXHJcbiAgICAgKi9cclxuICAgIHdyaXRlVmFsdWUocmFuZ2U6IHsgc3RhcnQ6IHN0cmluZzsgZW5kOiBzdHJpbmcgfSk6IHZvaWQge1xyXG4gICAgICAgIC8vIFNldCB0aGlzIGNoYW5nZSBhcyBhIHByb2dyYW1tYXRpYyBvbmVcclxuICAgICAgICB0aGlzLl9wcm9ncmFtbWF0aWNDaGFuZ2UgPSB0cnVlO1xyXG5cclxuICAgICAgICAvLyBTZXQgdGhlIHJhbmdlXHJcbiAgICAgICAgdGhpcy5yYW5nZSA9IHJhbmdlO1xyXG5cclxuICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgICAgICAvLyBJbml0aWFsaXplIHRoZSBjb21wb25lbnRcclxuICAgICAgICB0aGlzLl9pbml0KCk7XHJcbiAgICB9XHJcbiAgICAvKipcclxuICAgICAqIE9uIGRlc3Ryb3lcclxuICAgICAqL1xyXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fdW5zdWJzY3JpYmVBbGwubmV4dCh2b2lkIDApO1xyXG4gICAgICAgIHRoaXMuX3Vuc3Vic2NyaWJlQWxsLmNvbXBsZXRlKCk7XHJcblxyXG4gICAgICAgIHRoaXMud3JpdGVWYWx1ZSA9ICgpOiB2b2lkID0+IHsgfTtcclxuICAgIH1cclxuXHJcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gICAgLy8gQCBQdWJsaWMgbWV0aG9kc1xyXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuXHJcbiAgICAvKipcclxuICAgICAqIE9wZW4gdGhlIHBpY2tlciBwYW5lbFxyXG4gICAgICovXHJcbiAgICBvcGVuUGlja2VyUGFuZWwoKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMucmVhZG9ubHkpXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuXHJcbiAgICAgICAgLy8gQ3JlYXRlIHRoZSBvdmVybGF5XHJcbiAgICAgICAgY29uc3Qgb3ZlcmxheVJlZiA9IHRoaXMuX292ZXJsYXkuY3JlYXRlKHtcclxuICAgICAgICAgICAgcGFuZWxDbGFzczogJ2NtYXQtZGF0ZS1yYW5nZS1wYW5lbCcsXHJcbiAgICAgICAgICAgIGJhY2tkcm9wQ2xhc3M6ICcnLFxyXG4gICAgICAgICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcclxuICAgICAgICAgICAgc2Nyb2xsU3RyYXRlZ3k6IHRoaXMuX292ZXJsYXkuc2Nyb2xsU3RyYXRlZ2llcy5yZXBvc2l0aW9uKCksXHJcbiAgICAgICAgICAgIHBvc2l0aW9uU3RyYXRlZ3k6IHRoaXMuX292ZXJsYXkucG9zaXRpb24oKVxyXG4gICAgICAgICAgICAgICAgLmZsZXhpYmxlQ29ubmVjdGVkVG8odGhpcy5fcGlja2VyUGFuZWxPcmlnaW4pXHJcbiAgICAgICAgICAgICAgICAud2l0aFBvc2l0aW9ucyhbXHJcbiAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5YOiAnc3RhcnQnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5ZOiAnYm90dG9tJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcmxheVg6ICdzdGFydCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJsYXlZOiAndG9wJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0WTogOFxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5YOiAnc3RhcnQnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5ZOiAndG9wJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcmxheVg6ICdzdGFydCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJsYXlZOiAnYm90dG9tJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0WTogLThcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBdKVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICAvLyBDcmVhdGUgYSBwb3J0YWwgZnJvbSB0aGUgdGVtcGxhdGVcclxuICAgICAgICBjb25zdCB0ZW1wbGF0ZVBvcnRhbCA9IG5ldyBUZW1wbGF0ZVBvcnRhbCh0aGlzLl9waWNrZXJQYW5lbCwgdGhpcy5fdmlld0NvbnRhaW5lclJlZik7XHJcblxyXG4gICAgICAgIC8vIE9uIGJhY2tkcm9wIGNsaWNrXHJcbiAgICAgICAgb3ZlcmxheVJlZi5iYWNrZHJvcENsaWNrKCkuc3Vic2NyaWJlKCgpID0+IHtcclxuXHJcbiAgICAgICAgICAgIC8vIElmIHRlbXBsYXRlIHBvcnRhbCBleGlzdHMgYW5kIGF0dGFjaGVkLi4uXHJcbiAgICAgICAgICAgIGlmICh0ZW1wbGF0ZVBvcnRhbCAmJiB0ZW1wbGF0ZVBvcnRhbC5pc0F0dGFjaGVkKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBEZXRhY2ggaXRcclxuICAgICAgICAgICAgICAgIHRlbXBsYXRlUG9ydGFsLmRldGFjaCgpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvLyBJZiBvdmVybGF5IGV4aXN0cyBhbmQgYXR0YWNoZWQuLi5cclxuICAgICAgICAgICAgaWYgKG92ZXJsYXlSZWYgJiYgb3ZlcmxheVJlZi5oYXNBdHRhY2hlZCgpKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBEZXRhY2ggaXRcclxuICAgICAgICAgICAgICAgIG92ZXJsYXlSZWYuZGV0YWNoKCk7XHJcbiAgICAgICAgICAgICAgICBvdmVybGF5UmVmLmRpc3Bvc2UoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICAvLyBBdHRhY2ggdGhlIHBvcnRhbCB0byB0aGUgb3ZlcmxheVxyXG4gICAgICAgIG92ZXJsYXlSZWYuYXR0YWNoKHRlbXBsYXRlUG9ydGFsKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldCBtb250aCBsYWJlbFxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBtb250aFxyXG4gICAgICovXHJcbiAgICBnZXRNb250aExhYmVsKG1vbnRoOiBudW1iZXIpOiBzdHJpbmcgfCB2b2lkIHtcclxuICAgICAgICBpZiAobW9udGggPT09IDEpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYWN0aXZlRGF0ZXMubW9udGgxPy5jbG9uZSgpLmZvcm1hdCgnWVlZWSBNTU1NJyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5hY3RpdmVEYXRlcy5tb250aDI/LmNsb25lKCkuZm9ybWF0KCdZWVlZIE1NTU0nKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIERhdGUgY2xhc3MgZnVuY3Rpb24gdG8gYWRkL3JlbW92ZSBjbGFzcyBuYW1lcyB0byBjYWxlbmRhciBkYXlzXHJcbiAgICAgKi9cclxuICAgIGRhdGVDbGFzcygpOiBhbnkge1xyXG4gICAgICAgIHJldHVybiAoZGF0ZTogRGF5anMpOiBNYXRDYWxlbmRhckNlbGxDc3NDbGFzc2VzIHwgdm9pZCA9PiB7XHJcblxyXG4gICAgICAgICAgICAvLyBJZiB0aGUgZGF0ZSBpcyBib3RoIHN0YXJ0IGFuZCBlbmQgZGF0ZS4uLlxyXG4gICAgICAgICAgICBpZiAoZGF0ZS5pc1NhbWUodGhpcy5fcmFuZ2Uuc3RhcnQsICdkYXknKSAmJiBkYXRlLmlzU2FtZSh0aGlzLl9yYW5nZS5lbmQsICdkYXknKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnY21hdC1kYXRlLXJhbmdlJywgJ2NtYXQtZGF0ZS1yYW5nZS1zdGFydCcsICdjbWF0LWRhdGUtcmFuZ2UtZW5kJ107XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8vIElmIHRoZSBkYXRlIGlzIHRoZSBzdGFydCBkYXRlLi4uXHJcbiAgICAgICAgICAgIGlmIChkYXRlLmlzU2FtZSh0aGlzLl9yYW5nZS5zdGFydCwgJ2RheScpKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gWydjbWF0LWRhdGUtcmFuZ2UnLCAnY21hdC1kYXRlLXJhbmdlLXN0YXJ0J107XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8vIElmIHRoZSBkYXRlIGlzIHRoZSBlbmQgZGF0ZS4uLlxyXG4gICAgICAgICAgICBpZiAoZGF0ZS5pc1NhbWUodGhpcy5fcmFuZ2UuZW5kLCAnZGF5JykpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBbJ2NtYXQtZGF0ZS1yYW5nZScsICdjbWF0LWRhdGUtcmFuZ2UtZW5kJ107XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8vIElmIHRoZSBkYXRlIGlzIGluIGJldHdlZW4gc3RhcnQgYW5kIGVuZCBkYXRlcy4uLlxyXG4gICAgICAgICAgICBpZiAoZGF0ZS5pc0JldHdlZW4odGhpcy5fcmFuZ2Uuc3RhcnQsIHRoaXMuX3JhbmdlLmVuZCwgJ2RheScpKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gWydjbWF0LWRhdGUtcmFuZ2UnLCAnY21hdC1kYXRlLXJhbmdlLW1pZCddO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICByZXR1cm4gdm9pZCAwO1xyXG4gICAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBEYXRlIGZpbHRlciB0byBlbmFibGUvZGlzYWJsZSBjYWxlbmRhciBkYXlzXHJcbiAgICAgKi9cclxuICAgIGRhdGVGaWx0ZXIoKTogYW55IHtcclxuICAgICAgICAvLyBJZiB3ZSBhcmUgc2VsZWN0aW5nIHRoZSBlbmQgZGF0ZSwgZGlzYWJsZSBhbGwgdGhlIGRhdGVzIHRoYXQgY29tZXMgYmVmb3JlIHRoZSBzdGFydCBkYXRlXHJcbiAgICAgICAgcmV0dXJuIChkYXRlOiBEYXlqcyk6IGJvb2xlYW4gPT4gISh0aGlzLnNldFdoaWNoRGF0ZSA9PT0gJ2VuZCcgJiYgZGF0ZS5pc0JlZm9yZSh0aGlzLl9yYW5nZS5zdGFydCwgJ2RheScpKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIE9uIHNlbGVjdGVkIGRhdGUgY2hhbmdlXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIGRhdGVcclxuICAgICAqL1xyXG4gICAgb25TZWxlY3RlZERhdGVDaGFuZ2UoZGF0ZTogRGF5anMpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5fcmFuZ2Uuc3RhcnQgJiYgdGhpcy5fcmFuZ2UuZW5kKSB7XHJcbiAgICAgICAgICAgIC8vIENyZWF0ZSBhIG5ldyByYW5nZSBvYmplY3RcclxuICAgICAgICAgICAgY29uc3QgbmV3UmFuZ2UgPSB7XHJcbiAgICAgICAgICAgICAgICBzdGFydDogdGhpcy5fcmFuZ2Uuc3RhcnQuY2xvbmUoKS50b0lTT1N0cmluZygpLFxyXG4gICAgICAgICAgICAgICAgZW5kOiB0aGlzLl9yYW5nZS5lbmQuY2xvbmUoKS50b0lTT1N0cmluZygpLFxyXG4gICAgICAgICAgICAgICAgd2hpY2hEYXRlOiAnJ1xyXG4gICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgLy8gUmVwbGFjZSBlaXRoZXIgdGhlIHN0YXJ0IG9yIHRoZSBlbmQgZGF0ZSB3aXRoIHRoZSBuZXcgb25lXHJcbiAgICAgICAgICAgIC8vIGRlcGVuZGluZyBvbiB3aGljaCBkYXRlIHdlIGFyZSBzZXR0aW5nXHJcbiAgICAgICAgICAgIGlmICh0aGlzLnNldFdoaWNoRGF0ZSA9PT0gJ3N0YXJ0Jykge1xyXG4gICAgICAgICAgICAgICAgbmV3UmFuZ2Uuc3RhcnQgPSBkYXlqcyhuZXdSYW5nZS5zdGFydCkueWVhcihkYXRlLnllYXIoKSkubW9udGgoZGF0ZS5tb250aCgpKS5kYXRlKGRhdGUuZGF0ZSgpKS50b0lTT1N0cmluZygpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgbmV3UmFuZ2UuZW5kID0gZGF5anMobmV3UmFuZ2UuZW5kKS55ZWFyKGRhdGUueWVhcigpKS5tb250aChkYXRlLm1vbnRoKCkpLmRhdGUoZGF0ZS5kYXRlKCkpLnRvSVNPU3RyaW5nKCk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8vIEFwcGVuZCB0aGUgd2hpY2ggZGF0ZSB0byB0aGUgbmV3IHJhbmdlIG9iamVjdFxyXG4gICAgICAgICAgICBuZXdSYW5nZS53aGljaERhdGUgPSB0aGlzLnNldFdoaWNoRGF0ZTtcclxuXHJcbiAgICAgICAgICAgIC8vIFN3aXRjaCB3aGljaCBkYXRlIHRvIHNldCBvbiB0aGUgbmV4dCBydW5cclxuICAgICAgICAgICAgdGhpcy5zZXRXaGljaERhdGUgPSB0aGlzLnNldFdoaWNoRGF0ZSA9PT0gJ3N0YXJ0JyA/ICdlbmQnIDogJ3N0YXJ0JztcclxuXHJcbiAgICAgICAgICAgIC8vIFNldCB0aGUgcmFuZ2VcclxuICAgICAgICAgICAgdGhpcy5yYW5nZSA9IG5ld1JhbmdlO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR28gdG8gcHJldmlvdXMgbW9udGggb24gYm90aCB2aWV3c1xyXG4gICAgICovXHJcbiAgICBwcmV2KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuYWN0aXZlRGF0ZXMubW9udGgxID0gZGF5anModGhpcy5hY3RpdmVEYXRlcy5tb250aDEpLnN1YnRyYWN0KDEsICdtb250aCcpO1xyXG4gICAgICAgIHRoaXMuYWN0aXZlRGF0ZXMubW9udGgyID0gZGF5anModGhpcy5hY3RpdmVEYXRlcy5tb250aDIpLnN1YnRyYWN0KDEsICdtb250aCcpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR28gdG8gbmV4dCBtb250aCBvbiBib3RoIHZpZXdzXHJcbiAgICAgKi9cclxuICAgIG5leHQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5hY3RpdmVEYXRlcy5tb250aDEgPSBkYXlqcyh0aGlzLmFjdGl2ZURhdGVzLm1vbnRoMSkuYWRkKDEsICdtb250aCcpO1xyXG4gICAgICAgIHRoaXMuYWN0aXZlRGF0ZXMubW9udGgyID0gZGF5anModGhpcy5hY3RpdmVEYXRlcy5tb250aDIpLmFkZCgxLCAnbW9udGgnKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFVwZGF0ZSB0aGUgc3RhcnQgdGltZVxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBldmVudFxyXG4gICAgICovXHJcbiAgICB1cGRhdGVTdGFydFRpbWUoZXZlbnQ6IGFueSk6IHZvaWQge1xyXG4gICAgICAgIC8vIFBhcnNlIHRoZSB0aW1lXHJcbiAgICAgICAgY29uc3QgcGFyc2VkVGltZSA9IHRoaXMuX3BhcnNlVGltZShldmVudC50YXJnZXQudmFsdWUpO1xyXG5cclxuICAgICAgICAvLyBHbyBiYWNrIHRvIHRoZSBwcmV2aW91cyB2YWx1ZSBpZiB0aGUgZm9ybSBjb250cm9sIGlzIG5vdCB2YWxpZFxyXG4gICAgICAgIGlmICh0aGlzLnN0YXJ0VGltZUZvcm1Db250cm9sLmludmFsaWQpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuX3JhbmdlLnN0YXJ0KSB7XHJcbiAgICAgICAgICAgICAgICAvLyBPdmVycmlkZSB0aGUgdGltZSAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgY29uc3QgdGltZSA9IHRoaXMuX3JhbmdlLnN0YXJ0LmNsb25lKCkuZm9ybWF0KHRoaXMuX3RpbWVGb3JtYXQpO1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIFNldCB0aGUgdGltZVxyXG4gICAgICAgICAgICAgICAgdGhpcy5zdGFydFRpbWVGb3JtQ29udHJvbC5zZXRWYWx1ZSh0aW1lKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyBEbyBub3QgdXBkYXRlIHRoZSByYW5nZVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5fcmFuZ2Uuc3RhcnQgJiYgdGhpcy5fcmFuZ2UuZW5kKSB7XHJcbiAgICAgICAgICAgIC8vIEFwcGVuZCB0aGUgbmV3IHRpbWUgdG8gdGhlIHN0YXJ0IGRhdGVcclxuICAgICAgICAgICAgY29uc3Qgc3RhcnREYXRlID0gdGhpcy5fcmFuZ2Uuc3RhcnQuY2xvbmUoKS5ob3VyKHBhcnNlZFRpbWUuaG91cigpKS5taW51dGUocGFyc2VkVGltZS5taW51dGUoKSk7XHJcblxyXG4gICAgICAgICAgICAvLyBJZiB0aGUgbmV3IHN0YXJ0IGRhdGUgaXMgYWZ0ZXIgdGhlIGN1cnJlbnQgZW5kIGRhdGUsXHJcbiAgICAgICAgICAgIC8vIHVzZSB0aGUgZW5kIGRhdGUncyB0aW1lIGFuZCBzZXQgdGhlIHN0YXJ0IGRhdGUgYWdhaW5cclxuICAgICAgICAgICAgaWYgKHN0YXJ0RGF0ZS5pc0FmdGVyKHRoaXMuX3JhbmdlLmVuZCkpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGVuZERhdGVIb3VycyA9IHRoaXMuX3JhbmdlLmVuZC5ob3VyKCk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBlbmREYXRlTWludXRlcyA9IHRoaXMuX3JhbmdlLmVuZC5taW51dGUoKTtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyBTZXQgdGhlIHN0YXJ0IGRhdGVcclxuICAgICAgICAgICAgICAgIHN0YXJ0RGF0ZS5ob3VyKGVuZERhdGVIb3VycykubWludXRlKGVuZERhdGVNaW51dGVzKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLy8gSWYgZXZlcnl0aGluZyBpcyBva2F5LCBzZXQgdGhlIG5ldyBkYXRlXHJcbiAgICAgICAgICAgIHRoaXMucmFuZ2UgPSB7XHJcbiAgICAgICAgICAgICAgICBzdGFydDogc3RhcnREYXRlLnRvSVNPU3RyaW5nKCksXHJcbiAgICAgICAgICAgICAgICBlbmQ6IHRoaXMuX3JhbmdlLmVuZC5jbG9uZSgpLnRvSVNPU3RyaW5nKCksXHJcbiAgICAgICAgICAgICAgICB3aGljaERhdGU6ICdzdGFydCdcclxuICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFVwZGF0ZSB0aGUgZW5kIHRpbWVcclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gZXZlbnRcclxuICAgICAqL1xyXG4gICAgdXBkYXRlRW5kVGltZShldmVudDogYW55KTogdm9pZCB7XHJcbiAgICAgICAgLy8gUGFyc2UgdGhlIHRpbWVcclxuICAgICAgICBjb25zdCBwYXJzZWRUaW1lID0gdGhpcy5fcGFyc2VUaW1lKGV2ZW50LnRhcmdldC52YWx1ZSk7XHJcblxyXG4gICAgICAgIC8vIEdvIGJhY2sgdG8gdGhlIHByZXZpb3VzIHZhbHVlIGlmIHRoZSBmb3JtIGNvbnRyb2wgaXMgbm90IHZhbGlkXHJcbiAgICAgICAgaWYgKHRoaXMuZW5kVGltZUZvcm1Db250cm9sLmludmFsaWQpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuX3JhbmdlLmVuZCkge1xyXG4gICAgICAgICAgICAgICAgLy8gT3ZlcnJpZGUgdGhlIHRpbWVcclxuICAgICAgICAgICAgICAgIGNvbnN0IHRpbWUgPSB0aGlzLl9yYW5nZS5lbmQuY2xvbmUoKS5mb3JtYXQodGhpcy5fdGltZUZvcm1hdCk7XHJcblxyXG4gICAgICAgICAgICAgICAgLy8gU2V0IHRoZSB0aW1lXHJcbiAgICAgICAgICAgICAgICB0aGlzLmVuZFRpbWVGb3JtQ29udHJvbC5zZXRWYWx1ZSh0aW1lKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyBEbyBub3QgdXBkYXRlIHRoZSByYW5nZVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5fcmFuZ2Uuc3RhcnQgJiYgdGhpcy5fcmFuZ2UuZW5kKSB7XHJcbiAgICAgICAgICAgIC8vIEFwcGVuZCB0aGUgbmV3IHRpbWUgdG8gdGhlIGVuZCBkYXRlXHJcbiAgICAgICAgICAgIGNvbnN0IGVuZERhdGUgPSB0aGlzLl9yYW5nZS5lbmQuY2xvbmUoKS5ob3VyKHBhcnNlZFRpbWUuaG91cigpKS5taW51dGUocGFyc2VkVGltZS5taW51dGUoKSk7XHJcblxyXG4gICAgICAgICAgICAvLyBJZiB0aGUgbmV3IGVuZCBkYXRlIGlzIGJlZm9yZSB0aGUgY3VycmVudCBzdGFydCBkYXRlLFxyXG4gICAgICAgICAgICAvLyB1c2UgdGhlIHN0YXJ0IGRhdGUncyB0aW1lIGFuZCBzZXQgdGhlIGVuZCBkYXRlIGFnYWluXHJcbiAgICAgICAgICAgIGlmIChlbmREYXRlLmlzQmVmb3JlKHRoaXMuX3JhbmdlLnN0YXJ0KSkge1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgc3RhcnREYXRlSG91cnMgPSB0aGlzLl9yYW5nZS5zdGFydC5ob3VyKCk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBzdGFydERhdGVNaW51dGVzID0gdGhpcy5fcmFuZ2Uuc3RhcnQubWludXRlKCk7XHJcblxyXG4gICAgICAgICAgICAgICAgLy8gU2V0IHRoZSBlbmQgZGF0ZVxyXG4gICAgICAgICAgICAgICAgZW5kRGF0ZS5ob3VyKHN0YXJ0RGF0ZUhvdXJzKS5taW51dGUoc3RhcnREYXRlTWludXRlcyk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8vIElmIGV2ZXJ5dGhpbmcgaXMgb2theSwgc2V0IHRoZSBuZXcgZGF0ZVxyXG4gICAgICAgICAgICB0aGlzLnJhbmdlID0ge1xyXG4gICAgICAgICAgICAgICAgc3RhcnQ6IHRoaXMuX3JhbmdlLnN0YXJ0LmNsb25lKCkudG9JU09TdHJpbmcoKSxcclxuICAgICAgICAgICAgICAgIGVuZDogZW5kRGF0ZS50b0lTT1N0cmluZygpLFxyXG4gICAgICAgICAgICAgICAgd2hpY2hEYXRlOiAnZW5kJ1xyXG4gICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbiAgICAvLyBAIFByaXZhdGUgbWV0aG9kc1xyXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEluaXRpYWxpemVcclxuICAgICAqXHJcbiAgICAgKiBAcHJpdmF0ZVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9pbml0KCk6IHZvaWQge1xyXG4gICAgICAgIC8vIFN0YXJ0IGFuZCBlbmQgdGltZSBmb3JtIGNvbnRyb2xzXHJcbiAgICAgICAgdGhpcy5zdGFydFRpbWVGb3JtQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgnJywgW1ZhbGlkYXRvcnMucGF0dGVybih0aGlzLl90aW1lUmVnRXhwKV0pO1xyXG4gICAgICAgIHRoaXMuZW5kVGltZUZvcm1Db250cm9sID0gbmV3IEZvcm1Db250cm9sKCcnLCBbVmFsaWRhdG9ycy5wYXR0ZXJuKHRoaXMuX3RpbWVSZWdFeHApXSk7XHJcblxyXG4gICAgICAgIC8vIFNldCB0aGUgZGVmYXVsdCByYW5nZVxyXG4gICAgICAgIHRoaXMuX3Byb2dyYW1tYXRpY0NoYW5nZSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5yYW5nZSA9IHtcclxuICAgICAgICAgICAgc3RhcnQ6IGRheWpzKCkuc3RhcnRPZignZGF5JykudG9JU09TdHJpbmcoKSxcclxuICAgICAgICAgICAgZW5kOiBkYXlqcygpLmFkZCgxLCAnZGF5JykuZW5kT2YoJ2RheScpLnRvSVNPU3RyaW5nKClcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICAvLyBTZXQgdGhlIGRlZmF1bHQgdGltZSByYW5nZVxyXG4gICAgICAgIHRoaXMuX3Byb2dyYW1tYXRpY0NoYW5nZSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy50aW1lUmFuZ2UgPSB0cnVlO1xyXG5cclxuICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFBhcnNlIHRoZSB0aW1lIGZyb20gdGhlIGlucHV0c1xyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSB2YWx1ZVxyXG4gICAgICogQHByaXZhdGVcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfcGFyc2VUaW1lKHZhbHVlOiBzdHJpbmcpOiBEYXlqcyB7XHJcbiAgICAgICAgLy8gUGFyc2UgdGhlIHRpbWUgdXNpbmcgdGhlIHRpbWUgcmVnZXhwXHJcbiAgICAgICAgY29uc3QgdGltZUFyciA9IHZhbHVlLnNwbGl0KHRoaXMuX3RpbWVSZWdFeHApLmZpbHRlcihwYXJ0ID0+IHBhcnQgIT09ICcnKTtcclxuXHJcbiAgICAgICAgLy8gR2V0IHRoZSBtZXJpZGllbVxyXG4gICAgICAgIGNvbnN0IG1lcmlkaWVtID0gdGltZUFyclsyXSB8fCBudWxsO1xyXG5cclxuICAgICAgICAvLyBJZiBtZXJpZGllbSBleGlzdHMuLi5cclxuICAgICAgICBpZiAobWVyaWRpZW0pIHtcclxuICAgICAgICAgICAgLy8gQ3JlYXRlIGEgbW9tZW50IHVzaW5nIDEyLWhvdXJzIGZvcm1hdCBhbmQgcmV0dXJuIGl0XHJcbiAgICAgICAgICAgIHJldHVybiBkYXlqcyh2YWx1ZSwgJ2hoOm1tQScpLnNlY29uZCgwKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIElmIG1lcmlkaWVtIGRvZXNuJ3QgZXhpc3QsIGNyZWF0ZSBhIG1vbWVudCB1c2luZyAyNC1ob3VycyBmb3JtYXQgYW5kIHJldHVybiBpblxyXG4gICAgICAgIHJldHVybiBkYXlqcyh2YWx1ZSwgJ0hIOm1tJykuc2Vjb25kKDApO1xyXG4gICAgfVxyXG59XHJcbiIsIjxkaXYgcm9sZT1cInByZXNlbnRhdGlvblwiIGNsYXNzPVwicmFuZ2VcIiAoY2xpY2spPVwib3BlblBpY2tlclBhbmVsKClcIiAjcGlja2VyUGFuZWxPcmlnaW4+XG5cbiAgPGRpdiBjbGFzcz1cInN0YXJ0XCI+XG4gICAgPGRpdiBjbGFzcz1cImRhdGVcIj57e3JhbmdlLnN0YXJ0RGF0ZX19PC9kaXY+XG4gICAgQGlmIChyYW5nZS5zdGFydFRpbWUpIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJ0aW1lXCI+e3tyYW5nZS5zdGFydFRpbWV9fTwvZGl2PlxuICAgIH1cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cInNlcGFyYXRvclwiPi08L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwiZW5kXCI+XG4gICAgPGRpdiBjbGFzcz1cImRhdGVcIj57e3JhbmdlLmVuZERhdGV9fTwvZGl2PlxuICAgIEBpZiAocmFuZ2UuZW5kVGltZSkge1xuICAgICAgPGRpdiBjbGFzcz1cInRpbWVcIj57e3JhbmdlLmVuZFRpbWV9fTwvZGl2PlxuICAgIH1cbiAgPC9kaXY+XG5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI3BpY2tlclBhbmVsPlxuXG4gIDwhLS0gU3RhcnQgLS0+XG4gIDxkaXYgY2xhc3M9XCJzdGFydFwiPlxuXG4gICAgPGRpdiBjbGFzcz1cIm1vbnRoXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwibW9udGgtaGVhZGVyXCI+XG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwicHJldmlvdXMtYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJwcmV2KClcIiB0YWJpbmRleD1cIjFcIj5cbiAgICAgICAgICA8bWF0LWljb24gW3N2Z0ljb25dPVwiJ2hlcm9pY29uc19vdXRsaW5lOmNoZXZyb24tbGVmdCdcIj48L21hdC1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vbnRoLWxhYmVsXCI+e3tnZXRNb250aExhYmVsKDEpfX08L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPG1hdC1tb250aC12aWV3IFsoYWN0aXZlRGF0ZSldPVwiYWN0aXZlRGF0ZXMubW9udGgxXCIgW2RhdGVGaWx0ZXJdPVwiZGF0ZUZpbHRlcigpXCIgW2RhdGVDbGFzc109XCJkYXRlQ2xhc3MoKVwiXG4gICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKClcIiAoc2VsZWN0ZWRDaGFuZ2UpPVwib25TZWxlY3RlZERhdGVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICNtYXRNb250aFZpZXcxPlxuICAgICAgPC9tYXQtbW9udGgtdmlldz5cbiAgICA8L2Rpdj5cblxuICAgIEBpZiAodGltZVJhbmdlKSB7XG4gICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJ0aW1lIHN0YXJ0LXRpbWVcIj5cbiAgICAgICAgPGlucHV0IG1hdElucHV0IFthdXRvY29tcGxldGVdPVwiJ29mZidcIiBbZm9ybUNvbnRyb2xdPVwic3RhcnRUaW1lRm9ybUNvbnRyb2xcIiAoYmx1cik9XCJ1cGRhdGVTdGFydFRpbWUoJGV2ZW50KVwiXG4gICAgICAgICAgdGFiaW5kZXg9XCIzXCI+XG4gICAgICAgICAgPG1hdC1sYWJlbD7lvIDlp4vml7bpl7Q8L21hdC1sYWJlbD5cbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgIH1cblxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBFbmQgLS0+XG4gICAgPGRpdiBjbGFzcz1cImVuZFwiPlxuXG4gICAgICA8ZGl2IGNsYXNzPVwibW9udGhcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vbnRoLWhlYWRlclwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb250aC1sYWJlbFwiPnt7Z2V0TW9udGhMYWJlbCgyKX19PC9kaXY+XG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJuZXh0LWJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwibmV4dCgpXCIgdGFiaW5kZXg9XCIyXCI+XG4gICAgICAgICAgICA8bWF0LWljb24gW3N2Z0ljb25dPVwiJ2hlcm9pY29uc19vdXRsaW5lOmNoZXZyb24tcmlnaHQnXCI+PC9tYXQtaWNvbj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxtYXQtbW9udGgtdmlldyBbKGFjdGl2ZURhdGUpXT1cImFjdGl2ZURhdGVzLm1vbnRoMlwiIFtkYXRlRmlsdGVyXT1cImRhdGVGaWx0ZXIoKVwiIFtkYXRlQ2xhc3NdPVwiZGF0ZUNsYXNzKClcIlxuICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKClcIiAoc2VsZWN0ZWRDaGFuZ2UpPVwib25TZWxlY3RlZERhdGVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgI21hdE1vbnRoVmlldzI+XG4gICAgICAgIDwvbWF0LW1vbnRoLXZpZXc+XG4gICAgICA8L2Rpdj5cblxuICAgICAgQGlmICh0aW1lUmFuZ2UpIHtcbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwidGltZSBlbmQtdGltZVwiPlxuICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBbZm9ybUNvbnRyb2xdPVwiZW5kVGltZUZvcm1Db250cm9sXCIgKGJsdXIpPVwidXBkYXRlRW5kVGltZSgkZXZlbnQpXCIgdGFiaW5kZXg9XCI0XCI+XG4gICAgICAgICAgPG1hdC1sYWJlbD7nu5PmnZ/ml7bpl7Q8L21hdC1sYWJlbD5cbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgIH1cblxuICAgIDwvZGl2PlxuXG4gIDwvbmctdGVtcGxhdGU+Il19
|
|
@@ -259,10 +259,10 @@ export class CmatDrawerComponent {
|
|
|
259
259
|
// Execute the observable
|
|
260
260
|
this.openedChanged.next(open);
|
|
261
261
|
}
|
|
262
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
263
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
262
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: CmatDrawerComponent, deps: [{ token: i1.AnimationBuilder }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i2.CmatDrawerService }, { token: i3.CmatUtilsService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
263
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.0", type: CmatDrawerComponent, isStandalone: true, selector: "cmat-drawer", inputs: { fixed: "fixed", mode: "mode", name: "name", opened: "opened", position: "position", transparentOverlay: "transparentOverlay" }, outputs: { fixedChanged: "fixedChanged", modeChanged: "modeChanged", openedChanged: "openedChanged", positionChanged: "positionChanged" }, host: { listeners: { "mouseenter": "onMouseenter()", "mouseleave": "onMouseleave()" }, properties: { "class": "this.classList", "style": "this.styleList" } }, exportAs: ["cmatDrawer"], usesOnChanges: true, ngImport: i0, template: "<div class=\"cmat-drawer-content\">\r\n <ng-content></ng-content>\r\n</div>", styles: ["cmat-drawer{position:relative;display:flex;flex-direction:column;flex:1 1 auto;width:320px;min-width:320px;max-width:320px;z-index:300;box-shadow:0 2px 8px #00000059}cmat-drawer.cmat-drawer-animations-enabled{transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.8,.25,1);transition-property:visibility,margin-left,margin-right,transform,width,max-width,min-width}cmat-drawer.cmat-drawer-animations-enabled .cmat-drawer-content{transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.8,.25,1);transition-property:width,max-width,min-width}cmat-drawer.cmat-drawer-mode-over{position:absolute;top:0;bottom:0}cmat-drawer.cmat-drawer-mode-over.cmat-drawer-fixed{position:fixed}cmat-drawer.cmat-drawer-position-left.cmat-drawer-mode-side{margin-left:-320px}cmat-drawer.cmat-drawer-position-left.cmat-drawer-mode-side.cmat-drawer-opened{margin-left:0}cmat-drawer.cmat-drawer-position-left.cmat-drawer-mode-over{left:0;transform:translate3d(-100%,0,0)}cmat-drawer.cmat-drawer-position-left.cmat-drawer-mode-over.cmat-drawer-opened{transform:translateZ(0)}cmat-drawer.cmat-drawer-position-left .cmat-drawer-content{left:0}cmat-drawer.cmat-drawer-position-right.cmat-drawer-mode-side{margin-right:-320px}cmat-drawer.cmat-drawer-position-right.cmat-drawer-mode-side.cmat-drawer-opened{margin-right:0}cmat-drawer.cmat-drawer-position-right.cmat-drawer-mode-over{right:0;transform:translate3d(100%,0,0)}cmat-drawer.cmat-drawer-position-right.cmat-drawer-mode-over.cmat-drawer-opened{transform:translateZ(0)}cmat-drawer.cmat-drawer-position-right .cmat-drawer-content{right:0}cmat-drawer .cmat-drawer-content{position:absolute;display:flex;flex:1 1 auto;top:0;bottom:0;width:100%;height:100%;overflow:hidden}.cmat-drawer-overlay{position:absolute;inset:0;z-index:299;opacity:1;background-color:#0009}.cmat-drawer-overlay.cmat-drawer-overlay-fixed{position:fixed}.cmat-drawer-overlay.cmat-drawer-overlay-transparent{background-color:transparent}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
264
264
|
}
|
|
265
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
265
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: CmatDrawerComponent, decorators: [{
|
|
266
266
|
type: Component,
|
|
267
267
|
args: [{ selector: 'cmat-drawer', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, exportAs: 'cmatDrawer', standalone: true, template: "<div class=\"cmat-drawer-content\">\r\n <ng-content></ng-content>\r\n</div>", styles: ["cmat-drawer{position:relative;display:flex;flex-direction:column;flex:1 1 auto;width:320px;min-width:320px;max-width:320px;z-index:300;box-shadow:0 2px 8px #00000059}cmat-drawer.cmat-drawer-animations-enabled{transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.8,.25,1);transition-property:visibility,margin-left,margin-right,transform,width,max-width,min-width}cmat-drawer.cmat-drawer-animations-enabled .cmat-drawer-content{transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.8,.25,1);transition-property:width,max-width,min-width}cmat-drawer.cmat-drawer-mode-over{position:absolute;top:0;bottom:0}cmat-drawer.cmat-drawer-mode-over.cmat-drawer-fixed{position:fixed}cmat-drawer.cmat-drawer-position-left.cmat-drawer-mode-side{margin-left:-320px}cmat-drawer.cmat-drawer-position-left.cmat-drawer-mode-side.cmat-drawer-opened{margin-left:0}cmat-drawer.cmat-drawer-position-left.cmat-drawer-mode-over{left:0;transform:translate3d(-100%,0,0)}cmat-drawer.cmat-drawer-position-left.cmat-drawer-mode-over.cmat-drawer-opened{transform:translateZ(0)}cmat-drawer.cmat-drawer-position-left .cmat-drawer-content{left:0}cmat-drawer.cmat-drawer-position-right.cmat-drawer-mode-side{margin-right:-320px}cmat-drawer.cmat-drawer-position-right.cmat-drawer-mode-side.cmat-drawer-opened{margin-right:0}cmat-drawer.cmat-drawer-position-right.cmat-drawer-mode-over{right:0;transform:translate3d(100%,0,0)}cmat-drawer.cmat-drawer-position-right.cmat-drawer-mode-over.cmat-drawer-opened{transform:translateZ(0)}cmat-drawer.cmat-drawer-position-right .cmat-drawer-content{right:0}cmat-drawer .cmat-drawer-content{position:absolute;display:flex;flex:1 1 auto;top:0;bottom:0;width:100%;height:100%;overflow:hidden}.cmat-drawer-overlay{position:absolute;inset:0;z-index:299;opacity:1;background-color:#0009}.cmat-drawer-overlay.cmat-drawer-overlay-fixed{position:fixed}.cmat-drawer-overlay.cmat-drawer-overlay-transparent{background-color:transparent}\n"] }]
|
|
268
268
|
}], ctorParameters: () => [{ type: i1.AnimationBuilder }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i2.CmatDrawerService }, { type: i3.CmatUtilsService }], propDecorators: { fixed: [{
|
|
@@ -298,4 +298,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImpor
|
|
|
298
298
|
type: HostListener,
|
|
299
299
|
args: ['mouseleave']
|
|
300
300
|
}] } });
|
|
301
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhd2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NtYXQvY29tcG9uZW50cy9kcmF3ZXIvZHJhd2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NtYXQvY29tcG9uZW50cy9kcmF3ZXIvZHJhd2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQXFDLEtBQUssRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3hGLE9BQU8sRUFBZ0IscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM1RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBZ0MsTUFBTSxFQUE0QixpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7QUFjbE4sTUFBTSxPQUFPLG1CQUFtQjtJQXVCNUIsWUFDWSxpQkFBbUMsRUFDbkMsV0FBdUIsRUFDdkIsVUFBcUIsRUFDckIsa0JBQXFDLEVBQ3JDLGlCQUFtQztRQUpuQyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQWtCO1FBQ25DLGdCQUFXLEdBQVgsV0FBVyxDQUFZO1FBQ3ZCLGVBQVUsR0FBVixVQUFVLENBQVc7UUFDckIsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFtQjtRQUNyQyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQWtCO1FBdkIvQyx3REFBd0Q7UUFFL0MsVUFBSyxHQUFZLEtBQUssQ0FBQztRQUN2QixTQUFJLEdBQW1CLE1BQU0sQ0FBQztRQUM5QixTQUFJLEdBQVcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2pELFdBQU0sR0FBWSxLQUFLLENBQUM7UUFDeEIsYUFBUSxHQUF1QixNQUFNLENBQUM7UUFDdEMsdUJBQWtCLEdBQVksS0FBSyxDQUFDO1FBQzFC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QUFNLFlBQ3JDLFlBQVksY0FDVixJQUFJO3FNQVNQLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFDYSxZQUFZO3NCQUE5QixNQUFNO2dCQUNZLFdBQVc7c0JBQTdCLE1BQU07Z0JBQ1ksYUFBYTtzQkFBL0IsTUFBTTtnQkFDWSxlQUFlO3NCQUFqQyxNQUFNO2dCQWdCbUIsU0FBUztzQkFBbEMsV0FBVzt1QkFBQyxPQUFPO2dCQVlNLFNBQVM7c0JBQWxDLFdBQVc7dUJBQUMsT0FBTztnQkFPcEIsWUFBWTtzQkFEWCxZQUFZO3VCQUFDLFlBQVk7Z0JBVTFCLFlBQVk7c0JBRFgsWUFBWTt1QkFBQyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYW5pbWF0ZSwgQW5pbWF0aW9uQnVpbGRlciwgQW5pbWF0aW9uUGxheWVyLCBzdHlsZSB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xyXG5pbXBvcnQgeyBCb29sZWFuSW5wdXQsIGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XHJcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSG9zdEJpbmRpbmcsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCwgUmVuZGVyZXIyLCBTaW1wbGVDaGFuZ2VzLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDbWF0VXRpbHNTZXJ2aWNlIH0gZnJvbSAnY21hdC9zZXJ2aWNlcy91dGlscyc7XHJcbmltcG9ydCB7IENtYXREcmF3ZXJTZXJ2aWNlIH0gZnJvbSAnLi9kcmF3ZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IENtYXREcmF3ZXJNb2RlLCBDbWF0RHJhd2VyUG9zaXRpb24gfSBmcm9tICcuL2RyYXdlci50eXBlcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnY21hdC1kcmF3ZXInLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2RyYXdlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9kcmF3ZXIuY29tcG9uZW50LnNjc3MnXSxcclxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICAgIGV4cG9ydEFzOiAnY21hdERyYXdlcicsXHJcbiAgICBzdGFuZGFsb25lOiB0cnVlXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDbWF0RHJhd2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb24gKi9cclxuICAgIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9maXhlZDogQm9vbGVhbklucHV0O1xyXG4gICAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX29wZW5lZDogQm9vbGVhbklucHV0O1xyXG4gICAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX3RyYW5zcGFyZW50T3ZlcmxheTogQm9vbGVhbklucHV0O1xyXG4gICAgLyogZXNsaW50LWVuYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb24gKi9cclxuXHJcbiAgICBASW5wdXQoKSBmaXhlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgQElucHV0KCkgbW9kZTogQ21hdERyYXdlck1vZGUgPSAnc2lkZSc7XHJcbiAgICBASW5wdXQoKSBuYW1lOiBzdHJpbmcgPSB0aGlzLl9jbWF0VXRpbHNTZXJ2aWNlLnJhbmRvbUlkKCk7XHJcbiAgICBASW5wdXQoKSBvcGVuZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIEBJbnB1dCgpIHBvc2l0aW9uOiBDbWF0RHJhd2VyUG9zaXRpb24gPSAnbGVmdCc7XHJcbiAgICBASW5wdXQoKSB0cmFuc3BhcmVudE92ZXJsYXk6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIEBPdXRwdXQoKSByZWFkb25seSBmaXhlZENoYW5nZWQ6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcclxuICAgIEBPdXRwdXQoKSByZWFkb25seSBtb2RlQ2hhbmdlZDogRXZlbnRFbWl0dGVyPENtYXREcmF3ZXJNb2RlPiA9IG5ldyBFdmVudEVtaXR0ZXI8Q21hdERyYXdlck1vZGU+KCk7XHJcbiAgICBAT3V0cHV0KCkgcmVhZG9ubHkgb3BlbmVkQ2hhbmdlZDogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xyXG4gICAgQE91dHB1dCgpIHJlYWRvbmx5IHBvc2l0aW9uQ2hhbmdlZDogRXZlbnRFbWl0dGVyPENtYXREcmF3ZXJQb3NpdGlvbj4gPSBuZXcgRXZlbnRFbWl0dGVyPENtYXREcmF3ZXJQb3NpdGlvbj4oKTtcclxuXHJcbiAgICBwcml2YXRlIF9hbmltYXRpb25zRW5hYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcHJpdmF0ZSBfaG92ZXJlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcHJpdmF0ZSBfb3ZlcmxheTogSFRNTEVsZW1lbnQgfCBudWxsO1xyXG4gICAgcHJpdmF0ZSBfcGxheWVyOiBBbmltYXRpb25QbGF5ZXI7XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJpdmF0ZSBfYW5pbWF0aW9uQnVpbGRlcjogQW5pbWF0aW9uQnVpbGRlcixcclxuICAgICAgICBwcml2YXRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmLFxyXG4gICAgICAgIHByaXZhdGUgX3JlbmRlcmVyMjogUmVuZGVyZXIyLFxyXG4gICAgICAgIHByaXZhdGUgX2NtYXREcmF3ZXJTZXJ2aWNlOiBDbWF0RHJhd2VyU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIF9jbWF0VXRpbHNTZXJ2aWNlOiBDbWF0VXRpbHNTZXJ2aWNlXHJcbiAgICApIHtcclxuICAgIH1cclxuXHJcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzJykgZ2V0IGNsYXNzTGlzdCgpOiBhbnkge1xyXG4gICAgICAgIC8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvbiAqL1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICdjbWF0LWRyYXdlci1hbmltYXRpb25zLWVuYWJsZWQnOiB0aGlzLl9hbmltYXRpb25zRW5hYmxlZCxcclxuICAgICAgICAgICAgJ2NtYXQtZHJhd2VyLWZpeGVkJzogdGhpcy5maXhlZCxcclxuICAgICAgICAgICAgJ2NtYXQtZHJhd2VyLWhvdmVyJzogdGhpcy5faG92ZXJlZCxcclxuICAgICAgICAgICAgW2BjbWF0LWRyYXdlci1tb2RlLSR7dGhpcy5tb2RlfWBdOiB0cnVlLFxyXG4gICAgICAgICAgICAnY21hdC1kcmF3ZXItb3BlbmVkJzogdGhpcy5vcGVuZWQsXHJcbiAgICAgICAgICAgIFtgY21hdC1kcmF3ZXItcG9zaXRpb24tJHt0aGlzLnBvc2l0aW9ufWBdOiB0cnVlXHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICBASG9zdEJpbmRpbmcoJ3N0eWxlJykgZ2V0IHN0eWxlTGlzdCgpOiBhbnkge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICd2aXNpYmlsaXR5JzogdGhpcy5vcGVuZWQgPyAndmlzaWJsZScgOiAnaGlkZGVuJ1xyXG4gICAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgQEhvc3RMaXN0ZW5lcignbW91c2VlbnRlcicpXHJcbiAgICBvbk1vdXNlZW50ZXIoKTogdm9pZCB7XHJcbiAgICAgICAgLy8gRW5hYmxlIHRoZSBhbmltYXRpb25zXHJcbiAgICAgICAgdGhpcy5fZW5hYmxlQW5pbWF0aW9ucygpO1xyXG5cclxuICAgICAgICAvLyBTZXQgdGhlIGhvdmVyZWRcclxuICAgICAgICB0aGlzLl9ob3ZlcmVkID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBASG9zdExpc3RlbmVyKCdtb3VzZWxlYXZlJylcclxuICAgIG9uTW91c2VsZWF2ZSgpOiB2b2lkIHtcclxuICAgICAgICAvLyBFbmFibGUgdGhlIGFuaW1hdGlvbnNcclxuICAgICAgICB0aGlzLl9lbmFibGVBbmltYXRpb25zKCk7XHJcblxyXG4gICAgICAgIC8vIFNldCB0aGUgaG92ZXJlZFxyXG4gICAgICAgIHRoaXMuX2hvdmVyZWQgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICAgICAgLy8gRml4ZWRcclxuICAgICAgICBpZiAoJ2ZpeGVkJyBpbiBjaGFuZ2VzKSB7XHJcbiAgICAgICAgICAgIC8vIENvZXJjZSB0aGUgdmFsdWUgdG8gYSBib29sZWFuXHJcbiAgICAgICAgICAgIHRoaXMuZml4ZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkoY2hhbmdlc1snZml4ZWQnXS5jdXJyZW50VmFsdWUpO1xyXG5cclxuICAgICAgICAgICAgLy8gRXhlY3V0ZSB0aGUgb2JzZXJ2YWJsZVxyXG4gICAgICAgICAgICB0aGlzLmZpeGVkQ2hhbmdlZC5uZXh0KHRoaXMuZml4ZWQpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gTW9kZVxyXG4gICAgICAgIGlmICgnbW9kZScgaW4gY2hhbmdlcykge1xyXG4gICAgICAgICAgICAvLyBHZXQgdGhlIHByZXZpb3VzIGFuZCBjdXJyZW50IHZhbHVlc1xyXG4gICAgICAgICAgICBjb25zdCBwcmV2aW91c01vZGUgPSBjaGFuZ2VzWydtb2RlJ10ucHJldmlvdXNWYWx1ZTtcclxuICAgICAgICAgICAgY29uc3QgY3VycmVudE1vZGUgPSBjaGFuZ2VzWydtb2RlJ10uY3VycmVudFZhbHVlO1xyXG5cclxuICAgICAgICAgICAgLy8gRGlzYWJsZSB0aGUgYW5pbWF0aW9uc1xyXG4gICAgICAgICAgICB0aGlzLl9kaXNhYmxlQW5pbWF0aW9ucygpO1xyXG5cclxuICAgICAgICAgICAgLy8gSWYgdGhlIG1vZGUgY2hhbmdlczogJ292ZXIgLT4gc2lkZSdcclxuICAgICAgICAgICAgaWYgKHByZXZpb3VzTW9kZSA9PT0gJ292ZXInICYmIGN1cnJlbnRNb2RlID09PSAnc2lkZScpIHtcclxuICAgICAgICAgICAgICAgIC8vIEhpZGUgdGhlIG92ZXJsYXlcclxuICAgICAgICAgICAgICAgIHRoaXMuX2hpZGVPdmVybGF5KCk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8vIElmIHRoZSBtb2RlIGNoYW5nZXM6ICdzaWRlIC0+IG92ZXInXHJcbiAgICAgICAgICAgIGlmIChwcmV2aW91c01vZGUgPT09ICdzaWRlJyAmJiBjdXJyZW50TW9kZSA9PT0gJ292ZXInKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBJZiB0aGUgZHJhd2VyIGlzIG9wZW5lZFxyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMub3BlbmVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gU2hvdyB0aGUgb3ZlcmxheVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3Nob3dPdmVybGF5KCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8vIEV4ZWN1dGUgdGhlIG9ic2VydmFibGVcclxuICAgICAgICAgICAgdGhpcy5tb2RlQ2hhbmdlZC5uZXh0KGN1cnJlbnRNb2RlKTtcclxuXHJcbiAgICAgICAgICAgIC8vIEVuYWJsZSB0aGUgYW5pbWF0aW9ucyBhZnRlciBhIGRlbGF5XHJcbiAgICAgICAgICAgIC8vIFRoZSBkZWxheSBtdXN0IGJlIGJpZ2dlciB0aGFuIHRoZSBjdXJyZW50IHRyYW5zaXRpb24tZHVyYXRpb25cclxuICAgICAgICAgICAgLy8gdG8gbWFrZSBzdXJlIG5vdGhpbmcgd2lsbCBiZSBhbmltYXRlZCB3aGlsZSB0aGUgbW9kZSBpcyBjaGFuZ2luZ1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2VuYWJsZUFuaW1hdGlvbnMoKTtcclxuICAgICAgICAgICAgfSwgNTAwKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIE9wZW5lZFxyXG4gICAgICAgIGlmICgnb3BlbmVkJyBpbiBjaGFuZ2VzKSB7XHJcbiAgICAgICAgICAgIC8vIENvZXJjZSB0aGUgdmFsdWUgdG8gYSBib29sZWFuXHJcbiAgICAgICAgICAgIGNvbnN0IG9wZW4gPSBjb2VyY2VCb29sZWFuUHJvcGVydHkoY2hhbmdlc1snb3BlbmVkJ10uY3VycmVudFZhbHVlKTtcclxuXHJcbiAgICAgICAgICAgIC8vIE9wZW4vY2xvc2UgdGhlIGRyYXdlclxyXG4gICAgICAgICAgICB0aGlzLl90b2dnbGVPcGVuZWQob3Blbik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBQb3NpdGlvblxyXG4gICAgICAgIGlmICgncG9zaXRpb24nIGluIGNoYW5nZXMpIHtcclxuICAgICAgICAgICAgLy8gRXhlY3V0ZSB0aGUgb2JzZXJ2YWJsZVxyXG4gICAgICAgICAgICB0aGlzLnBvc2l0aW9uQ2hhbmdlZC5uZXh0KHRoaXMucG9zaXRpb24pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gVHJhbnNwYXJlbnQgb3ZlcmxheVxyXG4gICAgICAgIGlmICgndHJhbnNwYXJlbnRPdmVybGF5JyBpbiBjaGFuZ2VzKSB7XHJcbiAgICAgICAgICAgIC8vIENvZXJjZSB0aGUgdmFsdWUgdG8gYSBib29sZWFuXHJcbiAgICAgICAgICAgIHRoaXMudHJhbnNwYXJlbnRPdmVybGF5ID0gY29lcmNlQm9vbGVhblByb3BlcnR5KGNoYW5nZXNbJ3RyYW5zcGFyZW50T3ZlcmxheSddLmN1cnJlbnRWYWx1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgICAgIC8vIFJlZ2lzdGVyIHRoZSBkcmF3ZXJcclxuICAgICAgICB0aGlzLl9jbWF0RHJhd2VyU2VydmljZS5yZWdpc3RlckNvbXBvbmVudCh0aGlzLm5hbWUsIHRoaXMpO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgICAgIC8vIERlcmVnaXN0ZXIgdGhlIGRyYXdlciBmcm9tIHRoZSByZWdpc3RyeVxyXG4gICAgICAgIHRoaXMuX2NtYXREcmF3ZXJTZXJ2aWNlLmRlcmVnaXN0ZXJDb21wb25lbnQodGhpcy5uYW1lKTtcclxuICAgIH1cclxuXHJcbiAgICBvcGVuKCk6IHZvaWQge1xyXG4gICAgICAgIC8vIFJldHVybiBpZiB0aGUgZHJhd2VyIGhhcyBhbHJlYWR5IG9wZW5lZFxyXG4gICAgICAgIGlmICh0aGlzLm9wZW5lZCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBPcGVuIHRoZSBkcmF3ZXJcclxuICAgICAgICB0aGlzLl90b2dnbGVPcGVuZWQodHJ1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgY2xvc2UoKTogdm9pZCB7XHJcbiAgICAgICAgLy8gUmV0dXJuIGlmIHRoZSBkcmF3ZXIgaGFzIGFscmVhZHkgY2xvc2VkXHJcbiAgICAgICAgaWYgKCF0aGlzLm9wZW5lZCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBDbG9zZSB0aGUgZHJhd2VyXHJcbiAgICAgICAgdGhpcy5fdG9nZ2xlT3BlbmVkKGZhbHNlKTtcclxuICAgIH1cclxuXHJcbiAgICB0b2dnbGUoKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMub3BlbmVkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY2xvc2UoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMub3BlbigpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEVuYWJsZSB0aGUgYW5pbWF0aW9uc1xyXG4gICAgICpcclxuICAgICAqIEBwcml2YXRlXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX2VuYWJsZUFuaW1hdGlvbnMoKTogdm9pZCB7XHJcbiAgICAgICAgLy8gUmV0dXJuIGlmIHRoZSBhbmltYXRpb25zIGFyZSBhbHJlYWR5IGVuYWJsZWRcclxuICAgICAgICBpZiAodGhpcy5fYW5pbWF0aW9uc0VuYWJsZWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gRW5hYmxlIHRoZSBhbmltYXRpb25zXHJcbiAgICAgICAgdGhpcy5fYW5pbWF0aW9uc0VuYWJsZWQgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRGlzYWJsZSB0aGUgYW5pbWF0aW9uc1xyXG4gICAgICpcclxuICAgICAqIEBwcml2YXRlXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX2Rpc2FibGVBbmltYXRpb25zKCk6IHZvaWQge1xyXG4gICAgICAgIC8vIFJldHVybiBpZiB0aGUgYW5pbWF0aW9ucyBhcmUgYWxyZWFkeSBkaXNhYmxlZFxyXG4gICAgICAgIGlmICghdGhpcy5fYW5pbWF0aW9uc0VuYWJsZWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gRGlzYWJsZSB0aGUgYW5pbWF0aW9uc1xyXG4gICAgICAgIHRoaXMuX2FuaW1hdGlvbnNFbmFibGVkID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTaG93IHRoZSBiYWNrZHJvcFxyXG4gICAgICpcclxuICAgICAqIEBwcml2YXRlXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX3Nob3dPdmVybGF5KCk6IHZvaWQge1xyXG4gICAgICAgIC8vIENyZWF0ZSB0aGUgYmFja2Ryb3AgZWxlbWVudFxyXG4gICAgICAgIHRoaXMuX292ZXJsYXkgPSB0aGlzLl9yZW5kZXJlcjIuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcblxyXG4gICAgICAgIC8vIFJldHVybiBpZiBvdmVybGF5IGNvdWxkbid0IGJlIGNyZWF0ZSBmb3Igc29tZSByZWFzb25cclxuICAgICAgICBpZiAoIXRoaXMuX292ZXJsYXkpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gQWRkIGEgY2xhc3MgdG8gdGhlIGJhY2tkcm9wIGVsZW1lbnRcclxuICAgICAgICB0aGlzLl9vdmVybGF5LmNsYXNzTGlzdC5hZGQoJ2NtYXQtZHJhd2VyLW92ZXJsYXknKTtcclxuXHJcbiAgICAgICAgLy8gQWRkIGEgY2xhc3MgZGVwZW5kaW5nIG9uIHRoZSBmaXhlZCBvcHRpb25cclxuICAgICAgICBpZiAodGhpcy5maXhlZCkge1xyXG4gICAgICAgICAgICB0aGlzLl9vdmVybGF5LmNsYXNzTGlzdC5hZGQoJ2NtYXQtZHJhd2VyLW92ZXJsYXktZml4ZWQnKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIEFkZCBhIGNsYXNzIGRlcGVuZGluZyBvbiB0aGUgdHJhbnNwYXJlbnRPdmVybGF5IG9wdGlvblxyXG4gICAgICAgIGlmICh0aGlzLnRyYW5zcGFyZW50T3ZlcmxheSkge1xyXG4gICAgICAgICAgICB0aGlzLl9vdmVybGF5LmNsYXNzTGlzdC5hZGQoJ2NtYXQtZHJhd2VyLW92ZXJsYXktdHJhbnNwYXJlbnQnKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIEFwcGVuZCB0aGUgYmFja2Ryb3AgdG8gdGhlIHBhcmVudCBvZiB0aGUgZHJhd2VyXHJcbiAgICAgICAgdGhpcy5fcmVuZGVyZXIyLmFwcGVuZENoaWxkKHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5wYXJlbnRFbGVtZW50LCB0aGlzLl9vdmVybGF5KTtcclxuXHJcbiAgICAgICAgLy8gQ3JlYXRlIHRoZSBlbnRlciBhbmltYXRpb24gYW5kIGF0dGFjaCBpdCB0byB0aGUgcGxheWVyXHJcbiAgICAgICAgdGhpcy5fcGxheWVyID0gdGhpcy5fYW5pbWF0aW9uQnVpbGRlci5idWlsZChbXHJcbiAgICAgICAgICAgIGFuaW1hdGUoJzMwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpJywgc3R5bGUoeyBvcGFjaXR5OiAxIH0pKVxyXG4gICAgICAgIF0pLmNyZWF0ZSh0aGlzLl9vdmVybGF5KTtcclxuXHJcbiAgICAgICAgLy8gT25jZSB0aGUgYW5pbWF0aW9uIGlzIGRvbmUuLi5cclxuICAgICAgICB0aGlzLl9wbGF5ZXIub25Eb25lKCgpID0+IHtcclxuXHJcbiAgICAgICAgICAgIC8vIERlc3Ryb3kgdGhlIHBsYXllclxyXG4gICAgICAgICAgICB0aGlzLl9wbGF5ZXIuZGVzdHJveSgpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICAvLyBQbGF5IHRoZSBhbmltYXRpb25cclxuICAgICAgICB0aGlzLl9wbGF5ZXIucGxheSgpO1xyXG5cclxuICAgICAgICAvLyBBZGQgYW4gZXZlbnQgbGlzdGVuZXIgdG8gdGhlIG92ZXJsYXlcclxuICAgICAgICB0aGlzLl9vdmVybGF5LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmNsb3NlKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBIaWRlIHRoZSBiYWNrZHJvcFxyXG4gICAgICpcclxuICAgICAqIEBwcml2YXRlXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX2hpZGVPdmVybGF5KCk6IHZvaWQge1xyXG4gICAgICAgIGlmICghdGhpcy5fb3ZlcmxheSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBDcmVhdGUgdGhlIGxlYXZlIGFuaW1hdGlvbiBhbmQgYXR0YWNoIGl0IHRvIHRoZSBwbGF5ZXJcclxuICAgICAgICB0aGlzLl9wbGF5ZXIgPSB0aGlzLl9hbmltYXRpb25CdWlsZGVyLmJ1aWxkKFtcclxuICAgICAgICAgICAgYW5pbWF0ZSgnMzAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSknLCBzdHlsZSh7IG9wYWNpdHk6IDAgfSkpXHJcbiAgICAgICAgXSkuY3JlYXRlKHRoaXMuX292ZXJsYXkpO1xyXG5cclxuICAgICAgICAvLyBQbGF5IHRoZSBhbmltYXRpb25cclxuICAgICAgICB0aGlzLl9wbGF5ZXIucGxheSgpO1xyXG5cclxuICAgICAgICAvLyBPbmNlIHRoZSBhbmltYXRpb24gaXMgZG9uZS4uLlxyXG4gICAgICAgIHRoaXMuX3BsYXllci5vbkRvbmUoKCkgPT4ge1xyXG5cclxuICAgICAgICAgICAgLy8gRGVzdHJveSB0aGUgcGxheWVyXHJcbiAgICAgICAgICAgIHRoaXMuX3BsYXllci5kZXN0cm95KCk7XHJcblxyXG4gICAgICAgICAgICAvLyBJZiB0aGUgYmFja2Ryb3Agc3RpbGwgZXhpc3RzLi4uXHJcbiAgICAgICAgICAgIGlmICh0aGlzLl9vdmVybGF5KSB7XHJcbiAgICAgICAgICAgICAgICAvLyBSZW1vdmUgdGhlIGJhY2tkcm9wXHJcbiAgICAgICAgICAgICAgICB0aGlzLl9vdmVybGF5LnBhcmVudE5vZGU/LnJlbW92ZUNoaWxkKHRoaXMuX292ZXJsYXkpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fb3ZlcmxheSA9IG51bGw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIE9wZW4vY2xvc2UgdGhlIGRyYXdlclxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBvcGVuXHJcbiAgICAgKiBAcHJpdmF0ZVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF90b2dnbGVPcGVuZWQob3BlbjogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgICAgIC8vIFNldCB0aGUgb3BlbmVkXHJcbiAgICAgICAgdGhpcy5vcGVuZWQgPSBvcGVuO1xyXG5cclxuICAgICAgICAvLyBFbmFibGUgdGhlIGFuaW1hdGlvbnNcclxuICAgICAgICB0aGlzLl9lbmFibGVBbmltYXRpb25zKCk7XHJcblxyXG4gICAgICAgIC8vIElmIHRoZSBtb2RlIGlzICdvdmVyJ1xyXG4gICAgICAgIGlmICh0aGlzLm1vZGUgPT09ICdvdmVyJykge1xyXG4gICAgICAgICAgICAvLyBJZiB0aGUgZHJhd2VyIG9wZW5zLCBzaG93IHRoZSBvdmVybGF5XHJcbiAgICAgICAgICAgIGlmIChvcGVuKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9zaG93T3ZlcmxheSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIE90aGVyd2lzZSwgY2xvc2UgdGhlIG92ZXJsYXlcclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9oaWRlT3ZlcmxheSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBFeGVjdXRlIHRoZSBvYnNlcnZhYmxlXHJcbiAgICAgICAgdGhpcy5vcGVuZWRDaGFuZ2VkLm5leHQob3Blbik7XHJcbiAgICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImNtYXQtZHJhd2VyLWNvbnRlbnRcIj5cclxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cclxuPC9kaXY+Il19
|
|
301
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhd2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NtYXQvY29tcG9uZW50cy9kcmF3ZXIvZHJhd2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NtYXQvY29tcG9uZW50cy9kcmF3ZXIvZHJhd2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQXFDLEtBQUssRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3hGLE9BQU8sRUFBZ0IscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM1RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBZ0MsTUFBTSxFQUE0QixpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7QUFjbE4sTUFBTSxPQUFPLG1CQUFtQjtJQXVCNUIsWUFDWSxpQkFBbUMsRUFDbkMsV0FBdUIsRUFDdkIsVUFBcUIsRUFDckIsa0JBQXFDLEVBQ3JDLGlCQUFtQztRQUpuQyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQWtCO1FBQ25DLGdCQUFXLEdBQVgsV0FBVyxDQUFZO1FBQ3ZCLGVBQVUsR0FBVixVQUFVLENBQVc7UUFDckIsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFtQjtRQUNyQyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQWtCO1FBdkIvQyx3REFBd0Q7UUFFL0MsVUFBSyxHQUFZLEtBQUssQ0FBQztRQUN2QixTQUFJLEdBQW1CLE1BQU0sQ0FBQztRQUM5QixTQUFJLEdBQVcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2pELFdBQU0sR0FBWSxLQUFLLENBQUM7UUFDeEIsYUFBUSxHQUF1QixNQUFNLENBQUM7UUFDdEMsdUJBQWtCLEdBQVksS0FBSyxDQUFDO1FBQzFC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QUFDO1lBQ3hCLENBQUM7UUFDTCxDQUFDO1FBRUQseUJBQXlCO1FBQ3pCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2xDLENBQUM7OEdBM1RRLG1CQUFtQjtrR0FBbkIsbUJBQW1CLDBpQkNoQmhDLGdGQUVNOzsyRkRjTyxtQkFBbUI7a0JBVC9CLFNBQVM7K0JBQ0ksYUFBYSxpQkFHUixpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNLFlBQ3JDLFlBQVksY0FDVixJQUFJO3FNQVNQLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFDYSxZQUFZO3NCQUE5QixNQUFNO2dCQUNZLFdBQVc7c0JBQTdCLE1BQU07Z0JBQ1ksYUFBYTtzQkFBL0IsTUFBTTtnQkFDWSxlQUFlO3NCQUFqQyxNQUFNO2dCQWdCbUIsU0FBUztzQkFBbEMsV0FBVzt1QkFBQyxPQUFPO2dCQVlNLFNBQVM7c0JBQWxDLFdBQVc7dUJBQUMsT0FBTztnQkFPcEIsWUFBWTtzQkFEWCxZQUFZO3VCQUFDLFlBQVk7Z0JBVTFCLFlBQVk7c0JBRFgsWUFBWTt1QkFBQyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYW5pbWF0ZSwgQW5pbWF0aW9uQnVpbGRlciwgQW5pbWF0aW9uUGxheWVyLCBzdHlsZSB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xyXG5pbXBvcnQgeyBCb29sZWFuSW5wdXQsIGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XHJcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSG9zdEJpbmRpbmcsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCwgUmVuZGVyZXIyLCBTaW1wbGVDaGFuZ2VzLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDbWF0VXRpbHNTZXJ2aWNlIH0gZnJvbSAnY21hdC9zZXJ2aWNlcy91dGlscyc7XHJcbmltcG9ydCB7IENtYXREcmF3ZXJTZXJ2aWNlIH0gZnJvbSAnLi9kcmF3ZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IENtYXREcmF3ZXJNb2RlLCBDbWF0RHJhd2VyUG9zaXRpb24gfSBmcm9tICcuL2RyYXdlci50eXBlcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnY21hdC1kcmF3ZXInLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2RyYXdlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9kcmF3ZXIuY29tcG9uZW50LnNjc3MnXSxcclxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICAgIGV4cG9ydEFzOiAnY21hdERyYXdlcicsXHJcbiAgICBzdGFuZGFsb25lOiB0cnVlXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDbWF0RHJhd2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb24gKi9cclxuICAgIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9maXhlZDogQm9vbGVhbklucHV0O1xyXG4gICAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX29wZW5lZDogQm9vbGVhbklucHV0O1xyXG4gICAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX3RyYW5zcGFyZW50T3ZlcmxheTogQm9vbGVhbklucHV0O1xyXG4gICAgLyogZXNsaW50LWVuYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb24gKi9cclxuXHJcbiAgICBASW5wdXQoKSBmaXhlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgQElucHV0KCkgbW9kZTogQ21hdERyYXdlck1vZGUgPSAnc2lkZSc7XHJcbiAgICBASW5wdXQoKSBuYW1lOiBzdHJpbmcgPSB0aGlzLl9jbWF0VXRpbHNTZXJ2aWNlLnJhbmRvbUlkKCk7XHJcbiAgICBASW5wdXQoKSBvcGVuZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIEBJbnB1dCgpIHBvc2l0aW9uOiBDbWF0RHJhd2VyUG9zaXRpb24gPSAnbGVmdCc7XHJcbiAgICBASW5wdXQoKSB0cmFuc3BhcmVudE92ZXJsYXk6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIEBPdXRwdXQoKSByZWFkb25seSBmaXhlZENoYW5nZWQ6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcclxuICAgIEBPdXRwdXQoKSByZWFkb25seSBtb2RlQ2hhbmdlZDogRXZlbnRFbWl0dGVyPENtYXREcmF3ZXJNb2RlPiA9IG5ldyBFdmVudEVtaXR0ZXI8Q21hdERyYXdlck1vZGU+KCk7XHJcbiAgICBAT3V0cHV0KCkgcmVhZG9ubHkgb3BlbmVkQ2hhbmdlZDogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xyXG4gICAgQE91dHB1dCgpIHJlYWRvbmx5IHBvc2l0aW9uQ2hhbmdlZDogRXZlbnRFbWl0dGVyPENtYXREcmF3ZXJQb3NpdGlvbj4gPSBuZXcgRXZlbnRFbWl0dGVyPENtYXREcmF3ZXJQb3NpdGlvbj4oKTtcclxuXHJcbiAgICBwcml2YXRlIF9hbmltYXRpb25zRW5hYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcHJpdmF0ZSBfaG92ZXJlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcHJpdmF0ZSBfb3ZlcmxheTogSFRNTEVsZW1lbnQgfCBudWxsO1xyXG4gICAgcHJpdmF0ZSBfcGxheWVyOiBBbmltYXRpb25QbGF5ZXI7XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJpdmF0ZSBfYW5pbWF0aW9uQnVpbGRlcjogQW5pbWF0aW9uQnVpbGRlcixcclxuICAgICAgICBwcml2YXRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmLFxyXG4gICAgICAgIHByaXZhdGUgX3JlbmRlcmVyMjogUmVuZGVyZXIyLFxyXG4gICAgICAgIHByaXZhdGUgX2NtYXREcmF3ZXJTZXJ2aWNlOiBDbWF0RHJhd2VyU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIF9jbWF0VXRpbHNTZXJ2aWNlOiBDbWF0VXRpbHNTZXJ2aWNlXHJcbiAgICApIHtcclxuICAgIH1cclxuXHJcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzJykgZ2V0IGNsYXNzTGlzdCgpOiBhbnkge1xyXG4gICAgICAgIC8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvbiAqL1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICdjbWF0LWRyYXdlci1hbmltYXRpb25zLWVuYWJsZWQnOiB0aGlzLl9hbmltYXRpb25zRW5hYmxlZCxcclxuICAgICAgICAgICAgJ2NtYXQtZHJhd2VyLWZpeGVkJzogdGhpcy5maXhlZCxcclxuICAgICAgICAgICAgJ2NtYXQtZHJhd2VyLWhvdmVyJzogdGhpcy5faG92ZXJlZCxcclxuICAgICAgICAgICAgW2BjbWF0LWRyYXdlci1tb2RlLSR7dGhpcy5tb2RlfWBdOiB0cnVlLFxyXG4gICAgICAgICAgICAnY21hdC1kcmF3ZXItb3BlbmVkJzogdGhpcy5vcGVuZWQsXHJcbiAgICAgICAgICAgIFtgY21hdC1kcmF3ZXItcG9zaXRpb24tJHt0aGlzLnBvc2l0aW9ufWBdOiB0cnVlXHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICBASG9zdEJpbmRpbmcoJ3N0eWxlJykgZ2V0IHN0eWxlTGlzdCgpOiBhbnkge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICd2aXNpYmlsaXR5JzogdGhpcy5vcGVuZWQgPyAndmlzaWJsZScgOiAnaGlkZGVuJ1xyXG4gICAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgQEhvc3RMaXN0ZW5lcignbW91c2VlbnRlcicpXHJcbiAgICBvbk1vdXNlZW50ZXIoKTogdm9pZCB7XHJcbiAgICAgICAgLy8gRW5hYmxlIHRoZSBhbmltYXRpb25zXHJcbiAgICAgICAgdGhpcy5fZW5hYmxlQW5pbWF0aW9ucygpO1xyXG5cclxuICAgICAgICAvLyBTZXQgdGhlIGhvdmVyZWRcclxuICAgICAgICB0aGlzLl9ob3ZlcmVkID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBASG9zdExpc3RlbmVyKCdtb3VzZWxlYXZlJylcclxuICAgIG9uTW91c2VsZWF2ZSgpOiB2b2lkIHtcclxuICAgICAgICAvLyBFbmFibGUgdGhlIGFuaW1hdGlvbnNcclxuICAgICAgICB0aGlzLl9lbmFibGVBbmltYXRpb25zKCk7XHJcblxyXG4gICAgICAgIC8vIFNldCB0aGUgaG92ZXJlZFxyXG4gICAgICAgIHRoaXMuX2hvdmVyZWQgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICAgICAgLy8gRml4ZWRcclxuICAgICAgICBpZiAoJ2ZpeGVkJyBpbiBjaGFuZ2VzKSB7XHJcbiAgICAgICAgICAgIC8vIENvZXJjZSB0aGUgdmFsdWUgdG8gYSBib29sZWFuXHJcbiAgICAgICAgICAgIHRoaXMuZml4ZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkoY2hhbmdlc1snZml4ZWQnXS5jdXJyZW50VmFsdWUpO1xyXG5cclxuICAgICAgICAgICAgLy8gRXhlY3V0ZSB0aGUgb2JzZXJ2YWJsZVxyXG4gICAgICAgICAgICB0aGlzLmZpeGVkQ2hhbmdlZC5uZXh0KHRoaXMuZml4ZWQpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gTW9kZVxyXG4gICAgICAgIGlmICgnbW9kZScgaW4gY2hhbmdlcykge1xyXG4gICAgICAgICAgICAvLyBHZXQgdGhlIHByZXZpb3VzIGFuZCBjdXJyZW50IHZhbHVlc1xyXG4gICAgICAgICAgICBjb25zdCBwcmV2aW91c01vZGUgPSBjaGFuZ2VzWydtb2RlJ10ucHJldmlvdXNWYWx1ZTtcclxuICAgICAgICAgICAgY29uc3QgY3VycmVudE1vZGUgPSBjaGFuZ2VzWydtb2RlJ10uY3VycmVudFZhbHVlO1xyXG5cclxuICAgICAgICAgICAgLy8gRGlzYWJsZSB0aGUgYW5pbWF0aW9uc1xyXG4gICAgICAgICAgICB0aGlzLl9kaXNhYmxlQW5pbWF0aW9ucygpO1xyXG5cclxuICAgICAgICAgICAgLy8gSWYgdGhlIG1vZGUgY2hhbmdlczogJ292ZXIgLT4gc2lkZSdcclxuICAgICAgICAgICAgaWYgKHByZXZpb3VzTW9kZSA9PT0gJ292ZXInICYmIGN1cnJlbnRNb2RlID09PSAnc2lkZScpIHtcclxuICAgICAgICAgICAgICAgIC8vIEhpZGUgdGhlIG92ZXJsYXlcclxuICAgICAgICAgICAgICAgIHRoaXMuX2hpZGVPdmVybGF5KCk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8vIElmIHRoZSBtb2RlIGNoYW5nZXM6ICdzaWRlIC0+IG92ZXInXHJcbiAgICAgICAgICAgIGlmIChwcmV2aW91c01vZGUgPT09ICdzaWRlJyAmJiBjdXJyZW50TW9kZSA9PT0gJ292ZXInKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBJZiB0aGUgZHJhd2VyIGlzIG9wZW5lZFxyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMub3BlbmVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gU2hvdyB0aGUgb3ZlcmxheVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3Nob3dPdmVybGF5KCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8vIEV4ZWN1dGUgdGhlIG9ic2VydmFibGVcclxuICAgICAgICAgICAgdGhpcy5tb2RlQ2hhbmdlZC5uZXh0KGN1cnJlbnRNb2RlKTtcclxuXHJcbiAgICAgICAgICAgIC8vIEVuYWJsZSB0aGUgYW5pbWF0aW9ucyBhZnRlciBhIGRlbGF5XHJcbiAgICAgICAgICAgIC8vIFRoZSBkZWxheSBtdXN0IGJlIGJpZ2dlciB0aGFuIHRoZSBjdXJyZW50IHRyYW5zaXRpb24tZHVyYXRpb25cclxuICAgICAgICAgICAgLy8gdG8gbWFrZSBzdXJlIG5vdGhpbmcgd2lsbCBiZSBhbmltYXRlZCB3aGlsZSB0aGUgbW9kZSBpcyBjaGFuZ2luZ1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2VuYWJsZUFuaW1hdGlvbnMoKTtcclxuICAgICAgICAgICAgfSwgNTAwKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIE9wZW5lZFxyXG4gICAgICAgIGlmICgnb3BlbmVkJyBpbiBjaGFuZ2VzKSB7XHJcbiAgICAgICAgICAgIC8vIENvZXJjZSB0aGUgdmFsdWUgdG8gYSBib29sZWFuXHJcbiAgICAgICAgICAgIGNvbnN0IG9wZW4gPSBjb2VyY2VCb29sZWFuUHJvcGVydHkoY2hhbmdlc1snb3BlbmVkJ10uY3VycmVudFZhbHVlKTtcclxuXHJcbiAgICAgICAgICAgIC8vIE9wZW4vY2xvc2UgdGhlIGRyYXdlclxyXG4gICAgICAgICAgICB0aGlzLl90b2dnbGVPcGVuZWQob3Blbik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBQb3NpdGlvblxyXG4gICAgICAgIGlmICgncG9zaXRpb24nIGluIGNoYW5nZXMpIHtcclxuICAgICAgICAgICAgLy8gRXhlY3V0ZSB0aGUgb2JzZXJ2YWJsZVxyXG4gICAgICAgICAgICB0aGlzLnBvc2l0aW9uQ2hhbmdlZC5uZXh0KHRoaXMucG9zaXRpb24pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gVHJhbnNwYXJlbnQgb3ZlcmxheVxyXG4gICAgICAgIGlmICgndHJhbnNwYXJlbnRPdmVybGF5JyBpbiBjaGFuZ2VzKSB7XHJcbiAgICAgICAgICAgIC8vIENvZXJjZSB0aGUgdmFsdWUgdG8gYSBib29sZWFuXHJcbiAgICAgICAgICAgIHRoaXMudHJhbnNwYXJlbnRPdmVybGF5ID0gY29lcmNlQm9vbGVhblByb3BlcnR5KGNoYW5nZXNbJ3RyYW5zcGFyZW50T3ZlcmxheSddLmN1cnJlbnRWYWx1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgICAgIC8vIFJlZ2lzdGVyIHRoZSBkcmF3ZXJcclxuICAgICAgICB0aGlzLl9jbWF0RHJhd2VyU2VydmljZS5yZWdpc3RlckNvbXBvbmVudCh0aGlzLm5hbWUsIHRoaXMpO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgICAgIC8vIERlcmVnaXN0ZXIgdGhlIGRyYXdlciBmcm9tIHRoZSByZWdpc3RyeVxyXG4gICAgICAgIHRoaXMuX2NtYXREcmF3ZXJTZXJ2aWNlLmRlcmVnaXN0ZXJDb21wb25lbnQodGhpcy5uYW1lKTtcclxuICAgIH1cclxuXHJcbiAgICBvcGVuKCk6IHZvaWQge1xyXG4gICAgICAgIC8vIFJldHVybiBpZiB0aGUgZHJhd2VyIGhhcyBhbHJlYWR5IG9wZW5lZFxyXG4gICAgICAgIGlmICh0aGlzLm9wZW5lZCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBPcGVuIHRoZSBkcmF3ZXJcclxuICAgICAgICB0aGlzLl90b2dnbGVPcGVuZWQodHJ1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgY2xvc2UoKTogdm9pZCB7XHJcbiAgICAgICAgLy8gUmV0dXJuIGlmIHRoZSBkcmF3ZXIgaGFzIGFscmVhZHkgY2xvc2VkXHJcbiAgICAgICAgaWYgKCF0aGlzLm9wZW5lZCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBDbG9zZSB0aGUgZHJhd2VyXHJcbiAgICAgICAgdGhpcy5fdG9nZ2xlT3BlbmVkKGZhbHNlKTtcclxuICAgIH1cclxuXHJcbiAgICB0b2dnbGUoKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMub3BlbmVkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY2xvc2UoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMub3BlbigpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEVuYWJsZSB0aGUgYW5pbWF0aW9uc1xyXG4gICAgICpcclxuICAgICAqIEBwcml2YXRlXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX2VuYWJsZUFuaW1hdGlvbnMoKTogdm9pZCB7XHJcbiAgICAgICAgLy8gUmV0dXJuIGlmIHRoZSBhbmltYXRpb25zIGFyZSBhbHJlYWR5IGVuYWJsZWRcclxuICAgICAgICBpZiAodGhpcy5fYW5pbWF0aW9uc0VuYWJsZWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gRW5hYmxlIHRoZSBhbmltYXRpb25zXHJcbiAgICAgICAgdGhpcy5fYW5pbWF0aW9uc0VuYWJsZWQgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRGlzYWJsZSB0aGUgYW5pbWF0aW9uc1xyXG4gICAgICpcclxuICAgICAqIEBwcml2YXRlXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX2Rpc2FibGVBbmltYXRpb25zKCk6IHZvaWQge1xyXG4gICAgICAgIC8vIFJldHVybiBpZiB0aGUgYW5pbWF0aW9ucyBhcmUgYWxyZWFkeSBkaXNhYmxlZFxyXG4gICAgICAgIGlmICghdGhpcy5fYW5pbWF0aW9uc0VuYWJsZWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gRGlzYWJsZSB0aGUgYW5pbWF0aW9uc1xyXG4gICAgICAgIHRoaXMuX2FuaW1hdGlvbnNFbmFibGVkID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTaG93IHRoZSBiYWNrZHJvcFxyXG4gICAgICpcclxuICAgICAqIEBwcml2YXRlXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX3Nob3dPdmVybGF5KCk6IHZvaWQge1xyXG4gICAgICAgIC8vIENyZWF0ZSB0aGUgYmFja2Ryb3AgZWxlbWVudFxyXG4gICAgICAgIHRoaXMuX292ZXJsYXkgPSB0aGlzLl9yZW5kZXJlcjIuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcblxyXG4gICAgICAgIC8vIFJldHVybiBpZiBvdmVybGF5IGNvdWxkbid0IGJlIGNyZWF0ZSBmb3Igc29tZSByZWFzb25cclxuICAgICAgICBpZiAoIXRoaXMuX292ZXJsYXkpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gQWRkIGEgY2xhc3MgdG8gdGhlIGJhY2tkcm9wIGVsZW1lbnRcclxuICAgICAgICB0aGlzLl9vdmVybGF5LmNsYXNzTGlzdC5hZGQoJ2NtYXQtZHJhd2VyLW92ZXJsYXknKTtcclxuXHJcbiAgICAgICAgLy8gQWRkIGEgY2xhc3MgZGVwZW5kaW5nIG9uIHRoZSBmaXhlZCBvcHRpb25cclxuICAgICAgICBpZiAodGhpcy5maXhlZCkge1xyXG4gICAgICAgICAgICB0aGlzLl9vdmVybGF5LmNsYXNzTGlzdC5hZGQoJ2NtYXQtZHJhd2VyLW92ZXJsYXktZml4ZWQnKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIEFkZCBhIGNsYXNzIGRlcGVuZGluZyBvbiB0aGUgdHJhbnNwYXJlbnRPdmVybGF5IG9wdGlvblxyXG4gICAgICAgIGlmICh0aGlzLnRyYW5zcGFyZW50T3ZlcmxheSkge1xyXG4gICAgICAgICAgICB0aGlzLl9vdmVybGF5LmNsYXNzTGlzdC5hZGQoJ2NtYXQtZHJhd2VyLW92ZXJsYXktdHJhbnNwYXJlbnQnKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIEFwcGVuZCB0aGUgYmFja2Ryb3AgdG8gdGhlIHBhcmVudCBvZiB0aGUgZHJhd2VyXHJcbiAgICAgICAgdGhpcy5fcmVuZGVyZXIyLmFwcGVuZENoaWxkKHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5wYXJlbnRFbGVtZW50LCB0aGlzLl9vdmVybGF5KTtcclxuXHJcbiAgICAgICAgLy8gQ3JlYXRlIHRoZSBlbnRlciBhbmltYXRpb24gYW5kIGF0dGFjaCBpdCB0byB0aGUgcGxheWVyXHJcbiAgICAgICAgdGhpcy5fcGxheWVyID0gdGhpcy5fYW5pbWF0aW9uQnVpbGRlci5idWlsZChbXHJcbiAgICAgICAgICAgIGFuaW1hdGUoJzMwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpJywgc3R5bGUoeyBvcGFjaXR5OiAxIH0pKVxyXG4gICAgICAgIF0pLmNyZWF0ZSh0aGlzLl9vdmVybGF5KTtcclxuXHJcbiAgICAgICAgLy8gT25jZSB0aGUgYW5pbWF0aW9uIGlzIGRvbmUuLi5cclxuICAgICAgICB0aGlzLl9wbGF5ZXIub25Eb25lKCgpID0+IHtcclxuXHJcbiAgICAgICAgICAgIC8vIERlc3Ryb3kgdGhlIHBsYXllclxyXG4gICAgICAgICAgICB0aGlzLl9wbGF5ZXIuZGVzdHJveSgpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICAvLyBQbGF5IHRoZSBhbmltYXRpb25cclxuICAgICAgICB0aGlzLl9wbGF5ZXIucGxheSgpO1xyXG5cclxuICAgICAgICAvLyBBZGQgYW4gZXZlbnQgbGlzdGVuZXIgdG8gdGhlIG92ZXJsYXlcclxuICAgICAgICB0aGlzLl9vdmVybGF5LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmNsb3NlKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBIaWRlIHRoZSBiYWNrZHJvcFxyXG4gICAgICpcclxuICAgICAqIEBwcml2YXRlXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX2hpZGVPdmVybGF5KCk6IHZvaWQge1xyXG4gICAgICAgIGlmICghdGhpcy5fb3ZlcmxheSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBDcmVhdGUgdGhlIGxlYXZlIGFuaW1hdGlvbiBhbmQgYXR0YWNoIGl0IHRvIHRoZSBwbGF5ZXJcclxuICAgICAgICB0aGlzLl9wbGF5ZXIgPSB0aGlzLl9hbmltYXRpb25CdWlsZGVyLmJ1aWxkKFtcclxuICAgICAgICAgICAgYW5pbWF0ZSgnMzAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSknLCBzdHlsZSh7IG9wYWNpdHk6IDAgfSkpXHJcbiAgICAgICAgXSkuY3JlYXRlKHRoaXMuX292ZXJsYXkpO1xyXG5cclxuICAgICAgICAvLyBQbGF5IHRoZSBhbmltYXRpb25cclxuICAgICAgICB0aGlzLl9wbGF5ZXIucGxheSgpO1xyXG5cclxuICAgICAgICAvLyBPbmNlIHRoZSBhbmltYXRpb24gaXMgZG9uZS4uLlxyXG4gICAgICAgIHRoaXMuX3BsYXllci5vbkRvbmUoKCkgPT4ge1xyXG5cclxuICAgICAgICAgICAgLy8gRGVzdHJveSB0aGUgcGxheWVyXHJcbiAgICAgICAgICAgIHRoaXMuX3BsYXllci5kZXN0cm95KCk7XHJcblxyXG4gICAgICAgICAgICAvLyBJZiB0aGUgYmFja2Ryb3Agc3RpbGwgZXhpc3RzLi4uXHJcbiAgICAgICAgICAgIGlmICh0aGlzLl9vdmVybGF5KSB7XHJcbiAgICAgICAgICAgICAgICAvLyBSZW1vdmUgdGhlIGJhY2tkcm9wXHJcbiAgICAgICAgICAgICAgICB0aGlzLl9vdmVybGF5LnBhcmVudE5vZGU/LnJlbW92ZUNoaWxkKHRoaXMuX292ZXJsYXkpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fb3ZlcmxheSA9IG51bGw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIE9wZW4vY2xvc2UgdGhlIGRyYXdlclxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBvcGVuXHJcbiAgICAgKiBAcHJpdmF0ZVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF90b2dnbGVPcGVuZWQob3BlbjogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgICAgIC8vIFNldCB0aGUgb3BlbmVkXHJcbiAgICAgICAgdGhpcy5vcGVuZWQgPSBvcGVuO1xyXG5cclxuICAgICAgICAvLyBFbmFibGUgdGhlIGFuaW1hdGlvbnNcclxuICAgICAgICB0aGlzLl9lbmFibGVBbmltYXRpb25zKCk7XHJcblxyXG4gICAgICAgIC8vIElmIHRoZSBtb2RlIGlzICdvdmVyJ1xyXG4gICAgICAgIGlmICh0aGlzLm1vZGUgPT09ICdvdmVyJykge1xyXG4gICAgICAgICAgICAvLyBJZiB0aGUgZHJhd2VyIG9wZW5zLCBzaG93IHRoZSBvdmVybGF5XHJcbiAgICAgICAgICAgIGlmIChvcGVuKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9zaG93T3ZlcmxheSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIE90aGVyd2lzZSwgY2xvc2UgdGhlIG92ZXJsYXlcclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9oaWRlT3ZlcmxheSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBFeGVjdXRlIHRoZSBvYnNlcnZhYmxlXHJcbiAgICAgICAgdGhpcy5vcGVuZWRDaGFuZ2VkLm5leHQob3Blbik7XHJcbiAgICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImNtYXQtZHJhd2VyLWNvbnRlbnRcIj5cclxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cclxuPC9kaXY+Il19
|
|
@@ -29,10 +29,10 @@ export class CmatDrawerService {
|
|
|
29
29
|
getComponent(name) {
|
|
30
30
|
return this._componentRegistry.get(name);
|
|
31
31
|
}
|
|
32
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
33
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
32
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: CmatDrawerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
33
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: CmatDrawerService, providedIn: 'root' }); }
|
|
34
34
|
}
|
|
35
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
35
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: CmatDrawerService, decorators: [{
|
|
36
36
|
type: Injectable,
|
|
37
37
|
args: [{
|
|
38
38
|
providedIn: 'root'
|
|
@@ -27,10 +27,10 @@ export class CmatFullscreenComponent {
|
|
|
27
27
|
});
|
|
28
28
|
}
|
|
29
29
|
}
|
|
30
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
31
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
30
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: CmatFullscreenComponent, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
31
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.0", type: CmatFullscreenComponent, isStandalone: true, selector: "cmat-fullscreen", inputs: { iconTpl: "iconTpl", tooltip: "tooltip" }, exportAs: ["cmatFullscreen"], ngImport: i0, template: "<!-- Button -->\r\n<button type=\"button\" mat-icon-button [matTooltip]=\"tooltip || '\u5207\u6362\u5168\u5C4F'\" (click)=\"toggleFullscreen()\">\r\n <ng-container [ngTemplateOutlet]=\"iconTpl || defaultIconTpl\"></ng-container>\r\n</button>\r\n\r\n<!-- Default icon -->\r\n<ng-template #defaultIconTpl>\r\n <mat-icon [svgIcon]=\"'heroicons_outline:arrows-pointing-out'\"></mat-icon>\r\n</ng-template>", dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i2.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
32
32
|
}
|
|
33
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
33
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: CmatFullscreenComponent, decorators: [{
|
|
34
34
|
type: Component,
|
|
35
35
|
args: [{ selector: 'cmat-fullscreen', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, exportAs: 'cmatFullscreen', standalone: true, imports: [MatButtonModule, MatTooltipModule, NgTemplateOutlet, MatIconModule], template: "<!-- Button -->\r\n<button type=\"button\" mat-icon-button [matTooltip]=\"tooltip || '\u5207\u6362\u5168\u5C4F'\" (click)=\"toggleFullscreen()\">\r\n <ng-container [ngTemplateOutlet]=\"iconTpl || defaultIconTpl\"></ng-container>\r\n</button>\r\n\r\n<!-- Default icon -->\r\n<ng-template #defaultIconTpl>\r\n <mat-icon [svgIcon]=\"'heroicons_outline:arrows-pointing-out'\"></mat-icon>\r\n</ng-template>" }]
|
|
36
36
|
}], ctorParameters: () => [{ type: Document, decorators: [{
|
|
@@ -41,4 +41,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImpor
|
|
|
41
41
|
}], tooltip: [{
|
|
42
42
|
type: Input
|
|
43
43
|
}] } });
|
|
44
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
44
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVsbHNjcmVlbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbWF0L2NvbXBvbmVudHMvZnVsbHNjcmVlbi9mdWxsc2NyZWVuLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NtYXQvY29tcG9uZW50cy9mdWxsc2NyZWVuL2Z1bGxzY3JlZW4uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzdELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBZSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsSCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7OztBQVc3RCxNQUFNLE9BQU8sdUJBQXVCO0lBSWhDLFlBQXNDLFNBQW1CO1FBQW5CLGNBQVMsR0FBVCxTQUFTLENBQVU7SUFBSSxDQUFDO0lBRTlELGdCQUFnQjtRQUVaLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGlCQUFpQixFQUNyQyxDQUFDO1lBQ0csT0FBTyxDQUFDLEdBQUcsQ0FBQyw4Q0FBOEMsQ0FBQyxDQUFDO1lBQzVELE9BQU87UUFDWCxDQUFDO1FBRUQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQztRQUVwRCxJQUFJLFVBQVUsRUFDZCxDQUFDO1lBQ0csSUFBSSxDQUFDLFNBQVMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUNwQyxDQUFDO2FBRUQsQ0FBQztZQUNHLElBQUksQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDLGlCQUFpQixFQUFFO2lCQUM3QyxLQUFLLENBQUMsR0FBRyxFQUFFO2dCQUVSLE9BQU8sQ0FBQyxLQUFLLENBQUMsa0NBQWtDLENBQUMsQ0FBQztZQUN0RCxDQUFDLENBQUMsQ0FBQztRQUNYLENBQUM7SUFDTCxDQUFDOzhHQTVCUSx1QkFBdUIsa0JBSVosUUFBUTtrR0FKbkIsdUJBQXVCLDZKQ2ZwQyx5WkFRYywyQ0RLQSxlQUFlLDJJQUFFLGdCQUFnQiw2VEFBRSxnQkFBZ0IsbUpBQUUsYUFBYTs7MkZBRW5FLHVCQUF1QjtrQkFUbkMsU0FBUzsrQkFDSSxpQkFBaUIsaUJBRVosaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTSxZQUNyQyxnQkFBZ0IsY0FDZCxJQUFJLFdBQ1AsQ0FBQyxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsYUFBYSxDQUFDOzswQkFNaEUsTUFBTTsyQkFBQyxRQUFRO3lDQUhuQixPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRE9DVU1FTlQsIE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbmplY3QsIElucHV0LCBUZW1wbGF0ZVJlZiwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcclxuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xyXG5pbXBvcnQgeyBNYXRUb29sdGlwTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnY21hdC1mdWxsc2NyZWVuJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9mdWxsc2NyZWVuLmNvbXBvbmVudC5odG1sJyxcclxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICAgIGV4cG9ydEFzOiAnY21hdEZ1bGxzY3JlZW4nLFxyXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICAgIGltcG9ydHM6IFtNYXRCdXR0b25Nb2R1bGUsIE1hdFRvb2x0aXBNb2R1bGUsIE5nVGVtcGxhdGVPdXRsZXQsIE1hdEljb25Nb2R1bGVdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDbWF0RnVsbHNjcmVlbkNvbXBvbmVudCB7XHJcbiAgICBASW5wdXQoKSBpY29uVHBsOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gICAgQElucHV0KCkgdG9vbHRpcDogc3RyaW5nO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgX2RvY3VtZW50OiBEb2N1bWVudCkgeyB9XHJcblxyXG4gICAgdG9nZ2xlRnVsbHNjcmVlbigpOiB2b2lkXHJcbiAgICB7XHJcbiAgICAgICAgaWYgKCF0aGlzLl9kb2N1bWVudC5mdWxsc2NyZWVuRW5hYmxlZClcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdGdWxsc2NyZWVuIGlzIG5vdCBhdmFpbGFibGUgaW4gdGhpcyBicm93c2VyLicpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBmdWxsU2NyZWVuID0gdGhpcy5fZG9jdW1lbnQuZnVsbHNjcmVlbkVsZW1lbnQ7XHJcblxyXG4gICAgICAgIGlmIChmdWxsU2NyZWVuKVxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgdGhpcy5fZG9jdW1lbnQuZXhpdEZ1bGxzY3JlZW4oKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgdGhpcy5fZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnJlcXVlc3RGdWxsc2NyZWVuKClcclxuICAgICAgICAgICAgICAgIC5jYXRjaCgoKSA9PlxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0VudGVyaW5nIGZ1bGxzY3JlZW4gbW9kZSBmYWlsZWQuJyk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuIiwiPCEtLSBCdXR0b24gLS0+XHJcbjxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiBbbWF0VG9vbHRpcF09XCJ0b29sdGlwIHx8ICfliIfmjaLlhajlsY8nXCIgKGNsaWNrKT1cInRvZ2dsZUZ1bGxzY3JlZW4oKVwiPlxyXG4gICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJpY29uVHBsIHx8IGRlZmF1bHRJY29uVHBsXCI+PC9uZy1jb250YWluZXI+XHJcbjwvYnV0dG9uPlxyXG5cclxuPCEtLSBEZWZhdWx0IGljb24gLS0+XHJcbjxuZy10ZW1wbGF0ZSAjZGVmYXVsdEljb25UcGw+XHJcbiAgICA8bWF0LWljb24gW3N2Z0ljb25dPVwiJ2hlcm9pY29uc19vdXRsaW5lOmFycm93cy1wb2ludGluZy1vdXQnXCI+PC9tYXQtaWNvbj5cclxuPC9uZy10ZW1wbGF0ZT4iXX0=
|