qms-angular 1.0.68 → 1.0.72
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/README.md +21 -2
- package/bundles/qms-angular.umd.js +2269 -551
- package/bundles/qms-angular.umd.js.map +1 -1
- package/esm2015/lib/components/badges/qms-badges.component.js +5 -4
- package/esm2015/lib/components/banner/index.js +2 -0
- package/esm2015/lib/components/banner/public_api.js +8 -0
- package/esm2015/lib/components/banner/qms-banner/qms-banner.component.js +2 -2
- package/esm2015/lib/components/button/button.js +6 -6
- package/esm2015/lib/components/comment/comment-log.model.js +2 -0
- package/esm2015/lib/components/comment/comment.js +6 -2
- package/esm2015/lib/components/qms-app-bar/index.js +2 -0
- package/esm2015/lib/components/qms-app-bar/models/qms-app-bar.model.js +10 -0
- package/esm2015/lib/components/qms-app-bar/public_api.js +3 -0
- package/esm2015/lib/components/qms-app-bar/qms-app-bar.component.js +2 -2
- package/esm2015/lib/components/qms-navigation-drawer/index.js +2 -0
- package/esm2015/lib/components/qms-navigation-drawer/models/qms-navigation-drawer.model.js +3 -0
- package/esm2015/lib/components/qms-navigation-drawer/public_api.js +3 -0
- package/esm2015/lib/components/qms-navigation-drawer/qms-navigation-drawer.component.js +350 -0
- package/esm2015/lib/components/qms-navigation-drawer/qms-navigation-drawer.module.js +33 -0
- package/esm2015/lib/components/qms-paginator/index.js +2 -0
- package/esm2015/lib/components/qms-paginator/public_api.js +3 -0
- package/esm2015/lib/components/qms-paginator/qms-paginator.component.js +173 -0
- package/esm2015/lib/components/qms-paginator/qms-paginator.module.js +34 -0
- package/esm2015/lib/components/qms-status-dropdown/index.js +4 -0
- package/esm2015/lib/components/qms-status-dropdown/qms-status-dropdown.component.js +33 -0
- package/esm2015/lib/components/qms-status-dropdown/qms-status-dropdown.model.js +10 -0
- package/esm2015/lib/components/qms-status-dropdown/qms-status-dropdown.module.js +28 -0
- package/esm2015/lib/components/qms-stepper/index.js +2 -0
- package/esm2015/lib/components/qms-stepper/models/qms-stepper.model.js +9 -0
- package/esm2015/lib/components/qms-stepper/public_api.js +3 -0
- package/esm2015/lib/components/qms-stepper/qms-stepper.component.js +3 -3
- package/esm2015/lib/components/range-slider/directives/range-slider-lockup.directive.js +20 -0
- package/esm2015/lib/components/range-slider/directives/range-slider.directive.js +34 -0
- package/esm2015/lib/components/range-slider/index.js +2 -0
- package/esm2015/lib/components/range-slider/public-api.js +4 -0
- package/esm2015/lib/components/range-slider/range-slider.module.js +22 -0
- package/esm2015/lib/components/related/popup/related-popup.component.js +2 -2
- package/esm2015/lib/components/select-include-children/model/select-popup-data.model.js +2 -1
- package/esm2015/lib/components/select-include-children/select-include-children.component.js +45 -45
- package/esm2015/lib/components/select-one/select-one.component.js +50 -3
- package/esm2015/lib/components/tab/directive/tab-group-advanced.directive.js +30 -0
- package/esm2015/lib/components/tab/directive/tab-group.directive.js +20 -0
- package/esm2015/lib/components/tab/directive/tab-label.directive.js +20 -0
- package/esm2015/lib/components/tab/index.js +2 -0
- package/esm2015/lib/components/tab/public-api.js +5 -0
- package/esm2015/lib/components/tab/tab.module.js +25 -0
- package/esm2015/lib/components/tree/tree.component.js +13 -10
- package/esm2015/lib/components/treeNew/tree.component.js +6 -3
- package/esm2015/lib/directives/table/table.directive.js +201 -0
- package/esm2015/lib/model/en.js +21 -3
- package/esm2015/lib/model/no.js +20 -2
- package/esm2015/lib/qms-angular.module.js +17 -20
- package/esm2015/lib/qms-ckeditor-components/common/bpmn/inspector.function.js +68 -16
- package/esm2015/lib/qms-ckeditor-components/common/constants/ckeditorEvent.constant.js +5 -1
- package/esm2015/lib/qms-ckeditor-components/common/constants/ckeditorFlowchart.const.js +10 -1
- package/esm2015/lib/qms-ckeditor-components/common/constants/ckeditorLink.constant.js +7 -0
- package/esm2015/lib/qms-ckeditor-components/common/enums/document-type.enum.js +2 -1
- package/esm2015/lib/qms-ckeditor-components/common/enums/shape-flow-chart-connection-type.js +8 -0
- package/esm2015/lib/qms-ckeditor-components/common/functions/common.function.js +2 -2
- package/esm2015/lib/qms-ckeditor-components/common/models/qms-ckeditor-data.model.js +1 -1
- package/esm2015/lib/qms-ckeditor-components/common/models/qms-ckeditor-flowchart-template.model.js +9 -0
- package/esm2015/lib/qms-ckeditor-components/common/models/qms-ckeditor-flowchart.model.js +9 -0
- package/esm2015/lib/qms-ckeditor-components/common/models/qms-ckeditor-save-as-template.model.js +3 -0
- package/esm2015/lib/qms-ckeditor-components/common/module/confirm/qms-ckeditor-confirm.component.js +1 -1
- package/esm2015/lib/qms-ckeditor-components/components/qms-ckeditor-bpmn/qms-ckeditor-bpmn.component.js +545 -34
- package/esm2015/lib/qms-ckeditor-components/components/qms-ckeditor-bpmn/save-template/save-template.component.js +46 -18
- package/esm2015/lib/qms-ckeditor-components/components/qms-ckeditor-fullscreen/qms-ckeditor-fullscreen.component.js +1 -46
- package/esm2015/lib/qms-ckeditor-components/components/qms-ckeditor-imagemap/qms-ckeditor-imagemap.component.js +1 -1
- package/esm2015/lib/qms-ckeditor-components/components/qms-ckeditor-link/attachments/link-attachment.component.js +1 -1
- package/esm2015/lib/qms-ckeditor-components/components/qms-ckeditor-link/qms-ckeditor-link.component.js +1 -1
- package/esm2015/lib/qms-ckeditor-components/components/qms-ckeditor-load-template/qms-ckeditor-load-template.component.js +1 -1
- package/esm2015/lib/qms-ckeditor-components/components/qms-ckeditor-relation/qmsckeditor-related.component.js +1 -1
- package/esm2015/lib/qms-ckeditor-components/components/qms-ckeditor-template/qms-ckeditor-template.component.js +1 -1
- package/esm2015/lib/qms-ckeditor-components/components/qms-ckeditor-tooltip/qms-ckeditor-tooltip.component.js +1 -1
- package/esm2015/lib/qms-ckeditor-components/models/qms-ckeditor-bpmn-data.model.js +8 -0
- package/esm2015/lib/qms-ckeditor-components/qms-ckeditor.component.js +26 -20
- package/esm2015/lib/qms-ckeditor-components/qms-ckeditor.module.js +4 -2
- package/esm2015/lib/qms-ckeditor-components/services/qms-ckeditor-bpmn.service.js +58 -20
- package/esm2015/lib/qms-ckeditor-components/services/qms-ckeditor-flowchart.service.js +26 -0
- package/esm2015/public-api.js +17 -20
- package/esm2015/qms-angular.js +2 -1
- package/fesm2015/qms-angular.js +1987 -415
- package/fesm2015/qms-angular.js.map +1 -1
- package/lib/components/badges/qms-badges.component.d.ts +1 -1
- package/lib/components/banner/index.d.ts +1 -0
- package/lib/components/banner/public_api.d.ts +7 -0
- package/lib/components/banner/qms-banner/qms-banner.component.d.ts +2 -2
- package/lib/components/button/button.d.ts +1 -1
- package/lib/components/comment/comment-log.model.d.ts +10 -0
- package/lib/components/comment/comment.d.ts +5 -11
- package/lib/components/qms-app-bar/index.d.ts +1 -0
- package/lib/components/qms-app-bar/{qms-app-bar.model.d.ts → models/qms-app-bar.model.d.ts} +0 -0
- package/lib/components/qms-app-bar/public_api.d.ts +2 -0
- package/lib/components/qms-app-bar/qms-app-bar.component.d.ts +1 -1
- package/lib/components/qms-navigation-drawer/index.d.ts +1 -0
- package/lib/components/qms-navigation-drawer/models/qms-navigation-drawer.model.d.ts +19 -0
- package/lib/components/qms-navigation-drawer/public_api.d.ts +2 -0
- package/lib/components/qms-navigation-drawer/qms-navigation-drawer.component.d.ts +106 -0
- package/lib/components/qms-navigation-drawer/qms-navigation-drawer.module.d.ts +2 -0
- package/lib/components/qms-paginator/index.d.ts +1 -0
- package/lib/components/qms-paginator/public_api.d.ts +2 -0
- package/lib/components/qms-paginator/qms-paginator.component.d.ts +51 -0
- package/lib/components/qms-paginator/qms-paginator.module.d.ts +2 -0
- package/lib/components/qms-status-dropdown/index.d.ts +3 -0
- package/lib/components/qms-status-dropdown/qms-status-dropdown.component.d.ts +10 -0
- package/lib/components/qms-status-dropdown/qms-status-dropdown.model.d.ts +10 -0
- package/lib/components/qms-status-dropdown/qms-status-dropdown.module.d.ts +2 -0
- package/lib/components/qms-stepper/index.d.ts +1 -0
- package/lib/components/qms-stepper/{qms-stepper.model.d.ts → models/qms-stepper.model.d.ts} +0 -0
- package/lib/components/qms-stepper/public_api.d.ts +2 -0
- package/lib/components/qms-stepper/qms-stepper.component.d.ts +1 -1
- package/lib/{directives/range-slider → components/range-slider/directives}/range-slider-lockup.directive.d.ts +0 -0
- package/lib/{directives/range-slider → components/range-slider/directives}/range-slider.directive.d.ts +0 -0
- package/lib/components/range-slider/index.d.ts +1 -0
- package/lib/components/range-slider/public-api.d.ts +3 -0
- package/lib/components/range-slider/range-slider.module.d.ts +2 -0
- package/lib/components/select-include-children/model/select-popup-data.model.d.ts +1 -0
- package/lib/components/select-include-children/select-include-children.component.d.ts +3 -2
- package/lib/components/select-one/select-one.component.d.ts +4 -0
- package/lib/{directives/tab → components/tab/directive}/tab-group-advanced.directive.d.ts +0 -0
- package/lib/{directives/tab → components/tab/directive}/tab-group.directive.d.ts +0 -0
- package/lib/{directives/tab → components/tab/directive}/tab-label.directive.d.ts +0 -0
- package/lib/components/tab/index.d.ts +1 -0
- package/lib/components/tab/public-api.d.ts +4 -0
- package/lib/components/tab/tab.module.d.ts +2 -0
- package/lib/directives/table/table.directive.d.ts +50 -0
- package/lib/model/en.d.ts +18 -0
- package/lib/model/no.d.ts +18 -0
- package/lib/qms-ckeditor-components/common/bpmn/inspector.function.d.ts +28 -0
- package/lib/qms-ckeditor-components/common/constants/ckeditorEvent.constant.d.ts +4 -0
- package/lib/qms-ckeditor-components/common/constants/ckeditorFlowchart.const.d.ts +9 -0
- package/lib/qms-ckeditor-components/common/constants/ckeditorLink.constant.d.ts +6 -0
- package/lib/qms-ckeditor-components/common/enums/document-type.enum.d.ts +1 -0
- package/lib/qms-ckeditor-components/common/enums/shape-flow-chart-connection-type.d.ts +6 -0
- package/lib/qms-ckeditor-components/common/models/qms-ckeditor-data.model.d.ts +1 -0
- package/lib/qms-ckeditor-components/common/models/qms-ckeditor-flowchart-template.model.d.ts +7 -0
- package/lib/qms-ckeditor-components/common/models/qms-ckeditor-flowchart.model.d.ts +7 -0
- package/lib/qms-ckeditor-components/common/models/qms-ckeditor-save-as-template.model.d.ts +5 -0
- package/lib/qms-ckeditor-components/components/qms-ckeditor-bpmn/qms-ckeditor-bpmn.component.d.ts +85 -4
- package/lib/qms-ckeditor-components/components/qms-ckeditor-bpmn/save-template/save-template.component.d.ts +8 -2
- package/lib/qms-ckeditor-components/models/qms-ckeditor-bpmn-data.model.d.ts +7 -0
- package/lib/qms-ckeditor-components/qms-ckeditor.component.d.ts +2 -4
- package/lib/qms-ckeditor-components/services/qms-ckeditor-bpmn.service.d.ts +1 -0
- package/lib/qms-ckeditor-components/services/qms-ckeditor-flowchart.service.d.ts +10 -0
- package/lib.theme.scss +2 -0
- package/package.json +4 -2
- package/public-api.d.ts +13 -19
- package/qms-angular.d.ts +1 -0
- package/qms-angular.metadata.json +1 -1
- package/src/assets/fonts/icomoon.eot +0 -0
- package/src/assets/fonts/icomoon.svg +203 -0
- package/src/assets/fonts/icomoon.ttf +0 -0
- package/src/assets/fonts/icomoon.woff +0 -0
- package/src/assets/jointjs/js/rappid.js +55919 -55836
- package/src/assets/jointjs/scss/bpmn.scss +2 -1
- package/src/assets/qms-ckeditor-plugin/build/ckeditor.js +2 -2
- package/src/assets/qms-ckeditor-plugin/build/ckeditor.js.map +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/ar.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/az.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/bg.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/cs.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/da.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/de-ch.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/de.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/en-au.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/en-gb.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/es.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/et.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/fa.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/fi.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/fr.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/gl.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/hi.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/hr.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/hu.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/id.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/it.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/ja.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/ko.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/ku.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/lt.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/lv.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/nb.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/ne.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/nl.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/no.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/pl.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/pt-br.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/ro.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/ru.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/sk.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/sq.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/sr-latn.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/sr.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/sv.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/th.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/tk.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/tr.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/ug.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/uk.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/vi.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/zh-cn.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/zh.js +1 -1
- package/src/assets/qms-ckeditor-plugin/package-lock.json +38 -12178
- package/src/assets/qms-ckeditor-plugin/src/ckeditor.js +6 -0
- package/src/assets/qms-ckeditor-plugin/src/plugins/bpmn/qmsCKEditorBpmnPlugin.js +31 -6
- package/src/assets/qms-ckeditor-plugin/src/plugins/common/qmsCKEditorConstant.js +7 -1
- package/src/assets/qms-ckeditor-plugin/src/plugins/common/qmsCKEditorUtil.js +29 -7
- package/src/assets/qms-ckeditor-plugin/src/plugins/fullscreen/qmsCKEditorFullscreenPlugin.js +23 -12
- package/src/assets/qms-ckeditor-plugin/src/plugins/imagemap/converters.js +93 -92
- package/src/assets/qms-ckeditor-plugin/src/plugins/imagemap/imagemap.js +4 -4
- package/src/assets/qms-ckeditor-plugin/src/plugins/imagemap/imagemapcommand.js +92 -0
- package/src/assets/qms-ckeditor-plugin/src/plugins/imagemap/imagemapdialogcommand.js +59 -0
- package/src/assets/qms-ckeditor-plugin/src/plugins/imagemap/imagemapediting.js +92 -87
- package/src/assets/qms-ckeditor-plugin/src/plugins/imagemap/imagemapui.js +13 -14
- package/src/assets/qms-ckeditor-plugin/src/plugins/imagemap/resizeimagemapcommand.js +25 -24
- package/src/assets/qms-ckeditor-plugin/src/plugins/imagemap/utils.js +40 -49
- package/src/assets/qms-ckeditor-plugin/src/themes/icons/fullscreen_exit.svg +1 -0
- package/src/assets/svg-icons/acutely-toxic.svg +19 -0
- package/src/assets/svg-icons/add-column.svg +4 -0
- package/src/assets/svg-icons/add-tooltip.svg +6 -0
- package/src/assets/svg-icons/admin.svg +3 -0
- package/src/assets/svg-icons/annual-cycle.svg +10 -0
- package/src/assets/svg-icons/assignment-repete.svg +4 -0
- package/src/assets/svg-icons/barrier-add.svg +7 -0
- package/src/assets/svg-icons/barrier-edit.svg +7 -0
- package/src/assets/svg-icons/barrier-view.svg +3 -0
- package/src/assets/svg-icons/button-group.svg +5 -0
- package/src/assets/svg-icons/checklist.svg +8 -0
- package/src/assets/svg-icons/chemical-manager.svg +5 -0
- package/src/assets/svg-icons/chronic-health-hazard.svg +17 -0
- package/src/assets/svg-icons/contingency.svg +3 -0
- package/src/assets/svg-icons/corrosive.svg +23 -0
- package/src/assets/svg-icons/dashboard.svg +3 -0
- package/src/assets/svg-icons/database-sds.svg +4 -0
- package/src/assets/svg-icons/department-document.svg +4 -0
- package/src/assets/svg-icons/department-folder-closed.svg +4 -0
- package/src/assets/svg-icons/department-folder-open.svg +4 -0
- package/src/assets/svg-icons/description-add.svg +6 -0
- package/src/assets/svg-icons/description-edit.svg +6 -0
- package/src/assets/svg-icons/description-view.svg +3 -0
- package/src/assets/svg-icons/deviation.svg +3 -0
- package/src/assets/svg-icons/document-read.svg +5 -0
- package/src/assets/svg-icons/draft.svg +7 -0
- package/src/assets/svg-icons/dropdown-folder.svg +4 -0
- package/src/assets/svg-icons/enterprise-document.svg +4 -0
- package/src/assets/svg-icons/enterprise-folder-closed.svg +4 -0
- package/src/assets/svg-icons/enterprise-folder-open.svg +4 -0
- package/src/assets/svg-icons/expired-off.svg +3 -0
- package/src/assets/svg-icons/expired-on.svg +5 -0
- package/src/assets/svg-icons/explosive.svg +48 -0
- package/src/assets/svg-icons/file-excel.svg +3 -0
- package/src/assets/svg-icons/file-pdf-verified.svg +5 -0
- package/src/assets/svg-icons/file-pdf.svg +3 -0
- package/src/assets/svg-icons/file-word.svg +3 -0
- package/src/assets/svg-icons/filter-alt.svg +3 -0
- package/src/assets/svg-icons/flammable.svg +5 -0
- package/src/assets/svg-icons/flowchart-BPMN.svg +9 -0
- package/src/assets/svg-icons/folder-closed.svg +3 -0
- package/src/assets/svg-icons/folder-open.svg +3 -0
- package/src/assets/svg-icons/gas-under-pressure.svg +4 -0
- package/src/assets/svg-icons/health-hazard.svg +4 -0
- package/src/assets/svg-icons/keyboard_arrow_down.svg +1 -0
- package/src/assets/svg-icons/keyboard_arrow_up.svg +1 -0
- package/src/assets/svg-icons/line-break.svg +7 -0
- package/src/assets/svg-icons/local-document.svg +4 -0
- package/src/assets/svg-icons/local-folder-closed.svg +4 -0
- package/src/assets/svg-icons/local-folder-open.svg +4 -0
- package/src/assets/svg-icons/location.svg +3 -0
- package/src/assets/svg-icons/measure-add.svg +5 -0
- package/src/assets/svg-icons/measure-edit.svg +5 -0
- package/src/assets/svg-icons/measure-view.svg +3 -0
- package/src/assets/svg-icons/messages.svg +3 -0
- package/src/assets/svg-icons/monitoring.svg +5 -0
- package/src/assets/svg-icons/move.svg +3 -0
- package/src/assets/svg-icons/oxidizing.svg +6 -0
- package/src/assets/svg-icons/process-area-closed.svg +4 -0
- package/src/assets/svg-icons/process-area-open.svg +4 -0
- package/src/assets/svg-icons/process-linked.svg +4 -0
- package/src/assets/svg-icons/process.svg +3 -0
- package/src/assets/svg-icons/regional-document.svg +4 -0
- package/src/assets/svg-icons/regional-folder-closed.svg +4 -0
- package/src/assets/svg-icons/regional-folder-open.svg +4 -0
- package/src/assets/svg-icons/risk.svg +3 -0
- package/src/assets/svg-icons/search-in-file.svg +4 -0
- package/src/assets/svg-icons/sort-ascending.svg +3 -0
- package/src/assets/svg-icons/sort-descending.svg +3 -0
- package/src/assets/svg-icons/subscript.svg +4 -0
- package/src/assets/svg-icons/superscript.svg +4 -0
- package/src/assets/svg-icons/syncronice-favorites.svg +5 -0
- package/src/assets/svg-icons/system-settings.svg +3 -0
- package/src/assets/svg-icons/view-three-outlined.svg +5 -0
- package/src/assets/svg-icons/wiris.svg +9 -0
- package/src/assets/svg-icons/workplace-safety.svg +5 -0
- package/src/lib/components/badges/_qms-badges-base.scss +8 -7
- package/src/lib/components/badges/qms-badges.component.scss +1 -1
- package/src/lib/components/button/button-icon.scss +5 -1
- package/src/lib/components/qms-app-bar/qms-app-bar.component.scss +10 -0
- package/src/lib/components/qms-navigation-drawer/qms-navigation-drawer.component.scss +182 -0
- package/src/lib/components/qms-paginator/qms-paginator.component.scss +128 -0
- package/src/lib/components/qms-status-dropdown/qms-status-dropdown.component.scss +152 -0
- package/src/lib/components/tree/tree.component.scss +3 -1
- package/src/lib/qms-ckeditor-components/components/qms-ckeditor-bpmn/qms-ckeditor-bpmn.component.scss +69 -17
- package/src/lib/qms-ckeditor-components/qms-ckeditor.component.scss +24 -0
- package/src/lib/qms-ckeditor-components/styles/_modules.scss +9 -1
- package/src/themes/_qms-icon-font.scss +894 -0
- package/src/themes/core/_colors.scss +1 -0
- package/src/themes/core/_qms-label.scss +32 -0
- package/src/themes/core/_range-slider.scss +60 -35
- package/src/themes/core/_tab.scss +42 -1
- package/src/themes/core/_table.scss +55 -0
- package/esm2015/lib/components/qms-app-bar/qms-app-bar.model.js +0 -10
- package/esm2015/lib/components/qms-stepper/qms-stepper.model.js +0 -9
- package/esm2015/lib/components/test-only/test-only.component.js +0 -17
- package/esm2015/lib/directives/range-slider/range-slider-lockup.directive.js +0 -20
- package/esm2015/lib/directives/range-slider/range-slider.directive.js +0 -36
- package/esm2015/lib/directives/tab/tab-group-advanced.directive.js +0 -30
- package/esm2015/lib/directives/tab/tab-group.directive.js +0 -20
- package/esm2015/lib/directives/tab/tab-label.directive.js +0 -20
- package/lib/components/test-only/test-only.component.d.ts +0 -3
- package/src/assets/jointjs/scss/dist/bpmn.css +0 -854
- package/src/assets/qms-ckeditor-plugin/src/dist/ckeditor.dev.js +0 -173
- package/src/assets/qms-ckeditor-plugin/src/plugins/fullscreen/dist/qmsCKEditorFullscreenPlugin.dev.js +0 -87
- package/src/assets/qms-ckeditor-plugin/src/plugins/imagemap/insertimagemapcommand.js +0 -128
- package/src/lib/components/test-only/test-only.component.scss +0 -10
@@ -8,26 +8,62 @@ import { FlowChartConst } from "../../common/constants/ckeditorFlowchart.const";
|
|
8
8
|
import guidHelper from "../../common/helper/guidHelper";
|
9
9
|
import { QMSCKEditorBpmn } from "../../common/models/qms-ckeditor-bpmn.model";
|
10
10
|
import { QMSCKEditorDialogData } from "../../common/models/qms-ckeditor-dialog.model";
|
11
|
+
import { QMSCKEditorSaveAsTemplate } from "../../common/models/qms-ckeditor-save-as-template.model";
|
11
12
|
import { QMSCKEditorConfirmComponent } from "../../common/module/confirm/qms-ckeditor-confirm.component";
|
12
|
-
import { QMSCKEditorToastService } from "../../common/toast/qms-ckeditor-toast.service";
|
13
13
|
import { QMSCKEditorBaseComponent } from "../../qms-ckeditor-base.component";
|
14
14
|
import { QMSCKEditorBpmnApiService } from "../../services/qms-ckeditor-bpmn-api.service";
|
15
15
|
import { BpmnService } from "../../services/qms-ckeditor-bpmn.service";
|
16
16
|
import { SaveTemplateComponent } from "./save-template/save-template.component";
|
17
|
+
import { TargetTypeName } from '../../common/enums/target-type.enum';
|
18
|
+
import { ShapeFlowChartConnectionType } from '../../common/enums/shape-flow-chart-connection-type';
|
19
|
+
import { QMSCKEditorRelatedComponent } from '../qms-ckeditor-relation/qmsckeditor-related.component';
|
20
|
+
import { LinkAttachmentComponent } from '../qms-ckeditor-link/attachments/link-attachment.component';
|
21
|
+
import QMSCKEditorParamter from '../../common/models/qms-ckeditor-parameter.model';
|
22
|
+
import { QMSCKEditorRelation } from '../../common/models/qms-ckeditor-relation.model';
|
23
|
+
import { QMSCKEditorBpmnData } from '../../models/qms-ckeditor-bpmn-data.model';
|
24
|
+
import { QMSCKEditorLinkService } from '../../services/qms-ckeditor-link.service';
|
25
|
+
import { QMSCKEditorDocumentType } from "../../common/enums/document-type.enum";
|
26
|
+
import { LinkAnchor } from "../../common/enums/link-anchor.enum";
|
27
|
+
import { CKEditorLinkConst } from '../../common/constants/ckeditorLink.constant';
|
28
|
+
class ILink {
|
29
|
+
constructor() {
|
30
|
+
this.target = TargetTypeName.new;
|
31
|
+
this.documentType = QMSCKEditorDocumentType.other;
|
32
|
+
this.url = '';
|
33
|
+
this.title = '';
|
34
|
+
this.icon = '';
|
35
|
+
this.content = '';
|
36
|
+
}
|
37
|
+
}
|
17
38
|
export class QMSCKEditorBpmnComponent extends QMSCKEditorBaseComponent {
|
18
|
-
constructor(dialog, translate, bmpnService, bpmnApiService, dialogRef, data) {
|
39
|
+
constructor(dialog, translate, bmpnService, bpmnApiService, linkService, dialogRef, data) {
|
19
40
|
super();
|
20
41
|
this.dialog = dialog;
|
21
42
|
this.translate = translate;
|
22
43
|
this.bmpnService = bmpnService;
|
23
44
|
this.bpmnApiService = bpmnApiService;
|
45
|
+
this.linkService = linkService;
|
24
46
|
this.dialogRef = dialogRef;
|
25
47
|
this.data = data;
|
26
48
|
this.expandedPanel = true;
|
27
49
|
this.id = '';
|
50
|
+
this.entityId = '';
|
51
|
+
this.editorContent = '';
|
28
52
|
this.bpmn = new QMSCKEditorBpmn();
|
29
53
|
this.bpmnTemlates = [];
|
30
|
-
this.
|
54
|
+
this.targets = [];
|
55
|
+
this.connectionTypes = [];
|
56
|
+
this.selectedTarget = TargetTypeName.new;
|
57
|
+
this.linkUrl = '';
|
58
|
+
this.linkTitle = '';
|
59
|
+
this.anchorByName = '';
|
60
|
+
this.linkIcon = '';
|
61
|
+
this.linkId = '';
|
62
|
+
this.documentType = QMSCKEditorDocumentType.other;
|
63
|
+
this.id = data.id;
|
64
|
+
this.module = data.module;
|
65
|
+
this.entityId = data.entityId;
|
66
|
+
this.editorContent = data.editorContent;
|
31
67
|
}
|
32
68
|
onMessage(event) {
|
33
69
|
if (event.data === FlowChartConst.SAVE_AS_TEMPLATE) {
|
@@ -37,7 +73,7 @@ export class QMSCKEditorBpmnComponent extends QMSCKEditorBaseComponent {
|
|
37
73
|
this.onDeleteTemplate(this.LANG.BPMN.DELETE_TEMPLATE, this.LANG.QMSCKEDITOR_MESSAGE.CONFIRM_DELETE_TEMPLATE);
|
38
74
|
}
|
39
75
|
else if (event.data === FlowChartConst.MUST_SELECT_TEMPLATE) {
|
40
|
-
this.
|
76
|
+
this.showConfirmDialog(this.LANG.BPMN.SELECT_TEMPLATE, this.LANG.BPMN.SELECT_TEMPLATE_INFORMATION, true);
|
41
77
|
}
|
42
78
|
else if (event.data === FlowChartConst.CHANGING_TEMPLATE) {
|
43
79
|
this.onSelectedTemplate();
|
@@ -45,6 +81,9 @@ export class QMSCKEditorBpmnComponent extends QMSCKEditorBaseComponent {
|
|
45
81
|
else if (event.data === FlowChartConst.RESET_TEMPLATE) {
|
46
82
|
this.onResetTemplate();
|
47
83
|
}
|
84
|
+
else if (event.data === FlowChartConst.SELECTED_SHAPE_ID) {
|
85
|
+
this.onSeletedCellView();
|
86
|
+
}
|
48
87
|
}
|
49
88
|
ngOnInit() {
|
50
89
|
return __awaiter(this, void 0, void 0, function* () {
|
@@ -58,8 +97,42 @@ export class QMSCKEditorBpmnComponent extends QMSCKEditorBaseComponent {
|
|
58
97
|
this.jsonContent = yield this.getJsonContent(this.id);
|
59
98
|
}
|
60
99
|
this.bmpnService.buildDiagram(this.bpmnTemlates, null, CKEditorEventConst.QMSCK_BPMN, this.jsonContent, 1, this.LANG);
|
100
|
+
this.initDocumentIcons();
|
101
|
+
this.initTarget();
|
102
|
+
this.initConnectionType();
|
103
|
+
this.initLink();
|
61
104
|
});
|
62
105
|
}
|
106
|
+
initTarget() {
|
107
|
+
if (this.targets) {
|
108
|
+
this.targets.push({ id: TargetTypeName.new, name: this.LANG.QMSCKEDITOR.TARTGET_NEW });
|
109
|
+
this.targets.push({ id: TargetTypeName.same, name: this.LANG.QMSCKEDITOR.TARGET_SAME });
|
110
|
+
}
|
111
|
+
}
|
112
|
+
initConnectionType() {
|
113
|
+
if (this.connectionTypes) {
|
114
|
+
this.connectionTypes.push({ id: ShapeFlowChartConnectionType.DocumentOrProcess, name: this.LANG.QMSCKEDITOR.DOCUMENT_PROCESS });
|
115
|
+
this.connectionTypes.push({ id: ShapeFlowChartConnectionType.Attachment, name: this.LANG.QMSCKEDITOR.ATTACHMENT });
|
116
|
+
}
|
117
|
+
}
|
118
|
+
initDocumentIcons() {
|
119
|
+
this.documentIcons = {};
|
120
|
+
this.documentIcons[QMSCKEditorDocumentType.document] = 'text_snippet';
|
121
|
+
this.documentIcons[QMSCKEditorDocumentType.process] = 'account_tree';
|
122
|
+
this.documentIcons[QMSCKEditorDocumentType.area] = 'folder';
|
123
|
+
this.documentIcons[QMSCKEditorDocumentType.folder] = 'folder';
|
124
|
+
this.documentIcons[QMSCKEditorDocumentType.other] = 'text_snippet';
|
125
|
+
}
|
126
|
+
initLink() {
|
127
|
+
this.link = null;
|
128
|
+
this.linkId = '';
|
129
|
+
this.documentType = QMSCKEditorDocumentType.other;
|
130
|
+
this.linkIcon = this.documentIcons[QMSCKEditorDocumentType.other];
|
131
|
+
this.selectedTarget = TargetTypeName.new;
|
132
|
+
this.anchorByName = '';
|
133
|
+
this.linkTitle = '';
|
134
|
+
this.documentAnchors = [];
|
135
|
+
}
|
63
136
|
expandPanel() {
|
64
137
|
this.expandedPanel = !this.expandedPanel;
|
65
138
|
const panelStencil = document.getElementById('panel-stencil-container');
|
@@ -104,11 +177,10 @@ export class QMSCKEditorBpmnComponent extends QMSCKEditorBaseComponent {
|
|
104
177
|
});
|
105
178
|
});
|
106
179
|
}
|
107
|
-
saveImageContent() {
|
180
|
+
saveImageContent(graphObject) {
|
108
181
|
return __awaiter(this, void 0, void 0, function* () {
|
109
182
|
return new Promise((resolve) => {
|
110
|
-
const
|
111
|
-
const jsonContent = JSON.stringify(graph.toJSON());
|
183
|
+
const jsonContent = JSON.stringify(graphObject);
|
112
184
|
this.bpmn = {
|
113
185
|
id: this.id ? this.id : guidHelper.empty,
|
114
186
|
jsonContent: jsonContent,
|
@@ -138,26 +210,209 @@ export class QMSCKEditorBpmnComponent extends QMSCKEditorBaseComponent {
|
|
138
210
|
}
|
139
211
|
onInsertImage() {
|
140
212
|
return __awaiter(this, void 0, void 0, function* () {
|
141
|
-
const
|
213
|
+
const graph = window[FlowChartConst.GRAPH];
|
142
214
|
const paper = window[`paper`];
|
215
|
+
const clientRect = paper.paperToLocalRect(paper.getContentBBox());
|
216
|
+
const graphObject = graph.toJSON();
|
217
|
+
const id = yield this.saveImageContent(graphObject);
|
143
218
|
const imageContent = 'data:image/png;base64,' + (yield this.getImageContent(paper));
|
144
|
-
const
|
219
|
+
const imagemap = this.toImageMap(id, graphObject.cells, clientRect);
|
220
|
+
const result = { key: `${CKEditorEventConst.QMSCK_BPMN}#${id}`, values: imageContent, imagemap: imagemap };
|
145
221
|
this.dialogRef.close(result);
|
146
222
|
});
|
147
223
|
}
|
148
224
|
onCloseDialog() {
|
149
225
|
this.dialogRef.close();
|
150
226
|
}
|
227
|
+
removeLink() {
|
228
|
+
let title = this.LANG.BPMN.DELETE_ATTACHMENT;
|
229
|
+
let content = this.LANG.BPMN.CONFIRM_DELETE_ATTACHMENT;
|
230
|
+
if (this.selectedConnectionType == ShapeFlowChartConnectionType.DocumentOrProcess) {
|
231
|
+
title = this.LANG.BPMN.DELETE_DOCUMENT_OR_PROCESS;
|
232
|
+
content = this.LANG.QMSCKEDITOR_MESSAGE.CONFIRM_DELETE_DOCUMENT_OR_PROCESS;
|
233
|
+
}
|
234
|
+
this.showConfirmDialog(title, content, false, (value) => {
|
235
|
+
if (value) {
|
236
|
+
if (value == true || (typeof value == 'object' && value.isConfirmed == true)) {
|
237
|
+
this.link = null;
|
238
|
+
}
|
239
|
+
}
|
240
|
+
});
|
241
|
+
}
|
242
|
+
onConnectionTypeChange() {
|
243
|
+
this.selectedConnectionType = this.connectionType;
|
244
|
+
if (this.link) {
|
245
|
+
this.showConfirmDialog(this.LANG.QMSCKEDITOR.INFORMATION, this.LANG.QMSCKEDITOR_MESSAGE.CONFIRM_DELETE_EXISTING_CONNECTION, true, () => {
|
246
|
+
this.connectionType = 0;
|
247
|
+
});
|
248
|
+
return;
|
249
|
+
}
|
250
|
+
switch (this.connectionType) {
|
251
|
+
case ShapeFlowChartConnectionType.DocumentOrProcess:
|
252
|
+
this.openHandbookDialog(false);
|
253
|
+
break;
|
254
|
+
case ShapeFlowChartConnectionType.Attachment:
|
255
|
+
this.openAttachmentDialog();
|
256
|
+
break;
|
257
|
+
}
|
258
|
+
}
|
259
|
+
onAnchorByNameChange() {
|
260
|
+
this.updateCellViewValues();
|
261
|
+
}
|
262
|
+
openHandbookDialog(isOnlyDocument) {
|
263
|
+
const data = new QMSCKEditorRelation();
|
264
|
+
data.isOnlyDocument = isOnlyDocument;
|
265
|
+
data.isEnableFolder = !isOnlyDocument;
|
266
|
+
const dialogTemplate = this.dialog.open(QMSCKEditorRelatedComponent, {
|
267
|
+
width: '650px',
|
268
|
+
height: '650px',
|
269
|
+
data,
|
270
|
+
disableClose: true
|
271
|
+
});
|
272
|
+
dialogTemplate
|
273
|
+
.afterClosed()
|
274
|
+
.pipe(takeUntil(this.ngUnsubcribe))
|
275
|
+
.subscribe((result) => {
|
276
|
+
if (result) {
|
277
|
+
this.documentType = result.type;
|
278
|
+
this.linkId = this.getLinkId(result.url, result.type);
|
279
|
+
if (result.type == QMSCKEditorDocumentType.document) {
|
280
|
+
this.linkTitle = `${result.title}(${result.id})`;
|
281
|
+
this.getAnchorDocument(result.id);
|
282
|
+
}
|
283
|
+
else {
|
284
|
+
this.linkUrl = result.url;
|
285
|
+
if (!this.linkTitle) {
|
286
|
+
this.linkTitle = result.title;
|
287
|
+
}
|
288
|
+
}
|
289
|
+
this.selectedTarget = TargetTypeName.new;
|
290
|
+
this.updateCellViewValues();
|
291
|
+
}
|
292
|
+
this.connectionType = 0;
|
293
|
+
});
|
294
|
+
}
|
295
|
+
openAttachmentDialog() {
|
296
|
+
const data = new QMSCKEditorParamter();
|
297
|
+
data.module = this.module;
|
298
|
+
data.entityId = this.entityId;
|
299
|
+
const dialogTemplate = this.dialog.open(LinkAttachmentComponent, {
|
300
|
+
width: '650px',
|
301
|
+
height: '650px',
|
302
|
+
data,
|
303
|
+
disableClose: true
|
304
|
+
});
|
305
|
+
dialogTemplate
|
306
|
+
.afterClosed()
|
307
|
+
.pipe(takeUntil(this.ngUnsubcribe))
|
308
|
+
.subscribe((result) => {
|
309
|
+
if (result) {
|
310
|
+
this.documentType = QMSCKEditorDocumentType.other;
|
311
|
+
this.linkUrl = result.url;
|
312
|
+
if (!this.linkTitle) {
|
313
|
+
this.linkTitle = result.title;
|
314
|
+
}
|
315
|
+
this.selectedTarget = TargetTypeName.new;
|
316
|
+
this.updateCellViewValues();
|
317
|
+
}
|
318
|
+
this.connectionType = 0;
|
319
|
+
});
|
320
|
+
}
|
321
|
+
getAnchorDocument(documentId) {
|
322
|
+
this.isLoadingDocumentAnchor = true;
|
323
|
+
this.linkService
|
324
|
+
.getAnchorDocumentList(documentId)
|
325
|
+
.pipe(takeUntil(this.ngUnsubcribe))
|
326
|
+
.subscribe((documents) => {
|
327
|
+
this.documentAnchors = this.extractDocumentAnchors(documents || []);
|
328
|
+
this.isLoadingDocumentAnchor = false;
|
329
|
+
});
|
330
|
+
}
|
331
|
+
extractDocumentAnchors(anchorDocument) {
|
332
|
+
const anchors = [{ value: 0, viewValue: '', anchorValue: LinkAnchor.Blank }];
|
333
|
+
let id = 3;
|
334
|
+
if (anchorDocument) {
|
335
|
+
anchorDocument.forEach((e) => {
|
336
|
+
const div = document.createElement('div');
|
337
|
+
div.innerHTML = e.richText;
|
338
|
+
const domContent = div;
|
339
|
+
const aTags = domContent.getElementsByTagName('a');
|
340
|
+
if (aTags) {
|
341
|
+
// tslint:disable-next-line:prefer-for-of
|
342
|
+
for (let i = 0; i < aTags.length; i++) {
|
343
|
+
const tag = aTags[i];
|
344
|
+
if (tag.name) {
|
345
|
+
const index = anchors.findIndex((x) => {
|
346
|
+
return x.anchorValue === tag.name;
|
347
|
+
});
|
348
|
+
if (index < 0) {
|
349
|
+
anchors.push({
|
350
|
+
value: id,
|
351
|
+
viewValue: tag.name,
|
352
|
+
anchorValue: tag.name
|
353
|
+
});
|
354
|
+
id += 1;
|
355
|
+
}
|
356
|
+
}
|
357
|
+
}
|
358
|
+
}
|
359
|
+
});
|
360
|
+
}
|
361
|
+
anchors.push({
|
362
|
+
value: 1,
|
363
|
+
viewValue: this.LANG.QMSCKEDITOR.ANCHOR_ATTACHMENT,
|
364
|
+
anchorValue: LinkAnchor.Attachment
|
365
|
+
});
|
366
|
+
anchors.push({
|
367
|
+
value: 2,
|
368
|
+
viewValue: this.LANG.QMSCKEDITOR.ANCHOR_RELATED_DOCUMENT,
|
369
|
+
anchorValue: LinkAnchor.Related
|
370
|
+
});
|
371
|
+
return anchors;
|
372
|
+
}
|
373
|
+
reloadAnchors() {
|
374
|
+
if (!!this.linkId && this.documentType == QMSCKEditorDocumentType.document) {
|
375
|
+
this.getAnchorDocument(this.linkId);
|
376
|
+
}
|
377
|
+
}
|
378
|
+
buildLink() {
|
379
|
+
const link = new ILink();
|
380
|
+
link.target = this.selectedTarget;
|
381
|
+
link.title = this.linkTitle;
|
382
|
+
link.url = this.linkUrl;
|
383
|
+
link.documentType = this.documentType || QMSCKEditorDocumentType.other;
|
384
|
+
link.icon = this.documentIcons[link.documentType];
|
385
|
+
link.content = '';
|
386
|
+
switch (this.documentType) {
|
387
|
+
case QMSCKEditorDocumentType.document:
|
388
|
+
link.url = `${CKEditorLinkConst.DOCUMENT_PARTIAL_URL}${this.linkId}#${this.anchorByName}`;
|
389
|
+
link.content = `${this.LANG.QMSCKEDITOR.ID}: ${this.linkId}`;
|
390
|
+
break;
|
391
|
+
case QMSCKEditorDocumentType.process:
|
392
|
+
link.content = `${this.LANG.QMSCKEDITOR.ID}: ${this.linkId}`;
|
393
|
+
break;
|
394
|
+
case QMSCKEditorDocumentType.area:
|
395
|
+
link.content = `${this.LANG.QMSCKEDITOR.ID}: ${this.linkId}`;
|
396
|
+
break;
|
397
|
+
case QMSCKEditorDocumentType.folder:
|
398
|
+
link.content = `${this.LANG.QMSCKEDITOR.ID}: ${this.linkId}`;
|
399
|
+
break;
|
400
|
+
}
|
401
|
+
return link;
|
402
|
+
}
|
151
403
|
onSaveAsTemplate() {
|
152
404
|
const graph = window[FlowChartConst.GRAPH];
|
153
405
|
const jsonContent = JSON.stringify(graph.toJSON());
|
154
|
-
let
|
155
|
-
|
406
|
+
let template = new QMSCKEditorBpmn();
|
407
|
+
template = {
|
156
408
|
id: guidHelper.empty,
|
157
409
|
jsonContent: jsonContent,
|
158
410
|
isTemplate: true,
|
159
411
|
templateName: ''
|
160
412
|
};
|
413
|
+
let data = new QMSCKEditorSaveAsTemplate();
|
414
|
+
data.templateType = CKEditorEventConst.QMSCK_BPMN;
|
415
|
+
data.bpmn = template;
|
161
416
|
const dialogTemplate = this.dialog.open(SaveTemplateComponent, {
|
162
417
|
width: '450px',
|
163
418
|
height: '220px',
|
@@ -180,6 +435,10 @@ export class QMSCKEditorBpmnComponent extends QMSCKEditorBaseComponent {
|
|
180
435
|
if (graph) {
|
181
436
|
graph.fromJSON(JSON.parse(selectedJsonContent));
|
182
437
|
}
|
438
|
+
window[FlowChartConst.MY_CELL_VIEW] = null;
|
439
|
+
window[FlowChartConst.SELECTED_SHAPE_ID] = '';
|
440
|
+
window[FlowChartConst.SHAPE_TYPE] = '';
|
441
|
+
this.onSeletedCellView();
|
183
442
|
}
|
184
443
|
}
|
185
444
|
onDeleteTemplate(title, content) {
|
@@ -196,24 +455,119 @@ export class QMSCKEditorBpmnComponent extends QMSCKEditorBaseComponent {
|
|
196
455
|
.pipe(takeUntil(this.ngUnsubcribe))
|
197
456
|
.subscribe((result) => {
|
198
457
|
if (result) {
|
199
|
-
const id = window[FlowChartConst.SELECTED_FLOWCHART_ID];
|
200
|
-
this.bpmnApiService
|
201
|
-
.bpmnDeleteTemplate(id)
|
202
|
-
.pipe(takeUntil(this.ngUnsubcribe))
|
203
|
-
.subscribe((result) => {
|
204
|
-
if (result) {
|
205
|
-
this.bmpnService.removeSelectItem(id);
|
206
|
-
this.bmpnService.setDefaultSelectedValue();
|
207
|
-
window[FlowChartConst.IS_SELECTED_TEMPLATE] = false;
|
208
|
-
QMSCKEditorToastService.success(this.LANG.QMSCKEDITOR.DELETED);
|
209
|
-
}
|
210
|
-
else {
|
211
|
-
QMSCKEditorToastService.error(this.LANG.QMSCKEDITOR.DELETE_FAILED);
|
212
|
-
}
|
213
|
-
});
|
214
458
|
}
|
215
459
|
});
|
216
460
|
}
|
461
|
+
onSeletedCellView() {
|
462
|
+
this.selectedCellView = window[FlowChartConst.MY_CELL_VIEW];
|
463
|
+
this.initLink();
|
464
|
+
if (!!this.selectedCellView) {
|
465
|
+
const attributes = this.selectedCellView.model.attributes;
|
466
|
+
const excludedTypes = ['bpmn2.Flow', 'bpmn2.HeaderedPool', 'bpmn2.ConversationLink', 'bpmn2.AnnotationLink', 'bpmn2.DataAssociation'];
|
467
|
+
if (!attributes.type || excludedTypes.findIndex(type => type.toLowerCase() == attributes.type.toLowerCase()) > -1) {
|
468
|
+
this.selectedCellView = null;
|
469
|
+
}
|
470
|
+
else {
|
471
|
+
this.linkUrl = attributes.linkUrl || '';
|
472
|
+
if (!!this.linkUrl) {
|
473
|
+
this.parseLinkUrl(this.linkUrl);
|
474
|
+
this.selectedTarget = attributes.linkTarget;
|
475
|
+
this.linkTitle = attributes.linkTitle;
|
476
|
+
this.link = this.buildLink();
|
477
|
+
}
|
478
|
+
}
|
479
|
+
}
|
480
|
+
}
|
481
|
+
onTabChange($event) {
|
482
|
+
window[FlowChartConst.TAB_NAME] = $event.tab.textLabel;
|
483
|
+
if ($event.tab.textLabel == this.LANG.BPMN.PROPERTIES) {
|
484
|
+
this.bmpnService.openShapeFunctionality(this.LANG);
|
485
|
+
}
|
486
|
+
}
|
487
|
+
parseLinkUrl(url) {
|
488
|
+
if (!!url) {
|
489
|
+
const hashIndex = url.indexOf('#');
|
490
|
+
this.documentType = this.getDocumentType(url);
|
491
|
+
this.linkIcon = this.documentIcons[this.documentType];
|
492
|
+
this.linkId = this.getLinkId(url, this.documentType);
|
493
|
+
if (!!this.linkId && this.documentType == QMSCKEditorDocumentType.document && hashIndex > -1) {
|
494
|
+
this.anchorByName = url.substr(hashIndex + 1, url.length - hashIndex);
|
495
|
+
this.getAnchorDocument(this.linkId);
|
496
|
+
}
|
497
|
+
}
|
498
|
+
}
|
499
|
+
getPartialUrl(type) {
|
500
|
+
switch (type) {
|
501
|
+
case QMSCKEditorDocumentType.document:
|
502
|
+
return CKEditorLinkConst.DOCUMENT_PARTIAL_URL;
|
503
|
+
case QMSCKEditorDocumentType.process:
|
504
|
+
return CKEditorLinkConst.PROCESS_PARTIAL_URL;
|
505
|
+
case QMSCKEditorDocumentType.area:
|
506
|
+
return CKEditorLinkConst.AREA_PARTIAL_URL;
|
507
|
+
case QMSCKEditorDocumentType.folder:
|
508
|
+
return CKEditorLinkConst.FOLDER_PARTIAL_URL;
|
509
|
+
default:
|
510
|
+
return '';
|
511
|
+
}
|
512
|
+
}
|
513
|
+
getLinkId(url, type) {
|
514
|
+
let partialUrlIndex = 0;
|
515
|
+
let partialUrlLength = 0;
|
516
|
+
let id = '';
|
517
|
+
let from = 0;
|
518
|
+
let urlLowerCase = !!url ? url.toLowerCase() : '';
|
519
|
+
const partialUrl = this.getPartialUrl(type).toLowerCase();
|
520
|
+
const hashIndex = urlLowerCase.indexOf('#');
|
521
|
+
if (!!partialUrl) {
|
522
|
+
partialUrlIndex = urlLowerCase.indexOf(partialUrl);
|
523
|
+
partialUrlLength = partialUrl.length;
|
524
|
+
from = partialUrlIndex + partialUrlLength;
|
525
|
+
if (type == QMSCKEditorDocumentType.document && hashIndex > -1) {
|
526
|
+
id = urlLowerCase.substr(from, hashIndex - from);
|
527
|
+
}
|
528
|
+
else {
|
529
|
+
const length = urlLowerCase.substr(from).indexOf('/');
|
530
|
+
if (length < 0) {
|
531
|
+
id = urlLowerCase.substr(from);
|
532
|
+
}
|
533
|
+
else {
|
534
|
+
id = urlLowerCase.substr(from, length);
|
535
|
+
}
|
536
|
+
}
|
537
|
+
}
|
538
|
+
if (type == QMSCKEditorDocumentType.document) {
|
539
|
+
try {
|
540
|
+
parseInt(id, 10);
|
541
|
+
}
|
542
|
+
catch (_a) {
|
543
|
+
id = '';
|
544
|
+
}
|
545
|
+
}
|
546
|
+
return id;
|
547
|
+
}
|
548
|
+
getDocumentType(url) {
|
549
|
+
if (url.indexOf(CKEditorLinkConst.DOCUMENT_PARTIAL_URL) > -1) {
|
550
|
+
return QMSCKEditorDocumentType.document;
|
551
|
+
}
|
552
|
+
else if (url.indexOf(CKEditorLinkConst.PROCESS_PARTIAL_URL) > -1) {
|
553
|
+
return QMSCKEditorDocumentType.process;
|
554
|
+
}
|
555
|
+
else if (url.indexOf(CKEditorLinkConst.AREA_PARTIAL_URL) > -1) {
|
556
|
+
return QMSCKEditorDocumentType.area;
|
557
|
+
}
|
558
|
+
else if (url.indexOf(CKEditorLinkConst.FOLDER_PARTIAL_URL) > -1) {
|
559
|
+
return QMSCKEditorDocumentType.folder;
|
560
|
+
}
|
561
|
+
return QMSCKEditorDocumentType.other;
|
562
|
+
}
|
563
|
+
updateCellViewValues() {
|
564
|
+
if (!!this.selectedCellView) {
|
565
|
+
this.link = this.buildLink();
|
566
|
+
this.selectedCellView.model.prop('linkUrl', this.link.url);
|
567
|
+
this.selectedCellView.model.prop('linkTarget', this.link.target);
|
568
|
+
this.selectedCellView.model.prop('linkTitle', this.link.title);
|
569
|
+
}
|
570
|
+
}
|
217
571
|
onResetTemplate() {
|
218
572
|
const ogrJsonContent = window[FlowChartConst.ORG_JSONCONTENT];
|
219
573
|
if (ogrJsonContent) {
|
@@ -223,13 +577,17 @@ export class QMSCKEditorBpmnComponent extends QMSCKEditorBaseComponent {
|
|
223
577
|
this.bmpnService.setDefaultSelectedValue();
|
224
578
|
window[FlowChartConst.IS_SELECTED_TEMPLATE] = false;
|
225
579
|
}
|
580
|
+
window[FlowChartConst.MY_CELL_VIEW] = null;
|
581
|
+
window[FlowChartConst.SELECTED_SHAPE_ID] = '';
|
582
|
+
window[FlowChartConst.SHAPE_TYPE] = '';
|
583
|
+
this.onSeletedCellView();
|
226
584
|
}
|
227
585
|
}
|
228
|
-
|
586
|
+
showConfirmDialog(title, content, isMessage, callback) {
|
229
587
|
const data = new QMSCKEditorDialogData();
|
230
588
|
data.title = title;
|
231
589
|
data.content = content;
|
232
|
-
data.isMessage =
|
590
|
+
data.isMessage = isMessage;
|
233
591
|
const dialogRef = this.dialog.open(QMSCKEditorConfirmComponent, {
|
234
592
|
width: '500px',
|
235
593
|
minHeight: '175px',
|
@@ -239,17 +597,169 @@ export class QMSCKEditorBpmnComponent extends QMSCKEditorBaseComponent {
|
|
239
597
|
.afterClosed()
|
240
598
|
.pipe(takeUntil(this.ngUnsubcribe))
|
241
599
|
.subscribe((result) => {
|
242
|
-
if (
|
243
|
-
|
600
|
+
if (callback) {
|
601
|
+
callback(result);
|
602
|
+
}
|
603
|
+
});
|
604
|
+
}
|
605
|
+
toImageMap(id, cells, clientRect) {
|
606
|
+
const map = { name: id, id: id, areas: [], imageHeight: 0, imageWidth: 0 };
|
607
|
+
map.imageHeight = clientRect.height;
|
608
|
+
map.imageWidth = clientRect.width;
|
609
|
+
if (cells && cells.length != 0) {
|
610
|
+
var isVerticalPool = false;
|
611
|
+
for (var i = 0; i < cells.length; i++) {
|
612
|
+
let shape = cells[i];
|
613
|
+
let size = shape['size'] || { width: 0, height: 0 };
|
614
|
+
let bbox = shape['bbox'] || { x: 0, y: 0 };
|
615
|
+
let position = shape['position'] || { x: 0, y: 0 };
|
616
|
+
bbox.x = position.x;
|
617
|
+
bbox.y = position.y;
|
618
|
+
bbox.width = size.width;
|
619
|
+
bbox.height = size.height;
|
620
|
+
shape['bbox'] = bbox;
|
621
|
+
shape['additionalWidth'] = (bbox.width > size.width) ? (bbox.width - size.width) : 0;
|
622
|
+
}
|
623
|
+
var offsetX = this.getMinXOffset(cells);
|
624
|
+
var offsetY = this.getMinYOffset(cells);
|
625
|
+
var additionalOffsetY = 0;
|
626
|
+
for (var i = 0; i < cells.length; i++) {
|
627
|
+
let shape = cells[i];
|
628
|
+
let href = shape.linkUrl;
|
629
|
+
let target = shape.linkTarget;
|
630
|
+
let alt = shape.linkTitle;
|
631
|
+
if (shape.type == 'bpmn2.Pool' || shape.type == 'bpmn2.HeaderedPool') {
|
632
|
+
additionalOffsetY = (shape.additionalWidth / 2);
|
633
|
+
isVerticalPool = (shape.type == 'bpmn2.Pool' || shape.type == 'bpmn2.HeaderedPool') && shape.angle != 0 ? true : false;
|
634
|
+
}
|
635
|
+
if (!!href && href.length > 0) {
|
636
|
+
var size = shape['size'] || { width: 0, height: 0 };
|
637
|
+
var bbox = shape['bbox'] || { x: 0, y: 0 };
|
638
|
+
var position = shape['position'] || { x: 0, y: 0 };
|
639
|
+
bbox.x = position.x;
|
640
|
+
bbox.y = position.y;
|
641
|
+
bbox.width = size.width;
|
642
|
+
bbox.height = size.height;
|
643
|
+
var additionalOffsetX = (shape.additionalWidth / 2);
|
644
|
+
var x1, y1, x2, y2;
|
645
|
+
if (shape.includeTextInClickableArea == true) {
|
646
|
+
x1 = (bbox.x - offsetX - additionalOffsetX);
|
647
|
+
y1 = (bbox.y - offsetY);
|
648
|
+
x2 = (x1 + shape.bbox.width - 1);
|
649
|
+
y2 = (y1 + shape.bbox.height);
|
650
|
+
}
|
651
|
+
else {
|
652
|
+
var transformX = offsetX, transformY = offsetY;
|
653
|
+
if (offsetX < 0 && isVerticalPool) {
|
654
|
+
transformX = offsetX + size.height;
|
655
|
+
transformY = offsetY - size.height;
|
656
|
+
}
|
657
|
+
if (offsetY < 0 && isVerticalPool) {
|
658
|
+
transformY = offsetY + additionalOffsetY;
|
659
|
+
}
|
660
|
+
x1 = (bbox.x - transformX);
|
661
|
+
y1 = (bbox.y - transformY);
|
662
|
+
x2 = (x1 + size.width - 1);
|
663
|
+
y2 = (y1 + size.height);
|
664
|
+
}
|
665
|
+
let coords = `${x1},${y1},${x2},${y2}`;
|
666
|
+
switch (shape.type) {
|
667
|
+
case 'bpmn2.Activity':
|
668
|
+
case 'bpmn2.Gateway':
|
669
|
+
case 'bpmn2.Event':
|
670
|
+
case 'bpmn2.Conversation':
|
671
|
+
case 'bpmn2.DataObject':
|
672
|
+
case 'bpmn2.DataStore':
|
673
|
+
case 'bpmn.Choreography':
|
674
|
+
case 'bpmn.Message':
|
675
|
+
map.areas.push({
|
676
|
+
shape: 'rect',
|
677
|
+
coords: coords,
|
678
|
+
href: href,
|
679
|
+
target: target,
|
680
|
+
alt: alt
|
681
|
+
});
|
682
|
+
break;
|
683
|
+
default:
|
684
|
+
map.areas.push({
|
685
|
+
shape: 'rect',
|
686
|
+
coords: coords,
|
687
|
+
href: href,
|
688
|
+
target: target,
|
689
|
+
alt: alt
|
690
|
+
});
|
691
|
+
break;
|
692
|
+
}
|
693
|
+
}
|
244
694
|
}
|
695
|
+
}
|
696
|
+
return map;
|
697
|
+
}
|
698
|
+
getMinXOffset(shapes) {
|
699
|
+
var filterShapes = shapes.filter(function (s) {
|
700
|
+
return s.type !== 'bpmn2.Flow'
|
701
|
+
&& s.type != 'bpmn2.ConversationLink'
|
702
|
+
&& s.type != 'bpmn2.DataAssociation'
|
703
|
+
&& s.type != 'bpmn2.AnnotationLink';
|
245
704
|
});
|
705
|
+
var minValue;
|
706
|
+
var minObject;
|
707
|
+
if (!filterShapes || !filterShapes.length) {
|
708
|
+
minValue = this.getXPosition(shapes[0]);
|
709
|
+
minObject = shapes[0];
|
710
|
+
}
|
711
|
+
else {
|
712
|
+
minValue = this.getXPosition(filterShapes[0]);
|
713
|
+
minObject = filterShapes[0];
|
714
|
+
}
|
715
|
+
for (var i = 1; i < filterShapes.length; i++) {
|
716
|
+
var xPosition = this.getXPosition(filterShapes[i]);
|
717
|
+
if (xPosition < minValue) {
|
718
|
+
minValue = xPosition;
|
719
|
+
minObject = filterShapes[i];
|
720
|
+
}
|
721
|
+
}
|
722
|
+
return minValue;
|
723
|
+
}
|
724
|
+
getXPosition(shape) {
|
725
|
+
return shape.bbox.x - (shape.additionalWidth / 2);
|
726
|
+
}
|
727
|
+
getYPosition(shape) {
|
728
|
+
return shape.bbox.y - (shape.additionalWidth / 2);
|
729
|
+
}
|
730
|
+
getMinYOffset(shapes) {
|
731
|
+
var filterShapes = shapes.filter(function (s) {
|
732
|
+
return s.type !== 'bpmn2.Flow'
|
733
|
+
&& s.type != 'bpmn2.ConversationLink'
|
734
|
+
&& s.type != 'bpmn2.DataAssociation'
|
735
|
+
&& s.type != 'bpmn2.AnnotationLink';
|
736
|
+
});
|
737
|
+
var minValue;
|
738
|
+
var minObject;
|
739
|
+
if (!filterShapes || !filterShapes.length) {
|
740
|
+
minValue = shapes[0].bbox.y;
|
741
|
+
minObject = shapes[0];
|
742
|
+
}
|
743
|
+
else {
|
744
|
+
minValue = filterShapes[0].bbox.y;
|
745
|
+
minObject = filterShapes[0];
|
746
|
+
}
|
747
|
+
for (var i = 1; i < filterShapes.length; i++) {
|
748
|
+
var yPosition = this.getYPosition(filterShapes[i]);
|
749
|
+
if (yPosition < minValue) {
|
750
|
+
minValue = yPosition;
|
751
|
+
minObject = filterShapes[i];
|
752
|
+
}
|
753
|
+
}
|
754
|
+
return minValue;
|
246
755
|
}
|
756
|
+
;
|
247
757
|
}
|
248
758
|
QMSCKEditorBpmnComponent.decorators = [
|
249
759
|
{ type: Component, args: [{
|
250
760
|
selector: 'qms-bpmn',
|
251
|
-
template: "<div id=\"qmsckeditor-bpmn\" class=\"qmsckeditor qmsckeditor__bpmn__container\">\r\n <div id=\"qmsckeditor-load-template-header\">\r\n <span\r\n id=\"qmsckeditor-bpmn-header_001\"\r\n mat-icon-button\r\n class=\"qmsckeditor button__close\"\r\n (click)=\"onCloseDialog()\"\r\n >\r\n <mat-icon>close</mat-icon>\r\n </span>\r\n <span\r\n id=\"qmsckeditor-bpmn-header_002\"\r\n mat-icon-button\r\n class=\"qmsckeditor button__done\"\r\n (click)=\"onInsertImage()\"\r\n >\r\n <mat-icon>done</mat-icon>\r\n </span>\r\n <div id=\"qmsckeditor-load-template-header_002\" mat-dialog-content>\r\n <h2 id=\"qmsckeditor-template_002_001\">\r\n
|
252
|
-
styles: [".qmsckeditor__bpmn__container .bpmn__editor{width:100%;height:600px}.qmsckeditor__bpmn__container #leftpanel{float:left;width:70%;height:550px}.qmsckeditor__bpmn__container #rightpanel{float:right;width:30%;height:550px;border:solid;border-width:0 1px 1px 0;overflow-y:auto}.qmsckeditor__bpmn__container #toolbarpanel{position:relative;top:0;bottom:0;left:0;right:0;margin-bottom:17px;height:50px;width:100%}.qmsckeditor__bpmn__container #paperpanel{position:relative;top:0;bottom:0;left:0;right:0;height:400px;width:100%}.qmsckeditor__bpmn__container #stencilpanel{position:relative;top:0;bottom:0;left:0;right:0;height:150px;width:100%}.qmsckeditor__bpmn__container #toolbar-container{position:relative;top:0;bottom:0;left:0;right:0;width:100%;height:100%}.qmsckeditor__bpmn__container #paper-container{position:relative;top:0;bottom:0;left:0;right:0;width:100%;height:inherit}.qmsckeditor__bpmn__container #inspector-container{position:relative;top:0;right:0;bottom:0;width:100%;background:#fff}.qmsckeditor__bpmn__container #stencil-container{position:absolute;top:0;bottom:0;left:0;right:0;width:1174px;height:inherit}.qmsckeditor__bpmn__container #statusbar-container{position:absolute;left:0;right:0;bottom:0;height:25px}.qmsckeditor__bpmn__container #panel-stencil-container{position:absolute;left:0;right:0;bottom:0;height:150px;overflow-x:auto;overflow-y:hidden;background-image:url(\"data:image/png;base64,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\");background-repeat:repeat;transition:all .5s ease-in-out 0s}.qmsckeditor__bpmn__container #panel-stencil-container .mat-expansion-panel-header-title{color:#fff}.qmsckeditor__bpmn__container #panel-stencil-container .joint-theme-default{background:none}.qmsckeditor__bpmn__container #panel-stencil-container ::ng-deep .mat-expansion-indicator:after{color:#fff;transform:rotate(-135deg)}.qmsckeditor__bpmn__container #panel-stencil-container .mat-expansion-panel-header{min-width:1224px;max-width:100%}.qmsckeditor__bpmn__container #panel-stencil-container .joint-stencil>.content{width:1200px}.qmsckeditor__bpmn__container ::ng-deep .joint-inspector.joint-theme-bpmn .list-item .input-wrapper input{width:70%;float:none}"]
|
761
|
+
template: "<div id=\"qmsckeditor-bpmn\" class=\"qmsckeditor qmsckeditor__bpmn__container\">\r\n <div id=\"qmsckeditor-load-template-header\">\r\n <span\r\n id=\"qmsckeditor-bpmn-header_001\"\r\n mat-icon-button\r\n class=\"qmsckeditor button__close\"\r\n (click)=\"onCloseDialog()\"\r\n >\r\n <mat-icon>close</mat-icon>\r\n </span>\r\n <span\r\n id=\"qmsckeditor-bpmn-header_002\"\r\n mat-icon-button\r\n class=\"qmsckeditor button__done\"\r\n (click)=\"onInsertImage()\"\r\n >\r\n <mat-icon>done</mat-icon>\r\n </span>\r\n <div id=\"qmsckeditor-load-template-header_002\" mat-dialog-content>\r\n <h2 id=\"qmsckeditor-template_002_001\">\r\n {{ LANG.BPMN.BUSINESS_PROCESS_MODEL_AND_NOTATION }}\r\n </h2>\r\n </div>\r\n </div>\r\n\r\n <div id=\"bpmn\" class=\"bpmn__editor\">\r\n <div id=\"toolbarpanel\">\r\n <div id=\"toolbar-container\"></div>\r\n </div>\r\n <div id=\"leftpanel\">\r\n <div id=\"paperpanel\">\r\n <div id=\"paper-container\"></div>\r\n </div>\r\n <div id=\"stencilpanel\">\r\n <mat-expansion-panel\r\n id=\"panel-stencil-container\"\r\n [expanded]=\"expandedPanel\"\r\n (click)=\"expandPanel()\"\r\n >\r\n <mat-expansion-panel-header>\r\n <mat-panel-title> </mat-panel-title>\r\n </mat-expansion-panel-header>\r\n <div id=\"stencil-container\"></div>\r\n </mat-expansion-panel>\r\n <!-- <div id=\"stencil-container\"></div> -->\r\n </div>\r\n </div>\r\n <div id=\"rightpanel\">\r\n <mat-tab-group\r\n mat-stretch-tabs\r\n mat-align-tabs=\"center\"\r\n (selectedTabChange)=\"onTabChange($event)\"\r\n >\r\n <mat-tab\r\n [label]=\"LANG.BPMN.PROPERTIES\"\r\n id=\"qmsckeditor_bpmn_properties\"\r\n >\r\n <div id=\"inspector-container\"></div>\r\n <!-- <div class=\"about\" *ngIf=\"!selectedCellView\">\r\n <h1>{{ LANG.BPMN.BUSINESS_PROCESS_MODEL_AND_NOTATION }}</h1>\r\n </div> -->\r\n </mat-tab>\r\n <mat-tab\r\n [label]=\"LANG.BPMN.CONNECTION\"\r\n id=\"qmsckeditor_bpmn_connection\"\r\n >\r\n <!-- <div class=\"about\" *ngIf=\"!selectedCellView\">\r\n <h1>{{ LANG.BPMN.BUSINESS_PROCESS_MODEL_AND_NOTATION }}</h1>\r\n </div> -->\r\n <mat-expansion-panel\r\n id=\"qmsckeditor_bpmn_connection_panel\"\r\n [expanded]=\"true\"\r\n (opened)=\"(true)\"\r\n (closed)=\"(false)\"\r\n hideToggle\r\n *ngIf=\"!!selectedCellView\"\r\n >\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>\r\n {{ LANG.BPMN.CONNECTION }}\r\n </mat-panel-title>\r\n </mat-expansion-panel-header>\r\n <div id=\"qmsckeditor_bpmn_connection_panel_001\" class=\"col-12 mt8\">\r\n <mat-form-field appearance=\"fill\" class=\"col-12 pl-3\">\r\n <mat-label>{{ LANG.QMSCKEDITOR.ANCHOR_BY_NAME }}</mat-label>\r\n <mat-select\r\n [(ngModel)]=\"connectionType\"\r\n name=\"connectionType\"\r\n (ngModelChange)=\"onConnectionTypeChange()\"\r\n >\r\n <mat-option\r\n *ngFor=\"let item of connectionTypes\"\r\n [value]=\"item.id\"\r\n disableOptionCentering\r\n >\r\n {{ item.name }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n <div\r\n id=\"qmsckeditor_bpmn_connection_panel_002\"\r\n class=\"col-12 mt8\"\r\n *ngIf=\"!!link\"\r\n >\r\n <mat-card>\r\n <div class=\"row\">\r\n <div class=\"col-1 mt-n4\">\r\n <mat-icon aria-hidden=\"true\" class=\"fs32\">{{\r\n link.icon\r\n }}</mat-icon>\r\n </div>\r\n <div class=\"col-10\">\r\n <mat-card-title class=\"fs16\">{{\r\n link.title\r\n }}</mat-card-title>\r\n <mat-card-subtitle>{{ link.content }}</mat-card-subtitle>\r\n </div>\r\n <div class=\"col-1 pa0 mt-n4\">\r\n <button mat-icon-button>\r\n <mat-icon (click)=\"removeLink()\">close</mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n </mat-card>\r\n </div>\r\n <div\r\n id=\"qmsckeditor_bpmn_connection_panel_003\"\r\n class=\"col-12 mt24\"\r\n *ngIf=\"!!link && link.documentType === 1\"\r\n >\r\n <div class=\"row\">\r\n <div class=\"col-10\">\r\n <mat-form-field appearance=\"fill\" class=\"col-12\">\r\n <mat-label>{{\r\n LANG.BPMN.CHOOSE_ANCHOR_IN_TEXT_OPTIONAL\r\n }}</mat-label>\r\n <mat-label *ngIf=\"isLoadingDocumentAnchor\">\r\n <mat-progress-bar mode=\"indeterminate\"></mat-progress-bar>\r\n </mat-label>\r\n <mat-select\r\n [(ngModel)]=\"anchorByName\"\r\n name=\"anchorByName\"\r\n (ngModelChange)=\"onAnchorByNameChange()\"\r\n disableOptionCentering\r\n >\r\n <mat-option\r\n *ngIf=\"\r\n documentAnchors === null ||\r\n documentAnchors.length == 0\r\n \"\r\n disabled\r\n ></mat-option>\r\n <mat-option\r\n *ngFor=\"let docAnchor of documentAnchors\"\r\n [value]=\"docAnchor.anchorValue\"\r\n >\r\n {{ docAnchor.viewValue }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-2 mt8 pa0\">\r\n <button\r\n mat-raised-button\r\n [matTooltip]=\"LANG.BPMN.RELOAD_ANCHORS\"\r\n (click)=\"reloadAnchors()\"\r\n [disabled]=\"isLoadingDocumentAnchor\"\r\n >\r\n <mat-icon>autorenew</mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div\r\n id=\"qmsckeditor_bpmn_connection_panel_004\"\r\n class=\"col-12 mt8\"\r\n *ngIf=\"!!link\"\r\n >\r\n <mat-form-field appearance=\"fill\" class=\"col-12\">\r\n <mat-label>{{ LANG.QMSCKEDITOR.TARGET }}</mat-label>\r\n <mat-select\r\n [(ngModel)]=\"selectedTarget\"\r\n name=\"selectedTarget\"\r\n disableOptionCentering\r\n >\r\n <mat-option\r\n *ngFor=\"let target of targets\"\r\n [value]=\"target.id\"\r\n >\r\n {{ target.name }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n </mat-expansion-panel>\r\n </mat-tab>\r\n </mat-tab-group>\r\n </div>\r\n </div>\r\n</div>\r\n",
|
762
|
+
styles: [":host ::ng-deep .qmsckeditor__bpmn__container .bpmn__editor{width:100%;height:600px}:host ::ng-deep .qmsckeditor__bpmn__container #leftpanel{float:left;width:70%;height:550px}:host ::ng-deep .qmsckeditor__bpmn__container #rightpanel{float:right;width:30%;height:550px;border:solid;border-width:0 1px 1px 0;overflow-y:auto}:host ::ng-deep .qmsckeditor__bpmn__container #toolbarpanel{position:relative;top:0;bottom:0;left:0;right:0;margin-bottom:16px;height:50px;width:100%}:host ::ng-deep .qmsckeditor__bpmn__container #paperpanel{position:relative;top:0;bottom:0;left:0;right:0;height:400px;width:100%}:host ::ng-deep .qmsckeditor__bpmn__container #stencilpanel{position:relative;top:0;bottom:0;left:0;right:0;height:150px;width:100%}:host ::ng-deep .qmsckeditor__bpmn__container #toolbar-container{position:relative;top:0;bottom:0;left:0;right:0;width:100%;height:100%}:host ::ng-deep .qmsckeditor__bpmn__container #paper-container{position:relative;top:0;bottom:0;left:0;right:0;width:100%;height:inherit}:host ::ng-deep .qmsckeditor__bpmn__container #inspector-container{position:relative;top:0;right:0;bottom:0;width:100%;background:#fff}:host ::ng-deep .qmsckeditor__bpmn__container #stencil-container{position:absolute;top:0;bottom:0;left:0;right:0;width:1174px;height:inherit}:host ::ng-deep .qmsckeditor__bpmn__container #statusbar-container{position:absolute;left:0;right:0;bottom:0;height:25px}:host ::ng-deep .qmsckeditor__bpmn__container #panel-stencil-container{position:absolute;left:0;right:0;bottom:0;height:150px;overflow-x:auto;overflow-y:hidden;background-image:url(\"data:image/png;base64,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\");background-repeat:repeat;transition:all .5s ease-in-out 0s}:host ::ng-deep .qmsckeditor__bpmn__container #panel-stencil-container .mat-expansion-panel-header-title{color:#fff}:host ::ng-deep .qmsckeditor__bpmn__container #panel-stencil-container .joint-theme-default{background:none}:host ::ng-deep .qmsckeditor__bpmn__container #panel-stencil-container .mat-expansion-indicator:after{color:#fff;transform:rotate(-135deg)}:host ::ng-deep .qmsckeditor__bpmn__container #panel-stencil-container .mat-expansion-panel-header{min-width:1224px;max-width:100%}:host ::ng-deep .qmsckeditor__bpmn__container #panel-stencil-container .joint-stencil>.content{width:1200px}:host ::ng-deep .qmsckeditor__bpmn__container .joint-inspector.joint-theme-bpmn .list-item .input-wrapper input{width:70%;float:none}:host ::ng-deep .qmsckeditor__bpmn__container .object-property[data-property$=\"/fill\"]{width:100%}:host ::ng-deep .qmsckeditor__bpmn__container .object-property[data-property$=\"/stroke\"]{width:100%}:host ::ng-deep .qmsckeditor__bpmn__container .field[data-field$=\"/fill\"]{width:100%}:host ::ng-deep .qmsckeditor__bpmn__container .field[data-field$=\"/stroke\"]{width:100%}:host ::ng-deep .qmsckeditor__bpmn__container .joint-inspector.joint-theme-bpmn .list-item:nth-child(odd){background:#ecefff;background:-webkit-gradient(left,#ecefff 0,#fafafa 100%);background:linear-gradient(270deg,#91a1c9 0,#fafafa);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#ECEFFF\",endColorstr=\"#3571b0\",GradientType=0)}:host ::ng-deep .qmsckeditor__bpmn__container .joint-inspector.joint-theme-bpmn .list-item:nth-child(2n){background:#ecefff;background:-webkit-gradient(left,#ecefff 0,#fafafa 100%);background:linear-gradient(270deg,#91a1c9 0,#fafafa);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#ECEFFF\",endColorstr=\"#3571b0\",GradientType=0)}:host ::ng-deep .qmsckeditor__bpmn__container .joint-inspector.joint-theme-bpmn .list-item .list-item:nth-child(odd){background:#eceff7;background:-webkit-gradient(left,#eceff7 0,#eceff7 100%);background:linear-gradient(270deg,#eceff7 0,#eceff7);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#eceff7\",endColorstr=\"#eceff7\",GradientType=0)}:host ::ng-deep .qmsckeditor__bpmn__container .joint-inspector.joint-theme-bpmn .list-item .list-item:nth-child(2n){background:#eceff7;background:-webkit-gradient(left,#eceff7 0,#eceff7 100%);background:linear-gradient(270deg,#eceff7 0,#eceff7);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#eceff7\",endColorstr=\"#eceff7\",GradientType=0)}:host ::ng-deep .qmsckeditor__bpmn__container .joint-inspector.joint-theme-bpmn .list-item{border-radius:10px;box-shadow:0 1px 1px 1px rgba(0,0,0,.2)}"]
|
253
763
|
},] }
|
254
764
|
];
|
255
765
|
QMSCKEditorBpmnComponent.ctorParameters = () => [
|
@@ -257,10 +767,11 @@ QMSCKEditorBpmnComponent.ctorParameters = () => [
|
|
257
767
|
{ type: TranslateLibraryService },
|
258
768
|
{ type: BpmnService },
|
259
769
|
{ type: QMSCKEditorBpmnApiService },
|
770
|
+
{ type: QMSCKEditorLinkService },
|
260
771
|
{ type: MatDialogRef },
|
261
|
-
{ type:
|
772
|
+
{ type: QMSCKEditorBpmnData, decorators: [{ type: Inject, args: [MAT_DIALOG_DATA,] }] }
|
262
773
|
];
|
263
774
|
QMSCKEditorBpmnComponent.propDecorators = {
|
264
775
|
onMessage: [{ type: HostListener, args: ['window:message', ['$event'],] }]
|
265
776
|
};
|
266
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicW1zLWNrZWRpdG9yLWJwbW4uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcW1zLWFuZ3VsYXIvc3JjL2xpYi9xbXMtY2tlZGl0b3ItY29tcG9uZW50cy9jb21wb25lbnRzL3Ftcy1ja2VkaXRvci1icG1uL3Ftcy1ja2VkaXRvci1icG1uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3BGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUN6RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUNuRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDaEYsT0FBTyxVQUFVLE1BQU0sZ0NBQWdDLENBQUM7QUFFeEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDREQUE0RCxDQUFDO0FBQ3pHLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ3hGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUN2RSxPQUFPLEVBQUUs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cnQgeyBDb21wb25lbnQsIEhvc3RMaXN0ZW5lciwgSW5qZWN0LCBPbkluaXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBNYXREaWFsb2csIE1hdERpYWxvZ1JlZiwgTUFUX0RJQUxPR19EQVRBIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2RpYWxvZ1wiO1xyXG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcclxuaW1wb3J0IHsgVHJhbnNsYXRlTGlicmFyeVNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vLi4vc2VydmljZXMvdHJhbnNsYXRpb24tcmVnaXN0cnkuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBDS0VkaXRvckV2ZW50Q29uc3QgfSBmcm9tIFwiLi4vLi4vY29tbW9uL2NvbnN0YW50cy9ja2VkaXRvckV2ZW50LmNvbnN0YW50XCI7XHJcbmltcG9ydCB7IEZsb3dDaGFydENvbnN0IH0gZnJvbSBcIi4uLy4uL2NvbW1vbi9jb25zdGFudHMvY2tlZGl0b3JGbG93Y2hhcnQuY29uc3RcIjtcclxuaW1wb3J0IGd1aWRIZWxwZXIgZnJvbSBcIi4uLy4uL2NvbW1vbi9oZWxwZXIvZ3VpZEhlbHBlclwiO1xyXG5pbXBvcnQgeyBRTVNDS0VkaXRvckJwbW5UZW1wbGF0ZSB9IGZyb20gXCIuLi8uLi9jb21tb24vbW9kZWxzL3Ftcy1ja2VkaXRvci1icG1uLXRlbXBsYXRlLm1vZGVsXCI7XHJcbmltcG9ydCB7IFFNU0NLRWRpdG9yQnBtbiB9IGZyb20gXCIuLi8uLi9jb21tb24vbW9kZWxzL3Ftcy1ja2VkaXRvci1icG1uLm1vZGVsXCI7XHJcbmltcG9ydCB7IFFNU0NLRWRpdG9yRGlhbG9nRGF0YSB9IGZyb20gXCIuLi8uLi9jb21tb24vbW9kZWxzL3Ftcy1ja2VkaXRvci1kaWFsb2cubW9kZWxcIjtcclxuaW1wb3J0IHsgUU1TQ0tFZGl0b3JDb25maXJtQ29tcG9uZW50IH0gZnJvbSBcIi4uLy4uL2NvbW1vbi9tb2R1bGUvY29uZmlybS9xbXMtY2tlZGl0b3ItY29uZmlybS5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgUU1TQ0tFZGl0b3JUb2FzdFNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vY29tbW9uL3RvYXN0L3Ftcy1ja2VkaXRvci10b2FzdC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFFNU0NLRWRpdG9yQmFzZUNvbXBvbmVudCB9IGZyb20gXCIuLi8uLi9xbXMtY2tlZGl0b3ItYmFzZS5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgUU1TQ0tFZGl0b3JCcG1uQXBpU2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9xbXMtY2tlZGl0b3ItYnBtbi1hcGkuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBCcG1uU2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9xbXMtY2tlZGl0b3ItYnBtbi5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFNhdmVUZW1wbGF0ZUNvbXBvbmVudCB9IGZyb20gXCIuL3NhdmUtdGVtcGxhdGUvc2F2ZS10ZW1wbGF0ZS5jb21wb25lbnRcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAncW1zLWJwbW4nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9xbXMtY2tlZGl0b3ItYnBtbi5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vcW1zLWNrZWRpdG9yLWJwbW4uY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUU1TQ0tFZGl0b3JCcG1uQ29tcG9uZW50IGV4dGVuZHMgUU1TQ0tFZGl0b3JCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBMQU5HOiBhbnk7XHJcbiAganNvbkNvbnRlbnQ6IHN0cmluZztcclxuICBleHBhbmRlZFBhbmVsID0gdHJ1ZTtcclxuICBpZCA9ICcnO1xyXG4gIGJwbW46IFFNU0NLRWRpdG9yQnBtbiA9IG5ldyBRTVNDS0VkaXRvckJwbW4oKTtcclxuICBicG1uVGVtbGF0ZXM6IFFNU0NLRWRpdG9yQnBtblRlbXBsYXRlW10gPSBbXTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGRpYWxvZzogTWF0RGlhbG9nLFxyXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZUxpYnJhcnlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBibXBuU2VydmljZTogQnBtblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGJwbW5BcGlTZXJ2aWNlOiBRTVNDS0VkaXRvckJwbW5BcGlTZXJ2aWNlLFxyXG4gICAgcHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPFFNU0NLRWRpdG9yQnBtbkNvbXBvbmVudD4sXHJcbiAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHVibGljIGRhdGE6IHN0cmluZ1xyXG4gICkge1xyXG4gICAgc3VwZXIoKTtcclxuICAgIHRoaXMuaWQgPSBkYXRhO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignd2luZG93Om1lc3NhZ2UnLCBbJyRldmVudCddKVxyXG4gIG9uTWVzc2FnZShldmVudCkge1xyXG4gICAgaWYgKGV2ZW50LmRhdGEgPT09IEZsb3dDaGFydENvbnN0LlNBVkVfQVNfVEVNUExBVEUpIHtcclxuICAgICAgdGhpcy5vblNhdmVBc1RlbXBsYXRlKCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChldmVudC5kYXRhID09PSBGbG93Q2hhcnRDb25zdC5ERUxFVEVfVEVNUExBVEUpIHtcclxuICAgICAgdGhpcy5vbkRlbGV0ZVRlbXBsYXRlKHRoaXMuTEFORy5CUE1OLkRFTEVURV9URU1QTEFURSwgdGhpcy5MQU5HLlFNU0NLRURJVE9SX01FU1NBR0UuQ09ORklSTV9ERUxFVEVfVEVNUExBVEUpXHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChldmVudC5kYXRhID09PSBGbG93Q2hhcnRDb25zdC5NVVNUX1NFTEVDVF9URU1QTEFURSkge1xyXG4gICAgICB0aGlzLnNob3dJbmZvTWVzc2FnZSh0aGlzLkxBTkcuQlBNTi5TRUxFQ1RfVEVNUExBVEUsIHRoaXMuTEFORy5CUE1OLlNFTEVDVF9URU1QTEFURV9JTkZPUk1BVElPTik7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChldmVudC5kYXRhID09PSBGbG93Q2hhcnRDb25zdC5DSEFOR0lOR19URU1QTEFURSkge1xyXG4gICAgICB0aGlzLm9uU2VsZWN0ZWRUZW1wbGF0ZSgpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoZXZlbnQuZGF0YSA9PT0gRmxvd0NoYXJ0Q29uc3QuUkVTRVRfVEVNUExBVEUpIHtcclxuICAgICAgdGhpcy5vblJlc2V0VGVtcGxhdGUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFzeW5jIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy50cmFuc2xhdGUuZ2V0TGFuZ3VhZ2VTdWJqZWN0JC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJjcmliZSkpLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcbiAgICAgIGlmIChyZXMpIHtcclxuICAgICAgICB0aGlzLkxBTkcgPSB0aGlzLnRyYW5zbGF0ZS5nZXRPYmplY3RMYW5nKHJlcyk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgdGhpcy5icG1uVGVtbGF0ZXMgPSBhd2FpdCB0aGlzLmdldFRlbXBsYXRlcygpO1xyXG4gICAgaWYgKHRoaXMuaWQpIHtcclxuICAgICAgdGhpcy5qc29uQ29udGVudCA9IGF3YWl0IHRoaXMuZ2V0SnNvbkNvbnRlbnQodGhpcy5pZCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmJtcG5TZXJ2aWNlLmJ1aWxkRGlhZ3JhbShcclxuICAgICAgdGhpcy5icG1uVGVtbGF0ZXMsXHJcbiAgICAgIG51bGwsXHJcbiAgICAgIENLRWRpdG9yRXZlbnRDb25zdC5RTVNDS19CUE1OLFxyXG4gICAgICB0aGlzLmpzb25Db250ZW50LFxyXG4gICAgICAxLFxyXG4gICAgICB0aGlzLkxBTkdcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBleHBhbmRQYW5lbCgpIHtcclxuICAgIHRoaXMuZXhwYW5kZWRQYW5lbCA9ICF0aGlzLmV4cGFuZGVkUGFuZWw7XHJcbiAgICBjb25zdCBwYW5lbFN0ZW5jaWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGFuZWwtc3RlbmNpbC1jb250YWluZXInKTtcclxuICAgIGNvbnN0IHBhcGVyQ29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BhcGVycGFuZWwnKTtcclxuICAgIGNvbnN0IHN0ZW5jaWxDb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3RlbmNpbHBhbmVsJyk7XHJcbiAgICBpZiAocGFuZWxTdGVuY2lsKSB7XHJcbiAgICAgIGlmICghdGhpcy5leHBhbmRlZFBhbmVsKSB7XHJcbiAgICAgICAgc3RlbmNpbENvbnRhaW5lci5zdHlsZS5oZWlnaHQgPSAnNTBweCc7XHJcbiAgICAgICAgcGFuZWxTdGVuY2lsLnN0eWxlLmhlaWdodCA9ICc1MHB4JztcclxuICAgICAgICBwYXBlckNvbnRhaW5lci5zdHlsZS5oZWlnaHQgPSAnNTAwcHgnO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHN0ZW5jaWxDb250YWluZXIuc3R5bGUuaGVpZ2h0ID0gJzE1MHB4JztcclxuICAgICAgICBwYW5lbFN0ZW5jaWwuc3R5bGUuaGVpZ2h0ID0gJzE1MHB4JztcclxuICAgICAgICBwYXBlckNvbnRhaW5lci5zdHlsZS5oZWlnaHQgPSAnNDAwcHgnO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhc3luYyBnZXRUZW1wbGF0ZXMoKTogUHJvbWlzZTxRTVNDS0VkaXRvckJwbW5UZW1wbGF0ZVtdPiB7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcclxuICAgICAgdGhpcy5icG1uQXBpU2VydmljZVxyXG4gICAgICAgIC5icG1uR2V0VGVtcGxhdGVzKClcclxuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3ViY3JpYmUpKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgICAgcmVzb2x2ZShyZXN1bHQpO1xyXG4gICAgICAgIH0pXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgZ2V0SnNvbkNvbnRlbnQoaWQ6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcclxuICAgICAgdGhpcy5icG1uQXBpU2VydmljZVxyXG4gICAgICAgIC5nZXRCcG1uQnlJZChpZClcclxuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3ViY3JpYmUpKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgICByZXNvbHZlKHJlc3VsdC5qc29uQ29udGVudCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgc2F2ZUltYWdlQ29udGVudCgpIHtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xyXG4gICAgICBjb25zdCBncmFwaCA9IHdpbmRvd1tGbG93Q2hhcnRDb25zdC5HUkFQSF07XHJcbiAgICAgIGNvbnN0IGpzb25Db250ZW50ID0gSlNPTi5zdHJpbmdpZnkoZ3JhcGgudG9KU09OKCkpO1xyXG4gICAgICB0aGlzLmJwbW4gPSB7XHJcbiAgICAgICAgaWQ6IHRoaXMuaWQgPyB0aGlzLmlkIDogZ3VpZEhlbHBlci5lbXB0eSxcclxuICAgICAgICBqc29uQ29udGVudDoganNvbkNvbnRlbnQsXHJcbiAgICAgICAgaXNUZW1wbGF0ZTogZmFsc2UsXHJcbiAgICAgICAgdGVtcGxhdGVOYW1lOiAnJ1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLmJwbW5BcGlTZXJ2aWNlXHJcbiAgICAgICAgLmJwbW5Nb2RpZnlpbmcodGhpcy5icG1uKVxyXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJjcmliZSkpXHJcbiAgICAgICAgLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgICAgICAgIHJlc29sdmUocmVzdWx0KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBhc3luYyBnZXRJbWFnZUNvbnRlbnQocGFwZXI6IGFueSkge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XHJcbiAgICAgIHBhcGVyLnRvUE5HKChpbWFnZURhdGEpID0+IHtcclxuICAgICAgICBjb25zdCBhcnJTdHJpbmcgPSBpbWFnZURhdGEuc3BsaXQoJywnKTtcclxuICAgICAgICByZXNvbHZlKGFyclN0cmluZ1sxXSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBvbkluc2VydEltYWdlKCkge1xyXG4gICAgY29uc3QgaWQgPSBhd2FpdCB0aGlzLnNhdmVJbWFnZUNvbnRlbnQoKTtcclxuICAgIGNvbnN0IHBhcGVyID0gd2luZG93W2BwYXBlcmBdO1xyXG4gICAgY29uc3QgaW1hZ2VDb250ZW50ID0gJ2RhdGE6aW1hZ2UvcG5nO2Jhc2U2NCwnICsgYXdhaXQgdGhpcy5nZXRJbWFnZUNvbnRlbnQocGFwZXIpO1xyXG4gICAgY29uc3QgcmVzdWx0ID0geyBrZXk6IGAke0NLRWRpdG9yRXZlbnRDb25zdC5RTVNDS19CUE1OfSMke2lkfWAsIHZhbHVlczogaW1hZ2VDb250ZW50IH1cclxuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKHJlc3VsdCk7XHJcbiAgfVxyXG5cclxuICBvbkNsb3NlRGlhbG9nKCkge1xyXG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoKTtcclxuICB9XHJcblxyXG4gIG9uU2F2ZUFzVGVtcGxhdGUoKSB7XHJcbiAgICBjb25zdCBncmFwaCA9IHdpbmRvd1tGbG93Q2hhcnRDb25zdC5HUkFQSF07XHJcbiAgICBjb25zdCBqc29uQ29udGVudCA9IEpTT04uc3RyaW5naWZ5KGdyYXBoLnRvSlNPTigpKTtcclxuICAgIGxldCBkYXRhID0gbmV3IFFNU0NLRWRpdG9yQnBtbigpO1xyXG4gICAgZGF0YSA9IHtcclxuICAgICAgaWQ6IGd1aWRIZWxwZXIuZW1wdHksXHJcbiAgICAgIGpzb25Db250ZW50OiBqc29uQ29udGVudCxcclxuICAgICAgaXNUZW1wbGF0ZTogdHJ1ZSxcclxuICAgICAgdGVtcGxhdGVOYW1lOiAnJ1xyXG4gICAgfVxyXG4gICAgY29uc3QgZGlhbG9nVGVtcGxhdGUgPSB0aGlzLmRpYWxvZy5vcGVuKFNhdmVUZW1wbGF0ZUNvbXBvbmVudCwge1xyXG4gICAgICB3aWR0aDogJzQ1MHB4JyxcclxuICAgICAgaGVpZ2h0OiAnMjIwcHgnLFxyXG4gICAgICBkYXRhLFxyXG4gICAgICBkaXNhYmxlQ2xvc2U6IHRydWVcclxuICAgIH0pO1xyXG4gICAgZGlhbG9nVGVtcGxhdGVcclxuICAgICAgLmFmdGVyQ2xvc2VkKClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YmNyaWJlKSlcclxuICAgICAgLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgLy8gVERPXHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uU2VsZWN0ZWRUZW1wbGF0ZSgpIHtcclxuICAgIGNvbnN0IHNlbGVjdGVkSnNvbkNvbnRlbnQgPSB3aW5kb3dbRmxvd0NoYXJ0Q29uc3QuU0VMRUNURURfSlNPTl9DT05URU5UXTtcclxuICAgIGlmIChzZWxlY3RlZEpzb25Db250ZW50KSB7XHJcbiAgICAgIGNvbnN0IGdyYXBoID0gd2luZG93W0Zsb3dDaGFydENvbnN0LkdSQVBIXTtcclxuICAgICAgaWYgKGdyYXBoKSB7XHJcbiAgICAgICAgZ3JhcGguZnJvbUpTT04oSlNPTi5wYXJzZShzZWxlY3RlZEpzb25Db250ZW50KSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uRGVsZXRlVGVtcGxhdGUodGl0bGU6IHN0cmluZywgY29udGVudDogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBkYXRhOiBRTVNDS0VkaXRvckRpYWxvZ0RhdGEgPSBuZXcgUU1TQ0tFZGl0b3JEaWFsb2dEYXRhKCk7XHJcbiAgICBkYXRhLnRpdGxlID0gdGl0bGU7XHJcbiAgICBkYXRhLmNvbnRlbnQgPSBjb250ZW50O1xyXG4gICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihRTVNDS0VkaXRvckNvbmZpcm1Db21wb25lbnQsIHtcclxuICAgICAgd2lkdGg6ICc1MDBweCcsXHJcbiAgICAgIG1pbkhlaWdodDogJzE3NXB4JyxcclxuICAgICAgZGF0YVxyXG4gICAgfSk7XHJcbiAgICBkaWFsb2dSZWZcclxuICAgICAgLmFmdGVyQ2xvc2VkKClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YmNyaWJlKSlcclxuICAgICAgLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgY29uc3QgaWQgPSB3aW5kb3dbRmxvd0NoYXJ0Q29uc3QuU0VMRUNURURfRkxPV0NIQVJUX0lEXTtcclxuICAgICAgICAgIHRoaXMuYnBtbkFwaVNlcnZpY2VcclxuICAgICAgICAgICAgLmJwbW5EZWxldGVUZW1wbGF0ZShpZClcclxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YmNyaWJlKSlcclxuICAgICAgICAgICAgLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ibXBuU2VydmljZS5yZW1vdmVTZWxlY3RJdGVtKGlkKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuYm1wblNlcnZpY2Uuc2V0RGVmYXVsdFNlbGVjdGVkVmFsdWUoKTtcclxuICAgICAgICAgICAgICAgIHdpbmRvd1tGbG93Q2hhcnRDb25zdC5JU19TRUxFQ1RFRF9URU1QTEFURV0gPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIFFNU0NLRWRpdG9yVG9hc3RTZXJ2aWNlLnN1Y2Nlc3ModGhpcy5MQU5HLlFNU0NLRURJVE9SLkRFTEVURUQpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIFFNU0NLRWRpdG9yVG9hc3RTZXJ2aWNlLmVycm9yKHRoaXMuTEFORy5RTVNDS0VESVRPUi5ERUxFVEVfRkFJTEVEKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uUmVzZXRUZW1wbGF0ZSgpIHtcclxuICAgIGNvbnN0IG9nckpzb25Db250ZW50ID0gd2luZG93W0Zsb3dDaGFydENvbnN0Lk9SR19KU09OQ09OVEVOVF07XHJcbiAgICBpZiAob2dySnNvbkNvbnRlbnQpIHtcclxuICAgICAgY29uc3QgZ3JhcGggPSB3aW5kb3dbRmxvd0NoYXJ0Q29uc3QuR1JBUEhdO1xyXG4gICAgICBpZiAoZ3JhcGgpIHtcclxuICAgICAgICBncmFwaC5mcm9tSlNPTihKU09OLnBhcnNlKG9nckpzb25Db250ZW50KSk7XHJcbiAgICAgICAgdGhpcy5ibXBuU2VydmljZS5zZXREZWZhdWx0U2VsZWN0ZWRWYWx1ZSgpO1xyXG4gICAgICAgIHdpbmRvd1tGbG93Q2hhcnRDb25zdC5JU19TRUxFQ1RFRF9URU1QTEFURV0gPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2hvd0luZm9NZXNzYWdlKHRpdGxlOiBzdHJpbmcsIGNvbnRlbnQ6IHN0cmluZykge1xyXG4gICAgY29uc3QgZGF0YTogUU1TQ0tFZGl0b3JEaWFsb2dEYXRhID0gbmV3IFFNU0NLRWRpdG9yRGlhbG9nRGF0YSgpO1xyXG4gICAgZGF0YS50aXRsZSA9IHRpdGxlO1xyXG4gICAgZGF0YS5jb250ZW50ID0gY29udGVudDtcclxuICAgIGRhdGEuaXNNZXNzYWdlID0gdHJ1ZTtcclxuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oUU1TQ0tFZGl0b3JDb25maXJtQ29tcG9uZW50LCB7XHJcbiAgICAgIHdpZHRoOiAnNTAwcHgnLFxyXG4gICAgICBtaW5IZWlnaHQ6ICcxNzVweCcsXHJcbiAgICAgIGRhdGFcclxuICAgIH0pO1xyXG4gICAgZGlhbG9nUmVmXHJcbiAgICAgIC5hZnRlckNsb3NlZCgpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJjcmliZSkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgICAgIC8vVE9ET1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
777
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicW1zLWNrZWRpdG9yLWJwbW4uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcW1zLWFuZ3VsYXIvc3JjL2xpYi9xbXMtY2tlZGl0b3ItY29tcG9uZW50cy9jb21wb25lbnRzL3Ftcy1ja2VkaXRvci1icG1uL3Ftcy1ja2VkaXRvci1icG1uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3BGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUN6RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUNuRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDaEYsT0FBTyxVQUFVLE1BQU0sZ0NBQWdDLENBQUM7QUFFeEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHlEQUF5RCxDQUFDO0FBQ3BHLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDREQUE0RCxDQUFDO0FBQ3pHLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUN2RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUNoRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDckUsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0scURBQXFELENBQUM7QUFDbkcsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sd0RBQXdELENBQUM7QUFDckcsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNERBQTRELENBQUM7QUFDckcsT0FBTyxtQkFBbUIsTUFBTSxrREFBa0QsQ0FBQztBQUNuRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUN0RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNoRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUNsRixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUVoRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDakUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFxQmpGLE1BQU0sS0FBSztJQU9UO1FBQ0UsSUFBSSxDQUFDLE1BQU0sR0FBRyxjQUFjLENBQUMsR0FBRyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxZQUFZLEdBQUcsdUJBQXVCLENBQUMsS0FBSyxDQUFDO1FBQ2xELElBQUksQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDO1FBQ2QsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDaEIsSUFBSSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUM7UUFDZixJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztJQUNwQixDQUFDO0NBQ0Y7QUFPRCxNQUFNLE9BQU8sd0JBQXlCLFNBQVEsd0JBQXdCO0lBK0JwRSxZQUNVLE1BQWlCLEVBQ2pCLFNBQWtDLEVBQ2xDLFdBQXdCLEVBQ3hCLGNBQXlDLEVBQ3pDLFdBQW1DLEVBQ3BDLFNBQWlELEVBQ3hCLElBQXlCO1FBRXpELEtBQUssRUFBRSxDQUFDO1FBUkEsV0FBTSxHQUFOLE1BQU0sQ0FBVztRQUNqQixjQUFTLEdBQVQsU0FBUyxDQUF5QjtRQUNsQyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixtQkFBYyxHQUFkLGNBQWMsQ0FBMkI7UUFDekMsZ0JBQVcsR0FBWCxXQUFXLENBQXdCO1FBQ3BDLGNBQVMsR0FBVCxTQUFTLENBQXdDO1FBQ3hCLFNBQUksR0FBSixJQUFJLENBQXFCO1FBbkMzRCxrQkFBYSxHQUFHLElBQUksQ0FBQztRQUNyQixPQUFFLEdBQUcsRUFBRSxDQUFDO1FBRVIsYUFBUSxHQUFHLEVBQUUsQ0FBQztRQUNkLGtCQUFhLEdBQUcsRUFBRSxDQUFDO1FBRW5CLFNBQUksR0FBb0IsSUFBSSxlQUFlLEVBQUUsQ0FBQztRQUM5QyxpQkFBWSxHQUE4QixFQUFFLENBQUM7UUFJN0MsWUFBTyxHQUFjLEVBQUUsQ0FBQztRQUN4QixvQkFBZSxHQUFzQixFQUFFLENBQUM7UUFFeEMsbUJBQWMsR0FBbUIsY0FBYyxDQUFDLEdBQUcsQ0FBQztRQUNwRCxZQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2IsY0FBUyxHQUFHLEVBQUUsQ0FBQztRQUNmLGlCQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLGFBQVEsR0FBRyxFQUFFLENBQUM7UUFDZCxXQUFNLEdBQVcsRUFBRSxDQUFDO1FBQ3BCLGlCQUFZLEdBQTRCLHVCQUF1QixDQUFDLEtBQUssQ0FBQztRQWtCcEUsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUMxQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDOUIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzFDLENBQUM7SUFHRCxTQUFTLENBQUMsS0FBSztRQUNiLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxjQUFjLENBQUMsZ0JBQWdCLEVBQUU7WUFDbEQsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7U0FDekI7YUFDSSxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssY0FBYyxDQUFDLGVBQWUsRUFBRTtZQUN0RCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsdUJBQXVCLENBQUMsQ0FBQztTQUM5RzthQUNJLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxjQUFjLENBQUMsb0JBQW9CLEVBQUU7WUFDM0QsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQywyQkFBMkIsRUFBRSxJQUFJLENBQUMsQ0FBQztTQUMxRzthQUNJLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxjQUFjLENBQUMsaUJBQWlCLEVBQUU7WUFDeEQsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7U0FDM0I7YUFDSSxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssY0FBYyxDQUFDLGNBQWMsRUFBRTtZQUNyRCxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7U0FDeEI7YUFDSSxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssY0FBYyxDQUFDLGlCQUFpQixFQUFFO1lBQ3hELElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1NBQzFCO0lBQ0gsQ0FBQztJQUVLLFFBQVE7O1lBQ1osSUFBSSxDQUFDLFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUN0RixJQUFJLEdBQUcsRUFBRTtvQkFDUCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2lCQUMvQztZQUNILENBQUMsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLFlBQVksR0FBRyxNQUFNLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUM5QyxJQUFJLElBQUksQ0FBQyxFQUFFLEVBQUU7Z0JBQ1gsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2FBQ3ZEO1lBQ0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQzNCLElBQUksQ0FBQyxZQUFZLEVBQ2pCLElBQUksRUFDSixrQkFBa0IsQ0FBQyxVQUFVLEVBQzdCLElBQUksQ0FBQyxXQUFXLEVBQ2hCLENBQUMsRUFDRCxJQUFJLENBQUMsSUFBSSxDQUNWLENBQUM7WUFDRixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUN6QixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDbEIsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2xCLENBQUM7S0FBQTtJQUVELFVBQVU7UUFDUixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDaEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLEVBQUUsY0FBYyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztZQUN2RixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxjQUFjLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1NBQ3pGO0lBQ0gsQ0FBQztJQUVELGtCQUFrQjtRQUNoQixJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUU7WUFDeEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLEVBQUUsNEJBQTRCLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQztZQUNoSSxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSw0QkFBNEIsQ0FBQyxVQUFVLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7U0FDcEg7SUFDSCxDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyx1QkFBdUIsQ0FBQyxRQUFRLENBQUMsR0FBRyxjQUFjLENBQUM7UUFDdEUsSUFBSSxDQUFDLGFBQWEsQ0FBQyx1QkFBdUIsQ0FBQyxPQUFPLENBQUMsR0FBRyxjQUFjLENBQUM7UUFDckUsSUFBSSxDQUFDLGFBQWEsQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsR0FBRyxRQUFRLENBQUM7UUFDNUQsSUFBSSxDQUFDLGFBQWEsQ0FBQyx1QkFBdUIsQ0FBQyxNQUFNLENBQUMsR0FBRyxRQUFRLENBQUM7UUFDOUQsSUFBSSxDQUFDLGFBQWEsQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLLENBQUMsR0FBRyxjQUFjLENBQUM7SUFDckUsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsWUFBWSxHQUFHLHVCQUF1QixDQUFDLEtBQUssQ0FBQztRQUNsRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsdUJBQXVCLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDakUsSUFBSSxDQUFDLGNBQWMsR0FBRyxjQUFjLENBQUMsR0FBRyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxlQUFlLEdBQUcsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUM7UUFDekMsTUFBTSxZQUFZLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1FBQ3hFLE1BQU0sY0FBYyxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDN0QsTUFBTSxnQkFBZ0IsR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ2pFLElBQUksWUFBWSxFQUFFO1lBQ2hCLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFO2dCQUN2QixnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztnQkFDdkMsWUFBWSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO2dCQUNuQyxjQUFjLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUM7YUFDdkM7aUJBQU07Z0JBQ0wsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUM7Z0JBQ3hDLFlBQVksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQztnQkFDcEMsY0FBYyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDO2FBQ3ZDO1NBQ0Y7SUFDSCxDQUFDO0lBRUssWUFBWTs7WUFDaEIsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO2dCQUM3QixJQUFJLENBQUMsY0FBYztxQkFDaEIsZ0JBQWdCLEVBQUU7cUJBQ2xCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO3FCQUNsQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtvQkFDcEIsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUNsQixDQUFDLENBQUMsQ0FBQTtZQUNOLENBQUMsQ0FBQyxDQUFBO1FBQ0osQ0FBQztLQUFBO0lBRUssY0FBYyxDQUFDLEVBQVU7O1lBQzdCLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtnQkFDN0IsSUFBSSxDQUFDLGNBQWM7cUJBQ2hCLFdBQVcsQ0FBQyxFQUFFLENBQUM7cUJBQ2YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7cUJBQ2xDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO29CQUNwQixJQUFJLE1BQU0sRUFBRTt3QkFDVixPQUFPLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO3FCQUM3QjtnQkFDSCxDQUFDLENBQUMsQ0FBQztZQUNQLENBQUMsQ0FBQyxDQUFBO1FBQ0osQ0FBQztLQUFBO0lBRUssZ0JBQWdCLENBQUMsV0FBVzs7WUFDaEMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO2dCQUM3QixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDO2dCQUNoRCxJQUFJLENBQUMsSUFBSSxHQUFHO29CQUNWLEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsS0FBSztvQkFDeEMsV0FBVyxFQUFFLFdBQVc7b0JBQ3hCLFVBQVUsRUFBRSxLQUFLO29CQUNqQixZQUFZLEVBQUUsRUFBRTtpQkFDakIsQ0FBQTtnQkFFRCxJQUFJLENBQUMsY0FBYztxQkFDaEIsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7cUJBQ3hCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO3FCQUNsQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtvQkFDcEIsSUFBSSxNQUFNLEVBQUU7d0JBQ1YsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO3FCQUNqQjtnQkFDSCxDQUFDLENBQUMsQ0FBQztZQUNQLENBQUMsQ0FBQyxDQUFBO1FBQ0osQ0FBQztLQUFBO0lBRUssZUFBZSxDQUFDLEtBQVU7O1lBQzlCLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtnQkFDN0IsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFO29CQUN4QixNQUFNLFNBQVMsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUN2QyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3hCLENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO0tBQUE7SUFFSyxhQUFhOztZQUNqQixNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzNDLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUM5QixNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUM7WUFDbEUsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ25DLE1BQU0sRUFBRSxHQUFHLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ3BELE1BQU0sWUFBWSxHQUFHLHdCQUF3QixJQUFHLE1BQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQSxDQUFDO1lBQ2xGLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxFQUFFLFdBQVcsQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFDcEUsTUFBTSxNQUFNLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxrQkFBa0IsQ0FBQyxVQUFVLElBQUksRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLENBQUE7WUFDMUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDL0IsQ0FBQztLQUFBO0lBRUQsYUFBYTtRQUNYLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVELFVBQVU7UUFDUixJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztRQUM3QyxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQztRQUN2RCxJQUFJLElBQUksQ0FBQyxzQkFBc0IsSUFBSSw0QkFBNEIsQ0FBQyxpQkFBaUIsRUFBRTtZQUNqRixLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsMEJBQTBCLENBQUM7WUFDbEQsT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsa0NBQWtDLENBQUM7U0FDNUU7UUFDRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUN0RCxJQUFJLEtBQUssRUFBRTtnQkFDVCxJQUFJLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxPQUFPLEtBQUssSUFBSSxRQUFRLElBQUksS0FBSyxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsRUFBRTtvQkFDNUUsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7aUJBQ2xCO2FBQ0Y7UUFDSCxDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRCxzQkFBc0I7UUFDcEIsSUFBSSxDQUFDLHNCQUFzQixHQUFHLElBQUksQ0FBQyxjQUFjLENBQUM7UUFDbEQsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ2IsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGtDQUFrQyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUU7Z0JBQ3JJLElBQUksQ0FBQyxjQUFjLEdBQUcsQ0FBQyxDQUFDO1lBQzFCLENBQUMsQ0FBQyxDQUFDO1lBQ0gsT0FBTztTQUNSO1FBQ0QsUUFBUSxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQzNCLEtBQUssNEJBQTRCLENBQUMsaUJBQWlCO2dCQUNqRCxJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQy9CLE1BQU07WUFDUixLQUFLLDRCQUE0QixDQUFDLFVBQVU7Z0JBQzFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFBO2dCQUMzQixNQUFNO1NBQ1Q7SUFDSCxDQUFDO0lBRUQsb0JBQW9CO1FBQ2xCLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxjQUF1QjtRQUN4QyxNQUFNLElBQUksR0FBRyxJQUFJLG1CQUFtQixFQUFFLENBQUM7UUFDdkMsSUFBSSxDQUFDLGNBQWMsR0FBRyxjQUFjLENBQUM7UUFDckMsSUFBSSxDQUFDLGNBQWMsR0FBRyxDQUFDLGNBQWMsQ0FBQztRQUN0QyxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQywyQkFBMkIsRUFBRTtZQUNuRSxLQUFLLEVBQUUsT0FBTztZQUNkLE1BQU0sRUFBRSxPQUFPO1lBQ2YsSUFBSTtZQUNKLFlBQVksRUFBRSxJQUFJO1NBQ25CLENBQUMsQ0FBQztRQUNILGNBQWM7YUFDWCxXQUFXLEVBQUU7YUFDYixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQzthQUNsQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUNwQixJQUFJLE1BQU0sRUFBRTtnQkFDVixJQUFJLENBQUMsWUFBWSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUM7Z0JBQ2hDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDdEQsSUFBSSxNQUFNLENBQUMsSUFBSSxJQUFJLHVCQUF1QixDQUFDLFFBQVEsRUFBRTtvQkFDbkQsSUFBSSxDQUFDLFNBQVMsR0FBRyxHQUFHLE1BQU0sQ0FBQyxLQUFLLElBQUksTUFBTSxDQUFDLEVBQUUsR0FBRyxDQUFDO29CQUNqRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2lCQUNuQztxQkFDSTtvQkFDSCxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUM7b0JBQzFCLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFO3dCQUNuQixJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUM7cUJBQy9CO2lCQUNGO2dCQUNELElBQUksQ0FBQyxjQUFjLEdBQUcsY0FBYyxDQUFDLEdBQUcsQ0FBQztnQkFDekMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7YUFDN0I7WUFDRCxJQUFJLENBQUMsY0FBYyxHQUFHLENBQUMsQ0FBQztRQUMxQixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxvQkFBb0I7UUFDbEIsTUFBTSxJQUFJLEdBQUcsSUFBSSxtQkFBbUIsRUFBRSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUMxQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDOUIsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsdUJBQXVCLEVBQUU7WUFDL0QsS0FBSyxFQUFFLE9BQU87WUFDZCxNQUFNLEVBQUUsT0FBTztZQUNmLElBQUk7WUFDSixZQUFZLEVBQUUsSUFBSTtTQUNuQixDQUFDLENBQUM7UUFDSCxjQUFjO2FBQ1gsV0FBVyxFQUFFO2FBQ2IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7YUFDbEMsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDcEIsSUFBSSxNQUFNLEVBQUU7Z0JBQ1YsSUFBSSxDQUFDLFlBQVksR0FBRyx1QkFBdUIsQ0FBQyxLQUFLLENBQUM7Z0JBQ2xELElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQztnQkFDMUIsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUU7b0JBQ25CLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQztpQkFDL0I7Z0JBQ0QsSUFBSSxDQUFDLGNBQWMsR0FBRyxjQUFjLENBQUMsR0FBRyxDQUFDO2dCQUN6QyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQzthQUM3QjtZQUNELElBQUksQ0FBQyxjQUFjLEdBQUcsQ0FBQyxDQUFDO1FBQzFCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELGlCQUFpQixDQUFDLFVBQVU7UUFDMUIsSUFBSSxDQUFDLHVCQUF1QixHQUFHLElBQUksQ0FBQztRQUNwQyxJQUFJLENBQUMsV0FBVzthQUNiLHFCQUFxQixDQUFDLFVBQVUsQ0FBQzthQUNqQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQzthQUNsQyxTQUFTLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRTtZQUN2QixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxTQUFTLElBQUksRUFBRSxDQUFDLENBQUM7WUFDcEUsSUFBSSxDQUFDLHVCQUF1QixHQUFHLEtBQUssQ0FBQztRQUN2QyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxzQkFBc0IsQ0FBQyxjQUErQztRQUNwRSxNQUFNLE9BQU8sR0FBYyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLFdBQVcsRUFBRSxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUN4RixJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDWCxJQUFJLGNBQWMsRUFBRTtZQUNsQixjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7Z0JBQzNCLE1BQU0sR0FBRyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzFDLEdBQUcsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQztnQkFDM0IsTUFBTSxVQUFVLEdBQUcsR0FBRyxDQUFDO2dCQUN2QixNQUFNLEtBQUssR0FBRyxVQUFVLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ25ELElBQUksS0FBSyxFQUFFO29CQUNULHlDQUF5QztvQkFDekMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7d0JBQ3JDLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQzt3QkFDckIsSUFBSSxHQUFHLENBQUMsSUFBSSxFQUFFOzRCQUNaLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtnQ0FDcEMsT0FBTyxDQUFDLENBQUMsV0FBVyxLQUFLLEdBQUcsQ0FBQyxJQUFJLENBQUM7NEJBQ3BDLENBQUMsQ0FBQyxDQUFDOzRCQUNILElBQUksS0FBSyxHQUFHLENBQUMsRUFBRTtnQ0FDYixPQUFPLENBQUMsSUFBSSxDQUFDO29DQUNYLEtBQUssRUFBRSxFQUFFO29DQUNULFNBQVMsRUFBRSxHQUFHLENBQUMsSUFBSTtvQ0FDbkIsV0FBVyxFQUFFLEdBQUcsQ0FBQyxJQUFJO2lDQUN0QixDQUFDLENBQUM7Z0NBQ0gsRUFBRSxJQUFJLENBQUMsQ0FBQzs2QkFDVDt5QkFDRjtxQkFDRjtpQkFDRjtZQUNILENBQUMsQ0FBQyxDQUFDO1NBQ0o7UUFDRCxPQUFPLENBQUMsSUFBSSxDQUFDO1lBQ1gsS0FBSyxFQUFFLENBQUM7WUFDUixTQUFTLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsaUJBQWlCO1lBQ2xELFdBQVcsRUFBRSxVQUFVLENBQUMsVUFBVTtTQUNuQyxDQUFDLENBQUM7UUFDSCxPQUFPLENBQUMsSUFBSSxDQUFDO1lBQ1gsS0FBSyxFQUFFLENBQUM7WUFDUixTQUFTLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsdUJBQXVCO1lBQ3hELFdBQVcsRUFBRSxVQUFVLENBQUMsT0FBTztTQUNoQyxDQUFDLENBQUM7UUFDSCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRUQsYUFBYTtRQUNYLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLFlBQVksSUFBSSx1QkFBdUIsQ0FBQyxRQUFRLEVBQUU7WUFDMUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUNyQztJQUNILENBQUM7SUFFRCxTQUFTO1FBQ1AsTUFBTSxJQUFJLEdBQUcsSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUM7UUFDbEMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQzVCLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUN4QixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLElBQUksdUJBQXVCLENBQUMsS0FBSyxDQUFDO1FBQ3ZFLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDbEQsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDbEIsUUFBUSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3pCLEtBQUssdUJBQXVCLENBQUMsUUFBUTtnQkFDbkMsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLGlCQUFpQixDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO2dCQUMxRixJQUFJLENBQUMsT0FBTyxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxLQUFLLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDN0QsTUFBTTtZQUNSLEtBQUssdUJBQXVCLENBQUMsT0FBTztnQkFDbEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsS0FBSyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQzdELE1BQU07WUFDUixLQUFLLHVCQUF1QixDQUFDLElBQUk7Z0JBQy9CLElBQUksQ0FBQyxPQUFPLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUM3RCxNQUFNO1lBQ1IsS0FBSyx1QkFBdUIsQ0FBQyxNQUFNO2dCQUNqQyxJQUFJLENBQUMsT0FBTyxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxLQUFLLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDN0QsTUFBTTtTQUNUO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsZ0JBQWdCO1FBQ2QsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzQyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQ25ELElBQUksUUFBUSxHQUFHLElBQUksZUFBZSxFQUFFLENBQUM7UUFDckMsUUFBUSxHQUFHO1lBQ1QsRUFBRSxFQUFFLFVBQVUsQ0FBQyxLQUFLO1lBQ3BCLFdBQVcsRUFBRSxXQUFXO1lBQ3hCLFVBQVUsRUFBRSxJQUFJO1lBQ2hCLFlBQVksRUFBRSxFQUFFO1NBQ2pCLENBQUE7UUFDRCxJQUFJLElBQUksR0FBRyxJQUFJLHlCQUF5QixFQUFFLENBQUM7UUFDM0MsSUFBSSxDQUFDLFlBQVksR0FBRyxrQkFBa0IsQ0FBQyxVQUFVLENBQUM7UUFDbEQsSUFBSSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUM7UUFDckIsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMscUJBQXFCLEVBQUU7WUFDN0QsS0FBSyxFQUFFLE9BQU87WUFDZCxNQUFNLEVBQUUsT0FBTztZQUNmLElBQUk7WUFDSixZQUFZLEVBQUUsSUFBSTtTQUNuQixDQUFDLENBQUM7UUFDSCxjQUFjO2FBQ1gsV0FBVyxFQUFFO2FBQ2IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7YUFDbEMsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDcEIsSUFBSSxNQUFNLEVBQUU7Z0JBQ1YsTUFBTTthQUNQO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLE1BQU0sbUJBQW1CLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQ3pFLElBQUksbUJBQW1CLEVBQUU7WUFDdkIsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMzQyxJQUFJLEtBQUssRUFBRTtnQkFDVCxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDO2FBQ2pEO1lBQ0QsTUFBTSxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsR0FBRyxJQUFJLENBQUM7WUFDM0MsTUFBTSxDQUFDLGNBQWMsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUM5QyxNQUFNLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUN2QyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztTQUMxQjtJQUNILENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxLQUFhLEVBQUUsT0FBZTtRQUM3QyxNQUFNLElBQUksR0FBMEIsSUFBSSxxQkFBcUIsRUFBRSxDQUFDO1FBQ2hFLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBQ3ZCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLDJCQUEyQixFQUFFO1lBQzlELEtBQUssRUFBRSxPQUFPO1lBQ2QsU0FBUyxFQUFFLE9BQU87WUFDbEIsSUFBSTtTQUNMLENBQUMsQ0FBQztRQUNILFNBQVM7YUFDTixXQUFXLEVBQUU7YUFDYixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQzthQUNsQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUNwQixJQUFJLE1BQU0sRUFBRTthQUVYO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsSUFBSSxDQUFDLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDNUQsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2hCLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtZQUMzQixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQztZQUMxRCxNQUFNLGFBQWEsR0FBRyxDQUFDLFlBQVksRUFBRSxvQkFBb0IsRUFBRSx3QkFBd0IsRUFBRSxzQkFBc0IsRUFBRSx1QkFBdUIsQ0FBQyxDQUFDO1lBQ3RJLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxJQUFJLGFBQWEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFO2dCQUNqSCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO2FBQzlCO2lCQUNJO2dCQUNILElBQUksQ0FBQyxPQUFPLEdBQUcsVUFBVSxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUM7Z0JBQ3hDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUU7b0JBQ2xCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO29CQUNoQyxJQUFJLENBQUMsY0FBYyxHQUFHLFVBQVUsQ0FBQyxVQUFVLENBQUM7b0JBQzVDLElBQUksQ0FBQyxTQUFTLEdBQUcsVUFBVSxDQUFDLFNBQVMsQ0FBQztvQkFDdEMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7aUJBQzlCO2FBQ0Y7U0FDRjtJQUNILENBQUM7SUFFRCxXQUFXLENBQUMsTUFBeUI7UUFDbkMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQztRQUN2RCxJQUFJLE1BQU0sQ0FBQyxHQUFHLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNyRCxJQUFJLENBQUMsV0FBVyxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNwRDtJQUNILENBQUM7SUFFRCxZQUFZLENBQUMsR0FBVztRQUN0QixJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUU7WUFDVCxNQUFNLFNBQVMsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ25DLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUM5QyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ3RELElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ3JELElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLFlBQVksSUFBSSx1QkFBdUIsQ0FBQyxRQUFRLElBQUksU0FBUyxHQUFHLENBQUMsQ0FBQyxFQUFFO2dCQUM1RixJQUFJLENBQUMsWUFBWSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsU0FBUyxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQyxDQUFDO2dCQUN0RSxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQ3JDO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsYUFBYSxDQUFDLElBQTZCO1FBQ3pDLFFBQVEsSUFBSSxFQUFFO1lBQ1osS0FBSyx1QkFBdUIsQ0FBQyxRQUFRO2dCQUNuQyxPQUFPLGlCQUFpQixDQUFDLG9CQUFvQixDQUFDO1lBQ2hELEtBQUssdUJBQXVCLENBQUMsT0FBTztnQkFDbEMsT0FBTyxpQkFBaUIsQ0FBQyxtQkFBbUIsQ0FBQztZQUMvQyxLQUFLLHVCQUF1QixDQUFDLElBQUk7Z0JBQy9CLE9BQU8saUJBQWlCLENBQUMsZ0JBQWdCLENBQUM7WUFDNUMsS0FBSyx1QkFBdUIsQ0FBQyxNQUFNO2dCQUNqQyxPQUFPLGlCQUFpQixDQUFDLGtCQUFrQixDQUFDO1lBQzlDO2dCQUNFLE9BQU8sRUFBRSxDQUFDO1NBQ2I7SUFDSCxDQUFDO0lBRUQsU0FBUyxDQUFDLEdBQVcsRUFBRSxJQUE2QjtRQUNsRCxJQUFJLGVBQWUsR0FBRyxDQUFDLENBQUM7UUFDeEIsSUFBSSxnQkFBZ0IsR0FBRyxDQUFDLENBQUM7UUFDekIsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDO1FBQ1osSUFBSSxJQUFJLEdBQUcsQ0FBQyxDQUFDO1FBQ2IsSUFBSSxZQUFZLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFFbEQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUMxRCxNQUFNLFNBQVMsR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRTVDLElBQUksQ0FBQyxDQUFDLFVBQVUsRUFBRTtZQUNoQixlQUFlLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUVuRCxnQkFBZ0IsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDO1lBQ3JDLElBQUksR0FBRyxlQUFlLEdBQUcsZ0JBQWdCLENBQUM7WUFFMUMsSUFBSSxJQUFJLElBQUksdUJBQXVCLENBQUMsUUFBUSxJQUFJLFNBQVMsR0FBRyxDQUFDLENBQUMsRUFBRTtnQkFDOUQsRUFBRSxHQUFHLFlBQVksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLFNBQVMsR0FBRyxJQUFJLENBQUMsQ0FBQzthQUNsRDtpQkFDSTtnQkFDSCxNQUFNLE1BQU0sR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDdEQsSUFBSSxNQUFNLEdBQUcsQ0FBQyxFQUFFO29CQUNkLEVBQUUsR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO2lCQUNoQztxQkFDSTtvQkFDSCxFQUFFLEdBQUcsWUFBWSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7aUJBQ3hDO2FBQ0Y7U0FDRjtRQUVELElBQUksSUFBSSxJQUFJLHVCQUF1QixDQUFDLFFBQVEsRUFBRTtZQUM1QyxJQUFJO2dCQUNGLFFBQVEsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7YUFDbEI7WUFDRCxXQUFNO2dCQUNKLEVBQUUsR0FBRyxFQUFFLENBQUM7YUFDVDtTQUNGO1FBQ0QsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRUQsZUFBZSxDQUFDLEdBQVc7UUFDekIsSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUU7WUFDNUQsT0FBTyx1QkFBdUIsQ0FBQyxRQUFRLENBQUM7U0FDekM7YUFDSSxJQUFJLEdBQUcsQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRTtZQUNoRSxPQUFPLHVCQUF1QixDQUFDLE9BQU8sQ0FBQztTQUN4QzthQUNJLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFO1lBQzdELE9BQU8sdUJBQXVCLENBQUMsSUFBSSxDQUFDO1NBQ3JDO2FBQ0ksSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUU7WUFDL0QsT0FBTyx1QkFBdUIsQ0FBQyxNQUFNLENBQUM7U0FDdkM7UUFDRCxPQUFPLHVCQUF1QixDQUFDLEtBQUssQ0FBQztJQUN2QyxDQUFDO0lBRUQsb0JBQW9CO1FBQ2xCLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtZQUMzQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUM3QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUMzRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNqRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNoRTtJQUNILENBQUM7SUFFRCxlQUFlO1FBQ2IsTUFBTSxjQUFjLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUM5RCxJQUFJLGNBQWMsRUFBRTtZQUNsQixNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzNDLElBQUksS0FBSyxFQUFFO2dCQUNULEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO2dCQUMzQyxJQUFJLENBQUMsV0FBVyxDQUFDLHVCQUF1QixFQUFFLENBQUM7Z0JBQzNDLE1BQU0sQ0FBQyxjQUFjLENBQUMsb0JBQW9CLENBQUMsR0FBRyxLQUFLLENBQUM7YUFDckQ7WUFDRCxNQUFNLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxHQUFHLElBQUksQ0FBQztZQUMzQyxNQUFNLENBQUMsY0FBYyxDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQzlDLE1BQU0sQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1NBQzFCO0lBQ0gsQ0FBQztJQUVELGlCQUFpQixDQUFDLEtBQWEsRUFBRSxPQUFlLEVBQUUsU0FBa0IsRUFBRSxRQUFpQztRQUNyRyxNQUFNLElBQUksR0FBMEIsSUFBSSxxQkFBcUIsRUFBRSxDQUFDO1FBQ2hFLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1FBQzNCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLDJCQUEyQixFQUFFO1lBQzlELEtBQUssRUFBRSxPQUFPO1lBQ2QsU0FBUyxFQUFFLE9BQU87WUFDbEIsSUFBSTtTQUNMLENBQUMsQ0FBQztRQUNILFNBQVM7YUFDTixXQUFXLEVBQUU7YUFDYixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQzthQUNsQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUNwQixJQUFJLFFBQVEsRUFBRTtnQkFDWixRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7YUFDbEI7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxVQUFVLENBQUMsRUFBTyxFQUFFLEtBQVksRUFBRSxVQUFlO1FBQy9DLE1BQU0sR0FBRyxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFDM0UsR0FBRyxDQUFDLFdBQVcsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDO1FBQ3BDLEdBQUcsQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQztRQUNsQyxJQUFJLEtBQUssSUFBSSxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRTtZQUM5QixJQUFJLGNBQWMsR0FBRyxLQUFLLENBQUM7WUFDM0IsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQ3JDLElBQUksS0FBSyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDckIsSUFBSSxJQUFJLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUM7Z0JBQ3BELElBQUksSUFBSSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO2dCQUMzQyxJQUFJLFFBQVEsR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztnQkFDbkQsSUFBSSxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDO2dCQUNwQixJQUFJLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUM7Z0JBQ3BCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztnQkFDeEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO2dCQUMxQixLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDO2dCQUNyQixLQUFLLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDdEY7WUFDRCxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3hDLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7WUFFeEMsSUFBSSxpQkFBaUIsR0FBRyxDQUFDLENBQUM7WUFDMUIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQ3JDLElBQUksS0FBSyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDckIsSUFBSSxJQUFJLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQztnQkFDekIsSUFBSSxNQUFNLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQztnQkFDOUIsSUFBSSxHQUFHLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQztnQkFFMUIsSUFBSSxLQUFLLENBQUMsSUFBSSxJQUFJLFlBQVksSUFBSSxLQUFLLENBQUMsSUFBSSxJQUFJLG9CQUFvQixFQUFFO29CQUNwRSxpQkFBaUIsR0FBRyxDQUFDLEtBQUssQ0FBQyxlQUFlLEdBQUcsQ0FBQyxDQUFDLENBQUM7b0JBQ2hELGNBQWMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksWUFBWSxJQUFJLEtBQUssQ0FBQyxJQUFJLElBQUksb0JBQW9CLENBQUMsSUFBSSxLQUFLLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7aUJBQ3hIO2dCQUNELElBQUksQ0FBQyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtvQkFDN0IsSUFBSSxJQUFJLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUM7b0JBQ3BELElBQUksSUFBSSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO29CQUMzQyxJQUFJLFFBQVEsR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztvQkFDbkQsSUFBSSxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDO29CQUNwQixJQUFJLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUM7b0JBQ3BCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztvQkFDeEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO29CQUMxQixJQUFJLGlCQUFpQixHQUFHLENBQUMsS0FBSyxDQUFDLGVBQWUsR0FBRyxDQUFDLENBQUMsQ0FBQztvQkFFcEQsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7b0JBRW5CLElBQUksS0FBSyxDQUFDLDBCQUEwQixJQUFJLElBQUksRUFBRTt3QkFDNUMsRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxPQUFPLEdBQUcsaUJBQWlCLENBQUMsQ0FBQzt3QkFDNUMsRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQzt3QkFDeEIsRUFBRSxHQUFHLENBQUMsRUFBRSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDO3dCQUNqQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztxQkFDL0I7eUJBQU07d0JBQ0wsSUFBSSxVQUFVLEdBQUcsT0FBTyxFQUFFLFVBQVUsR0FBRyxPQUFPLENBQUM7d0JBQy9DLElBQUksT0FBTyxHQUFHLENBQUMsSUFBSSxjQUFjLEVBQUU7NEJBQ2pDLFVBQVUsR0FBRyxPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQzs0QkFDbkMsVUFBVSxHQUFHLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO3lCQUNwQzt3QkFDRCxJQUFJLE9BQU8sR0FBRyxDQUFDLElBQUksY0FBYyxFQUFFOzRCQUNqQyxVQUFVLEdBQUcsT0FBTyxHQUFHLGlCQUFpQixDQUFDO3lCQUMxQzt3QkFDRCxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxDQUFDO3dCQUMzQixFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxDQUFDO3dCQUMzQixFQUFFLEdBQUcsQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQzt3QkFDM0IsRUFBRSxHQUFHLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztxQkFDekI7b0JBQ0QsSUFBSSxNQUFNLEdBQUcsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQztvQkFDdkMsUUFBUSxLQUFLLENBQUMsSUFBSSxFQUFFO3dCQUNsQixLQUFLLGdCQUFnQixDQUFDO3dCQUN0QixLQUFLLGVBQWUsQ0FBQzt3QkFDckIsS0FBSyxhQUFhLENBQUM7d0JBQ25CLEtBQUssb0JBQW9CLENBQUM7d0JBQzFCLEtBQUssa0JBQWtCLENBQUM7d0JBQ3hCLEtBQUssaUJBQWlCLENBQUM7d0JBQ3ZCLEtBQUssbUJBQW1CLENBQUM7d0JBQ3pCLEtBQUssY0FBYzs0QkFDakIsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7Z0NBQ2IsS0FBSyxFQUFFLE1BQU07Z0NBQ2IsTUFBTSxFQUFFLE1BQU07Z0NBQ2QsSUFBSSxFQUFFLElBQUk7Z0NBQ1YsTUFBTSxFQUFFLE1BQU07Z0NBQ2QsR0FBRyxFQUFFLEdBQUc7NkJBQ1QsQ0FBQyxDQUFDOzRCQUNILE1BQU07d0JBQ1I7NEJBQ0UsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7Z0NBQ2IsS0FBSyxFQUFFLE1BQU07Z0NBQ2IsTUFBTSxFQUFFLE1BQU07Z0NBQ2QsSUFBSSxFQUFFLElBQUk7Z0NBQ1YsTUFBTSxFQUFFLE1BQU07Z0NBQ2QsR0FBRyxFQUFFLEdBQUc7NkJBQ1QsQ0FBQyxDQUFDOzRCQUNILE1BQU07cUJBQ1Q7aUJBQ0Y7YUFDRjtTQUNGO1FBQ0QsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBRUQsYUFBYSxDQUFDLE1BQU07UUFDbEIsSUFBSSxZQUFZLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUM7WUFDMUMsT0FBTyxDQUFDLENBQUMsSUFBSSxLQUFLLFlBQVk7bUJBQ3pCLENBQUMsQ0FBQyxJQUFJLElBQUksd0JBQXdCO21CQUNsQyxDQUFDLENBQUMsSUFBSSxJQUFJLHVCQUF1QjttQkFDakMsQ0FBQyxDQUFDLElBQUksSUFBSSxzQkFBc0IsQ0FBQTtRQUN2QyxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksUUFBUSxDQUFDO1FBQ2IsSUFBSSxTQUFTLENBQUM7UUFFZCxJQUFJLENBQUMsWUFBWSxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRTtZQUN6QyxRQUFRLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN4QyxTQUFTLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3ZCO2FBQU07WUFDTCxRQUFRLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM5QyxTQUFTLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQzdCO1FBRUQsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFlBQVksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDNUMsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNuRCxJQUFJLFNBQVMsR0FBRyxRQUFRLEVBQUU7Z0JBQ3hCLFFBQVEsR0FBRyxTQUFTLENBQUM7Z0JBQ3JCLFNBQVMsR0FBRyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDN0I7U0FDRjtRQUdELE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFFRCxZQUFZLENBQUMsS0FBSztRQUNoQixPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLGVBQWUsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQsWUFBWSxDQUFDLEtBQUs7UUFDaEIsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxlQUFlLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVELGFBQWEsQ0FBQyxNQUFNO1FBQ2xCLElBQUksWUFBWSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDO1lBQzFDLE9BQU8sQ0FBQyxDQUFDLElBQUksS0FBSyxZQUFZO21CQUN6QixDQUFDLENBQUMsSUFBSSxJQUFJLHdCQUF3QjttQkFDbEMsQ0FBQyxDQUFDLElBQUksSUFBSSx1QkFBdUI7bUJBQ2pDLENBQUMsQ0FBQyxJQUFJLElBQUksc0JBQXNCLENBQUE7UUFDdkMsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLFFBQVEsQ0FBQztRQUNiLElBQUksU0FBUyxDQUFDO1FBRWQsSUFBSSxDQUFDLFlBQVksSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUU7WUFDekMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQzVCLFNBQVMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDdkI7YUFBTTtZQUNMLFFBQVEsR0FBRyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUNsQyxTQUFTLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQzdCO1FBRUQsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFlBQVksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDNUMsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNuRCxJQUFJLFNBQVMsR0FBRyxRQUFRLEVBQUU7Z0JBQ3hCLFFBQVEsR0FBRyxTQUFTLENBQUM7Z0JBQ3JCLFNBQVMsR0FBRyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDN0I7U0FDRjtRQUNELE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFBQSxDQUFDOzs7WUFueEJILFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsVUFBVTtnQkFDcEIsa3VQQUFpRDs7YUFFbEQ7OztZQXBFUSxTQUFTO1lBRVQsdUJBQXVCO1lBV3ZCLFdBQVc7WUFEWCx5QkFBeUI7WUFVekIsc0JBQXNCO1lBdEJYLFlBQVk7WUFxQnZCLG1CQUFtQix1QkFzRnZCLE1BQU0sU0FBQyxlQUFlOzs7d0JBU3hCLFlBQVksU0FBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSG9zdExpc3RlbmVyLCBJbmplY3QsIE9uSW5pdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IE1hdERpYWxvZywgTWF0RGlhbG9nUmVmLCBNQVRfRElBTE9HX0RBVEEgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nXCI7XHJcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVMaWJyYXJ5U2VydmljZSB9IGZyb20gXCIuLi8uLi8uLi9zZXJ2aWNlcy90cmFuc2xhdGlvbi1yZWdpc3RyeS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IENLRWRpdG9yRXZlbnRDb25zdCB9IGZyb20gXCIuLi8uLi9jb21tb24vY29uc3RhbnRzL2NrZWRpdG9yRXZlbnQuY29uc3RhbnRcIjtcclxuaW1wb3J0IHsgRmxvd0NoYXJ0Q29uc3QgfSBmcm9tIFwiLi4vLi4vY29tbW9uL2NvbnN0YW50cy9ja2VkaXRvckZsb3djaGFydC5jb25zdFwiO1xyXG5pbXBvcnQgZ3VpZEhlbHBlciBmcm9tIFwiLi4vLi4vY29tbW9uL2hlbHBlci9ndWlkSGVscGVyXCI7XHJcbmltcG9ydCB7IFFNU0NLRWRpdG9yQnBtblRlbXBsYXRlIH0gZnJvbSBcIi4uLy4uL2NvbW1vbi9tb2RlbHMvcW1zLWNrZWRpdG9yLWJwbW4tdGVtcGxhdGUubW9kZWxcIjtcclxuaW1wb3J0IHsgUU1TQ0tFZGl0b3JCcG1uIH0gZnJvbSBcIi4uLy4uL2NvbW1vbi9tb2RlbHMvcW1zLWNrZWRpdG9yLWJwbW4ubW9kZWxcIjtcclxuaW1wb3J0IHsgUU1TQ0tFZGl0b3JEaWFsb2dEYXRhIH0gZnJvbSBcIi4uLy4uL2NvbW1vbi9tb2RlbHMvcW1zLWNrZWRpdG9yLWRpYWxvZy5tb2RlbFwiO1xyXG5pbXBvcnQgeyBRTVNDS0VkaXRvclNhdmVBc1RlbXBsYXRlIH0gZnJvbSBcIi4uLy4uL2NvbW1vbi9tb2RlbHMvcW1zLWNrZWRpdG9yLXNhdmUtYXMtdGVtcGxhdGUubW9kZWxcIjtcclxuaW1wb3J0IHsgUU1TQ0tFZGl0b3JDb25maXJtQ29tcG9uZW50IH0gZnJvbSBcIi4uLy4uL2NvbW1vbi9tb2R1bGUvY29uZmlybS9xbXMtY2tlZGl0b3ItY29uZmlybS5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgUU1TQ0tFZGl0b3JCYXNlQ29tcG9uZW50IH0gZnJvbSBcIi4uLy4uL3Ftcy1ja2VkaXRvci1iYXNlLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBRTVNDS0VkaXRvckJwbW5BcGlTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL3Ftcy1ja2VkaXRvci1icG1uLWFwaS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IEJwbW5TZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL3Ftcy1ja2VkaXRvci1icG1uLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgU2F2ZVRlbXBsYXRlQ29tcG9uZW50IH0gZnJvbSBcIi4vc2F2ZS10ZW1wbGF0ZS9zYXZlLXRlbXBsYXRlLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBUYXJnZXRUeXBlTmFtZSB9IGZyb20gJy4uLy4uL2NvbW1vbi9lbnVtcy90YXJnZXQtdHlwZS5lbnVtJztcclxuaW1wb3J0IHsgU2hhcGVGbG93Q2hhcnRDb25uZWN0aW9uVHlwZSB9IGZyb20gJy4uLy4uL2NvbW1vbi9lbnVtcy9zaGFwZS1mbG93LWNoYXJ0LWNvbm5lY3Rpb24tdHlwZSc7XHJcbmltcG9ydCB7IFFNU0NLRWRpdG9yUmVsYXRlZENvbXBvbmVudCB9IGZyb20gJy4uL3Ftcy1ja2VkaXRvci1yZWxhdGlvbi9xbXNja2VkaXRvci1yZWxhdGVkLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IExpbmtBdHRhY2htZW50Q29tcG9uZW50IH0gZnJvbSAnLi4vcW1zLWNrZWRpdG9yLWxpbmsvYXR0YWNobWVudHMvbGluay1hdHRhY2htZW50LmNvbXBvbmVudCc7XHJcbmltcG9ydCBRTVNDS0VkaXRvclBhcmFtdGVyIGZyb20gJy4uLy4uL2NvbW1vbi9tb2RlbHMvcW1zLWNrZWRpdG9yLXBhcmFtZXRlci5tb2RlbCc7XHJcbmltcG9ydCB7IFFNU0NLRWRpdG9yUmVsYXRpb24gfSBmcm9tICcuLi8uLi9jb21tb24vbW9kZWxzL3Ftcy1ja2VkaXRvci1yZWxhdGlvbi5tb2RlbCc7XHJcbmltcG9ydCB7IFFNU0NLRWRpdG9yQnBtbkRhdGEgfSBmcm9tICcuLi8uLi9tb2RlbHMvcW1zLWNrZWRpdG9yLWJwbW4tZGF0YS5tb2RlbCc7XHJcbmltcG9ydCB7IFFNU0NLRWRpdG9yTGlua1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9xbXMtY2tlZGl0b3ItbGluay5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUU1TQ0tFZGl0b3JEb2N1bWVudFR5cGUgfSBmcm9tIFwiLi4vLi4vY29tbW9uL2VudW1zL2RvY3VtZW50LXR5cGUuZW51bVwiO1xyXG5pbXBvcnQgeyBRTVNDS0VkaXRvckxpbmtBbmNob3JEb2N1bWVudCB9IGZyb20gXCIuLi8uLi9jb21tb24vbW9kZWxzL3Ftcy1ja2VkaXRvci1saW5rLWFuY2hvci1kb2N1bWVudC5tb2RlbFwiO1xyXG5pbXBvcnQgeyBMaW5rQW5jaG9yIH0gZnJvbSBcIi4uLy4uL2NvbW1vbi9lbnVtcy9saW5rLWFuY2hvci5lbnVtXCI7XHJcbmltcG9ydCB7IENLRWRpdG9yTGlua0NvbnN0IH0gZnJvbSAnLi4vLi4vY29tbW9uL2NvbnN0YW50cy9ja2VkaXRvckxpbmsuY29uc3RhbnQnO1xyXG5pbXBvcnQgeyBNYXRUYWJDaGFuZ2VFdmVudCB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC90YWJzXCI7XHJcblxyXG4vL1RPRE86IG1vdmUgdG8gY29tbW9uIGZvbGRlclxyXG5pbnRlcmZhY2UgSVRhcmdldCB7XHJcbiAgaWQ6IHN0cmluZztcclxuICBuYW1lOiBzdHJpbmc7XHJcbn1cclxuXHJcbmludGVyZmFjZSBJQ29ubmVjdGlvblR5cGUge1xyXG4gIGlkOiBudW1iZXI7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG59XHJcblxyXG4vL1RPRE86IG1vdmUgdG8gY29tbW9uIGZvbGRlclxyXG5pbnRlcmZhY2UgSUFuY2hvciB7XHJcbiAgdmFsdWU6IG51bWJlcjtcclxuICB2aWV3VmFsdWU6IHN0cmluZztcclxuICBhbmNob3JWYWx1ZTogc3RyaW5nO1xyXG59XHJcblxyXG5jbGFzcyBJTGluayB7XHJcbiAgdGFyZ2V0OiBUYXJnZXRUeXBlTmFtZTtcclxuICB1cmw6IHN0cmluZztcclxuICB0aXRsZTogc3RyaW5nO1xyXG4gIGRvY3VtZW50VHlwZTogUU1TQ0tFZGl0b3JEb2N1bWVudFR5cGU7XHJcbiAgaWNvbjogc3RyaW5nO1xyXG4gIGNvbnRlbnQ6IHN0cmluZztcclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIHRoaXMudGFyZ2V0ID0gVGFyZ2V0VHlwZU5hbWUubmV3O1xyXG4gICAgdGhpcy5kb2N1bWVudFR5cGUgPSBRTVNDS0VkaXRvckRvY3VtZW50VHlwZS5vdGhlcjtcclxuICAgIHRoaXMudXJsID0gJyc7XHJcbiAgICB0aGlzLnRpdGxlID0gJyc7XHJcbiAgICB0aGlzLmljb24gPSAnJztcclxuICAgIHRoaXMuY29udGVudCA9ICcnO1xyXG4gIH1cclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdxbXMtYnBtbicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3Ftcy1ja2VkaXRvci1icG1uLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9xbXMtY2tlZGl0b3ItYnBtbi5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBRTVNDS0VkaXRvckJwbW5Db21wb25lbnQgZXh0ZW5kcyBRTVNDS0VkaXRvckJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIExBTkc6IGFueTtcclxuICBqc29uQ29udGVudDogc3RyaW5nO1xyXG4gIGV4cGFuZGVkUGFuZWwgPSB0cnVlO1xyXG4gIGlkID0gJyc7XHJcbiAgbW9kdWxlOiBudW1iZXI7XHJcbiAgZW50aXR5SWQgPSAnJztcclxuICBlZGl0b3JDb250ZW50ID0gJyc7XHJcblxyXG4gIGJwbW46IFFNU0NLRWRpdG9yQnBtbiA9IG5ldyBRTVNDS0VkaXRvckJwbW4oKTtcclxuICBicG1uVGVtbGF0ZXM6IFFNU0NLRWRpdG9yQnBtblRlbXBsYXRlW10gPSBbXTtcclxuXHJcbiAgY29ubmVjdGlvblR5cGU6IFNoYXBlRmxvd0NoYXJ0Q29ubmVjdGlvblR5cGU7XHJcbiAgc2VsZWN0ZWRDb25uZWN0aW9uVHlwZTogU2hhcGVGbG93Q2hhcnRDb25uZWN0aW9uVHlwZTtcclxuICB0YXJnZXRzOiBJVGFyZ2V0W10gPSBbXTtcclxuICBjb25uZWN0aW9uVHlwZXM6IElDb25uZWN0aW9uVHlwZVtdID0gW107XHJcblxyXG4gIHNlbGVjdGVkVGFyZ2V0OiBUYXJnZXRUeXBlTmFtZSA9IFRhcmdldFR5cGVOYW1lLm5ldztcclxuICBsaW5rVXJsID0gJyc7XHJcbiAgbGlua1RpdGxlID0gJyc7XHJcbiAgYW5jaG9yQnlOYW1lID0gJyc7XHJcbiAgbGlua0ljb24gPSAnJztcclxuICBsaW5rSWQ6IHN0cmluZyA9ICcnO1xyXG4gIGRvY3VtZW50VHlwZTogUU1TQ0tFZGl0b3JEb2N1bWVudFR5cGUgPSBRTVNDS0VkaXRvckRvY3VtZW50VHlwZS5vdGhlcjtcclxuICBkb2N1bWVudEljb25zOiBhbnk7XHJcblxyXG4gIGxpbms6IElMaW5rO1xyXG4gIGRvY3VtZW50QW5jaG9yczogSUFuY2hvcltdO1xyXG4gIGlzTG9hZGluZ0RvY3VtZW50QW5jaG9yOiBib29sZWFuO1xyXG4gIHNlbGVjdGVkQ2VsbFZpZXc6IGFueTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGRpYWxvZzogTWF0RGlhbG9nLFxyXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZUxpYnJhcnlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBibXBuU2VydmljZTogQnBtblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGJwbW5BcGlTZXJ2aWNlOiBRTVNDS0VkaXRvckJwbW5BcGlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBsaW5rU2VydmljZTogUU1TQ0tFZGl0b3JMaW5rU2VydmljZSxcclxuICAgIHB1YmxpYyBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxRTVNDS0VkaXRvckJwbW5Db21wb25lbnQ+LFxyXG4gICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHB1YmxpYyBkYXRhOiBRTVNDS0VkaXRvckJwbW5EYXRhXHJcbiAgKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gICAgdGhpcy5pZCA9IGRhdGEuaWQ7XHJcbiAgICB0aGlzLm1vZHVsZSA9IGRhdGEubW9kdWxlO1xyXG4gICAgdGhpcy5lbnRpdHlJZCA9IGRhdGEuZW50aXR5SWQ7XHJcbiAgICB0aGlzLmVkaXRvckNvbnRlbnQgPSBkYXRhLmVkaXRvckNvbnRlbnQ7XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6bWVzc2FnZScsIFsnJGV2ZW50J10pXHJcbiAgb25NZXNzYWdlKGV2ZW50KSB7XHJcbiAgICBpZiAoZXZlbnQuZGF0YSA9PT0gRmxvd0NoYXJ0Q29uc3QuU0FWRV9BU19URU1QTEFURSkge1xyXG4gICAgICB0aGlzLm9uU2F2ZUFzVGVtcGxhdGUoKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGV2ZW50LmRhdGEgPT09IEZsb3dDaGFydENvbnN0LkRFTEVURV9URU1QTEFURSkge1xyXG4gICAgICB0aGlzLm9uRGVsZXRlVGVtcGxhdGUodGhpcy5MQU5HLkJQTU4uREVMRVRFX1RFTVBMQVRFLCB0aGlzLkxBTkcuUU1TQ0tFRElUT1JfTUVTU0FHRS5DT05GSVJNX0RFTEVURV9URU1QTEFURSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChldmVudC5kYXRhID09PSBGbG93Q2hhcnRDb25zdC5NVVNUX1NFTEVDVF9URU1QTEFURSkge1xyXG4gICAgICB0aGlzLnNob3dDb25maXJtRGlhbG9nKHRoaXMuTEFORy5CUE1OLlNFTEVDVF9URU1QTEFURSwgdGhpcy5MQU5HLkJQTU4uU0VMRUNUX1RFTVBMQVRFX0lORk9STUFUSU9OLCB0cnVlKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGV2ZW50LmRhdGEgPT09IEZsb3dDaGFydENvbnN0LkNIQU5HSU5HX1RFTVBMQVRFKSB7XHJcbiAgICAgIHRoaXMub25TZWxlY3RlZFRlbXBsYXRlKCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChldmVudC5kYXRhID09PSBGbG93Q2hhcnRDb25zdC5SRVNFVF9URU1QTEFURSkge1xyXG4gICAgICB0aGlzLm9uUmVzZXRUZW1wbGF0ZSgpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoZXZlbnQuZGF0YSA9PT0gRmxvd0NoYXJ0Q29uc3QuU0VMRUNURURfU0hBUEVfSUQpIHtcclxuICAgICAgdGhpcy5vblNlbGV0ZWRDZWxsVmlldygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLnRyYW5zbGF0ZS5nZXRMYW5ndWFnZVN1YmplY3QkLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YmNyaWJlKSkuc3Vic2NyaWJlKChyZXMpID0+IHtcclxuICAgICAgaWYgKHJlcykge1xyXG4gICAgICAgIHRoaXMuTEFORyA9IHRoaXMudHJhbnNsYXRlLmdldE9iamVjdExhbmcocmVzKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLmJwbW5UZW1sYXRlcyA9IGF3YWl0IHRoaXMuZ2V0VGVtcGxhdGVzKCk7XHJcbiAgICBpZiAodGhpcy5pZCkge1xyXG4gICAgICB0aGlzLmpzb25Db250ZW50ID0gYXdhaXQgdGhpcy5nZXRKc29uQ29udGVudCh0aGlzLmlkKTtcclxuICAgIH1cclxuICAgIHRoaXMuYm1wblNlcnZpY2UuYnVpbGREaWFncmFtKFxyXG4gICAgICB0aGlzLmJwbW5UZW1sYXRlcyxcclxuICAgICAgbnVsbCxcclxuICAgICAgQ0tFZGl0b3JFdmVudENvbnN0LlFNU0NLX0JQTU4sXHJcbiAgICAgIHRoaXMuanNvbkNvbnRlbnQsXHJcbiAgICAgIDEsXHJcbiAgICAgIHRoaXMuTEFOR1xyXG4gICAgKTtcclxuICAgIHRoaXMuaW5pdERvY3VtZW50SWNvbnMoKTtcclxuICAgIHRoaXMuaW5pdFRhcmdldCgpO1xyXG4gICAgdGhpcy5pbml0Q29ubmVjdGlvblR5cGUoKTtcclxuICAgIHRoaXMuaW5pdExpbmsoKTtcclxuICB9XHJcblxyXG4gIGluaXRUYXJnZXQoKSB7XHJcbiAgICBpZiAodGhpcy50YXJnZXRzKSB7XHJcbiAgICAgIHRoaXMudGFyZ2V0cy5wdXNoKHsgaWQ6IFRhcmdldFR5cGVOYW1lLm5ldywgbmFtZTogdGhpcy5MQU5HLlFNU0NLRURJVE9SLlRBUlRHRVRfTkVXIH0pO1xyXG4gICAgICB0aGlzLnRhcmdldHMucHVzaCh7IGlkOiBUYXJnZXRUeXBlTmFtZS5zYW1lLCBuYW1lOiB0aGlzLkxBTkcuUU1TQ0tFRElUT1IuVEFSR0VUX1NBTUUgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpbml0Q29ubmVjdGlvblR5cGUoKSB7XHJcbiAgICBpZiAodGhpcy5jb25uZWN0aW9uVHlwZXMpIHtcclxuICAgICAgdGhpcy5jb25uZWN0aW9uVHlwZXMucHVzaCh7IGlkOiBTaGFwZUZsb3dDaGFydENvbm5lY3Rpb25UeXBlLkRvY3VtZW50T3JQcm9jZXNzLCBuYW1lOiB0aGlzLkxBTkcuUU1TQ0tFRElUT1IuRE9DVU1FTlRfUFJPQ0VTUyB9KTtcclxuICAgICAgdGhpcy5jb25uZWN0aW9uVHlwZXMucHVzaCh7IGlkOiBTaGFwZUZsb3dDaGFydENvbm5lY3Rpb25UeXBlLkF0dGFjaG1lbnQsIG5hbWU6IHRoaXMuTEFORy5RTVNDS0VESVRPUi5BVFRBQ0hNRU5UIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaW5pdERvY3VtZW50SWNvbnMoKSB7XHJcbiAgICB0aGlzLmRvY3VtZW50SWNvbnMgPSB7fTtcclxuICAgIHRoaXMuZG9jdW1lbnRJY29uc1tRTVNDS0VkaXRvckRvY3VtZW50VHlwZS5kb2N1bWVudF0gPSAndGV4dF9zbmlwcGV0JztcclxuICAgIHRoaXMuZG9jdW1lbnRJY29uc1tRTVNDS0VkaXRvckRvY3VtZW50VHlwZS5wcm9jZXNzXSA9ICdhY2NvdW50X3RyZWUnO1xyXG4gICAgdGhpcy5kb2N1bWVudEljb25zW1FNU0NLRWRpdG9yRG9jdW1lbnRUeXBlLmFyZWFdID0gJ2ZvbGRlcic7XHJcbiAgICB0aGlzLmRvY3VtZW50SWNvbnNbUU1TQ0tFZGl0b3JEb2N1bWVudFR5cGUuZm9sZGVyXSA9ICdmb2xkZXInO1xyXG4gICAgdGhpcy5kb2N1bWVudEljb25zW1FNU0NLRWRpdG9yRG9jdW1lbnRUeXBlLm90aGVyXSA9ICd0ZXh0X3NuaXBwZXQnO1xyXG4gIH1cclxuXHJcbiAgaW5pdExpbmsoKSB7XHJcbiAgICB0aGlzLmxpbmsgPSBudWxsO1xyXG4gICAgdGhpcy5saW5rSWQgPSAnJztcclxuICAgIHRoaXMuZG9jdW1lbnRUeXBlID0gUU1TQ0tFZGl0b3JEb2N1bWVudFR5cGUub3RoZXI7XHJcbiAgICB0aGlzLmxpbmtJY29uID0gdGhpcy5kb2N1bWVudEljb25zW1FNU0NLRWRpdG9yRG9jdW1lbnRUeXBlLm90aGVyXVxyXG4gICAgdGhpcy5zZWxlY3RlZFRhcmdldCA9IFRhcmdldFR5cGVOYW1lLm5ldztcclxuICAgIHRoaXMuYW5jaG9yQnlOYW1lID0gJyc7XHJcbiAgICB0aGlzLmxpbmtUaXRsZSA9ICcnO1xyXG4gICAgdGhpcy5kb2N1bWVudEFuY2hvcnMgPSBbXTtcclxuICB9XHJcblxyXG4gIGV4cGFuZFBhbmVsKCkge1xyXG4gICAgdGhpcy5leHBhbmRlZFBhbmVsID0gIXRoaXMuZXhwYW5kZWRQYW5lbDtcclxuICAgIGNvbnN0IHBhbmVsU3RlbmNpbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwYW5lbC1zdGVuY2lsLWNvbnRhaW5lcicpO1xyXG4gICAgY29uc3QgcGFwZXJDb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGFwZXJwYW5lbCcpO1xyXG4gICAgY29uc3Qgc3RlbmNpbENvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzdGVuY2lscGFuZWwnKTtcclxuICAgIGlmIChwYW5lbFN0ZW5jaWwpIHtcclxuICAgICAgaWYgKCF0aGlzLmV4cGFuZGVkUGFuZWwpIHtcclxuICAgICAgICBzdGVuY2lsQ29udGFpbmVyLnN0eWxlLmhlaWdodCA9ICc1MHB4JztcclxuICAgICAgICBwYW5lbFN0ZW5jaWwuc3R5bGUuaGVpZ2h0ID0gJzUwcHgnO1xyXG4gICAgICAgIHBhcGVyQ29udGFpbmVyLnN0eWxlLmhlaWdodCA9ICc1MDBweCc7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgc3RlbmNpbENvbnRhaW5lci5zdHlsZS5oZWlnaHQgPSAnMTUwcHgnO1xyXG4gICAgICAgIHBhbmVsU3RlbmNpbC5zdHlsZS5oZWlnaHQgPSAnMTUwcHgnO1xyXG4gICAgICAgIHBhcGVyQ29udGFpbmVyLnN0eWxlLmhlaWdodCA9ICc0MDBweCc7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFzeW5jIGdldFRlbXBsYXRlcygpOiBQcm9taXNlPFFNU0NLRWRpdG9yQnBtblRlbXBsYXRlW10+IHtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xyXG4gICAgICB0aGlzLmJwbW5BcGlTZXJ2aWNlXHJcbiAgICAgICAgLmJwbW5HZXRUZW1wbGF0ZXMoKVxyXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJjcmliZSkpXHJcbiAgICAgICAgLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgICByZXNvbHZlKHJlc3VsdCk7XHJcbiAgICAgICAgfSlcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBhc3luYyBnZXRKc29uQ29udGVudChpZDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xyXG4gICAgICB0aGlzLmJwbW5BcGlTZXJ2aWNlXHJcbiAgICAgICAgLmdldEJwbW5CeUlkKGlkKVxyXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJjcmliZSkpXHJcbiAgICAgICAgLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgICAgICAgIHJlc29sdmUocmVzdWx0Lmpzb25Db250ZW50KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBhc3luYyBzYXZlSW1hZ2VDb250ZW50KGdyYXBoT2JqZWN0KSB7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcclxuICAgICAgY29uc3QganNvbkNvbnRlbnQgPSBKU09OLnN0cmluZ2lmeShncmFwaE9iamVjdCk7XHJcbiAgICAgIHRoaXMuYnBtbiA9IHtcclxuICAgICAgICBpZDogdGhpcy5pZCA/IHRoaXMuaWQgOiBndWlkSGVscGVyLmVtcHR5LFxyXG4gICAgICAgIGpzb25Db250ZW50OiBqc29uQ29udGVudCxcclxuICAgICAgICBpc1RlbXBsYXRlOiBmYWxzZSxcclxuICAgICAgICB0ZW1wbGF0ZU5hbWU6ICcnXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuYnBtbkFwaVNlcnZpY2VcclxuICAgICAgICAuYnBtbk1vZGlmeWluZyh0aGlzLmJwbW4pXHJcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YmNyaWJlKSlcclxuICAgICAgICAuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgICAgICAgcmVzb2x2ZShyZXN1bHQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGFzeW5jIGdldEltYWdlQ29udGVudChwYXBlcjogYW55KSB7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcclxuICAgICAgcGFwZXIudG9QTkcoKGltYWdlRGF0YSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGFyclN0cmluZyA9IGltYWdlRGF0YS5zcGxpdCgnLCcpO1xyXG4gICAgICAgIHJlc29sdmUoYXJyU3RyaW5nWzFdKTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGFzeW5jIG9uSW5zZXJ0SW1hZ2UoKSB7XHJcbiAgICBjb25zdCBncmFwaCA9IHdpbmRvd1tGbG93Q2hhcnRDb25zdC5HUkFQSF07XHJcbiAgICBjb25zdCBwYXBlciA9IHdpbmRvd1tgcGFwZXJgXTtcclxuICAgIGNvbnN0IGNsaWVudFJlY3QgPSBwYXBlci5wYXBlclRvTG9jYWxSZWN0KHBhcGVyLmdldENvbnRlbnRCQm94KCkpO1xyXG4gICAgY29uc3QgZ3JhcGhPYmplY3QgPSBncmFwaC50b0pTT04oKTtcclxuICAgIGNvbnN0IGlkID0gYXdhaXQgdGhpcy5zYXZlSW1hZ2VDb250ZW50KGdyYXBoT2JqZWN0KTtcclxuICAgIGNvbnN0IGltYWdlQ29udGVudCA9ICdkYXRhOmltYWdlL3BuZztiYXNlNjQsJyArIGF3YWl0IHRoaXMuZ2V0SW1hZ2VDb250ZW50KHBhcGVyKTtcclxuICAgIGNvbnN0IGltYWdlbWFwID0gdGhpcy50b0ltYWdlTWFwKGlkLCBncmFwaE9iamVjdC5jZWxscywgY2xpZW50UmVjdCk7XHJcbiAgICBjb25zdCByZXN1bHQgPSB7IGtleTogYCR7Q0tFZGl0b3JFdmVudENvbnN0LlFNU0NLX0JQTU59IyR7aWR9YCwgdmFsdWVzOiBpbWFnZUNvbnRlbnQsIGltYWdlbWFwOiBpbWFnZW1hcCB9XHJcbiAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZShyZXN1bHQpO1xyXG4gIH1cclxuXHJcbiAgb25DbG9zZURpYWxvZygpIHtcclxuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKCk7XHJcbiAgfVxyXG5cclxuICByZW1vdmVMaW5rKCkge1xyXG4gICAgbGV0IHRpdGxlID0gdGhpcy5MQU5HLkJQTU4uREVMRVRFX0FUVEFDSE1FTlQ7XHJcbiAgICBsZXQgY29udGVudCA9IHRoaXMuTEFORy5CUE1OLkNPTkZJUk1fREVMRVRFX0FUVEFDSE1FTlQ7XHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZENvbm5lY3Rpb25UeXBlID09IFNoYXBlRmxvd0NoYXJ0Q29ubmVjdGlvblR5cGUuRG9jdW1lbnRPclByb2Nlc3MpIHtcclxuICAgICAgdGl0bGUgPSB0aGlzLkxBTkcuQlBNTi5ERUxFVEVfRE9DVU1FTlRfT1JfUFJPQ0VTUztcclxuICAgICAgY29udGVudCA9IHRoaXMuTEFORy5RTVNDS0VESVRPUl9NRVNTQUdFLkNPTkZJUk1fREVMRVRFX0RPQ1VNRU5UX09SX1BST0NFU1M7XHJcbiAgICB9XHJcbiAgICB0aGlzLnNob3dDb25maXJtRGlhbG9nKHRpdGxlLCBjb250ZW50LCBmYWxzZSwgKHZhbHVlKSA9PiB7XHJcbiAgICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICAgIGlmICh2YWx1ZSA9PSB0cnVlIHx8ICh0eXBlb2YgdmFsdWUgPT0gJ29iamVjdCcgJiYgdmFsdWUuaXNDb25maXJtZWQgPT0gdHJ1ZSkpIHtcclxuICAgICAgICAgIHRoaXMubGluayA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgb25Db25uZWN0aW9uVHlwZUNoYW5nZSgpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRDb25uZWN0aW9uVHlwZSA9IHRoaXMuY29ubmVjdGlvblR5cGU7XHJcbiAgICBpZiAodGhpcy5saW5rKSB7XHJcbiAgICAgIHRoaXMuc2hvd0NvbmZpcm1EaWFsb2codGhpcy5MQU5HLlFNU0NLRURJVE9SLklORk9STUFUSU9OLCB0aGlzLkxBTkcuUU1TQ0tFRElUT1JfTUVTU0FHRS5DT05GSVJNX0RFTEVURV9FWElTVElOR19DT05ORUNUSU9OLCB0cnVlLCAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5jb25uZWN0aW9uVHlwZSA9IDA7XHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBzd2l0Y2ggKHRoaXMuY29ubmVjdGlvblR5cGUpIHtcclxuICAgICAgY2FzZSBTaGFwZUZsb3dDaGFydENvbm5lY3Rpb25UeXBlLkRvY3VtZW50T3JQcm9jZXNzOlxyXG4gICAgICAgIHRoaXMub3BlbkhhbmRib29rRGlhbG9nKGZhbHNlKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBTaGFwZUZsb3dDaGFydENvbm5lY3Rpb25UeXBlLkF0dGFjaG1lbnQ6XHJcbiAgICAgICAgdGhpcy5vcGVuQXR0YWNobWVudERpYWxvZygpXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkFuY2hvckJ5TmFtZUNoYW5nZSgpIHtcclxuICAgIHRoaXMudXBkYXRlQ2VsbFZpZXdWYWx1ZXMoKTtcclxuICB9XHJcblxyXG4gIG9wZW5IYW5kYm9va0RpYWxvZyhpc09ubHlEb2N1bWVudDogYm9vbGVhbikge1xyXG4gICAgY29uc3QgZGF0YSA9IG5ldyBRTVNDS0VkaXRvclJlbGF0aW9uKCk7XHJcbiAgICBkYXRhLmlzT25seURvY3VtZW50ID0gaXNPbmx5RG9jdW1lbnQ7XHJcbiAgICBkYXRhLmlzRW5hYmxlRm9sZGVyID0gIWlzT25seURvY3VtZW50O1xyXG4gICAgY29uc3QgZGlhbG9nVGVtcGxhdGUgPSB0aGlzLmRpYWxvZy5vcGVuKFFNU0NLRWRpdG9yUmVsYXRlZENvbXBvbmVudCwge1xyXG4gICAgICB3aWR0aDogJzY1MHB4JyxcclxuICAgICAgaGVpZ2h0OiAnNjUwcHgnLFxyXG4gICAgICBkYXRhLFxyXG4gICAgICBkaXNhYmxlQ2xvc2U6IHRydWVcclxuICAgIH0pO1xyXG4gICAgZGlhbG9nVGVtcGxhdGVcclxuICAgICAgLmFmdGVyQ2xvc2VkKClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YmNyaWJlKSlcclxuICAgICAgLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgdGhpcy5kb2N1bWVudFR5cGUgPSByZXN1bHQudHlwZTtcclxuICAgICAgICAgIHRoaXMubGlua0lkID0gdGhpcy5nZXRMaW5rSWQocmVzdWx0LnVybCwgcmVzdWx0LnR5cGUpO1xyXG4gICAgICAgICAgaWYgKHJlc3VsdC50eXBlID09IFFNU0NLRWRpdG9yRG9jdW1lbnRUeXBlLmRvY3VtZW50KSB7XHJcbiAgICAgICAgICAgIHRoaXMubGlua1RpdGxlID0gYCR7cmVzdWx0LnRpdGxlfSgke3Jlc3VsdC5pZH0pYDtcclxuICAgICAgICAgICAgdGhpcy5nZXRBbmNob3JEb2N1bWVudChyZXN1bHQuaWQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMubGlua1VybCA9IHJlc3VsdC51cmw7XHJcbiAgICAgICAgICAgIGlmICghdGhpcy5saW5rVGl0bGUpIHtcclxuICAgICAgICAgICAgICB0aGlzLmxpbmtUaXRsZSA9IHJlc3VsdC50aXRsZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFRhcmdldCA9IFRhcmdldFR5cGVOYW1lLm5ldztcclxuICAgICAgICAgIHRoaXMudXBkYXRlQ2VsbFZpZXdWYWx1ZXMoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jb25uZWN0aW9uVHlwZSA9IDA7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb3BlbkF0dGFjaG1lbnREaWFsb2coKSB7XHJcbiAgICBjb25zdCBkYXRhID0gbmV3IFFNU0NLRWRpdG9yUGFyYW10ZXIoKTtcclxuICAgIGRhdGEubW9kdWxlID0gdGhpcy5tb2R1bGU7XHJcbiAgICBkYXRhLmVudGl0eUlkID0gdGhpcy5lbnRpdHlJZDtcclxuICAgIGNvbnN0IGRpYWxvZ1RlbXBsYXRlID0gdGhpcy5kaWFsb2cub3BlbihMaW5rQXR0YWNobWVudENvbXBvbmVudCwge1xyXG4gICAgICB3aWR0aDogJzY1MHB4JyxcclxuICAgICAgaGVpZ2h0OiAnNjUwcHgnLFxyXG4gICAgICBkYXRhLFxyXG4gICAgICBkaXNhYmxlQ2xvc2U6IHRydWVcclxuICAgIH0pO1xyXG4gICAgZGlhbG9nVGVtcGxhdGVcclxuICAgICAgLmFmdGVyQ2xvc2VkKClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YmNyaWJlKSlcclxuICAgICAgLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgdGhpcy5kb2N1bWVudFR5cGUgPSBRTVNDS0VkaXRvckRvY3VtZW50VHlwZS5vdGhlcjtcclxuICAgICAgICAgIHRoaXMubGlua1VybCA9IHJlc3VsdC51cmw7XHJcbiAgICAgICAgICBpZiAoIXRoaXMubGlua1RpdGxlKSB7XHJcbiAgICAgICAgICAgIHRoaXMubGlua1RpdGxlID0gcmVzdWx0LnRpdGxlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFRhcmdldCA9IFRhcmdldFR5cGVOYW1lLm5ldztcclxuICAgICAgICAgIHRoaXMudXBkYXRlQ2VsbFZpZXdWYWx1ZXMoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jb25uZWN0aW9uVHlwZSA9IDA7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0QW5jaG9yRG9jdW1lbnQoZG9jdW1lbnRJZCkge1xyXG4gICAgdGhpcy5pc0xvYWRpbmdEb2N1bWVudEFuY2hvciA9IHRydWU7XHJcbiAgICB0aGlzLmxpbmtTZXJ2aWNlXHJcbiAgICAgIC5nZXRBbmNob3JEb2N1bWVudExpc3QoZG9jdW1lbnRJZClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YmNyaWJlKSlcclxuICAgICAgLnN1YnNjcmliZSgoZG9jdW1lbnRzKSA9PiB7XHJcbiAgICAgICAgdGhpcy5kb2N1bWVudEFuY2hvcnMgPSB0aGlzLmV4dHJhY3REb2N1bWVudEFuY2hvcnMoZG9jdW1lbnRzIHx8IFtdKTtcclxuICAgICAgICB0aGlzLmlzTG9hZGluZ0RvY3VtZW50QW5jaG9yID0gZmFsc2U7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZXh0cmFjdERvY3VtZW50QW5jaG9ycyhhbmNob3JEb2N1bWVudDogUU1TQ0tFZGl0b3JMaW5rQW5jaG9yRG9jdW1lbnRbXSkge1xyXG4gICAgY29uc3QgYW5jaG9yczogSUFuY2hvcltdID0gW3sgdmFsdWU6IDAsIHZpZXdWYWx1ZTogJycsIGFuY2hvclZhbHVlOiBMaW5rQW5jaG9yLkJsYW5rIH1dO1xyXG4gICAgbGV0IGlkID0gMztcclxuICAgIGlmIChhbmNob3JEb2N1bWVudCkge1xyXG4gICAgICBhbmNob3JEb2N1bWVudC5mb3JFYWNoKChlKSA9PiB7XHJcbiAgICAgICAgY29uc3QgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICAgICAgZGl2LmlubmVySFRNTCA9IGUucmljaFRleHQ7XHJcbiAgICAgICAgY29uc3QgZG9tQ29udGVudCA9IGRpdjtcclxuICAgICAgICBjb25zdCBhVGFncyA9IGRvbUNvbnRlbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2EnKTtcclxuICAgICAgICBpZiAoYVRhZ3MpIHtcclxuICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpwcmVmZXItZm9yLW9mXHJcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFUYWdzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHRhZyA9IGFUYWdzW2ldO1xyXG4gICAgICAgICAgICBpZiAodGFnLm5hbWUpIHtcclxuICAgICAgICAgICAgICBjb25zdCBpbmRleCA9IGFuY2hvcnMuZmluZEluZGV4KCh4KSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4geC5hbmNob3JWYWx1ZSA9PT0gdGFnLm5hbWU7XHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgaWYgKGluZGV4IDwgMCkge1xyXG4gICAgICAgICAgICAgICAgYW5jaG9ycy5wdXNoKHtcclxuICAgICAgICAgICAgICAgICAgdmFsdWU6IGlkLFxyXG4gICAgICAgICAgICAgICAgICB2aWV3VmFsdWU6IHRhZy5uYW1lLFxyXG4gICAgICAgICAgICAgICAgICBhbmNob3JWYWx1ZTogdGFnLm5hbWVcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgaWQgKz0gMTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgYW5jaG9ycy5wdXNoKHtcclxuICAgICAgdmFsdWU6IDEsXHJcbiAgICAgIHZpZXdWYWx1ZTogdGhpcy5MQU5HLlFNU0NLRURJVE9SLkFOQ0hPUl9BVFRBQ0hNRU5ULFxyXG4gICAgICBhbmNob3JWYWx1ZTogTGlua0FuY2hvci5BdHRhY2htZW50XHJcbiAgICB9KTtcclxuICAgIGFuY2hvcnMucHVzaCh7XHJcbiAgICAgIHZhbHVlOiAyLFxyXG4gICAgICB2aWV3VmFsdWU6IHRoaXMuTEFORy5RTVNDS0VESVRPUi5BTkNIT1JfUkVMQVRFRF9ET0NVTUVOVCxcclxuICAgICAgYW5jaG9yVmFsdWU6IExpbmtBbmNob3IuUmVsYXRlZFxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gYW5jaG9ycztcclxuICB9XHJcblxyXG4gIHJlbG9hZEFuY2hvcnMoKSB7XHJcbiAgICBpZiAoISF0aGlzLmxpbmtJZCAmJiB0aGlzLmRvY3VtZW50VHlwZSA9PSBRTVNDS0VkaXRvckRvY3VtZW50VHlwZS5kb2N1bWVudCkge1xyXG4gICAgICB0aGlzLmdldEFuY2hvckRvY3VtZW50KHRoaXMubGlua0lkKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGJ1aWxkTGluaygpIHtcclxuICAgIGNvbnN0IGxpbmsgPSBuZXcgSUxpbmsoKTtcclxuICAgIGxpbmsudGFyZ2V0ID0gdGhpcy5zZWxlY3RlZFRhcmdldDtcclxuICAgIGxpbmsudGl0bGUgPSB0aGlzLmxpbmtUaXRsZTtcclxuICAgIGxpbmsudXJsID0gdGhpcy5saW5rVXJsO1xyXG4gICAgbGluay5kb2N1bWVudFR5cGUgPSB0aGlzLmRvY3VtZW50VHlwZSB8fCBRTVNDS0VkaXRvckRvY3VtZW50VHlwZS5vdGhlcjtcclxuICAgIGxpbmsuaWNvbiA9IHRoaXMuZG9jdW1lbnRJY29uc1tsaW5rLmRvY3VtZW50VHlwZV07XHJcbiAgICBsaW5rLmNvbnRlbnQgPSAnJztcclxuICAgIHN3aXRjaCAodGhpcy5kb2N1bWVudFR5cGUpIHtcclxuICAgICAgY2FzZSBRTVNDS0VkaXRvckRvY3VtZW50VHlwZS5kb2N1bWVudDpcclxuICAgICAgICBsaW5rLnVybCA9IGAke0NLRWRpdG9yTGlua0NvbnN0LkRPQ1VNRU5UX1BBUlRJQUxfVVJMfSR7dGhpcy5saW5rSWR9IyR7dGhpcy5hbmNob3JCeU5hbWV9YDtcclxuICAgICAgICBsaW5rLmNvbnRlbnQgPSBgJHt0aGlzLkxBTkcuUU1TQ0tFRElUT1IuSUR9OiAke3RoaXMubGlua0lkfWA7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgUU1TQ0tFZGl0b3JEb2N1bWVudFR5cGUucHJvY2VzczpcclxuICAgICAgICBsaW5rLmNvbnRlbnQgPSBgJHt0aGlzLkxBTkcuUU1TQ0tFRElUT1IuSUR9OiAke3RoaXMubGlua0lkfWA7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgUU1TQ0tFZGl0b3JEb2N1bWVudFR5cGUuYXJlYTpcclxuICAgICAgICBsaW5rLmNvbnRlbnQgPSBgJHt0aGlzLkxBTkcuUU1TQ0tFRElUT1IuSUR9OiAke3RoaXMubGlua0lkfWA7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgUU1TQ0tFZGl0b3JEb2N1bWVudFR5cGUuZm9sZGVyOlxyXG4gICAgICAgIGxpbmsuY29udGVudCA9IGAke3RoaXMuTEFORy5RTVNDS0VESVRPUi5JRH06ICR7dGhpcy5saW5rSWR9YDtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIHJldHVybiBsaW5rO1xyXG4gIH1cclxuXHJcbiAgb25TYXZlQXNUZW1wbGF0ZSgpIHtcclxuICAgIGNvbnN0IGdyYXBoID0gd2luZG93W0Zsb3dDaGFydENvbnN0LkdSQVBIXTtcclxuICAgIGNvbnN0IGpzb25Db250ZW50ID0gSlNPTi5zdHJpbmdpZnkoZ3JhcGgudG9KU09OKCkpO1xyXG4gICAgbGV0IHRlbXBsYXRlID0gbmV3IFFNU0NLRWRpdG9yQnBtbigpO1xyXG4gICAgdGVtcGxhdGUgPSB7XHJcbiAgICAgIGlkOiBndWlkSGVscGVyLmVtcHR5LFxyXG4gICAgICBqc29uQ29udGVudDoganNvbkNvbnRlbnQsXHJcbiAgICAgIGlzVGVtcGxhdGU6IHRydWUsXHJcbiAgICAgIHRlbXBsYXRlTmFtZTogJydcclxuICAgIH1cclxuICAgIGxldCBkYXRhID0gbmV3IFFNU0NLRWRpdG9yU2F2ZUFzVGVtcGxhdGUoKTtcclxuICAgIGRhdGEudGVtcGxhdGVUeXBlID0gQ0tFZGl0b3JFdmVudENvbnN0LlFNU0NLX0JQTU47XHJcbiAgICBkYXRhLmJwbW4gPSB0ZW1wbGF0ZTtcclxuICAgIGNvbnN0IGRpYWxvZ1RlbXBsYXRlID0gdGhpcy5kaWFsb2cub3BlbihTYXZlVGVtcGxhdGVDb21wb25lbnQsIHtcclxuICAgICAgd2lkdGg6ICc0NTBweCcsXHJcbiAgICAgIGhlaWdodDogJzIyMHB4JyxcclxuICAgICAgZGF0YSxcclxuICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlXHJcbiAgICB9KTtcclxuICAgIGRpYWxvZ1RlbXBsYXRlXHJcbiAgICAgIC5hZnRlckNsb3NlZCgpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJjcmliZSkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgICAgIC8vIFRET1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBvblNlbGVjdGVkVGVtcGxhdGUoKSB7XHJcbiAgICBjb25zdCBzZWxlY3RlZEpzb25Db250ZW50ID0gd2luZG93W0Zsb3dDaGFydENvbnN0LlNFTEVDVEVEX0pTT05fQ09OVEVOVF07XHJcbiAgICBpZiAoc2VsZWN0ZWRKc29uQ29udGVudCkge1xyXG4gICAgICBjb25zdCBncmFwaCA9IHdpbmRvd1tGbG93Q2hhcnRDb25zdC5HUkFQSF07XHJcbiAgICAgIGlmIChncmFwaCkge1xyXG4gICAgICAgIGdyYXBoLmZyb21KU09OKEpTT04ucGFyc2Uoc2VsZWN0ZWRKc29uQ29udGVudCkpO1xyXG4gICAgICB9XHJcbiAgICAgIHdpbmRvd1tGbG93Q2hhcnRDb25zdC5NWV9DRUxMX1ZJRVddID0gbnVsbDtcclxuICAgICAgd2luZG93W0Zsb3dDaGFydENvbnN0LlNFTEVDVEVEX1NIQVBFX0lEXSA9ICcnO1xyXG4gICAgICB3aW5kb3dbRmxvd0NoYXJ0Q29uc3QuU0hBUEVfVFlQRV0gPSAnJztcclxuICAgICAgdGhpcy5vblNlbGV0ZWRDZWxsVmlldygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25EZWxldGVUZW1wbGF0ZSh0aXRsZTogc3RyaW5nLCBjb250ZW50OiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IGRhdGE6IFFNU0NLRWRpdG9yRGlhbG9nRGF0YSA9IG5ldyBRTVNDS0VkaXRvckRpYWxvZ0RhdGEoKTtcclxuICAgIGRhdGEudGl0bGUgPSB0aXRsZTtcclxuICAgIGRhdGEuY29udGVudCA9IGNvbnRlbnQ7XHJcbiAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKFFNU0NLRWRpdG9yQ29uZmlybUNvbXBvbmVudCwge1xyXG4gICAgICB3aWR0aDogJzUwMHB4JyxcclxuICAgICAgbWluSGVpZ2h0OiAnMTc1cHgnLFxyXG4gICAgICBkYXRhXHJcbiAgICB9KTtcclxuICAgIGRpYWxvZ1JlZlxyXG4gICAgICAuYWZ0ZXJDbG9zZWQoKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3ViY3JpYmUpKVxyXG4gICAgICAuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgICBpZiAocmVzdWx0KSB7XHJcblxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBvblNlbGV0ZWRDZWxsVmlldygpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRDZWxsVmlldyA9IHdpbmRvd1tGbG93Q2hhcnRDb25zdC5NWV9DRUxMX1ZJRVddO1xyXG4gICAgdGhpcy5pbml0TGluaygpO1xyXG4gICAgaWYgKCEhdGhpcy5zZWxlY3RlZENlbGxWaWV3KSB7XHJcbiAgICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSB0aGlzLnNlbGVjdGVkQ2VsbFZpZXcubW9kZWwuYXR0cmlidXRlcztcclxuICAgICAgY29uc3QgZXhjbHVkZWRUeXBlcyA9IFsnYnBtbjIuRmxvdycsICdicG1uMi5IZWFkZXJlZFBvb2wnLCAnYnBtbjIuQ29udmVyc2F0aW9uTGluaycsICdicG1uMi5Bbm5vdGF0aW9uTGluaycsICdicG1uMi5EYXRhQXNzb2NpYXRpb24nXTtcclxuICAgICAgaWYgKCFhdHRyaWJ1dGVzLnR5cGUgfHwgZXhjbHVkZWRUeXBlcy5maW5kSW5kZXgodHlwZSA9PiB0eXBlLnRvTG93ZXJDYXNlKCkgPT0gYXR0cmlidXRlcy50eXBlLnRvTG93ZXJDYXNlKCkpID4gLTEpIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkQ2VsbFZpZXcgPSBudWxsO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHRoaXMubGlua1VybCA9IGF0dHJpYnV0ZXMubGlua1VybCB8fCAnJztcclxuICAgICAgICBpZiAoISF0aGlzLmxpbmtVcmwpIHtcclxuICAgICAgICAgIHRoaXMucGFyc2VMaW5rVXJsKHRoaXMubGlua1VybCk7XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkVGFyZ2V0ID0gYXR0cmlidXRlcy5saW5rVGFyZ2V0O1xyXG4gICAgICAgICAgdGhpcy5saW5rVGl0bGUgPSBhdHRyaWJ1dGVzLmxpbmtUaXRsZTtcclxuICAgICAgICAgIHRoaXMubGluayA9IHRoaXMuYnVpbGRMaW5rKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvblRhYkNoYW5nZSgkZXZlbnQ6IE1hdFRhYkNoYW5nZUV2ZW50KSB7XHJcbiAgICB3aW5kb3dbRmxvd0NoYXJ0Q29uc3QuVEFCX05BTUVdID0gJGV2ZW50LnRhYi50ZXh0TGFiZWw7XHJcbiAgICBpZiAoJGV2ZW50LnRhYi50ZXh0TGFiZWwgPT0gdGhpcy5MQU5HLkJQTU4uUFJPUEVSVElFUykge1xyXG4gICAgICB0aGlzLmJtcG5TZXJ2aWNlLm9wZW5TaGFwZUZ1bmN0aW9uYWxpdHkodGhpcy5MQU5HKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHBhcnNlTGlua1VybCh1cmw6IHN0cmluZykge1xyXG4gICAgaWYgKCEhdXJsKSB7XHJcbiAgICAgIGNvbnN0IGhhc2hJbmRleCA9IHVybC5pbmRleE9mKCcjJyk7XHJcbiAgICAgIHRoaXMuZG9jdW1lbnRUeXBlID0gdGhpcy5nZXREb2N1bWVudFR5cGUodXJsKTtcclxuICAgICAgdGhpcy5saW5rSWNvbiA9IHRoaXMuZG9jdW1lbnRJY29uc1t0aGlzLmRvY3VtZW50VHlwZV07XHJcbiAgICAgIHRoaXMubGlua0lkID0gdGhpcy5nZXRMaW5rSWQodXJsLCB0aGlzLmRvY3VtZW50VHlwZSk7XHJcbiAgICAgIGlmICghIXRoaXMubGlua0lkICYmIHRoaXMuZG9jdW1lbnRUeXBlID09IFFNU0NLRWRpdG9yRG9jdW1lbnRUeXBlLmRvY3VtZW50ICYmIGhhc2hJbmRleCA+IC0xKSB7XHJcbiAgICAgICAgdGhpcy5hbmNob3JCeU5hbWUgPSB1cmwuc3Vic3RyKGhhc2hJbmRleCArIDEsIHVybC5sZW5ndGggLSBoYXNoSW5kZXgpO1xyXG4gICAgICAgIHRoaXMuZ2V0QW5jaG9yRG9jdW1lbnQodGhpcy5saW5rSWQpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRQYXJ0aWFsVXJsKHR5cGU6IFFNU0NLRWRpdG9yRG9jdW1lbnRUeXBlKSB7XHJcbiAgICBzd2l0Y2ggKHR5cGUpIHtcclxuICAgICAgY2FzZSBRTVNDS0VkaXRvckRvY3VtZW50VHlwZS5kb2N1bWVudDpcclxuICAgICAgICByZXR1cm4gQ0tFZGl0b3JMaW5rQ29uc3QuRE9DVU1FTlRfUEFSVElBTF9VUkw7XHJcbiAgICAgIGNhc2UgUU1TQ0tFZGl0b3JEb2N1bWVudFR5cGUucHJvY2VzczpcclxuICAgICAgICByZXR1cm4gQ0tFZGl0b3JMaW5rQ29uc3QuUFJPQ0VTU19QQVJUSUFMX1VSTDtcclxuICAgICAgY2FzZSBRTVNDS0VkaXRvckRvY3VtZW50VHlwZS5hcmVhOlxyXG4gICAgICAgIHJldHVybiBDS0VkaXRvckxpbmtDb25zdC5BUkVBX1BBUlRJQUxfVVJMO1xyXG4gICAgICBjYXNlIFFNU0NLRWRpdG9yRG9jdW1lbnRUeXBlLmZvbGRlcjpcclxuICAgICAgICByZXR1cm4gQ0tFZGl0b3JMaW5rQ29uc3QuRk9MREVSX1BBUlRJQUxfVVJMO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiAnJztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldExpbmtJZCh1cmw6IHN0cmluZywgdHlwZTogUU1TQ0tFZGl0b3JEb2N1bWVudFR5cGUpIHtcclxuICAgIGxldCBwYXJ0aWFsVXJsSW5kZXggPSAwO1xyXG4gICAgbGV0IHBhcnRpYWxVcmxMZW5ndGggPSAwO1xyXG4gICAgbGV0IGlkID0gJyc7XHJcbiAgICBsZXQgZnJvbSA9IDA7XHJcbiAgICBsZXQgdXJsTG93ZXJDYXNlID0gISF1cmwgPyB1cmwudG9Mb3dlckNhc2UoKSA6ICcnO1xyXG5cclxuICAgIGNvbnN0IHBhcnRpYWxVcmwgPSB0aGlzLmdldFBhcnRpYWxVcmwodHlwZSkudG9Mb3dlckNhc2UoKTtcclxuICAgIGNvbnN0IGhhc2hJbmRleCA9IHVybExvd2VyQ2FzZS5pbmRleE9mKCcjJyk7XHJcblxyXG4gICAgaWYgKCEhcGFydGlhbFVybCkge1xyXG4gICAgICBwYXJ0aWFsVXJsSW5kZXggPSB1cmxMb3dlckNhc2UuaW5kZXhPZihwYXJ0aWFsVXJsKTtcclxuXHJcbiAgICAgIHBhcnRpYWxVcmxMZW5ndGggPSBwYXJ0aWFsVXJsLmxlbmd0aDtcclxuICAgICAgZnJvbSA9IHBhcnRpYWxVcmxJbmRleCArIHBhcnRpYWxVcmxMZW5ndGg7XHJcblxyXG4gICAgICBpZiAodHlwZSA9PSBRTVNDS0VkaXRvckRvY3VtZW50VHlwZS5kb2N1bWVudCAmJiBoYXNoSW5kZXggPiAtMSkge1xyXG4gICAgICAgIGlkID0gdXJsTG93ZXJDYXNlLnN1YnN0cihmcm9tLCBoYXNoSW5kZXggLSBmcm9tKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBjb25zdCBsZW5ndGggPSB1cmxMb3dlckNhc2Uuc3Vic3RyKGZyb20pLmluZGV4T2YoJy8nKTtcclxuICAgICAgICBpZiAobGVuZ3RoIDwgMCkge1xyXG4gICAgICAgICAgaWQgPSB1cmxMb3dlckNhc2Uuc3Vic3RyKGZyb20pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIGlkID0gdXJsTG93ZXJDYXNlLnN1YnN0cihmcm9tLCBsZW5ndGgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmICh0eXBlID09IFFNU0NLRWRpdG9yRG9jdW1lbnRUeXBlLmRvY3VtZW50KSB7XHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgcGFyc2VJbnQoaWQsIDEwKTtcclxuICAgICAgfVxyXG4gICAgICBjYXRjaCB7XHJcbiAgICAgICAgaWQgPSAnJztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGlkO1xyXG4gIH1cclxuXHJcbiAgZ2V0RG9jdW1lbnRUeXBlKHVybDogc3RyaW5nKSB7XHJcbiAgICBpZiAodXJsLmluZGV4T2YoQ0tFZGl0b3JMaW5rQ29uc3QuRE9DVU1FTlRfUEFSVElBTF9VUkwpID4gLTEpIHtcclxuICAgICAgcmV0dXJuIFFNU0NLRWRpdG9yRG9jdW1lbnRUeXBlLmRvY3VtZW50O1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAodXJsLmluZGV4T2YoQ0tFZGl0b3JMaW5rQ29uc3QuUFJPQ0VTU19QQVJUSUFMX1VSTCkgPiAtMSkge1xyXG4gICAgICByZXR1cm4gUU1TQ0tFZGl0b3JEb2N1bWVudFR5cGUucHJvY2VzcztcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHVybC5pbmRleE9mKENLRWRpdG9yTGlua0NvbnN0LkFSRUFfUEFSVElBTF9VUkwpID4gLTEpIHtcclxuICAgICAgcmV0dXJuIFFNU0NLRWRpdG9yRG9jdW1lbnRUeXBlLmFyZWE7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICh1cmwuaW5kZXhPZihDS0VkaXRvckxpbmtDb25zdC5GT0xERVJfUEFSVElBTF9VUkwpID4gLTEpIHtcclxuICAgICAgcmV0dXJuIFFNU0NLRWRpdG9yRG9jdW1lbnRUeXBlLmZvbGRlcjtcclxuICAgIH1cclxuICAgIHJldHVybiBRTVNDS0VkaXRvckRvY3VtZW50VHlwZS5vdGhlcjtcclxuICB9XHJcblxyXG4gIHVwZGF0ZUNlbGxWaWV3VmFsdWVzKCkge1xyXG4gICAgaWYgKCEhdGhpcy5zZWxlY3RlZENlbGxWaWV3KSB7XHJcbiAgICAgIHRoaXMubGluayA9IHRoaXMuYnVpbGRMaW5rKCk7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRDZWxsVmlldy5tb2RlbC5wcm9wKCdsaW5rVXJsJywgdGhpcy5saW5rLnVybCk7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRDZWxsVmlldy5tb2RlbC5wcm9wKCdsaW5rVGFyZ2V0JywgdGhpcy5saW5rLnRhcmdldCk7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRDZWxsVmlldy5tb2RlbC5wcm9wKCdsaW5rVGl0bGUnLCB0aGlzLmxpbmsudGl0bGUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25SZXNldFRlbXBsYXRlKCkge1xyXG4gICAgY29uc3Qgb2dySnNvbkNvbnRlbnQgPSB3aW5kb3dbRmxvd0NoYXJ0Q29uc3QuT1JHX0pTT05DT05URU5UXTtcclxuICAgIGlmIChvZ3JKc29uQ29udGVudCkge1xyXG4gICAgICBjb25zdCBncmFwaCA9IHdpbmRvd1tGbG93Q2hhcnRDb25zdC5HUkFQSF07XHJcbiAgICAgIGlmIChncmFwaCkge1xyXG4gICAgICAgIGdyYXBoLmZyb21KU09OKEpTT04ucGFyc2Uob2dySnNvbkNvbnRlbnQpKTtcclxuICAgICAgICB0aGlzLmJtcG5TZXJ2aWNlLnNldERlZmF1bHRTZWxlY3RlZFZhbHVlKCk7XHJcbiAgICAgICAgd2luZG93W0Zsb3dDaGFydENvbnN0LklTX1NFTEVDVEVEX1RFTVBMQVRFXSA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICAgIHdpbmRvd1tGbG93Q2hhcnRDb25zdC5NWV9DRUxMX1ZJRVddID0gbnVsbDtcclxuICAgICAgd2luZG93W0Zsb3dDaGFydENvbnN0LlNFTEVDVEVEX1NIQVBFX0lEXSA9ICcnO1xyXG4gICAgICB3aW5kb3dbRmxvd0NoYXJ0Q29uc3QuU0hBUEVfVFlQRV0gPSAnJztcclxuICAgICAgdGhpcy5vblNlbGV0ZWRDZWxsVmlldygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2hvd0NvbmZpcm1EaWFsb2codGl0bGU6IHN0cmluZywgY29udGVudDogc3RyaW5nLCBpc01lc3NhZ2U6IGJvb2xlYW4sIGNhbGxiYWNrPzogKHJlc3VsdD86IGFueSkgPT4gdm9pZCkge1xyXG4gICAgY29uc3QgZGF0YTogUU1TQ0tFZGl0b3JEaWFsb2dEYXRhID0gbmV3IFFNU0NLRWRpdG9yRGlhbG9nRGF0YSgpO1xyXG4gICAgZGF0YS50aXRsZSA9IHRpdGxlO1xyXG4gICAgZGF0YS5jb250ZW50ID0gY29udGVudDtcclxuICAgIGRhdGEuaXNNZXNzYWdlID0gaXNNZXNzYWdlO1xyXG4gICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihRTVNDS0VkaXRvckNvbmZpcm1Db21wb25lbnQsIHtcclxuICAgICAgd2lkdGg6ICc1MDBweCcsXHJcbiAgICAgIG1pbkhlaWdodDogJzE3NXB4JyxcclxuICAgICAgZGF0YVxyXG4gICAgfSk7XHJcbiAgICBkaWFsb2dSZWZcclxuICAgICAgLmFmdGVyQ2xvc2VkKClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YmNyaWJlKSlcclxuICAgICAgLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgaWYgKGNhbGxiYWNrKSB7XHJcbiAgICAgICAgICBjYWxsYmFjayhyZXN1bHQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICB0b0ltYWdlTWFwKGlkOiBhbnksIGNlbGxzOiBhbnlbXSwgY2xpZW50UmVjdDogYW55KSB7XHJcbiAgICBjb25zdCBtYXAgPSB7IG5hbWU6IGlkLCBpZDogaWQsIGFyZWFzOiBbXSwgaW1hZ2VIZWlnaHQ6IDAsIGltYWdlV2lkdGg6IDAgfTtcclxuICAgIG1hcC5pbWFnZUhlaWdodCA9IGNsaWVudFJlY3QuaGVpZ2h0O1xyXG4gICAgbWFwLmltYWdlV2lkdGggPSBjbGllbnRSZWN0LndpZHRoO1xyXG4gICAgaWYgKGNlbGxzICYmIGNlbGxzLmxlbmd0aCAhPSAwKSB7XHJcbiAgICAgIHZhciBpc1ZlcnRpY2FsUG9vbCA9IGZhbHNlO1xyXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNlbGxzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgbGV0IHNoYXBlID0gY2VsbHNbaV07XHJcbiAgICAgICAgbGV0IHNpemUgPSBzaGFwZVsnc2l6ZSddIHx8IHsgd2lkdGg6IDAsIGhlaWdodDogMCB9O1xyXG4gICAgICAgIGxldCBiYm94ID0gc2hhcGVbJ2Jib3gnXSB8fCB7IHg6IDAsIHk6IDAgfTtcclxuICAgICAgICBsZXQgcG9zaXRpb24gPSBzaGFwZVsncG9zaXRpb24nXSB8fCB7IHg6IDAsIHk6IDAgfTtcclxuICAgICAgICBiYm94LnggPSBwb3NpdGlvbi54O1xyXG4gICAgICAgIGJib3gueSA9IHBvc2l0aW9uLnk7XHJcbiAgICAgICAgYmJveC53aWR0aCA9IHNpemUud2lkdGg7XHJcbiAgICAgICAgYmJveC5oZWlnaHQgPSBzaXplLmhlaWdodDtcclxuICAgICAgICBzaGFwZVsnYmJveCddID0gYmJveDtcclxuICAgICAgICBzaGFwZVsnYWRkaXRpb25hbFdpZHRoJ10gPSAoYmJveC53aWR0aCA+IHNpemUud2lkdGgpID8gKGJib3gud2lkdGggLSBzaXplLndpZHRoKSA6IDA7XHJcbiAgICAgIH1cclxuICAgICAgdmFyIG9mZnNldFggPSB0aGlzLmdldE1pblhPZmZzZXQoY2VsbHMpO1xyXG4gICAgICB2YXIgb2Zmc2V0WSA9IHRoaXMuZ2V0TWluWU9mZnNldChjZWxscyk7XHJcblxyXG4gICAgICB2YXIgYWRkaXRpb25hbE9mZnNldFkgPSAwO1xyXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNlbGxzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgbGV0IHNoYXBlID0gY2VsbHNbaV07XHJcbiAgICAgICAgbGV0IGhyZWYgPSBzaGFwZS5saW5rVXJsO1xyXG4gICAgICAgIGxldCB0YXJnZXQgPSBzaGFwZS5saW5rVGFyZ2V0O1xyXG4gICAgICAgIGxldCBhbHQgPSBzaGFwZS5saW5rVGl0bGU7XHJcblxyXG4gICAgICAgIGlmIChzaGFwZS50eXBlID09ICdicG1uMi5Qb29sJyB8fCBzaGFwZS50eXBlID09ICdicG1uMi5IZWFkZXJlZFBvb2wnKSB7XHJcbiAgICAgICAgICBhZGRpdGlvbmFsT2Zmc2V0WSA9IChzaGFwZS5hZGRpdGlvbmFsV2lkdGggLyAyKTtcclxuICAgICAgICAgIGlzVmVydGljYWxQb29sID0gKHNoYXBlLnR5cGUgPT0gJ2JwbW4yLlBvb2wnIHx8IHNoYXBlLnR5cGUgPT0gJ2JwbW4yLkhlYWRlcmVkUG9vbCcpICYmIHNoYXBlLmFuZ2xlICE9IDAgPyB0cnVlIDogZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghIWhyZWYgJiYgaHJlZi5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICB2YXIgc2l6ZSA9IHNoYXBlWydzaXplJ10gfHwgeyB3aWR0aDogMCwgaGVpZ2h0OiAwIH07XHJcbiAgICAgICAgICB2YXIgYmJveCA9IHNoYXBlWydiYm94J10gfHwgeyB4OiAwLCB5OiAwIH07XHJcbiAgICAgICAgICB2YXIgcG9zaXRpb24gPSBzaGFwZVsncG9zaXRpb24nXSB8fCB7IHg6IDAsIHk6IDAgfTtcclxuICAgICAgICAgIGJib3gueCA9IHBvc2l0aW9uLng7XHJcbiAgICAgICAgICBiYm94LnkgPSBwb3NpdGlvbi55O1xyXG4gICAgICAgICAgYmJveC53aWR0aCA9IHNpemUud2lkdGg7XHJcbiAgICAgICAgICBiYm94LmhlaWdodCA9IHNpemUuaGVpZ2h0O1xyXG4gICAgICAgICAgdmFyIGFkZGl0aW9uYWxPZmZzZXRYID0gKHNoYXBlLmFkZGl0aW9uYWxXaWR0aCAvIDIpO1xyXG5cclxuICAgICAgICAgIHZhciB4MSwgeTEsIHgyLCB5MjtcclxuXHJcbiAgICAgICAgICBpZiAoc2hhcGUuaW5jbHVkZVRleHRJbkNsaWNrYWJsZUFyZWEgPT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICB4MSA9IChiYm94LnggLSBvZmZzZXRYIC0gYWRkaXRpb25hbE9mZnNldFgpO1xyXG4gICAgICAgICAgICB5MSA9IChiYm94LnkgLSBvZmZzZXRZKTtcclxuICAgICAgICAgICAgeDIgPSAoeDEgKyBzaGFwZS5iYm94LndpZHRoIC0gMSk7XHJcbiAgICAgICAgICAgIHkyID0gKHkxICsgc2hhcGUuYmJveC5oZWlnaHQpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdmFyIHRyYW5zZm9ybVggPSBvZmZzZXRYLCB0cmFuc2Zvcm1ZID0gb2Zmc2V0WTtcclxuICAgICAgICAgICAgaWYgKG9mZnNldFggPCAwICYmIGlzVmVydGljYWxQb29sKSB7XHJcbiAgICAgICAgICAgICAgdHJhbnNmb3JtWCA9IG9mZnNldFggKyBzaXplLmhlaWdodDtcclxuICAgICAgICAgICAgICB0cmFuc2Zvcm1ZID0gb2Zmc2V0WSAtIHNpemUuaGVpZ2h0O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChvZmZzZXRZIDwgMCAmJiBpc1ZlcnRpY2FsUG9vbCkge1xyXG4gICAgICAgICAgICAgIHRyYW5zZm9ybVkgPSBvZmZzZXRZICsgYWRkaXRpb25hbE9mZnNldFk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgeDEgPSAoYmJveC54IC0gdHJhbnNmb3JtWCk7XHJcbiAgICAgICAgICAgIHkxID0gKGJib3gueSAtIHRyYW5zZm9ybVkpO1xyXG4gICAgICAgICAgICB4MiA9ICh4MSArIHNpemUud2lkdGggLSAxKTtcclxuICAgICAgICAgICAgeTIgPSAoeTEgKyBzaXplLmhlaWdodCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBsZXQgY29vcmRzID0gYCR7eDF9LCR7eTF9LCR7eDJ9LCR7eTJ9YDtcclxuICAgICAgICAgIHN3aXRjaCAoc2hhcGUudHlwZSkge1xyXG4gICAgICAgICAgICBjYXNlICdicG1uMi5BY3Rpdml0eSc6XHJcbiAgICAgICAgICAgIGNhc2UgJ2JwbW4yLkdhdGV3YXknOlxyXG4gICAgICAgICAgICBjYXNlICdicG1uMi5FdmVudCc6XHJcbiAgICAgICAgICAgIGNhc2UgJ2JwbW4yLkNvbnZlcnNhdGlvbic6XHJcbiAgICAgICAgICAgIGNhc2UgJ2JwbW4yLkRhdGFPYmplY3QnOlxyXG4gICAgICAgICAgICBjYXNlICdicG1uMi5EYXRhU3RvcmUnOlxyXG4gICAgICAgICAgICBjYXNlICdicG1uLkNob3Jlb2dyYXBoeSc6XHJcbiAgICAgICAgICAgIGNhc2UgJ2JwbW4uTWVzc2FnZSc6XHJcbiAgICAgICAgICAgICAgbWFwLmFyZWFzLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgc2hhcGU6ICdyZWN0JyxcclxuICAgICAgICAgICAgICAgIGNvb3JkczogY29vcmRzLFxyXG4gICAgICAgICAgICAgICAgaHJlZjogaHJlZixcclxuICAgICAgICAgICAgICAgIHRhcmdldDogdGFyZ2V0LFxyXG4gICAgICAgICAgICAgICAgYWx0OiBhbHRcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICBtYXAuYXJlYXMucHVzaCh7XHJcbiAgICAgICAgICAgICAgICBzaGFwZTogJ3JlY3QnLFxyXG4gICAgICAgICAgICAgICAgY29vcmRzOiBjb29yZHMsXHJcbiAgICAgICAgICAgICAgICBocmVmOiBocmVmLFxyXG4gICAgICAgICAgICAgICAgdGFyZ2V0OiB0YXJnZXQsXHJcbiAgICAgICAgICAgICAgICBhbHQ6IGFsdFxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG1hcDtcclxuICB9XHJcblxyXG4gIGdldE1pblhPZmZzZXQoc2hhcGVzKSB7XHJcbiAgICB2YXIgZmlsdGVyU2hhcGVzID0gc2hhcGVzLmZpbHRlcihmdW5jdGlvbiAocykge1xyXG4gICAgICByZXR1cm4gcy50eXBlICE9PSAnYnBtbjIuRmxvdydcclxuICAgICAgICAmJiBzLnR5cGUgIT0gJ2JwbW4yLkNvbnZlcnNhdGlvbkxpbmsnXHJcbiAgICAgICAgJiYgcy50eXBlICE9ICdicG1uMi5EYXRhQXNzb2NpYXRpb24nXHJcbiAgICAgICAgJiYgcy50eXBlICE9ICdicG1uMi5Bbm5vdGF0aW9uTGluaydcclxuICAgIH0pO1xyXG5cclxuICAgIHZhciBtaW5WYWx1ZTtcclxuICAgIHZhciBtaW5PYmplY3Q7XHJcblxyXG4gICAgaWYgKCFmaWx0ZXJTaGFwZXMgfHwgIWZpbHRlclNoYXBlcy5sZW5ndGgpIHtcclxuICAgICAgbWluVmFsdWUgPSB0aGlzLmdldFhQb3NpdGlvbihzaGFwZXNbMF0pO1xyXG4gICAgICBtaW5PYmplY3QgPSBzaGFwZXNbMF07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBtaW5WYWx1ZSA9IHRoaXMuZ2V0WFBvc2l0aW9uKGZpbHRlclNoYXBlc1swXSk7XHJcbiAgICAgIG1pbk9iamVjdCA9IGZpbHRlclNoYXBlc1swXTtcclxuICAgIH1cclxuXHJcbiAgICBmb3IgKHZhciBpID0gMTsgaSA8IGZpbHRlclNoYXBlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICB2YXIgeFBvc2l0aW9uID0gdGhpcy5nZXRYUG9zaXRpb24oZmlsdGVyU2hhcGVzW2ldKTtcclxuICAgICAgaWYgKHhQb3NpdGlvbiA8IG1pblZhbHVlKSB7XHJcbiAgICAgICAgbWluVmFsdWUgPSB4UG9zaXRpb247XHJcbiAgICAgICAgbWluT2JqZWN0ID0gZmlsdGVyU2hhcGVzW2ldO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG5cclxuICAgIHJldHVybiBtaW5WYWx1ZTtcclxuICB9XHJcblxyXG4gIGdldFhQb3NpdGlvbihzaGFwZSkge1xyXG4gICAgcmV0dXJuIHNoYXBlLmJib3gueCAtIChzaGFwZS5hZGRpdGlvbmFsV2lkdGggLyAyKTtcclxuICB9XHJcblxyXG4gIGdldFlQb3NpdGlvbihzaGFwZSkge1xyXG4gICAgcmV0dXJuIHNoYXBlLmJib3gueSAtIChzaGFwZS5hZGRpdGlvbmFsV2lkdGggLyAyKTtcclxuICB9XHJcblxyXG4gIGdldE1pbllPZmZzZXQoc2hhcGVzKSB7XHJcbiAgICB2YXIgZmlsdGVyU2hhcGVzID0gc2hhcGVzLmZpbHRlcihmdW5jdGlvbiAocykge1xyXG4gICAgICByZXR1cm4gcy50eXBlICE9PSAnYnBtbjIuRmxvdydcclxuICAgICAgICAmJiBzLnR5cGUgIT0gJ2JwbW4yLkNvbnZlcnNhdGlvbkxpbmsnXHJcbiAgICAgICAgJiYgcy50eXBlICE9ICdicG1uMi5EYXRhQXNzb2NpYXRpb24nXHJcbiAgICAgICAgJiYgcy50eXBlICE9ICdicG1uMi5Bbm5vdGF0aW9uTGluaydcclxuICAgIH0pO1xyXG4gICAgdmFyIG1pblZhbHVlO1xyXG4gICAgdmFyIG1pbk9iamVjdDtcclxuXHJcbiAgICBpZiAoIWZpbHRlclNoYXBlcyB8fCAhZmlsdGVyU2hhcGVzLmxlbmd0aCkge1xyXG4gICAgICBtaW5WYWx1ZSA9IHNoYXBlc1swXS5iYm94Lnk7XHJcbiAgICAgIG1pbk9iamVjdCA9IHNoYXBlc1swXTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIG1pblZhbHVlID0gZmlsdGVyU2hhcGVzWzBdLmJib3gueTtcclxuICAgICAgbWluT2JqZWN0ID0gZmlsdGVyU2hhcGVzWzBdO1xyXG4gICAgfVxyXG5cclxuICAgIGZvciAodmFyIGkgPSAxOyBpIDwgZmlsdGVyU2hhcGVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIHZhciB5UG9zaXRpb24gPSB0aGlzLmdldFlQb3NpdGlvbihmaWx0ZXJTaGFwZXNbaV0pO1xyXG4gICAgICBpZiAoeVBvc2l0aW9uIDwgbWluVmFsdWUpIHtcclxuICAgICAgICBtaW5WYWx1ZSA9IHlQb3NpdGlvbjtcclxuICAgICAgICBtaW5PYmplY3QgPSBmaWx0ZXJTaGFwZXNbaV07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBtaW5WYWx1ZTtcclxuICB9O1xyXG59XHJcbiJdfQ==
|