@eo-sdk/client 9.0.0-rc.6 → 9.0.0-rc.8
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/app/eo-client/settings/settings.component.d.ts +3 -2
- package/app/eo-framework/accordion/simple-accordion/simple-accordion.component.d.ts +5 -9
- package/app/eo-framework/app-shell/app-bar/app-bar.component.d.ts +4 -2
- package/app/eo-framework/media/media.component.d.ts +3 -12
- package/app/eo-framework/result-list/result-list.component.d.ts +7 -1
- package/app/eo-framework/ui/overlay/overlay.component.d.ts +3 -0
- package/app/eo-framework/ui/user-avatar/user-avatar.component.d.ts +5 -3
- package/app/eo-framework/util/directive/trap-focus.directive.d.ts +2 -0
- package/assets/_default/i18n/de.json +8 -2
- package/assets/_default/i18n/en.json +11 -5
- package/bundles/eo-sdk-client-projects-eo-sdk-core.umd.js +9 -4
- package/bundles/eo-sdk-client-projects-eo-sdk-core.umd.js.map +1 -1
- package/bundles/eo-sdk-client-projects-eo-sdk-core.umd.min.js +2 -2
- package/bundles/eo-sdk-client-projects-eo-sdk-core.umd.min.js.map +1 -1
- package/bundles/eo-sdk-client.umd.js +165 -159
- package/bundles/eo-sdk-client.umd.js.map +1 -1
- package/bundles/eo-sdk-client.umd.min.js +1 -1
- package/bundles/eo-sdk-client.umd.min.js.map +1 -1
- package/eo-sdk-client.metadata.json +1 -1
- package/esm2015/app/eo-client/about-state/about-state.component.js +3 -3
- package/esm2015/app/eo-client/dashboard/dashboard.component.js +2 -2
- package/esm2015/app/eo-client/settings/settings.component.js +12 -11
- package/esm2015/app/eo-framework/accordion/simple-accordion/simple-accordion.component.js +18 -23
- package/esm2015/app/eo-framework/actions/actions/copy-action/copy-action.js +2 -2
- package/esm2015/app/eo-framework/actions/actions/share-object-action/share-object/share-object.component.js +3 -2
- package/esm2015/app/eo-framework/app-shell/app-bar/app-add/app-add-dialog/app-add-dialog.component.js +1 -1
- package/esm2015/app/eo-framework/app-shell/app-bar/app-bar.component.js +12 -10
- package/esm2015/app/eo-framework/app-shell/app-bar/app-search/app-search.component.js +13 -1
- package/esm2015/app/eo-framework/form-elements/datetime/datetime.component.js +2 -2
- package/esm2015/app/eo-framework/form-elements/form-input/form-input.component.js +1 -1
- package/esm2015/app/eo-framework/form-elements/id-reference/id-reference.component.js +3 -4
- package/esm2015/app/eo-framework/form-elements/id-reference/reference-finder/reference-finder.component.js +3 -3
- package/esm2015/app/eo-framework/form-elements/id-reference/service/reference-finder.service.js +2 -3
- package/esm2015/app/eo-framework/form-elements/organization/organization.component.js +1 -1
- package/esm2015/app/eo-framework/form-elements/string/string.component.js +3 -3
- package/esm2015/app/eo-framework/grid/filters/datetime-filter.component.js +2 -2
- package/esm2015/app/eo-framework/grid/filters/organization-filter.component.js +1 -1
- package/esm2015/app/eo-framework/media/media.component.js +31 -77
- package/esm2015/app/eo-framework/object-details/object-details.component.js +2 -2
- package/esm2015/app/eo-framework/result-list/result-list.component.js +17 -5
- package/esm2015/app/eo-framework/settings/change-password/change-password-form/change-password-form.component.js +1 -1
- package/esm2015/app/eo-framework/ui/clipboard/clipboard.component.js +2 -2
- package/esm2015/app/eo-framework/ui/indexdata-summary/indexdata-summary.component.js +4 -4
- package/esm2015/app/eo-framework/ui/overlay/overlay.component.js +10 -4
- package/esm2015/app/eo-framework/ui/user-avatar/user-avatar.component.js +15 -9
- package/esm2015/app/eo-framework/util/directive/trap-focus.directive.js +22 -4
- package/esm2015/projects/eo-sdk/core/lib/model/dms-object.model.js +4 -1
- package/esm2015/projects/eo-sdk/core/lib/service/dms/dms.service.js +2 -1
- package/esm2015/projects/eo-sdk/core/lib/service/search/search-query.model.js +5 -5
- package/esm2015/projects/eo-sdk/core/lib/service/search/search.service.js +2 -1
- package/fesm2015/eo-sdk-client-projects-eo-sdk-core.js +9 -4
- package/fesm2015/eo-sdk-client-projects-eo-sdk-core.js.map +1 -1
- package/fesm2015/eo-sdk-client.js +161 -155
- package/fesm2015/eo-sdk-client.js.map +1 -1
- package/package.json +2 -2
- package/projects/eo-sdk/core/eo-sdk-client-projects-eo-sdk-core.metadata.json +1 -1
- package/projects/eo-sdk/core/lib/model/dms-object.model.d.ts +4 -0
- package/projects/eo-sdk/core/lib/service/search/search-query.model.d.ts +3 -1
- package/projects/eo-sdk/core/package.json +1 -1
- package/scss/_form.scss +3 -0
- package/styles.css +2 -0
- package/assets/_default/api/pdf/LICENSE +0 -177
- package/assets/_default/api/pdf/build/pdf.js +0 -2
- package/assets/_default/api/pdf/build/pdf.js.LICENSE.txt +0 -21
- package/assets/_default/api/pdf/build/pdf.js.map +0 -1
- package/assets/_default/api/pdf/build/pdf.sandbox.js +0 -2
- package/assets/_default/api/pdf/build/pdf.sandbox.js.LICENSE.txt +0 -21
- package/assets/_default/api/pdf/build/pdf.sandbox.js.map +0 -1
- package/assets/_default/api/pdf/build/pdf.worker.js +0 -2
- package/assets/_default/api/pdf/build/pdf.worker.js.LICENSE.txt +0 -21
- package/assets/_default/api/pdf/build/pdf.worker.js.map +0 -1
- package/assets/_default/api/pdf/web/cmaps/78-EUC-H.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/78-EUC-V.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/78-H.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/78-RKSJ-H.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/78-RKSJ-V.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/78-V.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/78ms-RKSJ-H.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/78ms-RKSJ-V.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/83pv-RKSJ-H.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/90ms-RKSJ-H.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/90ms-RKSJ-V.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/90msp-RKSJ-H.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/90msp-RKSJ-V.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/90pv-RKSJ-H.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/90pv-RKSJ-V.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/Add-H.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/Add-RKSJ-H.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/Add-RKSJ-V.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/Add-V.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/Adobe-CNS1-0.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/Adobe-CNS1-1.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/Adobe-CNS1-2.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/Adobe-CNS1-3.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/Adobe-CNS1-4.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/Adobe-CNS1-5.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/Adobe-CNS1-6.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/Adobe-CNS1-UCS2.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/Adobe-GB1-0.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/Adobe-GB1-1.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/Adobe-GB1-2.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/Adobe-GB1-3.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/Adobe-GB1-4.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/Adobe-GB1-5.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/Adobe-GB1-UCS2.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/Adobe-Japan1-0.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/Adobe-Japan1-1.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/Adobe-Japan1-2.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/Adobe-Japan1-3.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/Adobe-Japan1-4.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/Adobe-Japan1-5.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/Adobe-Japan1-6.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/Adobe-Japan1-UCS2.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/Adobe-Korea1-0.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/Adobe-Korea1-1.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/Adobe-Korea1-2.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/Adobe-Korea1-UCS2.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/B5-H.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/B5-V.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/B5pc-H.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/B5pc-V.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/CNS-EUC-H.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/CNS-EUC-V.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/CNS1-H.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/CNS1-V.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/CNS2-H.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/CNS2-V.bcmap +0 -3
- package/assets/_default/api/pdf/web/cmaps/ETHK-B5-H.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/ETHK-B5-V.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/ETen-B5-H.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/ETen-B5-V.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/ETenms-B5-H.bcmap +0 -3
- package/assets/_default/api/pdf/web/cmaps/ETenms-B5-V.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/EUC-H.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/EUC-V.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/Ext-H.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/Ext-RKSJ-H.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/Ext-RKSJ-V.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/Ext-V.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/GB-EUC-H.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/GB-EUC-V.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/GB-H.bcmap +0 -4
- package/assets/_default/api/pdf/web/cmaps/GB-V.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/GBK-EUC-H.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/GBK-EUC-V.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/GBK2K-H.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/GBK2K-V.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/GBKp-EUC-H.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/GBKp-EUC-V.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/GBT-EUC-H.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/GBT-EUC-V.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/GBT-H.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/GBT-V.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/GBTpc-EUC-H.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/GBTpc-EUC-V.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/GBpc-EUC-H.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/GBpc-EUC-V.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/H.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/HKdla-B5-H.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/HKdla-B5-V.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/HKdlb-B5-H.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/HKdlb-B5-V.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/HKgccs-B5-H.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/HKgccs-B5-V.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/HKm314-B5-H.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/HKm314-B5-V.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/HKm471-B5-H.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/HKm471-B5-V.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/HKscs-B5-H.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/HKscs-B5-V.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/Hankaku.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/Hiragana.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/KSC-EUC-H.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/KSC-EUC-V.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/KSC-H.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/KSC-Johab-H.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/KSC-Johab-V.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/KSC-V.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/KSCms-UHC-H.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/KSCms-UHC-HW-H.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/KSCms-UHC-HW-V.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/KSCms-UHC-V.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/KSCpc-EUC-H.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/KSCpc-EUC-V.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/Katakana.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/LICENSE +0 -36
- package/assets/_default/api/pdf/web/cmaps/NWP-H.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/NWP-V.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/RKSJ-H.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/RKSJ-V.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/Roman.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/UniCNS-UCS2-H.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/UniCNS-UCS2-V.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/UniCNS-UTF16-H.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/UniCNS-UTF16-V.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/UniCNS-UTF32-H.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/UniCNS-UTF32-V.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/UniCNS-UTF8-H.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/UniCNS-UTF8-V.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/UniGB-UCS2-H.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/UniGB-UCS2-V.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/UniGB-UTF16-H.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/UniGB-UTF16-V.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/UniGB-UTF32-H.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/UniGB-UTF32-V.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/UniGB-UTF8-H.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/UniGB-UTF8-V.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/UniJIS-UCS2-H.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/UniJIS-UCS2-HW-H.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/UniJIS-UCS2-HW-V.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/UniJIS-UCS2-V.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/UniJIS-UTF16-H.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/UniJIS-UTF16-V.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/UniJIS-UTF32-H.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/UniJIS-UTF32-V.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/UniJIS-UTF8-H.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/UniJIS-UTF8-V.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/UniJIS2004-UTF16-H.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/UniJIS2004-UTF16-V.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/UniJIS2004-UTF32-H.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/UniJIS2004-UTF32-V.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/UniJIS2004-UTF8-H.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/UniJIS2004-UTF8-V.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/UniJISPro-UCS2-HW-V.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/UniJISPro-UCS2-V.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/UniJISPro-UTF8-V.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/UniJISX0213-UTF32-H.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/UniJISX0213-UTF32-V.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/UniJISX02132004-UTF32-H.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/UniJISX02132004-UTF32-V.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/UniKS-UCS2-H.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/UniKS-UCS2-V.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/UniKS-UTF16-H.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/UniKS-UTF16-V.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/UniKS-UTF32-H.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/UniKS-UTF32-V.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/UniKS-UTF8-H.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/UniKS-UTF8-V.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/V.bcmap +0 -0
- package/assets/_default/api/pdf/web/cmaps/WP-Symbol.bcmap +0 -0
- package/assets/_default/api/pdf/web/compressed.tracemonkey-pldi-09.pdf +0 -0
- package/assets/_default/api/pdf/web/debugger.js +0 -1
- package/assets/_default/api/pdf/web/images/annotation-check.svg +0 -11
- package/assets/_default/api/pdf/web/images/annotation-comment.svg +0 -16
- package/assets/_default/api/pdf/web/images/annotation-help.svg +0 -26
- package/assets/_default/api/pdf/web/images/annotation-insert.svg +0 -10
- package/assets/_default/api/pdf/web/images/annotation-key.svg +0 -11
- package/assets/_default/api/pdf/web/images/annotation-newparagraph.svg +0 -11
- package/assets/_default/api/pdf/web/images/annotation-noicon.svg +0 -7
- package/assets/_default/api/pdf/web/images/annotation-note.svg +0 -42
- package/assets/_default/api/pdf/web/images/annotation-paragraph.svg +0 -16
- package/assets/_default/api/pdf/web/images/findbarButton-next.svg +0 -4
- package/assets/_default/api/pdf/web/images/findbarButton-previous.svg +0 -4
- package/assets/_default/api/pdf/web/images/grab.cur +0 -0
- package/assets/_default/api/pdf/web/images/grabbing.cur +0 -0
- package/assets/_default/api/pdf/web/images/loading-dark.svg +0 -24
- package/assets/_default/api/pdf/web/images/loading-icon.gif +0 -0
- package/assets/_default/api/pdf/web/images/loading.svg +0 -1
- package/assets/_default/api/pdf/web/images/secondaryToolbarButton-documentProperties.svg +0 -15
- package/assets/_default/api/pdf/web/images/secondaryToolbarButton-firstPage.svg +0 -1
- package/assets/_default/api/pdf/web/images/secondaryToolbarButton-handTool.svg +0 -1
- package/assets/_default/api/pdf/web/images/secondaryToolbarButton-lastPage.svg +0 -1
- package/assets/_default/api/pdf/web/images/secondaryToolbarButton-rotateCcw.svg +0 -1
- package/assets/_default/api/pdf/web/images/secondaryToolbarButton-rotateCw.svg +0 -4
- package/assets/_default/api/pdf/web/images/secondaryToolbarButton-scrollHorizontal.svg +0 -1
- package/assets/_default/api/pdf/web/images/secondaryToolbarButton-scrollVertical.svg +0 -1
- package/assets/_default/api/pdf/web/images/secondaryToolbarButton-scrollWrapped.svg +0 -1
- package/assets/_default/api/pdf/web/images/secondaryToolbarButton-selectTool.svg +0 -4
- package/assets/_default/api/pdf/web/images/secondaryToolbarButton-spreadEven.svg +0 -1
- package/assets/_default/api/pdf/web/images/secondaryToolbarButton-spreadNone.svg +0 -1
- package/assets/_default/api/pdf/web/images/secondaryToolbarButton-spreadOdd.svg +0 -1
- package/assets/_default/api/pdf/web/images/shadow.png +0 -0
- package/assets/_default/api/pdf/web/images/toolbarButton-bookmark.svg +0 -1
- package/assets/_default/api/pdf/web/images/toolbarButton-currentOutlineItem.svg +0 -1
- package/assets/_default/api/pdf/web/images/toolbarButton-download.svg +0 -4
- package/assets/_default/api/pdf/web/images/toolbarButton-menuArrow.svg +0 -1
- package/assets/_default/api/pdf/web/images/toolbarButton-openFile.svg +0 -4
- package/assets/_default/api/pdf/web/images/toolbarButton-pageDown.svg +0 -7
- package/assets/_default/api/pdf/web/images/toolbarButton-pageUp.svg +0 -12
- package/assets/_default/api/pdf/web/images/toolbarButton-presentationMode.svg +0 -1
- package/assets/_default/api/pdf/web/images/toolbarButton-print.svg +0 -4
- package/assets/_default/api/pdf/web/images/toolbarButton-search.svg +0 -4
- package/assets/_default/api/pdf/web/images/toolbarButton-secondaryToolbarToggle.svg +0 -4
- package/assets/_default/api/pdf/web/images/toolbarButton-sidebarToggle.svg +0 -4
- package/assets/_default/api/pdf/web/images/toolbarButton-viewAttachments.svg +0 -1
- package/assets/_default/api/pdf/web/images/toolbarButton-viewLayers.svg +0 -1
- package/assets/_default/api/pdf/web/images/toolbarButton-viewOutline.svg +0 -1
- package/assets/_default/api/pdf/web/images/toolbarButton-viewThumbnail.svg +0 -4
- package/assets/_default/api/pdf/web/images/toolbarButton-zoomIn.svg +0 -4
- package/assets/_default/api/pdf/web/images/toolbarButton-zoomOut.svg +0 -4
- package/assets/_default/api/pdf/web/images/treeitem-collapsed.svg +0 -1
- package/assets/_default/api/pdf/web/images/treeitem-expanded.svg +0 -1
- package/assets/_default/api/pdf/web/locale/ach/viewer.properties +0 -199
- package/assets/_default/api/pdf/web/locale/af/viewer.properties +0 -176
- package/assets/_default/api/pdf/web/locale/an/viewer.properties +0 -242
- package/assets/_default/api/pdf/web/locale/ar/viewer.properties +0 -246
- package/assets/_default/api/pdf/web/locale/ast/viewer.properties +0 -207
- package/assets/_default/api/pdf/web/locale/az/viewer.properties +0 -242
- package/assets/_default/api/pdf/web/locale/be/viewer.properties +0 -248
- package/assets/_default/api/pdf/web/locale/bg/viewer.properties +0 -234
- package/assets/_default/api/pdf/web/locale/bn/viewer.properties +0 -236
- package/assets/_default/api/pdf/web/locale/bo/viewer.properties +0 -237
- package/assets/_default/api/pdf/web/locale/br/viewer.properties +0 -246
- package/assets/_default/api/pdf/web/locale/brx/viewer.properties +0 -204
- package/assets/_default/api/pdf/web/locale/bs/viewer.properties +0 -193
- package/assets/_default/api/pdf/web/locale/ca/viewer.properties +0 -250
- package/assets/_default/api/pdf/web/locale/cak/viewer.properties +0 -248
- package/assets/_default/api/pdf/web/locale/ckb/viewer.properties +0 -233
- package/assets/_default/api/pdf/web/locale/cs/viewer.properties +0 -248
- package/assets/_default/api/pdf/web/locale/cy/viewer.properties +0 -248
- package/assets/_default/api/pdf/web/locale/da/viewer.properties +0 -248
- package/assets/_default/api/pdf/web/locale/de/viewer.properties +0 -248
- package/assets/_default/api/pdf/web/locale/dsb/viewer.properties +0 -248
- package/assets/_default/api/pdf/web/locale/el/viewer.properties +0 -248
- package/assets/_default/api/pdf/web/locale/en-CA/viewer.properties +0 -248
- package/assets/_default/api/pdf/web/locale/en-GB/viewer.properties +0 -248
- package/assets/_default/api/pdf/web/locale/en-US/viewer.properties +0 -248
- package/assets/_default/api/pdf/web/locale/eo/viewer.properties +0 -248
- package/assets/_default/api/pdf/web/locale/es-AR/viewer.properties +0 -248
- package/assets/_default/api/pdf/web/locale/es-CL/viewer.properties +0 -248
- package/assets/_default/api/pdf/web/locale/es-ES/viewer.properties +0 -248
- package/assets/_default/api/pdf/web/locale/es-MX/viewer.properties +0 -248
- package/assets/_default/api/pdf/web/locale/et/viewer.properties +0 -238
- package/assets/_default/api/pdf/web/locale/eu/viewer.properties +0 -248
- package/assets/_default/api/pdf/web/locale/fa/viewer.properties +0 -215
- package/assets/_default/api/pdf/web/locale/ff/viewer.properties +0 -234
- package/assets/_default/api/pdf/web/locale/fi/viewer.properties +0 -248
- package/assets/_default/api/pdf/web/locale/fr/viewer.properties +0 -248
- package/assets/_default/api/pdf/web/locale/fy-NL/viewer.properties +0 -248
- package/assets/_default/api/pdf/web/locale/ga-IE/viewer.properties +0 -176
- package/assets/_default/api/pdf/web/locale/gd/viewer.properties +0 -248
- package/assets/_default/api/pdf/web/locale/gl/viewer.properties +0 -248
- package/assets/_default/api/pdf/web/locale/gn/viewer.properties +0 -248
- package/assets/_default/api/pdf/web/locale/gu-IN/viewer.properties +0 -234
- package/assets/_default/api/pdf/web/locale/he/viewer.properties +0 -248
- package/assets/_default/api/pdf/web/locale/hi-IN/viewer.properties +0 -234
- package/assets/_default/api/pdf/web/locale/hr/viewer.properties +0 -248
- package/assets/_default/api/pdf/web/locale/hsb/viewer.properties +0 -248
- package/assets/_default/api/pdf/web/locale/hu/viewer.properties +0 -248
- package/assets/_default/api/pdf/web/locale/hy-AM/viewer.properties +0 -238
- package/assets/_default/api/pdf/web/locale/hye/viewer.properties +0 -244
- package/assets/_default/api/pdf/web/locale/ia/viewer.properties +0 -248
- package/assets/_default/api/pdf/web/locale/id/viewer.properties +0 -248
- package/assets/_default/api/pdf/web/locale/is/viewer.properties +0 -231
- package/assets/_default/api/pdf/web/locale/it/viewer.properties +0 -190
- package/assets/_default/api/pdf/web/locale/ja/viewer.properties +0 -259
- package/assets/_default/api/pdf/web/locale/ka/viewer.properties +0 -248
- package/assets/_default/api/pdf/web/locale/kab/viewer.properties +0 -248
- package/assets/_default/api/pdf/web/locale/kk/viewer.properties +0 -248
- package/assets/_default/api/pdf/web/locale/km/viewer.properties +0 -209
- package/assets/_default/api/pdf/web/locale/kn/viewer.properties +0 -186
- package/assets/_default/api/pdf/web/locale/ko/viewer.properties +0 -248
- package/assets/_default/api/pdf/web/locale/lij/viewer.properties +0 -234
- package/assets/_default/api/pdf/web/locale/lo/viewer.properties +0 -145
- package/assets/_default/api/pdf/web/locale/locale.properties +0 -321
- package/assets/_default/api/pdf/web/locale/lt/viewer.properties +0 -248
- package/assets/_default/api/pdf/web/locale/ltg/viewer.properties +0 -212
- package/assets/_default/api/pdf/web/locale/lv/viewer.properties +0 -234
- package/assets/_default/api/pdf/web/locale/meh/viewer.properties +0 -111
- package/assets/_default/api/pdf/web/locale/mk/viewer.properties +0 -138
- package/assets/_default/api/pdf/web/locale/mr/viewer.properties +0 -230
- package/assets/_default/api/pdf/web/locale/ms/viewer.properties +0 -234
- package/assets/_default/api/pdf/web/locale/my/viewer.properties +0 -190
- package/assets/_default/api/pdf/web/locale/nb-NO/viewer.properties +0 -248
- package/assets/_default/api/pdf/web/locale/ne-NP/viewer.properties +0 -176
- package/assets/_default/api/pdf/web/locale/nl/viewer.properties +0 -248
- package/assets/_default/api/pdf/web/locale/nn-NO/viewer.properties +0 -248
- package/assets/_default/api/pdf/web/locale/oc/viewer.properties +0 -248
- package/assets/_default/api/pdf/web/locale/pa-IN/viewer.properties +0 -248
- package/assets/_default/api/pdf/web/locale/pl/viewer.properties +0 -248
- package/assets/_default/api/pdf/web/locale/pt-BR/viewer.properties +0 -248
- package/assets/_default/api/pdf/web/locale/pt-PT/viewer.properties +0 -248
- package/assets/_default/api/pdf/web/locale/rm/viewer.properties +0 -248
- package/assets/_default/api/pdf/web/locale/ro/viewer.properties +0 -240
- package/assets/_default/api/pdf/web/locale/ru/viewer.properties +0 -248
- package/assets/_default/api/pdf/web/locale/scn/viewer.properties +0 -101
- package/assets/_default/api/pdf/web/locale/sco/viewer.properties +0 -248
- package/assets/_default/api/pdf/web/locale/si/viewer.properties +0 -201
- package/assets/_default/api/pdf/web/locale/sk/viewer.properties +0 -248
- package/assets/_default/api/pdf/web/locale/sl/viewer.properties +0 -248
- package/assets/_default/api/pdf/web/locale/son/viewer.properties +0 -172
- package/assets/_default/api/pdf/web/locale/sq/viewer.properties +0 -235
- package/assets/_default/api/pdf/web/locale/sr/viewer.properties +0 -250
- package/assets/_default/api/pdf/web/locale/sv-SE/viewer.properties +0 -248
- package/assets/_default/api/pdf/web/locale/szl/viewer.properties +0 -246
- package/assets/_default/api/pdf/web/locale/ta/viewer.properties +0 -193
- package/assets/_default/api/pdf/web/locale/te/viewer.properties +0 -217
- package/assets/_default/api/pdf/web/locale/tg/viewer.properties +0 -142
- package/assets/_default/api/pdf/web/locale/th/viewer.properties +0 -248
- package/assets/_default/api/pdf/web/locale/tl/viewer.properties +0 -242
- package/assets/_default/api/pdf/web/locale/tr/viewer.properties +0 -248
- package/assets/_default/api/pdf/web/locale/trs/viewer.properties +0 -206
- package/assets/_default/api/pdf/web/locale/uk/viewer.properties +0 -248
- package/assets/_default/api/pdf/web/locale/ur/viewer.properties +0 -238
- package/assets/_default/api/pdf/web/locale/uz/viewer.properties +0 -162
- package/assets/_default/api/pdf/web/locale/vi/viewer.properties +0 -248
- package/assets/_default/api/pdf/web/locale/wo/viewer.properties +0 -122
- package/assets/_default/api/pdf/web/locale/xh/viewer.properties +0 -176
- package/assets/_default/api/pdf/web/locale/zh-CN/viewer.properties +0 -248
- package/assets/_default/api/pdf/web/locale/zh-TW/viewer.properties +0 -248
- package/assets/_default/api/pdf/web/standard_fonts/FoxitDingbats.pfb +0 -0
- package/assets/_default/api/pdf/web/standard_fonts/FoxitFixed.pfb +0 -0
- package/assets/_default/api/pdf/web/standard_fonts/FoxitFixedBold.pfb +0 -0
- package/assets/_default/api/pdf/web/standard_fonts/FoxitFixedBoldItalic.pfb +0 -0
- package/assets/_default/api/pdf/web/standard_fonts/FoxitFixedItalic.pfb +0 -0
- package/assets/_default/api/pdf/web/standard_fonts/FoxitSans.pfb +0 -0
- package/assets/_default/api/pdf/web/standard_fonts/FoxitSansBold.pfb +0 -0
- package/assets/_default/api/pdf/web/standard_fonts/FoxitSansBoldItalic.pfb +0 -0
- package/assets/_default/api/pdf/web/standard_fonts/FoxitSansItalic.pfb +0 -0
- package/assets/_default/api/pdf/web/standard_fonts/FoxitSerif.pfb +0 -0
- package/assets/_default/api/pdf/web/standard_fonts/FoxitSerifBold.pfb +0 -0
- package/assets/_default/api/pdf/web/standard_fonts/FoxitSerifBoldItalic.pfb +0 -0
- package/assets/_default/api/pdf/web/standard_fonts/FoxitSerifItalic.pfb +0 -0
- package/assets/_default/api/pdf/web/standard_fonts/FoxitSymbol.pfb +0 -0
- package/assets/_default/api/pdf/web/standard_fonts/LICENSE_FOXIT +0 -27
- package/assets/_default/api/pdf/web/standard_fonts/LICENSE_LIBERATION +0 -102
- package/assets/_default/api/pdf/web/standard_fonts/LiberationSans-Bold.ttf +0 -0
- package/assets/_default/api/pdf/web/standard_fonts/LiberationSans-BoldItalic.ttf +0 -0
- package/assets/_default/api/pdf/web/standard_fonts/LiberationSans-Italic.ttf +0 -0
- package/assets/_default/api/pdf/web/standard_fonts/LiberationSans-Regular.ttf +0 -0
- package/assets/_default/api/pdf/web/viewer.css +0 -2746
- package/assets/_default/api/pdf/web/viewer.html +0 -398
- package/assets/_default/api/pdf/web/viewer.js +0 -2
- package/assets/_default/api/pdf/web/viewer.js.LICENSE.txt +0 -21
- package/assets/_default/api/pdf/web/viewer.js.map +0 -1
|
@@ -466,6 +466,7 @@ export class DmsService {
|
|
|
466
466
|
recycle: dmsObject.rights.recycle
|
|
467
467
|
}
|
|
468
468
|
}],
|
|
469
|
+
shares: dmsObject.shares,
|
|
469
470
|
contentid: dmsObject.content ? dmsObject.content.id : null,
|
|
470
471
|
contenttype: dmsObject.content ? dmsObject.content.type : null,
|
|
471
472
|
contentcount: dmsObject.content ? dmsObject.content.count : null,
|
|
@@ -487,4 +488,4 @@ DmsService.ctorParameters = () => [
|
|
|
487
488
|
{ type: SystemService },
|
|
488
489
|
{ type: EventService }
|
|
489
490
|
];
|
|
490
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG1zLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lby1zZGsvY29yZS9zcmMvbGliL3NlcnZpY2UvZG1zL2Rtcy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxHQUFHLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5RCxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBYSxFQUFFLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFDLFNBQVMsRUFBRSxtQkFBbUIsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQzVFLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBQzNFLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUM1QyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFHckQsTUFBTSxDQUFOLElBQVksZ0JBSVg7QUFKRCxXQUFZLGdCQUFnQjtJQUMxQixvREFBZ0MsQ0FBQTtJQUNoQyw2REFBeUMsQ0FBQTtJQUN6QywrQ0FBMkIsQ0FBQTtBQUM3QixDQUFDLEVBSlcsZ0JBQWdCLEtBQWhCLGdCQUFnQixRQUkzQjtBQUVEOztHQUVHO0FBRUgsTUFBTSxPQUFPLFVBQVU7SUFFckIsWUFBb0IsT0FBdUIsRUFDakMsYUFBNEIsRUFDNUIsWUFBMEI7UUFGaEIsWUFBTyxHQUFQLE9BQU8sQ0FBZ0I7UUFDakMsa0JBQWEsR0FB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QUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUk7WUFDMUQsV0FBVyxFQUFFLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJO1lBQzlELFlBQVksRUFBRSxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSTtZQUNoRSxRQUFRLEVBQUUsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUk7WUFFL0QsYUFBYSxFQUFFLFNBQVMsQ0FBQyxhQUFhO1lBQ3RDLGFBQWEsRUFBRSxTQUFTLENBQUMsYUFBYTtZQUN0QyxvQkFBb0IsRUFBRSxTQUFTLENBQUMsb0JBQW9CO1NBQ3JELENBQUM7UUFFRixJQUFJLGVBQWUsR0FBRyxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMxQyxlQUFlLENBQUMsSUFBSSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUM7UUFFdEMsT0FBTyxlQUFlLENBQUM7SUFDekIsQ0FBQzs7O1lBN2dCRixVQUFVOzs7WUFqQkgsY0FBYztZQUNkLGFBQWE7WUFJYixZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHt0YXAsIG1lcmdlTWFwLCBjYXRjaEVycm9yLCBtYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge09ic2VydmFibGUsIG9mfSBmcm9tICdyeGpzJztcbmltcG9ydCB7RG1zT2JqZWN0LCBEbXNPYmplY3RBdHRhY2htZW50fSBmcm9tICcuLi8uLi9tb2RlbC9kbXMtb2JqZWN0Lm1vZGVsJztcbmltcG9ydCB7QmFja2VuZFNlcnZpY2V9IGZyb20gJy4uL2JhY2tlbmQvYmFja2VuZC5zZXJ2aWNlJztcbmltcG9ydCB7U3lzdGVtU2VydmljZX0gZnJvbSAnLi4vc3lzdGVtL3N5c3RlbS5zZXJ2aWNlJztcbmltcG9ydCB7VXRpbHN9IGZyb20gJy4uLy4uL3V0aWwvdXRpbHMnO1xuaW1wb3J0IHtEbXNPYmplY3RIaXN0b3J5RW50cnl9IGZyb20gJy4uLy4uL21vZGVsL2Rtcy1vYmplY3QtaGlzdG9yeS5tb2RlbCc7XG5pbXBvcnQge0VuYWlvRXZlbnR9IGZyb20gJy4uL2V2ZW50cy9ldmVudHMnO1xuaW1wb3J0IHtFdmVudFNlcnZpY2V9IGZyb20gJy4uL2V2ZW50cy9ldmVudC5zZXJ2aWNlJztcbmltcG9ydCB7RG1zUGFyYW1zfSBmcm9tICcuL2Rtc1BhcmFtcy5pbnRlcmZhY2UnO1xuXG5leHBvcnQgZW51bSBTdWJzY3JpcHRpb25Nb2RlIHtcbiAgT05MWV9JTkRFWF9EQVRBX0NIQU5HRUQgPSAnTUVUQScsXG4gIE9OTFlfRE9DVU1FTlRfQ09OVEVOVF9DSEFOR0VEID0gJ0NPTlRFTlQnLFxuICBETVNfT0JKRUNUX0NIQU5HRUQgPSAnQk9USCdcbn1cblxuLyoqXG4gKiBDb2xsZWN0aW9uIG9mIERNUyBTZXJ2aWNlc1xuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRG1zU2VydmljZSB7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBiYWNrZW5kOiBCYWNrZW5kU2VydmljZSxcbiAgICBwcml2YXRlIHN5c3RlbVNlcnZpY2U6IFN5c3RlbVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBldmVudFNlcnZpY2U6IEV2ZW50U2VydmljZSkge1xuICB9XG5cbiAgLyoqXG4gICAqIEZldGNoZXMgYSBkbXMgb2JqZWN0LlxuICAgKlxuICAgKiBAcGFyYW0gaWQgT2JqZWN0cyBpZFxuICAgKiBAcGFyYW0gdHlwZSBPYmplY3RzIHR5cGUgbmFtZSwgd2lsbCBpbXByb3ZlIGxvYWQgdGltZSBpZiBwcm92aWRlZFxuICAgKiBAcGFyYW0gdmVyc2lvbiBUYXJnZXQgdmVyc2lvblxuICAgKiBAcGFyYW0gaW50ZW50IFVzZWQgZm9yIHNlcnZlciBzaWRlIGxvZ2dpbmcuIElmIHlvdSBwcm92aWRlIGFuIGludGVudCwgdGhlIGJhY2tlbmQgd2lsbCByZWNvZ25pemUgdGhlIHJlcXVlc3QgYW5kIGFkZCBpdCB0byBpdHMgbG9nc1xuICAgKiBAcGFyYW0gcmVjeWNsZWJpbiBJZiB0cnVlLCBvYmplY3RzIGZyb20gcmVjeWNsZWJpbiBhcmUgaW5jbHVkZWRcbiAgICogQHBhcmFtIHdpdGhTdG9yYWdlSW5mbyBJZiB0cnVlLCBzdG9yYWdlaW5mbyBpcyBpbmNsdWRlZCBvbiB0aGUgZG1zIG9iamVjdFxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPERtc09iamVjdD5cbiAgICovXG4gIGdldERtc09iamVjdChpZDogc3RyaW5nLCB0eXBlPzogc3RyaW5nLCB2ZXJzaW9uPzogbnVtYmVyLCBpbnRlbnQ/OiBzdHJpbmcsIHJlY3ljbGViaW4/OiBib29sZWFuLCB3aXRoU3RvcmFnZUluZm8/OiBib29sZWFuKTogT2JzZXJ2YWJsZTxEbXNPYmplY3Q+IHtcbiAgICBjb25zdCB1cmkgPSBgL2Rtcy8ke2lkfWA7XG5cbiAgICBjb25zdCBxID0ge1xuICAgICAgYWRkaXRpb25hbHZpc2liaWxpdHk6IHRydWUsXG4gICAgICBzdWJzY3JpcHRpb246ICdDVVJSRU5UJyxcbiAgICAgIHJlc3VibWlzc2lvbjogJ0NVUlJFTlQnLFxuICAgICAgcmlnaHRzOiAnQ1VSUkVOVCcsXG4gICAgICBkYXRhbWV0YTogJ3RydWUnLFxuICAgICAgY29udGV4dGZvbGRlcjogJ3RydWUnLFxuICAgICAgdHlwZSxcbiAgICAgIHJlY3ljbGViaW4sXG4gICAgICB2ZXJzaW9uLFxuICAgICAgc3RvcmFnZWluZm86IHdpdGhTdG9yYWdlSW5mbyxcbiAgICAgICdfaW50ZW50JzogaW50ZW50XG4gICAgfTtcblxuICAgIHJldHVybiB0aGlzLmJhY2tlbmRcbiAgICAgIC5nZXRWaWFUZW1wQ2FjaGUoVXRpbHMuYnVpbGRVcmkodXJpLCBxKSlcbiAgICAgIC5waXBlKFxuICAgICAgICBjYXRjaEVycm9yKFV0aWxzLmNhdGNoU2tpcChlcnIgPT4gZXJyLnN0YXR1cyA9PT0gNDA0KSksXG4gICAgICAgIG1hcChyZXMgPT4gdGhpcy5yZXNvbHZlT2JqZWN0VHlwZXMobmV3IERtc09iamVjdChyZXMpKSlcbiAgICAgICk7XG4gIH1cblxuICAvKipcbiAgICogR2V0dGVyIGZvciB0aGUgRE1TIE9iamVjdHMgYnkgcGFyYW1zXG4gICAqXG4gICAqIEBwYXJhbSBEbXNQYXJhbXMgcGFyYW1zXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8RG1zT2JqZWN0PlxuICAgKi9cbiAgZ2V0RG1zT2JqZWN0QnlQYXJhbXMocGFyYW1zOiBEbXNQYXJhbXMpOiBPYnNlcnZhYmxlPERtc09iamVjdD4ge1xuICAgIHJldHVybiB0aGlzLmdldERtc09iamVjdChwYXJhbXMuaWQsIHBhcmFtcy50eXBlLCBwYXJhbXMudmVyc2lvbiwgcGFyYW1zLmludGVudCwgcGFyYW1zLnJlY3ljbGViaW4sIHBhcmFtcy53aXRoU3RvcmFnZUluZm8pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlb2x2ZXIgb2YgT2JqZWN0IFR5cGVzIGJ5IERNUyBPYmplY3RcbiAgICpcbiAgICogQHBhcmFtIERtc09iamVjdCBkbXNPYmplY3RcbiAgICogQHJldHVybnMgRG1zT2JqZWN0XG4gICAqL1xuICByZXNvbHZlT2JqZWN0VHlwZXMoZG1zT2JqZWN0OiBEbXNPYmplY3QpOiBEbXNPYmplY3Qge1xuICAgIGRtc09iamVjdC50eXBlID0gdGhpcy5zeXN0ZW1TZXJ2aWNlLmdldE9iamVjdFR5cGUoZG1zT2JqZWN0LnR5cGVOYW1lKTtcblxuICAgIGlmIChkbXNPYmplY3QuY29udGV4dEZvbGRlcikge1xuICAgICAgZG1zT2JqZWN0LmNvbnRleHRGb2xkZXIudHlwZSA9IHRoaXMuc3lzdGVtU2VydmljZS5nZXRPYmplY3RUeXBlKGRtc09iamVjdC5jb250ZXh0Rm9sZGVyLnR5cGVOYW1lKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZG1zT2JqZWN0O1xuICB9XG5cbiAgLyoqXG4gICAqIERlbGV0ZXMgYSBETVMgb2JqZWN0LlxuICAgKiBAcGFyYW0gaWQgVGhlIGlkIG9mIHRoZSBkbXMgb2JqZWN0IHRvIGJlIGRlbGV0ZWQuXG4gICAqIEBwYXJhbSB0eXBlIFR5cGUgb2Ygb2JqZWN0XG4gICAqIEBwYXJhbSBoYXJkRGVsZXRlIElmIG9iamVjdCBzaG91bGQgcmVhbGx5IGJlIGRlbGV0ZWQgb3Igb25seSBwdXQgaW50byB0aGUgcmVjeWNsZSBiaW5cbiAgICovXG4gIGRlbGV0ZURtc09iamVjdChpZDogc3RyaW5nLCB0eXBlPzogc3RyaW5nLCBoYXJkRGVsZXRlPzogYm9vbGVhbik6IE9ic2VydmFibGU8YW55PiB7XG4gICAgY29uc3QgdXJsID0gYC9kbXMvJHtpZH1gO1xuICAgIGNvbnN0IHBhcmFtcyA9IHt9O1xuICAgIGlmICh0eXBlICYmIHR5cGUubGVuZ3RoID4gMCkge1xuICAgICAgcGFyYW1zWyd0eXBlJ10gPSB0eXBlO1xuICAgIH1cbiAgICBpZiAoaGFyZERlbGV0ZSkge1xuICAgICAgcGFyYW1zWydoYXJkZGVsZXRlJ10gPSBoYXJkRGVsZXRlO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kLmRlbChVdGlscy5idWlsZFVyaSh1cmwsIHBhcmFtcykpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGNvbnRleHQgcGF0aCBvZiB0aGUgZ2l2ZW4gZG1zIG9iamVjdFxuICAgKiBAcGFyYW0gaWQgVGhlIGlkIG9mIHRoZSBvYmplY3QuXG4gICAqIEByZXR1cm5zIFRoZSBjb250ZXh0IHBhdGggb2YgdGhlIGRtcyBvYmplY3RcbiAgICovXG4gIGdldENvbnRleHRQYXRoKGlkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kLmdldChgL2Rtcy8ke2lkfS9jb250ZXh0YClcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoXG4gICAgICAgICAgY29udGV4dFBhdGggPT4ge1xuICAgICAgICAgICAgY29udGV4dFBhdGguZm9yRWFjaChwYXRoSXRlbSA9PiB7XG4gICAgICAgICAgICAgIHBhdGhJdGVtLmRtc29iamVjdCA9IG5ldyBEbXNPYmplY3QocGF0aEl0ZW0uZG1zb2JqZWN0KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIGNvbnRleHRQYXRoO1xuICAgICAgICAgIH1cbiAgICAgICAgKSk7XG4gIH1cblxuICAvKipcbiAgICogRmV0Y2hlcyB0aGUgY2hpbGRyZW4gb2YgYSBEbXNPYmplY3QuXG4gICAqXG4gICAqIEBwYXJhbSBkbXNPYmplY3RcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxEbXNPYmplY3RbXT5cbiAgICovXG4gIGdldENoaWxkcmVuKGRtc09iamVjdDogRG1zT2JqZWN0KTogT2JzZXJ2YWJsZTxEbXNPYmplY3RbXT4ge1xuICAgIGNvbnN0IHVyaSA9IGAvZG1zLyR7ZG1zT2JqZWN0LmlkfS9jaGlsZHJlbmA7XG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZC5nZXRWaWFUZW1wQ2FjaGUoVXRpbHMuYnVpbGRVcmkodXJpLCB7dHlwZTogZG1zT2JqZWN0LnR5cGUubmFtZX0pKS5waXBlKFxuICAgICAgbWFwKChyZXM6IGFueVtdKSA9PiB7XG4gICAgICAgIHJldHVybiByZXMubWFwKHIgPT4gdGhpcy5yZXNvbHZlT2JqZWN0VHlwZXMobmV3IERtc09iamVjdChyKSkpO1xuICAgICAgfSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZldGNoZXMgdGhlIHZlcnNpb25zIG9mIGEgRG1zT2JqZWN0LlxuICAgKlxuICAgKiBAcGFyYW0gaWRcbiAgICogQHBhcmFtIHR5cGVcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxEbXNPYmplY3Q+XG4gICAqL1xuICBnZXRWZXJzaW9ucyhpZDogc3RyaW5nLCB0eXBlPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxEbXNPYmplY3Q+IHtcbiAgICBjb25zdCB1cmkgPSBgL2Rtcy8ke2lkfS92ZXJzaW9uc2A7XG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZC5nZXRWaWFUZW1wQ2FjaGUoVXRpbHMuYnVpbGRVcmkodXJpLCB7dHlwZX0pKS5waXBlKFxuICAgICAgbWFwKChyZXM6IGFueSkgPT4ge1xuICAgICAgICByZXR1cm4gbmV3IERtc09iamVjdChyZXMpO1xuICAgICAgfSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZldGNoZXMgdGhlIGF0dGFjaG1lbnRzIG9mIGEgRG1zT2JqZWN0LlxuICAgKlxuICAgKiBAcGFyYW0gZG1zT2JqZWN0XG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8RG1zT2JqZWN0QXR0YWNobWVudFtdPlxuICAgKi9cbiAgZ2V0QXR0YWNobWVudHMoZG1zT2JqZWN0OiBEbXNPYmplY3QpOiBPYnNlcnZhYmxlPERtc09iamVjdEF0dGFjaG1lbnRbXT4ge1xuICAgIGNvbnN0IHR5cGUgPSBkbXNPYmplY3QuY29udGVudD8udHlwZTtcbiAgICBjb25zdCB2ZXJzaW9uID0gZG1zT2JqZWN0LmNvbnRlbnQ/LmxpbmtlZCA/IC0xIDogZG1zT2JqZWN0LnZlcnNpb247XG4gICAgY29uc3QgY29udGVudElEID0gZG1zT2JqZWN0LmNvbnRlbnQ/LmlkO1xuICAgIGNvbnN0IHVyaSA9IFV0aWxzLmJ1aWxkVXJpKGAvZG1zLyR7Y29udGVudElEfS9hdHRhY2htZW50c2AsIHt0eXBlLCB2ZXJzaW9ufSk7XG4gICAgcmV0dXJuICFjb250ZW50SUQgPyBvZihbXSkgOiB0aGlzLmJhY2tlbmQuZ2V0VmlhVGVtcENhY2hlKHVyaSkucGlwZShcbiAgICAgIGNhdGNoRXJyb3IoVXRpbHMuY2F0Y2hTa2lwKGVyciA9PiBlcnIuc3RhdHVzID09PSA0MDQpKSxcbiAgICAgIG1hcCgocmVzOiBhbnkpID0+IHJlcy5hdHRhY2htZW50aW5mbyAmJiByZXMuYXR0YWNobWVudGluZm8uYXR0YWNobWVudHMgPyByZXMuYXR0YWNobWVudGluZm8uYXR0YWNobWVudHNcbiAgICAgICAgLm1hcCgoYSwgaSkgPT4gbmV3IERtc09iamVjdEF0dGFjaG1lbnQoT2JqZWN0LmFzc2lnbihhLCB7aWQ6IGksIHByZXZpZXdVcmk6IHRoaXMuZ2V0QXR0YWNobWVudEJ5SW5kZXgoY29udGVudElELCBpLCB0eXBlLCB2ZXJzaW9uKX0pKSkgOiBbXVxuICAgICAgKSk7XG4gIH1cblxuICAvKipcbiAgICogRmV0Y2hlcyB0aGUgc3BlY2lmaWMgYXR0YWNobWVudCBvZiBhIERtc09iamVjdC5cbiAgICpcbiAgICogQHBhcmFtIGlkXG4gICAqIEBwYXJhbSBpbmRleFxuICAgKiBAcGFyYW0gdHlwZVxuICAgKiBAcGFyYW0gdmVyc2lvblxuICAgKiBAcmV0dXJucyBzdHJpbmdcbiAgICovXG4gIGdldEF0dGFjaG1lbnRCeUluZGV4KGlkOiBzdHJpbmcsIGluZGV4OiBudW1iZXIsIHR5cGU6IHN0cmluZywgdmVyc2lvbj86IG51bWJlcik6IHN0cmluZyB7XG4gICAgY29uc3QgdXJpID0gVXRpbHMuYnVpbGRVcmkoYC9kbXMvJHtpZH0vYXR0YWNobWVudHMvJHtpbmRleH1gLCB7dHlwZSwgdmVyc2lvbn0pO1xuICAgIHJldHVybiB0aGlzLmJhY2tlbmQuZ2V0U2VydmljZUJhc2UoKSArIHVyaTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZXMgdGhlIFVSSSBmb3IgZ2V0dGluZyBhIERtc09iamVjdHMgc2xpZGUgKFByZXZpZXcgaW1hZ2UpLlxuICAgKlxuICAgKiBAcGFyYW0gaWQgT2JqZWN0cyBpZFxuICAgKiBAcGFyYW0gdHlwZSBPYmplY3RzIHR5cGUgbmFtZSwgd2lsbCBpbXByb3ZlIGxvYWQgdGltZSBpZiBwcm92aWRlZFxuICAgKiBAcGFyYW0gdmVyc2lvbiBUYXJnZXQgdmVyc2lvblxuICAgKiBAcGFyYW0gc2l6ZSBUaGUgc2l6ZSBvZiB0aGUgcHJldmlldyBpbWFnZSBpbiBweFxuICAgKiBAcmV0dXJucyBzdHJpbmdcbiAgICovXG4gIGdldFNsaWRlKGlkOiBzdHJpbmcsIHR5cGU/OiBzdHJpbmcsIHZlcnNpb24/OiBudW1iZXIsIHNpemU/OiBudW1iZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiBVdGlscy5idWlsZFVyaShcbiAgICAgIHRoaXMuYmFja2VuZC5nZXRTZXJ2aWNlQmFzZSgpICsgJy9kbXMvJyArIGlkICsgJy9zbGlkZScsXG4gICAgICB7XG4gICAgICAgIHR5cGUsXG4gICAgICAgIHZlcnNpb24sXG4gICAgICAgIGhlaWdodDogc2l6ZVxuICAgICAgfVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGVzIHRoZSBVUkkgZm9yIGdldHRpbmcgYSBEbXNPYmplY3RzIHByZXZpZXcgKFBERiByZW5kaXRpb24pLlxuICAgKlxuICAgKiBAcGFyYW0gaWQgT2JqZWN0cyBpZFxuICAgKiBAcGFyYW0gdHlwZV0gT2JqZWN0cyB0eXBlIG5hbWUsIHdpbGwgaW1wcm92ZSBsb2FkIHRpbWUgaWYgcHJvdmlkZWRcbiAgICogQHBhcmFtIHZlcnNpb24gVGFyZ2V0IHZlcnNpb25cbiAgICogQHBhcmFtIHJlbmRpdGlvbiBUYXJnZXQgcmVuZGl0aW9uIChQREYpXG4gICAqIEByZXR1cm5zIHN0cmluZ1xuICAgKi9cbiAgZ2V0UHJldmlldyhpZDogc3RyaW5nLCB0eXBlPzogc3RyaW5nLCB2ZXJzaW9uPzogbnVtYmVyLCByZW5kaXRpb24/OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBVdGlscy5idWlsZFVyaShcbiAgICAgIHRoaXMuYmFja2VuZC5nZXRTZXJ2aWNlQmFzZSgpICsgJy9kbXMvJyArIGlkICsgJy9jb250ZW50JyxcbiAgICAgIHtcbiAgICAgICAgcmVuZGl0aW9uLFxuICAgICAgICB0eXBlLFxuICAgICAgICB2ZXJzaW9uXG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIGFuIGV4aXN0aW5nIGRtcyBvYmplY3QuXG4gICAqXG4gICAqIEBwYXJhbSBpZCBJRCBvZiB0aGUgb2JqZWN0IHRvIGJlIHVwZGF0ZWRcbiAgICogQHBhcmFtIGluZGV4ZGF0YSBPYmplY3QgaG9sZGluZyB0aGUgb2JqZWN0cyBpbmRleGRhdGEgKHByb3BlcnR5OiB2YWx1ZSlcbiAgICogQHBhcmFtIHR5cGUgVGhlIG9iamVjdCB0eXBlIG9mIHRoZSBvYmplY3QgdG8gYmUgdXBkYXRlZFxuICAgKiBAcGFyYW0gdmVyc2lvbiBUaGUgY3VycmVudCB2ZXJzaW9uIG9mIHRoZSBvYmplY3QgdG8gYmUgdXBkYXRlZFxuICAgKiBAcGFyYW0gY2hlY2tyZWZlcmVuY2VzIElmIHRoZSByZWZlcmVuY2UgZmllbGRzIHNob3VsZCBiZSB2YWxpZGF0ZWQgb3Igbm90XG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8RG1zT2JqZWN0PiBUaGUgdXBkYXRlZCBkbXMgb2JqZWN0XG4gICAqL1xuICB1cGRhdGVPYmplY3QoaWQ6IHN0cmluZywgaW5kZXhkYXRhOiBhbnksIHR5cGU/OiBzdHJpbmcsIHZlcnNpb24/OiBudW1iZXIsIGNoZWNrcmVmZXJlbmNlcz86IGJvb2xlYW4pOiBPYnNlcnZhYmxlPERtc09iamVjdD4ge1xuICAgIGNvbnN0IHVybCA9IFV0aWxzLmJ1aWxkVXJpKGAvZG1zLyR7aWR9YCwge3R5cGUsIHZlcnNpb24sIGNoZWNrcmVmZXJlbmNlc30pO1xuICAgIHJldHVybiB0aGlzLnRyaWdnZXJVcGRhdGUoPGFueT57aWQsIHR5cGUsIHR5cGVOYW1lOiB0eXBlfSwgdGhpcy5iYWNrZW5kLnB1dCh1cmwsIGluZGV4ZGF0YSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZldGNoIHRoZSBoaXN0b3J5IChhdWRpdCkgb2Ygb25lIGRtcyBvYmplY3RcbiAgICpcbiAgICogQHBhcmFtIGlkIElEIG9mIHRoZSBkbXMgb2JqZWN0IHRvIGZldGNoIGhpc3RvcnkgZm9yXG4gICAqIEBwYXJhbSB0eXBlIFR5cGUgb2YgdGhlIGRtcyBvYmplY3QgdG8gZmV0Y2ggaGlzdG9yeSBmb3JcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxEbXNPYmplY3RIaXN0b3J5RW50cnlbXT4gVGhlIGhpc3Rvcnkgb2YgdGhlIGRtcyBvYmplY3RcbiAgICovXG4gIGdldEhpc3RvcnkoaWQ6IHN0cmluZywgdHlwZT86IHN0cmluZyk6IE9ic2VydmFibGU8RG1zT2JqZWN0SGlzdG9yeUVudHJ5W10+IHtcbiAgICBjb25zdCB1cmkgPSBgL2Rtcy8ke2lkfS9hdWRpdGA7XG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZC5nZXRKc29uKFV0aWxzLmJ1aWxkVXJpKHVyaSwge3R5cGU6IHR5cGV9KSkucGlwZShtYXAoKHJlcykgPT4gcmVzLmF1ZGl0Lm1hcCgoYXVkaXRFbnRyeSkgPT4gbmV3IERtc09iamVjdEhpc3RvcnlFbnRyeShhdWRpdEVudHJ5KSkpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXN0b3JlcyBhbiBlYXJsaWVyIHZlcnNpb24gb2YgdGhlIHNlbGVjdGVkIERtc09iamVjdCBieSBhZGRpbmcgdGhlIGVhcmxpZXIgdmVyc2lvblxuICAgKiBhcyB0aGUgbmV3IHJlY2VudCB2ZXJzaW9uLlxuICAgKlxuICAgKiBAcGFyYW0gaWQgRE1TIG9iamVjdCBpZFxuICAgKiBAcGFyYW0gdmVyc2lvbiBUaGUgdmVyc2lvbiB0byBiZSByZXN0b3JlZFxuICAgKiBAcGFyYW0gdHlwZSBUaGUgZG1zIG9iamVjdCB0eXBlXG4gICAqIEByZXR1cm5cbiAgICovXG4gIHJlc3RvcmVWZXJzaW9uKGlkOiBzdHJpbmcsIHZlcnNpb246IG51bWJlciwgdHlwZT86IHN0cmluZykge1xuICAgIGNvbnN0IHVyaSA9IGAvZG1zL3Jlc3RvcmV2ZXJzaW9uLyR7aWR9LyR7dmVyc2lvbn1gO1xuICAgIHJldHVybiB0aGlzLmJhY2tlbmQucG9zdChVdGlscy5idWlsZFVyaSh1cmksIHt0eXBlOiB0eXBlfSksIG51bGwpO1xuICB9XG5cbiAgLyoqXG4gICAqIGlmIGRtc09iamVjdCBpcyBzcGVjaWZpZWQsIGxvYWQgbGF0ZXN0IHZlcnNpb24gYW5kIHRyaWdnZXIgRW5haW8gZXZlbnQgRE1TX09CSkVDVF9VUERBVEVEXG4gICAqXG4gICAqIEBwYXJhbSBkbXNPYmplY3RcbiAgICogQHBhcmFtIHJlcXVlc3RcbiAgICogQHJldHVyblxuICAgKi9cbiAgdHJpZ2dlclVwZGF0ZShkbXNPYmplY3Q6IERtc09iamVjdCwgcmVxdWVzdDogT2JzZXJ2YWJsZTxhbnk+KSB7XG4gICAgcmV0dXJuICFkbXNPYmplY3QgPyByZXF1ZXN0IDogcmVxdWVzdC5waXBlKFxuICAgICAgbWVyZ2VNYXAoKCkgPT4gdGhpcy5nZXREbXNPYmplY3QoZG1zT2JqZWN0LmlkLCBkbXNPYmplY3QudHlwZU5hbWUpKSxcbiAgICAgIHRhcChfZG1zT2JqZWN0ID0+IHRoaXMuZXZlbnRTZXJ2aWNlLnRyaWdnZXIoRW5haW9FdmVudC5ETVNfT0JKRUNUX1VQREFURUQsIF9kbXNPYmplY3QpKSk7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlIENvbnRlbnRcbiAgICpcbiAgICogQHBhcmFtIERtc09iamVjdCBkbXNPYmplY3RcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxhbnk+XG4gICAqL1xuICByZW1vdmVDb250ZW50KGRtc09iamVjdDogRG1zT2JqZWN0KSB7XG4gICAgY29uc3QgdXJpID0gYC9kbXMvJHtkbXNPYmplY3QuaWR9L2NvbnRlbnRgO1xuICAgIHJldHVybiB0aGlzLnRyaWdnZXJVcGRhdGUoZG1zT2JqZWN0LCB0aGlzLmJhY2tlbmQuZGVsKHVyaSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgRG1zT2JqZWN0LlxuICAgKiBAcGFyYW0gdGFyZ2V0VHlwZSBUYXJnZXQgb2JqZWN0IHR5cGUgbmFtZVxuICAgKiBAcGFyYW0gZmlsZSBGaWxlIHRvIGJlIGFkZGVkIGFzIERtc09iamVjdHMgY29udGVudFxuICAgKiBAcGFyYW0gaW5kZXhEYXRhIEluZGV4ZGF0YSBhcyBwbGFpbiBvYmplY3Qgd2hlcmUga2V5cyBhcmUgdGhlIG9iamVjdHMgcHJvcGVydGllcyBhbmQgdmFsdWVzIHRoZSB2YWx1ZXMgdG8gYmUgYXBwbGllZCB0byBpdFxuICAgKiBAcGFyYW0gcGFyZW50IFBhcmVudCBjb250ZXh0IGZvbGRlciBvZiB0aGUgbmV3IERtc09iamVjdFxuICAgKi9cbiAgY3JlYXRlRG1zT2JqZWN0KHRhcmdldFR5cGU6IHN0cmluZywgZmlsZT86IEZpbGUsIGluZGV4RGF0YT86IGFueSwgcGFyZW50Pzoge2lkOiBzdHJpbmcsIHR5cGU/OiBzdHJpbmd9KTogT2JzZXJ2YWJsZTx7aWQ6IHN0cmluZywgdXJpOiBzdHJpbmd9PiB7XG5cbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgIGlmIChpbmRleERhdGEpIHtcbiAgICAgIGZvcm1EYXRhLmFwcGVuZCgnZGF0YScsIG5ldyBCbG9iKFtKU09OLnN0cmluZ2lmeShpbmRleERhdGEpXSwge1xuICAgICAgICB0eXBlOiAnYXBwbGljYXRpb24vanNvbidcbiAgICAgIH0pKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZm9ybURhdGEuYXBwZW5kKCdub2luZGV4ZGF0YScsICcnKTtcbiAgICB9XG5cbiAgICBpZiAoZmlsZSkge1xuICAgICAgZm9ybURhdGEuYXBwZW5kKCdmaWxlc1tdJywgZmlsZSwgVXRpbHMuZW5jb2RlRmlsZU5hbWUoZmlsZS5uYW1lKSk7XG4gICAgfVxuXG4gICAgbGV0IHVyaSA9IGAvZG1zL2NyZWF0ZS8ke3RhcmdldFR5cGV9YDtcbiAgICBpZiAocGFyZW50KSB7XG4gICAgICB1cmkgPSBVdGlscy5idWlsZFVyaSh1cmksIHtcbiAgICAgICAgcGFyZW50SWQ6IHBhcmVudC5pZCxcbiAgICAgICAgcGFyZW50VHlwZTogcGFyZW50LnR5cGVcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kLnBvc3RNdWx0aVBhcnQodXJpLCBmb3JtRGF0YSwgbnVsbCwge2hlYWRlcnM6IHt9fSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgU3Vic2NyaXB0aW9uXG4gICAqXG4gICAqIEBwYXJhbSBEbXNPYmplY3QgZG1zT2JqZWN0XG4gICAqIEBwYXJhbSBzdHJpbmcgc3ViamVjdFxuICAgKiBAcGFyYW0gcmVjZWl2ZXJcbiAgICogQHBhcmFtIGJvb2xlYW4gc2VuZGVtYWlsXG4gICAqIEBwYXJhbSBib29sZWFuIG9ubHllbWFpbFxuICAgKiBAcGFyYW0gbW9kZSBTdWJzY3JpcHRpb25Nb2RlXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8YW55PlxuICAgKi9cbiAgY3JlYXRlU3Vic2NyaXB0aW9uKGRtc09iamVjdDogRG1zT2JqZWN0LCBzdWJqZWN0OiBzdHJpbmcsIHJlY2VpdmVyLCBzZW5kZW1haWw6IGJvb2xlYW4sIG9ubHllbWFpbDogYm9vbGVhbiwgbW9kZT86IFN1YnNjcmlwdGlvbk1vZGUpIHtcbiAgICBjb25zdCB1cmkgPSBgL2Rtcy9zdWJzY3JpcHRpb24vJHtkbXNPYmplY3QuaWR9YDtcbiAgICByZXR1cm4gdGhpcy50cmlnZ2VyVXBkYXRlKGRtc09iamVjdCwgdGhpcy5iYWNrZW5kLnBvc3QoVXRpbHMuYnVpbGRVcmkodXJpLCB7XG4gICAgICBzdWJqZWN0LFxuICAgICAgdHlwZTogZG1zT2JqZWN0LnR5cGVOYW1lLFxuICAgICAgcmVjZWl2ZXIsXG4gICAgICBzZW5kZW1haWwsXG4gICAgICBvbmx5ZW1haWwsXG4gICAgICBtb2RlXG4gICAgfSksIHt9KVxuICAgICk7XG5cbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBSZXN1Ym1pc3Npb25cbiAgICpcbiAgICogQHBhcmFtIERtc09iamVjdCBkbXNPYmplY3RcbiAgICogQHBhcmFtIHN0cmluZyBzdWJqZWN0XG4gICAqIEBwYXJhbSBkdWVcbiAgICogQHBhcmFtIHJlY2VpdmVyXG4gICAqIEBwYXJhbSBib29sZWFuIHNlbmRFbWFpbFxuICAgKiBAcGFyYW0gYm9vbGVhbiBvbmx5RW1haWxcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxhbnk+XG4gICAqL1xuICBjcmVhdGVSZXN1Ym1pc3Npb24oZG1zT2JqZWN0OiBEbXNPYmplY3QsIHN1YmplY3Q6IHN0cmluZywgZHVlLCByZWNlaXZlciwgc2VuZEVtYWlsOiBib29sZWFuLCBvbmx5RW1haWw6IGJvb2xlYW4pIHtcbiAgICBjb25zdCB1cmkgPSBgL2Rtcy9yZXN1Ym1pc3Npb24vJHtkbXNPYmplY3QuaWR9YDtcbiAgICByZXR1cm4gdGhpcy50cmlnZ2VyVXBkYXRlKGRtc09iamVjdCwgdGhpcy5iYWNrZW5kLnBvc3QoVXRpbHMuYnVpbGRVcmkodXJpLCB7XG4gICAgICBzdWJqZWN0LFxuICAgICAgdHlwZTogZG1zT2JqZWN0LnR5cGVOYW1lLFxuICAgICAgcmVjZWl2ZXIsXG4gICAgICBkdWU6IGR1ZSA/IGR1ZS50b0lTT1N0cmluZygpIDogJycsXG4gICAgICBzZW5kZW1haWw6IHNlbmRFbWFpbCxcbiAgICAgIG9ubHllbWFpbDogb25seUVtYWlsXG4gICAgfSksIHt9KVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogUmVhbW92ZSBhIFN1YnNjcmlwdGlvbiBieSBhIGdpdmVuIElkXG4gICAqXG4gICAqIEBwYXJhbSBzdWJzY3JpcHRpb25JZFxuICAgKiBAcGFyYW0gRG1zT2JqZWN0IGRtc09iamVjdFxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPGFueT5cbiAgICovXG4gIHJlbW92ZVN1YnNjcmlwdGlvbkJ5SWQoc3Vic2NyaXB0aW9uSWQsIGRtc09iamVjdD86IERtc09iamVjdCkge1xuICAgIHJldHVybiB0aGlzLnRyaWdnZXJVcGRhdGUoZG1zT2JqZWN0LCB0aGlzLmJhY2tlbmQuZGVsKGAvbWVzc2FnZXByb3ZpZGVyL3N1YnNjcmlwdGlvbi8ke3N1YnNjcmlwdGlvbklkfWApKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmUgYSBSZXN1Ym1pc3Npb24gYnkgYSBnaXZlbiBJZFxuICAgKlxuICAgKiBAcGFyYW0gaXRlbUlkXG4gICAqIEBwYXJhbSBEbXNPYmplY3QgZG1zT2JqZWN0XG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8YW55PlxuICAgKi9cbiAgcmVtb3ZlUmVzdWJtaXNzaW9uc0J5SWQoaXRlbUlkLCBkbXNPYmplY3Q/OiBEbXNPYmplY3QpIHtcbiAgICByZXR1cm4gdGhpcy50cmlnZ2VyVXBkYXRlKGRtc09iamVjdCwgdGhpcy5iYWNrZW5kLmRlbChgL2Rtcy9yZXN1Ym1pc3Npb24vJHtpdGVtSWR9YCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSBhIFJlc3VibWlzc2lvblxuICAgKlxuICAgKiBAcGFyYW0gRG1zT2JqZWN0IGRtc09iamVjdFxuICAgKiBAcGFyYW0gc3RyaW5nIHN1YmplY3RcbiAgICogQHBhcmFtIGR1ZVxuICAgKiBAcGFyYW0gcmVjZWl2ZXJcbiAgICogQHBhcmFtIGJvb2xlYW4gc2VuZEVtYWlsXG4gICAqIEBwYXJhbSBib29sZWFuIG9ubHlFbWFpbFxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPGFueT5cbiAgICovXG4gIHVwZGF0ZVJlc3VibWlzc2lvbihkbXNPYmplY3Q6IERtc09iamVjdCwgc3ViamVjdDogc3RyaW5nLCBkdWUsIHJlY2VpdmVyLCBzZW5kRW1haWw6IGJvb2xlYW4sIG9ubHlFbWFpbDogYm9vbGVhbikge1xuICAgIHJldHVybiB0aGlzLnJlbW92ZVJlc3VibWlzc2lvbnNCeUlkKGRtc09iamVjdC5pZCkucGlwZShtZXJnZU1hcCgoKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5jcmVhdGVSZXN1Ym1pc3Npb24oZG1zT2JqZWN0LCBzdWJqZWN0LCBkdWUsIHJlY2VpdmVyLCBzZW5kRW1haWwsIG9ubHlFbWFpbCk7XG4gICAgfSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHRlciBmb3IgT3JnYW5pemF0aW9uIE9iamVjdHMgV2l0aCBSZWFkIFJpZ2h0c1xuICAgKlxuICAgKiBAcGFyYW0gRG1zT2JqZWN0W10gZG1zT2JqZWN0c1xuICAgKiBAcGFyYW0gc3RyaW5nW10gb3JnYU5hbWVzXG4gICAqIEBwYXJhbSBib29sZWFuIHNoYXJlQ2hpbGRyZW5cbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxhbnk+XG4gICAqL1xuICBzZXRPcmdhbml6YXRpb25PYmplY3RzV2l0aFJlYWRSaWdodHMoZG1zT2JqZWN0czogRG1zT2JqZWN0W10sIG9yZ2FOYW1lczogc3RyaW5nW10sIHNoYXJlQ2hpbGRyZW4gPSB0cnVlKSB7XG4gICAgY29uc3QgdXJsID0gYC9kbXMvYmF0Y2gvcHV0YWRkaXRpb25hbHZpc2liaWxpdHk/c2hhcmVjaGlsZHJlbj0ke3NoYXJlQ2hpbGRyZW59YDtcbiAgICBjb25zdCBkYXRhID0ge1xuICAgICAgb3JnYW5pemF0aW9ub2JqZWN0czogb3JnYU5hbWVzLFxuICAgICAgb2JqZWN0czogZG1zT2JqZWN0cy5tYXAobyA9PiAoe1xuICAgICAgICBpdGVtaWQ6IG8uaWQsXG4gICAgICAgIHR5cGU6IG8udHlwZS5uYW1lXG4gICAgICB9KSlcbiAgICB9O1xuICAgIHJldHVybiB0aGlzLnRyaWdnZXJVcGRhdGUoZG1zT2JqZWN0c1swXSwgdGhpcy5iYWNrZW5kLnB1dCh1cmwsIGRhdGEpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNb3ZlIGEgRE1TIE9iamVjdFxuICAgKlxuICAgKiBAcGFyYW0gaWRcbiAgICogQHBhcmFtIHR5cGVOYW1lXG4gICAqIEBwYXJhbSBwYXJlbnRJZFxuICAgKiBAcGFyYW0gcGFyZW50VHlwZU5hbWVcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxhbnk+XG4gICAqL1xuICBtb3ZlKGlkLCB0eXBlTmFtZSwgcGFyZW50SWQsIHBhcmVudFR5cGVOYW1lKSB7XG4gICAgY29uc3QgdXJpID0gYC9kbXMvbG9jYXRpb24vJHtpZH1gO1xuICAgIHJldHVybiB0aGlzLmJhY2tlbmQucG9zdChVdGlscy5idWlsZFVyaSh1cmksIHtcbiAgICAgIHR5cGU6IHR5cGVOYW1lLFxuICAgICAgcGFyZW50SWQsXG4gICAgICBwYXJlbnRUeXBlOiBwYXJlbnRUeXBlTmFtZVxuICAgIH0pLCB7fSk7XG4gIH1cblxuICAvKipcbiAgICogQ29weSBhIERNUyBPYmplY3RcbiAgICpcbiAgICogQHBhcmFtIGlkXG4gICAqIEBwYXJhbSB0eXBlTmFtZVxuICAgKiBAcGFyYW0gcGFyZW50SWRcbiAgICogQHBhcmFtIHBhcmVudFR5cGVOYW1lXG4gICAqIEBwYXJhbSBjcmVhdGVDb250ZW50TGlua1xuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPGFueT5cbiAgICovXG4gIGNvcHkoaWQsIHR5cGVOYW1lLCBwYXJlbnRJZCwgcGFyZW50VHlwZU5hbWUsIGNyZWF0ZUNvbnRlbnRMaW5rKSB7XG4gICAgY29uc3QgdXJpID0gYC9kbXMvY29weS8ke2lkfWA7XG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZC5wb3N0KFV0aWxzLmJ1aWxkVXJpKHVyaSwge1xuICAgICAgdHlwZTogdHlwZU5hbWUsXG4gICAgICBwYXJlbnRJZCxcbiAgICAgIHBhcmVudFR5cGU6IHBhcmVudFR5cGVOYW1lLFxuICAgICAgY3JlYXRlY29udGVudGxpbms6IGNyZWF0ZUNvbnRlbnRMaW5rXG4gICAgfSksIHt9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgYSBETVMgT2JqZWN0IHRvIEZpbmlsaXRlZFxuICAgKlxuICAgKiBAcGFyYW0gRG1zT2JqZWN0IGl0ZW1cbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxhbnk+XG4gICAqL1xuICBmaW5hbGl6ZShpdGVtOiBEbXNPYmplY3QpIHtcbiAgICBjb25zdCB1cmwgPSAnL2Rtcy9maW5hbGl6ZS8nICsgaXRlbS5pZCArICc/dHlwZT0nICsgaXRlbS50eXBlTmFtZTtcbiAgICByZXR1cm4gdGhpcy50cmlnZ2VyVXBkYXRlKGl0ZW0sIHRoaXMuYmFja2VuZC5wdXQodXJsKSk7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlIHRoZSBGaW5pbGl6ZWQgRmxhZyBmcm9tIGEgRE1TIE9iamVjdFxuICAgKlxuICAgKiBAcGFyYW0gRG1zT2JqZWN0IGl0ZW1cbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxhbnk+XG4gICAqL1xuICBkZWZpbmFsaXplKGl0ZW06IERtc09iamVjdCkge1xuICAgIGNvbnN0IHVybCA9ICcvZG1zL2RlZmluYWxpemUvJyArIGl0ZW0uaWQgKyAnP3R5cGU9JyArIGl0ZW0udHlwZU5hbWU7XG4gICAgcmV0dXJuIHRoaXMudHJpZ2dlclVwZGF0ZShpdGVtLCB0aGlzLmJhY2tlbmQucHV0KHVybCkpO1xuICB9XG5cbiAgY3JlYXRlTG9jYWxDb3B5T2ZETVNPYmplY3QoZG1zT2JqZWN0OiBEbXNPYmplY3QpOiBEbXNPYmplY3Qge1xuICAgIGNvbnN0IGJhc2UgPSB7XG4gICAgICBpZDogZG1zT2JqZWN0LmlkLFxuICAgICAgdGl0bGU6IGRtc09iamVjdC50aXRsZSxcbiAgICAgIGRlc2NyaXB0aW9uOiBkbXNPYmplY3QuZGVzY3JpcHRpb24sXG4gICAgICB2ZXJzaW9uOiBkbXNPYmplY3QudmVyc2lvbixcbiAgICAgIHZlcnNpb25zOiBkbXNPYmplY3QudmVyc2lvbnMsXG4gICAgICBkYXRhOiBkbXNPYmplY3QuZGF0YSxcbiAgICAgIHR5cGU6IGRtc09iamVjdC50eXBlTmFtZSxcblxuICAgICAgYWN0aXZldmVyc2lvbjogZG1zT2JqZWN0LmlzQWN0aXZlVmVyc2lvbixcbiAgICAgIGZpbmFsaXplZDogZG1zT2JqZWN0LmlzRmluYWxpemVkLFxuICAgICAgZmF2b3JpdGU6IGRtc09iamVjdC5pc0Zhdm9yaXRlLFxuICAgICAgZm9sZGVyOiBkbXNPYmplY3QuaXNGb2xkZXIsXG4gICAgICBpc2NvbnRleHRmb2xkZXI6IGRtc09iamVjdC5pc0NvbnRleHRGb2xkZXIsXG5cbiAgICAgIGNvbnRleHRmb2xkZXI6IGRtc09iamVjdC5jb250ZXh0Rm9sZGVyID8ge1xuICAgICAgICBpZDogZG1zT2JqZWN0LmNvbnRleHRGb2xkZXIuaWQsXG4gICAgICAgIHR5cGU6IGRtc09iamVjdC5jb250ZXh0Rm9sZGVyLnR5cGVOYW1lLFxuICAgICAgICB0aXRsZTogZG1zT2JqZWN0LmNvbnRleHRGb2xkZXIudGl0bGUsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBkbXNPYmplY3QuY29udGV4dEZvbGRlci5kZXNjcmlwdGlvblxuICAgICAgfSA6IG51bGwsXG5cbiAgICAgIGNyZWF0ZWQ6IGRtc09iamVjdC5jcmVhdGVkLFxuICAgICAgbW9kaWZpZWQ6IGRtc09iamVjdC5tb2RpZmllZCxcblxuICAgICAgbG9jazogIWRtc09iamVjdC5sb2NrID8gJ05PVF9MT0NLRUQnIDogZG1zT2JqZWN0LmxvY2suYnkubWUgPyAnTE9DS0VEX0JZX1NFU1NJT05fVVNFUicgOiAnTE9DS0VEX0JZX09USEVSX1VTRVInLFxuICAgICAgbG9ja2luZm86IGRtc09iamVjdC5sb2NrID8ge3VzZXJuYW1lOiBkbXNPYmplY3QubG9jay5ieS5uYW1lLCB1c2VydGl0bGU6IGRtc09iamVjdC5sb2NrLmJ5LmxhYmVsLCB0aW1lOiBkbXNPYmplY3QubG9jay5vbn0gOiBudWxsLFxuXG4gICAgICByaWdodHM6IFt7XG4gICAgICAgIHByaXZpbGVnZXM6IHtcbiAgICAgICAgICBzZWxlY3Q6IGRtc09iamVjdC5yaWdodHMuc2VsZWN0LFxuICAgICAgICAgIGVkaXQ6IGRtc09iamVjdC5yaWdodHMuZWRpdCxcbiAgICAgICAgICBkZWxldGU6IGRtc09iamVjdC5yaWdodHMuZGVsZXRlLFxuICAgICAgICAgIGZpbmFsaXplOiBkbXNPYmplY3QucmlnaHRzLmZpbmFsaXplLFxuICAgICAgICAgIHJlY3ljbGU6IGRtc09iamVjdC5yaWdodHMucmVjeWNsZVxuICAgICAgICB9XG4gICAgICB9XSxcblxuICAgICAgY29udGVudGlkOiBkbXNPYmplY3QuY29udGVudCA/IGRtc09iamVjdC5jb250ZW50LmlkIDogbnVsbCxcbiAgICAgIGNvbnRlbnR0eXBlOiBkbXNPYmplY3QuY29udGVudCA/IGRtc09iamVjdC5jb250ZW50LnR5cGUgOiBudWxsLFxuICAgICAgY29udGVudGNvdW50OiBkbXNPYmplY3QuY29udGVudCA/IGRtc09iamVjdC5jb250ZW50LmNvdW50IDogbnVsbCxcbiAgICAgIGNvbnRlbnRzOiBkbXNPYmplY3QuY29udGVudCA/IGRtc09iamVjdC5jb250ZW50LmNvbnRlbnRzIDogbnVsbCxcblxuICAgICAgc3Vic2NyaXB0aW9uczogZG1zT2JqZWN0LnN1YnNjcmlwdGlvbnMsXG4gICAgICByZXN1Ym1pc3Npb25zOiBkbXNPYmplY3QucmVzdWJtaXNzaW9ucyxcbiAgICAgIGFkZGl0aW9uYWx2aXNpYmlsaXR5OiBkbXNPYmplY3QuYWRkaXRpb25hbHZpc2liaWxpdHlcbiAgICB9O1xuXG4gICAgbGV0IGNvcGllZERtc09iamVjdCA9IG5ldyBEbXNPYmplY3QoYmFzZSk7XG4gICAgY29waWVkRG1zT2JqZWN0LnR5cGUgPSBkbXNPYmplY3QudHlwZTtcblxuICAgIHJldHVybiBjb3BpZWREbXNPYmplY3Q7XG4gIH1cblxufVxuIl19
|
|
491
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG1zLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lby1zZGsvY29yZS9zcmMvbGliL3NlcnZpY2UvZG1zL2Rtcy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxHQUFHLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5RCxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBYSxFQUFFLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFDLFNBQVMsRUFBRSxtQkFBbUIsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQzVFLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBQzNFLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUM1QyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFHckQsTUFBTSxDQUFOLElBQVksZ0JBSVg7QUFKRCxXQUFZLGdCQUFnQjtJQUMxQixvREFBZ0MsQ0FBQTtJQUNoQyw2REFBeUMsQ0FBQTtJQUN6QywrQ0FBMkIsQ0FBQTtBQUM3QixDQUFDLEVBSlcsZ0JBQWdCLEtBQWhCLGdCQUFnQixRQUkzQjtBQUVEOztHQUVHO0FBRUgsTUFBTSxPQUFPLFVBQVU7SUFFckIsWUFBb0IsT0FBdUIsRUFDakMsYUFBNEIsRUFDNUIsWUFBMEI7UUFGaEIsWUFBTyxHQUFQLE9BQU8sQ0FBZ0I7UUFDakMsa0JBQWEsR0FB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QUFDLE1BQU07WUFDeEIsU0FBUyxFQUFFLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJO1lBQzFELFdBQVcsRUFBRSxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSTtZQUM5RCxZQUFZLEVBQUUsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUk7WUFDaEUsUUFBUSxFQUFFLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJO1lBRS9ELGFBQWEsRUFBRSxTQUFTLENBQUMsYUFBYTtZQUN0QyxhQUFhLEVBQUUsU0FBUyxDQUFDLGFBQWE7WUFDdEMsb0JBQW9CLEVBQUUsU0FBUyxDQUFDLG9CQUFvQjtTQUNyRCxDQUFDO1FBRUYsSUFBSSxlQUFlLEdBQUcsSUFBSSxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDMUMsZUFBZSxDQUFDLElBQUksR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDO1FBRXRDLE9BQU8sZUFBZSxDQUFDO0lBQ3pCLENBQUM7OztZQTdnQkYsVUFBVTs7O1lBakJILGNBQWM7WUFDZCxhQUFhO1lBSWIsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7dGFwLCBtZXJnZU1hcCwgY2F0Y2hFcnJvciwgbWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtPYnNlcnZhYmxlLCBvZn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0Rtc09iamVjdCwgRG1zT2JqZWN0QXR0YWNobWVudH0gZnJvbSAnLi4vLi4vbW9kZWwvZG1zLW9iamVjdC5tb2RlbCc7XG5pbXBvcnQge0JhY2tlbmRTZXJ2aWNlfSBmcm9tICcuLi9iYWNrZW5kL2JhY2tlbmQuc2VydmljZSc7XG5pbXBvcnQge1N5c3RlbVNlcnZpY2V9IGZyb20gJy4uL3N5c3RlbS9zeXN0ZW0uc2VydmljZSc7XG5pbXBvcnQge1V0aWxzfSBmcm9tICcuLi8uLi91dGlsL3V0aWxzJztcbmltcG9ydCB7RG1zT2JqZWN0SGlzdG9yeUVudHJ5fSBmcm9tICcuLi8uLi9tb2RlbC9kbXMtb2JqZWN0LWhpc3RvcnkubW9kZWwnO1xuaW1wb3J0IHtFbmFpb0V2ZW50fSBmcm9tICcuLi9ldmVudHMvZXZlbnRzJztcbmltcG9ydCB7RXZlbnRTZXJ2aWNlfSBmcm9tICcuLi9ldmVudHMvZXZlbnQuc2VydmljZSc7XG5pbXBvcnQge0Rtc1BhcmFtc30gZnJvbSAnLi9kbXNQYXJhbXMuaW50ZXJmYWNlJztcblxuZXhwb3J0IGVudW0gU3Vic2NyaXB0aW9uTW9kZSB7XG4gIE9OTFlfSU5ERVhfREFUQV9DSEFOR0VEID0gJ01FVEEnLFxuICBPTkxZX0RPQ1VNRU5UX0NPTlRFTlRfQ0hBTkdFRCA9ICdDT05URU5UJyxcbiAgRE1TX09CSkVDVF9DSEFOR0VEID0gJ0JPVEgnXG59XG5cbi8qKlxuICogQ29sbGVjdGlvbiBvZiBETVMgU2VydmljZXNcbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIERtc1NlcnZpY2Uge1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYmFja2VuZDogQmFja2VuZFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzeXN0ZW1TZXJ2aWNlOiBTeXN0ZW1TZXJ2aWNlLFxuICAgIHByaXZhdGUgZXZlbnRTZXJ2aWNlOiBFdmVudFNlcnZpY2UpIHtcbiAgfVxuXG4gIC8qKlxuICAgKiBGZXRjaGVzIGEgZG1zIG9iamVjdC5cbiAgICpcbiAgICogQHBhcmFtIGlkIE9iamVjdHMgaWRcbiAgICogQHBhcmFtIHR5cGUgT2JqZWN0cyB0eXBlIG5hbWUsIHdpbGwgaW1wcm92ZSBsb2FkIHRpbWUgaWYgcHJvdmlkZWRcbiAgICogQHBhcmFtIHZlcnNpb24gVGFyZ2V0IHZlcnNpb25cbiAgICogQHBhcmFtIGludGVudCBVc2VkIGZvciBzZXJ2ZXIgc2lkZSBsb2dnaW5nLiBJZiB5b3UgcHJvdmlkZSBhbiBpbnRlbnQsIHRoZSBiYWNrZW5kIHdpbGwgcmVjb2duaXplIHRoZSByZXF1ZXN0IGFuZCBhZGQgaXQgdG8gaXRzIGxvZ3NcbiAgICogQHBhcmFtIHJlY3ljbGViaW4gSWYgdHJ1ZSwgb2JqZWN0cyBmcm9tIHJlY3ljbGViaW4gYXJlIGluY2x1ZGVkXG4gICAqIEBwYXJhbSB3aXRoU3RvcmFnZUluZm8gSWYgdHJ1ZSwgc3RvcmFnZWluZm8gaXMgaW5jbHVkZWQgb24gdGhlIGRtcyBvYmplY3RcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxEbXNPYmplY3Q+XG4gICAqL1xuICBnZXREbXNPYmplY3QoaWQ6IHN0cmluZywgdHlwZT86IHN0cmluZywgdmVyc2lvbj86IG51bWJlciwgaW50ZW50Pzogc3RyaW5nLCByZWN5Y2xlYmluPzogYm9vbGVhbiwgd2l0aFN0b3JhZ2VJbmZvPzogYm9vbGVhbik6IE9ic2VydmFibGU8RG1zT2JqZWN0PiB7XG4gICAgY29uc3QgdXJpID0gYC9kbXMvJHtpZH1gO1xuXG4gICAgY29uc3QgcSA9IHtcbiAgICAgIGFkZGl0aW9uYWx2aXNpYmlsaXR5OiB0cnVlLFxuICAgICAgc3Vic2NyaXB0aW9uOiAnQ1VSUkVOVCcsXG4gICAgICByZXN1Ym1pc3Npb246ICdDVVJSRU5UJyxcbiAgICAgIHJpZ2h0czogJ0NVUlJFTlQnLFxuICAgICAgZGF0YW1ldGE6ICd0cnVlJyxcbiAgICAgIGNvbnRleHRmb2xkZXI6ICd0cnVlJyxcbiAgICAgIHR5cGUsXG4gICAgICByZWN5Y2xlYmluLFxuICAgICAgdmVyc2lvbixcbiAgICAgIHN0b3JhZ2VpbmZvOiB3aXRoU3RvcmFnZUluZm8sXG4gICAgICAnX2ludGVudCc6IGludGVudFxuICAgIH07XG5cbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kXG4gICAgICAuZ2V0VmlhVGVtcENhY2hlKFV0aWxzLmJ1aWxkVXJpKHVyaSwgcSkpXG4gICAgICAucGlwZShcbiAgICAgICAgY2F0Y2hFcnJvcihVdGlscy5jYXRjaFNraXAoZXJyID0+IGVyci5zdGF0dXMgPT09IDQwNCkpLFxuICAgICAgICBtYXAocmVzID0+IHRoaXMucmVzb2x2ZU9iamVjdFR5cGVzKG5ldyBEbXNPYmplY3QocmVzKSkpXG4gICAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHRlciBmb3IgdGhlIERNUyBPYmplY3RzIGJ5IHBhcmFtc1xuICAgKlxuICAgKiBAcGFyYW0gRG1zUGFyYW1zIHBhcmFtc1xuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPERtc09iamVjdD5cbiAgICovXG4gIGdldERtc09iamVjdEJ5UGFyYW1zKHBhcmFtczogRG1zUGFyYW1zKTogT2JzZXJ2YWJsZTxEbXNPYmplY3Q+IHtcbiAgICByZXR1cm4gdGhpcy5nZXREbXNPYmplY3QocGFyYW1zLmlkLCBwYXJhbXMudHlwZSwgcGFyYW1zLnZlcnNpb24sIHBhcmFtcy5pbnRlbnQsIHBhcmFtcy5yZWN5Y2xlYmluLCBwYXJhbXMud2l0aFN0b3JhZ2VJbmZvKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW9sdmVyIG9mIE9iamVjdCBUeXBlcyBieSBETVMgT2JqZWN0XG4gICAqXG4gICAqIEBwYXJhbSBEbXNPYmplY3QgZG1zT2JqZWN0XG4gICAqIEByZXR1cm5zIERtc09iamVjdFxuICAgKi9cbiAgcmVzb2x2ZU9iamVjdFR5cGVzKGRtc09iamVjdDogRG1zT2JqZWN0KTogRG1zT2JqZWN0IHtcbiAgICBkbXNPYmplY3QudHlwZSA9IHRoaXMuc3lzdGVtU2VydmljZS5nZXRPYmplY3RUeXBlKGRtc09iamVjdC50eXBlTmFtZSk7XG5cbiAgICBpZiAoZG1zT2JqZWN0LmNvbnRleHRGb2xkZXIpIHtcbiAgICAgIGRtc09iamVjdC5jb250ZXh0Rm9sZGVyLnR5cGUgPSB0aGlzLnN5c3RlbVNlcnZpY2UuZ2V0T2JqZWN0VHlwZShkbXNPYmplY3QuY29udGV4dEZvbGRlci50eXBlTmFtZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRtc09iamVjdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWxldGVzIGEgRE1TIG9iamVjdC5cbiAgICogQHBhcmFtIGlkIFRoZSBpZCBvZiB0aGUgZG1zIG9iamVjdCB0byBiZSBkZWxldGVkLlxuICAgKiBAcGFyYW0gdHlwZSBUeXBlIG9mIG9iamVjdFxuICAgKiBAcGFyYW0gaGFyZERlbGV0ZSBJZiBvYmplY3Qgc2hvdWxkIHJlYWxseSBiZSBkZWxldGVkIG9yIG9ubHkgcHV0IGludG8gdGhlIHJlY3ljbGUgYmluXG4gICAqL1xuICBkZWxldGVEbXNPYmplY3QoaWQ6IHN0cmluZywgdHlwZT86IHN0cmluZywgaGFyZERlbGV0ZT86IGJvb2xlYW4pOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGNvbnN0IHVybCA9IGAvZG1zLyR7aWR9YDtcbiAgICBjb25zdCBwYXJhbXMgPSB7fTtcbiAgICBpZiAodHlwZSAmJiB0eXBlLmxlbmd0aCA+IDApIHtcbiAgICAgIHBhcmFtc1sndHlwZSddID0gdHlwZTtcbiAgICB9XG4gICAgaWYgKGhhcmREZWxldGUpIHtcbiAgICAgIHBhcmFtc1snaGFyZGRlbGV0ZSddID0gaGFyZERlbGV0ZTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZC5kZWwoVXRpbHMuYnVpbGRVcmkodXJsLCBwYXJhbXMpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBjb250ZXh0IHBhdGggb2YgdGhlIGdpdmVuIGRtcyBvYmplY3RcbiAgICogQHBhcmFtIGlkIFRoZSBpZCBvZiB0aGUgb2JqZWN0LlxuICAgKiBAcmV0dXJucyBUaGUgY29udGV4dCBwYXRoIG9mIHRoZSBkbXMgb2JqZWN0XG4gICAqL1xuICBnZXRDb250ZXh0UGF0aChpZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZC5nZXQoYC9kbXMvJHtpZH0vY29udGV4dGApXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKFxuICAgICAgICAgIGNvbnRleHRQYXRoID0+IHtcbiAgICAgICAgICAgIGNvbnRleHRQYXRoLmZvckVhY2gocGF0aEl0ZW0gPT4ge1xuICAgICAgICAgICAgICBwYXRoSXRlbS5kbXNvYmplY3QgPSBuZXcgRG1zT2JqZWN0KHBhdGhJdGVtLmRtc29iamVjdCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBjb250ZXh0UGF0aDtcbiAgICAgICAgICB9XG4gICAgICAgICkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZldGNoZXMgdGhlIGNoaWxkcmVuIG9mIGEgRG1zT2JqZWN0LlxuICAgKlxuICAgKiBAcGFyYW0gZG1zT2JqZWN0XG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8RG1zT2JqZWN0W10+XG4gICAqL1xuICBnZXRDaGlsZHJlbihkbXNPYmplY3Q6IERtc09iamVjdCk6IE9ic2VydmFibGU8RG1zT2JqZWN0W10+IHtcbiAgICBjb25zdCB1cmkgPSBgL2Rtcy8ke2Rtc09iamVjdC5pZH0vY2hpbGRyZW5gO1xuICAgIHJldHVybiB0aGlzLmJhY2tlbmQuZ2V0VmlhVGVtcENhY2hlKFV0aWxzLmJ1aWxkVXJpKHVyaSwge3R5cGU6IGRtc09iamVjdC50eXBlLm5hbWV9KSkucGlwZShcbiAgICAgIG1hcCgocmVzOiBhbnlbXSkgPT4ge1xuICAgICAgICByZXR1cm4gcmVzLm1hcChyID0+IHRoaXMucmVzb2x2ZU9iamVjdFR5cGVzKG5ldyBEbXNPYmplY3QocikpKTtcbiAgICAgIH0pKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGZXRjaGVzIHRoZSB2ZXJzaW9ucyBvZiBhIERtc09iamVjdC5cbiAgICpcbiAgICogQHBhcmFtIGlkXG4gICAqIEBwYXJhbSB0eXBlXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8RG1zT2JqZWN0PlxuICAgKi9cbiAgZ2V0VmVyc2lvbnMoaWQ6IHN0cmluZywgdHlwZT86IHN0cmluZyk6IE9ic2VydmFibGU8RG1zT2JqZWN0PiB7XG4gICAgY29uc3QgdXJpID0gYC9kbXMvJHtpZH0vdmVyc2lvbnNgO1xuICAgIHJldHVybiB0aGlzLmJhY2tlbmQuZ2V0VmlhVGVtcENhY2hlKFV0aWxzLmJ1aWxkVXJpKHVyaSwge3R5cGV9KSkucGlwZShcbiAgICAgIG1hcCgocmVzOiBhbnkpID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBEbXNPYmplY3QocmVzKTtcbiAgICAgIH0pKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGZXRjaGVzIHRoZSBhdHRhY2htZW50cyBvZiBhIERtc09iamVjdC5cbiAgICpcbiAgICogQHBhcmFtIGRtc09iamVjdFxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPERtc09iamVjdEF0dGFjaG1lbnRbXT5cbiAgICovXG4gIGdldEF0dGFjaG1lbnRzKGRtc09iamVjdDogRG1zT2JqZWN0KTogT2JzZXJ2YWJsZTxEbXNPYmplY3RBdHRhY2htZW50W10+IHtcbiAgICBjb25zdCB0eXBlID0gZG1zT2JqZWN0LmNvbnRlbnQ/LnR5cGU7XG4gICAgY29uc3QgdmVyc2lvbiA9IGRtc09iamVjdC5jb250ZW50Py5saW5rZWQgPyAtMSA6IGRtc09iamVjdC52ZXJzaW9uO1xuICAgIGNvbnN0IGNvbnRlbnRJRCA9IGRtc09iamVjdC5jb250ZW50Py5pZDtcbiAgICBjb25zdCB1cmkgPSBVdGlscy5idWlsZFVyaShgL2Rtcy8ke2NvbnRlbnRJRH0vYXR0YWNobWVudHNgLCB7dHlwZSwgdmVyc2lvbn0pO1xuICAgIHJldHVybiAhY29udGVudElEID8gb2YoW10pIDogdGhpcy5iYWNrZW5kLmdldFZpYVRlbXBDYWNoZSh1cmkpLnBpcGUoXG4gICAgICBjYXRjaEVycm9yKFV0aWxzLmNhdGNoU2tpcChlcnIgPT4gZXJyLnN0YXR1cyA9PT0gNDA0KSksXG4gICAgICBtYXAoKHJlczogYW55KSA9PiByZXMuYXR0YWNobWVudGluZm8gJiYgcmVzLmF0dGFjaG1lbnRpbmZvLmF0dGFjaG1lbnRzID8gcmVzLmF0dGFjaG1lbnRpbmZvLmF0dGFjaG1lbnRzXG4gICAgICAgIC5tYXAoKGEsIGkpID0+IG5ldyBEbXNPYmplY3RBdHRhY2htZW50KE9iamVjdC5hc3NpZ24oYSwge2lkOiBpLCBwcmV2aWV3VXJpOiB0aGlzLmdldEF0dGFjaG1lbnRCeUluZGV4KGNvbnRlbnRJRCwgaSwgdHlwZSwgdmVyc2lvbil9KSkpIDogW11cbiAgICAgICkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZldGNoZXMgdGhlIHNwZWNpZmljIGF0dGFjaG1lbnQgb2YgYSBEbXNPYmplY3QuXG4gICAqXG4gICAqIEBwYXJhbSBpZFxuICAgKiBAcGFyYW0gaW5kZXhcbiAgICogQHBhcmFtIHR5cGVcbiAgICogQHBhcmFtIHZlcnNpb25cbiAgICogQHJldHVybnMgc3RyaW5nXG4gICAqL1xuICBnZXRBdHRhY2htZW50QnlJbmRleChpZDogc3RyaW5nLCBpbmRleDogbnVtYmVyLCB0eXBlOiBzdHJpbmcsIHZlcnNpb24/OiBudW1iZXIpOiBzdHJpbmcge1xuICAgIGNvbnN0IHVyaSA9IFV0aWxzLmJ1aWxkVXJpKGAvZG1zLyR7aWR9L2F0dGFjaG1lbnRzLyR7aW5kZXh9YCwge3R5cGUsIHZlcnNpb259KTtcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kLmdldFNlcnZpY2VCYXNlKCkgKyB1cmk7XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGVzIHRoZSBVUkkgZm9yIGdldHRpbmcgYSBEbXNPYmplY3RzIHNsaWRlIChQcmV2aWV3IGltYWdlKS5cbiAgICpcbiAgICogQHBhcmFtIGlkIE9iamVjdHMgaWRcbiAgICogQHBhcmFtIHR5cGUgT2JqZWN0cyB0eXBlIG5hbWUsIHdpbGwgaW1wcm92ZSBsb2FkIHRpbWUgaWYgcHJvdmlkZWRcbiAgICogQHBhcmFtIHZlcnNpb24gVGFyZ2V0IHZlcnNpb25cbiAgICogQHBhcmFtIHNpemUgVGhlIHNpemUgb2YgdGhlIHByZXZpZXcgaW1hZ2UgaW4gcHhcbiAgICogQHJldHVybnMgc3RyaW5nXG4gICAqL1xuICBnZXRTbGlkZShpZDogc3RyaW5nLCB0eXBlPzogc3RyaW5nLCB2ZXJzaW9uPzogbnVtYmVyLCBzaXplPzogbnVtYmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gVXRpbHMuYnVpbGRVcmkoXG4gICAgICB0aGlzLmJhY2tlbmQuZ2V0U2VydmljZUJhc2UoKSArICcvZG1zLycgKyBpZCArICcvc2xpZGUnLFxuICAgICAge1xuICAgICAgICB0eXBlLFxuICAgICAgICB2ZXJzaW9uLFxuICAgICAgICBoZWlnaHQ6IHNpemVcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlcyB0aGUgVVJJIGZvciBnZXR0aW5nIGEgRG1zT2JqZWN0cyBwcmV2aWV3IChQREYgcmVuZGl0aW9uKS5cbiAgICpcbiAgICogQHBhcmFtIGlkIE9iamVjdHMgaWRcbiAgICogQHBhcmFtIHR5cGVdIE9iamVjdHMgdHlwZSBuYW1lLCB3aWxsIGltcHJvdmUgbG9hZCB0aW1lIGlmIHByb3ZpZGVkXG4gICAqIEBwYXJhbSB2ZXJzaW9uIFRhcmdldCB2ZXJzaW9uXG4gICAqIEBwYXJhbSByZW5kaXRpb24gVGFyZ2V0IHJlbmRpdGlvbiAoUERGKVxuICAgKiBAcmV0dXJucyBzdHJpbmdcbiAgICovXG4gIGdldFByZXZpZXcoaWQ6IHN0cmluZywgdHlwZT86IHN0cmluZywgdmVyc2lvbj86IG51bWJlciwgcmVuZGl0aW9uPzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gVXRpbHMuYnVpbGRVcmkoXG4gICAgICB0aGlzLmJhY2tlbmQuZ2V0U2VydmljZUJhc2UoKSArICcvZG1zLycgKyBpZCArICcvY29udGVudCcsXG4gICAgICB7XG4gICAgICAgIHJlbmRpdGlvbixcbiAgICAgICAgdHlwZSxcbiAgICAgICAgdmVyc2lvblxuICAgICAgfVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyBhbiBleGlzdGluZyBkbXMgb2JqZWN0LlxuICAgKlxuICAgKiBAcGFyYW0gaWQgSUQgb2YgdGhlIG9iamVjdCB0byBiZSB1cGRhdGVkXG4gICAqIEBwYXJhbSBpbmRleGRhdGEgT2JqZWN0IGhvbGRpbmcgdGhlIG9iamVjdHMgaW5kZXhkYXRhIChwcm9wZXJ0eTogdmFsdWUpXG4gICAqIEBwYXJhbSB0eXBlIFRoZSBvYmplY3QgdHlwZSBvZiB0aGUgb2JqZWN0IHRvIGJlIHVwZGF0ZWRcbiAgICogQHBhcmFtIHZlcnNpb24gVGhlIGN1cnJlbnQgdmVyc2lvbiBvZiB0aGUgb2JqZWN0IHRvIGJlIHVwZGF0ZWRcbiAgICogQHBhcmFtIGNoZWNrcmVmZXJlbmNlcyBJZiB0aGUgcmVmZXJlbmNlIGZpZWxkcyBzaG91bGQgYmUgdmFsaWRhdGVkIG9yIG5vdFxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPERtc09iamVjdD4gVGhlIHVwZGF0ZWQgZG1zIG9iamVjdFxuICAgKi9cbiAgdXBkYXRlT2JqZWN0KGlkOiBzdHJpbmcsIGluZGV4ZGF0YTogYW55LCB0eXBlPzogc3RyaW5nLCB2ZXJzaW9uPzogbnVtYmVyLCBjaGVja3JlZmVyZW5jZXM/OiBib29sZWFuKTogT2JzZXJ2YWJsZTxEbXNPYmplY3Q+IHtcbiAgICBjb25zdCB1cmwgPSBVdGlscy5idWlsZFVyaShgL2Rtcy8ke2lkfWAsIHt0eXBlLCB2ZXJzaW9uLCBjaGVja3JlZmVyZW5jZXN9KTtcbiAgICByZXR1cm4gdGhpcy50cmlnZ2VyVXBkYXRlKDxhbnk+e2lkLCB0eXBlLCB0eXBlTmFtZTogdHlwZX0sIHRoaXMuYmFja2VuZC5wdXQodXJsLCBpbmRleGRhdGEpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGZXRjaCB0aGUgaGlzdG9yeSAoYXVkaXQpIG9mIG9uZSBkbXMgb2JqZWN0XG4gICAqXG4gICAqIEBwYXJhbSBpZCBJRCBvZiB0aGUgZG1zIG9iamVjdCB0byBmZXRjaCBoaXN0b3J5IGZvclxuICAgKiBAcGFyYW0gdHlwZSBUeXBlIG9mIHRoZSBkbXMgb2JqZWN0IHRvIGZldGNoIGhpc3RvcnkgZm9yXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8RG1zT2JqZWN0SGlzdG9yeUVudHJ5W10+IFRoZSBoaXN0b3J5IG9mIHRoZSBkbXMgb2JqZWN0XG4gICAqL1xuICBnZXRIaXN0b3J5KGlkOiBzdHJpbmcsIHR5cGU/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPERtc09iamVjdEhpc3RvcnlFbnRyeVtdPiB7XG4gICAgY29uc3QgdXJpID0gYC9kbXMvJHtpZH0vYXVkaXRgO1xuICAgIHJldHVybiB0aGlzLmJhY2tlbmQuZ2V0SnNvbihVdGlscy5idWlsZFVyaSh1cmksIHt0eXBlOiB0eXBlfSkpLnBpcGUobWFwKChyZXMpID0+IHJlcy5hdWRpdC5tYXAoKGF1ZGl0RW50cnkpID0+IG5ldyBEbXNPYmplY3RIaXN0b3J5RW50cnkoYXVkaXRFbnRyeSkpKSk7XG4gIH1cblxuICAvKipcbiAgICogUmVzdG9yZXMgYW4gZWFybGllciB2ZXJzaW9uIG9mIHRoZSBzZWxlY3RlZCBEbXNPYmplY3QgYnkgYWRkaW5nIHRoZSBlYXJsaWVyIHZlcnNpb25cbiAgICogYXMgdGhlIG5ldyByZWNlbnQgdmVyc2lvbi5cbiAgICpcbiAgICogQHBhcmFtIGlkIERNUyBvYmplY3QgaWRcbiAgICogQHBhcmFtIHZlcnNpb24gVGhlIHZlcnNpb24gdG8gYmUgcmVzdG9yZWRcbiAgICogQHBhcmFtIHR5cGUgVGhlIGRtcyBvYmplY3QgdHlwZVxuICAgKiBAcmV0dXJuXG4gICAqL1xuICByZXN0b3JlVmVyc2lvbihpZDogc3RyaW5nLCB2ZXJzaW9uOiBudW1iZXIsIHR5cGU/OiBzdHJpbmcpIHtcbiAgICBjb25zdCB1cmkgPSBgL2Rtcy9yZXN0b3JldmVyc2lvbi8ke2lkfS8ke3ZlcnNpb259YDtcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kLnBvc3QoVXRpbHMuYnVpbGRVcmkodXJpLCB7dHlwZTogdHlwZX0pLCBudWxsKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBpZiBkbXNPYmplY3QgaXMgc3BlY2lmaWVkLCBsb2FkIGxhdGVzdCB2ZXJzaW9uIGFuZCB0cmlnZ2VyIEVuYWlvIGV2ZW50IERNU19PQkpFQ1RfVVBEQVRFRFxuICAgKlxuICAgKiBAcGFyYW0gZG1zT2JqZWN0XG4gICAqIEBwYXJhbSByZXF1ZXN0XG4gICAqIEByZXR1cm5cbiAgICovXG4gIHRyaWdnZXJVcGRhdGUoZG1zT2JqZWN0OiBEbXNPYmplY3QsIHJlcXVlc3Q6IE9ic2VydmFibGU8YW55Pikge1xuICAgIHJldHVybiAhZG1zT2JqZWN0ID8gcmVxdWVzdCA6IHJlcXVlc3QucGlwZShcbiAgICAgIG1lcmdlTWFwKCgpID0+IHRoaXMuZ2V0RG1zT2JqZWN0KGRtc09iamVjdC5pZCwgZG1zT2JqZWN0LnR5cGVOYW1lKSksXG4gICAgICB0YXAoX2Rtc09iamVjdCA9PiB0aGlzLmV2ZW50U2VydmljZS50cmlnZ2VyKEVuYWlvRXZlbnQuRE1TX09CSkVDVF9VUERBVEVELCBfZG1zT2JqZWN0KSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSBDb250ZW50XG4gICAqXG4gICAqIEBwYXJhbSBEbXNPYmplY3QgZG1zT2JqZWN0XG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8YW55PlxuICAgKi9cbiAgcmVtb3ZlQ29udGVudChkbXNPYmplY3Q6IERtc09iamVjdCkge1xuICAgIGNvbnN0IHVyaSA9IGAvZG1zLyR7ZG1zT2JqZWN0LmlkfS9jb250ZW50YDtcbiAgICByZXR1cm4gdGhpcy50cmlnZ2VyVXBkYXRlKGRtc09iamVjdCwgdGhpcy5iYWNrZW5kLmRlbCh1cmkpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IERtc09iamVjdC5cbiAgICogQHBhcmFtIHRhcmdldFR5cGUgVGFyZ2V0IG9iamVjdCB0eXBlIG5hbWVcbiAgICogQHBhcmFtIGZpbGUgRmlsZSB0byBiZSBhZGRlZCBhcyBEbXNPYmplY3RzIGNvbnRlbnRcbiAgICogQHBhcmFtIGluZGV4RGF0YSBJbmRleGRhdGEgYXMgcGxhaW4gb2JqZWN0IHdoZXJlIGtleXMgYXJlIHRoZSBvYmplY3RzIHByb3BlcnRpZXMgYW5kIHZhbHVlcyB0aGUgdmFsdWVzIHRvIGJlIGFwcGxpZWQgdG8gaXRcbiAgICogQHBhcmFtIHBhcmVudCBQYXJlbnQgY29udGV4dCBmb2xkZXIgb2YgdGhlIG5ldyBEbXNPYmplY3RcbiAgICovXG4gIGNyZWF0ZURtc09iamVjdCh0YXJnZXRUeXBlOiBzdHJpbmcsIGZpbGU/OiBGaWxlLCBpbmRleERhdGE/OiBhbnksIHBhcmVudD86IHtpZDogc3RyaW5nLCB0eXBlPzogc3RyaW5nfSk6IE9ic2VydmFibGU8e2lkOiBzdHJpbmcsIHVyaTogc3RyaW5nfT4ge1xuXG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcbiAgICBpZiAoaW5kZXhEYXRhKSB7XG4gICAgICBmb3JtRGF0YS5hcHBlbmQoJ2RhdGEnLCBuZXcgQmxvYihbSlNPTi5zdHJpbmdpZnkoaW5kZXhEYXRhKV0sIHtcbiAgICAgICAgdHlwZTogJ2FwcGxpY2F0aW9uL2pzb24nXG4gICAgICB9KSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGZvcm1EYXRhLmFwcGVuZCgnbm9pbmRleGRhdGEnLCAnJyk7XG4gICAgfVxuXG4gICAgaWYgKGZpbGUpIHtcbiAgICAgIGZvcm1EYXRhLmFwcGVuZCgnZmlsZXNbXScsIGZpbGUsIFV0aWxzLmVuY29kZUZpbGVOYW1lKGZpbGUubmFtZSkpO1xuICAgIH1cblxuICAgIGxldCB1cmkgPSBgL2Rtcy9jcmVhdGUvJHt0YXJnZXRUeXBlfWA7XG4gICAgaWYgKHBhcmVudCkge1xuICAgICAgdXJpID0gVXRpbHMuYnVpbGRVcmkodXJpLCB7XG4gICAgICAgIHBhcmVudElkOiBwYXJlbnQuaWQsXG4gICAgICAgIHBhcmVudFR5cGU6IHBhcmVudC50eXBlXG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZC5wb3N0TXVsdGlQYXJ0KHVyaSwgZm9ybURhdGEsIG51bGwsIHtoZWFkZXJzOiB7fX0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIFN1YnNjcmlwdGlvblxuICAgKlxuICAgKiBAcGFyYW0gRG1zT2JqZWN0IGRtc09iamVjdFxuICAgKiBAcGFyYW0gc3RyaW5nIHN1YmplY3RcbiAgICogQHBhcmFtIHJlY2VpdmVyXG4gICAqIEBwYXJhbSBib29sZWFuIHNlbmRlbWFpbFxuICAgKiBAcGFyYW0gYm9vbGVhbiBvbmx5ZW1haWxcbiAgICogQHBhcmFtIG1vZGUgU3Vic2NyaXB0aW9uTW9kZVxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPGFueT5cbiAgICovXG4gIGNyZWF0ZVN1YnNjcmlwdGlvbihkbXNPYmplY3Q6IERtc09iamVjdCwgc3ViamVjdDogc3RyaW5nLCByZWNlaXZlciwgc2VuZGVtYWlsOiBib29sZWFuLCBvbmx5ZW1haWw6IGJvb2xlYW4sIG1vZGU/OiBTdWJzY3JpcHRpb25Nb2RlKSB7XG4gICAgY29uc3QgdXJpID0gYC9kbXMvc3Vic2NyaXB0aW9uLyR7ZG1zT2JqZWN0LmlkfWA7XG4gICAgcmV0dXJuIHRoaXMudHJpZ2dlclVwZGF0ZShkbXNPYmplY3QsIHRoaXMuYmFja2VuZC5wb3N0KFV0aWxzLmJ1aWxkVXJpKHVyaSwge1xuICAgICAgc3ViamVjdCxcbiAgICAgIHR5cGU6IGRtc09iamVjdC50eXBlTmFtZSxcbiAgICAgIHJlY2VpdmVyLFxuICAgICAgc2VuZGVtYWlsLFxuICAgICAgb25seWVtYWlsLFxuICAgICAgbW9kZVxuICAgIH0pLCB7fSlcbiAgICApO1xuXG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgUmVzdWJtaXNzaW9uXG4gICAqXG4gICAqIEBwYXJhbSBEbXNPYmplY3QgZG1zT2JqZWN0XG4gICAqIEBwYXJhbSBzdHJpbmcgc3ViamVjdFxuICAgKiBAcGFyYW0gZHVlXG4gICAqIEBwYXJhbSByZWNlaXZlclxuICAgKiBAcGFyYW0gYm9vbGVhbiBzZW5kRW1haWxcbiAgICogQHBhcmFtIGJvb2xlYW4gb25seUVtYWlsXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8YW55PlxuICAgKi9cbiAgY3JlYXRlUmVzdWJtaXNzaW9uKGRtc09iamVjdDogRG1zT2JqZWN0LCBzdWJqZWN0OiBzdHJpbmcsIGR1ZSwgcmVjZWl2ZXIsIHNlbmRFbWFpbDogYm9vbGVhbiwgb25seUVtYWlsOiBib29sZWFuKSB7XG4gICAgY29uc3QgdXJpID0gYC9kbXMvcmVzdWJtaXNzaW9uLyR7ZG1zT2JqZWN0LmlkfWA7XG4gICAgcmV0dXJuIHRoaXMudHJpZ2dlclVwZGF0ZShkbXNPYmplY3QsIHRoaXMuYmFja2VuZC5wb3N0KFV0aWxzLmJ1aWxkVXJpKHVyaSwge1xuICAgICAgc3ViamVjdCxcbiAgICAgIHR5cGU6IGRtc09iamVjdC50eXBlTmFtZSxcbiAgICAgIHJlY2VpdmVyLFxuICAgICAgZHVlOiBkdWUgPyBkdWUudG9JU09TdHJpbmcoKSA6ICcnLFxuICAgICAgc2VuZGVtYWlsOiBzZW5kRW1haWwsXG4gICAgICBvbmx5ZW1haWw6IG9ubHlFbWFpbFxuICAgIH0pLCB7fSlcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlYW1vdmUgYSBTdWJzY3JpcHRpb24gYnkgYSBnaXZlbiBJZFxuICAgKlxuICAgKiBAcGFyYW0gc3Vic2NyaXB0aW9uSWRcbiAgICogQHBhcmFtIERtc09iamVjdCBkbXNPYmplY3RcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxhbnk+XG4gICAqL1xuICByZW1vdmVTdWJzY3JpcHRpb25CeUlkKHN1YnNjcmlwdGlvbklkLCBkbXNPYmplY3Q/OiBEbXNPYmplY3QpIHtcbiAgICByZXR1cm4gdGhpcy50cmlnZ2VyVXBkYXRlKGRtc09iamVjdCwgdGhpcy5iYWNrZW5kLmRlbChgL21lc3NhZ2Vwcm92aWRlci9zdWJzY3JpcHRpb24vJHtzdWJzY3JpcHRpb25JZH1gKSk7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlIGEgUmVzdWJtaXNzaW9uIGJ5IGEgZ2l2ZW4gSWRcbiAgICpcbiAgICogQHBhcmFtIGl0ZW1JZFxuICAgKiBAcGFyYW0gRG1zT2JqZWN0IGRtc09iamVjdFxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPGFueT5cbiAgICovXG4gIHJlbW92ZVJlc3VibWlzc2lvbnNCeUlkKGl0ZW1JZCwgZG1zT2JqZWN0PzogRG1zT2JqZWN0KSB7XG4gICAgcmV0dXJuIHRoaXMudHJpZ2dlclVwZGF0ZShkbXNPYmplY3QsIHRoaXMuYmFja2VuZC5kZWwoYC9kbXMvcmVzdWJtaXNzaW9uLyR7aXRlbUlkfWApKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgYSBSZXN1Ym1pc3Npb25cbiAgICpcbiAgICogQHBhcmFtIERtc09iamVjdCBkbXNPYmplY3RcbiAgICogQHBhcmFtIHN0cmluZyBzdWJqZWN0XG4gICAqIEBwYXJhbSBkdWVcbiAgICogQHBhcmFtIHJlY2VpdmVyXG4gICAqIEBwYXJhbSBib29sZWFuIHNlbmRFbWFpbFxuICAgKiBAcGFyYW0gYm9vbGVhbiBvbmx5RW1haWxcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxhbnk+XG4gICAqL1xuICB1cGRhdGVSZXN1Ym1pc3Npb24oZG1zT2JqZWN0OiBEbXNPYmplY3QsIHN1YmplY3Q6IHN0cmluZywgZHVlLCByZWNlaXZlciwgc2VuZEVtYWlsOiBib29sZWFuLCBvbmx5RW1haWw6IGJvb2xlYW4pIHtcbiAgICByZXR1cm4gdGhpcy5yZW1vdmVSZXN1Ym1pc3Npb25zQnlJZChkbXNPYmplY3QuaWQpLnBpcGUobWVyZ2VNYXAoKCkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlUmVzdWJtaXNzaW9uKGRtc09iamVjdCwgc3ViamVjdCwgZHVlLCByZWNlaXZlciwgc2VuZEVtYWlsLCBvbmx5RW1haWwpO1xuICAgIH0pKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXR0ZXIgZm9yIE9yZ2FuaXphdGlvbiBPYmplY3RzIFdpdGggUmVhZCBSaWdodHNcbiAgICpcbiAgICogQHBhcmFtIERtc09iamVjdFtdIGRtc09iamVjdHNcbiAgICogQHBhcmFtIHN0cmluZ1tdIG9yZ2FOYW1lc1xuICAgKiBAcGFyYW0gYm9vbGVhbiBzaGFyZUNoaWxkcmVuXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8YW55PlxuICAgKi9cbiAgc2V0T3JnYW5pemF0aW9uT2JqZWN0c1dpdGhSZWFkUmlnaHRzKGRtc09iamVjdHM6IERtc09iamVjdFtdLCBvcmdhTmFtZXM6IHN0cmluZ1tdLCBzaGFyZUNoaWxkcmVuID0gdHJ1ZSkge1xuICAgIGNvbnN0IHVybCA9IGAvZG1zL2JhdGNoL3B1dGFkZGl0aW9uYWx2aXNpYmlsaXR5P3NoYXJlY2hpbGRyZW49JHtzaGFyZUNoaWxkcmVufWA7XG4gICAgY29uc3QgZGF0YSA9IHtcbiAgICAgIG9yZ2FuaXphdGlvbm9iamVjdHM6IG9yZ2FOYW1lcyxcbiAgICAgIG9iamVjdHM6IGRtc09iamVjdHMubWFwKG8gPT4gKHtcbiAgICAgICAgaXRlbWlkOiBvLmlkLFxuICAgICAgICB0eXBlOiBvLnR5cGUubmFtZVxuICAgICAgfSkpXG4gICAgfTtcbiAgICByZXR1cm4gdGhpcy50cmlnZ2VyVXBkYXRlKGRtc09iamVjdHNbMF0sIHRoaXMuYmFja2VuZC5wdXQodXJsLCBkYXRhKSk7XG4gIH1cblxuICAvKipcbiAgICogTW92ZSBhIERNUyBPYmplY3RcbiAgICpcbiAgICogQHBhcmFtIGlkXG4gICAqIEBwYXJhbSB0eXBlTmFtZVxuICAgKiBAcGFyYW0gcGFyZW50SWRcbiAgICogQHBhcmFtIHBhcmVudFR5cGVOYW1lXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8YW55PlxuICAgKi9cbiAgbW92ZShpZCwgdHlwZU5hbWUsIHBhcmVudElkLCBwYXJlbnRUeXBlTmFtZSkge1xuICAgIGNvbnN0IHVyaSA9IGAvZG1zL2xvY2F0aW9uLyR7aWR9YDtcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kLnBvc3QoVXRpbHMuYnVpbGRVcmkodXJpLCB7XG4gICAgICB0eXBlOiB0eXBlTmFtZSxcbiAgICAgIHBhcmVudElkLFxuICAgICAgcGFyZW50VHlwZTogcGFyZW50VHlwZU5hbWVcbiAgICB9KSwge30pO1xuICB9XG5cbiAgLyoqXG4gICAqIENvcHkgYSBETVMgT2JqZWN0XG4gICAqXG4gICAqIEBwYXJhbSBpZFxuICAgKiBAcGFyYW0gdHlwZU5hbWVcbiAgICogQHBhcmFtIHBhcmVudElkXG4gICAqIEBwYXJhbSBwYXJlbnRUeXBlTmFtZVxuICAgKiBAcGFyYW0gY3JlYXRlQ29udGVudExpbmtcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxhbnk+XG4gICAqL1xuICBjb3B5KGlkLCB0eXBlTmFtZSwgcGFyZW50SWQsIHBhcmVudFR5cGVOYW1lLCBjcmVhdGVDb250ZW50TGluaykge1xuICAgIGNvbnN0IHVyaSA9IGAvZG1zL2NvcHkvJHtpZH1gO1xuICAgIHJldHVybiB0aGlzLmJhY2tlbmQucG9zdChVdGlscy5idWlsZFVyaSh1cmksIHtcbiAgICAgIHR5cGU6IHR5cGVOYW1lLFxuICAgICAgcGFyZW50SWQsXG4gICAgICBwYXJlbnRUeXBlOiBwYXJlbnRUeXBlTmFtZSxcbiAgICAgIGNyZWF0ZWNvbnRlbnRsaW5rOiBjcmVhdGVDb250ZW50TGlua1xuICAgIH0pLCB7fSk7XG4gIH1cblxuICAvKipcbiAgICogU2V0IGEgRE1TIE9iamVjdCB0byBGaW5pbGl0ZWRcbiAgICpcbiAgICogQHBhcmFtIERtc09iamVjdCBpdGVtXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8YW55PlxuICAgKi9cbiAgZmluYWxpemUoaXRlbTogRG1zT2JqZWN0KSB7XG4gICAgY29uc3QgdXJsID0gJy9kbXMvZmluYWxpemUvJyArIGl0ZW0uaWQgKyAnP3R5cGU9JyArIGl0ZW0udHlwZU5hbWU7XG4gICAgcmV0dXJuIHRoaXMudHJpZ2dlclVwZGF0ZShpdGVtLCB0aGlzLmJhY2tlbmQucHV0KHVybCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSB0aGUgRmluaWxpemVkIEZsYWcgZnJvbSBhIERNUyBPYmplY3RcbiAgICpcbiAgICogQHBhcmFtIERtc09iamVjdCBpdGVtXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8YW55PlxuICAgKi9cbiAgZGVmaW5hbGl6ZShpdGVtOiBEbXNPYmplY3QpIHtcbiAgICBjb25zdCB1cmwgPSAnL2Rtcy9kZWZpbmFsaXplLycgKyBpdGVtLmlkICsgJz90eXBlPScgKyBpdGVtLnR5cGVOYW1lO1xuICAgIHJldHVybiB0aGlzLnRyaWdnZXJVcGRhdGUoaXRlbSwgdGhpcy5iYWNrZW5kLnB1dCh1cmwpKTtcbiAgfVxuXG4gIGNyZWF0ZUxvY2FsQ29weU9mRE1TT2JqZWN0KGRtc09iamVjdDogRG1zT2JqZWN0KTogRG1zT2JqZWN0IHtcbiAgICBjb25zdCBiYXNlID0ge1xuICAgICAgaWQ6IGRtc09iamVjdC5pZCxcbiAgICAgIHRpdGxlOiBkbXNPYmplY3QudGl0bGUsXG4gICAgICBkZXNjcmlwdGlvbjogZG1zT2JqZWN0LmRlc2NyaXB0aW9uLFxuICAgICAgdmVyc2lvbjogZG1zT2JqZWN0LnZlcnNpb24sXG4gICAgICB2ZXJzaW9uczogZG1zT2JqZWN0LnZlcnNpb25zLFxuICAgICAgZGF0YTogZG1zT2JqZWN0LmRhdGEsXG4gICAgICB0eXBlOiBkbXNPYmplY3QudHlwZU5hbWUsXG5cbiAgICAgIGFjdGl2ZXZlcnNpb246IGRtc09iamVjdC5pc0FjdGl2ZVZlcnNpb24sXG4gICAgICBmaW5hbGl6ZWQ6IGRtc09iamVjdC5pc0ZpbmFsaXplZCxcbiAgICAgIGZhdm9yaXRlOiBkbXNPYmplY3QuaXNGYXZvcml0ZSxcbiAgICAgIGZvbGRlcjogZG1zT2JqZWN0LmlzRm9sZGVyLFxuICAgICAgaXNjb250ZXh0Zm9sZGVyOiBkbXNPYmplY3QuaXNDb250ZXh0Rm9sZGVyLFxuXG4gICAgICBjb250ZXh0Zm9sZGVyOiBkbXNPYmplY3QuY29udGV4dEZvbGRlciA/IHtcbiAgICAgICAgaWQ6IGRtc09iamVjdC5jb250ZXh0Rm9sZGVyLmlkLFxuICAgICAgICB0eXBlOiBkbXNPYmplY3QuY29udGV4dEZvbGRlci50eXBlTmFtZSxcbiAgICAgICAgdGl0bGU6IGRtc09iamVjdC5jb250ZXh0Rm9sZGVyLnRpdGxlLFxuICAgICAgICBkZXNjcmlwdGlvbjogZG1zT2JqZWN0LmNvbnRleHRGb2xkZXIuZGVzY3JpcHRpb25cbiAgICAgIH0gOiBudWxsLFxuXG4gICAgICBjcmVhdGVkOiBkbXNPYmplY3QuY3JlYXRlZCxcbiAgICAgIG1vZGlmaWVkOiBkbXNPYmplY3QubW9kaWZpZWQsXG5cbiAgICAgIGxvY2s6ICFkbXNPYmplY3QubG9jayA/ICdOT1RfTE9DS0VEJyA6IGRtc09iamVjdC5sb2NrLmJ5Lm1lID8gJ0xPQ0tFRF9CWV9TRVNTSU9OX1VTRVInIDogJ0xPQ0tFRF9CWV9PVEhFUl9VU0VSJyxcbiAgICAgIGxvY2tpbmZvOiBkbXNPYmplY3QubG9jayA/IHt1c2VybmFtZTogZG1zT2JqZWN0LmxvY2suYnkubmFtZSwgdXNlcnRpdGxlOiBkbXNPYmplY3QubG9jay5ieS5sYWJlbCwgdGltZTogZG1zT2JqZWN0LmxvY2sub259IDogbnVsbCxcblxuICAgICAgcmlnaHRzOiBbe1xuICAgICAgICBwcml2aWxlZ2VzOiB7XG4gICAgICAgICAgc2VsZWN0OiBkbXNPYmplY3QucmlnaHRzLnNlbGVjdCxcbiAgICAgICAgICBlZGl0OiBkbXNPYmplY3QucmlnaHRzLmVkaXQsXG4gICAgICAgICAgZGVsZXRlOiBkbXNPYmplY3QucmlnaHRzLmRlbGV0ZSxcbiAgICAgICAgICBmaW5hbGl6ZTogZG1zT2JqZWN0LnJpZ2h0cy5maW5hbGl6ZSxcbiAgICAgICAgICByZWN5Y2xlOiBkbXNPYmplY3QucmlnaHRzLnJlY3ljbGVcbiAgICAgICAgfVxuICAgICAgfV0sXG4gICAgICBzaGFyZXM6IGRtc09iamVjdC5zaGFyZXMsXG4gICAgICBjb250ZW50aWQ6IGRtc09iamVjdC5jb250ZW50ID8gZG1zT2JqZWN0LmNvbnRlbnQuaWQgOiBudWxsLFxuICAgICAgY29udGVudHR5cGU6IGRtc09iamVjdC5jb250ZW50ID8gZG1zT2JqZWN0LmNvbnRlbnQudHlwZSA6IG51bGwsXG4gICAgICBjb250ZW50Y291bnQ6IGRtc09iamVjdC5jb250ZW50ID8gZG1zT2JqZWN0LmNvbnRlbnQuY291bnQgOiBudWxsLFxuICAgICAgY29udGVudHM6IGRtc09iamVjdC5jb250ZW50ID8gZG1zT2JqZWN0LmNvbnRlbnQuY29udGVudHMgOiBudWxsLFxuXG4gICAgICBzdWJzY3JpcHRpb25zOiBkbXNPYmplY3Quc3Vic2NyaXB0aW9ucyxcbiAgICAgIHJlc3VibWlzc2lvbnM6IGRtc09iamVjdC5yZXN1Ym1pc3Npb25zLFxuICAgICAgYWRkaXRpb25hbHZpc2liaWxpdHk6IGRtc09iamVjdC5hZGRpdGlvbmFsdmlzaWJpbGl0eVxuICAgIH07XG5cbiAgICBsZXQgY29waWVkRG1zT2JqZWN0ID0gbmV3IERtc09iamVjdChiYXNlKTtcbiAgICBjb3BpZWREbXNPYmplY3QudHlwZSA9IGRtc09iamVjdC50eXBlO1xuXG4gICAgcmV0dXJuIGNvcGllZERtc09iamVjdDtcbiAgfVxuXG59XG4iXX0=
|
|
@@ -156,8 +156,10 @@ export class SearchQuery {
|
|
|
156
156
|
}
|
|
157
157
|
/**
|
|
158
158
|
* Generate a query JSON from the current SearchQuery that can be send to the search service.
|
|
159
|
+
*
|
|
160
|
+
* @param resolveReference in case of csv export the resolving of references is set by configuration
|
|
159
161
|
*/
|
|
160
|
-
getQueryJson() {
|
|
162
|
+
getQueryJson(resolveReference) {
|
|
161
163
|
// Convert the current query object to a query JSON that can be consumed by the search service backend.
|
|
162
164
|
// To keep it short, we'll only add properties that are set and differ from default values
|
|
163
165
|
const queryJson = {};
|
|
@@ -196,9 +198,7 @@ export class SearchQuery {
|
|
|
196
198
|
if (this.expertMode) {
|
|
197
199
|
queryJson.options.expertmode = true;
|
|
198
200
|
}
|
|
199
|
-
|
|
200
|
-
queryJson.options.resolvereference = true;
|
|
201
|
-
}
|
|
201
|
+
queryJson.options.resolvereference = resolveReference !== undefined ? resolveReference : true;
|
|
202
202
|
if (this.searchMode !== SearchQuery.DEFAULT_SEARCH_MODE) {
|
|
203
203
|
queryJson.options.searchmode = this.searchMode;
|
|
204
204
|
}
|
|
@@ -497,4 +497,4 @@ SearchFilter.OPERATOR = {
|
|
|
497
497
|
INTERVAL_INCLUDE_FROM: "gtelt",
|
|
498
498
|
RANGE: "rg" // aggegation ranges
|
|
499
499
|
};
|
|
500
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLXF1ZXJ5Lm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZW8tc2RrL2NvcmUvc3JjL2xpYi9zZXJ2aWNlL3NlYXJjaC9zZWFyY2gtcXVlcnkubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBRXpDLDJEQUEyRDtBQUUzRCxNQUFNLENBQU4sSUFBWSxVQUlYO0FBSkQsV0FBWSxVQUFVO0lBQ3BCLHlCQUFXLENBQUE7SUFDWCxpQ0FBbUIsQ0FBQTtJQUNuQixzQ0FBd0IsQ0FBQTtBQUMxQixDQUFDLEVBSlcsVUFBVSxLQUFWLFVBQVUsUUFJckI7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxPQUFPLFdBQVc7SUF1SXRCO1FBbkRBOztXQUVHO1FBQ0ksVUFBSyxHQUFpQixFQUFFLENBQUM7UUFDaEM7O1dBRUc7UUFDSSx1QkFBa0IsR0FBaUIsRUFBRSxDQUFDO1FBQzdDOztXQUVHO1FBQ0ksWUFBTyxHQUFtQixFQUFFLENBQUM7UUFLcEM7O1dBRUc7UUFDSSxlQUFVLEdBQUcsS0FBSyxDQUFDO1FBSzFCOztXQUVHO1FBQ0ksZUFBVSxHQUFXLFdBQVcsQ0FBQyxtQkFBbUIsQ0FBQztRQUM1RDs7V0FFRztRQUNJLGdCQUFXLEdBQWlCLEVBQUUsQ0FBQztRQUN0Qzs7V0FFRztRQUNJLHFCQUFnQixHQUFHLElBQUksQ0FBQztRQUMvQjs7V0FFRztRQUNJLFVBQUssR0FBZ0IsSUFBSSxXQUFXLEVBQUUsQ0FBQztRQUV2QyxpQkFBWSxHQUFZLEtBQUssQ0FBQztRQUM5QixnQkFBVyxHQUFZLEtBQUssQ0FBQztJQVNyQixDQUFDO0lBRWhCOzs7O09BSUc7SUFDSSxPQUFPLENBQUMsSUFBZ0I7UUFDN0IsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FB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TyxDQUNMLElBQUksQ0FBQyxRQUFRLEtBQUssUUFBUTtZQUMxQixJQUFJLENBQUMsUUFBUSxLQUFLLFFBQVE7WUFDMUIsSUFBSSxDQUFDLFdBQVcsS0FBSyxXQUFXO1lBQ2hDLENBQUMsSUFBSSxDQUFDLFVBQVUsWUFBWSxLQUFLO2dCQUMvQixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLFVBQVUsQ0FBQztnQkFDL0MsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLEtBQUssVUFBVSxDQUFDLENBQ3BDLENBQUM7SUFDSixDQUFDOztBQWxIRDs7R0FFRztBQUNXLHFCQUFRLEdBQUc7SUFDdkIsWUFBWTtJQUNaLEtBQUssRUFBRSxJQUFJO0lBQ1gsd0RBQXdEO0lBQ3hELEtBQUssRUFBRSxPQUFPO0lBQ2QsNEVBQTRFO0lBQzVFLEVBQUUsRUFBRSxJQUFJO0lBQ1IsbUJBQW1CO0lBQ25CLFlBQVksRUFBRSxJQUFJO0lBQ2xCLDRCQUE0QjtJQUM1QixnQkFBZ0IsRUFBRSxLQUFLO0lBQ3ZCLFNBQVMsRUFBRSxJQUFJO0lBQ2YsYUFBYSxFQUFFLEtBQUs7SUFDcEIsUUFBUSxFQUFFLE1BQU07SUFDaEIscUJBQXFCLEVBQUUsUUFBUTtJQUMvQixtQkFBbUIsRUFBRSxPQUFPO0lBQzVCLHFCQUFxQixFQUFFLE9BQU87SUFDOUIsS0FBSyxFQUFFLElBQUksQ0FBQyxvQkFBb0I7Q0FDakMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7cmVkdWNlfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge09iamVjdFR5cGV9IGZyb20gXCIuLi8uLi9tb2RlbC9vYmplY3QtdHlwZS5tb2RlbFwiO1xuaW1wb3J0IHtEYXRlUGlwZX0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuXG4vL2V4cG9ydCB0eXBlIFF1ZXJ5U2NvcGUgPSAnaW5kZXhkYXRlJyB8ICdjb250ZW50JyB8ICdhbGwnO1xuXG5leHBvcnQgZW51bSBRdWVyeVNjb3BlIHtcbiAgQUxMID0gJ2FsbCcsXG4gIENPTlRFTlQgPSAnY29udGVudCcsXG4gIElOREVYX0RBVEEgPSAnaW5kZXhkYXRhJ1xufVxuXG4vKipcbiAqIFRoZSBTZWFyY2hRdWVyeSBDbGFzc1xuICpcbiAqIFNlZSB7QGxpbmsgU2VhcmNoU2VydmljZX0gZm9yIFVzYWdlXG4gKi9cbmV4cG9ydCBjbGFzcyBTZWFyY2hRdWVyeSB7XG4gIC8qKlxuICAgKiBCYXNlIFBhcmFtZXRlcnMgZm9yIGEgU2VhcmNoIFF1ZXJ5XG4gICAqL1xuICBwdWJsaWMgc3RhdGljIEJBU0VfUEFSQU1TID0ge1xuICAgIFRZUEU6IFwidHlwZVwiLFxuICAgIENSRUFUT1I6IFwiY3JlYXRvclwiLFxuICAgIENSRUFURUQ6IFwiY3JlYXRlZFwiLFxuICAgIE1PRElGSUVSOiBcIm1vZGlmaWVyXCIsXG4gICAgTU9ESUZJRUQ6IFwibW9kaWZpZWRcIixcbiAgICBGSUxFU0laRTogXCJmaWxlc2l6ZVwiLFxuICAgIEZJTEVOQU1FOiBcImZpbGVuYW1lXCIsXG4gICAgTUlNRVRZUEVHUk9VUDogXCJtaW1ldHlwZWdyb3VwXCJcbiAgfTtcblxuICAvKipcbiAgICogVGltZSBwZXJpb2QgYnVja2V0cyBwcm9wZXJ0eSBuYW1lc1xuICAgKi9cbiAgcHVibGljIHN0YXRpYyBUSU1FX1BFUklPRF9CVUNLRVRTID0ge1xuICAgIFRPREFZOiBcInRvZGF5XCIsXG4gICAgWUVTVEVSREFZOiBcInllc3RlcmRheVwiLFxuICAgIFRISVNfV0VFSzogXCJ0aGlzd2Vla1wiLFxuICAgIExBU1RfV0VFSzogXCJsYXN0d2Vla1wiLFxuICAgIFRISVNfTU9OVEg6IFwidGhpc21vbnRoXCIsXG4gICAgTEFTVF9NT05USDogXCJsYXN0bW9udGhcIixcbiAgICBUSElTX1lFQVI6IFwidGhpc3llYXJcIixcbiAgICBMQVNUX1lFQVI6IFwibGFzdHllYXJcIlxuICB9O1xuXG4gIC8qKlxuICAgKiBtaW1ldHlwZSBidWNrZXRzIHByb3BlcnR5IG5hbWVzXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIE1JTUVUWVBFR1JPVVBfQlVDS0VUUyA9IHtcbiAgICBQREY6IFwicGRmXCIsXG4gICAgTUFJTDogXCJtYWlsXCIsXG4gICAgV09SRDogXCJ3b3JkXCIsXG4gICAgSU1BR0U6IFwiaW1hZ2VcIixcbiAgICBPQ1RFVF9TVFJFQU06IFwib2N0ZXQtc3RyZWFtXCIsXG4gICAgVFhUOiBcInR4dFwiLFxuICAgIEVYQ0VMOiBcImV4Y2VsXCIsXG4gICAgUE9XRVJQT0lOVDogXCJwb3dlcnBvaW50XCIsXG4gICAgVklERU86IFwidmlkZW9cIixcbiAgICBIVE1MOiBcImh0bWxcIixcbiAgICBBVURJTzogXCJhdWRpb1wiLFxuICAgIFpJUDogXCJ6aXBcIlxuICB9O1xuXG4gIC8qKlxuICAgKiBmaWxlc2l6ZSBidWNrZXRzIHByb3BlcnR5IG5hbWVzXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIEZJTEVfU0laRV9CVUNLRVRTID0ge1xuICAgIExUMU1COiBcImx0MU1CXCIsXG4gICAgTFQxME1COiBcImx0MTBNQlwiLFxuICAgIExUMTAwTUI6IFwibHQxMDBNQlwiLFxuICAgIEdUMTAwTUI6IFwiZ3QxMDBNQlwiXG4gIH07XG5cbiAgLy8gbGlzdCBvZiB0aGluZ3MgdGhhdCBtYXkgaGF2ZSBjaGFuZ2VkIHRoZSBjdXJyZW50IHF1ZXJ5XG4gIHB1YmxpYyBzdGF0aWMgVVBEQVRFX0NBVVNFID0ge1xuICAgIFRPR0dMRURfVFlQRTogXCJjYXVzZS50eXBlLnRvZ2dsZWRcIixcbiAgICBUT0dHTEVEX0VYUEVSVE1PREU6IFwiY2F1c2UuZXhwZXJ0bW9kZS50b2dnbGVkXCIsXG4gICAgVEVSTV9TRVQ6IFwiY2F1c2UudGVybS5zZXRcIixcbiAgICBUWVBFU19TRVQ6IFwiY2F1c2UudHlwZXMuc2V0XCIsXG4gICAgQ09OVEVYVF9GT0xERVJfU0VUOiBcImNhdXNlLmNvbnRleHRmb2xkZXIuc2V0XCIsXG4gICAgVE9HR0xFRF9GSUxURVI6IFwiY2F1c2UuZmlsdGVyLnRvZ2dsZWRcIixcbiAgICBBRERFRF9GSUxURVI6IFwiY2F1c2UuZmlsdGVyLmFkZGVkXCIsXG4gICAgUkVNT1ZFRF9GSUxURVI6IFwiY2F1c2UuZmlsdGVyLnJlbW92ZWRcIixcbiAgfTtcbiAgLyoqXG4gICAqIERldGF1bHQgU2VhcmNoIG1vZGUgSW5kZXhcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgREVGQVVMVF9TRUFSQ0hfTU9ERSA9IFwiaWR4c1wiO1xuICAvKipcbiAgICogU2VhcmNoIG1vZGUgZm9yIEZ1bGwgdGVzdCBTZWFyY2hcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgRlVMTFRFWFRfU0VBUkNIX01PREUgPSBcImZ0c1wiO1xuICAvKipcbiAgICogZnVsbHRleHQgc2VhcmNoIHRlcm1cbiAgICovXG4gIHB1YmxpYyB0ZXJtOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBcnJheSBvZiBmaWVsZHMgdG8gcmVxdWVzdCBmcm9tIHRoZSBzZWFyY2ggc2VydmljZSwgbGVhdmluZyB0aGlzIGJsYW5rIHdpbGwgcmV0dXJuIHRoZSBmaWVsZHMgc3BlY2lmaWVkIGluIHRoZSByZXN1bHQgZmllbGQgY29uZmlndXJhdGlvblxuICAgKi9cbiAgcHVibGljIGZpZWxkczogc3RyaW5nW107XG4gIC8qKlxuICAgKiBMaXN0IG9mIG9iamVjdCB0eXBlcyB0byBiZSBmZXRjaGVkIGJ5IHRoZSBxdWVyeS4gTGVhdmluZyB0aGlzIGJsYW5rIHdpbGwgcmV0dXJuIHJlc3VsdHMgZnJvbSBhbnkgdHlwZVxuICAgKi9cbiAgcHVibGljIHR5cGVzOiBPYmplY3RUeXBlW10gPSBbXTtcbiAgLyoqXG4gICAqIExpc3Qgb2YgY29udGV4dCBmb2xkZXIgdHlwZXNcbiAgICovXG4gIHB1YmxpYyBjb250ZXh0Rm9sZGVyVHlwZXM6IE9iamVjdFR5cGVbXSA9IFtdO1xuICAvKipcbiAgICogTGlzdCBvZiBmaWx0ZXJzIHRvIGRlZmluZSB0aGUgcXVlcnlcbiAgICovXG4gIHB1YmxpYyBmaWx0ZXJzOiBTZWFyY2hGaWx0ZXJbXSA9IFtdO1xuICAvKipcbiAgICogV2hldGhlciBvciBub3QgdG8gcmV0cmlldmUgc3VnZ2VzdGlvbnNcbiAgICovXG4gIHB1YmxpYyBzdWdnZXN0OiBib29sZWFuO1xuICAvKipcbiAgICogV2hldGhlciBvciBub3QgdGhlIHRlcm0gaXMgYW4gZXhwZXJ0IG1vZGUgcXVlcnlcbiAgICovXG4gIHB1YmxpYyBleHBlcnRNb2RlID0gZmFsc2U7XG4gIC8qKlxuICAgKiBUaGUgc2NvcGUgb2YgdGhlIHF1ZXJ5XG4gICAqL1xuICBwdWJsaWMgc2NvcGU6IFF1ZXJ5U2NvcGU7XG4gIC8qKlxuICAgKiBUaGUgc2VhcmNoIG1vZGUgdG8gYmUgdXNlZCAoU2VhcmNoUXVlcnkuREVGQVVMVF9TRUFSQ0hfTU9ERSBvciBTZWFyY2hRdWVyeS5GVUxMVEVYVF9TRUFSQ0hfTU9ERSlcbiAgICovXG4gIHB1YmxpYyBzZWFyY2hNb2RlOiBzdHJpbmcgPSBTZWFyY2hRdWVyeS5ERUZBVUxUX1NFQVJDSF9NT0RFO1xuICAvKipcbiAgICogQWRkaXRpb25hbCBvcHRpb25zIHRvIGJlIGFwcGxpZWQgdG8gdGhlIHF1ZXJ5XG4gICAqL1xuICBwdWJsaWMgc29ydE9wdGlvbnM6IFNvcnRPcHRpb25bXSA9IFtdO1xuICAvKipcbiAgICogUmVzb2x2ZSByZWZlcmVuY2VzIHdpdGggdGhlaXIgdGl0bGUgaW5zdGVhZCBvZiB0aGVpciBhY3R1YWwgdmFsdWVcbiAgICovXG4gIHB1YmxpYyByZXNvbHZlUmVmZXJlbmNlID0gdHJ1ZTtcbiAgLyoqXG4gICAqIFRoZSBzdGF0ZSBvZiB0aGUgY3VycmVudCBxdWVyeVxuICAgKi9cbiAgcHVibGljIHN0YXRlOiBTZWFyY2hTdGF0ZSA9IG5ldyBTZWFyY2hTdGF0ZSgpO1xuXG4gIHB1YmxpYyBoaWdobGlnaHRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHVibGljIHdpdGhDb250ZXh0OiBib29sZWFuID0gZmFsc2U7XG5cbiAgcHVibGljIG5hbWU/OiBzdHJpbmc7XG5cbiAgLy8gSW5kaWNhdG9yIHdoYXQgY2F1c2VkIHRoZSB1cGRhdGUgb2YgYSBTZWFyY2hRdWVyeSBvYmplY3QuXG4gIC8vIFVzZWZ1bGwgZm9yIGNvbXBvbmVudHMgdGhhdCBzdWJzY3JpYmVkIHRvIGEgcXVlcnksIGFuZCBuZWVkIHRvXG4gIC8vIHRyYWNrIHRoZSBraW5kIG9mIGNoYW5nZXMgbWFkZVxuICBfX3VwZGF0ZUNhdXNlOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoKSB7fVxuXG4gIC8qKlxuICAgKiBBZGRzIGEgbmV3IHRhcmdldCB0eXBlIHRvIHRoZSBxdWVyeVxuICAgKlxuICAgKiBAcGFyYW0gdHlwZSBPYmplY3QgdHlwZSB0byBiZSBhZGRlZFxuICAgKi9cbiAgcHVibGljIGFkZFR5cGUodHlwZTogT2JqZWN0VHlwZSkge1xuICAgIGlmICghdGhpcy50eXBlcy5maW5kKHQgPT4gdC5pZCA9PT0gdHlwZS5pZCkpIHtcbiAgICAgIHRoaXMudHlwZXMucHVzaCh0eXBlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlcyBhIHR5cGUgZnJvbSB0aGUgdGFyZ2V0IHR5cGVzIGxpc3RcbiAgICpcbiAgICogQHBhcmFtIHR5cGUgVGhlIG9iamVjdCB0eXBlIHRvIGJlIHJlbW92ZWRcbiAgICovXG4gIHB1YmxpYyByZW1vdmVUeXBlKHR5cGU6IE9iamVjdFR5cGUpIHtcbiAgICB0aGlzLnR5cGVzID0gdGhpcy50eXBlcy5maWx0ZXIodCA9PiB0LmlkICE9PSB0eXBlLmlkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIG9yIHJlbW92ZXMgdGhlIGdpdmVuIHR5cGUgYmFzZWQgb24gdGhlIGN1cnJlbnQgc2V0dGluZ3NcbiAgICpcbiAgICogQHBhcmFtIHR5cGUgVGhlIG9iamVjdCB0eXBlIHRvIGJlIHRvZ2dsZWRcbiAgICovXG4gIHB1YmxpYyB0b2dnbGVUeXBlKHR5cGU6IE9iamVjdFR5cGUpIHtcbiAgICBpZiAodGhpcy50eXBlcy5maW5kKHQgPT4gdC5pZCA9PT0gdHlwZS5pZCkpIHtcbiAgICAgIHRoaXMucmVtb3ZlVHlwZSh0eXBlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy50eXBlcy5wdXNoKHR5cGUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEgbmV3IGZpbHRlciB0byB0aGUgcXVlcnkuIElmIHRoZXJlIGFscmVhZHkgaXMgYSBmaWx0ZXIgc2V0IGZvciB0aGUgZ2l2ZW4gcHJvcGVydHksIGl0IHdpbGwgYmUgb3ZlcnJpZGRlbi5cbiAgICpcbiAgICogQHBhcmFtIGZpbHRlciBUaGUgZmlsdGVyIHRvIGJlIGFkZGVkXG4gICAqL1xuICBwdWJsaWMgYWRkRmlsdGVyKGZpbHRlcjogU2VhcmNoRmlsdGVyKSB7XG4gICAgaWYgKCFmaWx0ZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKCF0aGlzLmdldEZpbHRlcihmaWx0ZXIucHJvcGVydHkpKSB7XG4gICAgICB0aGlzLmZpbHRlcnMucHVzaChmaWx0ZXIpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBpZiB0aGVyZSBhbHJlYWR5IGlzIGEgZmlsdGVyIHNldCBmb3IgdGhlIHRhcmdldCBwcm9wZXJ0eVxuICAgICAgLy8gd2UnbGwganVzdCBvdmVycmlkZSBpdCB3aXRoIHRoZSBuZXcgdmFsdWVcbiAgICAgIHRoaXMucmVtb3ZlRmlsdGVyKGZpbHRlci5wcm9wZXJ0eSk7XG4gICAgICB0aGlzLmZpbHRlcnMucHVzaChmaWx0ZXIpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIGEgZmlsdGVyIGZyb20gdGhlIHF1ZXJ5LlxuICAgKlxuICAgKiBAcGFyYW0gZmlsdGVyUHJvcGVydHlOYW1lIFRoZSBmaWx0ZXIgKGl0cyBwcm9wZXJ0eSBuYW1lKSB0byBiZSByZW1vdmVkXG4gICAqL1xuICBwdWJsaWMgcmVtb3ZlRmlsdGVyKGZpbHRlclByb3BlcnR5TmFtZTogc3RyaW5nKSB7XG4gICAgdGhpcy5maWx0ZXJzID0gdGhpcy5maWx0ZXJzLmZpbHRlcihmID0+IGYucHJvcGVydHkgIT09IGZpbHRlclByb3BlcnR5TmFtZSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBvciByZW1vdmVzIHRoZSBnaXZlbiBmaWx0ZXIgYmFzZWQgb24gdGhlIGN1cnJlbnQgc2V0dGluZ3NcbiAgICpcbiAgICogQHBhcmFtIGZpbHRlciBUaGUgZmlsdGVyIHRvIGJlIHRvZ2dsZWRcbiAgICovXG4gIHB1YmxpYyB0b2dnbGVGaWx0ZXIoZmlsdGVyOiBTZWFyY2hGaWx0ZXIsIG92ZXJyaWRlPzogYm9vbGVhbikge1xuICAgIGlmICh0aGlzLmdldEZpbHRlcihmaWx0ZXIucHJvcGVydHkpKSB7XG4gICAgICB0aGlzLnJlbW92ZUZpbHRlcihmaWx0ZXIucHJvcGVydHkpO1xuICAgICAgaWYgKG92ZXJyaWRlKSB7XG4gICAgICAgIHRoaXMuZmlsdGVycy5wdXNoKGZpbHRlcik7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZmlsdGVycy5wdXNoKGZpbHRlcik7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlcyBhIGZpbHRlciBieSBpdHMgcHJvcGVydHkgbmFtZS5cbiAgICpcbiAgICogQHBhcmFtIHByb3BlcnR5TmFtZSBUaGUgZmlsdGVycyBwcm9wZXJ0eSBuYW1lIChxbmFtZSBvZiBmb3JtIGVsZW1lbnQpXG4gICAqIEByZXR1cm5zIFNlYXJjaCBGaWx0ZXIgT2JqZWN0XG4gICAqL1xuICBwdWJsaWMgZ2V0RmlsdGVyKHByb3BlcnR5TmFtZTogc3RyaW5nKTogU2VhcmNoRmlsdGVyIHtcbiAgICByZXR1cm4gdGhpcy5maWx0ZXJzLmZpbmQoZiA9PiBmLnByb3BlcnR5ID09PSBwcm9wZXJ0eU5hbWUpO1xuICB9XG5cbiAgcHVibGljIGdldFRhYmxlRmlsdGVycyhwcm9wZXJ0eU5hbWU6IHN0cmluZyk6IFNlYXJjaEZpbHRlcltdIHtcbiAgICByZXR1cm4gdGhpcy5maWx0ZXJzLmZpbHRlcihmID0+IGYucHJvcGVydHkuc3RhcnRzV2l0aChwcm9wZXJ0eU5hbWUgKyAnLicpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRpbmcgbmV3IFNvcnQgT3B0aW9uc1xuICAgKiBTb3J0IE9wdGlvbnMgYXJlIG9ubHkgYWRkZWQgaWYgdGhleSBhcmUgbm90IGFscmVhZHkgcHJlc2VudFxuICAgKlxuICAgKiBAcGFyYW0gbmFtZVxuICAgKiBAcGFyYW0gb3JkZXJcbiAgICogQHBhcmFtIG1pc3NpbmdcbiAgICovXG4gIHB1YmxpYyBhZGRTb3J0T3B0aW9uKG5hbWU6IHN0cmluZywgb3JkZXI6IHN0cmluZywgbWlzc2luZz86IHN0cmluZykge1xuICAgIGlmICghdGhpcy5zb3J0T3B0aW9ucy5maW5kKHMgPT4gcy5maWVsZCA9PT0gbmFtZSkpIHtcbiAgICAgIHRoaXMuc29ydE9wdGlvbnMucHVzaChuZXcgU29ydE9wdGlvbihuYW1lLCBvcmRlciwgbWlzc2luZykpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0gbmFtZVxuICAgKi9cbiAgcHVibGljIHJlbW92ZVNvcnRPcHRpb24obmFtZTogc3RyaW5nKSB7XG4gICAgdGhpcy5zb3J0T3B0aW9ucyA9IHRoaXMuc29ydE9wdGlvbnMuZmlsdGVyKHMgPT4gcy5maWVsZCAhPT0gbmFtZSk7XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGUgYSBxdWVyeSBKU09OIGZyb20gdGhlIGN1cnJlbnQgU2VhcmNoUXVlcnkgdGhhdCBjYW4gYmUgc2VuZCB0byB0aGUgc2VhcmNoIHNlcnZpY2UuXG4gICAqL1xuICBwdWJsaWMgZ2V0UXVlcnlKc29uKCkge1xuICAgIC8vIENvbnZlcnQgdGhlIGN1cnJlbnQgcXVlcnkgb2JqZWN0IHRvIGEgcXVlcnkgSlNPTiB0aGF0IGNhbiBiZSBjb25zdW1lZCBieSB0aGUgc2VhcmNoIHNlcnZpY2UgYmFja2VuZC5cbiAgICAvLyBUbyBrZWVwIGl0IHNob3J0LCB3ZSdsbCBvbmx5IGFkZCBwcm9wZXJ0aWVzIHRoYXQgYXJlIHNldCBhbmQgZGlmZmVyIGZyb20gZGVmYXVsdCB2YWx1ZXNcbiAgICBjb25zdCBxdWVyeUpzb246IGFueSA9IHt9O1xuXG4gICAgLy8gYWRkIHR5cGUgZmlsdGVyc1xuICAgIGlmICh0aGlzLnR5cGVzLmxlbmd0aCA+IDApIHtcbiAgICAgIHF1ZXJ5SnNvbi50eXBlcyA9IHRoaXMudHlwZXMubWFwKHQgPT5cbiAgICAgICAgdHlwZW9mIHQgPT09IFwic3RyaW5nXCIgPyB0IDogdC5uYW1lXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIGFkZCBjb250ZXh0IGZvbGRlciB0eXBlIGZpbHRlcnNcbiAgICBpZiAodGhpcy5jb250ZXh0Rm9sZGVyVHlwZXMubGVuZ3RoID4gMCkge1xuICAgICAgcXVlcnlKc29uLmNvbnRleHRmb2xkZXJ0eXBlcyA9IHRoaXMuY29udGV4dEZvbGRlclR5cGVzLm1hcCh0ID0+IHQubmFtZSk7XG4gICAgfVxuXG4gICAgLy8gZmlsdGVyc1xuICAgIGlmICh0aGlzLmZpbHRlcnMubGVuZ3RoID4gMCkge1xuICAgICAgcXVlcnlKc29uLmZpbHRlcnMgPSB7fTtcbiAgICAgIHRoaXMuZmlsdGVycy5mb3JFYWNoKGYgPT4ge1xuICAgICAgICBxdWVyeUpzb24uZmlsdGVyc1tmLnByb3BlcnR5XSA9IGYudG9RdWVyeSgpO1xuICAgICAgfSk7XG4gICAgfVxuICAgIGlmICh0aGlzLnRlcm0pIHtcbiAgICAgIHF1ZXJ5SnNvbi50ZXJtID0gdGhpcy50ZXJtO1xuICAgIH1cbiAgICAvLyBzZWFyY2ggZmllbGRzXG4gICAgaWYgKHRoaXMuZmllbGRzKSB7XG4gICAgICBxdWVyeUpzb24uZmllbGRzID0gdGhpcy5maWVsZHM7XG4gICAgfVxuICAgIGlmICh0aGlzLm5hbWUpIHtcbiAgICAgIHF1ZXJ5SnNvbi5uYW1lID0gdGhpcy5uYW1lO1xuICAgIH1cbiAgICAvLyBhZGQgb3B0aW9ucyB3aGVuIHRoZXkgZGlmZmVyIGZyb20gdGhlIGRlZmF1bHQgdmFsdWVzXG4gICAgaWYgKHRoaXMuYXBwbHlPcHRpb25zKCkpIHtcbiAgICAgIHF1ZXJ5SnNvbi5vcHRpb25zID0ge307XG4gICAgICBxdWVyeUpzb24ub3B0aW9ucy5zY29wZSA9IHRoaXMuc2NvcGU7XG4gICAgICBpZiAodGhpcy5zdWdnZXN0KSB7XG4gICAgICAgIHF1ZXJ5SnNvbi5vcHRpb25zLnN1Z2dlc3QgPSB0cnVlO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuZXhwZXJ0TW9kZSkge1xuICAgICAgICBxdWVyeUpzb24ub3B0aW9ucy5leHBlcnRtb2RlID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLnJlc29sdmVSZWZlcmVuY2UpIHtcbiAgICAgICAgcXVlcnlKc29uLm9wdGlvbnMucmVzb2x2ZXJlZmVyZW5jZSA9IHRydWU7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5zZWFyY2hNb2RlICE9PSBTZWFyY2hRdWVyeS5ERUZBVUxUX1NFQVJDSF9NT0RFKSB7XG4gICAgICAgIHF1ZXJ5SnNvbi5vcHRpb25zLnNlYXJjaG1vZGUgPSB0aGlzLnNlYXJjaE1vZGU7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5zb3J0T3B0aW9ucyAmJiB0aGlzLnNvcnRPcHRpb25zLmxlbmd0aCkge1xuICAgICAgICBxdWVyeUpzb24ub3B0aW9ucy5zb3J0ID0ge307XG4gICAgICAgIHRoaXMuc29ydE9wdGlvbnMuZm9yRWFjaCgoc29ydE9wdGlvbjogU29ydE9wdGlvbikgPT4ge1xuICAgICAgICAgIHF1ZXJ5SnNvbi5vcHRpb25zLnNvcnRbc29ydE9wdGlvbi5maWVsZF0gPSB7XG4gICAgICAgICAgICBvcmRlcjogc29ydE9wdGlvbi5vcmRlclxuICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5oaWdobGlnaHRpbmcpIHtcbiAgICAgICAgcXVlcnlKc29uLm9wdGlvbnMuaGlnaGxpZ2h0aW5nID0gdGhpcy5oaWdobGlnaHRpbmc7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy53aXRoQ29udGV4dCkge1xuICAgICAgICBxdWVyeUpzb24ub3B0aW9ucy53aXRoY29udGV4dCA9IHRoaXMud2l0aENvbnRleHQ7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBxdWVyeUpzb247XG4gIH1cblxuICAvLyBkZXRlcm1pbmVzIHdoZXRoZXIgb3Igbm90IHRoZSBxdWVyeSBzZW5kIHRvIHRoZSBzZWFyY2ggc2VydmljZSBzaG91bGQgY29udGFpbiBvcHRpb25zXG4gIHByaXZhdGUgYXBwbHlPcHRpb25zKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLmV4cGVydE1vZGUgfHxcbiAgICAgICEhdGhpcy5zY29wZSB8fFxuICAgICAgdGhpcy5zdWdnZXN0IHx8XG4gICAgICB0aGlzLmhpZ2hsaWdodGluZyB8fFxuICAgICAgdGhpcy5yZXNvbHZlUmVmZXJlbmNlIHx8XG4gICAgICB0aGlzLndpdGhDb250ZXh0IHx8XG4gICAgICB0aGlzLnNlYXJjaE1vZGUgIT09IFNlYXJjaFF1ZXJ5LkRFRkFVTFRfU0VBUkNIX01PREUgfHxcbiAgICAgIHRoaXMuc29ydE9wdGlvbnMubGVuZ3RoID4gMFxuICAgICk7XG4gIH1cbn1cblxuLyoqXG4gKiBAaWdub3JlXG4gKiBDcmVhdGVzIHRoZSBNb2RlbCBvZiBTb3J0IE9wdGlvbnNcbiAqL1xuZXhwb3J0IGNsYXNzIFNvcnRPcHRpb24ge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgZmllbGQ6IHN0cmluZyxcbiAgICBwdWJsaWMgb3JkZXI6IHN0cmluZyxcbiAgICBwdWJsaWMgbWlzc2luZz86IHN0cmluZ1xuICApIHt9XG59XG5cbi8qKlxuICogQGlnbm9yZVxuICogQ3JlYXRlcyB0aGUgTW9kZWwgb2YgRmllbGQgRGVmaW5pdGlvbnNcbiAqL1xuZXhwb3J0IGNsYXNzIEZpZWxkRGVmaW5pdGlvbiB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBlbGVtZW50czogYW55W10gPSBbXSxcbiAgICBwdWJsaWMgc29ydG9yZGVyOiBhbnlbXSA9IFtdLFxuICAgIHB1YmxpYyBncm91cG9yZGVyOiBhbnlbXSA9IFtdLFxuICAgIHB1YmxpYyBwaW5uZWQ6IGFueVtdID0gW10sXG4gICAgcHVibGljIGFsaWdubWVudHg6IHtxbmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nfVtdID0gW10sXG4gICAgcHVibGljIG1vZGU/OiBzdHJpbmdcbiAgKSB7fVxufVxuXG4vKipcbiAqIEBpZ25vcmVcbiAqIENsYXNzIHJlcHJlc2VudGluZyB0aGUgc3RhdGUgb2YgYSBxdWVyeVxuICovXG5leHBvcnQgY2xhc3MgU2VhcmNoU3RhdGUge1xuICBwdWJsaWMgY291bnQ6IHt2YWx1ZTogbnVtYmVyLCByZWxhdGlvbj86IHN0cmluZ307XG4gIHB1YmxpYyBhZ2dyZWdhdGlvbnM7XG4gIHB1YmxpYyBsYXN0Q2hhbmdlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmFnZ3JlZ2F0aW9ucyA9IHtcbiAgICAgIHR5cGU6IG5ldyBNYXA8c3RyaW5nLCBudW1iZXI+KCksXG4gICAgICBjb250ZXh0VHlwZTogbmV3IE1hcDxzdHJpbmcsIG51bWJlcj4oKSxcbiAgICAgIGNyZWF0ZWQ6IFtdLFxuICAgICAgbW9kaWZpZWQ6IFtdLFxuICAgICAgbWltZXR5cGVncm91cDogW10sXG4gICAgICBmaWxlc2l6ZTogW11cbiAgICB9O1xuICB9XG5cbiAgZ2V0IHRvdGFsQ291bnQoKSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5hZ2dyZWdhdGlvbnMudHlwZS52YWx1ZXMoKSkucmVkdWNlKChhY2M6IG51bWJlciwgY3VyOiBudW1iZXIpID0+IGFjYyArIGN1ciwgMCkgYXMgbnVtYmVyO1xuICB9XG5cbiAgZ2V0IGlzRW1wdHkoKSB7XG4gICAgcmV0dXJuICEodGhpcy5jb3VudCAmJiB0aGlzLmNvdW50LnZhbHVlKTtcbiAgfVxuXG4gIGFkZEFnZ3JlZ2F0aW9ucyh0eXBlOiBzdHJpbmcsIGtleTogc3RyaW5nLCB2YWx1ZTogbnVtYmVyLCBhZ2c/KSB7XG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlIFwiY29udGV4dHR5cGVcIjoge1xuICAgICAgICB0aGlzLmFnZ3JlZ2F0aW9ucy5jb250ZXh0VHlwZS5zZXQoa2V5LCB2YWx1ZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBTZWFyY2hRdWVyeS5CQVNFX1BBUkFNUy5UWVBFOiB7XG4gICAgICAgIHRoaXMuYWdncmVnYXRpb25zLnR5cGUuc2V0KGtleSwgdmFsdWUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgU2VhcmNoUXVlcnkuQkFTRV9QQVJBTVMuQ1JFQVRFRDoge1xuICAgICAgICB0aGlzLmFnZ3JlZ2F0aW9ucy5jcmVhdGVkLnB1c2goe1xuICAgICAgICAgIGtleToga2V5LFxuICAgICAgICAgIHZhbHVlOiB2YWx1ZVxuICAgICAgICB9KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIFNlYXJjaFF1ZXJ5LkJBU0VfUEFSQU1TLk1PRElGSUVEOiB7XG4gICAgICAgIHRoaXMuYWdncmVnYXRpb25zLm1vZGlmaWVkLnB1c2goe1xuICAgICAgICAgIGtleToga2V5LFxuICAgICAgICAgIHZhbHVlOiB2YWx1ZVxuICAgICAgICB9KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIFNlYXJjaFF1ZXJ5LkJBU0VfUEFSQU1TLk1JTUVUWVBFR1JPVVA6IHtcbiAgICAgICAgdGhpcy5hZ2dyZWdhdGlvbnMubWltZXR5cGVncm91cC5wdXNoKHtcbiAgICAgICAgICBrZXk6IGtleSxcbiAgICAgICAgICB2YWx1ZTogdmFsdWVcbiAgICAgICAgfSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBTZWFyY2hRdWVyeS5CQVNFX1BBUkFNUy5GSUxFU0laRToge1xuICAgICAgICB0aGlzLmFnZ3JlZ2F0aW9ucy5maWxlc2l6ZS5wdXNoKHtcbiAgICAgICAgICBrZXk6IGtleSxcbiAgICAgICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICAgICAgZnJvbTogYWdnLmZyb20sXG4gICAgICAgICAgdG86IGFnZy50byB8fCBJbmZpbml0eSxcbiAgICAgICAgICBsYWJlbDoga2V5LnJlcGxhY2UoXCJndFwiLCBcIj4gXCIpLnJlcGxhY2UoXCJsdFwiLCBcIjwgXCIpXG4gICAgICAgIH0pO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBAaWdub3JlXG4gKiBDcmVhdGVzIHRoZSBNb2RlbCBvZiBTZWFyY2ggUmVzdWx0c1xuICovXG5leHBvcnQgY2xhc3MgU2VhcmNoUmVzdWx0IHtcbiAgcHVibGljIGNvdW50OiB7dmFsdWU6IG51bWJlciwgcmVsYXRpb24/OiBzdHJpbmd9O1xuICBwdWJsaWMgc3VnZ2VzdHM6IHN0cmluZ1tdO1xuICBwdWJsaWMgaGl0czogYW55W107XG4gIHB1YmxpYyB0eXBlTmFtZTogc3RyaW5nO1xuICBwdWJsaWMgZmllbGRzOiBGaWVsZERlZmluaXRpb247XG5cbiAgY29uc3RydWN0b3IoKSB7fVxufVxuXG5leHBvcnQgY2xhc3MgU2VhcmNoRmlsdGVyIHtcbiAgLyoqXG4gICAqIGF2YWlsYWJsZSBvcGVyYXRvcnMgZm9yIGEgc2VhcmNoIGZpbHRlclxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBPUEVSQVRPUiA9IHtcbiAgICAvKiogZXF1YWwgKi9cbiAgICBFUVVBTDogXCJlcVwiLFxuICAgIC8qKiBtYXRjaCAoZm9yIHN0cmluZyB3aXRoIGNsYXNzaWZpY2F0aW9uIFwicGF0aDY2NjZcIikgKi9cbiAgICBNQVRDSDogXCJtYXRjaFwiLFxuICAgIC8qKiBtYXRjaCBhdCBsZWFzdCBvbmUgb2YgdGhlIHByb3ZpZGVkIHZhbHVlcyAodmFsdWUgaGFzIHRvIGJlIGFuIGFycmF5KSAgKi9cbiAgICBJTjogXCJpblwiLFxuICAgIC8qKiBncmVhdGVyIHRoYW4gKi9cbiAgICBHUkVBVEVSX1RIQU46IFwiZ3RcIixcbiAgICAvKiogZ3JlYXRlciB0aGFuIG9yIGVxdWFsICovXG4gICAgR1JFQVRFUl9PUl9FUVVBTDogXCJndGVcIiwgLy9cbiAgICBMRVNTX1RIQU46IFwibHRcIiwgLy8gbGVzcyB0aGFuXG4gICAgTEVTU19PUl9FUVVBTDogXCJsdGVcIiwgLy8gbGVzcyB0aGFuIG9yIGVxdWFsXG4gICAgSU5URVJWQUw6IFwiZ3RsdFwiLCAvLyBpbnRlcnZhbFxuICAgIElOVEVSVkFMX0lOQ0xVREVfQk9USDogXCJndGVsdGVcIiwgLy8gaW50ZXJ2YWwgaW5jbHVkZSBsZWZ0IGFuZCByaWdodFxuICAgIElOVEVSVkFMX0lOQ0xVREVfVE86IFwiZ3RsdGVcIiwgLy8gaW50ZXJ2YWwgaW5jbHVkZSByaWdodFxuICAgIElOVEVSVkFMX0lOQ0xVREVfRlJPTTogXCJndGVsdFwiLCAvLyBpbnRlcnZhbCBpbmNsdWRlIGxlZnRcbiAgICBSQU5HRTogXCJyZ1wiIC8vIGFnZ2VnYXRpb24gcmFuZ2VzXG4gIH07XG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdG9yIGZvciBjcmVhdGluZyBhIG5ldyBTZWFyY2hGaWx0ZXIuXG4gICAqXG4gICAqIEBwYXJhbSBwcm9wZXJ0eSBUaGUgcXVhbGlmaWVkIG5hbWUgb2YgdGhlIGZpZWxkIHRoaXMgZmlsdGVyIHNob3VsZCBhcHBseSB0by5cbiAgICogQHBhcmFtIG9wZXJhdG9yIE9wZXJhdG9yIGluZGljYXRpbmcgaG93IHRvIGhhbmRsZSB0aGUgZmlsdGVycyB2YWx1ZShzKS4gU2VlIFNlYXJjaEZpbHRlci5PUEVSQVRPUiBmb3IgYXZhaWxhYmxlIG9wZXJhdG9ycy5cbiAgICogQHBhcmFtIGZpcnN0VmFsdWUgVGhlIGZpbHRlcnMgdmFsdWVcbiAgICogQHBhcmFtIHNlY29uZFZhbHVlIE9wdGlvbmFsIHNlY29uZCB2YWx1ZSBmb3IgZmlsdGVycyB0aGF0IGZvciBleGFtcGxlIGRlZmluZSByYW5nZXMgb2YgdmFsdWVzXG4gICAqIEBwYXJhbSB0cmFuc2Zvcm1EYXRlIEZsYWcgdG8gdHJhbnNmb3JtIGRhdGUgaG91cnMgYW5kIG1pbnV0ZXMgYmFzZWQgb24gb3BlcmF0b3JcbiAgICovXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBwcm9wZXJ0eTogc3RyaW5nLFxuICAgIHB1YmxpYyBvcGVyYXRvcjogc3RyaW5nLFxuICAgIHB1YmxpYyBmaXJzdFZhbHVlOiBhbnksXG4gICAgcHVibGljIHNlY29uZFZhbHVlPzogYW55LFxuICAgIHB1YmxpYyB0cmFuc2Zvcm1EYXRlPzoge3RpbWU/OiBib29sZWFuOyB0aW1lem9uZT86IGJvb2xlYW59XG4gICkge31cblxuICBmb3JtYXREYXRlKHZhbHVlOiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy50cmFuc2Zvcm1EYXRlICYmIHZhbHVlXG4gICAgICA/IHRoaXMudHJhbnNmb3JtRGF0ZS50aW1lem9uZVxuICAgICAgICA/IG5ldyBEYXRlUGlwZShcImVuXCIpLnRyYW5zZm9ybSh2YWx1ZSwgXCJ5eXl5LU1NLWRkVFpcIilcbiAgICAgICAgOiB0aGlzLnRyYW5zZm9ybURhdGUudGltZVxuICAgICAgICAgID8gbmV3IERhdGUodmFsdWUpLnRvSVNPU3RyaW5nKCkuc2xpY2UoMCwgMTYpICsgXCJaXCJcbiAgICAgICAgICA6IG5ldyBEYXRlUGlwZShcImVuXCIpLnRyYW5zZm9ybSh2YWx1ZSwgXCJ5eXl5LU1NLWRkXCIpXG4gICAgICA6IHZhbHVlO1xuICB9XG5cbiAgdG9RdWVyeSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgbzogdGhpcy5vcGVyYXRvcixcbiAgICAgIHYxOiB0aGlzLmZvcm1hdERhdGUodGhpcy5maXJzdFZhbHVlKSxcbiAgICAgIC4uLih0aGlzLnNlY29uZFZhbHVlICYmIHt2MjogdGhpcy5mb3JtYXREYXRlKHRoaXMuc2Vjb25kVmFsdWUpfSlcbiAgICB9O1xuICB9XG5cbiAgdG9EYXRlVGltZVF1ZXJ5KCkge1xuICAgIGlmICh0aGlzLnRyYW5zZm9ybURhdGUgJiYgdGhpcy50cmFuc2Zvcm1EYXRlLnRpbWV6b25lICYmIHRoaXMuZmlyc3RWYWx1ZSkge1xuICAgICAgbGV0IGZpcnN0VmFsdWUgPSB0aGlzLmZpcnN0VmFsdWU7XG4gICAgICBsZXQgc2Vjb25kVmFsdWUgPSB0aGlzLnNlY29uZFZhbHVlO1xuICAgICAgY29uc3QgZW5kRGF0ZSA9IG5ldyBEYXRlKHNlY29uZFZhbHVlIHx8IGZpcnN0VmFsdWUpO1xuICAgICAgZW5kRGF0ZS5zZXRIb3VycygyMywgNTksIDU5LCA5OTkpO1xuICAgICAgaWYgKHRoaXMub3BlcmF0b3IgPT09IFNlYXJjaEZpbHRlci5PUEVSQVRPUi5MRVNTX09SX0VRVUFMKSB7XG4gICAgICAgIGZpcnN0VmFsdWUgPSBlbmREYXRlLnRvSVNPU3RyaW5nKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBzdGFydERhdGUgPSBuZXcgRGF0ZShmaXJzdFZhbHVlKTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHRoaXMub3BlcmF0b3IgPT09IFNlYXJjaEZpbHRlci5PUEVSQVRPUi5HUkVBVEVSX1RIQU4gfHxcbiAgICAgICAgICB0aGlzLm9wZXJhdG9yID09PSBTZWFyY2hGaWx0ZXIuT1BFUkFUT1IuSU5URVJWQUxcbiAgICAgICAgKSB7XG4gICAgICAgICAgc3RhcnREYXRlLnNldEhvdXJzKDIzLCA1OSwgNTksIDk5OSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc3RhcnREYXRlLnNldEhvdXJzKDAsIDAsIDAsIDApO1xuICAgICAgICB9XG4gICAgICAgIGZpcnN0VmFsdWUgPSBzdGFydERhdGUudG9JU09TdHJpbmcoKTtcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgdGhpcy5vcGVyYXRvciA9PT0gU2VhcmNoRmlsdGVyLk9QRVJBVE9SLklOVEVSVkFMX0lOQ0xVREVfQk9USCB8fFxuICAgICAgICB0aGlzLm9wZXJhdG9yID09PSBTZWFyY2hGaWx0ZXIuT1BFUkFUT1IuRVFVQUxcbiAgICAgICkge1xuICAgICAgICBzZWNvbmRWYWx1ZSA9IGVuZERhdGUudG9JU09TdHJpbmcoKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIG86XG4gICAgICAgICAgdGhpcy5vcGVyYXRvciA9PT0gU2VhcmNoRmlsdGVyLk9QRVJBVE9SLkVRVUFMXG4gICAgICAgICAgICA/IFNlYXJjaEZpbHRlci5PUEVSQVRPUi5JTlRFUlZBTF9JTkNMVURFX0JPVEhcbiAgICAgICAgICAgIDogdGhpcy5vcGVyYXRvcixcbiAgICAgICAgdjE6IGZpcnN0VmFsdWUsXG4gICAgICAgIC4uLihzZWNvbmRWYWx1ZSAmJiB7djI6IHNlY29uZFZhbHVlfSlcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLnRvUXVlcnkoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgbWF0Y2goXG4gICAgcHJvcGVydHk6IHN0cmluZyxcbiAgICBvcGVyYXRvcjogc3RyaW5nLFxuICAgIGZpcnN0VmFsdWU6IGFueSxcbiAgICBzZWNvbmRWYWx1ZT86IGFueVxuICApIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5wcm9wZXJ0eSA9PT0gcHJvcGVydHkgJiZcbiAgICAgIHRoaXMub3BlcmF0b3IgPT09IG9wZXJhdG9yICYmXG4gICAgICB0aGlzLnNlY29uZFZhbHVlID09PSBzZWNvbmRWYWx1ZSAmJlxuICAgICAgKHRoaXMuZmlyc3RWYWx1ZSBpbnN0YW5jZW9mIEFycmF5XG4gICAgICAgID8gISF0aGlzLmZpcnN0VmFsdWUuZmluZCh2ID0+IHYgPT09IGZpcnN0VmFsdWUpXG4gICAgICAgIDogdGhpcy5maXJzdFZhbHVlID09PSBmaXJzdFZhbHVlKVxuICAgICk7XG4gIH1cbn1cbiJdfQ==
|
|
500
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLXF1ZXJ5Lm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZW8tc2RrL2NvcmUvc3JjL2xpYi9zZXJ2aWNlL3NlYXJjaC9zZWFyY2gtcXVlcnkubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBRXpDLDJEQUEyRDtBQUUzRCxNQUFNLENBQU4sSUFBWSxVQUlYO0FBSkQsV0FBWSxVQUFVO0lBQ3BCLHlCQUFXLENBQUE7SUFDWCxpQ0FBbUIsQ0FBQTtJQUNuQixzQ0FBd0IsQ0FBQTtBQUMxQixDQUFDLEVBSlcsVUFBVSxLQUFWLFVBQVUsUUFJckI7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxPQUFPLFdBQVc7SUF1SXRCO1FBbkRBOztXQUVHO1FBQ0ksVUFBSyxHQUFpQixFQUFFLENBQUM7UUFDaEM7O1dBRUc7UUFDSSx1QkFBa0IsR0FBaUIsRUFBRSxDQUFDO1FBQzdDOztXQUVHO1FBQ0ksWUFBTyxHQUFtQixFQUFFLENBQUM7UUFLcEM7O1dBRUc7UUFDSSxlQUFVLEdBQUcsS0FBSyxDQUFDO1FBSzFCOztXQUVHO1FBQ0ksZUFBVSxHQUFXLFdBQVcsQ0FBQyxtQkFBbUIsQ0FBQztRQUM1RDs7V0FFRztRQUNJLGdCQUFXLEdBQWlCLEVBQUUsQ0FBQztRQUN0Qzs7V0FFRztRQUNJLHFCQUFnQixHQUFHLElBQUksQ0FBQztRQUMvQjs7V0FFRztRQUNJLFVBQUssR0FBZ0IsSUFBSSxXQUFXLEVBQUUsQ0FBQztRQUV2QyxpQkFBWSxHQUFZLEtBQUssQ0FBQztRQUM5QixnQkFBVyxHQUFZLEtBQUssQ0FBQztJQVNyQixDQUFDO0lBRWhCOzs7O09BSUc7SUFDSSxPQUFPLENBQUMsSUFBZ0I7UUFDN0IsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FB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Q2hCLFVBQWUsRUFDZixXQUFpQjtRQUVqQixPQUFPLENBQ0wsSUFBSSxDQUFDLFFBQVEsS0FBSyxRQUFRO1lBQzFCLElBQUksQ0FBQyxRQUFRLEtBQUssUUFBUTtZQUMxQixJQUFJLENBQUMsV0FBVyxLQUFLLFdBQVc7WUFDaEMsQ0FBQyxJQUFJLENBQUMsVUFBVSxZQUFZLEtBQUs7Z0JBQy9CLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssVUFBVSxDQUFDO2dCQUMvQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsS0FBSyxVQUFVLENBQUMsQ0FDcEMsQ0FBQztJQUNKLENBQUM7O0FBbEhEOztHQUVHO0FBQ1cscUJBQVEsR0FBRztJQUN2QixZQUFZO0lBQ1osS0FBSyxFQUFFLElBQUk7SUFDWCx3REFBd0Q7SUFDeEQsS0FBSyxFQUFFLE9BQU87SUFDZCw0RUFBNEU7SUFDNUUsRUFBRSxFQUFFLElBQUk7SUFDUixtQkFBbUI7SUFDbkIsWUFBWSxFQUFFLElBQUk7SUFDbEIsNEJBQTRCO0lBQzVCLGdCQUFnQixFQUFFLEtBQUs7SUFDdkIsU0FBUyxFQUFFLElBQUk7SUFDZixhQUFhLEVBQUUsS0FBSztJQUNwQixRQUFRLEVBQUUsTUFBTTtJQUNoQixxQkFBcUIsRUFBRSxRQUFRO0lBQy9CLG1CQUFtQixFQUFFLE9BQU87SUFDNUIscUJBQXFCLEVBQUUsT0FBTztJQUM5QixLQUFLLEVBQUUsSUFBSSxDQUFDLG9CQUFvQjtDQUNqQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtyZWR1Y2V9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7T2JqZWN0VHlwZX0gZnJvbSBcIi4uLy4uL21vZGVsL29iamVjdC10eXBlLm1vZGVsXCI7XG5pbXBvcnQge0RhdGVQaXBlfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XG5cbi8vZXhwb3J0IHR5cGUgUXVlcnlTY29wZSA9ICdpbmRleGRhdGUnIHwgJ2NvbnRlbnQnIHwgJ2FsbCc7XG5cbmV4cG9ydCBlbnVtIFF1ZXJ5U2NvcGUge1xuICBBTEwgPSAnYWxsJyxcbiAgQ09OVEVOVCA9ICdjb250ZW50JyxcbiAgSU5ERVhfREFUQSA9ICdpbmRleGRhdGEnXG59XG5cbi8qKlxuICogVGhlIFNlYXJjaFF1ZXJ5IENsYXNzXG4gKlxuICogU2VlIHtAbGluayBTZWFyY2hTZXJ2aWNlfSBmb3IgVXNhZ2VcbiAqL1xuZXhwb3J0IGNsYXNzIFNlYXJjaFF1ZXJ5IHtcbiAgLyoqXG4gICAqIEJhc2UgUGFyYW1ldGVycyBmb3IgYSBTZWFyY2ggUXVlcnlcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgQkFTRV9QQVJBTVMgPSB7XG4gICAgVFlQRTogXCJ0eXBlXCIsXG4gICAgQ1JFQVRPUjogXCJjcmVhdG9yXCIsXG4gICAgQ1JFQVRFRDogXCJjcmVhdGVkXCIsXG4gICAgTU9ESUZJRVI6IFwibW9kaWZpZXJcIixcbiAgICBNT0RJRklFRDogXCJtb2RpZmllZFwiLFxuICAgIEZJTEVTSVpFOiBcImZpbGVzaXplXCIsXG4gICAgRklMRU5BTUU6IFwiZmlsZW5hbWVcIixcbiAgICBNSU1FVFlQRUdST1VQOiBcIm1pbWV0eXBlZ3JvdXBcIlxuICB9O1xuXG4gIC8qKlxuICAgKiBUaW1lIHBlcmlvZCBidWNrZXRzIHByb3BlcnR5IG5hbWVzXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIFRJTUVfUEVSSU9EX0JVQ0tFVFMgPSB7XG4gICAgVE9EQVk6IFwidG9kYXlcIixcbiAgICBZRVNURVJEQVk6IFwieWVzdGVyZGF5XCIsXG4gICAgVEhJU19XRUVLOiBcInRoaXN3ZWVrXCIsXG4gICAgTEFTVF9XRUVLOiBcImxhc3R3ZWVrXCIsXG4gICAgVEhJU19NT05USDogXCJ0aGlzbW9udGhcIixcbiAgICBMQVNUX01PTlRIOiBcImxhc3Rtb250aFwiLFxuICAgIFRISVNfWUVBUjogXCJ0aGlzeWVhclwiLFxuICAgIExBU1RfWUVBUjogXCJsYXN0eWVhclwiXG4gIH07XG5cbiAgLyoqXG4gICAqIG1pbWV0eXBlIGJ1Y2tldHMgcHJvcGVydHkgbmFtZXNcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgTUlNRVRZUEVHUk9VUF9CVUNLRVRTID0ge1xuICAgIFBERjogXCJwZGZcIixcbiAgICBNQUlMOiBcIm1haWxcIixcbiAgICBXT1JEOiBcIndvcmRcIixcbiAgICBJTUFHRTogXCJpbWFnZVwiLFxuICAgIE9DVEVUX1NUUkVBTTogXCJvY3RldC1zdHJlYW1cIixcbiAgICBUWFQ6IFwidHh0XCIsXG4gICAgRVhDRUw6IFwiZXhjZWxcIixcbiAgICBQT1dFUlBPSU5UOiBcInBvd2VycG9pbnRcIixcbiAgICBWSURFTzogXCJ2aWRlb1wiLFxuICAgIEhUTUw6IFwiaHRtbFwiLFxuICAgIEFVRElPOiBcImF1ZGlvXCIsXG4gICAgWklQOiBcInppcFwiXG4gIH07XG5cbiAgLyoqXG4gICAqIGZpbGVzaXplIGJ1Y2tldHMgcHJvcGVydHkgbmFtZXNcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgRklMRV9TSVpFX0JVQ0tFVFMgPSB7XG4gICAgTFQxTUI6IFwibHQxTUJcIixcbiAgICBMVDEwTUI6IFwibHQxME1CXCIsXG4gICAgTFQxMDBNQjogXCJsdDEwME1CXCIsXG4gICAgR1QxMDBNQjogXCJndDEwME1CXCJcbiAgfTtcblxuICAvLyBsaXN0IG9mIHRoaW5ncyB0aGF0IG1heSBoYXZlIGNoYW5nZWQgdGhlIGN1cnJlbnQgcXVlcnlcbiAgcHVibGljIHN0YXRpYyBVUERBVEVfQ0FVU0UgPSB7XG4gICAgVE9HR0xFRF9UWVBFOiBcImNhdXNlLnR5cGUudG9nZ2xlZFwiLFxuICAgIFRPR0dMRURfRVhQRVJUTU9ERTogXCJjYXVzZS5leHBlcnRtb2RlLnRvZ2dsZWRcIixcbiAgICBURVJNX1NFVDogXCJjYXVzZS50ZXJtLnNldFwiLFxuICAgIFRZUEVTX1NFVDogXCJjYXVzZS50eXBlcy5zZXRcIixcbiAgICBDT05URVhUX0ZPTERFUl9TRVQ6IFwiY2F1c2UuY29udGV4dGZvbGRlci5zZXRcIixcbiAgICBUT0dHTEVEX0ZJTFRFUjogXCJjYXVzZS5maWx0ZXIudG9nZ2xlZFwiLFxuICAgIEFEREVEX0ZJTFRFUjogXCJjYXVzZS5maWx0ZXIuYWRkZWRcIixcbiAgICBSRU1PVkVEX0ZJTFRFUjogXCJjYXVzZS5maWx0ZXIucmVtb3ZlZFwiLFxuICB9O1xuICAvKipcbiAgICogRGV0YXVsdCBTZWFyY2ggbW9kZSBJbmRleFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBERUZBVUxUX1NFQVJDSF9NT0RFID0gXCJpZHhzXCI7XG4gIC8qKlxuICAgKiBTZWFyY2ggbW9kZSBmb3IgRnVsbCB0ZXN0IFNlYXJjaFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBGVUxMVEVYVF9TRUFSQ0hfTU9ERSA9IFwiZnRzXCI7XG4gIC8qKlxuICAgKiBmdWxsdGV4dCBzZWFyY2ggdGVybVxuICAgKi9cbiAgcHVibGljIHRlcm06IHN0cmluZztcbiAgLyoqXG4gICAqIEFycmF5IG9mIGZpZWxkcyB0byByZXF1ZXN0IGZyb20gdGhlIHNlYXJjaCBzZXJ2aWNlLCBsZWF2aW5nIHRoaXMgYmxhbmsgd2lsbCByZXR1cm4gdGhlIGZpZWxkcyBzcGVjaWZpZWQgaW4gdGhlIHJlc3VsdCBmaWVsZCBjb25maWd1cmF0aW9uXG4gICAqL1xuICBwdWJsaWMgZmllbGRzOiBzdHJpbmdbXTtcbiAgLyoqXG4gICAqIExpc3Qgb2Ygb2JqZWN0IHR5cGVzIHRvIGJlIGZldGNoZWQgYnkgdGhlIHF1ZXJ5LiBMZWF2aW5nIHRoaXMgYmxhbmsgd2lsbCByZXR1cm4gcmVzdWx0cyBmcm9tIGFueSB0eXBlXG4gICAqL1xuICBwdWJsaWMgdHlwZXM6IE9iamVjdFR5cGVbXSA9IFtdO1xuICAvKipcbiAgICogTGlzdCBvZiBjb250ZXh0IGZvbGRlciB0eXBlc1xuICAgKi9cbiAgcHVibGljIGNvbnRleHRGb2xkZXJUeXBlczogT2JqZWN0VHlwZVtdID0gW107XG4gIC8qKlxuICAgKiBMaXN0IG9mIGZpbHRlcnMgdG8gZGVmaW5lIHRoZSBxdWVyeVxuICAgKi9cbiAgcHVibGljIGZpbHRlcnM6IFNlYXJjaEZpbHRlcltdID0gW107XG4gIC8qKlxuICAgKiBXaGV0aGVyIG9yIG5vdCB0byByZXRyaWV2ZSBzdWdnZXN0aW9uc1xuICAgKi9cbiAgcHVibGljIHN1Z2dlc3Q6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBXaGV0aGVyIG9yIG5vdCB0aGUgdGVybSBpcyBhbiBleHBlcnQgbW9kZSBxdWVyeVxuICAgKi9cbiAgcHVibGljIGV4cGVydE1vZGUgPSBmYWxzZTtcbiAgLyoqXG4gICAqIFRoZSBzY29wZSBvZiB0aGUgcXVlcnlcbiAgICovXG4gIHB1YmxpYyBzY29wZTogUXVlcnlTY29wZTtcbiAgLyoqXG4gICAqIFRoZSBzZWFyY2ggbW9kZSB0byBiZSB1c2VkIChTZWFyY2hRdWVyeS5ERUZBVUxUX1NFQVJDSF9NT0RFIG9yIFNlYXJjaFF1ZXJ5LkZVTExURVhUX1NFQVJDSF9NT0RFKVxuICAgKi9cbiAgcHVibGljIHNlYXJjaE1vZGU6IHN0cmluZyA9IFNlYXJjaFF1ZXJ5LkRFRkFVTFRfU0VBUkNIX01PREU7XG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIG9wdGlvbnMgdG8gYmUgYXBwbGllZCB0byB0aGUgcXVlcnlcbiAgICovXG4gIHB1YmxpYyBzb3J0T3B0aW9uczogU29ydE9wdGlvbltdID0gW107XG4gIC8qKlxuICAgKiBSZXNvbHZlIHJlZmVyZW5jZXMgd2l0aCB0aGVpciB0aXRsZSBpbnN0ZWFkIG9mIHRoZWlyIGFjdHVhbCB2YWx1ZVxuICAgKi9cbiAgcHVibGljIHJlc29sdmVSZWZlcmVuY2UgPSB0cnVlO1xuICAvKipcbiAgICogVGhlIHN0YXRlIG9mIHRoZSBjdXJyZW50IHF1ZXJ5XG4gICAqL1xuICBwdWJsaWMgc3RhdGU6IFNlYXJjaFN0YXRlID0gbmV3IFNlYXJjaFN0YXRlKCk7XG5cbiAgcHVibGljIGhpZ2hsaWdodGluZzogYm9vbGVhbiA9IGZhbHNlO1xuICBwdWJsaWMgd2l0aENvbnRleHQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBwdWJsaWMgbmFtZT86IHN0cmluZztcblxuICAvLyBJbmRpY2F0b3Igd2hhdCBjYXVzZWQgdGhlIHVwZGF0ZSBvZiBhIFNlYXJjaFF1ZXJ5IG9iamVjdC5cbiAgLy8gVXNlZnVsbCBmb3IgY29tcG9uZW50cyB0aGF0IHN1YnNjcmliZWQgdG8gYSBxdWVyeSwgYW5kIG5lZWQgdG9cbiAgLy8gdHJhY2sgdGhlIGtpbmQgb2YgY2hhbmdlcyBtYWRlXG4gIF9fdXBkYXRlQ2F1c2U6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBuZXcgdGFyZ2V0IHR5cGUgdG8gdGhlIHF1ZXJ5XG4gICAqXG4gICAqIEBwYXJhbSB0eXBlIE9iamVjdCB0eXBlIHRvIGJlIGFkZGVkXG4gICAqL1xuICBwdWJsaWMgYWRkVHlwZSh0eXBlOiBPYmplY3RUeXBlKSB7XG4gICAgaWYgKCF0aGlzLnR5cGVzLmZpbmQodCA9PiB0LmlkID09PSB0eXBlLmlkKSkge1xuICAgICAgdGhpcy50eXBlcy5wdXNoKHR5cGUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIGEgdHlwZSBmcm9tIHRoZSB0YXJnZXQgdHlwZXMgbGlzdFxuICAgKlxuICAgKiBAcGFyYW0gdHlwZSBUaGUgb2JqZWN0IHR5cGUgdG8gYmUgcmVtb3ZlZFxuICAgKi9cbiAgcHVibGljIHJlbW92ZVR5cGUodHlwZTogT2JqZWN0VHlwZSkge1xuICAgIHRoaXMudHlwZXMgPSB0aGlzLnR5cGVzLmZpbHRlcih0ID0+IHQuaWQgIT09IHR5cGUuaWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgb3IgcmVtb3ZlcyB0aGUgZ2l2ZW4gdHlwZSBiYXNlZCBvbiB0aGUgY3VycmVudCBzZXR0aW5nc1xuICAgKlxuICAgKiBAcGFyYW0gdHlwZSBUaGUgb2JqZWN0IHR5cGUgdG8gYmUgdG9nZ2xlZFxuICAgKi9cbiAgcHVibGljIHRvZ2dsZVR5cGUodHlwZTogT2JqZWN0VHlwZSkge1xuICAgIGlmICh0aGlzLnR5cGVzLmZpbmQodCA9PiB0LmlkID09PSB0eXBlLmlkKSkge1xuICAgICAgdGhpcy5yZW1vdmVUeXBlKHR5cGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnR5cGVzLnB1c2godHlwZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBuZXcgZmlsdGVyIHRvIHRoZSBxdWVyeS4gSWYgdGhlcmUgYWxyZWFkeSBpcyBhIGZpbHRlciBzZXQgZm9yIHRoZSBnaXZlbiBwcm9wZXJ0eSwgaXQgd2lsbCBiZSBvdmVycmlkZGVuLlxuICAgKlxuICAgKiBAcGFyYW0gZmlsdGVyIFRoZSBmaWx0ZXIgdG8gYmUgYWRkZWRcbiAgICovXG4gIHB1YmxpYyBhZGRGaWx0ZXIoZmlsdGVyOiBTZWFyY2hGaWx0ZXIpIHtcbiAgICBpZiAoIWZpbHRlcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuZ2V0RmlsdGVyKGZpbHRlci5wcm9wZXJ0eSkpIHtcbiAgICAgIHRoaXMuZmlsdGVycy5wdXNoKGZpbHRlcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGlmIHRoZXJlIGFscmVhZHkgaXMgYSBmaWx0ZXIgc2V0IGZvciB0aGUgdGFyZ2V0IHByb3BlcnR5XG4gICAgICAvLyB3ZSdsbCBqdXN0IG92ZXJyaWRlIGl0IHdpdGggdGhlIG5ldyB2YWx1ZVxuICAgICAgdGhpcy5yZW1vdmVGaWx0ZXIoZmlsdGVyLnByb3BlcnR5KTtcbiAgICAgIHRoaXMuZmlsdGVycy5wdXNoKGZpbHRlcik7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZXMgYSBmaWx0ZXIgZnJvbSB0aGUgcXVlcnkuXG4gICAqXG4gICAqIEBwYXJhbSBmaWx0ZXJQcm9wZXJ0eU5hbWUgVGhlIGZpbHRlciAoaXRzIHByb3BlcnR5IG5hbWUpIHRvIGJlIHJlbW92ZWRcbiAgICovXG4gIHB1YmxpYyByZW1vdmVGaWx0ZXIoZmlsdGVyUHJvcGVydHlOYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLmZpbHRlcnMgPSB0aGlzLmZpbHRlcnMuZmlsdGVyKGYgPT4gZi5wcm9wZXJ0eSAhPT0gZmlsdGVyUHJvcGVydHlOYW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIG9yIHJlbW92ZXMgdGhlIGdpdmVuIGZpbHRlciBiYXNlZCBvbiB0aGUgY3VycmVudCBzZXR0aW5nc1xuICAgKlxuICAgKiBAcGFyYW0gZmlsdGVyIFRoZSBmaWx0ZXIgdG8gYmUgdG9nZ2xlZFxuICAgKi9cbiAgcHVibGljIHRvZ2dsZUZpbHRlcihmaWx0ZXI6IFNlYXJjaEZpbHRlciwgb3ZlcnJpZGU/OiBib29sZWFuKSB7XG4gICAgaWYgKHRoaXMuZ2V0RmlsdGVyKGZpbHRlci5wcm9wZXJ0eSkpIHtcbiAgICAgIHRoaXMucmVtb3ZlRmlsdGVyKGZpbHRlci5wcm9wZXJ0eSk7XG4gICAgICBpZiAob3ZlcnJpZGUpIHtcbiAgICAgICAgdGhpcy5maWx0ZXJzLnB1c2goZmlsdGVyKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5maWx0ZXJzLnB1c2goZmlsdGVyKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmV0cmlldmVzIGEgZmlsdGVyIGJ5IGl0cyBwcm9wZXJ0eSBuYW1lLlxuICAgKlxuICAgKiBAcGFyYW0gcHJvcGVydHlOYW1lIFRoZSBmaWx0ZXJzIHByb3BlcnR5IG5hbWUgKHFuYW1lIG9mIGZvcm0gZWxlbWVudClcbiAgICogQHJldHVybnMgU2VhcmNoIEZpbHRlciBPYmplY3RcbiAgICovXG4gIHB1YmxpYyBnZXRGaWx0ZXIocHJvcGVydHlOYW1lOiBzdHJpbmcpOiBTZWFyY2hGaWx0ZXIge1xuICAgIHJldHVybiB0aGlzLmZpbHRlcnMuZmluZChmID0+IGYucHJvcGVydHkgPT09IHByb3BlcnR5TmFtZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0VGFibGVGaWx0ZXJzKHByb3BlcnR5TmFtZTogc3RyaW5nKTogU2VhcmNoRmlsdGVyW10ge1xuICAgIHJldHVybiB0aGlzLmZpbHRlcnMuZmlsdGVyKGYgPT4gZi5wcm9wZXJ0eS5zdGFydHNXaXRoKHByb3BlcnR5TmFtZSArICcuJykpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZGluZyBuZXcgU29ydCBPcHRpb25zXG4gICAqIFNvcnQgT3B0aW9ucyBhcmUgb25seSBhZGRlZCBpZiB0aGV5IGFyZSBub3QgYWxyZWFkeSBwcmVzZW50XG4gICAqXG4gICAqIEBwYXJhbSBuYW1lXG4gICAqIEBwYXJhbSBvcmRlclxuICAgKiBAcGFyYW0gbWlzc2luZ1xuICAgKi9cbiAgcHVibGljIGFkZFNvcnRPcHRpb24obmFtZTogc3RyaW5nLCBvcmRlcjogc3RyaW5nLCBtaXNzaW5nPzogc3RyaW5nKSB7XG4gICAgaWYgKCF0aGlzLnNvcnRPcHRpb25zLmZpbmQocyA9PiBzLmZpZWxkID09PSBuYW1lKSkge1xuICAgICAgdGhpcy5zb3J0T3B0aW9ucy5wdXNoKG5ldyBTb3J0T3B0aW9uKG5hbWUsIG9yZGVyLCBtaXNzaW5nKSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSBuYW1lXG4gICAqL1xuICBwdWJsaWMgcmVtb3ZlU29ydE9wdGlvbihuYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLnNvcnRPcHRpb25zID0gdGhpcy5zb3J0T3B0aW9ucy5maWx0ZXIocyA9PiBzLmZpZWxkICE9PSBuYW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZSBhIHF1ZXJ5IEpTT04gZnJvbSB0aGUgY3VycmVudCBTZWFyY2hRdWVyeSB0aGF0IGNhbiBiZSBzZW5kIHRvIHRoZSBzZWFyY2ggc2VydmljZS5cbiAgICpcbiAgICogQHBhcmFtIHJlc29sdmVSZWZlcmVuY2UgaW4gY2FzZSBvZiBjc3YgZXhwb3J0IHRoZSByZXNvbHZpbmcgb2YgcmVmZXJlbmNlcyBpcyBzZXQgYnkgY29uZmlndXJhdGlvblxuICAgKi9cbiAgcHVibGljIGdldFF1ZXJ5SnNvbihyZXNvbHZlUmVmZXJlbmNlPzogYm9vbGVhbikge1xuICAgIC8vIENvbnZlcnQgdGhlIGN1cnJlbnQgcXVlcnkgb2JqZWN0IHRvIGEgcXVlcnkgSlNPTiB0aGF0IGNhbiBiZSBjb25zdW1lZCBieSB0aGUgc2VhcmNoIHNlcnZpY2UgYmFja2VuZC5cbiAgICAvLyBUbyBrZWVwIGl0IHNob3J0LCB3ZSdsbCBvbmx5IGFkZCBwcm9wZXJ0aWVzIHRoYXQgYXJlIHNldCBhbmQgZGlmZmVyIGZyb20gZGVmYXVsdCB2YWx1ZXNcbiAgICBjb25zdCBxdWVyeUpzb246IGFueSA9IHt9O1xuXG4gICAgLy8gYWRkIHR5cGUgZmlsdGVyc1xuICAgIGlmICh0aGlzLnR5cGVzLmxlbmd0aCA+IDApIHtcbiAgICAgIHF1ZXJ5SnNvbi50eXBlcyA9IHRoaXMudHlwZXMubWFwKHQgPT5cbiAgICAgICAgdHlwZW9mIHQgPT09IFwic3RyaW5nXCIgPyB0IDogdC5uYW1lXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIGFkZCBjb250ZXh0IGZvbGRlciB0eXBlIGZpbHRlcnNcbiAgICBpZiAodGhpcy5jb250ZXh0Rm9sZGVyVHlwZXMubGVuZ3RoID4gMCkge1xuICAgICAgcXVlcnlKc29uLmNvbnRleHRmb2xkZXJ0eXBlcyA9IHRoaXMuY29udGV4dEZvbGRlclR5cGVzLm1hcCh0ID0+IHQubmFtZSk7XG4gICAgfVxuXG4gICAgLy8gZmlsdGVyc1xuICAgIGlmICh0aGlzLmZpbHRlcnMubGVuZ3RoID4gMCkge1xuICAgICAgcXVlcnlKc29uLmZpbHRlcnMgPSB7fTtcbiAgICAgIHRoaXMuZmlsdGVycy5mb3JFYWNoKGYgPT4ge1xuICAgICAgICBxdWVyeUpzb24uZmlsdGVyc1tmLnByb3BlcnR5XSA9IGYudG9RdWVyeSgpO1xuICAgICAgfSk7XG4gICAgfVxuICAgIGlmICh0aGlzLnRlcm0pIHtcbiAgICAgIHF1ZXJ5SnNvbi50ZXJtID0gdGhpcy50ZXJtO1xuICAgIH1cbiAgICAvLyBzZWFyY2ggZmllbGRzXG4gICAgaWYgKHRoaXMuZmllbGRzKSB7XG4gICAgICBxdWVyeUpzb24uZmllbGRzID0gdGhpcy5maWVsZHM7XG4gICAgfVxuICAgIGlmICh0aGlzLm5hbWUpIHtcbiAgICAgIHF1ZXJ5SnNvbi5uYW1lID0gdGhpcy5uYW1lO1xuICAgIH1cbiAgICAvLyBhZGQgb3B0aW9ucyB3aGVuIHRoZXkgZGlmZmVyIGZyb20gdGhlIGRlZmF1bHQgdmFsdWVzXG4gICAgaWYgKHRoaXMuYXBwbHlPcHRpb25zKCkpIHtcbiAgICAgIHF1ZXJ5SnNvbi5vcHRpb25zID0ge307XG4gICAgICBxdWVyeUpzb24ub3B0aW9ucy5zY29wZSA9IHRoaXMuc2NvcGU7XG4gICAgICBpZiAodGhpcy5zdWdnZXN0KSB7XG4gICAgICAgIHF1ZXJ5SnNvbi5vcHRpb25zLnN1Z2dlc3QgPSB0cnVlO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuZXhwZXJ0TW9kZSkge1xuICAgICAgICBxdWVyeUpzb24ub3B0aW9ucy5leHBlcnRtb2RlID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgcXVlcnlKc29uLm9wdGlvbnMucmVzb2x2ZXJlZmVyZW5jZSA9IHJlc29sdmVSZWZlcmVuY2UgIT09IHVuZGVmaW5lZCA/IHJlc29sdmVSZWZlcmVuY2UgOiB0cnVlO1xuXG4gICAgICBpZiAodGhpcy5zZWFyY2hNb2RlICE9PSBTZWFyY2hRdWVyeS5ERUZBVUxUX1NFQVJDSF9NT0RFKSB7XG4gICAgICAgIHF1ZXJ5SnNvbi5vcHRpb25zLnNlYXJjaG1vZGUgPSB0aGlzLnNlYXJjaE1vZGU7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5zb3J0T3B0aW9ucyAmJiB0aGlzLnNvcnRPcHRpb25zLmxlbmd0aCkge1xuICAgICAgICBxdWVyeUpzb24ub3B0aW9ucy5zb3J0ID0ge307XG4gICAgICAgIHRoaXMuc29ydE9wdGlvbnMuZm9yRWFjaCgoc29ydE9wdGlvbjogU29ydE9wdGlvbikgPT4ge1xuICAgICAgICAgIHF1ZXJ5SnNvbi5vcHRpb25zLnNvcnRbc29ydE9wdGlvbi5maWVsZF0gPSB7XG4gICAgICAgICAgICBvcmRlcjogc29ydE9wdGlvbi5vcmRlclxuICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5oaWdobGlnaHRpbmcpIHtcbiAgICAgICAgcXVlcnlKc29uLm9wdGlvbnMuaGlnaGxpZ2h0aW5nID0gdGhpcy5oaWdobGlnaHRpbmc7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy53aXRoQ29udGV4dCkge1xuICAgICAgICBxdWVyeUpzb24ub3B0aW9ucy53aXRoY29udGV4dCA9IHRoaXMud2l0aENvbnRleHQ7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBxdWVyeUpzb247XG4gIH1cblxuICAvLyBkZXRlcm1pbmVzIHdoZXRoZXIgb3Igbm90IHRoZSBxdWVyeSBzZW5kIHRvIHRoZSBzZWFyY2ggc2VydmljZSBzaG91bGQgY29udGFpbiBvcHRpb25zXG4gIHByaXZhdGUgYXBwbHlPcHRpb25zKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLmV4cGVydE1vZGUgfHxcbiAgICAgICEhdGhpcy5zY29wZSB8fFxuICAgICAgdGhpcy5zdWdnZXN0IHx8XG4gICAgICB0aGlzLmhpZ2hsaWdodGluZyB8fFxuICAgICAgdGhpcy5yZXNvbHZlUmVmZXJlbmNlIHx8XG4gICAgICB0aGlzLndpdGhDb250ZXh0IHx8XG4gICAgICB0aGlzLnNlYXJjaE1vZGUgIT09IFNlYXJjaFF1ZXJ5LkRFRkFVTFRfU0VBUkNIX01PREUgfHxcbiAgICAgIHRoaXMuc29ydE9wdGlvbnMubGVuZ3RoID4gMFxuICAgICk7XG4gIH1cbn1cblxuLyoqXG4gKiBAaWdub3JlXG4gKiBDcmVhdGVzIHRoZSBNb2RlbCBvZiBTb3J0IE9wdGlvbnNcbiAqL1xuZXhwb3J0IGNsYXNzIFNvcnRPcHRpb24ge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgZmllbGQ6IHN0cmluZyxcbiAgICBwdWJsaWMgb3JkZXI6IHN0cmluZyxcbiAgICBwdWJsaWMgbWlzc2luZz86IHN0cmluZ1xuICApIHt9XG59XG5cbi8qKlxuICogQGlnbm9yZVxuICogQ3JlYXRlcyB0aGUgTW9kZWwgb2YgRmllbGQgRGVmaW5pdGlvbnNcbiAqL1xuZXhwb3J0IGNsYXNzIEZpZWxkRGVmaW5pdGlvbiB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBlbGVtZW50czogYW55W10gPSBbXSxcbiAgICBwdWJsaWMgc29ydG9yZGVyOiBhbnlbXSA9IFtdLFxuICAgIHB1YmxpYyBncm91cG9yZGVyOiBhbnlbXSA9IFtdLFxuICAgIHB1YmxpYyBwaW5uZWQ6IGFueVtdID0gW10sXG4gICAgcHVibGljIGFsaWdubWVudHg6IHtxbmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nfVtdID0gW10sXG4gICAgcHVibGljIG1vZGU/OiBzdHJpbmdcbiAgKSB7fVxufVxuXG4vKipcbiAqIEBpZ25vcmVcbiAqIENsYXNzIHJlcHJlc2VudGluZyB0aGUgc3RhdGUgb2YgYSBxdWVyeVxuICovXG5leHBvcnQgY2xhc3MgU2VhcmNoU3RhdGUge1xuICBwdWJsaWMgY291bnQ6IHt2YWx1ZTogbnVtYmVyLCByZWxhdGlvbj86IHN0cmluZ307XG4gIHB1YmxpYyBhZ2dyZWdhdGlvbnM7XG4gIHB1YmxpYyBsYXN0Q2hhbmdlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmFnZ3JlZ2F0aW9ucyA9IHtcbiAgICAgIHR5cGU6IG5ldyBNYXA8c3RyaW5nLCBudW1iZXI+KCksXG4gICAgICBjb250ZXh0VHlwZTogbmV3IE1hcDxzdHJpbmcsIG51bWJlcj4oKSxcbiAgICAgIGNyZWF0ZWQ6IFtdLFxuICAgICAgbW9kaWZpZWQ6IFtdLFxuICAgICAgbWltZXR5cGVncm91cDogW10sXG4gICAgICBmaWxlc2l6ZTogW11cbiAgICB9O1xuICB9XG5cbiAgZ2V0IHRvdGFsQ291bnQoKSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5hZ2dyZWdhdGlvbnMudHlwZS52YWx1ZXMoKSkucmVkdWNlKChhY2M6IG51bWJlciwgY3VyOiBudW1iZXIpID0+IGFjYyArIGN1ciwgMCkgYXMgbnVtYmVyO1xuICB9XG5cbiAgZ2V0IGlzRW1wdHkoKSB7XG4gICAgcmV0dXJuICEodGhpcy5jb3VudCAmJiB0aGlzLmNvdW50LnZhbHVlKTtcbiAgfVxuXG4gIGFkZEFnZ3JlZ2F0aW9ucyh0eXBlOiBzdHJpbmcsIGtleTogc3RyaW5nLCB2YWx1ZTogbnVtYmVyLCBhZ2c/KSB7XG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlIFwiY29udGV4dHR5cGVcIjoge1xuICAgICAgICB0aGlzLmFnZ3JlZ2F0aW9ucy5jb250ZXh0VHlwZS5zZXQoa2V5LCB2YWx1ZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBTZWFyY2hRdWVyeS5CQVNFX1BBUkFNUy5UWVBFOiB7XG4gICAgICAgIHRoaXMuYWdncmVnYXRpb25zLnR5cGUuc2V0KGtleSwgdmFsdWUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgU2VhcmNoUXVlcnkuQkFTRV9QQVJBTVMuQ1JFQVRFRDoge1xuICAgICAgICB0aGlzLmFnZ3JlZ2F0aW9ucy5jcmVhdGVkLnB1c2goe1xuICAgICAgICAgIGtleToga2V5LFxuICAgICAgICAgIHZhbHVlOiB2YWx1ZVxuICAgICAgICB9KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIFNlYXJjaFF1ZXJ5LkJBU0VfUEFSQU1TLk1PRElGSUVEOiB7XG4gICAgICAgIHRoaXMuYWdncmVnYXRpb25zLm1vZGlmaWVkLnB1c2goe1xuICAgICAgICAgIGtleToga2V5LFxuICAgICAgICAgIHZhbHVlOiB2YWx1ZVxuICAgICAgICB9KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIFNlYXJjaFF1ZXJ5LkJBU0VfUEFSQU1TLk1JTUVUWVBFR1JPVVA6IHtcbiAgICAgICAgdGhpcy5hZ2dyZWdhdGlvbnMubWltZXR5cGVncm91cC5wdXNoKHtcbiAgICAgICAgICBrZXk6IGtleSxcbiAgICAgICAgICB2YWx1ZTogdmFsdWVcbiAgICAgICAgfSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBTZWFyY2hRdWVyeS5CQVNFX1BBUkFNUy5GSUxFU0laRToge1xuICAgICAgICB0aGlzLmFnZ3JlZ2F0aW9ucy5maWxlc2l6ZS5wdXNoKHtcbiAgICAgICAgICBrZXk6IGtleSxcbiAgICAgICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICAgICAgZnJvbTogYWdnLmZyb20sXG4gICAgICAgICAgdG86IGFnZy50byB8fCBJbmZpbml0eSxcbiAgICAgICAgICBsYWJlbDoga2V5LnJlcGxhY2UoXCJndFwiLCBcIj4gXCIpLnJlcGxhY2UoXCJsdFwiLCBcIjwgXCIpXG4gICAgICAgIH0pO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBAaWdub3JlXG4gKiBDcmVhdGVzIHRoZSBNb2RlbCBvZiBTZWFyY2ggUmVzdWx0c1xuICovXG5leHBvcnQgY2xhc3MgU2VhcmNoUmVzdWx0IHtcbiAgcHVibGljIGNvdW50OiB7dmFsdWU6IG51bWJlciwgcmVsYXRpb24/OiBzdHJpbmd9O1xuICBwdWJsaWMgc3VnZ2VzdHM6IHN0cmluZ1tdO1xuICBwdWJsaWMgaGl0czogYW55W107XG4gIHB1YmxpYyB0eXBlTmFtZTogc3RyaW5nO1xuICBwdWJsaWMgZmllbGRzOiBGaWVsZERlZmluaXRpb247XG5cbiAgY29uc3RydWN0b3IoKSB7fVxufVxuXG5leHBvcnQgY2xhc3MgU2VhcmNoRmlsdGVyIHtcbiAgLyoqXG4gICAqIGF2YWlsYWJsZSBvcGVyYXRvcnMgZm9yIGEgc2VhcmNoIGZpbHRlclxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBPUEVSQVRPUiA9IHtcbiAgICAvKiogZXF1YWwgKi9cbiAgICBFUVVBTDogXCJlcVwiLFxuICAgIC8qKiBtYXRjaCAoZm9yIHN0cmluZyB3aXRoIGNsYXNzaWZpY2F0aW9uIFwicGF0aDY2NjZcIikgKi9cbiAgICBNQVRDSDogXCJtYXRjaFwiLFxuICAgIC8qKiBtYXRjaCBhdCBsZWFzdCBvbmUgb2YgdGhlIHByb3ZpZGVkIHZhbHVlcyAodmFsdWUgaGFzIHRvIGJlIGFuIGFycmF5KSAgKi9cbiAgICBJTjogXCJpblwiLFxuICAgIC8qKiBncmVhdGVyIHRoYW4gKi9cbiAgICBHUkVBVEVSX1RIQU46IFwiZ3RcIixcbiAgICAvKiogZ3JlYXRlciB0aGFuIG9yIGVxdWFsICovXG4gICAgR1JFQVRFUl9PUl9FUVVBTDogXCJndGVcIiwgLy9cbiAgICBMRVNTX1RIQU46IFwibHRcIiwgLy8gbGVzcyB0aGFuXG4gICAgTEVTU19PUl9FUVVBTDogXCJsdGVcIiwgLy8gbGVzcyB0aGFuIG9yIGVxdWFsXG4gICAgSU5URVJWQUw6IFwiZ3RsdFwiLCAvLyBpbnRlcnZhbFxuICAgIElOVEVSVkFMX0lOQ0xVREVfQk9USDogXCJndGVsdGVcIiwgLy8gaW50ZXJ2YWwgaW5jbHVkZSBsZWZ0IGFuZCByaWdodFxuICAgIElOVEVSVkFMX0lOQ0xVREVfVE86IFwiZ3RsdGVcIiwgLy8gaW50ZXJ2YWwgaW5jbHVkZSByaWdodFxuICAgIElOVEVSVkFMX0lOQ0xVREVfRlJPTTogXCJndGVsdFwiLCAvLyBpbnRlcnZhbCBpbmNsdWRlIGxlZnRcbiAgICBSQU5HRTogXCJyZ1wiIC8vIGFnZ2VnYXRpb24gcmFuZ2VzXG4gIH07XG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdG9yIGZvciBjcmVhdGluZyBhIG5ldyBTZWFyY2hGaWx0ZXIuXG4gICAqXG4gICAqIEBwYXJhbSBwcm9wZXJ0eSBUaGUgcXVhbGlmaWVkIG5hbWUgb2YgdGhlIGZpZWxkIHRoaXMgZmlsdGVyIHNob3VsZCBhcHBseSB0by5cbiAgICogQHBhcmFtIG9wZXJhdG9yIE9wZXJhdG9yIGluZGljYXRpbmcgaG93IHRvIGhhbmRsZSB0aGUgZmlsdGVycyB2YWx1ZShzKS4gU2VlIFNlYXJjaEZpbHRlci5PUEVSQVRPUiBmb3IgYXZhaWxhYmxlIG9wZXJhdG9ycy5cbiAgICogQHBhcmFtIGZpcnN0VmFsdWUgVGhlIGZpbHRlcnMgdmFsdWVcbiAgICogQHBhcmFtIHNlY29uZFZhbHVlIE9wdGlvbmFsIHNlY29uZCB2YWx1ZSBmb3IgZmlsdGVycyB0aGF0IGZvciBleGFtcGxlIGRlZmluZSByYW5nZXMgb2YgdmFsdWVzXG4gICAqIEBwYXJhbSB0cmFuc2Zvcm1EYXRlIEZsYWcgdG8gdHJhbnNmb3JtIGRhdGUgaG91cnMgYW5kIG1pbnV0ZXMgYmFzZWQgb24gb3BlcmF0b3JcbiAgICovXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBwcm9wZXJ0eTogc3RyaW5nLFxuICAgIHB1YmxpYyBvcGVyYXRvcjogc3RyaW5nLFxuICAgIHB1YmxpYyBmaXJzdFZhbHVlOiBhbnksXG4gICAgcHVibGljIHNlY29uZFZhbHVlPzogYW55LFxuICAgIHB1YmxpYyB0cmFuc2Zvcm1EYXRlPzoge3RpbWU/OiBib29sZWFuOyB0aW1lem9uZT86IGJvb2xlYW59XG4gICkge31cblxuICBmb3JtYXREYXRlKHZhbHVlOiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy50cmFuc2Zvcm1EYXRlICYmIHZhbHVlXG4gICAgICA/IHRoaXMudHJhbnNmb3JtRGF0ZS50aW1lem9uZVxuICAgICAgICA/IG5ldyBEYXRlUGlwZShcImVuXCIpLnRyYW5zZm9ybSh2YWx1ZSwgXCJ5eXl5LU1NLWRkVFpcIilcbiAgICAgICAgOiB0aGlzLnRyYW5zZm9ybURhdGUudGltZVxuICAgICAgICAgID8gbmV3IERhdGUodmFsdWUpLnRvSVNPU3RyaW5nKCkuc2xpY2UoMCwgMTYpICsgXCJaXCJcbiAgICAgICAgICA6IG5ldyBEYXRlUGlwZShcImVuXCIpLnRyYW5zZm9ybSh2YWx1ZSwgXCJ5eXl5LU1NLWRkXCIpXG4gICAgICA6IHZhbHVlO1xuICB9XG5cbiAgdG9RdWVyeSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgbzogdGhpcy5vcGVyYXRvcixcbiAgICAgIHYxOiB0aGlzLmZvcm1hdERhdGUodGhpcy5maXJzdFZhbHVlKSxcbiAgICAgIC4uLih0aGlzLnNlY29uZFZhbHVlICYmIHt2MjogdGhpcy5mb3JtYXREYXRlKHRoaXMuc2Vjb25kVmFsdWUpfSlcbiAgICB9O1xuICB9XG5cbiAgdG9EYXRlVGltZVF1ZXJ5KCkge1xuICAgIGlmICh0aGlzLnRyYW5zZm9ybURhdGUgJiYgdGhpcy50cmFuc2Zvcm1EYXRlLnRpbWV6b25lICYmIHRoaXMuZmlyc3RWYWx1ZSkge1xuICAgICAgbGV0IGZpcnN0VmFsdWUgPSB0aGlzLmZpcnN0VmFsdWU7XG4gICAgICBsZXQgc2Vjb25kVmFsdWUgPSB0aGlzLnNlY29uZFZhbHVlO1xuICAgICAgY29uc3QgZW5kRGF0ZSA9IG5ldyBEYXRlKHNlY29uZFZhbHVlIHx8IGZpcnN0VmFsdWUpO1xuICAgICAgZW5kRGF0ZS5zZXRIb3VycygyMywgNTksIDU5LCA5OTkpO1xuICAgICAgaWYgKHRoaXMub3BlcmF0b3IgPT09IFNlYXJjaEZpbHRlci5PUEVSQVRPUi5MRVNTX09SX0VRVUFMKSB7XG4gICAgICAgIGZpcnN0VmFsdWUgPSBlbmREYXRlLnRvSVNPU3RyaW5nKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBzdGFydERhdGUgPSBuZXcgRGF0ZShmaXJzdFZhbHVlKTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHRoaXMub3BlcmF0b3IgPT09IFNlYXJjaEZpbHRlci5PUEVSQVRPUi5HUkVBVEVSX1RIQU4gfHxcbiAgICAgICAgICB0aGlzLm9wZXJhdG9yID09PSBTZWFyY2hGaWx0ZXIuT1BFUkFUT1IuSU5URVJWQUxcbiAgICAgICAgKSB7XG4gICAgICAgICAgc3RhcnREYXRlLnNldEhvdXJzKDIzLCA1OSwgNTksIDk5OSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc3RhcnREYXRlLnNldEhvdXJzKDAsIDAsIDAsIDApO1xuICAgICAgICB9XG4gICAgICAgIGZpcnN0VmFsdWUgPSBzdGFydERhdGUudG9JU09TdHJpbmcoKTtcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgdGhpcy5vcGVyYXRvciA9PT0gU2VhcmNoRmlsdGVyLk9QRVJBVE9SLklOVEVSVkFMX0lOQ0xVREVfQk9USCB8fFxuICAgICAgICB0aGlzLm9wZXJhdG9yID09PSBTZWFyY2hGaWx0ZXIuT1BFUkFUT1IuRVFVQUxcbiAgICAgICkge1xuICAgICAgICBzZWNvbmRWYWx1ZSA9IGVuZERhdGUudG9JU09TdHJpbmcoKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIG86XG4gICAgICAgICAgdGhpcy5vcGVyYXRvciA9PT0gU2VhcmNoRmlsdGVyLk9QRVJBVE9SLkVRVUFMXG4gICAgICAgICAgICA/IFNlYXJjaEZpbHRlci5PUEVSQVRPUi5JTlRFUlZBTF9JTkNMVURFX0JPVEhcbiAgICAgICAgICAgIDogdGhpcy5vcGVyYXRvcixcbiAgICAgICAgdjE6IGZpcnN0VmFsdWUsXG4gICAgICAgIC4uLihzZWNvbmRWYWx1ZSAmJiB7djI6IHNlY29uZFZhbHVlfSlcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLnRvUXVlcnkoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgbWF0Y2goXG4gICAgcHJvcGVydHk6IHN0cmluZyxcbiAgICBvcGVyYXRvcjogc3RyaW5nLFxuICAgIGZpcnN0VmFsdWU6IGFueSxcbiAgICBzZWNvbmRWYWx1ZT86IGFueVxuICApIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5wcm9wZXJ0eSA9PT0gcHJvcGVydHkgJiZcbiAgICAgIHRoaXMub3BlcmF0b3IgPT09IG9wZXJhdG9yICYmXG4gICAgICB0aGlzLnNlY29uZFZhbHVlID09PSBzZWNvbmRWYWx1ZSAmJlxuICAgICAgKHRoaXMuZmlyc3RWYWx1ZSBpbnN0YW5jZW9mIEFycmF5XG4gICAgICAgID8gISF0aGlzLmZpcnN0VmFsdWUuZmluZCh2ID0+IHYgPT09IGZpcnN0VmFsdWUpXG4gICAgICAgIDogdGhpcy5maXJzdFZhbHVlID09PSBmaXJzdFZhbHVlKVxuICAgICk7XG4gIH1cbn1cbiJdfQ==
|